]> _ Git - fluidbook-html5.git/commitdiff
wait #3679 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 5 Jun 2020 12:42:06 +0000 (14:42 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 5 Jun 2020 12:42:06 +0000 (14:42 +0200)
images/interface.svg
js/libs/clipboard.min.js [new file with mode: 0644]
js/libs/fluidbook/fluidbook.links.js
js/libs/fluidbook/links/fluidbook.links.zoom.js
style/fluidbook.less

index c8bfc203a17787bacc94927abc42805e464f0c4b..d14f49a0cc181ad513a4962f6093ff8631501dde 100644 (file)
         <path d="M20.9,14.9h1.5c0.4,0,0.7-0.3,0.7-0.7s-0.3-0.7-0.7-0.7h-1.5c-1.2,0-2.2,1-2.2,2.2v5.9c0,0.4,0.3,0.7,0.7,0.7
                s0.7-0.3,0.7-0.7V19h1.7c0.4,0,0.7-0.3,0.7-0.7s-0.3-0.7-0.7-0.7h-1.7v-1.9C20.1,15.2,20.5,14.9,20.9,14.9z"/>
     </symbol>
+    <symbol id="icon-qr" viewBox="0 0 25 25">
+        <path d="M4.2,14.9h1.1c0.4,0,0.7-0.3,0.7-0.7s-0.3-0.7-0.7-0.7H5V13c0-0.4-0.3-0.7-0.7-0.7S3.5,12.7,3.5,13v1.1C3.5,14.5,3.9,14.9,4.2,14.9z"/>
+        <path d="M8.6,3.5H4.2c-0.4,0-0.7,0.3-0.7,0.7v4.4c0,0.4,0.3,0.7,0.7,0.7h4.4C9,9.4,9.4,9,9.4,8.6V4.2C9.4,3.9,9,3.5,8.6,3.5zM7.9,7.9H5V5h3V7.9z"/>
+        <path d="M20.8,3.5h-4.4c-0.4,0-0.7,0.3-0.7,0.7v4.4c0,0.4,0.3,0.7,0.7,0.7h4.4c0.4,0,0.7-0.3,0.7-0.7V4.2C21.5,3.9,21.1,3.5,20.8,3.5z M20,7.9h-3V5h3V7.9z"/>
+        <path d="M8.6,15.6H4.2c-0.4,0-0.7,0.3-0.7,0.7v4.4c0,0.4,0.3,0.7,0.7,0.7h4.4c0.4,0,0.7-0.3,0.7-0.7v-4.4C9.4,16,9,15.6,8.6,15.6zM7.9,20H5v-3h3V20z"/>
+        <path d="M12.5,5h1.7c0.4,0,0.7-0.3,0.7-0.7s-0.3-0.7-0.7-0.7h-1.7c-0.4,0-0.7,0.3-0.7,0.7S12.1,5,12.5,5z"/>
+        <path d="M10.8,7.2c0.4,0,0.7-0.3,0.7-0.7V5.2c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7v1.2C10.1,6.8,10.5,7.2,10.8,7.2z"/>
+        <path d="M10.8,9.4h3.3c0.4,0,0.7-0.3,0.7-0.7V7.4c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7v0.5h-2.6c-0.4,0-0.7,0.3-0.7,0.7S10.5,9.4,10.8,9.4z"/>
+        <path d="M8.6,10.1H4.2c-0.4,0-0.7,0.3-0.7,0.7s0.3,0.7,0.7,0.7h3.7v0.4c0,0.4,0.3,0.7,0.7,0.7s0.7-0.3,0.7-0.7v-1.1C9.4,10.5,9,10.1,8.6,10.1z"/>
+        <path d="M8.6,13.4H8.5c-0.4,0-0.7,0.3-0.7,0.7s0.3,0.7,0.7,0.7h0.1c0.4,0,0.7-0.3,0.7-0.7S9,13.4,8.6,13.4z"/>
+        <path d="M20.8,15.6h-2.2c-0.4,0-0.7,0.3-0.7,0.7s0.3,0.7,0.7,0.7H20v0.8h-1.5c-0.4,0-0.7,0.3-0.7,0.7v2.2c0,0.4,0.3,0.7,0.7,0.7h2.2c0.4,0,0.7-0.3,0.7-0.7S21.1,20,20.8,20h-1.5v-0.8h1.5c0.4,0,0.7-0.3,0.7-0.7v-2.2C21.5,16,21.1,15.6,20.8,15.6z"/>
+        <path d="M14.2,20h-2.6v-3.7c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7v4.4c0,0.4,0.3,0.7,0.7,0.7h3.3c0.4,0,0.7-0.3,0.7-0.7S14.5,20,14.2,20z"/>
+        <path d="M16.4,15.6c-0.4,0-0.7,0.3-0.7,0.7v4.4c0,0.4,0.3,0.7,0.7,0.7s0.7-0.3,0.7-0.7v-4.4C17.1,16,16.7,15.6,16.4,15.6z"/>
+        <path d="M14.2,15.6H13c-0.4,0-0.7,0.3-0.7,0.7s0.3,0.7,0.7,0.7h0.4v1.5c0,0.4,0.3,0.7,0.7,0.7s0.7-0.3,0.7-0.7v-2.2C14.9,16,14.5,15.6,14.2,15.6z"/>
+        <path d="M10.8,14.9h1.1c0.4,0,0.7-0.3,0.7-0.7s-0.3-0.7-0.7-0.7h-1.1c-0.4,0-0.7,0.3-0.7,0.7S10.5,14.9,10.8,14.9z"/>
+        <path d="M16,14.2v-2.2c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7v2.2c0,0.4,0.3,0.7,0.7,0.7S16,14.5,16,14.2z"/>
+        <path d="M10.8,11.6h1.5v0.4c0,0.4,0.3,0.7,0.7,0.7c0.4,0,0.7-0.3,0.7-0.7v-1.1c0-0.4-0.3-0.7-0.7-0.7h-2.2c-0.4,0-0.7,0.3-0.7,0.7S10.5,11.6,10.8,11.6z"/>
+        <path d="M20.8,10.1c-0.4,0-0.7,0.3-0.7,0.7v0.1c0,0.4,0.3,0.7,0.7,0.7s0.7-0.3,0.7-0.7v-0.1C21.5,10.5,21.1,10.1,20.8,10.1z"/>
+        <path d="M20.8,12.9c-0.4,0-0.7,0.3-0.7,0.7v0.6c0,0.4,0.3,0.7,0.7,0.7s0.7-0.3,0.7-0.7v-0.6C21.5,13.2,21.1,12.9,20.8,12.9z"/>
+        <path d="M18.6,14.9c0.4,0,0.7-0.3,0.7-0.7v-3.2c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7v3.2C17.8,14.5,18.2,14.9,18.6,14.9z"/>
+    </symbol>
+    <symbol id="icon-code" viewBox="0 0 25 25">
+        <path d="M8.3,6.8c-0.3-0.3-0.7-0.3-1,0L2,12c-0.1,0.1-0.2,0.3-0.2,0.5S1.9,12.9,2,13l5.3,5.2c0.1,0.1,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.7,0-1l-4.8-4.7l4.8-4.7C8.6,7.5,8.6,7.1,8.3,6.8z"/>
+        <path d="M23,12l-5.3-5.2c-0.3-0.3-0.7-0.3-1,0c-0.3,0.3-0.3,0.7,0,1l4.8,4.7l-4.8,4.7c-0.3,0.3-0.3,0.7,0,1c0.1,0.1,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.5-0.2L23,13c0.1-0.1,0.2-0.3,0.2-0.5S23.1,12.1,23,12z"/>
+        <path d="M14.6,3.2c-0.4-0.1-0.8,0.2-0.8,0.5L9.9,21c-0.1,0.4,0.2,0.8,0.5,0.8c0.1,0,0.1,0,0.2,0c0.3,0,0.6-0.2,0.7-0.6L15.1,4C15.2,3.6,15,3.3,14.6,3.2z"/>
+    </symbol>
     <symbol id="interface-next-simple" viewBox="0 0 12 22">
         <path d="M11.89,10.71L1.49,0.12c-0.15-0.15-0.4-0.15-0.55,0L0.13,0.95c-0.15,0.15-0.15,0.4,0,0.56l9.34,9.52
                l-9.35,9.54c-0.15,0.15-0.15,0.4,0,0.56l0.82,0.84c0.15,0.15,0.4,0.15,0.55,0l10.39-10.6c0.08-0.09,0.11-0.2,0.1-0.31
        c0.524-0.446,1.112-0.53,1.678-0.242c0.565,0.288,0.871,0.919,0.773,1.546l-1.094,7.029l6.313,3.243
        C29.863,18.278,30.176,18.903,30.074,19.532z"/>
     </symbol>
