@ -0,0 +1,145 @@ |
||||
body { |
||||
overflow: hidden; |
||||
} |
||||
|
||||
FIELDSET { |
||||
margin: 0; |
||||
padding: 5px 5px; |
||||
} |
||||
|
||||
LEGEND { |
||||
background-image: url(../images/bullet_green.gif); |
||||
background-repeat: no-repeat; |
||||
background-position: left center; |
||||
padding-left: 15px; |
||||
padding-right: 5px; |
||||
} |
||||
LEGEND A { |
||||
border: none!important; |
||||
text-decoration: none; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.fieldset_off { |
||||
border-bottom: none; |
||||
border-right: none; |
||||
} |
||||
.fieldset_off LEGEND { |
||||
background-image: url(../images/bullet_orange.gif); |
||||
} |
||||
.fieldset_off DIV { |
||||
display: none; |
||||
} |
||||
|
||||
#img_area_form { |
||||
margin: 5px 0px; |
||||
padding: 0; |
||||
border: 0; |
||||
} |
||||
|
||||
#form_container { |
||||
white-space: nowrap; |
||||
overflow: auto; |
||||
height: 88px; |
||||
border-top: solid 1px #bfc1c5; |
||||
} |
||||
|
||||
#form_container INPUT, #form_container SELECT { |
||||
border: 1px solid black; |
||||
font-size: 10px; |
||||
margin: 0; |
||||
padding: 0 0 0 1px; |
||||
} |
||||
|
||||
.img_area { |
||||
display: block; |
||||
vertical-align: middle; |
||||
line-height: 20px; |
||||
height: 20px; |
||||
} |
||||
|
||||
.img_id { |
||||
font-weight: bold; |
||||
width: 25px; |
||||
padding: 0px 3px; |
||||
text-align: right; |
||||
border: none!important; |
||||
background: none; |
||||
} |
||||
.img_active { |
||||
border: none!important; |
||||
} |
||||
.img_coords { |
||||
width: 72px; |
||||
} |
||||
.img_href { |
||||
width: 82px; |
||||
} |
||||
.img_alt { |
||||
width: 82px; |
||||
} |
||||
.img_target { |
||||
width: 82px; |
||||
} |
||||
|
||||
#pic_container { |
||||
position: relative; |
||||
width: 100%; |
||||
height: 300px; |
||||
border: solid 0px #efefef; |
||||
overflow: auto; |
||||
} |
||||
|
||||
#pic_container .imgmap_label { |
||||
font: bold 10px Arial; |
||||
color: #100; |
||||
padding: 1px 2px; |
||||
} |
||||
|
||||
#status_container { |
||||
font-weight: bold!important; |
||||
font-size: 90%; |
||||
color: #e95949; |
||||
width: 100%; |
||||
height: 1em; |
||||
} |
||||
|
||||
#button_container { |
||||
padding: 5px; |
||||
line-height: 16px; |
||||
} |
||||
#button_container a { |
||||
outline: 0; |
||||
} |
||||
#button_container img { |
||||
border: 0; |
||||
padding: 1px; |
||||
} |
||||
#button_container .ActiveMode { |
||||
border: 1px solid #666; |
||||
padding: 0; |
||||
background-color: #ddd; |
||||
} |
||||
|
||||
#fieldset_html { |
||||
text-align: left; |
||||
} |
||||
|
||||
#html_container { |
||||
border: 1px solid black; |
||||
margin: 5px 0; |
||||
padding: 1px 0 0 1px; |
||||
height: 100px; |
||||
width: 100%; |
||||
} |
||||
|
||||
#properties { |
||||
clear:both; |
||||
border:1px solid #BFC1C5; |
||||
border-width:1px 0; |
||||
padding-bottom:0.8em; |
||||
} |
||||
|
||||
#properties td { |
||||
padding:2px 4px; |
||||
} |
||||
@ -0,0 +1,11 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
||||
"http://www.w3.org/TR/html4/loose.dtd"> |
||||
<html> |
||||
<head> |
||||
<title>imgmap plugin index</title> |
||||
<META http-equiv="refresh" content="0;URL=install.html"> |
||||
</head> |
||||
<body> |
||||
<p>You should have been redirected <a href="install.html">to the documentation</a></p> |
||||
</body> |
||||
</html> |
||||
|
After Width: | Height: | Size: 4.8 KiB |
@ -0,0 +1,60 @@ |
||||
body { |
||||
font-family: Arial, Helvetica, sans-serif; |
||||
font-size: 90%; |
||||
} |
||||
h1 { |
||||
text-align:center; |
||||
font-size:180%; |
||||
} |
||||
h2 { |
||||
border-bottom:2px solid #CCC; |
||||
margin:1em 0 0.4em 0; |
||||
} |
||||
h3 { |
||||
margin-bottom:0.4em; |
||||
} |
||||
p { |
||||
margin:0 0 1em 1em; |
||||
text-align:justify; |
||||
} |
||||
ol { |
||||
margin:0 0 1.2em 1em; |
||||
padding:0; |
||||
list-style-type:none; |
||||
} |
||||
ol li { |
||||
margin:0.2em 0; |
||||
} |
||||
pre, code { |
||||
font-size:100%; |
||||
font-family:"Courier New", Courier, mono; |
||||
background-color: #CCCCCC; |
||||
border:1px solid #999; |
||||
padding:0.2em 1em; |
||||
margin: 0.4em 0; |
||||
display:block; |
||||
} |
||||
form { |
||||
margin:0 0 0 1em; |
||||
} |
||||
span.key { |
||||
color: #006600; |
||||
} |
||||
#install { |
||||
display:none |
||||
} |
||||
#languages ul { |
||||
display:inline; |
||||
list-style-type:none; |
||||
margin:0; |
||||
padding:0; |
||||
} |
||||
#languages li { |
||||
display:inline; |
||||
margin:0; |
||||
padding:0; |
||||
vertical-align:bottom; |
||||
} |
||||
p.nobottom { |
||||
margin:1em 0 0 1em; |
||||
} |
||||
@ -0,0 +1,108 @@ |
||||
/* |
||||
ImgMap plugin for FCKeditor |
||||
version 0.4 14/12/2007 |
||||
|
||||
See docs/install.html |
||||
|
||||
|
||||
*/ |
||||
|
||||
imgmapCommand_GetState = function() { |
||||
if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) |
||||
return FCK_TRISTATE_DISABLED; |
||||
|
||||
var oImage = FCK.Selection.GetSelectedElement() ; |
||||
if ( oImage && oImage.tagName == 'IMG' ) |
||||
{ |
||||
// Does it has an assigned map?
|
||||
if (oImage.getAttribute( 'usemap' )) |
||||
return FCK_TRISTATE_ON;
|
||||
|
||||
// Plain image
|
||||
return FCK_TRISTATE_OFF;
|
||||
} |
||||
// No image selected
|
||||
return FCK_TRISTATE_DISABLED; |
||||
} |
||||
|
||||
|
||||
FCKCommands.RegisterCommand( 'imgmapPopup',
|
||||
new FCKDialogCommand( FCKLang.imgmapDlgName, FCKLang.imgmapDlgTitle, FCKPlugins.Items['imgmap'].Path + 'popup.html', 700, 620, imgmapCommand_GetState ) ) ; |
||||
|
||||
|
||||
// create imgmap toolbar button.
|
||||
var imgmapButton = new FCKToolbarButton('imgmapPopup', FCKLang.imgmapBtn, null, null, false, true); |
||||
// Use the proper icon according to the skin:
|
||||
if ( /\/editor\/skins\/(.*)\//.test(FCKConfig.SkinPath) ) |
||||
imgmapButton.IconPath = FCKPlugins.Items['imgmap'].Path + 'images/icon_' + RegExp.$1 + '.gif'; |
||||
else |
||||
imgmapButton.IconPath = FCKPlugins.Items['imgmap'].Path + 'images/editor_icon.gif'; |
||||
|
||||
FCKToolbarItems.RegisterItem('imgmapPopup', imgmapButton); |
||||
|
||||
// register new contextmenu
|
||||
FCK.ContextMenu.RegisterListener({ |
||||
AddItems : function( menu, tag, tagName ) { |
||||
// under what circumstances do we display this option
|
||||
if (tagName == 'IMG') { |
||||
// when the option is displayed, show a separator the command
|
||||
menu.AddSeparator(); |
||||
// the command needs the registered command name, the title for the context menu, and the icon path
|
||||
menu.AddItem('imgmapPopup', FCKLang.imgmapDlgTitle, imgmapButton.IconPath); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
|
||||
// The code has been added in FCKeditor 2.5, so we only need it here for previous versions.
|
||||
if ( !FCKRegexLib.ProtectUrlsArea ) |
||||
{ |
||||
if ( FCKBrowserInfo.IsIE ) |
||||
{ |
||||
// Fix behavior for IE, it doesn't read back the .name on newly created maps
|
||||
FCKXHtml.TagProcessors['map'] = function( node, htmlNode ) |
||||
{ |
||||
if ( ! node.attributes.getNamedItem( 'name' ) ) |
||||
{ |
||||
var name = htmlNode.name ; |
||||
if ( name ) |
||||
FCKXHtml._AppendAttribute( node, 'name', name ) ; |
||||
} |
||||
|
||||
node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ; |
||||
|
||||
return node ; |
||||
} |
||||
} |
||||
|
||||
// The href in the areas might get distorted by the browser.
|
||||
|
||||
// Keep a reference to the default processsor:
|
||||
var imgmap_OldAreaProcessor = FCKXHtml.TagProcessors['area'] ; |
||||
|
||||
FCKXHtml.TagProcessors['area'] = function( node, htmlNode ) |
||||
{ |
||||
var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ; |
||||
if ( sSavedUrl != null ) |
||||
FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ; |
||||
|
||||
// Call the default processor
|
||||
if (typeof imgmap_OldAreaProcessor == 'function')
|
||||
node = imgmap_OldAreaProcessor ( node, htmlNode ) ; |
||||
|
||||
return node ; |
||||
} |
||||
|
||||
// Saves URLs on links and images on special attributes, so they don't change when
|
||||
// moving around.
|
||||
var imgmap_OldProtectUrls = FCK.ProtectUrls ; |
||||
FCK.ProtectUrls = function( html ) |
||||
{ |
||||
html = imgmap_OldProtectUrls( html ) ; |
||||
|
||||
// <AREA> href
|
||||
html = html.replace( /<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi , '$& _fcksavedurl=$1' ) ; |
||||
|
||||
return html ; |
||||
} |
||||
} |
||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1010 B |
|
After Width: | Height: | Size: 282 B |
|
After Width: | Height: | Size: 282 B |
|
After Width: | Height: | Size: 310 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1006 B |
|
After Width: | Height: | Size: 604 B |
|
After Width: | Height: | Size: 1009 B |
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 1001 B |
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 265 B |
|
After Width: | Height: | Size: 315 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 608 B |
@ -0,0 +1,19 @@ |
||||
if(!window.CanvasRenderingContext2D){(function(){var I=Math,i=I.round,L=I.sin,M=I.cos,m=10,A=m/2,Q={init:function(a){var b=a||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var c=this;b.attachEvent("onreadystatechange",function(){c.r(b)})}},r:function(a){if(a.readyState=="complete"){if(!a.namespaces["s"]){a.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var b=a.createStyleSheet();b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}"; |
||||
var c=a.getElementsByTagName("canvas");for(var d=0;d<c.length;d++){if(!c[d].getContext){this.initElement(c[d])}}}},q:function(a){var b=a.outerHTML,c=a.ownerDocument.createElement(b);if(b.slice(-2)!="/>"){var d="/"+a.tagName,e;while((e=a.nextSibling)&&e.tagName!=d){e.removeNode()}if(e){e.removeNode()}}a.parentNode.replaceChild(c,a);return c},initElement:function(a){a=this.q(a);a.getContext=function(){if(this.l){return this.l}return this.l=new K(this)};a.attachEvent("onpropertychange",V);a.attachEvent("onresize", |
||||
W);var b=a.attributes;if(b.width&&b.width.specified){a.style.width=b.width.nodeValue+"px"}else{a.width=a.clientWidth}if(b.height&&b.height.specified){a.style.height=b.height.nodeValue+"px"}else{a.height=a.clientHeight}return a}};function V(a){var b=a.srcElement;switch(a.propertyName){case "width":b.style.width=b.attributes.width.nodeValue+"px";b.getContext().clearRect();break;case "height":b.style.height=b.attributes.height.nodeValue+"px";b.getContext().clearRect();break}}function W(a){var b=a.srcElement; |
||||
if(b.firstChild){b.firstChild.style.width=b.clientWidth+"px";b.firstChild.style.height=b.clientHeight+"px"}}Q.init();var R=[];for(var E=0;E<16;E++){for(var F=0;F<16;F++){R[E*16+F]=E.toString(16)+F.toString(16)}}function J(){return[[1,0,0],[0,1,0],[0,0,1]]}function G(a,b){var c=J();for(var d=0;d<3;d++){for(var e=0;e<3;e++){var g=0;for(var h=0;h<3;h++){g+=a[d][h]*b[h][e]}c[d][e]=g}}return c}function N(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit= |
||||
a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.d=a.d;b.e=a.e}function O(a){var b,c=1;a=String(a);if(a.substring(0,3)=="rgb"){var d=a.indexOf("(",3),e=a.indexOf(")",d+1),g=a.substring(d+1,e).split(",");b="#";for(var h=0;h<3;h++){b+=R[Number(g[h])]}if(g.length==4&&a.substr(3,1)=="a"){c=g[3]}}else{b=a}return[b,c]}function S(a){switch(a){case "butt":return"flat";case "round":return"round"; |
||||
case "square":default:return"square"}}function K(a){this.a=J();this.m=[];this.k=[];this.c=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=m*1;this.globalAlpha=1;this.canvas=a;var b=a.ownerDocument.createElement("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.overflow="hidden";b.style.position="absolute";a.appendChild(b);this.j=b;this.d=1;this.e=1}var j=K.prototype;j.clearRect=function(){this.j.innerHTML= |
||||
"";this.c=[]};j.beginPath=function(){this.c=[]};j.moveTo=function(a,b){this.c.push({type:"moveTo",x:a,y:b});this.f=a;this.g=b};j.lineTo=function(a,b){this.c.push({type:"lineTo",x:a,y:b});this.f=a;this.g=b};j.bezierCurveTo=function(a,b,c,d,e,g){this.c.push({type:"bezierCurveTo",cp1x:a,cp1y:b,cp2x:c,cp2y:d,x:e,y:g});this.f=e;this.g=g};j.quadraticCurveTo=function(a,b,c,d){var e=this.f+0.6666666666666666*(a-this.f),g=this.g+0.6666666666666666*(b-this.g),h=e+(c-this.f)/3,l=g+(d-this.g)/3;this.bezierCurveTo(e, |
||||
g,h,l,c,d)};j.arc=function(a,b,c,d,e,g){c*=m;var h=g?"at":"wa",l=a+M(d)*c-A,n=b+L(d)*c-A,o=a+M(e)*c-A,f=b+L(e)*c-A;if(l==o&&!g){l+=0.125}this.c.push({type:h,x:a,y:b,radius:c,xStart:l,yStart:n,xEnd:o,yEnd:f})};j.rect=function(a,b,c,d){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath()};j.strokeRect=function(a,b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.stroke()};j.fillRect=function(a, |
||||
b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.fill()};j.createLinearGradient=function(a,b,c,d){var e=new H("gradient");return e};j.createRadialGradient=function(a,b,c,d,e,g){var h=new H("gradientradial");h.n=c;h.o=g;h.i.x=a;h.i.y=b;return h};j.drawImage=function(a,b){var c,d,e,g,h,l,n,o,f=a.runtimeStyle.width,k=a.runtimeStyle.height;a.runtimeStyle.width="auto";a.runtimeStyle.height="auto";var q=a.width,r=a.height;a.runtimeStyle.width= |
||||
f;a.runtimeStyle.height=k;if(arguments.length==3){c=arguments[1];d=arguments[2];h=(l=0);n=(e=q);o=(g=r)}else if(arguments.length==5){c=arguments[1];d=arguments[2];e=arguments[3];g=arguments[4];h=(l=0);n=q;o=r}else if(arguments.length==9){h=arguments[1];l=arguments[2];n=arguments[3];o=arguments[4];c=arguments[5];d=arguments[6];e=arguments[7];g=arguments[8]}else{throw"Invalid number of arguments";}var s=this.b(c,d),t=[],v=10,w=10;t.push(" <g_vml_:group",' coordsize="',m*v,",",m*w,'"',' coordorigin="0,0"', |
||||
' style="width:',v,";height:",w,";position:absolute;");if(this.a[0][0]!=1||this.a[0][1]){var x=[];x.push("M11='",this.a[0][0],"',","M12='",this.a[1][0],"',","M21='",this.a[0][1],"',","M22='",this.a[1][1],"',","Dx='",i(s.x/m),"',","Dy='",i(s.y/m),"'");var p=s,y=this.b(c+e,d),z=this.b(c,d+g),B=this.b(c+e,d+g);p.x=Math.max(p.x,y.x,z.x,B.x);p.y=Math.max(p.y,y.y,z.y,B.y);t.push("padding:0 ",i(p.x/m),"px ",i(p.y/m),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",x.join(""),", sizingmethod='clip');")}else{t.push("top:", |
||||
i(s.y/m),"px;left:",i(s.x/m),"px;")}t.push(' ">','<g_vml_:image src="',a.src,'"',' style="width:',m*e,";"," height:",m*g,';"',' cropleft="',h/q,'"',' croptop="',l/r,'"',' cropright="',(q-h-n)/q,'"',' cropbottom="',(r-l-o)/r,'"'," />","</g_vml_:group>");this.j.insertAdjacentHTML("BeforeEnd",t.join(""))};j.stroke=function(a){var b=[],c=O(a?this.fillStyle:this.strokeStyle),d=c[0],e=c[1]*this.globalAlpha,g=10,h=10;b.push("<g_vml_:shape",' fillcolor="',d,'"',' filled="',Boolean(a),'"',' style="position:absolute;width:', |
||||
g,";height:",h,';"',' coordorigin="0 0" coordsize="',m*g," ",m*h,'"',' stroked="',!a,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',d,'"',' path="');var l={x:null,y:null},n={x:null,y:null};for(var o=0;o<this.c.length;o++){var f=this.c[o];if(f.type=="moveTo"){b.push(" m ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="lineTo"){b.push(" l ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="close"){b.push(" x ")}else if(f.type=="bezierCurveTo"){b.push(" c "); |
||||
var k=this.b(f.x,f.y),q=this.b(f.cp1x,f.cp1y),r=this.b(f.cp2x,f.cp2y);b.push(i(q.x),",",i(q.y),",",i(r.x),",",i(r.y),",",i(k.x),",",i(k.y))}else if(f.type=="at"||f.type=="wa"){b.push(" ",f.type," ");var k=this.b(f.x,f.y),s=this.b(f.xStart,f.yStart),t=this.b(f.xEnd,f.yEnd);b.push(i(k.x-this.d*f.radius),",",i(k.y-this.e*f.radius)," ",i(k.x+this.d*f.radius),",",i(k.y+this.e*f.radius)," ",i(s.x),",",i(s.y)," ",i(t.x),",",i(t.y))}if(k){if(l.x==null||k.x<l.x){l.x=k.x}if(n.x==null||k.x>n.x){n.x=k.x}if(l.y== |
||||
null||k.y<l.y){l.y=k.y}if(n.y==null||k.y>n.y){n.y=k.y}}}b.push(' ">');if(typeof this.fillStyle=="object"){var v={x:"50%",y:"50%"},w=n.x-l.x,x=n.y-l.y,p=w>x?w:x;v.x=i(this.fillStyle.i.x/w*100+50)+"%";v.y=i(this.fillStyle.i.y/x*100+50)+"%";var y=[];if(this.fillStyle.p=="gradientradial"){var z=this.fillStyle.n/p*100,B=this.fillStyle.o/p*100-z}else{var z=0,B=100}var C={offset:null,color:null},D={offset:null,color:null};this.fillStyle.h.sort(function(T,U){return T.offset-U.offset});for(var o=0;o<this.fillStyle.h.length;o++){var u= |
||||
this.fillStyle.h[o];y.push(u.offset*B+z,"% ",u.color,",");if(u.offset>C.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset<D.offset||D.offset==null){D.offset=u.offset;D.color=u.color}}y.pop();b.push("<g_vml_:fill",' color="',D.color,'"',' color2="',C.color,'"',' type="',this.fillStyle.p,'"',' focusposition="',v.x,", ",v.y,'"',' colors="',y.join(""),'"',' opacity="',e,'" />')}else if(a){b.push('<g_vml_:fill color="',d,'" opacity="',e,'" />')}else{b.push("<g_vml_:stroke",' opacity="', |
||||
e,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',S(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',d,'" />')}b.push("</g_vml_:shape>");this.j.insertAdjacentHTML("beforeEnd",b.join(""));this.c=[]};j.fill=function(){this.stroke(true)};j.closePath=function(){this.c.push({type:"close"})};j.b=function(a,b){return{x:m*(a*this.a[0][0]+b*this.a[1][0]+this.a[2][0])-A,y:m*(a*this.a[0][1]+b*this.a[1][1]+this.a[2][1])-A}};j.save=function(){var a={};N(this,a); |
||||
this.k.push(a);this.m.push(this.a);this.a=G(J(),this.a)};j.restore=function(){N(this.k.pop(),this);this.a=this.m.pop()};j.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];this.a=G(c,this.a)};j.rotate=function(a){var b=M(a),c=L(a),d=[[b,c,0],[-c,b,0],[0,0,1]];this.a=G(d,this.a)};j.scale=function(a,b){this.d*=a;this.e*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];this.a=G(c,this.a)};j.clip=function(){};j.arcTo=function(){};j.createPattern=function(){return new P};function H(a){this.p=a;this.n=0;this.o= |
||||
0;this.h=[];this.i={x:0,y:0}}H.prototype.addColorStop=function(a,b){b=O(b);this.h.push({offset:1-a,color:b})};function P(){}G_vmlCanvasManager=Q;CanvasRenderingContext2D=K;CanvasGradient=H;CanvasPattern=P})()}; |
||||
@ -0,0 +1,375 @@ |
||||
var myimgmap; |
||||
var img_obj = null; |
||||
var map_obj = null; |
||||
|
||||
// Less boring code
|
||||
window.$ = function( id ) |
||||
{ |
||||
return this.document.getElementById( id ) ; |
||||
} ; |
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded(); |
||||
var FCKConfig = oEditor.FCKConfig ; |
||||
var FCKLang = oEditor.FCKLang ; |
||||
|
||||
document.write('<scr'+'ipt type="text/javascript" src="' + FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js"></sc' + 'ript>'); |
||||
|
||||
|
||||
window.onload = function() |
||||
{ |
||||
window.parent.SetOkButton(true); |
||||
// window.parent.SetAutoSize(true);
|
||||
|
||||
//translate page elements
|
||||
oEditor.FCKLanguageManager.TranslatePage(document); |
||||
oEditor.FCKLanguageManager.TranslateElements(document, 'A', 'innerHTML'); |
||||
|
||||
var btn; |
||||
btn = $('imgpointer') ; |
||||
btn.alt = btn.title = FCKLang.imgmapPointer ; |
||||
btn = $('imgrectangle') ; |
||||
btn.alt = btn.title = FCKLang.imgmapRectangle ; |
||||
btn = $('imgcircle') ; |
||||
btn.alt = btn.title = FCKLang.imgmapCircle ; |
||||
btn = $('imgpolygon') ; |
||||
btn.alt = btn.title = FCKLang.imgmapPolygon ; |
||||
|
||||
|
||||
img_obj = oEditor.FCK.Selection.GetSelectedElement() ; |
||||
|
||||
// On rare situations it's possible to launch the dialog without an image selected
|
||||
// -> in IE select an image, click outside the editor and the button will remain enabled,
|
||||
// but img_obj will be null
|
||||
if ( !img_obj ) |
||||
{ |
||||
alert( FCKLang.msgImageNotSelected ) ; |
||||
window.parent.close() ; |
||||
return ; |
||||
} |
||||
|
||||
// Autoselect the language based on the current FCKeditor language
|
||||
// Check if the plugin has the language file for the active language.
|
||||
var sLang ; |
||||
if ( oEditor.FCKPlugins.Items['imgmap'].AvailableLangs.IndexOf( oEditor.FCKLanguageManager.ActiveLanguage.Code ) >= 0 ) |
||||
sLang = oEditor.FCKLanguageManager.ActiveLanguage.Code ; |
||||
else |
||||
// Load the english language file if the prefered by the user is not available.
|
||||
sLang = "en" ; |
||||
|
||||
//late init
|
||||
myimgmap = new imgmap({ |
||||
mode : "editor2", |
||||
button_container: $('button_container'), |
||||
imgroot: 'images/', |
||||
buttons : ['delete'], |
||||
custom_callbacks : { |
||||
'onSelectArea' : onSelectArea, |
||||
'onRemoveArea' : onRemoveArea |
||||
}, |
||||
html_container: null,
|
||||
pic_container: $('pic_container'), |
||||
status_container: $('status_container'), |
||||
form_container: null, // $('form_container'),
|
||||
bounding_box : false, |
||||
lang : sLang |
||||
}); |
||||
|
||||
//we need this to load languages
|
||||
myimgmap.onLoad(); |
||||
|
||||
myimgmap.loadImage(img_obj); |
||||
|
||||
//check if the image has a valid map already assigned
|
||||
var mapname = img_obj.getAttribute('usemap', 2) || img_obj.usemap ; |
||||
//console.log(mapname);
|
||||
if ( typeof mapname == 'string' && mapname !== '') { |
||||
mapname = mapname.substr(1); |
||||
var maps = oEditor.FCK.EditorDocument.getElementsByTagName('MAP'); |
||||
//console.log(maps);
|
||||
for (var i=0; i < maps.length; i++) { |
||||
if (maps[i].name == mapname) { |
||||
map_obj = maps[i]; |
||||
myimgmap.setMapHTML(map_obj); |
||||
|
||||
$('MapName').value = mapname ; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// We must set up this listener only after the current data has been read
|
||||
myimgmap.config.custom_callbacks.onAddArea = onAddArea ; |
||||
|
||||
$('btnBrowse').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; |
||||
|
||||
if ( map_obj !== null ) |
||||
{ |
||||
// Select the first area:
|
||||
myimgmap.selectedId = 0 ; |
||||
onSelectArea( myimgmap.areas[0] ) ; |
||||
|
||||
setMode( 'pointer' ) ; |
||||
} |
||||
else |
||||
hightlightMode( 'rectangle' ) ; |
||||
|
||||
RefreshSize() ; |
||||
} ; |
||||
|
||||
function Ok() { |
||||
updateAreaValues() ; |
||||
|
||||
if (img_obj !== null && img_obj.nodeName == "IMG") { |
||||
var MapInnerHTML = getMapInnerHTML(myimgmap); |
||||
|
||||
// If there are no areas, then exit (and remove if neccesary the map).
|
||||
if (MapInnerHTML == '') |
||||
{ |
||||
removeMap(); |
||||
return ; |
||||
} |
||||
|
||||
oEditor.FCKUndo.SaveUndoStep(); |
||||
|
||||
if (typeof map_obj == 'undefined' || map_obj === null) { |
||||
map_obj = oEditor.FCK.EditorDocument.createElement('MAP'); |
||||
img_obj.parentNode.appendChild(map_obj); |
||||
} |
||||
|
||||
myimgmap.mapid = myimgmap.mapname = $('MapName').value ; |
||||
|
||||
map_obj.innerHTML = MapInnerHTML ; |
||||
|
||||
// IE bug: it's not possible to directly assing the name and make it work easily
|
||||
// We remove the previous name
|
||||
if ( map_obj.name ) |
||||
map_obj.removeAttribute( 'name' ) ; |
||||
|
||||
map_obj.name = myimgmap.getMapName(); |
||||
map_obj.id = myimgmap.getMapId(); |
||||
|
||||
img_obj.setAttribute('usemap', "#" + myimgmap.getMapName(), 0); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
//remove the map object and unset the usemap attribute
|
||||
function removeMap() { |
||||
oEditor.FCKUndo.SaveUndoStep(); |
||||
if (img_obj !== null && img_obj.nodeName == "IMG") { |
||||
img_obj.removeAttribute('usemap', 0); |
||||
} |
||||
if (typeof map_obj != 'undefined' && map_obj !== null) { |
||||
map_obj.parentNode.removeChild(map_obj); |
||||
} |
||||
|
||||
window.parent.close(); |
||||
} |
||||
|
||||
|
||||
function changelabeling(obj) { |
||||
myimgmap.config.label = obj.value; |
||||
myimgmap._repaintAll(); |
||||
} |
||||
|
||||
function toggleFieldset(fieldset, on) { |
||||
if (fieldset) { |
||||
if (fieldset.className == 'fieldset_off' || on == 1) { |
||||
fieldset.className = ''; |
||||
RefreshSize(); |
||||
} |
||||
else { |
||||
fieldset.className = 'fieldset_off'; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// We need to store here the area id because if the user clicks on an area,
|
||||
// then the onSelectArea event will fire before the onchange or onblur of the editing inputs
|
||||
var currentAreaId = null ; |
||||
|
||||
// An area has been selected in the image
|
||||
function onSelectArea(obj) { |
||||
$( 'properties' ).style.visibility = ''; |
||||
|
||||
updateAreaValues() ; |
||||
|
||||
currentAreaId = obj.aid ; |
||||
$( 'txtUrl' ).value = obj.ahref ; |
||||
$( 'cmbTarget' ).value = obj.atarget ; |
||||
$( 'txtAlt' ).value = obj.aalt ; |
||||
$( 'txtAttTitle' ).value = obj.atitle ; |
||||
} |
||||
|
||||
// A new area has been added
|
||||
function onAddArea(id) { |
||||
$( 'properties' ).style.visibility = ''; |
||||
|
||||
updateAreaValues() ; |
||||
|
||||
currentAreaId = id ; |
||||
$( 'txtUrl' ).value = '' ; |
||||
$( 'cmbTarget' ).value = '' ; |
||||
$( 'txtAlt' ).value = '' ; |
||||
$( 'txtAttTitle' ).value = '' ; |
||||
} |
||||
|
||||
function onRemoveArea() |
||||
{ |
||||
currentAreaId = null ; |
||||
$( 'properties' ).style.visibility = 'hidden' ; |
||||
} |
||||
|
||||
function updateAreaValues() |
||||
{ |
||||
if (currentAreaId !== null) |
||||
{ |
||||
myimgmap.areas[currentAreaId].ahref = $( 'txtUrl' ).value ; |
||||
myimgmap.areas[currentAreaId].aalt = $( 'txtAlt' ).value ; |
||||
myimgmap.areas[currentAreaId].atitle = $( 'txtAttTitle' ).value ; |
||||
myimgmap._recalculate(currentAreaId); |
||||
} |
||||
} |
||||
|
||||
// We use our own resizing because the default doesn't take into account Standards rendering mode.
|
||||
function RefreshSize() |
||||
{ |
||||
var oInnerDoc = document ; |
||||
|
||||
var iFrameHeight ; |
||||
if ( document.all ) |
||||
iFrameHeight = oInnerDoc.documentElement.offsetHeight ; |
||||
else |
||||
iFrameHeight = window.innerHeight ; |
||||
|
||||
var iInnerHeight = oInnerDoc.body.scrollHeight ; |
||||
|
||||
var iDiff = iInnerHeight - iFrameHeight ; |
||||
|
||||
if ( iDiff !== 0 ) |
||||
{ |
||||
if ( document.all ) |
||||
window.parent.dialogHeight = ( parseInt( window.parent.dialogHeight, 10 ) + iDiff ) + 'px' ; |
||||
else |
||||
window.parent.resizeBy( 0, iDiff ) ; |
||||
} |
||||
} |
||||
|
||||
function setMode(mode) { |
||||
if (mode == 'pointer') { |
||||
myimgmap.is_drawing = 0; |
||||
myimgmap.nextShape = ''; |
||||
} |
||||
else { |
||||
myimgmap.nextShape = mode; |
||||
} |
||||
|
||||
hightlightMode(mode);
|
||||
} |
||||
|
||||
var previousModeImg = null ; |
||||
function hightlightMode(mode) { |
||||
// Reset previous button
|
||||
if ( previousModeImg ) |
||||
previousModeImg.className = ''; |
||||
|
||||
// Highlight new mode
|
||||
previousModeImg = $( 'img' + mode ); |
||||
previousModeImg.className = 'ActiveMode' ; |
||||
} |
||||
|
||||
|
||||
|
||||
/* Call our custom version to protect URLs */ |
||||
|
||||
function getMapInnerHTML( imgmap ) |
||||
{ |
||||
var html = '' ; |
||||
//foreach area properties
|
||||
for (var i=0; i< imgmap.areas.length; i++) { |
||||
html+= getAreaHtml( imgmap.areas[i] ) ; |
||||
} |
||||
return(html); |
||||
} |
||||
// Protect urls and add only the used attributes
|
||||
function getAreaHtml(area) |
||||
{ |
||||
if ( !area || area.shape == '') |
||||
return ''; |
||||
|
||||
var html = '<area shape="' + area.shape + '"' + |
||||
' coords="' + area.lastInput + '"' ; |
||||
|
||||
if (area.aalt && area.aalt!='') html+= ' alt="' + area.aalt + '"' ; |
||||
if (area.atitle && area.atitle!='') html+= ' title="' + area.atitle + '"' ; |
||||
if (area.ahref && area.ahref!='') html+= ' href="' + area.ahref + '" _fcksavedurl="' + area.ahref + '"' ; |
||||
if (area.atarget && area.atarget!='') html+= ' target="' + area.atarget + '"' ; |
||||
|
||||
html+='/>'; |
||||
return html; |
||||
} |
||||
|
||||
/* edit the properties of an area */ |
||||
|
||||
function SetUrl(value) |
||||
{ |
||||
var id = currentAreaId ; |
||||
if ( id !== null) |
||||
{ |
||||
myimgmap.areas[id].ahref = value ; |
||||
myimgmap._recalculate(id); |
||||
} |
||||
} |
||||
|
||||
|
||||
function SetTarget(value) |
||||
{ |
||||
var id = currentAreaId ; |
||||
if ( id !== null) |
||||
{ |
||||
myimgmap.areas[id].atarget = value ; |
||||
myimgmap._recalculate(id); |
||||
} |
||||
} |
||||
|
||||
|
||||
function SetAlt(value) |
||||
{ |
||||
var id = currentAreaId ; |
||||
if ( id !== null) |
||||
{ |
||||
myimgmap.areas[id].aalt = value ; |
||||
myimgmap._recalculate(id); |
||||
} |
||||
} |
||||
|
||||
|
||||
function SetTitle(value) |
||||
{ |
||||
var id = currentAreaId ; |
||||
if ( id !== null) |
||||
{ |
||||
myimgmap.areas[id].atitle = value ; |
||||
myimgmap._recalculate(id); |
||||
} |
||||
} |
||||
|
||||
|
||||
/* Browse server */ |
||||
|
||||
function BrowseServer() |
||||
{ |
||||
OpenFileBrowser( |
||||
FCKConfig.LinkBrowserURL, |
||||
FCKConfig.LinkBrowserWindowWidth, |
||||
FCKConfig.LinkBrowserWindowHeight ) ; |
||||
} |
||||
|
||||
function SetUrl( url, width, height, alt ) |
||||
{ |
||||
GetE('txtUrl').value = url ; |
||||
|
||||
if ( alt ) |
||||
GetE('txtAlt').value = alt; |
||||
} |
||||
@ -0,0 +1,37 @@ |
||||
//english string resources
|
||||
|
||||
var imgmapStrings = { |
||||
|
||||
READY : 'Ready', |
||||
PREVIEW_MODE : 'Preview mode. Test your image map.', |
||||
DESIGN_MODE : 'Design mode. Add new shapes or modify existing ones.', |
||||
|
||||
HINT_ADD : 'Add new area', |
||||
HINT_DELETE : 'Delete selected area', |
||||
HINT_PREVIEW : 'Preview image map', |
||||
HINT_HTML : 'Get image map HTML', |
||||
HINT_CLIPBOARD : 'Copy to clipboard', |
||||
|
||||
RECTANGLE_DRAW : 'Drawing rectangle. Hold down SHIFT for square mode.', |
||||
RECTANGLE_MOVE : 'Moving rectangle', |
||||
RECTANGLE_RESIZE_TOP : 'Resizing rectangle', |
||||
RECTANGLE_RESIZE_RIGHT : 'Resizing rectangle', |
||||
RECTANGLE_RESIZE_BOTTOM : 'Resizing rectangle', |
||||
RECTANGLE_RESIZE_LEFT : 'Resizing rectangle', |
||||
|
||||
SQUARE_DRAW : 'Drawing circle', |
||||
SQUARE2_DRAW : 'Drawing square. Release SHIFT for rectangle mode.', |
||||
SQUARE_MOVE : 'Moving circle', |
||||
SQUARE_RESIZE_TOP : 'Resizing circle', |
||||
SQUARE_RESIZE_RIGHT : 'Resizing circle', |
||||
SQUARE_RESIZE_BOTTOM : 'Resizing circle', |
||||
SQUARE_RESIZE_LEFT : 'Resizing circle', |
||||
|
||||
POLYGON_DRAW : 'Drawing polygon. Use SHIFT + click for the last control point.', |
||||
POLYGON_MOVE : 'Moving polygon', |
||||
|
||||
ERR_EXCANVAS_LOAD : 'Excanvas not loaded properly. Try to refresh the page.', |
||||
ERR_INVALID_COORDS : 'Invalid coordinates.' |
||||
|
||||
}; |
||||
//alert('lang loaded');
|
||||
@ -0,0 +1,37 @@ |
||||
// Spanish string resources
|
||||
|
||||
var imgmapStrings = { |
||||
|
||||
READY : 'Listo', |
||||
PREVIEW_MODE : 'Modo de previsualización. Prueba las zonas interactivas.', |
||||
DESIGN_MODE : 'Modo diseño. Añade nuevas zona o modifica las existentes.', |
||||
|
||||
HINT_ADD : 'Añade nueva zona', |
||||
HINT_DELETE : 'Borra la zona seleccionada', |
||||
HINT_PREVIEW : 'Previsualiza el mapa', |
||||
HINT_HTML : 'Muestra el HTML del mapa', |
||||
HINT_CLIPBOARD : 'Copiar al portapapeles', |
||||
|
||||
RECTANGLE_DRAW : 'Dibujando un rectángulo. Pulsa MAYS para cambiar a cuadrado.', |
||||
RECTANGLE_MOVE : 'Moviendo el rectángulo', |
||||
RECTANGLE_RESIZE_TOP : 'Redimensionando el rectángulo', |
||||
RECTANGLE_RESIZE_RIGHT : 'Redimensionando el rectángulo', |
||||
RECTANGLE_RESIZE_BOTTOM : 'Redimensionando el rectángulo', |
||||
RECTANGLE_RESIZE_LEFT : 'Redimensionando el rectángulo', |
||||
|
||||
SQUARE_DRAW : 'Dibujando un círculo', |
||||
SQUARE2_DRAW : 'Dibujando un cuadrado. Libera MAYS para cambiar a rectángulo.', |
||||
SQUARE_MOVE : 'Moviendo el círculo', |
||||
SQUARE_RESIZE_TOP : 'Redimensionando el círculo', |
||||
SQUARE_RESIZE_RIGHT : 'Redimensionando el círculo', |
||||
SQUARE_RESIZE_BOTTOM : 'Redimensionando el círculo', |
||||
SQUARE_RESIZE_LEFT : 'Redimensionando el círculo', |
||||
|
||||
POLYGON_DRAW : 'Dibujando un polígono. Usa MAYS + click para crear el último punto.', |
||||
POLYGON_MOVE : 'Moviendo el polígono', |
||||
|
||||
ERR_EXCANVAS_LOAD : 'Excanvas no se ha cargado correctamente. Prueba a refrescar la página.', |
||||
ERR_INVALID_COORDS : 'Coordenadas incorrectas.' |
||||
|
||||
}; |
||||
//alert('lang loaded');
|
||||
@ -0,0 +1,24 @@ |
||||
|
||||
|
||||
FCKLang.imgmapBtn = 'Insert/Edit Image Map'; |
||||
FCKLang.imgmapBtnRemove = 'Remove map'; |
||||
FCKLang.imgmapDlgTitle = 'Image Map Editor'; |
||||
FCKLang.imgmapDlgName = 'ImageMapEditor'; |
||||
|
||||
FCKLang.msgImageNotSelected = 'You must select an image before using this dialog' ; |
||||
|
||||
FCKLang.imgmapNoLabel = 'No labeling' ; |
||||
FCKLang.imgmapLabelNumber = 'Label with numbers' ; |
||||
FCKLang.imgmapLabelAlt = 'Label with alt text' ; |
||||
FCKLang.imgmapLabelHref = 'Label with href' ; |
||||
FCKLang.imgmapLabelTitle = 'Label with title' ; |
||||
FCKLang.imgmapLabelCoords = 'Label with coords' ; |
||||
|
||||
FCKLang.imgmapMap = 'Map' ; |
||||
FCKLang.imgmapMapName = 'Map name' ; |
||||
FCKLang.imgmapMapAreas = 'Image Map Areas' ; |
||||
|
||||
FCKLang.imgmapPointer = 'Pointer' ; |
||||
FCKLang.imgmapRectangle = 'Rectangle' ; |
||||
FCKLang.imgmapCircle = 'Circle' ; |
||||
FCKLang.imgmapPolygon = 'Polygon' ; |
||||
@ -0,0 +1,23 @@ |
||||
|
||||
FCKLang.imgmapBtn = 'Insertar/Editar zonas interactivas'; |
||||
FCKLang.imgmapBtnRemove = 'Quitar el mapa'; |
||||
FCKLang.imgmapDlgTitle = 'Editor de zonas interactivas'; |
||||
FCKLang.imgmapDlgName = 'ImageMapEditor'; |
||||
|
||||
FCKLang.msgImageNotSelected = 'Debes elegir una imagen antes de usar este diálogo' ; |
||||
|
||||
FCKLang.imgmapNoLabel = 'Sin etiquetas' ; |
||||
FCKLang.imgmapLabelNumber = 'Etiquetas con números' ; |
||||
FCKLang.imgmapLabelAlt = 'Etiquetas con el texto alternativo' ; |
||||
FCKLang.imgmapLabelHref = 'Etiquetas con la URL' ; |
||||
FCKLang.imgmapLabelTitle = 'Etiquetas con el título' ; |
||||
FCKLang.imgmapLabelCoords = 'Etiquetas con las coordenadas' ; |
||||
|
||||
FCKLang.imgmapMap = 'Mapa' ; |
||||
FCKLang.imgmapMapName = 'Nombre del mapa' ; |
||||
FCKLang.imgmapMapAreas = 'Zonas interactivas' ; |
||||
|
||||
FCKLang.imgmapPointer = 'Puntero' ; |
||||
FCKLang.imgmapRectangle = 'Rectángulo' ; |
||||
FCKLang.imgmapCircle = 'Círculo' ; |
||||
FCKLang.imgmapPolygon = 'Polígono' ; |
||||
@ -0,0 +1,280 @@ |
||||
GNU GENERAL PUBLIC LICENSE |
||||
Version 2, June 1991 |
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., |
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
Everyone is permitted to copy and distribute verbatim copies |
||||
of this license document, but changing it is not allowed. |
||||
|
||||
Preamble |
||||
|
||||
The licenses for most software are designed to take away your |
||||
freedom to share and change it. By contrast, the GNU General Public |
||||
License is intended to guarantee your freedom to share and change free |
||||
software--to make sure the software is free for all its users. This |
||||
General Public License applies to most of the Free Software |
||||
Foundation's software and to any other program whose authors commit to |
||||
using it. (Some other Free Software Foundation software is covered by |
||||
the GNU Lesser General Public License instead.) You can apply it to |
||||
your programs, too. |
||||
|
||||
When we speak of free software, we are referring to freedom, not |
||||
price. Our General Public Licenses are designed to make sure that you |
||||
have the freedom to distribute copies of free software (and charge for |
||||
this service if you wish), that you receive source code or can get it |
||||
if you want it, that you can change the software or use pieces of it |
||||
in new free programs; and that you know you can do these things. |
||||
|
||||
To protect your rights, we need to make restrictions that forbid |
||||
anyone to deny you these rights or to ask you to surrender the rights. |
||||
These restrictions translate to certain responsibilities for you if you |
||||
distribute copies of the software, or if you modify it. |
||||
|
||||
For example, if you distribute copies of such a program, whether |
||||
gratis or for a fee, you must give the recipients all the rights that |
||||
you have. You must make sure that they, too, receive or can get the |
||||
source code. And you must show them these terms so they know their |
||||
rights. |
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and |
||||
(2) offer you this license which gives you legal permission to copy, |
||||
distribute and/or modify the software. |
||||
|
||||
Also, for each author's protection and ours, we want to make certain |
||||
that everyone understands that there is no warranty for this free |
||||
software. If the software is modified by someone else and passed on, we |
||||
want its recipients to know that what they have is not the original, so |
||||
that any problems introduced by others will not reflect on the original |
||||
authors' reputations. |
||||
|
||||
Finally, any free program is threatened constantly by software |
||||
patents. We wish to avoid the danger that redistributors of a free |
||||
program will individually obtain patent licenses, in effect making the |
||||
program proprietary. To prevent this, we have made it clear that any |
||||
patent must be licensed for everyone's free use or not licensed at all. |
||||
|
||||
The precise terms and conditions for copying, distribution and |
||||
modification follow. |
||||
|
||||
GNU GENERAL PUBLIC LICENSE |
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
||||
0. This License applies to any program or other work which contains |
||||
a notice placed by the copyright holder saying it may be distributed |
||||
under the terms of this General Public License. The "Program", below, |
||||
refers to any such program or work, and a "work based on the Program" |
||||
means either the Program or any derivative work under copyright law: |
||||
that is to say, a work containing the Program or a portion of it, |
||||
either verbatim or with modifications and/or translated into another |
||||
language. (Hereinafter, translation is included without limitation in |
||||
the term "modification".) Each licensee is addressed as "you". |
||||
|
||||
Activities other than copying, distribution and modification are not |
||||
covered by this License; they are outside its scope. The act of |
||||
running the Program is not restricted, and the output from the Program |
||||
is covered only if its contents constitute a work based on the |
||||
Program (independent of having been made by running the Program). |
||||
Whether that is true depends on what the Program does. |
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's |
||||
source code as you receive it, in any medium, provided that you |
||||
conspicuously and appropriately publish on each copy an appropriate |
||||
copyright notice and disclaimer of warranty; keep intact all the |
||||
notices that refer to this License and to the absence of any warranty; |
||||
and give any other recipients of the Program a copy of this License |
||||
along with the Program. |
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and |
||||
you may at your option offer warranty protection in exchange for a fee. |
||||
|
||||
2. You may modify your copy or copies of the Program or any portion |
||||
of it, thus forming a work based on the Program, and copy and |
||||
distribute such modifications or work under the terms of Section 1 |
||||
above, provided that you also meet all of these conditions: |
||||
|
||||
a) You must cause the modified files to carry prominent notices |
||||
stating that you changed the files and the date of any change. |
||||
|
||||
b) You must cause any work that you distribute or publish, that in |
||||
whole or in part contains or is derived from the Program or any |
||||
part thereof, to be licensed as a whole at no charge to all third |
||||
parties under the terms of this License. |
||||
|
||||
c) If the modified program normally reads commands interactively |
||||
when run, you must cause it, when started running for such |
||||
interactive use in the most ordinary way, to print or display an |
||||
announcement including an appropriate copyright notice and a |
||||
notice that there is no warranty (or else, saying that you provide |
||||
a warranty) and that users may redistribute the program under |
||||
these conditions, and telling the user how to view a copy of this |
||||
License. (Exception: if the Program itself is interactive but |
||||
does not normally print such an announcement, your work based on |
||||
the Program is not required to print an announcement.) |
||||
|
||||
These requirements apply to the modified work as a whole. If |
||||
identifiable sections of that work are not derived from the Program, |
||||
and can be reasonably considered independent and separate works in |
||||
themselves, then this License, and its terms, do not apply to those |
||||
sections when you distribute them as separate works. But when you |
||||
distribute the same sections as part of a whole which is a work based |
||||
on the Program, the distribution of the whole must be on the terms of |
||||
this License, whose permissions for other licensees extend to the |
||||
entire whole, and thus to each and every part regardless of who wrote it. |
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest |
||||
your rights to work written entirely by you; rather, the intent is to |
||||
exercise the right to control the distribution of derivative or |
||||
collective works based on the Program. |
||||
|
||||
In addition, mere aggregation of another work not based on the Program |
||||
with the Program (or with a work based on the Program) on a volume of |
||||
a storage or distribution medium does not bring the other work under |
||||
the scope of this License. |
||||
|
||||
3. You may copy and distribute the Program (or a work based on it, |
||||
under Section 2) in object code or executable form under the terms of |
||||
Sections 1 and 2 above provided that you also do one of the following: |
||||
|
||||
a) Accompany it with the complete corresponding machine-readable |
||||
source code, which must be distributed under the terms of Sections |
||||
1 and 2 above on a medium customarily used for software interchange; or, |
||||
|
||||
b) Accompany it with a written offer, valid for at least three |
||||
years, to give any third party, for a charge no more than your |
||||
cost of physically performing source distribution, a complete |
||||
machine-readable copy of the corresponding source code, to be |
||||
distributed under the terms of Sections 1 and 2 above on a medium |
||||
customarily used for software interchange; or, |
||||
|
||||
c) Accompany it with the information you received as to the offer |
||||
to distribute corresponding source code. (This alternative is |
||||
allowed only for noncommercial distribution and only if you |
||||
received the program in object code or executable form with such |
||||
an offer, in accord with Subsection b above.) |
||||
|
||||
The source code for a work means the preferred form of the work for |
||||
making modifications to it. For an executable work, complete source |
||||
code means all the source code for all modules it contains, plus any |
||||
associated interface definition files, plus the scripts used to |
||||
control compilation and installation of the executable. However, as a |
||||
special exception, the source code distributed need not include |
||||
anything that is normally distributed (in either source or binary |
||||
form) with the major components (compiler, kernel, and so on) of the |
||||
operating system on which the executable runs, unless that component |
||||
itself accompanies the executable. |
||||
|
||||
If distribution of executable or object code is made by offering |
||||
access to copy from a designated place, then offering equivalent |
||||
access to copy the source code from the same place counts as |
||||
distribution of the source code, even though third parties are not |
||||
compelled to copy the source along with the object code. |
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program |
||||
except as expressly provided under this License. Any attempt |
||||
otherwise to copy, modify, sublicense or distribute the Program is |
||||
void, and will automatically terminate your rights under this License. |
||||
However, parties who have received copies, or rights, from you under |
||||
this License will not have their licenses terminated so long as such |
||||
parties remain in full compliance. |
||||
|
||||
5. You are not required to accept this License, since you have not |
||||
signed it. However, nothing else grants you permission to modify or |
||||
distribute the Program or its derivative works. These actions are |
||||
prohibited by law if you do not accept this License. Therefore, by |
||||
modifying or distributing the Program (or any work based on the |
||||
Program), you indicate your acceptance of this License to do so, and |
||||
all its terms and conditions for copying, distributing or modifying |
||||
the Program or works based on it. |
||||
|
||||
6. Each time you redistribute the Program (or any work based on the |
||||
Program), the recipient automatically receives a license from the |
||||
original licensor to copy, distribute or modify the Program subject to |
||||
these terms and conditions. You may not impose any further |
||||
restrictions on the recipients' exercise of the rights granted herein. |
||||
You are not responsible for enforcing compliance by third parties to |
||||
this License. |
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent |
||||
infringement or for any other reason (not limited to patent issues), |
||||
conditions are imposed on you (whether by court order, agreement or |
||||
otherwise) that contradict the conditions of this License, they do not |
||||
excuse you from the conditions of this License. If you cannot |
||||
distribute so as to satisfy simultaneously your obligations under this |
||||
License and any other pertinent obligations, then as a consequence you |
||||
may not distribute the Program at all. For example, if a patent |
||||
license would not permit royalty-free redistribution of the Program by |
||||
all those who receive copies directly or indirectly through you, then |
||||
the only way you could satisfy both it and this License would be to |
||||
refrain entirely from distribution of the Program. |
||||
|
||||
If any portion of this section is held invalid or unenforceable under |
||||
any particular circumstance, the balance of the section is intended to |
||||
apply and the section as a whole is intended to apply in other |
||||
circumstances. |
||||
|
||||
It is not the purpose of this section to induce you to infringe any |
||||
patents or other property right claims or to contest validity of any |
||||
such claims; this section has the sole purpose of protecting the |
||||
integrity of the free software distribution system, which is |
||||
implemented by public license practices. Many people have made |
||||
generous contributions to the wide range of software distributed |
||||
through that system in reliance on consistent application of that |
||||
system; it is up to the author/donor to decide if he or she is willing |
||||
to distribute software through any other system and a licensee cannot |
||||
impose that choice. |
||||
|
||||
This section is intended to make thoroughly clear what is believed to |
||||
be a consequence of the rest of this License. |
||||
|
||||
8. If the distribution and/or use of the Program is restricted in |
||||
certain countries either by patents or by copyrighted interfaces, the |
||||
original copyright holder who places the Program under this License |
||||
may add an explicit geographical distribution limitation excluding |
||||
those countries, so that distribution is permitted only in or among |
||||
countries not thus excluded. In such case, this License incorporates |
||||
the limitation as if written in the body of this License. |
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions |
||||
of the General Public License from time to time. Such new versions will |
||||
be similar in spirit to the present version, but may differ in detail to |
||||
address new problems or concerns. |
||||
|
||||
Each version is given a distinguishing version number. If the Program |
||||
specifies a version number of this License which applies to it and "any |
||||
later version", you have the option of following the terms and conditions |
||||
either of that version or of any later version published by the Free |
||||
Software Foundation. If the Program does not specify a version number of |
||||
this License, you may choose any version ever published by the Free Software |
||||
Foundation. |
||||
|
||||
10. If you wish to incorporate parts of the Program into other free |
||||
programs whose distribution conditions are different, write to the author |
||||
to ask for permission. For software which is copyrighted by the Free |
||||
Software Foundation, write to the Free Software Foundation; we sometimes |
||||
make exceptions for this. Our decision will be guided by the two goals |
||||
of preserving the free status of all derivatives of our free software and |
||||
of promoting the sharing and reuse of software generally. |
||||
|
||||
NO WARRANTY |
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
||||
REPAIR OR CORRECTION. |
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGES. |
||||
|
||||
END OF TERMS AND CONDITIONS |
||||
@ -0,0 +1,103 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
||||
"http://www.w3.org/TR/html4/loose.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||
<head> |
||||
<title>Image Map Editor</title> |
||||
<!--[if gte IE 6]> |
||||
<script type="text/javascript" src="jscripts/excanvas.js"></script> |
||||
<![endif]--> |
||||
<script type="text/javascript" src="jscripts/imgmap.js?"></script> |
||||
<script type="text/javascript" src="jscripts/functions.js?"></script> |
||||
<link rel="stylesheet" href="css/imgmap.css" type="text/css"/> |
||||
<meta http-equiv="imagetoolbar" content="no"/> |
||||
|
||||
</head> |
||||
<body> |
||||
|
||||
<form id="img_area_form"> |
||||
<fieldset> |
||||
<legend> |
||||
<a onclick="toggleFieldset(this.parentNode.parentNode)" fckLang="imgmapMap">Map</a> |
||||
</legend> |
||||
<div style="float: left"> |
||||
<label for="MapName" fckLang="imgmapMapName">Map name</label> |
||||
<input type="text" id="MapName" value="" size="30" onchange="myimgmap.mapname = this.value"/> |
||||
</div> |
||||
|
||||
<div style="float: right"> |
||||
<input type="button" id="remove" name="remove" fckLang="imgmapBtnRemove" value="Remove Map" onclick="removeMap();" class="Button" /> |
||||
</div> |
||||
</fieldset> |
||||
|
||||
<fieldset> |
||||
<legend> |
||||
<a onclick="toggleFieldset(this.parentNode.parentNode)" fckLang="imgmapMapAreas">Image Map Areas</a> |
||||
</legend> |
||||
|
||||
<div> |
||||
<div id="button_container" style="float: left;"> |
||||
<!-- buttons come here --> |
||||
<a href="javascript:setMode('pointer')"><img src="images/pointer.png" alt="Pointer" id="imgpointer"></a> |
||||
<a href="javascript:setMode('rectangle')"><img src="images/rect.png" alt="Rectangle" id="imgrectangle"></a> |
||||
<a href="javascript:setMode('circle')"><img src="images/circle.png" alt="Circle" id="imgcircle"></a> |
||||
<a href="javascript:setMode('polygon')"><img src="images/poly.png" alt="Polygon" id="imgpolygon"></a> |
||||
</div> |
||||
<div style="float: right; margin: 0 5px"> |
||||
<select onchange="changelabeling(this)"> |
||||
<option value='' fckLang="imgmapNoLabel">No labeling</option> |
||||
<option value='%n' selected='selected' fckLang="imgmapLabelNumber">Label with numbers</option> |
||||
<option value='%a' fckLang="imgmapLabelAlt">Label with alt text</option> |
||||
<option value='%h' fckLang="imgmapLabelHref">Label with href</option> |
||||
<option value='%t' fckLang="imgmapLabelTitle">Label with title</option> |
||||
<option value='%c' fckLang="imgmapLabelCoords">Label with coords</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
|
||||
<div id="properties" style="visibility:hidden;"> |
||||
<table cellspacing="0" cellpadding="0" border="0"> |
||||
<tr> |
||||
<td width="100%"> |
||||
<label for="txtUrl" fcklang="DlgImgURL">URL</label><br> |
||||
<input id="txtUrl" style="width: 100%" type="text" onchange="SetUrl(this.value)" /> |
||||
</td> |
||||
<td id="tdBrowse" nowrap="nowrap"> |
||||
<br> |
||||
<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" style="display:none"/> |
||||
</td> |
||||
<td><label for="cmbTarget" fckLang="DlgLnkTarget">Target</label><br> |
||||
<select id="cmbTarget" onchange="SetTarget(this.value);"> |
||||
<option value="" fckLang="DlgGenNotSet" selected="selected"><not set></option> |
||||
<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option> |
||||
<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option> |
||||
<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option> |
||||
</select> |
||||
</tr> |
||||
<tr> |
||||
<td colspan="2"> |
||||
<label for="txtAlt" fcklang="DlgImgAlt">Short Description</label><br /> |
||||
<input id="txtAlt" style="width: 100%" type="text" onchange="SetAlt(this.value)" /> |
||||
</td> |
||||
<td> |
||||
<label for="txtAttTitle" fckLang="DlgGenTitle">Advisory Title</label><br /> |
||||
<input id="txtAttTitle" type="text" onchange="SetTitle(this.value)" /> |
||||
</td> |
||||
</tr> |
||||
|
||||
</table> |
||||
</div> |
||||
|
||||
<div id="status_container"></div> |
||||
</fieldset> |
||||
|
||||
<fieldset> |
||||
<legend> |
||||
<a onclick="toggleFieldset(this.parentNode.parentNode)" fckLang="DlgImgPreview">Preview</a> |
||||
</legend> |
||||
<div id="pic_container"> |
||||
</div> |
||||
</fieldset> |
||||
|
||||
</form> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,11 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
||||
"http://www.w3.org/TR/html4/loose.dtd"> |
||||
<html> |
||||
<head> |
||||
<title>imgmap plugin index</title> |
||||
<META http-equiv="refresh" content="0;URL=docs/install.html"> |
||||
</head> |
||||
<body> |
||||
<p>You should have been redirected <a href="docs/install.html">to the documentation</a></p> |
||||
</body> |
||||
</html> |
||||