blob: 678e46337738bf4bf568cdf5e2a663c31f83f813 [file] [log] [blame]
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.Editor2Plugin.CreateLinkDialog");
dojo.widget.defineWidget(
"dojo.widget.Editor2CreateLinkDialog",
dojo.widget.Editor2DialogContent,
{
templatePath: dojo.uri.dojoUri("src/widget/templates/Editor2/Dialog/createlink.html"),
editableAttributes: ['href', 'target', 'class'],
loadContent: function(){
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
curInst.saveSelection(); //save selection (none-activeX IE)
this.linkNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ['a']);
var linkAttributes = {};
this.extraAttribText = "";
if(this.linkNode){
var attrs = this.linkNode.attributes;
for(var i=0; i<attrs.length; i++) {
if(dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase())>-1){
linkAttributes[attrs[i].name] = attrs[i].value;
}else{
//IE lists all attributes, even default ones, filter them
if(attrs[i].specified == undefined || attrs[i].specified){
this.extraAttribText += attrs[i].name + '="'+attrs[i].value+'" ';
}
}
}
}else{
var html = dojo.withGlobal(curInst.window, "getSelectedText", dojo.html.selection);
if(html == null || html.length == 0){
alert("Please select some text to create a link.");
return false;//do not show the dialog
}
}
for(var i=0; i<this.editableAttributes.length; ++i){
name = this.editableAttributes[i];
this["link_"+name].value = (linkAttributes[name] == undefined) ? "" : linkAttributes[name] ;
}
return true;
},
ok: function(){
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
curInst.restoreSelection(); //restore previous selection, required for none-activeX IE
if(!this.linkNode){
var html = dojo.withGlobal(curInst.window, "getSelectedHtml", dojo.html.selection);
}else{
var html = this.linkNode.innerHTML;
dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.linkNode]);
}
var attstr='';
for(var i=0; i<this.editableAttributes.length; ++i){
name = this.editableAttributes[i];
var value = this["link_"+name].value;
if(value.length > 0){
attstr += name + '="'+value+'" ';
}
}
curInst.execCommand('inserthtml', '<a '+attstr+this.extraAttribText+'>'+html+'</a>');
this.cancel();
}
});