Merge branch 'bzr/golem' of /Users/distler/Sites/code/instiki
This commit is contained in:
commit
da25e27263
|
@ -85,8 +85,23 @@ function setupSVGedit(path){
|
||||||
var editor = window.open(path, 'Edit SVG graphic', 'status=1,resizable=1,scrollbars=1');
|
var editor = window.open(path, 'Edit SVG graphic', 'status=1,resizable=1,scrollbars=1');
|
||||||
if (selected) {
|
if (selected) {
|
||||||
editor.addEventListener("load", function() {
|
editor.addEventListener("load", function() {
|
||||||
|
editor.svgCanvas.setCustomHandlers({
|
||||||
|
'save': function(window,svg){
|
||||||
|
window.opener.postMessage(svg, window.location.protocol + '//' + window.location.host);
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
editor.svgCanvas.setSvgString(selected);
|
editor.svgCanvas.setSvgString(selected);
|
||||||
}, true);
|
}, true);
|
||||||
|
} else {
|
||||||
|
editor.addEventListener("load", function() {
|
||||||
|
editor.svgCanvas.setCustomHandlers({
|
||||||
|
'save': function(window,svg){
|
||||||
|
window.opener.postMessage(svg, window.location.protocol + '//' + window.location.host);
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, true);
|
||||||
}
|
}
|
||||||
SVGeditButton.disabled = true;
|
SVGeditButton.disabled = true;
|
||||||
SVGeditButton.value = 'Create SVG graphic';
|
SVGeditButton.value = 'Create SVG graphic';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
body {
|
body {
|
||||||
background: #D8D8D8;
|
background: #D8D8D8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -734,6 +734,7 @@ span.zoom_tool {
|
||||||
|
|
||||||
#tool_docprops_back {
|
#tool_docprops_back {
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#svg_docprops_container #svg_docprops_docprops,
|
#svg_docprops_container #svg_docprops_docprops,
|
||||||
|
|
|
@ -312,7 +312,10 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="toolset" id="tool_font_family">
|
<div class="toolset" id="tool_font_family">
|
||||||
|
<label>
|
||||||
|
<!-- Font family -->
|
||||||
<input id="font_family" type="text" title="Change Font Family" size="12"/>
|
<input id="font_family" type="text" title="Change Font Family" size="12"/>
|
||||||
|
</label>
|
||||||
<div id="font_family_dropdown" class="dropdown">
|
<div id="font_family_dropdown" class="dropdown">
|
||||||
<button></button>
|
<button></button>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -329,7 +332,10 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
|
||||||
<span id="font_sizeLabel">size:</span>
|
<span id="font_sizeLabel">size:</span>
|
||||||
<input id="font_size" title="Change Font Size" size="3" value="0" type="text"/>
|
<input id="font_size" title="Change Font Size" size="3" value="0" type="text"/>
|
||||||
</label>
|
</label>
|
||||||
|
<label>
|
||||||
|
<!-- Text content -->
|
||||||
<input id="text" type="text" title="Change text contents" size="35"/>
|
<input id="text" type="text" title="Change text contents" size="35"/>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="path_node_panel">
|
<div id="path_node_panel">
|
||||||
|
|
|
@ -171,9 +171,9 @@ function svg_edit_setup() {
|
||||||
var strokePaint = new $.jGraduate.Paint({solidColor: "000000"}); // solid black
|
var strokePaint = new $.jGraduate.Paint({solidColor: "000000"}); // solid black
|
||||||
|
|
||||||
var saveHandler = function(window,svg) {
|
var saveHandler = function(window,svg) {
|
||||||
|
// by default, we add the XML prolog back, systems integrating SVG-edit (wikis, CMSs)
|
||||||
window.opener.postMessage(svg, window.location.protocol + '//' + window.location.host);
|
// can just provide their own custom save handler and might not want the XML prolog
|
||||||
return;
|
svg = "<?xml version='1.0'?>\n" + svg;
|
||||||
|
|
||||||
// Creates and opens an HTML page that provides a link to the SVG, a preview, and the markup.
|
// Creates and opens an HTML page that provides a link to the SVG, a preview, and the markup.
|
||||||
// Also includes warning about Mozilla bug #308590 when applicable
|
// Also includes warning about Mozilla bug #308590 when applicable
|
||||||
|
@ -1738,7 +1738,7 @@ function svg_edit_setup() {
|
||||||
'margin-top': {s: '2px', l: '4px', xl: '5px'},
|
'margin-top': {s: '2px', l: '4px', xl: '5px'},
|
||||||
'height': {s: 'auto', l: 'auto', xl: 'auto'},
|
'height': {s: 'auto', l: 'auto', xl: 'auto'},
|
||||||
'border': {s: '1px solid #555', l: 'auto', xl: 'auto'},
|
'border': {s: '1px solid #555', l: 'auto', xl: 'auto'},
|
||||||
'font-size': {s: '.9em', l: '2em', xl: '2.5em'}
|
'font-size': {s: '.9em', l: '1.2em', xl: '1.4em'}
|
||||||
},
|
},
|
||||||
"#zoom_panel": {
|
"#zoom_panel": {
|
||||||
'margin-top': {s: '3px', l: '4px', xl: '5px'}
|
'margin-top': {s: '3px', l: '4px', xl: '5px'}
|
||||||
|
@ -1758,10 +1758,12 @@ function svg_edit_setup() {
|
||||||
'line-height': {s: '18px', l: '34px', xl: '40px'},
|
'line-height': {s: '18px', l: '34px', xl: '40px'},
|
||||||
'margin-top': {s: '3px'}
|
'margin-top': {s: '3px'}
|
||||||
},
|
},
|
||||||
"div.toolset, #tools_top label, #tools_bottom label": {
|
"#tools_top label, #tools_bottom label": {
|
||||||
'font-size': {s: '1em', l: '1.5em', xl: '2em'},
|
'font-size': {s: '1em', l: '1.5em', xl: '2em'},
|
||||||
'margin-top': {s: '1px', l: '3px', xl: '5px'},
|
'height': {s: '25px', l: '42px', xl: '64px'}
|
||||||
'height': {s: '25px', l: '43px', xl: '64px'}
|
},
|
||||||
|
"div.toolset": {
|
||||||
|
'height': {s: '25px', l: '42px', xl: '64px'}
|
||||||
},
|
},
|
||||||
"#tool_bold, #tool_italic": {
|
"#tool_bold, #tool_italic": {
|
||||||
'font-size': {s: '1.5em', l: '3em', xl: '4.5em'}
|
'font-size': {s: '1.5em', l: '3em', xl: '4.5em'}
|
||||||
|
@ -2761,7 +2763,7 @@ function svg_edit_setup() {
|
||||||
updateCanvas(true);
|
updateCanvas(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
// var revnums = "svg-editor.js ($Rev: 1395 $) ";
|
// var revnums = "svg-editor.js ($Rev: 1402 $) ";
|
||||||
// revnums += svgCanvas.getVersion();
|
// revnums += svgCanvas.getVersion();
|
||||||
// $('#copyright')[0].setAttribute("title", revnums);
|
// $('#copyright')[0].setAttribute("title", revnums);
|
||||||
return svgCanvas;
|
return svgCanvas;
|
||||||
|
|
|
@ -684,7 +684,9 @@ function BatchCommand(text) {
|
||||||
'fill': '#FFF',
|
'fill': '#FFF',
|
||||||
'style': 'pointer-events:none'
|
'style': 'pointer-events:none'
|
||||||
});
|
});
|
||||||
if (!window.opera) rect.setAttribute('filter', 'url(#canvashadow)');
|
// Both Firefox and WebKit are too slow with this filter region (especially at higher
|
||||||
|
// zoom levels) and Opera has at least one bug
|
||||||
|
// if (!window.opera) rect.setAttribute('filter', 'url(#canvashadow)');
|
||||||
canvasbg.appendChild(rect);
|
canvasbg.appendChild(rect);
|
||||||
svgroot.insertBefore(canvasbg, svgcontent);
|
svgroot.insertBefore(canvasbg, svgcontent);
|
||||||
};
|
};
|
||||||
|
@ -1343,7 +1345,7 @@ function BatchCommand(text) {
|
||||||
if(attrName.indexOf('se:') == 0) {
|
if(attrName.indexOf('se:') == 0) {
|
||||||
se_attrs.push([attrName, attr.nodeValue]);
|
se_attrs.push([attrName, attr.nodeValue]);
|
||||||
}
|
}
|
||||||
node.removeAttribute(attrName);
|
node.removeAttributeNS(attrNsURI, attrLocalName);
|
||||||
}
|
}
|
||||||
// special handling for path d attribute
|
// special handling for path d attribute
|
||||||
if (node.nodeName == 'path' && attrName == 'd') {
|
if (node.nodeName == 'path' && attrName == 'd') {
|
||||||
|
@ -1528,7 +1530,7 @@ function BatchCommand(text) {
|
||||||
var i = attrs.length;
|
var i = attrs.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
attr = attrs.item(i);
|
attr = attrs.item(i);
|
||||||
var attrVal = attr.nodeValue;
|
var attrVal = toXml(attr.nodeValue);
|
||||||
// only serialize attributes we don't use internally
|
// only serialize attributes we don't use internally
|
||||||
if (attrVal != "" &&
|
if (attrVal != "" &&
|
||||||
$.inArray(attr.localName, ['width','height','xmlns','x','y','viewBox','id','overflow']) == -1)
|
$.inArray(attr.localName, ['width','height','xmlns','x','y','viewBox','id','overflow']) == -1)
|
||||||
|
@ -1542,7 +1544,7 @@ function BatchCommand(text) {
|
||||||
} else {
|
} else {
|
||||||
for (var i=attrs.length-1; i>=0; i--) {
|
for (var i=attrs.length-1; i>=0; i--) {
|
||||||
attr = attrs.item(i);
|
attr = attrs.item(i);
|
||||||
var attrVal = attr.nodeValue;
|
var attrVal = toXml(attr.nodeValue);
|
||||||
if (attr.localName == '-moz-math-font-style') continue;
|
if (attr.localName == '-moz-math-font-style') continue;
|
||||||
if (attrVal != "") {
|
if (attrVal != "") {
|
||||||
if(attrVal.indexOf('pointer-events') == 0) continue;
|
if(attrVal.indexOf('pointer-events') == 0) continue;
|
||||||
|
@ -7721,7 +7723,7 @@ function BatchCommand(text) {
|
||||||
// Function: getVersion
|
// Function: getVersion
|
||||||
// Returns a string which describes the revision number of SvgCanvas.
|
// Returns a string which describes the revision number of SvgCanvas.
|
||||||
this.getVersion = function() {
|
this.getVersion = function() {
|
||||||
return "svgcanvas.js ($Rev: 1396 $)";
|
return "svgcanvas.js ($Rev: 1404 $)";
|
||||||
};
|
};
|
||||||
|
|
||||||
this.setUiStrings = function(strs) {
|
this.setUiStrings = function(strs) {
|
||||||
|
|
|
@ -172,22 +172,50 @@
|
||||||
'</svg>');
|
'</svg>');
|
||||||
var attrVal = document.getElementById('se_test_elem').getAttributeNS("http://svg-edit.googlecode.com", "foo");
|
var attrVal = document.getElementById('se_test_elem').getAttributeNS("http://svg-edit.googlecode.com", "foo");
|
||||||
|
|
||||||
equals(true, attrVal === "bar", "Preserved namespaced attribute on import");
|
equals(attrVal === "bar", true, "Preserved namespaced attribute on import");
|
||||||
|
|
||||||
var output = svgCanvas.getSvgString();
|
var output = svgCanvas.getSvgString();
|
||||||
var has_xlink = output.indexOf('xmlns:xlink="http://www.w3.org/1999/xlink"') !== -1;
|
var has_xlink = output.indexOf('xmlns:xlink="http://www.w3.org/1999/xlink"') !== -1;
|
||||||
var has_se = output.indexOf('xmlns:se=') !== -1;
|
var has_se = output.indexOf('xmlns:se=') !== -1;
|
||||||
var has_foo = output.indexOf('xmlns:foo=') === -1;
|
var has_foo = output.indexOf('xmlns:foo=') !== -1;
|
||||||
var has_attr = output.indexOf('se:foo="bar"') !== -1;
|
var has_attr = output.indexOf('se:foo="bar"') !== -1;
|
||||||
|
|
||||||
equals(true, has_attr, "Preserved namespaced attribute on export");
|
equals(has_attr, true, "Preserved namespaced attribute on export");
|
||||||
equals(true, has_xlink, "Included xlink: xmlns");
|
equals(has_xlink, true, "Included xlink: xmlns");
|
||||||
equals(true, has_se, "Included se: xmlns");
|
equals(has_se, true, "Included se: xmlns");
|
||||||
equals(true, has_foo, "Did not include foo: xmlns");
|
equals(has_foo, false, "Did not include foo: xmlns");
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("Test import math elements inside a foreignObject", function() {
|
||||||
|
expect(4);
|
||||||
|
var set = svgCanvas.setSvgString('<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">'+
|
||||||
|
'<foreignObject id="fo" width="24" height="26" font-size="24"><math id="m" display="inline" xmlns="http://www.w3.org/1998/Math/MathML">'+
|
||||||
|
'<msub>'+
|
||||||
|
'<mi>A</mi>'+
|
||||||
|
'<mn>0</mn>'+
|
||||||
|
'</msub>'+
|
||||||
|
'</math>'+
|
||||||
|
'</foreignObject>'+
|
||||||
|
'</svg>');
|
||||||
|
var fo = document.getElementById('fo');
|
||||||
|
// we cannot use getElementById('math') because not all browsers understand MathML and do not know to use the @id attribute
|
||||||
|
// see Bug https://bugs.webkit.org/show_bug.cgi?id=35042
|
||||||
|
var math = fo.firstChild;
|
||||||
|
|
||||||
|
equals(!!math, true, "Math element exists");
|
||||||
|
equals(math.nodeName, 'math', "Math element has the proper nodeName");
|
||||||
|
equals(math.getAttribute('id'), 'm', "Math element has an id");
|
||||||
|
equals(math.namespaceURI, "http://www.w3.org/1998/Math/MathML", "Preserved MathML namespace");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Test XML entities in attribute", function() {
|
||||||
|
expect(3);
|
||||||
|
|
||||||
|
equals(svgCanvas.getPrivateMethods().toXml("<"), "<", "Escaped < properly");
|
||||||
|
equals(svgCanvas.getPrivateMethods().toXml(">"), ">", "Escaped > properly");
|
||||||
|
equals(svgCanvas.getPrivateMethods().toXml("&"), "&", "Escaped & properly");
|
||||||
|
// TODO: what about " and ' ?
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
Loading…
Reference in a new issue