feat(Viewer+Modeler): add powered by lightbox
Instead of directly redirecting to the project website the project logo will now open a lightbox, stating the powered by and allowing the user visit the project site as part of an informed decision. Closes #445
This commit is contained in:
parent
22686f7614
commit
a1479669d4
|
@ -1,3 +1,9 @@
|
||||||
|
/**
|
||||||
|
* The code in the <project-logo></project-logo> area
|
||||||
|
* must not be changed.
|
||||||
|
*
|
||||||
|
* @see http://bpmn.io/license for more information.
|
||||||
|
*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var assign = require('lodash/object/assign'),
|
var assign = require('lodash/object/assign'),
|
||||||
|
@ -128,34 +134,16 @@ function Viewer(options) {
|
||||||
position: options.position
|
position: options.position
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/* <project-logo> */
|
||||||
* The code in the <project-logo></project-logo> area
|
|
||||||
* must not be changed, see http://bpmn.io/license for more information
|
|
||||||
*
|
|
||||||
* <project-logo>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* jshint -W101 */
|
addProjectLogo(container);
|
||||||
|
|
||||||
// inlined ../resources/bpmnjs.png
|
|
||||||
var logoData = 'iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAMAAADypuvZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFiMte9PrwldFwfcZPqtqN0+zEyOe1XLgjvuKncsJAZ70y6fXh3vDT////UrQV////G2zN+AAAABB0Uk5T////////////////////AOAjXRkAAAHDSURBVHjavJZJkoUgDEBJmAX8979tM8u3E6x20VlYJfFFMoL4vBDxATxZcakIOJTWSmxvKWVIkJ8jHvlRv1F2LFrVISCZI+tCtQx+XfewgVTfyY3plPiQEAzI3zWy+kR6NBhFBYeBuscJLOUuA2WVLpCjVIaFzrNQZArxAZKUQm6gsj37L9Cb7dnIBUKxENaaMJQqMpDXvSL+ktxdGRm2IsKgJGGPg7atwUG5CcFUEuSv+CwQqizTrvDTNXdMU2bMiDWZd8d7QIySWVRsb2vBBioxOFt4OinPBapL+neAb5KL5IJ8szOza2/DYoipUCx+CjO0Bpsv0V6mktNZ+k8rlABlWG0FrOpKYVo8DT3dBeLEjUBAj7moDogVii7nSS9QzZnFcOVBp1g2PyBQ3Vr5aIapN91VJy33HTJLC1iX2FY6F8gRdaAeIEfVONgtFCzZTmoLEdOjBDfsIOA6128gw3eu1shAajdZNAORxuQDJN5A5PbEG6gNIu24QJD5iNyRMZIr6bsHbCtCU/OaOaSvgkUyDMdDa1BXGf5HJ1To+/Ym6mCKT02Y+/Sa126ZKyd3jxhzpc1r8zVL6YM1Qy/kR4ABAFJ6iQUnivhAAAAAAElFTkSuQmCC';
|
|
||||||
|
|
||||||
/* jshint +W101 */
|
|
||||||
|
|
||||||
var linkMarkup =
|
|
||||||
'<a href="http://bpmn.io" ' +
|
|
||||||
'target="_blank" ' +
|
|
||||||
'class="bjs-powered-by" ' +
|
|
||||||
'title="Powered by bpmn.io" ' +
|
|
||||||
'style="position: absolute; bottom: 15px; right: 15px; z-index: 100">' +
|
|
||||||
'<img src="data:image/png;base64,' + logoData + '">' +
|
|
||||||
'</a>';
|
|
||||||
|
|
||||||
container.appendChild(domify(linkMarkup));
|
|
||||||
|
|
||||||
/* </project-logo> */
|
/* </project-logo> */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = Viewer;
|
||||||
|
|
||||||
|
|
||||||
Viewer.prototype.importXML = function(xml, done) {
|
Viewer.prototype.importXML = function(xml, done) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -347,4 +335,41 @@ Viewer.prototype._modules = [
|
||||||
require('diagram-js/lib/features/overlays')
|
require('diagram-js/lib/features/overlays')
|
||||||
];
|
];
|
||||||
|
|
||||||
module.exports = Viewer;
|
|
||||||
|
/* <project-logo> */
|
||||||
|
|
||||||
|
var PoweredBy = require('./util/PoweredByUtil'),
|
||||||
|
domEvent = require('min-dom/lib/event');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the project logo to the diagram container as
|
||||||
|
* required by the bpmn.io license.
|
||||||
|
*
|
||||||
|
* @see http://bpmn.io/license
|
||||||
|
*
|
||||||
|
* @param {Element} container
|
||||||
|
*/
|
||||||
|
function addProjectLogo(container) {
|
||||||
|
var logoData = PoweredBy.BPMNIO_LOGO;
|
||||||
|
|
||||||
|
var linkMarkup =
|
||||||
|
'<a href="http://bpmn.io" ' +
|
||||||
|
'target="_blank" ' +
|
||||||
|
'class="bjs-powered-by" ' +
|
||||||
|
'title="Powered by bpmn.io" ' +
|
||||||
|
'style="position: absolute; bottom: 15px; right: 15px; z-index: 100">' +
|
||||||
|
'<img src="data:image/png;base64,' + logoData + '">' +
|
||||||
|
'</a>';
|
||||||
|
|
||||||
|
var linkElement = domify(linkMarkup);
|
||||||
|
|
||||||
|
container.appendChild(linkElement);
|
||||||
|
|
||||||
|
domEvent.bind(linkElement, 'click', function(event) {
|
||||||
|
PoweredBy.open();
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* </project-logo> */
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
/**
|
||||||
|
* This file must not be changed or exchanged.
|
||||||
|
*
|
||||||
|
* @see http://bpmn.io/license for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var domify = require('min-dom/lib/domify');
|
||||||
|
|
||||||
|
var domDelegate = require('min-dom/lib/delegate');
|
||||||
|
|
||||||
|
/* jshint -W101 */
|
||||||
|
|
||||||
|
// inlined ../resources/bpmnjs.png
|
||||||
|
var logoData = module.exports.BPMNIO_LOGO = 'iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAMAAADypuvZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFiMte9PrwldFwfcZPqtqN0+zEyOe1XLgjvuKncsJAZ70y6fXh3vDT////UrQV////G2zN+AAAABB0Uk5T////////////////////AOAjXRkAAAHDSURBVHjavJZJkoUgDEBJmAX8979tM8u3E6x20VlYJfFFMoL4vBDxATxZcakIOJTWSmxvKWVIkJ8jHvlRv1F2LFrVISCZI+tCtQx+XfewgVTfyY3plPiQEAzI3zWy+kR6NBhFBYeBuscJLOUuA2WVLpCjVIaFzrNQZArxAZKUQm6gsj37L9Cb7dnIBUKxENaaMJQqMpDXvSL+ktxdGRm2IsKgJGGPg7atwUG5CcFUEuSv+CwQqizTrvDTNXdMU2bMiDWZd8d7QIySWVRsb2vBBioxOFt4OinPBapL+neAb5KL5IJ8szOza2/DYoipUCx+CjO0Bpsv0V6mktNZ+k8rlABlWG0FrOpKYVo8DT3dBeLEjUBAj7moDogVii7nSS9QzZnFcOVBp1g2PyBQ3Vr5aIapN91VJy33HTJLC1iX2FY6F8gRdaAeIEfVONgtFCzZTmoLEdOjBDfsIOA6128gw3eu1shAajdZNAORxuQDJN5A5PbEG6gNIu24QJD5iNyRMZIr6bsHbCtCU/OaOaSvgkUyDMdDa1BXGf5HJ1To+/Ym6mCKT02Y+/Sa126ZKyd3jxhzpc1r8zVL6YM1Qy/kR4ABAFJ6iQUnivhAAAAAAElFTkSuQmCC';
|
||||||
|
|
||||||
|
/* jshint +W101 */
|
||||||
|
|
||||||
|
|
||||||
|
function css(attrs) {
|
||||||
|
return attrs.join(';');
|
||||||
|
}
|
||||||
|
|
||||||
|
var LIGHTBOX_STYLES = css([
|
||||||
|
'z-index: 1001',
|
||||||
|
'position: fixed',
|
||||||
|
'top: 0',
|
||||||
|
'left: 0',
|
||||||
|
'right: 0',
|
||||||
|
'bottom: 0'
|
||||||
|
]);
|
||||||
|
|
||||||
|
var BACKDROP_STYLES = css([
|
||||||
|
'width: 100%',
|
||||||
|
'height: 100%',
|
||||||
|
'background: rgba(0,0,0,0.2)'
|
||||||
|
]);
|
||||||
|
|
||||||
|
var NOTICE_STYLES = css([
|
||||||
|
'position: absolute',
|
||||||
|
'left: 50%',
|
||||||
|
'top: 40%',
|
||||||
|
'margin: 0 -130px',
|
||||||
|
'width: 260px',
|
||||||
|
'padding: 10px',
|
||||||
|
'background: white',
|
||||||
|
'border: solid 1px #AAA',
|
||||||
|
'border-radius: 3px',
|
||||||
|
'font-family: Helvetica, Arial, sans-serif',
|
||||||
|
'font-size: 14px',
|
||||||
|
'line-height: 1.2em'
|
||||||
|
]);
|
||||||
|
|
||||||
|
var LIGHTBOX_MARKUP =
|
||||||
|
'<div class="bjs-powered-by-lightbox" style="' + LIGHTBOX_STYLES + '">' +
|
||||||
|
'<div class="backdrop" style="' + BACKDROP_STYLES + '"></div>' +
|
||||||
|
'<div class="notice" style="' + NOTICE_STYLES + '">' +
|
||||||
|
'<a href="http://bpmn.io" target="_blank" style="float: left; margin-right: 10px">' +
|
||||||
|
'<img src="data:image/png;base64,'+ logoData +'">' +
|
||||||
|
'</a>' +
|
||||||
|
'Web-based tooling for BPMN, DMN and CMMN diagrams ' +
|
||||||
|
'powered by <a href="http://bpmn.io" target="_blank">bpmn.io</a>.' +
|
||||||
|
'</div>' +
|
||||||
|
'</div>';
|
||||||
|
|
||||||
|
|
||||||
|
var lightbox;
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
|
||||||
|
if (!lightbox) {
|
||||||
|
lightbox = domify(LIGHTBOX_MARKUP);
|
||||||
|
|
||||||
|
domDelegate.bind(lightbox, '.backdrop', 'click', function(event) {
|
||||||
|
document.body.removeChild(lightbox);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.appendChild(lightbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.open = open;
|
Loading…
Reference in New Issue