Files
odoo_source/addons/website_slides/view/website_slides_embed.xml
T

248 lines
17 KiB
XML

<?xml version="1.0" ?>
<openerp>
<data>
<!-- Bundle (minimal) for embedded slide iframe -->
<template id="website_slides.slide_embed_assets" name="Website slides embed assets">
<link rel='stylesheet' href='/web/static/lib/fontawesome/css/font-awesome.css'/>
<link rel='stylesheet' href='/web/static/lib/bootstrap/css/bootstrap.css'/>
<link type="text/less" href="/website_slides/static/src/less/website_slides.less" rel="stylesheet" t-ignore="true"/>
<script type="text/javascript" src="/web/static/lib/jquery/jquery.js"></script>
<script type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.js"></script>
<t t-call="website_slides.pdf_js_lib"></t>
<script type="text/javascript" src="/website_slides/static/src/js/slides_embed.js"></script>
</template>
<!--
Bundle for PDFJS lib
Since PDFJS is quite huge (40000 lines), please only load it when it is necessary.
For now, it is only use to display the PDF slide Viewer during an embed.
Bundlized, the size is reduced to 3000 lines.
-->
<template id="pdf_js_lib" name="PDF Js library">
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/shared/util.js"></script>
<!-- files required to handle PDF file. Found in https://github.com/mozilla/pdf.js/blob/master/examples/helloworld/index.html -->
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/api.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/metadata.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/canvas.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/webgl.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/pattern_helper.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/font_loader.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/display/annotation_helper.js"></script>
<!-- files normally dynamically loaded in worker_loader.js -->
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/network.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/chunked_stream.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/pdf_manager.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/core.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/obj.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/charsets.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/annotation.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/function.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/colorspace.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/crypto.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/pattern.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/evaluator.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/cmap.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/fonts.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/font_renderer.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/glyphlist.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/image.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/metrics.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/parser.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/ps_parser.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/stream.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/worker.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/arithmetic_decoder.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/jpg.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/jpx.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/jbig2.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/bidi.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/core/murmurhash3.js"></script>
<!--
NOTE JEM : PDFJS not-minified load its assets dynamically. Not minify, this lib is huge (4000 lines).
To load PDFJS using odoo bundle, we create a custom worker_loader, to avoid reloading all the assets (core/*.js) dynamically.
Loading all this assets in a bundle can be problematic in debug mode, since we don't wait all assets to be loaded to start using PDFJS. That's why, in debug mode, we use the native loader,
otherwise our custom loader is used.
-->
<t t-if="not debug">
<script>
// Use Odoo PDFJS Loader, to avoid dynamic assets loading
PDFJS.workerSrc = '/website_slides/static/lib/pdfjs/worker_loader_by_odoo.js';
PDFJS.disableWorker = true;
</script>
</t>
<t t-if="debug">
<script>
// Specify the main script used to create a new PDF.JS web worker.
// In production, leave this undefined or change it to point to the
// combined `pdf.worker.js` file.
PDFJS.workerSrc = '/website_slides/static/lib/pdfjs/worker_loader.js';
</script>
</t>
<!--
If no loader defined, this file will try to load pdf.worker.js (in build/).
It will crash since we don't use the minified version of PDFJS
-->
<script type="text/javascript" src="/website_slides/static/lib/pdfjs/pdf.js"></script>
<script type="text/javascript" src="/website_slides/static/lib/pdfslidesviewer/PDFSlidesViewer.js"></script>
</template>
<!--
This template is the PDF Viewer. It will mostly rendered throught an iFrame.
The js file to bind event is slides_embed.js
-->
<template id="embed_slide" name="Embedded Slide Page">
<html>
<head t-if="not private">
<title><t t-esc="slide.name"/></title>
<script type="text/javascript" src="/website_slides/static/lib/pdfslidesviewer/PDFSlidesViewer.js"></script>
<t t-call-assets="website_slides.slide_embed_assets"/>
</head>
<body t-if="private" style="position: inherit;">
<title><t t-esc="slide.name"/></title>
<div class="slide-private-view">
<h3 style="border-bottom: 1px solid !important;padding-bottom: 10px;"><i class="fa fa-exclamation-triangle"></i> This <t t-esc="slide.slide_type"/> is private.</h3>
<div t-field="slide.channel_id.access_error_msg" />
</div>
</body>
<body>
<div id="PDFViewer" t-if="not private" class="panel panel-default oe_slides_panel">
<!-- PDF Viewer Header : contains the name, and the share links -->
<div t-if="is_embedded" class="navbar-default oe_slides_share_bar">
<div class="container-fluid">
<div class="row">
<div class="col-lg-8 col-md-8 col-sm-4 col-xs-4 text-left">
<div class="oe_slides_ellipsis">
<a target="_new" t-att-href="slide.share_url">
<span t-esc="slide.name" t-attf-title="#{slide.name}"/>
</a>
</div>
</div>
<div class="col-lg-1 col-md-1 col-sm-2 col-xs-2 text-right">
<b class="oe_slide_js_embed_option_link" data-slide-option-id="#slide_share"><i class="fa fa-share-alt"></i> Share</b>
</div>
<div class="col-lg-1 col-md-1 col-sm-2 col-xs-2 text-right">
<b class="oe_slide_js_embed_option_link" data-slide-option-id="#slide_email"><i class="fa fa-envelope"></i> Email</b>
</div>
<div class="col-lg-1 col-md-1 col-sm-2 col-xs-2 text-right">
<b class="oe_slide_js_embed_option_link" data-slide-option-id="#slide_embed"><i class="fa fa-code"></i> Embed</b>
</div>
</div>
</div>
</div>
<!-- PDF Viewer Body : contains the canvas, the loader, or the image-->
<div id="PDFSlideViewer" style="position:relative;"
t-attf-data-slideid="#{slide.id}"
t-attf-data-slideurl="/slides/slide/#{slide.id}/pdf_content"
t-attf-data-downloadable="#{slide.download_security}"
t-att-data-defaultpage="page">
<t t-if="is_embedded">
<div id="slide_share" class="oe_slide_embed_option">
<t t-call="website_slides.slide_social_media"/>
</div>
<div id="slide_email" class="oe_slide_embed_option">
<t t-call="website_slides.slide_social_email"/>
</div>
<div id="slide_embed" class="oe_slide_embed_option">
<t t-call="website_slides.slide_social_embed"/>
</div>
</t>
<div id="slide_suggest" class="oe_slide_embed_option">
<t t-foreach="related_slides" t-as="suggest_slide">
<div class="col-md-4 col-sm-4 col-xs-4 oe_slides_suggestion_media">
<a t-att-href="suggest_slide.share_url" target="_new">
<div class="oe_slides_suggestion_caption">
<h4><t t-esc="suggest_slide.name"/></h4>
</div>
<span class="oe-image-thumbnail">
<img class="img-responsive" t-attf-src="/website/image/slide.slide/#{suggest_slide.id}/image_thumb" alt="suggest_slide.name"/>
</span>
</a>
</div>
</t>
</div>
<t t-if="slide.slide_type in ('presentation', 'document')">
<div id="PDFViewerLoader" class="oe_slides_loader">
<img class="img-responsive" t-attf-src="/website/image/slide.slide/#{slide.id}/image_medium" style="margin:auto;height:100%"/>
<h4 class="text-center">
<i class="fa fa-spinner fa-spin"></i> Loading ...
</h4>
</div>
<canvas id="PDFViewerCanvas" class="img-responsive" style="margin:auto;height:100%;display:none;"></canvas>
</t>
<t t-if="slide.slide_type in ('infographic')">
<img t-attf-src="/website/image/slide.slide/#{slide.id}/datas" class="img-responsive" style="width:100%"/>
</t>
</div>
<!-- Fixed bottom navbar -->
<div class="navbar navbar-default navbar-fixed-bottom" role="navigation" t-if="slide.slide_type in ('presentation', 'document')">
<div class="container-fluid oe_slides_panel_footer">
<div class="row" style="padding-top:15px;">
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2 text-left">
<input type="number" class="text-center slide-img-border" style="width: 45px;" id="page_number"></input> / <span id="page_count"></span>
</div>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 text-center"></div>
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 text-center">
<span id="first" title="First slide">
<i class="fa fa-step-backward fa-2x"></i>
</span>
</div>
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 text-center">
<span id="previous" title="Previous slide" role="button">
<i class="fa fa-arrow-circle-left fa-2x"></i>
</span>
</div>
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 text-center">
<span id="next" title="Next slide" role="button">
<i class="fa fa-arrow-circle-right fa-2x"></i>
</span>
</div>
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 text-center">
<span id="last" title="Last slide" role="button">
<i class="fa fa-step-forward fa-2x"></i>
</span>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 text-center"></div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2 text-right">
<a t-if="slide.download_security and not is_embedded" t-attf-href="/slides/slide/#{slide.id}/download" title="Download" id="download">
<i class="fa fa-download fa-2x"></i>
</a>
<span id="fullscreen" title="View fullscreen">
<i class="fa fa-arrows-alt fa-2x"></i>
</span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
</template>
<!--
Template render isntead of Embedded Slide, it this one is forbidden.
So, it will mostly be rendered throught an iFrame
-->
<template id="embed_slide_forbidden" name="Forbidden Embedded Slide">
<html>
<head t-if="not private">
<title><t t-esc="slide.name"/></title>
<t t-call-assets="website_slides.slide_embed_assets" t-js="false"/>
</head>
<body>
<title><t t-esc="slide.name"/></title>
<div class="slide-private-view">
<h3 style="border-bottom: 1px solid !important;padding-bottom: 10px;"><i class="fa fa-exclamation-triangle"></i> This <t t-esc="slide.slide_type"/> is private.</h3>
<div t-field="slide.channel_id.access_error_msg" />
</div>
</body>
</html>
</template>
</data>
</openerp>