JSLint
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2666 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
/*globals $, svgEditor, svgedit, svgCanvas, DOMParser*/
|
||||||
|
/*jslint vars: true, eqeq: true, es5: true, todo: true */
|
||||||
/*
|
/*
|
||||||
* ext-imagelib.js
|
* ext-imagelib.js
|
||||||
*
|
*
|
||||||
@@ -7,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
svgEditor.addExtension("imagelib", function() {
|
svgEditor.addExtension("imagelib", function() {'use strict';
|
||||||
|
|
||||||
var uiStrings = svgEditor.uiStrings;
|
var uiStrings = svgEditor.uiStrings;
|
||||||
|
|
||||||
@@ -59,50 +61,50 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
var cur_meta;
|
var cur_meta;
|
||||||
var tranfer_stopped = false;
|
var tranfer_stopped = false;
|
||||||
var pending = {};
|
var pending = {};
|
||||||
|
var preview, submit;
|
||||||
window.addEventListener("message", function(evt) {
|
|
||||||
|
window.addEventListener("message", function(evt) {
|
||||||
// Receive postMessage data
|
// Receive postMessage data
|
||||||
var response = evt.data;
|
var response = evt.data;
|
||||||
|
|
||||||
if(!response || typeof response !== "string") { // Todo: Should namespace postMessage API for this extension and filter out here
|
if (!response || typeof response !== "string") { // Todo: Should namespace postMessage API for this extension and filter out here
|
||||||
// Do nothing
|
// Do nothing
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try { // This block can be removed if embedAPI moves away from a string to an object (if IE9 support not needed)
|
try { // This block can be removed if embedAPI moves away from a string to an object (if IE9 support not needed)
|
||||||
var res = JSON.parse(response);
|
var res = JSON.parse(response);
|
||||||
if (res.namespace) { // Part of embedAPI communications
|
if (res.namespace) { // Part of embedAPI communications
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {}
|
catch (e) {}
|
||||||
|
|
||||||
var char1 = response.charAt(0);
|
var char1 = response.charAt(0);
|
||||||
|
var id;
|
||||||
var svg_str;
|
var svg_str;
|
||||||
var img_str;
|
var img_str;
|
||||||
|
|
||||||
if(char1 != "{" && tranfer_stopped) {
|
if (char1 != "{" && tranfer_stopped) {
|
||||||
tranfer_stopped = false;
|
tranfer_stopped = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(char1 == '|') {
|
if (char1 == '|') {
|
||||||
var secondpos = response.indexOf('|', 1);
|
var secondpos = response.indexOf('|', 1);
|
||||||
var id = response.substr(1, secondpos-1);
|
id = response.substr(1, secondpos-1);
|
||||||
response = response.substr(secondpos+1);
|
response = response.substr(secondpos+1);
|
||||||
char1 = response.charAt(0);
|
char1 = response.charAt(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Hide possible transfer dialog box
|
// Hide possible transfer dialog box
|
||||||
$('#dialog_box').hide();
|
$('#dialog_box').hide();
|
||||||
|
var entry, cur_meta;
|
||||||
switch (char1) {
|
switch (char1) {
|
||||||
case '{':
|
case '{':
|
||||||
// Metadata
|
// Metadata
|
||||||
tranfer_stopped = false;
|
tranfer_stopped = false;
|
||||||
var cur_meta = JSON.parse(response);
|
cur_meta = JSON.parse(response);
|
||||||
|
|
||||||
pending[cur_meta.id] = cur_meta;
|
pending[cur_meta.id] = cur_meta;
|
||||||
|
|
||||||
@@ -110,7 +112,7 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
|
|
||||||
var message = uiStrings.notification.retrieving.replace('%s', name);
|
var message = uiStrings.notification.retrieving.replace('%s', name);
|
||||||
|
|
||||||
if(mode != 'm') {
|
if (mode != 'm') {
|
||||||
$.process_cancel(message, function() {
|
$.process_cancel(message, function() {
|
||||||
tranfer_stopped = true;
|
tranfer_stopped = true;
|
||||||
// Should a message be sent back to the frame?
|
// Should a message be sent back to the frame?
|
||||||
@@ -118,7 +120,7 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
$('#dialog_box').hide();
|
$('#dialog_box').hide();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
var entry = $('<div>' + message + '</div>').data('id', cur_meta.id);
|
entry = $('<div>' + message + '</div>').data('id', cur_meta.id);
|
||||||
preview.append(entry);
|
preview.append(entry);
|
||||||
cur_meta.entry = entry;
|
cur_meta.entry = entry;
|
||||||
}
|
}
|
||||||
@@ -128,46 +130,46 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
svg_str = true;
|
svg_str = true;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
if(response.indexOf('data:image/svg+xml') === 0) {
|
if (response.indexOf('data:image/svg+xml') === 0) {
|
||||||
var pre = 'data:image/svg+xml;base64,';
|
var pre = 'data:image/svg+xml;base64,';
|
||||||
var src = response.substring(pre.length);
|
var src = response.substring(pre.length);
|
||||||
response = svgedit.utilities.decode64(src);
|
response = svgedit.utilities.decode64(src);
|
||||||
svg_str = true;
|
svg_str = true;
|
||||||
break;
|
break;
|
||||||
} else if(response.indexOf('data:image/') === 0) {
|
} else if (response.indexOf('data:image/') === 0) {
|
||||||
img_str = true;
|
img_str = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Else fall through
|
// Else fall through
|
||||||
default:
|
default:
|
||||||
// TODO: See if there's a way to base64 encode the binary data stream
|
// TODO: See if there's a way to base64 encode the binary data stream
|
||||||
// var str = 'data:;base64,' + svgedit.utilities.encode64(response, true);
|
// var str = 'data:;base64,' + svgedit.utilities.encode64(response, true);
|
||||||
|
|
||||||
// Assume it's raw image data
|
// Assume it's raw image data
|
||||||
// importImage(str);
|
// importImage(str);
|
||||||
|
|
||||||
// Don't give warning as postMessage may have been used by something else
|
// Don't give warning as postMessage may have been used by something else
|
||||||
if(mode !== 'm') {
|
if (mode !== 'm') {
|
||||||
closeBrowser();
|
closeBrowser();
|
||||||
} else {
|
} else {
|
||||||
pending[id].entry.remove();
|
pending[id].entry.remove();
|
||||||
}
|
}
|
||||||
// $.alert('Unexpected data was returned: ' + response, function() {
|
// $.alert('Unexpected data was returned: ' + response, function() {
|
||||||
// if(mode !== 'm') {
|
// if (mode !== 'm') {
|
||||||
// closeBrowser();
|
// closeBrowser();
|
||||||
// } else {
|
// } else {
|
||||||
// pending[id].entry.remove();
|
// pending[id].entry.remove();
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 's':
|
case 's':
|
||||||
// Import one
|
// Import one
|
||||||
if(svg_str) {
|
if (svg_str) {
|
||||||
svgCanvas.importSvgString(response);
|
svgCanvas.importSvgString(response);
|
||||||
} else if(img_str) {
|
} else if (img_str) {
|
||||||
importImage(response);
|
importImage(response);
|
||||||
}
|
}
|
||||||
closeBrowser();
|
closeBrowser();
|
||||||
@@ -175,19 +177,20 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
case 'm':
|
case 'm':
|
||||||
// Import multiple
|
// Import multiple
|
||||||
multi_arr.push([(svg_str ? 'svg' : 'img'), response]);
|
multi_arr.push([(svg_str ? 'svg' : 'img'), response]);
|
||||||
var cur_meta = pending[id];
|
var title;
|
||||||
if(svg_str) {
|
cur_meta = pending[id];
|
||||||
if(cur_meta && cur_meta.name) {
|
if (svg_str) {
|
||||||
var title = cur_meta.name;
|
if (cur_meta && cur_meta.name) {
|
||||||
} else {
|
title = cur_meta.name;
|
||||||
|
} else {
|
||||||
// Try to find a title
|
// Try to find a title
|
||||||
var xml = new DOMParser().parseFromString(response, 'text/xml').documentElement;
|
var xml = new DOMParser().parseFromString(response, 'text/xml').documentElement;
|
||||||
var title = $(xml).children('title').first().text() || '(SVG #' + response.length + ')';
|
title = $(xml).children('title').first().text() || '(SVG #' + response.length + ')';
|
||||||
}
|
}
|
||||||
if(cur_meta) {
|
if (cur_meta) {
|
||||||
preview.children().each(function() {
|
preview.children().each(function() {
|
||||||
if($(this).data('id') == id) {
|
if ($(this).data('id') == id) {
|
||||||
if(cur_meta.preview_url) {
|
if (cur_meta.preview_url) {
|
||||||
$(this).html('<img src="' + cur_meta.preview_url + '">' + title);
|
$(this).html('<img src="' + cur_meta.preview_url + '">' + title);
|
||||||
} else {
|
} else {
|
||||||
$(this).text(title);
|
$(this).text(title);
|
||||||
@@ -200,18 +203,18 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
submit.removeAttr('disabled');
|
submit.removeAttr('disabled');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(cur_meta && cur_meta.preview_url) {
|
if (cur_meta && cur_meta.preview_url) {
|
||||||
var title = cur_meta.name || '';
|
title = cur_meta.name || '';
|
||||||
}
|
}
|
||||||
if(cur_meta && cur_meta.preview_url) {
|
if (cur_meta && cur_meta.preview_url) {
|
||||||
var entry = '<img src="' + cur_meta.preview_url + '">' + title;
|
entry = '<img src="' + cur_meta.preview_url + '">' + title;
|
||||||
} else {
|
} else {
|
||||||
var entry = '<img src="' + response + '">';
|
entry = '<img src="' + response + '">';
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cur_meta) {
|
if (cur_meta) {
|
||||||
preview.children().each(function() {
|
preview.children().each(function() {
|
||||||
if($(this).data('id') == id) {
|
if ($(this).data('id') == id) {
|
||||||
$(this).html(entry);
|
$(this).html(entry);
|
||||||
submit.removeAttr('disabled');
|
submit.removeAttr('disabled');
|
||||||
}
|
}
|
||||||
@@ -225,9 +228,9 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
// Open
|
// Open
|
||||||
if(!svg_str) break;
|
if (!svg_str) {break;}
|
||||||
svgEditor.openPrep(function(ok) {
|
svgEditor.openPrep(function(ok) {
|
||||||
if(!ok) return;
|
if (!ok) {return;}
|
||||||
svgCanvas.clear();
|
svgCanvas.clear();
|
||||||
svgCanvas.setSvgString(response);
|
svgCanvas.setSvgString(response);
|
||||||
// updateCanvas();
|
// updateCanvas();
|
||||||
@@ -236,13 +239,11 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
var preview, submit;
|
|
||||||
|
|
||||||
function toggleMulti(show) {
|
function toggleMulti(show) {
|
||||||
|
|
||||||
$('#lib_framewrap, #imglib_opts').css({right: (show ? 200 : 10)});
|
$('#lib_framewrap, #imglib_opts').css({right: (show ? 200 : 10)});
|
||||||
if(!preview) {
|
if (!preview) {
|
||||||
preview = $('<div id=imglib_preview>').css({
|
preview = $('<div id=imglib_preview>').css({
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
top: 45,
|
top: 45,
|
||||||
@@ -259,7 +260,7 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
$.each(multi_arr, function(i) {
|
$.each(multi_arr, function(i) {
|
||||||
var type = this[0];
|
var type = this[0];
|
||||||
var data = this[1];
|
var data = this[1];
|
||||||
if(type == 'svg') {
|
if (type == 'svg') {
|
||||||
svgCanvas.importSvgString(data);
|
svgCanvas.importSvgString(data);
|
||||||
} else {
|
} else {
|
||||||
importImage(data);
|
importImage(data);
|
||||||
@@ -284,7 +285,7 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
function showBrowser() {
|
function showBrowser() {
|
||||||
|
|
||||||
var browser = $('#imgbrowse');
|
var browser = $('#imgbrowse');
|
||||||
if(!browser.length) {
|
if (!browser.length) {
|
||||||
$('<div id=imgbrowse_holder><div id=imgbrowse class=toolbar_button>\
|
$('<div id=imgbrowse_holder><div id=imgbrowse class=toolbar_button>\
|
||||||
</div></div>').insertAfter('#svg_docprops');
|
</div></div>').insertAfter('#svg_docprops');
|
||||||
browser = $('#imgbrowse');
|
browser = $('#imgbrowse');
|
||||||
@@ -338,6 +339,7 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
case 'm':
|
case 'm':
|
||||||
// Import multiple
|
// Import multiple
|
||||||
toggleMulti(true);
|
toggleMulti(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}).css({
|
}).css({
|
||||||
'margin-top': 10
|
'margin-top': 10
|
||||||
@@ -453,6 +455,6 @@ svgEditor.addExtension("imagelib", function() {
|
|||||||
}\
|
}\
|
||||||
').appendTo('head');
|
').appendTo('head');
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user