+
 </svg>
diff --git a/js/libs/clipboard.min.js b/js/libs/clipboard.min.js
new file mode 100644 (file)
index 0000000..28650f3
--- /dev/null
@@ -0,0 +1,7 @@
+/*!
+ * clipboard.js v2.0.6
+ * https://clipboardjs.com/
+ * 
+ * Licensed MIT © Zeno Rocha
+ */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n,t.exports.TinyEmitter=n},function(t,e,n){var d=n(3),h=n(4);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(u=t).addEventListener(s,f),{destroy:function(){u.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,l=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,l)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,l)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,l,u,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(5);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},function(t,e,n){"use strict";n.r(e);var o=n(0),r=n.n(o),i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),this.resolveOptions(t),this.initSelection()}var l=(function(t,e,n){return e&&a(t.prototype,e),n&&a(t,n),t}(c,[{key:"resolveOptions",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=r()(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=r()(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(t){var e=0<arguments.length&&void 0!==t?t:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),c),u=n(1),s=n.n(u),f=n(2),d=n.n(f),h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p=function(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),t};function y(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var m=(function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(v,s.a),p(v,[{key:"resolveOptions",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===h(e.container)?e.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=d()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return b("action",t)}},{key:"defaultTarget",value:function(t){var e=b("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return b("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(t){var e=0<arguments.length&&void 0!==t?t:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),v);function v(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,v);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this));return n.resolveOptions(e),n.listenClick(t),n}function b(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}e.default=m}],r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=6).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var n,o});
\ No newline at end of file
index f51f082f8a4c69c83f9dd9a3c86e6c10b5b4c58e..2c8e339e20f0ab634fe1e822a19404deefcc6e3d 100644 (file)
@@ -36,6 +36,11 @@ FluidbookLinks.prototype = {
 
         });
 
