[IMP] website: create customize theme application and color-picker; Create theme_boot...
[odoo/odoo.git] / addons / website / views / website_templates.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- vim:fdn=3:
3 -->
4 <openerp>
5     <data>
6
7 <!-- Layout and generic templates -->
8
9 <template id="website.assets_frontend" name="Website assets">
10     <t t-call="website.theme"/>
11
12     <script type="text/javascript" src="/web/static/src/js/watch.js"></script>
13
14     <script type="text/javascript" src="/website/static/src/js/website.js"></script>
15
16     <script type="text/javascript" src="/website/static/src/js/website.snippets.animation.js"></script>
17     <script type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.js"></script>
18
19 </template>
20
21 <template id="assets_backend" name="website assets for backend" inherit_id="web.assets_backend">
22     <xpath expr="." position="inside">
23         <link rel="stylesheet" href="/website/static/src/css/website.backend.css"/>
24
25         <script type="text/javascript" src="/website/static/src/js/website.backend.js"></script>
26     </xpath>
27 </template>
28
29 <template id="website.submenu" name="Submenu">
30     <li t-if="not submenu.child_id" t-att-class="
31         ((submenu.url != '/' and request.httprequest.path.startswith(submenu.url)) or
32          request.httprequest.path == submenu.url) and 'active'
33         ">
34         <a t-att-href="(website.menu_id.child_id[0] == submenu) and '/' or submenu.url" t-ignore="true" t-att-target="'blank' if submenu.new_window else None">
35             <span t-field="submenu.name"/>
36         </a>
37     </li>
38     <li t-if="submenu.child_id" t-attf-class="dropdown #{
39         ((submenu.url != '/' and [1 for submenu in submenu.child_id if request.httprequest.path.startswith(submenu.url)]) or
40          request.httprequest.path == submenu.url) and 'active'
41         }">
42         <a class="dropdown-toggle" data-toggle="dropdown" href="#">
43             <span t-field="submenu.name"/> <span class="caret" t-ignore="true"></span>
44         </a>
45         <ul class="dropdown-menu" role="menu">
46             <t t-foreach="submenu.child_id" t-as="submenu">
47                 <t t-call="website.submenu"/>
48             </t>
49         </ul>
50     </li>
51 </template>
52
53 <template id="layout" name="Main layout">&lt;!DOCTYPE html&gt;
54     <html t-att-lang="lang and lang.replace('_', '-')"
55           t-att-data-website-id="website.id if editable and website else None"
56           t-att-data-editable="'1' if editable else None"
57           t-att-data-editable-no-editor="editable_no_editor or None"
58           t-att-data-translatable="'1' if translatable else None"
59           t-att-data-view-xmlid="xmlid if editable else None"
60           t-att-data-main-object="repr(main_object) if editable else None"
61           t-att-data-oe-company-name="res_company.name">
62         <head>
63             <meta charset="utf-8" />
64             <t t-if="main_object and 'website_meta_title' in main_object">
65                 <t t-set="title" t-value="main_object.website_meta_title"/>
66             </t>
67             <t t-if="not title and main_object and 'name' in main_object">
68                 <t t-set="additional_title" t-value="main_object.name"/>
69             </t>
70             <t t-if="not title">
71                 <t t-set="title"><t t-raw="res_company.name"/><t t-if="additional_title"> - <t t-raw="additional_title"/></t></t>
72             </t>
73             <meta name="viewport" content="initial-scale=1"/>
74             <meta name="description" t-att-content="main_object and 'website_meta_description' in main_object
75                 and main_object.website_meta_description or website_meta_description"/>
76             <meta name="keywords" t-att-content="main_object and 'website_meta_keywords' in main_object
77                 and main_object.website_meta_keywords or website_meta_keywords"/>
78             <title><t t-esc="title"/></title>
79
80             <t t-set="languages" t-value="website.get_languages() if website else None"/>
81             <t t-if="request and request.website_multilang">
82                 <t t-foreach="languages" t-as="lg">
83                     <t t-set="force_lang" t-value="lg[0] if website and lg[0] != website.default_lang_code else None"/>
84                     <link rel="alternate" t-att-href="url_for(request.httprequest.path + '?' + keep_query(), lang=force_lang)" t-att-hreflang="lg[0].replace('_', '-').lower()" />
85                 </t>
86             </t>
87
88             <t t-call-assets="web.assets_common"/>
89             <t t-call-assets="website.assets_frontend"/>
90
91             <t t-raw="head or ''" name='layout_head'/>
92             <t t-if="website and website.google_analytics_key">
93                 <script>
94                     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
95                     (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
96                     m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
97                     })(window,document,'script','//www.google-analytics.com/analytics.js','_gaw');
98
99                     _gaw('create',_.str.trim('<t t-esc="website.google_analytics_key"/>'));
100                     _gaw('send','pageview');
101                 </script>
102             </t>
103         </head>
104         <body>
105             <div id="wrapwrap">
106                 <header>
107                     <div class="navbar navbar-default navbar-static-top">
108                         <div class="container">
109                             <div class="navbar-header">
110                                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-top-collapse">
111                                     <span class="sr-only">Toggle navigation</span>
112                                     <span class="icon-bar"></span>
113                                     <span class="icon-bar"></span>
114                                     <span class="icon-bar"></span>
115                                 </button>
116                                 <a class="navbar-brand" href="/" t-field="res_company.name"/>
117                             </div>
118                             <div class="collapse navbar-collapse navbar-top-collapse">
119                                 <ul class="nav navbar-nav navbar-right" id="top_menu">
120                                     <t t-foreach="website.menu_id.child_id" t-as="submenu">
121                                         <t t-call="website.submenu"/>
122                                     </t>
123                                     <li class="divider" t-ignore="true" t-if="website.user_id != user_id"/>
124                                     <li class="dropdown" t-ignore="true" t-if="website.user_id != user_id">
125                                         <a href="#" class="dropdown-toggle" data-toggle="dropdown">
126                                             <b>
127                                                 <span t-esc="(len(user_id.name)&gt;25) and (user_id.name[:23]+'...') or user_id.name"/>
128                                                 <span class="caret"></span>
129                                             </b>
130                                         </a>
131                                         <ul class="dropdown-menu js_usermenu" role="menu">
132                                             <li><a href="/web" role="menuitem">My Account</a></li>
133                                             <li class="divider"/>
134                                             <li><a t-attf-href="/web/session/logout?redirect=/" role="menuitem">Logout</a></li>
135                                         </ul>
136                                     </li>
137                                 </ul>
138                             </div>
139                         </div>
140                     </div>
141                 </header>
142                 <main>
143                     <t t-raw="0"/>
144                 </main>
145                 <footer>
146                     <div id="footer_container">
147                     </div>
148                     <div class="container mt16 mb8">
149                         <div class="pull-right" t-ignore="true" t-if="not editable">
150                             Create a <a href="http://www.odoo.com/page/website-builder">free website</a> with
151                             <a class="label label-danger" href="http://www.odoo.com/page/website-builder">Odoo</a>
152                         </div>
153                         <div class="pull-left text-muted">
154                             Copyright &amp;copy; <span t-field="res_company.name">Company name</span>
155                         </div>
156                     </div>
157                 </footer>
158             </div>
159         </body>
160     </html>
161 </template>
162
163 <template id="layout_logo_show" inherit_id="website.layout" optional="enabled" name="Show Logo">
164     <xpath expr="//header//a[@class='navbar-brand']" position="replace">
165         <a href="/" class="navbar-brand logo">
166             <img src="/logo.png"/>
167         </a>
168     </xpath>
169 </template>
170
171 <template id="editor_head" inherit_id="website.layout" name="Editor" groups="base.group_website_publisher,base.group_website_designer">
172     <xpath expr='//t[@t-call-assets="website.assets_frontend"]' position="after">
173         <t t-call-assets="website.assets_editor"/>
174     </xpath>
175 </template>
176
177 <template id="assets_editor" name="Editor assets">
178     <script type="text/javascript">
179         var CKEDITOR_BASEPATH = '/web/static/lib/ckeditor/';
180     </script>
181     <link rel='stylesheet' href='/website/static/src/css/snippets.css'/>
182     <link rel='stylesheet' href='/website/static/src/css/editor.css'/>
183     <link rel='stylesheet' href="/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.9.1.custom.css"/>
184     <link rel="stylesheet" href="/web/static/lib/select2/select2.css"/>
185     <link rel="stylesheet" href="/website/static/lib/select2-bootstrap-css/select2-bootstrap.css"/>
186
187     <script type="text/javascript" src="/web/static/lib/select2/select2.js"></script>
188     <script type="text/javascript" src="/web/static/lib/ckeditor/ckeditor.js"></script>
189     <script type="text/javascript" src="/website/static/lib/ace/ace.js"></script>
190     <script type="text/javascript" src="/website/static/lib/ace/theme-monokai.js"></script>
191     <script type="text/javascript" src="/website/static/lib/ace/mode-xml.js"></script>
192     <script type="text/javascript" src="/website/static/lib/vkbeautify/vkbeautify.0.99.00.beta.js"></script>
193     <script type="text/javascript" src="/website/static/lib/jQuery.transfo.js"></script>
194     <t t-call="web.jqueryui_conflict">
195         <script type="text/javascript" src="/web/static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js"></script>
196     </t>
197
198     <!-- mutation observers shim backed by mutation events (8 < IE < 11, Safari < 6, FF < 14, Chrome < 17) -->
199     <script type="text/javascript" src="/website/static/lib//jquery.mjs.nestedSortable/jquery.mjs.nestedSortable.js"></script>
200     <script type="text/javascript" src="/website/static/lib/MutationObservers/test/sidetable.js"></script>
201     <script type="text/javascript" src='/website/static/lib/nearest/jquery.nearest.js'></script>
202     <script type="text/javascript" src="/website/static/lib/MutationObservers/MutationObserver.js"></script>
203
204     <script type="text/javascript" src="/website/static/src/js/website.editor.js"></script>
205     <script type="text/javascript" src="/website/static/src/js/website.contentMenu.js"></script> <!-- groups="base.group_website_designer" -->
206     <script type="text/javascript" src="/website/static/src/js/website.mobile.js"></script>
207     <script type="text/javascript" src="/website/static/src/js/website.seo.js"></script>
208     <script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
209     <script type="text/javascript" src="/website/static/src/js/website.tour.banner.js"></script> <!-- groups="base.group_website_designer" -->
210     <script type="text/javascript" src="/website/static/src/js/website.snippets.editor.js"></script>
211     <script type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
212     <script type="text/javascript" src="/website/static/src/js/website.translator.js"></script>
213     <script type="text/javascript" src="/website/static/src/js/website.theme.js"></script>
214
215 </template>
216
217 <template id="login_layout" inherit_id="web.login_layout" name="Website Login Layout">
218     <xpath expr="t" position="replace">
219         <t t-call="website.layout">
220             <div class="oe_website_login_container" t-raw="0"/>
221         </t>
222     </xpath>
223 </template>
224
225 <template id="show_sign_in" optional="enabled" inherit_id="website.layout" name="Show Sign In" groups="base.group_public">
226     <xpath expr="//ul[@id='top_menu']" position="inside">
227         <li class="divider"/>
228         <li>
229             <a t-attf-href="/web/login">
230                 <b>Sign in</b>
231             </a>
232         </li>
233     </xpath>
234 </template>
235
236 <template id="footer_custom" inherit_id="website.layout" name="Footer">
237     <xpath expr="//div[@id='footer_container']" position="replace">
238         <div class="oe_structure" id="footer">
239             <section data-snippet-id='three-columns' class="mt16 mb16">
240                 <div class="container">
241                     <div class="row">
242                         <div class="col-md-4">
243                             <h4 class="mt16">Subtitle</h4>
244                             <p>
245                                 <a href="/">Homepage</a>
246                             </p>
247                         </div>
248                         <div class="col-md-4">
249                             <h4 class="mt16">Subtitle 2</h4>
250                             <p>
251                                 ...
252                             </p>
253                         </div>
254                         <div class="col-md-4">
255                             <h4 class="mt16">Subtitle 3</h4>
256                             <p>
257                                 ...
258                             </p>
259                         </div>
260                     </div>
261                 </div>
262             </section>
263         </div>
264     </xpath>
265 </template>
266
267 <template id="footer_default" inherit_id="website.footer_custom" optional="enabled" name="Automatic Footer">
268     <xpath expr="//div[@id='footer']" position="replace">
269         <div class="container hidden-print">
270             <div class="row">
271                 <div class="col-md-3">
272                     <h4>Our products &amp; Services</h4>
273                     <ul class="list-unstyled" id="products">
274                         <li><a href="/">Home</a></li>
275                     </ul>
276                 </div>
277                 <div class="col-md-3" id="info">
278                     <h4>Connect with us</h4>
279                     <ul class="list-unstyled">
280                         <li><a href="/page/website.contactus">Contact us</a></li>
281                     </ul>
282                     <ul class="list-unstyled">
283                         <li t-ignore="true"><i class="fa fa-phone"></i> <span t-field="res_company.phone"></span></li>
284                         <li t-ignore="true"><i class="fa fa-envelope"></i>  <span t-field="res_company.email"></span></li>
285                     </ul>
286                     <h2>
287                         <a t-att-href="website.social_facebook" t-if="website.social_facebook"><i class="fa fa-facebook-square"/></a>
288                         <a t-att-href="website.social_twitter" t-if="website.social_twitter"><i class="fa fa-twitter"/></a>
289                         <a t-att-href="website.social_linkedin" t-if="website.social_linkedin"><i class="fa fa-linkedin"/></a>
290                         <a t-att-href="website.social_youtube" t-if="website.social_youtube"><i class="fa fa-youtube-play"/></a>
291                         <a t-att-href="website.social_googleplus" t-if="website.social_googleplus"><i class="fa fa-google-plus-square"/></a>
292                         <a t-att-href="website.social_github" t-if="website.social_github"><i class="fa fa-github"/></a>
293                     </h2>
294                 </div>
295                 <div class="col-md-5 col-lg-offset-1">
296                     <div>
297                         <h4>
298                             <span t-field="res_company.name" />
299                             <small> - <a href="/page/website.aboutus">About us</a></small>
300                         </h4>
301                         <p>
302                             We are a team of passionate people whose goal is to improve everyone's
303                             life through disruptive products. We build great products to solve your
304                             business problems.
305                         </p>
306                         <p>
307                             Our products are designed for small to medium size companies willing to optimize
308                             their performance.
309                         </p>
310                     </div>
311                     <ul class="list-inline js_language_selector mt16" t-if="(request.website_multilang and len(languages) &gt; 1) or editable">
312                         <li t-foreach="languages" t-as="lg">
313                             <a t-att-href="url_for(request.httprequest.path + '?' + keep_query(), lang=lg[0])"
314                              t-att-data-default-lang="editable and 'true' if lg[0] == website.default_lang_code else None">
315                              <t t-esc="lg[1].split('/').pop()"/></a>
316                         </li>
317                         <li groups="base.group_website_publisher">
318                             <t t-set="url_return" t-value="url_for('', '[lang]') + '?' + keep_query()"/>
319                             <a t-attf-href="/web#action=base.action_view_base_language_install&amp;website_id=#{website.id}&amp;url_return=#{url_return}">
320                             <i class="fa fa-plus-circle"/>
321                             Add a language...
322                             </a>
323                         </li>
324                     </ul>
325                 </div>
326             </div>
327         </div>
328     </xpath>
329 </template>
330
331 <template id="publish_management">
332     <div groups="base.group_website_publisher" t-ignore="true" class="pull-right css_editable_mode_hidden" t-att-style="style or ''">
333         <div t-attf-class="btn-group js_publish_management #{object.website_published and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-controller="publish_controller">
334             <button class="btn btn-danger js_publish_btn">Not Published</button>
335             <button class="btn btn-success js_publish_btn">Published</button>
336             <button type="button" t-attf-class="btn btn-default dropdown-toggle" t-att-id="'dopprod-%s' % object.id" data-toggle="dropdown">
337                 <span class="caret"></span>
338             </button>
339             <ul class="dropdown-menu" role="menu" t-att-aria-labelledby="'dopprod-%s' % object.id">
340                 <li>
341                     <a href="#" class="js_publish_btn">
342                         <span class="css_unpublish">Unpublish</span>
343                         <span class="css_publish">Publish</span>
344                     </a>
345                 </li>
346                 <t t-raw="0"/>
347                 <li t-if="publish_edit">
348                     <a t-attf-href="/web#return_label=Website&amp;view_type=form&amp;model=#{object._name}&amp;id=#{object.id}&amp;action=#{action}"
349                     title='Edit in backend'>Edit</a>
350                 </li>
351             </ul>
352         </div>
353     </div>
354 </template>
355
356 <template id="publish_short">
357     <t groups="base.group_website_publisher" t-ignore="true">
358         <div t-attf-class="btn-group pull-right js_publish_management #{object.website_published and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-controller="publish_controller">
359             <button t-attf-class="btn btn-sm btn-#{object.website_published and 'success' or 'danger'} js_publish_btn">
360                 <span class="css_publish">Not Published</span>
361                 <span class="css_unpublish">Published</span>
362             </button>
363         </div>
364     </t>
365 </template>
366
367 <template id="pager" name="Pager">
368     <ul t-if="pager['page_count'] > 1" t-attf-class="#{ classname or '' } pagination" t-att-style="style or ''">
369         <li t-att-class=" 'disabled' if pager['page']['num'] == 1 else '' ">
370             <a t-att-href=" pager['page_previous']['url'] if pager['page']['num'] != 1 else ''">Prev</a>
371         </li>
372         <t t-foreach="pager['pages']" t-as="page">
373             <li t-att-class=" 'active' if page['num'] == pager['page']['num'] else '' "> <a t-att-href="page['url']" t-raw="page['num']"></a></li>
374         </t>
375         <li t-att-class=" 'disabled' if pager['page']['num'] == pager['page_count'] else '' ">
376             <a t-att-href="pager['page_next']['url'] if pager['page']['num'] != pager['page_count'] else ''">Next</a>
377         </li>
378     </ul>
379 </template>
380
381 <template id="kanban">
382     <t t-set="step"><t t-esc="step or 0"/></t>
383     <t t-set="scope"><t t-esc="scope or 0"/></t>
384     <t t-set="orderby"><t t-esc="orderby or 'name'"/></t>
385     <t t-raw="website.kanban(model, domain, column, template, step=step, scope=scope, orderby=orderby)"/>
386 </template>
387
388 <template id="kanban_contain">
389     <table class="table js_kanban">
390         <thead>
391             <tr>
392                 <t t-set="width" t-valuef="{{ round(100.0 / (len(objects) if objects else 1), 2) }}%"/>
393                 <t t-foreach="objects" t-as="obj">
394                     <th t-att-width="width">
395                         <div t-field="obj['column_id'].name" class="text-center"></div>
396                     </th>
397                 </t>
398             </tr>
399         </thead>
400         <tbody>
401             <tr>
402                 <t t-foreach="objects" t-as="obj">
403                     <td class="js_kanban_col" t-att-data-template="template"
404                             t-att-data-domain="obj['domain']"
405                             t-att-data-page_count="obj['page_count']"
406                             t-att-data-model="obj['model']"
407                             t-att-data-step="obj['step']"
408                             t-att-data-orderby="obj['orderby']">
409                         <t t-foreach="obj['object_ids']" t-as="object_id">
410                             <t t-call="#{ template }"></t>
411                         </t>
412                         <!-- pager -->
413                         <div t-if="1 != obj['page_end']" class="pagination pagination-centered">
414                             <ul>
415                                 <li t-attf-class="prev #{'active' if obj['page'] == 1 else '' }">
416                                     <a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, (obj['page'] &gt; 1 and obj['page']-1 or 1)) ">Prev</a></li>
417                                 <t t-foreach="range(obj['page_start'], obj['page_end']+1)" t-as="p">
418                                     <li t-att-class=" 'active' if obj['page'] == p else '' ">
419                                         <a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, p)" t-esc="p"></a></li>
420                                 </t>
421                                 <li t-attf-class="next #{'active' if obj['page'] == obj['page_end'] else '' }">
422                                     <a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, (obj['page'] &lt; obj['page_end'] and obj['page']+1 or obj['page_end']) )">Next</a></li>
423                             </ul>
424                         </div>
425                     </td>
426                 </t>
427             </tr>
428         </tbody>
429     </table>
430 </template>
431
432 <!-- Error and special pages -->
433
434 <template id="default_page">
435     <t t-call="website.layout">
436       <div id="wrap" class="oe_structure oe_empty"></div>
437     </t>
438 </template>
439
440 <template id="page_404">
441     <t t-call="website.404">
442         <div class="container">
443             <div class="well mt32">
444                 <p>This page does not exists, but you can create it as you are administrator of this site.</p>
445                 <a class="btn btn-primary" t-attf-href="/website/add/#{ path }">Create Page</a>
446             </div>
447             <div class="text-center text-muted">Edit the content below this line to adapt the default "page not found" page.</div>
448         </div>
449         <hr/>
450     </t>
451 </template>
452
453 <template id="http_error">
454     <t t-call="website.layout">
455         <div id="wrap">
456             <div class="oe_structure">
457                 <h1 class="container mt32"><t t-esc="status_code"/>: <t t-esc="status_message"/></h1>
458             </div>
459
460             <t t-if="editable or request.debug">
461                 <t t-call="website.http_error_debug"/>
462             </t>
463         </div>
464     </t>
465 </template>
466
467 <template id="http_error_debug">
468     <div class="container panel-group mb32 mt32" id="debug_infos">
469         <div class="panel panel-default" t-if="exception">
470             <div class="panel-heading">
471                 <h4 class="panel-title">
472                     <a data-toggle="collapse" data-parent="#debug_infos" href="#error_main">
473                         Error
474                     </a>
475                 </h4>
476             </div>
477             <div id="error_main" class="panel-collapse collapse in">
478                 <div class="panel-body">
479                     <p t-if="website_controller">The following error was raised in the website controller <code t-esc="website_controller"/></p>
480                     <p>
481                         <strong>Error message:</strong>
482                         <pre t-esc="exception.message"/>
483                     </p>
484                 </div>
485             </div>
486         </div>
487         <div class="panel panel-default" t-if="qweb_exception">
488             <div class="panel-heading">
489                 <h4 class="panel-title">
490                     <a data-toggle="collapse" data-parent="#adebug_infos" href="#error_qweb">
491                         QWeb
492                     </a>
493                 </h4>
494             </div>
495             <div id="error_qweb" class="panel-collapse collapse">
496                 <div class="panel-body">
497                     <p t-if="exception.qweb.get('message')">
498                         <strong>Error message:</strong>
499                         <pre t-esc="exception.qweb.get('message')"/>
500                     </p>
501                     <p>
502                         The error occured while rendering the template <code t-esc="qweb_exception.qweb.get('template')"/>
503                         <t t-if="'expression' in qweb_exception.qweb">and evaluating the following expression: <code t-esc="qweb_exception.qweb['expression']"/></t>
504                     </p>
505                     <t t-if="'node' in qweb_exception.qweb">
506                         <pre id="exception_node" t-esc="qweb_exception.pretty_xml()"/>
507                     </t>
508                 </div>
509             </div>
510         </div>
511         <div class="panel panel-default" t-if="traceback">
512             <div class="panel-heading">
513                 <h4 class="panel-title">
514                     <a data-toggle="collapse" data-parent="#adebug_infos" href="#error_traceback">
515                         Traceback
516                     </a>
517                 </h4>
518             </div>
519             <div id="error_traceback" class="panel-collapse collapse">
520                 <div class="panel-body">
521                     <pre id="exception_traceback" t-esc="traceback"/>
522                 </div>
523             </div>
524         </div>
525     </div>
526 </template>
527
528 <template id="403">
529     <t t-call="website.layout">
530         <div id="wrap">
531             <div class="container">
532                 <h1 class="mt32">403: Forbidden</h1>
533                 <p>The page you were looking for could not be authorized.</p>
534                 <p>Maybe you were looking for one of these popular pages ?</p>
535                 <ul>
536                     <li><a href="/">Homepage</a></li>
537                     <li><a href="/page/website.contactus/">Contact Us</a></li>
538                 </ul>
539             </div>
540             <t t-if="editable or request.debug">
541                 <t t-call="website.http_error_debug"/>
542             </t>
543         </div>
544     </t>
545 </template>
546
547 <template id="404">
548     <t t-call="website.layout">
549         <div id="wrap">
550             <t t-raw="0"/>
551             <div class="oe_structure oe_empty">
552                 <div class="container">
553                     <h1 class="mt32">404: Page not found!</h1>
554                     <p>
555                         The page you were looking for could not be found; it is possible you have
556                         typed the address incorrectly, but it has most probably been removed due
557                         to the recent website reorganisation.
558                     </p>
559                     <p>Maybe you were looking for one of these popular pages ?</p>
560                     <ul>
561                         <li><a href="/">Homepage</a></li>
562                         <li><a href="/page/website.contactus/">Contact Us</a></li>
563                     </ul>
564                 </div>
565             </div>
566
567             <t t-if="request.debug">
568                 <t t-call="website.http_error_debug"/>
569             </t>
570         </div>
571     </t>
572 </template>
573
574 <template id="500">
575     <!-- This template should not use any variable except those provided by website.ir_http._handle_exception -->
576     <html>
577         <head>
578             <title t-esc="status_message">Internal Server Error</title>
579             <link rel='stylesheet' href='/web/static/lib/fontawesome/css/font-awesome.css'/>
580             <link rel='stylesheet' href='/web/static/lib/bootstrap/css/bootstrap.css'/>
581             <link rel='stylesheet' href='/website/static/src/css/website.css'/>
582             <script type="text/javascript" src="/web/static/lib/jquery/jquery.js"></script>
583             <script type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.js"></script>
584             <script>
585                 $(document).ready(function() {
586                     var button = $('#reset_templates_button');
587                     button.click(function() {
588                         var dialog = $('#reset_template_confirmation').modal('show');
589                         var input = dialog.find('input[type="text"]').val('').focus();
590                         var dialog_form = dialog.find('form');
591                         dialog_form.submit(function() {
592                             if (input.val() == dialog.find('.confirm_word').text()) {
593                                 dialog.modal('hide');
594                                 button.prop('disabled', true).text('Working...');
595                                 $('#reset_templates_form').trigger('submit');
596                             } else {
597                                 input.val('').focus();
598                             }
599                             return false;
600                         });
601                         return false;
602                     });
603                 });
604             </script>
605         </head>
606         <body>
607             <div id="reset_template_confirmation" class="modal" tabindex="-1" role="dialog" aria-hidden="true" t-ignore="true">
608                 <div class="modal-dialog">
609                     <form class="form-horizontal" role="form">
610                     <div class="modal-content">
611                         <div class="modal-header">
612                             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
613                             <h3 class="modal-title">Reset templates</h3>
614                         </div>
615                         <div class="modal-body">
616                             <div class="form-group mb0">
617                                 <label for="page-name" class="col-sm-9">
618                                     <p>The selected templates will be reset to their factory settings.</p>
619                                     <p>Type '<i class="confirm_word">yes</i>' in the box below if you want to confirm.</p>
620                                 </label>
621                                 <div class="col-sm-3 mt16">
622                                     <input type="text" class="form-control" required="required" placeholder="yes"/>
623                                 </div>
624                             </div>
625                         </div>
626                         <div class="modal-footer">
627                             <input type="submit" value="Confirm" class="btn btn-primary"/>
628                             <button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
629                         </div>
630                     </div>
631                     </form>
632                 </div>
633             </div>
634
635             <div id="wrapwrap">
636                 <div class="navbar navbar-default navbar-static-top">
637                     <div class="container">
638                         <div class="collapse navbar-collapse navbar-top-collapse">
639                             <ul class="nav navbar-nav pull-right">
640                                 <li><a href="/">Home</a></li>
641                                 <li><a href="javascript: window.history.back()">Back</a></li>
642                             </ul>
643                         </div>
644                     </div>
645                 </div>
646                 <div class="mb32">
647                     <div class="oe_structure">
648                         <h1 class="container mt32"><t t-esc="status_code"/>: <t t-esc="status_message"/></h1>
649                     </div>
650
651                     <div class="container" t-if="views">
652                         <div class="alert alert-danger" t-if="qweb_exception and editable">
653                             <h4>Template fallback</h4>
654                             <p>An error occured while rendering the template <code t-esc="qweb_exception.qweb['template']"/>.</p>
655                             <p>If this error is caused by a change of yours in the templates, you have the possibility to reset one or more templates to their <strong>factory settings</strong>.</p>
656                             <form action="/website/reset_templates" method="post" id="reset_templates_form">
657                                 <ul class="oe_template_fallback">
658                                     <li t-foreach="views" t-as="view">
659                                         <label>
660                                             <input type="checkbox" name="templates" t-att-value="view.id" t-att-checked="'checked' if view_first else None"/>
661                                             <t t-esc="view.name"/>
662                                         </label>
663                                     </li>
664                                 </ul>
665                                 <input type="hidden" name="redirect" t-att-value="request.httprequest.path"/>
666                                 <button id="reset_templates_button">Reset selected templates</button>
667                             </form>
668                         </div>
669                     </div>
670
671                     <t t-if="editable or request.debug">
672                         <t t-call="website.http_error_debug"/>
673                     </t>
674                 </div>
675             </div>
676         </body>
677     </html>
678 </template>
679
680 <template id="robots">
681 User-agent: *
682 Sitemap: <t t-esc="url_root"/>sitemap.xml
683 </template>
684
685 <template id="sitemap_locs">
686     <url t-foreach="locs" t-as="page">
687         <loc><t t-esc="url_root"/><t t-esc="page['loc']"/></loc><t t-if="page.get('lastmod', False)">
688         <lastmod t-esc="page['lastmod']"/></t><t t-if="page.get('priority', False)">
689         <priority t-esc="page['priority']"/></t><t t-if="page.get('changefreq', False)">
690         <changefreq t-esc="page['changefreq']"/></t>
691     </url>
692 </template>
693
694 <template id="sitemap_xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
695 <urlset t-attf-xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
696     <t t-raw="content"/>
697 </urlset>
698 </template>
699
700 <template id="sitemap_index_xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
701 <sitemapindex t-attf-xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
702   <sitemap t-foreach="pages" t-as="page">
703     <loc><t t-esc="url_root"/>sitemap-<t t-esc="page"/>.xml</loc>
704   </sitemap>
705 </sitemapindex>
706 </template>
707
708
709 <!-- Actual pages -->
710
711 <template id="homepage" name="Homepage" page="True" priority="29">
712     <t t-call="website.layout">
713       <div id="wrap" class="oe_structure oe_empty"></div>
714     </t>
715 </template>
716
717 <template id="company_description" name="Company Description">
718     <address itemscope="itemscope" itemtype="http://schema.org/Organization">
719         <!-- TODO widget contact must add itemprop attributes -->
720         <div t-field="res_company.partner_id" t-field-options='{
721                 "widget": "contact",
722                 "fields": ["name", "address", "phone", "mobile", "fax", "email"]}'/>
723     </address>
724      <a t-att-href="res_company.google_map_link()" target="_BLANK">
725         <img class="thumbnail img-responsive" t-att-src="res_company.google_map_img()" />
726     </a>
727 </template>
728
729 <template id="contactus" name="Contact us" page="True">
730     <t t-call="website.layout">
731       <div id="wrap">
732         <div class="oe_structure"/>
733         <div class="container">
734             <h1>Contact us</h1>
735             <div class="row">
736                 <div class="col-md-8">
737                     <div class="oe_structure">
738                         <div>
739                             <p>Contact us about anything related to our company or services.</p>
740                             <p>We'll do our best to get back to you as soon as possible.</p>
741                         </div>
742                     </div>
743                     <div class="text-center mt64" name="mail_button">
744                         <a t-attf-href="mailto:{{ res_company.email }}" class="btn btn-primary">Send us an email</a>
745                     </div>
746                 </div>
747                 <div class="col-md-4 mb32">
748                     <div groups="base.group_website_publisher" t-ignore="true" class="pull-right css_editable_mode_hidden" t-att-style="style or ''">
749                         <a class="btn btm-sm btn-default" t-att-href="'/web#return_label=Website&amp;model=%s&amp;id=%s' % (res_company._name, res_company.id)">Change address</a>
750                     </div>
751                     <t t-call="website.company_description"/>
752                 </div>
753             </div>
754         </div>
755         <div class="oe_structure"/>
756       </div>
757     </t>
758 </template>
759
760 <template id="aboutus" name="About us" page="True">
761     <t t-call="website.layout">
762         <div id="wrap">
763             <div class="oe_structure">
764
765                 <section data-snippet-id="title">
766                     <div class="container">
767                         <div class="row">
768                             <div class="col-md-12">
769                                 <h1 class="text-center">About us</h1>
770                                 <h3 class="text-muted text-center">Great products for great people</h3>
771                             </div>
772                         </div>
773                     </div>
774                 </section>
775
776                 <section data-snippet-id="text-image">
777                     <div class="container">
778                         <div class="row">
779                             <div class="col-md-6 mt32">
780                                 <p>
781                                       We are a team of passionate people whose goal is to improve everyone's
782                                       life through disruptive products. We build great products to solve your
783                                       business problems.
784                                 </p>
785                                 <p>
786                                       Our products are designed for small to medium size companies willing to optimize
787                                       their performance.
788                                 </p>
789                             </div>
790                             <div class="col-md-4 col-md-offset-2 mt16 mb16">
791                                 <img src="/website/static/src/img/library/business_conference.jpg" class="img img-responsive shadow" alt="Our Team"/>
792                             </div>
793                         </div>
794                     </div>
795                 </section>
796
797             </div>
798             <div class="oe_structure"></div>
799         </div>
800     </t>
801 </template>
802
803      </data>
804 </openerp>