diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web_editor/static/src/xml/wysiwyg.xml | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web_editor/static/src/xml/wysiwyg.xml')
| -rw-r--r-- | addons/web_editor/static/src/xml/wysiwyg.xml | 579 |
1 files changed, 579 insertions, 0 deletions
diff --git a/addons/web_editor/static/src/xml/wysiwyg.xml b/addons/web_editor/static/src/xml/wysiwyg.xml new file mode 100644 index 00000000..3ca5030a --- /dev/null +++ b/addons/web_editor/static/src/xml/wysiwyg.xml @@ -0,0 +1,579 @@ +<?xml version="1.0" encoding="utf-8"?> +<templates id="template" xml:space="preserve"> + + <!--=================--> + <!-- Edition Iframe --> + <!--=================--> + + <t t-name="wysiwyg.iframeContent"><head> + <meta charset="utf-8"/> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/> + <t t-foreach="assets || []" t-as="asset"> + <t t-foreach="asset.cssLibs || []" t-as="cssLib"> + <link type="text/css" rel="stylesheet" t-att-href="cssLib"/> + </t> + <t t-foreach="asset.cssContents || []" t-as="cssContent"> + <style type="text/css" t-raw="cssContent"/> + </t> + <t t-foreach="asset.jsLibs || []" t-as="jsLib"> + <script type="text/javascript" t-att-src="jsLib"/> + </t> + <t t-foreach="asset.jsContents || []" t-as="jsContent" t-if="jsContent.indexOf('inline asset') !== -1"> + <script type="text/javascript" t-raw="jsContent"/> + </t> + </t> + <script type="text/javascript"> + odoo.define('web.session', function () { + return window.top.odoo.__DEBUG__.services['web.session']; + }); + + odoo.define('root.widget', function (require) { + 'use strict'; + var Widget = require('web.Widget'); + var widget = new Widget(); + widget.appendTo(document.body); + return widget; + }); + + odoo.define('web.core.top', function (require) { + var core = require('web.core'); + core.qweb.templates = window.top.odoo.__DEBUG__.services['web.core'].qweb.templates; + }); + </script> + </head> + <body id="iframe_target" class="o_in_iframe"> + <div id="web_editor-top-edit"></div> + <div id="wrapwrap"> + <main> + <div data-oe-model="model" data-oe-type="html" class="o_editable oe_structure"></div> + </main> + </div> + <script type="text/javascript"> + odoo.define('web_editor.wysiwyg.iniframe', function (require) { + 'use strict'; + var editor = require('web_editor.editor'); + + window._summernoteSlave = $.summernote; + window._summernoteSlave.iframe = true; + window._summernoteSlave.lang = window.top.$.summernote.lang; + if (window.top.<t t-esc="updateIframeId"/>) { + window.top.<t t-esc="updateIframeId"/>(editor.Class, <t t-esc="avoidDoubleLoad"/>); + } + }); + </script> + </body> + </t> + + <!--=================--> + <!-- Edition Dialogs --> + <!--=================--> + + <!-- Alt Dialog (allows to change alt and title of page images) --> + <form t-name="wysiwyg.widgets.alt" action="#"> + <div class="form-group row"> + <label class="col-md-3 col-form-label" for="alt" + title="'Alt tag' specifies an alternate text for an image, if the image cannot be displayed (slow connection, missing image, screen reader ...)."> + Description <small>(ALT Tag)</small> + </label> + <div class="col-md-8"> + <input class="form-control" id="alt" required="required" t-att-value="widget.alt" type="text"/> + </div> + </div> + <div class="form-group row"> + <label class="col-md-3 col-form-label" for="title" + title="'Title tag' is shown as a tooltip when you hover the picture."> + Tooltip <small>(TITLE Tag)</small> + </label> + <div class="col-md-8"> + <input class="form-control" id="title" required="required" t-att-value="widget.tag_title" type="text"/> + </div> + </div> + </form> + + <!-- Media Dialog (allows to choose an img/pictogram/video) --> + <div t-name="wysiwyg.widgets.media"> + <ul class="nav nav-tabs" role="tablist"> + <li t-if="!widget.options.noImages" class="nav-item"><a t-attf-class="nav-link #{widget.isImageActive() ? 'active' : ''}" id="editor-media-image-tab" data-toggle="tab" href="#editor-media-image" role="tab" aria-controls="editor-media-image" t-att-aria-selected="widget.isImageActive().toString()">Image</a></li> + <li t-if="!widget.options.noDocuments" class="nav-item"><a t-attf-class="nav-link #{widget.isDocumentActive() ? 'active' : ''}" id="editor-media-document-tab" data-toggle="tab" href="#editor-media-document" role="tab" aria-controls="editor-media-document" t-att-aria-selected="widget.isDocumentActive().toString()">Document</a></li> + <li t-if="!widget.options.noIcons" class="nav-item"><a t-attf-class="nav-link #{widget.isIconActive() ? 'active' : ''}" id="editor-media-icon-tab" data-toggle="tab" href="#editor-media-icon" role="tab" aria-controls="editor-media-icon" t-att-aria-selected="widget.isIconActive().toString()">Pictogram</a></li> + <li t-if="!widget.options.noVideos" class="nav-item"><a t-attf-class="nav-link #{widget.isVideoActive() ? 'active' : ''}" id="editor-media-video-tab" data-toggle="tab" href="#editor-media-video" role="tab" aria-controls="editor-media-video" t-att-aria-selected="widget.isVideoActive().toString()">Video</a></li> + </ul> + <!-- Tab panes --> + <div class="tab-content"> + <div t-if="!widget.options.noImages" t-attf-class="tab-pane fade #{widget.isImageActive() ? 'show active': ''}" id="editor-media-image" role="tabpanel" aria-labelledby="editor-media-image-tab"/> + <div t-if="!widget.options.noDocuments" t-attf-class="tab-pane fade #{widget.isDocumentActive() ? 'show active': ''}" id="editor-media-document" role="tabpanel" aria-labelledby="editor-media-document-tab"/> + <div t-if="!widget.options.noIcons" t-attf-class="tab-pane fade #{widget.isIconActive() ? 'show active': ''}" id="editor-media-icon" role="tabpanel" aria-labelledby="editor-media-icon-tab"/> + <div t-if="!widget.options.noVideos" t-attf-class="tab-pane fade #{widget.isVideoActive() ? 'show active': ''}" id="editor-media-video" role="tabpanel" aria-labelledby="editor-media-video-tab"/> + </div> + </div> + + <t t-name="wysiwyg.widgets.media.search"> + <div class="input-group ml-auto"> + <input type="text" class="form-control o_we_search" t-att-placeholder="searchPlaceholder.trim()"/> + <div class="input-group-append"> + <div class="input-group-text o_we_search_icon"> + <i class="fa fa-search" title="Search" role="img" aria-label="Search"/> + </div> + </div> + </div> + </t> + + <!-- File choosing part of the Media Dialog --> + <t t-name="wysiwyg.widgets.file"> + <form> + <t t-call="wysiwyg.widgets.files.submenu"/> + <div class="form-text o_we_error_text"/> + <div class="o_we_existing_attachments"/> + <div class="mt-4 text-center mx-auto o_we_load_more"> + <button class="btn btn-primary o_load_more d-none" type="button">Load more...</button> + <div class="mt-4 o_load_done_msg d-none"> + <span><i>All images have been loaded</i></span> + </div> + </div> + </form> + </t> + + <t t-name="wysiwyg.widgets.files.submenu"> + <div class="form-inline align-items-center py-4"> + <input type="file" class="d-none o_file_input" name="upload" t-att-accept="widget.options.accept" t-att-multiple="widget.options.multiImages && 'multiple'"/> + + <div class="btn-group"> + <button type="button" class="btn btn-primary o_upload_media_button"> + <t t-esc="uploadText"/> + </button> + </div> + + <div class="input-group align-items-center ml-2"> + <input type="text" class="form-control o_we_url_input o_we_horizontal_collapse o_we_transition_ease" name="url" t-att-placeholder="urlPlaceholder"/> + <div class="input-group-append align-items-center"> + <button type="button" class="btn btn-secondary o_upload_media_url_button"> + <t t-esc="addText"/> + </button> + <div class="ml-2"> + <span class="o_we_url_success text-success d-none fa fa-lg fa-check" title="The URL seems valid."/> + <span class="o_we_url_warning text-warning d-none fa fa-lg fa-warning" t-att-title="urlWarningTitle"/> + <span class="o_we_url_error text-danger d-none fa fa-lg fa-times" title="The URL does not seem to work."/> + </div> + </div> + </div> + <t t-raw="0"/> + <t t-call="wysiwyg.widgets.media.search"/> + </div> + </t> + + <t t-name="wysiwyg.widgets.image"> + <t t-call="wysiwyg.widgets.file"> + <t t-set="uploadText">Upload an image</t> + <t t-set="urlPlaceholder">https://www.odoo.com/logo.png</t> + <t t-set="addText">Add URL</t> + <t t-set="searchPlaceholder">Search an image</t> + <t t-set="urlWarningTitle">The URL does not contain any image. The file will be added in the document section.</t> + <div class="d-flex justify-content-end flex-grow-1 pr-3"> + <div t-attf-class="custom-control custom-switch #{__debug__ and 'd-flex' or 'd-none'} align-items-center mr-2"> + <input class="o_we_show_optimized ml-2 custom-control-input" type="checkbox" id="o_we_show_optimized_switch"/> + <label class="custom-control-label" for="o_we_show_optimized_switch"> + Show optimized images + </label> + </div> + <select class="custom-select o_we_search_select"> + <option value="all">All</option> + <option value="database">My Images</option> + <option t-if="widget.options.useMediaLibrary" value="media-library">Illustrations</option> + </select> + </div> + </t> + </t> + + <t t-name="wysiwyg.widgets.document"> + <t t-call="wysiwyg.widgets.file"> + <t t-set="uploadText">Upload a document</t> + <t t-set="urlPlaceholder">https://www.odoo.com/mydocument</t> + <t t-set="addText">Add document</t> + <t t-set="searchPlaceholder">Search a document</t> + <t t-set="urlWarningTitle">The URL contains an image. The file will be added in the image section.</t> + </t> + </t> + + <t t-name="wysiwyg.widgets.image.optimize"> + <form class="o_we_image_optimize_dialog"> + <div class="row"> + <div class="o_we_config_column col-lg-6"> + <div class="form-group"> + <label class="o_we_title_label" for="o_we_name_input"> + Name + <i class="fa fa-question-circle-o" title="Give a relevant name to your file to optimize search engine results."/> + </label> + <input type="text" class="form-control" id="o_we_name_input" name="filename" aria-describedby="nameHelp" t-att-value="widget.attachment.name" required="required"/> + </div> + + <small t-if="widget.disableResize" class="form-text text-muted o_we_no_resize"> + <span class="fa fa-info-circle"/> Resizing is not supported for images of type <t t-esc="widget.attachment.mimetype"/>. + </small> + <div t-else="1" class="form-group"> + <label class="o_we_title_label" for="o_we_name_input"> + Size + <i class="fa fa-question-circle-o" title="Reduce the size as much as possible to increase performance."/> + </label> + <div class="form-row align-items-center"> + <div class="col"> + <div class="input-group"> + <div class="input-group-prepend"> + <div class="input-group-text">Width</div> + </div> + <input type="number" class="form-control" id="o_we_width" name="width" aria-describedby="sizeHelp" min="1" t-att-max="widget.image_width" t-att-value="widget.defaultWidth"/> + <div class="input-group-append"> + <div class="input-group-text">px</div> + </div> + </div> + </div> + <div class="col-auto"> + <i class="fa fa-times"/> + </div> + <div class="col"> + <div class="input-group"> + <div class="input-group-prepend"> + <div class="input-group-text">Height</div> + </div> + <input type="number" class="form-control" id="o_we_height" name="height" aria-describedby="sizeHelp" min="1" t-att-max="widget.image_height" t-att-value="widget.defaultHeight"/> + <div class="input-group-append"> + <div class="input-group-text">px</div> + </div> + </div> + </div> + </div> + <div class="form-text small text-right"> + <i class="fa fa-info-circle text-info"/> + <span>Or choose a preset:</span> + <t t-foreach="widget.suggestedWidths" t-as="suggestedWidth"> + <span t-if="suggestedWidth_index > 0">-</span> + <a href="#" class="o_we_width_preset" t-att-data-width="suggestedWidth.width" t-esc="suggestedWidth.text"/> + </t> + </div> + </div> + + <small t-if="widget.disableQuality" class="form-text text-muted o_we_no_quality"> + <span class="fa fa-info-circle"/> Changing the quality is not supported for images of type <t t-esc="widget.attachment.mimetype"/>. + </small> + <div class="form-group" t-else="1"> + <t t-if="widget.toggleQuality"> + <div class="custom-control custom-switch"> + <input type="checkbox" class="custom-control-input" id="o_we_optimize_quality" t-att-checked="widget.isExisting ? undefined : 'checked'" aria-describedby="toggleQualityHelp"/> + <label class="custom-control-label" for="o_we_optimize_quality"> + Optimize + <i class="fa fa-question-circle-o" title="This reduces the quality to increase performance."/> + </label> + </div> + </t> + <t t-else="1"> + <label class="o_we_title_label" for="o_we_quality_input"> + Quality + <i class="fa fa-question-circle-o" title="Reduce the quality as much as possible to increase performance."/> + </label> + <div class="form-row align-items-center"> + <div class="col-sm-10"> + <input type="range" class="custom-range align-middle o_we_quality_range" id="quality_range" name="quality_range" min="1" max="100" step="1" aria-describedby="rangeQualityHelp" t-att-value="widget.defaultQuality"/> + </div> + <div class="col-sm-2"> + <input type="number" class="form-control" id="o_we_quality_input" name="quality" min="1" max="100" step="1" aria-describedby="rangeQualityHelp" t-att-value="widget.defaultQuality"/> + </div> + </div> + </t> + </div> + </div> + <div class="o_we_preview_column col-lg-6"> + <h4>Preview</h4> + <div class="mw-100 o_we_preview_area"> + <img class="img o_we_preview_image" alt="Image Preview"/> + </div> + </div> + </div> + </form> + </t> + + <t t-name="wysiwyg.widgets.image.existing.attachments"> + <div class="o_we_existing_attachments o_we_images d-flex flex-wrap w-100 justify-content-between align-items-stretch my-0"> + <t t-if="!widget.hasContent()"> + <div t-if="widget.needle" class="o_nocontent_help"> + <p class="o_empty_folder_image">No images found.</p> + <p class="o_empty_folder_subtitle">You can upload images with the button located in the top left of the screen.</p> + </div> + <div t-else="" class="o_we_search_prompt"> + <h2>Get the perfect image by searching in our library of copyright free photos and illustrations.</h2> + </div> + </t> + <t t-else=""> + <t t-if="['all', 'database'].includes(widget.searchService)" t-foreach="attachments" t-as="attachment"> + <t t-call="wysiwyg.widgets.image.existing.attachment"/> + </t> + <t t-if="['all', 'media-library'].includes(widget.searchService)" t-foreach="libraryMedia" t-as="media"> + <t t-call="wysiwyg.widgets.image.library_media"/> + </t> + <!-- 20 placeholders is just enough for a 5K screen, change this if ImageWidget.MIN_ROW_HEIGHT changes --> + <t t-foreach="20"> + <div class="o_we_attachment_placeholder"/> + </t> + </t> + </div> + </t> + + <t t-name="wysiwyg.widgets.image.existing.attachment"> + <t t-set="isOptimized" t-value="!!attachment.original_id"/> + <div t-attf-class="o_existing_attachment_cell position-relative bg-light #{isOptimized and 'o_we_attachment_optimized d-none' or ''} align-items-center justify-content-center" t-att-data-id="attachment.id"> + <t t-call="wysiwyg.widgets.file.existing.remove"/> + <div class="o_we_media_dialog_img_wrapper"> + <img class="img img-fluid o_we_attachment_highlight" t-attf-src="#{attachment.thumbnail_src or attachment.image_src}" t-att-alt="attachment.name" t-att-title="attachment.name"/> + </div> + <span t-if="isOptimized" class="badge badge-success">Optimized</span> + </div> + </t> + + <t t-name="wysiwyg.widgets.image.library_media"> + <div t-attf-class="o_existing_attachment_cell position-relative bg-light align-items-center justify-content-center o_library_media_cell" t-att-data-media-id="media.id"> + <div class="o_we_media_dialog_img_wrapper"> + <img class="img img-fluid o_we_attachment_highlight" t-attf-src="#{media.thumbnail_url}" t-att-title="media.tooltip or ''" crossorigin="anonymous"/> + <a t-if="media.author" class="o_we_media_author" t-att-href="media.author_link" target="_blank" t-esc="media.author"/> + </div> + </div> + </t> + + <t t-name="wysiwyg.widgets.document.existing.attachments"> + <div class="o_we_existing_attachments o_we_documents"> + <div t-if="!attachments.length" class="o_nocontent_help"> + <p class="o_empty_folder_image">No documents found.</p> + <p class="o_empty_folder_subtitle">You can upload documents with the button located in the top left of the screen.</p> + </div> + <div t-else="" class="row mx-auto"> + <t t-foreach="attachments" t-as="attachment"> + <div class="col-2 o_existing_attachment_cell o_we_attachment_highlight my-2" t-att-data-id="attachment.id"> + <t t-call="wysiwyg.widgets.file.existing.remove"/> + + <div t-att-data-url="attachment.url" role="img" t-att-aria-label="attachment.name" t-att-title="attachment.name" t-att-data-mimetype="attachment.mimetype" t-attf-class="o_image d-flex align-items-center justify-content-center"/> + <small class="o_file_name" t-esc="attachment.name"/> + </div> + </t> + </div> + </div> + </t> + + <t t-name="wysiwyg.widgets.file.existing.remove"> + <t t-set="removeTitle" t-if="attachment.res_model === 'ir.ui.view'">This file is a public view attachment.</t> + <t t-set="removeTitle" t-else="">This file is attached to the current record.</t> + <i class="fa fa-trash o_existing_attachment_remove p-2" t-att-title="removeTitle" role="img" t-att-aria-label="removeTitle"/> + </t> + + <t t-name="wysiwyg.widgets.image.existing.error"> + <div class="form-text"> + <p>The image could not be deleted because it is used in the + following pages or views:</p> + <ul t-as="view" t-foreach="views"> + <li> + <a t-attf-href="/web#model=ir.ui.view&id=#{view.id}"> + <t t-esc="view.name"/> + </a> + </li> + </ul> + </div> + </t> + + <!-- Icon choosing part of the Media Dialog --> + <t t-name="wysiwyg.widgets.font-icons"> + <form action="#"> + <div class="form-inline align-items-center py-4"> + <t t-call="wysiwyg.widgets.media.search"> + <t t-set="searchPlaceholder">Search a pictogram</t> + </t> + </div> + <div class="font-icons-icons"> + <t t-call="wysiwyg.widgets.font-icons.icons"> + <t t-set="iconsParser" t-value="widget.iconsParser"/> + </t> + </div> + </form> + </t> + <t t-name="wysiwyg.widgets.font-icons.icons"> + <t t-as="data" t-foreach="iconsParser"> + <span t-foreach="data.cssData" t-as="cssData" + t-att-data-id="cssData.names[0]" + t-att-title="cssData.names[0]" + t-att-aria-label="cssData.names[0]" role="img" + t-attf-class="font-icons-icon #{data.base} #{cssData.names[0]}" + t-att-data-alias="cssData.names.join(',')"/> + </t> + </t> + + <!-- Video choosing part of the Media Dialog --> + <t t-name="wysiwyg.widgets.video"> + <form action="#" class="row"> + <div class="col mt-4 o_video_dialog_form"> + <div class="form-group mb-2" id="o_video_form_group"> + <label class="col-form-label" for="o_video_text"> + Video code <small>(URL or Embed)</small> + </label> + <textarea class="form-control" id="o_video_text" placeholder="Copy-paste your URL or embed code here"/> + </div> + <div class="text-right"> + <small class="text-muted">Accepts <b><i>Youtube</i></b>, <b><i>Vimeo</i></b>, <b><i>Dailymotion</i></b> and <b><i>Youku</i></b> videos</small> + </div> + <div class="o_video_dialog_options d-none mt-4"> + <div class="o_youtube_option o_vimeo_option o_dailymotion_option"> + <label class="o_switch mb0"> + <input id="o_video_autoplay" type="checkbox"/><span/> + <span style="margin-right: 8px;">Autoplay</span> + <span class="small text-muted" style="margin-left: auto;">Videos are muted when autoplay is enabled</span> + </label> + </div> + <div class="o_youtube_option o_vimeo_option"> + <label class="o_switch mb0"><input id="o_video_loop" type="checkbox"/><span/>Loop</label> + </div> + <div class="o_youtube_option o_dailymotion_option"> + <label class="o_switch mb0"><input id="o_video_hide_controls" type="checkbox"/><span/>Hide player controls</label> + </div> + <div class="o_youtube_option"> + <label class="o_switch mb0"><input id="o_video_hide_fullscreen" type="checkbox"/><span/>Hide fullscreen button</label> + </div> + <div class="o_youtube_option"> + <label class="o_switch mb0"><input id="o_video_hide_yt_logo" type="checkbox"/><span/>Hide Youtube logo</label> + </div> + <div class="o_dailymotion_option"> + <label class="o_switch mb0"><input id="o_video_hide_dm_logo" type="checkbox"/><span/>Hide Dailymotion logo</label> + </div> + <div class="o_dailymotion_option"> + <label class="o_switch mb0"><input id="o_video_hide_dm_share" type="checkbox"/><span/>Hide sharing button</label> + </div> + </div> + </div> + <div class="col-md-6"> + <div id="video-preview" class="p-3"> + <div class="o_video_dialog_preview_text small mb-2 d-none">Preview</div> + <div class="media_iframe_video"> + <div class="media_iframe_video_size"/> + <iframe class="o_video_dialog_iframe" allowfullscreen="allowfullscreen" frameborder="0" src=""/> + </div> + </div> + </div> + </form> + </t> + + + <!-- Link Dialog (allows to choose a style and content for a link on the page) --> + <div t-name="wysiwyg.widgets.link" class="o_link_dialog"> + <div class="row"> + <form class="col-lg-8"> + <div t-attf-class="form-group row#{widget.needLabel ? '' : ' d-none'}"> + <label class="col-form-label col-md-3" for="o_link_dialog_label_input">Link Label</label> + <div class="col-md-9"> + <input type="text" name="label" class="form-control" id="o_link_dialog_label_input" required="required" t-att-value="widget.data.text"/> + </div> + </div> + <div id="o_url_input" t-attf-class="form-group row o_url_input#{widget.isButton ? ' d-none' : ''}"> + <label class="col-form-label col-md-3" for="o_link_dialog_url_input">URL or Email</label> + <div class="col-md-9"> + <input type="text" name="url" class="form-control" id="o_link_dialog_url_input" required="required"/> + <div class="form-check o_strip_domain d-none"> + <input type="checkbox" id="o_link_dialog_url_strip_domain" checked="checked" class="form-check-input"/> + <label for="o_link_dialog_url_strip_domain" class="form-check-label font-weight-normal"> + Autoconvert to relative link + </label> + </div> + </div> + </div> + <div class="form-group row"> + <label class="col-form-label col-md-3">Type</label> + <div class="col-md-9 d-flex align-items-center"> + <div t-attf-class="#{widget.colorCombinationClass ? ('p-2 ' + widget.colorCombinationClass) : ''}"> + <t t-foreach="widget.colorsData" t-as="colorData"> + <label role="button" class="m-0 mr-2"> + <input type="radio" name="link_style_color" class="d-none link-style" t-att-value="colorData.type"/> + <span t-esc="colorData.label" + t-attf-class="o_btn_preview btn btn-sm btn-#{colorData.btnPreview} #{colorData.type ? '' : 'px-0'}"/> + </label> + </t> + </div> + </div> + </div> + <div id="o_link_dialog_button_opts_collapse" class="collapse"> + <div class="form-group row"> + <label class="col-form-label col-md-3">Size</label> + <div class="col-md-9"> + <select name="link_style_size" class="form-control link-style"> + <option value="sm">Small</option> + <option value="" selected="selected">Medium</option> + <option value="lg">Large</option> + </select> + </div> + </div> + <div class="form-group row"> + <label class="col-form-label col-md-3">Style</label> + <div class="col-md-9"> + <select name="link_style_shape" class="form-control link-style"> + <option value="" selected="selected">Default</option> + <option value="rounded-circle">Default + Rounded</option> + <option value="outline">Outline</option> + <option value="outline,rounded-circle">Outline + Rounded</option> + <option value="fill">Fill</option> + <option value="fill,rounded-circle">Fill + Rounded</option> + <option value="flat">Flat</option> + </select> + </div> + </div> + </div> + <div t-if="!widget.isButton" class="form-group row"> + <div class="offset-md-3 col-md-9"> + <label class="o_switch"> + <input type="checkbox" name="is_new_window" t-att-checked="widget.data.isNewWindow ? 'checked' : undefined"/> + <span/> + Open in new window + </label> + </div> + </div> + </form> + <div class="col-lg-4 o_link_dialog_preview"> + <div class="form-group text-center"> + <label>Preview</label> + <div t-attf-class="#{widget.colorCombinationClass ? ('p-2 ' + widget.colorCombinationClass) : ''}" + style="overflow-x: auto; max-width: 100%; max-height: 200px;"> + <a href="#" id="link-preview" aria-label="Preview" title="Preview"/> + </div> + </div> + </div> + </div> + </div> + + <!-- ImageCropWidget controls (allows to crop images on the page) --> + <div t-name="wysiwyg.widgets.crop" class="o_we_crop_widget" contenteditable="false"> + <div class="o_we_cropper_wrapper"> + <img class="o_we_cropper_img"/> + <div class="o_we_crop_buttons text-center mt16 position-absolute o_we_no_overlay" contenteditable="false"> + <div class="btn-group btn-group-toggle" title="Aspect Ratio" data-toggle="buttons"> + <t t-foreach="widget.aspectRatios" t-as="ratio"> + <t t-set="is_active" t-value="ratio === widget.aspectRatio"/> + <label t-attf-class="btn #{is_active and 'active' or ''}" data-action="ratio" t-att-data-value="ratio"> + <input type="radio" /><t t-esc="ratio_value.label"/> + </label> + </t> + </div> + <div class="btn-group" role="group"> + <button type="button" title="Zoom In" data-action="zoom" data-value="0.1"><i class="fa fa-fw fa-search-plus"/></button> + <button type="button" title="Zoom Out" data-action="zoom" data-value="-0.1"><i class="fa fa-fw fa-search-minus"/></button> + </div> + <div class="btn-group" role="group"> + <button type="button" title="Rotate Left" data-action="rotate" data-value="-90"><i class="fa fa-fw fa-rotate-left"/></button> + <button type="button" title="Rotate Right" data-action="rotate" data-value="90"><i class="fa fa-fw fa-rotate-right"/></button> + </div> + <div class="btn-group" role="group"> + <button type="button" title="Flip Horizontal" data-action="flip" data-scale-direction="scaleX"><i class="fa fa-fw fa-arrows-h"/></button> + <button type="button" title="Flip Vertical" data-action="flip" data-scale-direction="scaleY"><i class="fa fa-fw fa-arrows-v"/></button> + </div> + <div class="btn-group" role="group"> + <button type="button" title="Reset Image" data-action="reset"><i class="fa fa-refresh"/> Reset Image</button> + </div> + <div class="btn-group" role="group"> + <button type="button" title="Apply" data-action="apply" class="btn btn-primary"><i class="fa fa-check"/> Apply</button> + <button type="button" title="Discard" data-action="discard" class="btn btn-danger"><i class="fa fa-times"/> Discard</button> + </div> + </div> + </div> + </div> + +</templates> |