+        new ClipboardJS('[data-clipboard-text]');
+        $(document).on('click','[data-clipboard-text]',function(){
+            $this.fluidbook.tooltip.displayTooltip($this.fluidbook.l10n.__('copied!'));
+            return true;
+        });
 
         $(document).on('mouseenter', '#links a.image_rollover', function () {
             var id = $(this).closest('[data-id]').data('id');
index e9169228299f032f78279ba4d6a610d1b072ee0e..1ae8feff1b7bdb8f5cdbf145729af7f652193788 100644 (file)
@@ -146,30 +146,71 @@ FluidbookLinksZoom.prototype = {
             $groupWrapper.append('<div class="zoomPopupWrapper" id="zoomPopup_' + zoomID + '"></div>');
             if ($groupWrapper.find('.zoomPopupClose').length === 0) {
                 var menu = '<div id="zoomPopupMenuWrapper"><div id="zoomPopupMenu">';
-                if (zoomLink.data('shareurl') !== undefined && zoomLink.data('shareurl') !== '') {
+                var share = '';
+                if ($this.fluidbook.settings.product_share_enabled && zoomLink.data('shareurl') !== undefined && zoomLink.data('shareurl') !== '') {
                     var shareURL;
-                    if (this.fluidbook.settings.product_share_link === 'product') {
+                    if ($this.fluidbook.settings.product_share_link === 'product') {
                         shareURL = zoomLink.data('shareurl');
-                    } else if (this.fluidbook.settings.product_share_link === 'page') {
-                        shareURL = this.fluidbook.share.getFluidbookURL(true);
+                    } else if ($this.fluidbook.settings.product_share_link === 'page') {
+                        shareURL = $this.fluidbook.share.getFluidbookURL(true);
                     }
-                    menu += '<a href="#" class="button nolabel" data-tooltip="' + this.fluidbook.l10n.__('share') + '" data-action="share" data-extra="' + shareURL + '" data-context="product">' + getSpriteIcon('nav-share') + '</a>';
+                    share = '<a href="#" class="button nolabel" data-tooltip="' + this.fluidbook.l10n.__('share') + '" data-action="share" data-extra="' + shareURL + '" data-context="product">' + getSpriteIcon('nav-share') + '</a>';
                 }
-                if (zoomLink.data('extra-1') !== undefined) {
-                    var label = this.fluidbook.settings.product_zoom_label_2;
-                    var icon = getSpriteIcon(this.fluidbook.settings.product_zoom_icon_2) !== 'none' ? getSpriteIcon(this.fluidbook.settings.product_zoom_icon_2) : '';
-                    var linkClass = "";
-                    if (label !== '') {
-                        label = '<span>' + label + '</span>';
-                    } else {
-                        linkClass = " nolabel";
+
+                var from, to, increment;
+                if ($this.fluidbook.settings.product_zoom_buttons_order === 'right') {
+                    from = 10;
+                    to = 0;
+                    increment = -1;
+                    menu += share;
+                } else {
+                    from = 0;
+                    to = 10;
+                    increment = 1;
+                }
+
+                for (var i = from; increment === 1 ? i <= to : i >= to; i += increment) {
+                    var data = zoomLink.data('d-' + i);
+                    console.log(i, data);
+                    if (data !== undefined) {
+                        var j = i + 1;
+                        var label = $this.fluidbook.settings['product_zoom_label_' + j];
+                        var icon = getSpriteIcon($this.fluidbook.settings['product_zoom_icon_' + j]) !== 'none' ? getSpriteIcon($this.fluidbook.settings['product_zoom_icon_' + j]) : '';
+                        var linkClass = "";
+                        if (label !== '') {
+                            label = '<span>' + label + '</span>';
+                        } else {
+                            linkClass = " nolabel";
+                        }
+
+                        var action = $this.fluidbook.settings['product_zoom_action_' + j];
+                        if (!action) {
+                            action = 'link';
+                        }
+
+                        if (!data) {
+                            continue;
+                        }
+
+                        menu += '<a ';
+                        if (action === 'video' && data.indexOf('http') === 0) {
+                            action = 'link';
+                        }
+
+                        if (action === 'link') {
+                            menu += 'href="' + data + '"  target="_blank"';
+                        } else if (action === 'copy') {
+                            menu += 'data-clipboard-text="' + encodeURIComponent(data) + '" ';
+                        } else if (action === 'video') {
+                            var e = data.split(':', 2);
+                            menu += ' href="#/webvideo/' + e[0] + '/' + e[1] + '" ';
+                        }
+                        menu += 'data-tooltip="' + $this.fluidbook.settings['product_zoom_tooltip_' + j] + '" class="button ' + linkClass + '">' + icon + label + '</a>';
                     }
-                    menu += '<a href="' + zoomLink.data('extra-1') + '"  data-tooltip="' + this.fluidbook.settings.product_zoom_tooltip_2 + '" target="_blank" class="button ' + linkClass + '">' + icon + label + '</a>';
                 }
-                if (zoomLink.data('producturl') !== undefined && zoomLink.data('producturl') !== '') {
-                    var label = this.fluidbook.settings.product_zoom_label_1 !== '' ? this.fluidbook.settings.product_zoom_label_1 : this.fluidbook.l10n.__('see on the website');
-                    var icon = getSpriteIcon(this.fluidbook.settings.product_zoom_icon_1) !== 'none' ? getSpriteIcon(this.fluidbook.settings.product_zoom_icon_1) : '';
-                    menu += '<a href="' + zoomLink.data('producturl') + '"  data-tooltip="' + this.fluidbook.settings.product_zoom_tooltip_1 + '" target="_blank" class="button">' + icon + '<span>' + label + '</span></a>';
+
+                if ($this.fluidbook.settings.product_zoom_buttons_order === 'left') {
+                    menu += share;
                 }
                 menu += '</div></div>';
                 $groupWrapper.append('<div id="zoomPopupBackground"><div class="bg"></div>' + menu + '</div>');
@@ -277,7 +318,7 @@ FluidbookLinksZoom.prototype = {
             });
 
             // Load image before running zoom up animation
-            this.fluidbook.displayLoader();
+            $this.fluidbook.displayLoader();
             loadImage(zoomImage, function (img) {
 
                 // Image is set as a background for better scaling / fitting via CSS
index 6d492b81e0adbecab0dbef06c0c9d0fdd1e76570..e17748e8abfd3f01cef4491cea6add7d3d40b2ec 100644 (file)
@@ -92,6 +92,10 @@ img {
   user-select: none;
 }
 
+[data-clipboard-text] {
+  cursor: pointer;
+}
+
 b, strong, h1, h2, h3, h4, h5, h6 {
   font-weight: 600;
 }