diff options
Diffstat (limited to 'addons/website/static/src/xml')
| -rw-r--r-- | addons/website/static/src/xml/theme_preview.xml | 38 | ||||
| -rw-r--r-- | addons/website/static/src/xml/track_page.xml | 15 | ||||
| -rw-r--r-- | addons/website/static/src/xml/translator.xml | 15 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.backend.xml | 100 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.background.video.xml | 16 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.contentMenu.xml | 59 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.cookies_bar.xml | 67 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.editor.xml | 156 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.pageProperties.xml | 177 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.res_config_settings.xml | 22 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.seo.xml | 168 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.share.xml | 13 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.xml | 101 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website_widget.xml | 17 |
14 files changed, 964 insertions, 0 deletions
diff --git a/addons/website/static/src/xml/theme_preview.xml b/addons/website/static/src/xml/theme_preview.xml new file mode 100644 index 00000000..67ce152e --- /dev/null +++ b/addons/website/static/src/xml/theme_preview.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<templates id="template" xml:space="preserve"> + <t t-name="website.ThemePreview.Buttons"> + <div> + <div class="o_form_buttons_view" role="toolbar" aria-label="Main actions"> + <button type="object" name="button_choose_theme" class="btn btn-primary o_use_theme"> + Start Now + </button> + <button class="btn btn-link o_switch_theme"> + Choose another theme + </button> + </div> + </div> + </t> + + <t t-name="website.ThemePreview.SwitchModeButton"> + <div class="btn-group btn-group-toggle ml-1" data-toggle="buttons"> + <label class="btn btn-secondary active"> + <input type="radio" name="viewer" data-mode='desktop' autocomplete="off" checked='checked'/> Desktop + </label> + <label class="btn btn-secondary"> + <input type="radio" name="viewer" data-mode='mobile' autocomplete="off"/> Mobile + </label> + </div> + </t> + <t t-name="website.ThemePreview.Loader"> + <div class="o_theme_install_loader_container position-fixed fixed-top fixed-left + h-100 w-100 d-flex flex-column align-items-center text-white font-weight-bold"> + <t t-if="showTips">Building your website...</t> + <div class="o_theme_install_loader"></div> + <p t-if="showTips" class="o_theme_install_loader_tip text-center w-25"> + TIP: Follow the + <span class="o_tooltip o_tooltip_visible top o_animated position-relative"></span> + to build the perfect page in 5 steps. + </p> + </div> + </t> +</templates> diff --git a/addons/website/static/src/xml/track_page.xml b/addons/website/static/src/xml/track_page.xml new file mode 100644 index 00000000..2d4093dc --- /dev/null +++ b/addons/website/static/src/xml/track_page.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<templates id="template" xml:space="preserve"> + + <t t-name="website.track_page"> + <div role="separator" class="dropdown-divider"/> + <a href="#" name="switch-track-page" class="dropdown-item" role="menuitem"> + <label class="o_switch" for="switch-track-page"> + <input id="switch-track-page" type="checkbox"/> + <span/> + Track Visitor + </label> + </a> + </t> + +</templates> diff --git a/addons/website/static/src/xml/translator.xml b/addons/website/static/src/xml/translator.xml new file mode 100644 index 00000000..d3067f5e --- /dev/null +++ b/addons/website/static/src/xml/translator.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<templates id="template" xml:space="preserve"> +<div t-name="website.TranslatorInfoDialog"> + <p>You are about to enter the translation mode.</p> + <p>Here are the visuals used to help you translate efficiently:</p> + <ul class="oe_translate_examples"> + <li data-oe-translation-state="to_translate">Content to translate</li> + <li data-oe-translation-state="translated">Translated content</li> + </ul> + <p> + In this mode, you can only translate texts. To change the structure of the page, you must edit the master page. + Each modification on the master page is automatically applied to all translated versions. + </p> +</div> +</templates> diff --git a/addons/website/static/src/xml/website.backend.xml b/addons/website/static/src/xml/website.backend.xml new file mode 100644 index 00000000..943a948e --- /dev/null +++ b/addons/website/static/src/xml/website.backend.xml @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + <div t-name="WidgetWebsiteButton" class="o_stat_info published"> + <span class="o_stat_text o_value"/> + <span class="o_stat_text">On Website</span> + </div> + + <t t-name="WidgetWebsiteButtonIcon"> + <button type="button" class="btn oe_stat_button"> + <i class="fa fa-fw o_button_icon fa-globe"/> + <div class="o_stat_info"> + <span class="o_stat_text">Go to<br/>Website</span> + </div> + </button> + </t> + + <t t-name="website.WebsiteDashboardMain"> + <div class="o_dashboards"> + <div class="container-fluid o_website_dashboard"> + <t t-call="website.dashboard_header"/> + <t t-call="website.dashboard_content"/> + </div> + </div> + </t> + + <t t-name="website.dashboard_header"> + <div class="row o_dashboard_common"/> + </t> + + <t t-name="website.dashboard_content"> + <div class="o_website_dashboard_content"> + <t t-call="website.google_analytics_content"/> + </div> + </t> + <t t-name="website.google_analytics_content"> + <div class="row o_dashboard_visits" t-if="widget.groups.website_designer"> + <div class="col-12 o_box"> + <h2>Visits</h2> + <div t-if="widget.dashboards_data.visits && widget.dashboards_data.visits.ga_client_id"> + <div class="row js_analytics_components"/> + <a href="#" class="js_link_analytics_settings">Edit my Analytics Client ID</a> + </div> + <div t-if="!(widget.dashboards_data.visits && widget.dashboards_data.visits.ga_client_id)" class="col-lg-12"> + <div class="o_demo_background"> + <div class="o_layer"> + </div> + <div class="o_buttons text-center"> + <h3>There is no data currently available.</h3> + <button class="btn btn-primary js_link_analytics_settings d-block mx-auto mb8">Connect Google Analytics</button> + </div> + </div> + </div> + </div> + </div> + </t> + + <div t-name="website.unauthorized_analytics" class="col-12 js_unauthorized_message mb16"> + <span t-if="reason === 'not_connected'">You need to log in to your Google Account before: </span> + <span t-if="reason === 'no_right'">You do not seem to have access to this Analytics Account.</span> + <span t-if="reason === 'not_initialized'">Google Analytics initialization failed. Maybe this domain is not whitelisted in your Google Analytics project for this client ID.</span> + </div> + + <div t-name="website.ga_dialog_content"> + Your Tracking ID: <input type="text" name="ga_analytics_key" placeholder="UA-XXXXXXXX-Y" t-att-value="ga_analytics_key" style="width: 100%"></input> + <a href="https://www.odoo.com/documentation/14.0/applications/websites/website/optimize/google_analytics.html" target="_blank"> + <i class="fa fa-arrow-right"/> + How to get my Tracking ID + </a> + <br/><br/> + Your Client ID: <input type="text" name="ga_client_id" t-att-value="ga_key" style="width: 100%"></input> + <a href="https://www.odoo.com/documentation/14.0/applications/websites/website/optimize/google_analytics_dashboard.html" target="_blank"> + <i class="fa fa-arrow-right"/> + How to get my Client ID + </a> + </div> + + <t t-name="website.DateRangeButtons"> + <!-- TODO: Hide in mobile as it is going to push in control panel and it breaks UI, maybe we will improve it in future --> + <div class="btn-group o_date_range_buttons d-none d-md-inline-flex float-right"> + <button class="btn btn-secondary js_date_range active" data-date="week">Last Week</button> + <button class="btn btn-secondary js_date_range" data-date="month">Last Month</button> + <button class="btn btn-secondary js_date_range" data-date="year">Last Year</button> + </div> + <div class="btn-group d-none d-md-inline-block float-right" style="margin-right: 20px;"> + <t t-foreach="widget.websites" t-as="website"> + <button t-attf-class="btn btn-secondary js_website #{website.selected ? 'active' : ''}" + t-att-data-website-id="website.id"> + <t t-esc="website.name"/> + </button> + </t> + </div> + </t> + + <t t-name="website.GoToButtons"> + <a role="button" href="/" class="btn btn-primary" title="Go to Website"> + Go to Website + </a> + </t> + +</templates> diff --git a/addons/website/static/src/xml/website.background.video.xml b/addons/website/static/src/xml/website.background.video.xml new file mode 100644 index 00000000..18c1f4bd --- /dev/null +++ b/addons/website/static/src/xml/website.background.video.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates xml:space="preserve"> + <t t-name="website.background.video"> + <div class="o_bg_video_container"> + <div class="o_bg_video_loading d-flex justify-content-center align-items-center text-primary"> + <div class="spinner-border" style="width: 4em; height: 4em;" role="status"> + <span class="sr-only">Loading...</span> + </div> + </div> + <iframe t-att-id="iframeID" + class="o_bg_video_iframe fade" + frameBorder="0" + t-att-src="videoSrc"/> + </div> + </t> +</templates> diff --git a/addons/website/static/src/xml/website.contentMenu.xml b/addons/website/static/src/xml/website.contentMenu.xml new file mode 100644 index 00000000..af318703 --- /dev/null +++ b/addons/website/static/src/xml/website.contentMenu.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> +<t t-name="website.contentMenu.dialog.submenu"> + <li t-att-data-menu-id="submenu.fields['id']" t-att-data-mega-menu="submenu.fields['is_mega_menu'] ? true : undefined"> + <div class="input-group"> + <div class="input-group-prepend"> + <span class="input-group-text fa fa-bars" role="img" aria-label="Dropdown menu" title="Dropdown menu"/> + </div> + <span class="form-control d-flex align-items-center"> + <span class="js_menu_label o_text_overflow flex-grow-1"> + <t t-esc="submenu.fields['name']"/> + </span> + <span t-if="submenu.fields['is_mega_menu']" class="badge badge-primary">Mega Menu</span> + <i t-if="submenu.is_homepage" class="fa fa-home ml-3" role="img" aria-label="Home" title="Home"/> + </span> + <span class="input-group-append"> + <button type="button" class="btn btn-primary js_edit_menu fa fa-pencil-square-o" aria-label="Edit Menu Item" title="Edit Menu Item"/> + <button type="button" class="btn btn-danger js_delete_menu fa fa-trash-o" aria-label="Delete Menu Item" title="Delete Menu Item"/> + </span> + </div> + <t t-set="children" t-value="submenu.children"/> + <ul t-if="children"> + <t t-foreach="children" t-as="submenu"> + <t t-call="website.contentMenu.dialog.submenu"/> + </t> + </ul> + </li> +</t> +<div t-name="website.contentMenu.dialog.select"> + <select class="form-control mb16" t-if="widget.roots"> + <t t-foreach="widget.roots" t-as="root"> + <option t-att-value="root.id"><t t-esc="root.name"/></option> + </t> + </select> +</div> +<div t-name="website.contentMenu.dialog.edit"> + <select class="form-control mb16" t-if="widget.roots"> + <t t-foreach="widget.roots" t-as="root"> + <option t-att-value="root.id"><t t-esc="root.name"/></option> + </t> + </select> + <ul class="oe_menu_editor list-unstyled"> + <t t-foreach="widget.menu.children" t-as="submenu"> + <t t-call="website.contentMenu.dialog.submenu"/> + </t> + </ul> + <div class="mt32"> + <small class="float-right text-muted"> + Drag to the right to get a submenu + </small> + <a href="#" class="js_add_menu"> + <i class="fa fa-plus-circle"/> Add Menu Item + </a><br/> + <a href="#" class="js_add_menu" data-type="mega"> + <i class="fa fa-plus-circle"/> Add Mega Menu Item + </a> + </div> +</div> +</templates> diff --git a/addons/website/static/src/xml/website.cookies_bar.xml b/addons/website/static/src/xml/website.cookies_bar.xml new file mode 100644 index 00000000..1f437869 --- /dev/null +++ b/addons/website/static/src/xml/website.cookies_bar.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + <t t-name="website.cookies_bar.text_title"> + <h3 class="o_cookies_bar_text_title"> + Respecting your privacy is our priority. + </h3> + </t> + <t t-name="website.cookies_bar.text_primary"> + <p class="o_cookies_bar_text_primary"> + We use cookies to provide you a better user experience. + </p> + </t> + <t t-name="website.cookies_bar.text_secondary"> + <p class="o_cookies_bar_text_secondary"> + We use them to store info about your habits on our website. It will helps us to provide you the very best experience and customize what you see. <br/> + By clicking on this banner, you give us permission to collect data. + </p> + </t> + <t t-name="website.cookies_bar.discrete"> + <section class="o_colored_level o_cc o_cc1"> + <div class="container"> + <div class="row"> + <div class="col-lg-8 pt16"> + <p>We use cookies to provide you a better user experience.</p> + </div> + <div class="col-lg-4 pt16 text-right"> + <a href="/cookie-policy" class="o_cookies_bar_text_policy btn btn-link btn-sm">Cookie Policy</a> + <a href="#" role="button" class="js_close_popup o_cookies_bar_text_button btn btn-primary btn-sm">I agree</a> + </div> + </div> + </div> + </section> + </t> + <t t-name="website.cookies_bar.classic"> + <section class="o_colored_level o_cc o_cc1 pt32 pb16"> + <div class="container"> + <div class="row"> + <div class="col-lg-6"> + <t t-call="website.cookies_bar.text_title"/> + <t t-call="website.cookies_bar.text_primary"/> + <t t-call="website.cookies_bar.text_secondary"/> + </div> + <div class="col-lg-3 offset-lg-3"> + <a href="#" role="button" class="js_close_popup o_cookies_bar_text_button btn btn-primary btn-block">I agree</a> + <a href="/cookie-policy" class="o_cookies_bar_text_policy btn btn-link btn-block">Cookie Policy</a> + </div> + </div> + </div> + </section> + </t> + <t t-name="website.cookies_bar.popup"> + <section class="o_colored_level o_cc o_cc1 p-5"> + <div class="container text-center"> + <div class="row"> + <div class="col-lg-12"> + <img t-attf-src="/web/image/website/#{websiteId}/logo/250x250" class="img img-fluid mb-4" alt="Website Logo"/> + <t t-call="website.cookies_bar.text_title"/> + <t t-call="website.cookies_bar.text_primary"/> + <t t-call="website.cookies_bar.text_secondary"/> + <a href="/cookie-policy" class=" o_cookies_bar_text_policy btn btn-link mr-2">Cookie Policy</a> + <a href="#" role="button" class="js_close_popup o_cookies_bar_text_button btn btn-primary">I agree</a> + </div> + </div> + </div> + </section> + </t> +</templates> diff --git a/addons/website/static/src/xml/website.editor.xml b/addons/website/static/src/xml/website.editor.xml new file mode 100644 index 00000000..3ce515bd --- /dev/null +++ b/addons/website/static/src/xml/website.editor.xml @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + <div t-name="website.homepage_editor_welcome_message" class="container text-center o_homepage_editor_welcome_message"> + <h2 class="mt0">Welcome to your <b>Homepage</b>!</h2> + <p class="lead d-none d-md-block">Click on <b>Edit</b> in the top right corner to start designing.</p> + </div> + <div t-name="website.leaving_current_page_edition"> + <p>What do you want to do?</p> + <p class="text-muted">Your current changes will be saved automatically.</p> + </div> + + <!-- Editor top bar which contains the summernote tools and save/discard buttons --> + <t t-name="website.editorbar"> + <div class="o_we_website_top_actions"> + <div class="o_we_external_history_buttons"> + <button type="button" data-action="undo" class="btn btn-secondary fa fa-undo"/> + <button type="button" data-action="redo" class="btn btn-secondary fa fa-repeat"/> + </div> + <form class="ml-auto"> + <button type="button" class="btn btn-secondary" data-action="cancel" accesskey="j">Discard</button> + <button type="button" class="btn btn-primary" data-action="save" accesskey="s">Save</button> + </form> + </div> + </t> + <!-- Custom checkbox (material-design-like toggle) --> + <t t-name="website.components.switch"> + <label class="o_switch" t-att-for="id"> + <input type="checkbox" t-att-id="id" t-att-checked="checked ? 'checked' : undefined"/> + <span/> + <div t-if="label"><t t-esc="label"/></div> + </label> + </t> + + <t t-extend="wysiwyg.widgets.link"> + <t t-jquery="#o_link_dialog_url_input" t-operation="after"> + <small class="form-text text-muted">Hint: Type '/' to search an existing page and '#' to link to an anchor.</small> + </t> + <t t-jquery="div#o_url_input" t-operation="after"> + <div class="form-group row o_link_dialog_page_anchor d-none"> + <label class="col-form-label col-md-3" for="o_link_dialog_anchor_input">Page Anchor</label> + <div class="col-md-9"> + <select name="link_anchor" class="form-control link-style"></select> + <small class="form-text font-weight-bold o_anchors_loading">Loading...</small> + </div> + </div> + </t> + </t> + <!-- Anchor Name option dialog --> + <div t-name="website.dialog.anchorName"> + <div class="form-group row"> + <label class="col-form-label col-md-3" for="anchorName">Choose an anchor name</label> + <div class="col-md-9"> + <input type="text" class="form-control o_input_anchor_name" id="anchorName" t-attf-value="#{currentAnchor}" placeholder="Anchor name"/> + <div class="invalid-feedback"> + <p class="d-none o_anchor_already_exists">The chosen name already exists</p> + </div> + </div> + </div> + </div> + + <!-- Add a Google Font option dialog --> + <div t-name="website.dialog.addGoogleFont"> + <div class="form-group row"> + <label class="col-form-label col-md-3" for="google_font_html">Google Font address</label> + <div class="col-md-9"> + <textarea id="google_font_html" class="form-control o_input_google_font" + placeholder="https://fonts.google.com/specimen/Roboto" style="height: 100px;"/> + <span class="float-right text-muted"> + Select one font on <a target="_blank" href="https://fonts.google.com">fonts.google.com</a> and copy paste the address of the font page here. + </span> + </div> + </div> + <p>Adding a font requires a reload of the page. This will save all your changes.</p> + </div> + <t t-name="website.delete_google_font_btn"> + <t t-set="delete_font_title">Delete this font</t> + <i role="button" + class="text-danger ml-2 fa fa-trash-o o_we_delete_google_font_btn" + t-att-aria-label="delete_font_title" + t-att-title="delete_font_title" + t-att-data-font-index="index"/> + </t> + <t t-name="website.add_google_font_btn"> + <we-button href="#" class="o_we_add_google_font_btn" + t-att-data-variable="variable"> + Add a Google Font + </we-button> + </t> + + <t t-name="website.color_combination_edition"> + <we-colorpicker string="Background" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-bg"/> + <we-colorpicker string="Text" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-text"/> + <we-collapse> + <we-colorpicker string="Headings" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-headings"/> + <we-colorpicker string="Headings 2" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-h2"/> + <we-colorpicker string="Headings 3" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-h3"/> + <we-colorpicker string="Headings 4" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-h4"/> + <we-colorpicker string="Headings 5" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-h5"/> + <we-colorpicker string="Headings 6" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-h6"/> + </we-collapse> + <we-colorpicker string="Links" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-link"/> + <we-row string="Primary Buttons"> + <we-colorpicker title="Background" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-btn-primary"/> + <we-colorpicker title="Border" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-btn-primary-border"/> + </we-row> + <we-row string="Secondary Buttons"> + <we-colorpicker title="Background" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-btn-secondary"/> + <we-colorpicker title="Border" data-customize-website-color="null" t-attf-data-color="o-cc#{number}-btn-secondary-border"/> + </we-row> + </t> + <div t-name="website.s_google_map_modal"> + <p>Use Google Map on your website (Contact Us page, snippets, etc).</p> + <div class="form-group row mb-0"> + <label class="col-sm-2 col-form-label" for="pin_address">API Key</label> + <div class="col"> + <div class="input-group"> + <div class="input-group-prepend"> + <div class="input-group-text"><i class="fa fa-key"/></div> + </div> + <input type="text" class="form-control" id="api_key_input" + t-att-value="apiKey or ''" + placeholder="BSgzTvR5L1GB9jriT451iTN4huVPxHmltG6T6eo"/> + </div> + <small id="api_key_help" class="text-danger"> + </small> + <div class="small form-text text-muted"> + Hint: How to use Google Map on your website (Contact Us page and as a snippet) + <br/> + <a target="_blank" href="https://console.developers.google.com/flows/enableapi?apiid=maps_backend,static_maps_backend&keyType=CLIENT_SIDE&reusekey=true"> + <i class="fa fa-arrow-right"/> + Create a Google Project and Get a Key + </a> + <br/> + <a target="_blank" href="https://cloud.google.com/maps-platform/pricing"> + <i class="fa fa-arrow-right"/> + Enable billing on your Google Project + </a> + </div> + </div> + </div> + </div> + + <!-- Theme - custom code --> + <div t-name="website.custom_code_dialog_content"> + <div class="mb-2" t-esc="contentText"/> + <div class="o_ace_editor_container"/> + </div> + + <t t-name="website.new_content_loader"> + <div class="o_new_content_loader_container position-fixed fixed-top fixed-left + h-100 w-100 d-flex flex-column align-items-center text-white font-weight-bold"> + <p id="new_content_loader_text"/> + <div class="o_new_content_loader"/> + </div> + </t> +</templates> diff --git a/addons/website/static/src/xml/website.pageProperties.xml b/addons/website/static/src/xml/website.pageProperties.xml new file mode 100644 index 00000000..5afdbb5f --- /dev/null +++ b/addons/website/static/src/xml/website.pageProperties.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + +<!-- Tooltip Dependencies --> + +<t t-name="website.get_tooltip_dependencies"> + <t t-foreach="dependencies" t-as="dep"> + <b><t t-esc="dep"/></b> + <ul> + <li t-foreach="dep_value" t-as="item"> + <a t-att-href="item_value['link']" + t-att-title="item_value['item']" + class="o_text_overflow"> + <t t-esc="item_value['item']"/> + </a> + </li> + </ul> + </t> +</t> +<t t-name="website.show_page_key_dependencies"> + <div class="col-md-9 offset-md-3"> + <span class="text-muted" id="warn_about_call_message"> + <t t-set="depTooltip"> + <t t-call="website.get_tooltip_dependencies"/> + </t> + It looks like your file is being called by + <a href="#" data-toggle="popover" t-att-data-content="depTooltip" data-html="true" title="Dependencies"><t t-esc="dep_text" /></a>. + Changing its name will break these calls. + </span> + </div> +</t> +<t t-name="website.show_page_dependencies"> + <t t-set="depTooltip"> + <t t-call="website.get_tooltip_dependencies"/> + </t> + (could be used in <a href="#" data-toggle="popover" t-att-data-content="depTooltip" data-html="true" title="Dependencies"><t t-esc="dep_text" /></a>) +</t> + +<!-- Page Properties --> + +<div t-name="website.pagesMenu.page_info" class="o_page_management_info"> + <form> + <ul class="nav nav-tabs" role="tablist"> + <li class="nav-item"><a aria-controls="basic_page_info" role="tab" data-toggle="tab" class="nav-link active" href="#basic_page_info">Name</a></li> + <li class="nav-item"><a aria-controls="advances_page_info" role="tab" data-toggle="tab" class="nav-link" href="#advances_page_info">Publish</a></li> + </ul> + <div class="tab-content mt16"> + <div role="tabpanel" id="basic_page_info" class="tab-pane fade show active"> + <div class="form-group row"> + <label class="col-form-label col-md-3" for="page_name">Page Name</label> + <div class="col-md-9"> + <input type="text" class="form-control" id="page_name" t-att-value="widget.page.name" /> + </div> + </div> + <div class="form-group warn_about_call"></div> + <div class="form-group row"> + <label class="col-form-label col-md-3" for="page_url">Page URL</label> + <div class="col-md-9"> + <div class="input-group"> + <div class="input-group-prepend"> + <span class="input-group-text" t-att-title="widget.serverUrl"><small><t t-esc="widget.serverUrlTrunc"/></small></span> + </div> + <input type="text" class="form-control" id="page_url" t-att-value="widget.page.url" /> + </div> + </div> + </div> + <div class="form-group row ask_for_redirect"> + <label class="col-form-label col-md-3" for="create_redirect">Redirect Old URL</label> + <div class="col-md-2"> + <a> + <label class="o_switch" for="create_redirect" > + <input type="checkbox" id="create_redirect"/> + <span/> + </label> + </a> + </div> + <div class="col-md-7 mt4"> + <span class="text-muted" id="dependencies_redirect"></span> + </div> + </div> + <div class="form-group row ask_for_redirect"> + <label class="col-form-label col-md-3 redirect_type" for="redirect_type">Type</label> + <div class="col-md-6 redirect_type"> + <select class="form-control" id="redirect_type"> + <option value="301">301 Moved permanently</option> + <option value="302">302 Moved temporarily</option> + </select> + </div> + </div> + </div> + <div role="tabpanel" id="advances_page_info" class="tab-pane fade"> + <div class="form-group row"> + <label class="control-label col-md-4" for="is_menu">Show in Top Menu</label> + <div class="col-sm-8"> + <label class="o_switch" for="is_menu" > + <input type="checkbox" t-att-checked="widget.page.menu_ids.length > 0 ? true : undefined" id="is_menu"/> + <span/> + </label> + </div> + </div> + <div class="form-group row"> + <label class="control-label col-md-4" for="is_homepage">Use as Homepage</label> + <div class="col-sm-8"> + <label class="o_switch" for="is_homepage" > + <input type="checkbox" t-att-checked="widget.page.is_homepage ? true : undefined" id="is_homepage"/> + <span/> + </label> + </div> + </div> + <div class="form-group row"> + <label class="control-label col-md-4" for="is_indexed"> + Indexed + <i class="fa fa-question-circle-o" title="Hide this page from search results" role="img" aria-label="Info"></i> + </label> + <div class="col-md-2"> + <label class="o_switch" for="is_indexed" > + <input type="checkbox" t-att-checked="widget.page.website_indexed ? true : undefined" id="is_indexed"/> + <span/> + </label> + </div> + </div> + <div class="form-group row"> + <label class="control-label col-md-4" for="is_published">Publish</label> + <div class="col-sm-8"> + <label class="o_switch js_publish_btn" for="is_published"> + <input type="checkbox" t-att-checked="widget.page.website_published ? true : undefined" id="is_published"/> + <span/> + </label> + </div> + </div> + <div class="form-group row"> + <label class="control-label col-md-4" for="date_publish">Publishing Date</label> + <div class="col-md-8"> + <div class="input-group date" id="date_publish_container" data-target-input="nearest"> + <input type="text" class="form-control datetimepicker-input" data-target="#date_publish_container" id="date_publish"/> + <div class="input-group-append" data-target="#date_publish_container" data-toggle="datetimepicker"> + <div class="input-group-text"><i class="fa fa-calendar"></i></div> + </div> + </div> + </div> + </div> + <div class="form-group row"> + <label class="control-label col-md-4" for="visibility">Visibility</label> + <div class="col-md-8"> + <div class="input-group"> + <select id="visibility" class="form-control col-md-4"> + <option value="" t-att-selected="widget.page.visibility == ''">Public</option> + <option value="connected" t-att-selected="widget.page.visibility == 'connected' ? 'selected' : undefined">Signed In</option> + <option value="restricted_group" t-att-selected="widget.page.visibility == 'restricted_group' ? 'selected' : undefined">Some Users</option> + <option value="password" t-att-selected="widget.page.visibility == 'password' ? 'selected' : undefined">Password</option> + </select> + <div class="ml-1 input-group-prepend show_visibility_password" > + <div class="input-group-text"><i class="fa fa-key"></i></div> + </div> + <input type="password" id="visibility_password" + t-att-value='widget.page.visibility_password' + t-att-required="widget.page.visibility == 'password' ? 'required' : None" + class="form-control show_visibility_password"/> + <t t-if="widget.page.hasSingleGroup"> + <div class="ml-1 input-group-prepend show_group_id"> + <div class="input-group-text"><i class="fa fa-group"></i></div> + </div> + <t t-set="group" t-value="widget.page.group_id"/> + <input type="text" class="form-control show_group_id" id="group_id" t-att-value="group ? group[1] : ''" t-att-data-group-id='group ? group[0] : 0' /> + </t> + <t t-else=""> + <t t-set='groups_tooltip'>More than one group has been set on the view.</t> + <a class="show_group_id btn btn-link mx-auto" href="/web#model=ir.ui.view&id=681" t-att-title='groups_tooltip'>Discard & Edit in backend</a> + </t> + </div> + </div> + </div> + </div> + </div> + </form> +</div> +</templates> diff --git a/addons/website/static/src/xml/website.res_config_settings.xml b/addons/website/static/src/xml/website.res_config_settings.xml new file mode 100644 index 00000000..6b6d4817 --- /dev/null +++ b/addons/website/static/src/xml/website.res_config_settings.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> +<t t-name="website.res_config_settings.cookies_modal_main"> + <main role="alert"> + <p> + <b>Cookie bars may significantly impair the experience</b> of + your visitors. We recommend you avoid them unless you have + verified with a legal advisor that you absolutely need cookie + consent in your country. + </p> + <p> + For session cookies, authentification and analytics*, + <b>you do not need to ask for the consent</b> (see e.g. Opinion + 04/2012 on Cookie Consent Exemption by the EU Art.29 WP). + </p> + <p> + * provided that your analytics is anonymized, which is not the + case by default with Google Analytics. + </p> + </main> +</t> +</templates> diff --git a/addons/website/static/src/xml/website.seo.xml b/addons/website/static/src/xml/website.seo.xml new file mode 100644 index 00000000..b10faaff --- /dev/null +++ b/addons/website/static/src/xml/website.seo.xml @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="utf-8"?> +<templates id="template" xml:space="preserve"> + <t t-name="Configurator.language_promote"> + <t t-foreach="language" t-as="lang"> + <option t-att-value="lang[0]" t-att-selected="lang[0] == def_lang ? 'selected' : null"><t t-esc="lang[2]" /></option> + </t> + </t> + + <div t-name="website.seo_configuration" role="form"> + <section class="js_seo_meta_title_description"/> + <section class="js_seo_meta_keywords"/> + <section class="js_seo_image"/> + </div> + + <t t-name="website.seo_suggestion_list"> + <ul class="list-inline mb0"> + <!-- filled in JS --> + </ul> + </t> + + <t t-name="website.seo_list"> + <tbody> + <!-- filled in JS --> + </tbody> + </t> + + <t t-name="website.seo_keyword"> + <tr class="js_seo_keyword" t-att-data-keyword="widget.keyword"> + <td t-esc="widget.keyword"/> + <td class="text-center"><i t-if="widget.used_h1" class="fa fa-check" t-attf-title="{{ widget.keyword }} is used in page first level heading"/></td> + <td class="text-center"><i t-if="widget.used_h2" class="fa fa-check" t-attf-title="{{ widget.keyword }} is used in page second level heading"/></td> + <td class="text-center"><i class="js_seo_keyword_title fa fa-check" style="visibility: hidden;" t-attf-title="{{ widget.keyword }} is used in page title"/></td> + <td class="text-center"><i class="js_seo_keyword_description fa fa-check" style="visibility: hidden;" t-attf-title="{{ widget.keyword }} is used in page description"/></td> + <td class="text-center"><i t-if="widget.used_content" class="fa fa-check" t-attf-title="{{ widget.keyword }} is used in page content"/></td> + <td class="o_seo_keyword_suggestion"/> + <td class="text-center"><a href="#" class="oe_remove" data-action="remove-keyword" t-attf-title="Remove {{ widget.keyword }}"><i class="fa fa-trash"/></a></td> + </tr> + </t> + + <t t-name="website.seo_suggestion"> + <li class="list-inline-item"> + <span class="o_seo_suggestion badge badge-info" t-att-data-keyword="widget.keyword" t-attf-title="Add {{ widget.keyword }}" t-esc="widget.keyword"/> + </li> + </t> + + <t t-name="website.seo_preview"> + <div class="oe_seo_preview_g"> + <div class="rc"> + <div class="r"><t t-esc="widget.title"/></div> + <div class="s"> + <div class="kv"><t t-esc="widget.url"/></div> + <div class="st"><t t-esc="widget.description"/></div> + </div> + </div> + </div> + </t> + + <div t-name="website.seo_meta_title_description"> + <div class="row"> + <div class="col-lg-6"> + <div class="form-group"> + <label for="website_meta_title"> + Title <i class="fa fa-question-circle-o" title="The title will take a default value unless you specify one."/> + </label> + <input type="text" name="website_meta_title" id="website_meta_title" class="form-control" placeholder="Keep empty to use default value" maxlength="70" size="70"/> + </div> + <div class="form-group"> + <label for="website_meta_description"> + Description <i class="fa fa-question-circle-o" t-att-title="widget.previewDescription"/> + </label> + <textarea name="website_meta_description" id="website_meta_description" placeholder="Keep empty to use default value" class="form-control"/> + <div class="alert alert-warning mt16 mb0 small" id="website_meta_description_warning" style="display: none;"/> + </div> + <div class="form-group" t-if='widget.canEditUrl'> + <label for="website_seo_name"> + Custom Url <i class="fa fa-question-circle-o" t-att-title="widget.seoNameHelp" /> + </label> + <div class="input-group"> + <div class="input-group-prepend"> + <span class="input-group-text seo_name_pre"></span> + </div> + <input type="text" name="website_seo_name" id="website_seo_name" class="form-control" t-att-placeholder="widget.seoNameDefault" /> + <div class="input-group-append" title="Unalterable unique identifier"> + <span class="input-group-text seo_name_post"></span> + </div> + </div> + </div> + </div> + <div class="col-lg-6"> + <div class="card-header">Preview</div> + <div class="card mb0 p-0"> + <div class="card-body"> + <div class="js_seo_preview"/> + </div> + </div> + </div> + </div> + </div> + + <t t-name="website.seo_meta_keywords"> + <label for="website_meta_keywords"> + Keywords + </label> + <div class="form-inline" role="form"> + <div class="input-group"> + <input type="text" name="website_meta_keywords" id="website_meta_keywords" class="form-control" placeholder="Keyword" maxlength="30"/> + <span title="The language of the keyword and related keywords." class="input-group-append"> + <select name="seo_page_language" id="language-box" class="btn form-control"/> + </span> + <span class="input-group-append"> + <button data-action="add" class="btn btn-primary btn-sm" type="button">Add</button> + </span> + </div> + </div> + <div class="table-responsive mt16"> + <table class="table table-sm"> + <thead> + <tr> + <th>Keyword</th> + <th class="text-center" title="Used in page first level heading">H1</th> + <th class="text-center" title="Used in page second level heading">H2</th> + <th class="text-center" title="Used in page title">T</th> + <th class="text-center" title="Used in page description">D</th> + <th class="text-center" title="Used in page content">C</th> + <th title="Most searched topics related to your keyword, ordered by importance">Related keywords</th> + <th class="text-center"></th> + </tr> + </thead> + <!-- body inserted in JS --> + </table> + </div> + </t> + + <div t-name="website.seo_meta_image_selector" class="o_seo_og_image"> + <t t-call="website.og_image_body"/> + </div> + + <t t-name="website.og_image_body"> + <h4><small>Select an image for social share</small></h4> + <div class="row"> + <div class="col-lg-6"> + <t t-foreach="widget.images" t-as="image"> + <div t-attf-class="o_meta_img mt4 #{new window.URL(image, window.location.origin).pathname === new window.URL(widget.activeMetaImg, window.location.origin).pathname and ' o_active_image' or ''}"> + <img t-att-src="image"/> + </div> + </t> + <div t-if="widget.customImgUrl" t-attf-class="o_meta_img mt4 #{widget.customImgUrl === widget.activeMetaImg and ' o_active_image' or ''}"> + <span class="o-custom-label w-100 text-white text-center">Custom</span> + <img t-att-src="widget.customImgUrl"/> + </div> + <div class="o_meta_img_upload mt4" title="Click to choose more images"> + <i class="fa fa-upload"/> + </div> + </div> + <div class="col-lg-6"> + <div class="card p-0 mb16"> + <div class="card-header">Social Preview</div> + <img class="card-img-top o_meta_active_img" t-att-src="widget.activeMetaImg"/> + <div class="card-body px-3 py-2"> + <h6 class="text-primary card-title mb0"><t t-esc="widget.metaTitle"/></h6> + <small class="card-subtitle text-muted"><t t-esc="widget.serverUrl"/></small> + <p t-esc="widget.metaDescription"/> + </div> + </div> + </div> + </div> + </t> +</templates> diff --git a/addons/website/static/src/xml/website.share.xml b/addons/website/static/src/xml/website.share.xml new file mode 100644 index 00000000..f07a2907 --- /dev/null +++ b/addons/website/static/src/xml/website.share.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + <t t-name="website.social_hover"> + <div class="text-nowrap css_editable_mode_hidden"> + <t t-foreach="medias" t-as="media"> + <a href="#" + t-attf-class="fa fa-3x fa-#{media}-square text-#{media} oe_social_#{media}" + t-att-title="media" + t-att-aria-label="media"/> + </t> + </div> + </t> +</templates> diff --git a/addons/website/static/src/xml/website.xml b/addons/website/static/src/xml/website.xml new file mode 100644 index 00000000..8d196b9b --- /dev/null +++ b/addons/website/static/src/xml/website.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<templates id="template" xml:space="preserve"> + <t t-name="website.prompt"> + <div role="dialog" class="modal o_technical_modal" tabindex="-1"> + <div class="modal-dialog"> + <div class="modal-content"> + <header class="modal-header" t-if="window_title"> + <h3 class="modal-title"><t t-esc="window_title"/></h3> + <button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button> + </header> + <main class="modal-body"> + <form role="form" t-att-id="id"> + <div class="form-group row mb0"> + <label for="page-name" class="col-md-3 col-form-label"> + <t t-esc="field_name"/>: + </label> + <div class="col-md-9"> + <input t-if="field_type == 'input'" type="text" class="form-control" required="required"/> + <textarea t-if="field_type == 'textarea'" class="form-control" required="required" rows="5"></textarea> + <select t-if="field_type == 'select'" class="form-control"></select> + </div> + </div> + </form> + </main> + <footer class="modal-footer"> + <button type="button" class="btn btn-primary btn-continue">Continue</button> + <button type="button" class="btn btn-secondary" data-dismiss="modal" aria-label="Cancel">Cancel</button> + </footer> + </div> + </div> + </div> + </t> + + <t t-name="website.dependencies"> + <p class="text-warning">Don't forget to update all links referring to this page.</p> + <t t-if="dependencies and _.keys(dependencies).length"> + <p class="text-warning">We found these ones:</p> + <div t-foreach="dependencies" t-as="type" class="mb16"> + <a class="collapsed fa fa-caret-right" data-toggle="collapse" t-attf-href="#collapseDependencies#{type_index}" aria-expanded="false" t-attf-aria-controls="collapseDependencies#{type_index}"> + <t t-esc="type"/>&nbsp; + <span class="text-muted"><t t-esc="type_value.length"/> found(s)</span> + </a> + <div t-attf-id="collapseDependencies#{type_index}" class="collapse" aria-expanded="false"> + <ul> + <li t-foreach="type_value" t-as="error"> + <a t-if="!_.contains(['', '#', false], error.link)" t-att-href="error.link"> + <t t-raw="error.text"/> + </a> + <t t-else=""> + <t t-raw="error.text"/> + </t> + </li> + </ul> + </div> + </div> + </t> + </t> + + <div t-name="website.delete_page"> + <p>Are you sure you want to delete this page ?</p> + <t t-call="website.dependencies"/> + </div> + + <div t-name="website.rename_page"> + <div class="card"> + <div class="card-body"> + <form> + <div class="form-group row mb0"> + <label for="new_name" class="col-form-label col-md-4">Rename Page To:</label> + <div class="col-md-8"> + <input type="text" class="form-control" id="new_name" placeholder="e.g. About Us"/> + </div> + </div> + </form> + </div> + </div> + <t t-call="website.dependencies"/> + </div> + + <div t-name="website.duplicate_page_action_dialog"> + <div class="form-group row"> + <label class="col-form-label col-md-3" for="page_name">Page Name</label> + <div class="col-md-9"> + <input type="text" class="form-control" id="page_name"/> + </div> + </div> + </div> + + <t t-name="website.oe_applications_menu"> + <t t-as="menu" t-foreach="menu_data.children"> + <a role="menuitem" class="dropdown-item" + t-att-data-action-id="menu.action ? menu.action.split(',')[1] : undefined" + t-att-data-action-model="menu.action ? menu.action.split(',')[0] : undefined" + t-att-data-menu="menu.id" + t-att-data-menu-xmlid="menu.xmlid" + t-att-href="_.str.sprintf('/web#menu_id=%s&action=%s', menu.id, menu.action ? menu.action.split(',')[1] : '')"> + <span class="oe_menu_text" t-esc="menu.name"/> + </a> + </t> + </t> +</templates> diff --git a/addons/website/static/src/xml/website_widget.xml b/addons/website/static/src/xml/website_widget.xml new file mode 100644 index 00000000..48a6d7c5 --- /dev/null +++ b/addons/website/static/src/xml/website_widget.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<templates xml:space="preserve"> + + <t t-name="website.iframeWidget"> + <iframe + t-if="url" + height="100%" + width="100%" + frameBorder="0" + t-att-src="url" + class='d-block' + ></iframe> + <div t-else="">No Url</div> + </t> + +</templates> |
