7 lines
18 KiB
JavaScript
7 lines
18 KiB
JavaScript
|
|
// feedback.js
|
||
|
|
// 2013, Kázmér Rapavi, https://github.com/ivoviz/feedback
|
||
|
|
// Licensed under the MIT license.
|
||
|
|
// Version 2.0
|
||
|
|
|
||
|
|
(function(e){e.feedback=function(t){function o(){canDraw=false;e(document).off("mouseenter mouseleave",".feedback-helper");e(document).off("mouseup keyup");e(document).off("mousedown",".feedback-setblackout");e(document).off("mousedown",".feedback-sethighlight");e(document).off("mousedown click","#feedback-close");e(document).off("mousedown","#feedback-canvas");e(document).off("click","#feedback-highlighter-next");e(document).off("click","#feedback-highlighter-back");e(document).off("click","#feedback-welcome-next");e(document).off("click","#feedback-overview-back");e(document).off("mouseleave","body");e(document).off("mouseenter",".feedback-helper");e(document).off("selectstart dragstart",document);e("#feedback-module").off("click",".feedback-wizard-close,.feedback-close-btn");e(document).off("click","#feedback-submit");if(n.highlightElement){e(document).off("click","#feedback-canvas");e(document).off("mousemove","#feedback-canvas")}e('[data-highlighted="true"]').removeAttr("data-highlight-id").removeAttr("data-highlighted");e("#feedback-module").remove();e(".feedback-btn").show();n.onClose.call(this)}function u(t,n){n=typeof n!=="undefined"?n:true;t.clearRect(0,0,e("#feedback-canvas").width(),e("#feedback-canvas").height());t.fillStyle="rgba(102,102,102,0.5)";t.fillRect(0,0,e("#feedback-canvas").width(),e("#feedback-canvas").height());e(".feedback-helper").each(function(){if(e(this).attr("data-type")=="highlight")if(n)a(t,parseInt(e(this).css("left"),10),parseInt(e(this).css("top"),10),e(this).width(),e(this).height())});e(".feedback-helper").each(function(){if(e(this).attr("data-type")=="highlight")t.clearRect(parseInt(e(this).css("left"),10),parseInt(e(this).css("top"),10),e(this).width(),e(this).height())});e(".feedback-helper").each(function(){if(e(this).attr("data-type")=="blackout"){t.fillStyle="rgba(0,0,0,1)";t.fillRect(parseInt(e(this).css("left"),10),parseInt(e(this).css("top"),10),e(this).width(),e(this).height())}})}function a(e,t,r,i,s){e.strokeStyle=n.strokeStyle;e.shadowColor=n.shadowColor;e.shadowOffsetX=n.shadowOffsetX;e.shadowOffsetY=n.shadowOffsetY;e.shadowBlur=n.shadowBlur;e.lineJoin=n.lineJoin;e.lineWidth=n.lineWidth;e.strokeRect(t,r,i,s);e.shadowOffsetX=0;e.shadowOffsetY=0;e.shadowBlur=0;e.lineWidth=1}var n=e.extend({ajaxURL:"",postBrowserInfo:true,postHTML:true,postURL:true,proxy:undefined,letterRendering:false,initButtonText:"Send feedback",strokeStyle:"black",shadowColor:"black",shadowOffsetX:1,shadowOffsetY:1,shadowBlur:10,lineJoin:"bevel",lineWidth:3,html2canvasURL:"html2canvas.js",feedbackButton:".feedback-btn",showDescriptionModal:true,isDraggable:true,onScreenshotTaken:function(){},tpl:{description:'<div id="feedback-welcome"><div class="feedback-logo">Feedback</div><p>Feedback lets you send us suggestions about our products. We welcome problem reports, feature ideas and general comments.</p><p>Start by writing a brief description:</p><textarea id="feedback-note-tmp"></textarea><p>Next we\'ll let you identify areas of the page related to your description.</p><button id="feedback-welcome-next" class="feedback-next-btn feedback-btn-gray">Next</button><div id="feedback-welcome-error">Please enter a description.</div><div class="feedback-wizard-close"></div></div>',highlighter:'<div id="feedback-highlighter"><div class="feedback-logo">Feedback</div><p>Click and drag on the page to help us better understand your feedback. You can move this dialog if it\'s in the way.</p><button class="feedback-sethighlight feedback-active"><div class="ico"></div><span>Highlight</span></button><label>Highlight areas relevant to your feedback.</label><button class="feedback-setblackout"><div class="ico"></div><span>Black out</span></button><label class="lower">Black out any personal information.</label><div class="feedback-buttons"><button id="feedback-highlighter-next" class="feedback-next-btn feedback-btn-gray">Next</button><button id="feedback-highlighter-back" class="feedback-back-btn feedback-btn-gray">Back</button></div><div class="feedback-wizard-close"></div></div>',overview:'<div id="feedback-overview"><
|