Index: branches/5.2.x/core/editor/editor/plugins/MyLink/fck_link.js =================================================================== diff -u -N --- branches/5.2.x/core/editor/editor/plugins/MyLink/fck_link.js (revision 14244) +++ branches/5.2.x/core/editor/editor/plugins/MyLink/fck_link.js (revision 0) @@ -1,1022 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2008 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Scripts related to the Link dialog window (see fck_link.html). - */ - -var dialog = window.parent ; -var oEditor = dialog.InnerDialogLoaded() ; - -var FCK = oEditor.FCK ; -var FCKLang = oEditor.FCKLang ; -var FCKConfig = oEditor.FCKConfig ; -var FCKRegexLib = oEditor.FCKRegexLib ; -var FCKTools = oEditor.FCKTools ; -var CurrentTPLAnchors = false; -var anchor_ = ''; -var ServerPath = ''; -var links_path = new Array(); -var first_real_url = ''; -//#### Dialog Tabs -// Set the dialog tabs. -/*dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ; - -if ( !FCKConfig.LinkDlgHideTarget ) - dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, ) ; - -if ( FCKConfig.LinkUpload ) - dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, ) ; - -if ( !FCKConfig.LinkDlgHideAdvanced ) - dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag, false ) ; -*/ -// Function called when a dialog tag is selected. -function OnDialogTabChange( tabCode ) -{ - if (tabCode == 'Info') { - updateDataArray(); - window.location.href = '../editor/plugins/MyImage/fck_image.html?from'; - } - - dialog.SetAutoSize( true ) ; -} - - - -function updateDataArray() -{ - - if (!window.parent.parentData) { - window.parent.parentData = new Array(); - } - window.parent.parentData['linkTxtUrl'] = BuildUrlByType(); - if (window.parent.parentData['linkTxtUrl'].length > 2) { - if (GetE('txtAlt')) { - window.parent.parentData['linkTxtAlt'] = GetE('txtAlt').value; - window.parent.parentData['linkTxtTitle'] = GetE('txtAlt').value; - } - window.parent.parentData['linkCmbTarget'] = GetE('cmbTarget').value; - window.parent.parentData['linkType'] = GetE('cmbLinkType').value; - window.location.href='dialog/fck_image.html?from'; - } -} - - -//#### Regular Expressions library. -var oRegex = new Object() ; - -oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ; - -oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ; - -oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ; - -oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ; - -oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ; - -// Accessible popups -oRegex.OnClickPopup = /^\s*on[cC]lick="\s*FCKOpenPopUp\(\s*this\s*,\s*event\s*,\s*[0-9]+\s*,\s*[0-9]+\s*\);"$/ ; -//oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ; -//oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ; -oRegex.PopupFeatures = /,[0-9]+,/gi ; - -//#### Parser Functions - -var oParser = new Object() ; - -oParser.ParseEMailUrl = function( emailUrl ) -{ - // Initializes the EMailInfo object. - var oEMailInfo = new Object() ; - oEMailInfo.Address = '' ; - oEMailInfo.Subject = '' ; - oEMailInfo.Body = '' ; - - var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ; - if ( oParts ) - { - // Set the e-mail address. - oEMailInfo.Address = oParts[1] ; - - // Look for the optional e-mail parameters. - if ( oParts[2] ) - { - var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ; - if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ; - - oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ; - if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ; - } - } - - return oEMailInfo ; -} - -oParser.CreateEMailUri = function( address, subject, body ) -{ - var sBaseUri = 'mailto:' + address ; - - var sParams = '' ; - - if ( subject.length > 0 ) - sParams = '?subject=' + encodeURIComponent( subject ) ; - - if ( body.length > 0 ) - { - sParams += ( sParams.length == 0 ? '?' : '&' ) ; - sParams += 'body=' + encodeURIComponent( body ) ; - } - - return sBaseUri + sParams ; -} - -//#### Initialization Code - -// oLink: The actual selected link in the editor. -var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ; -if ( oLink ) - FCK.Selection.SelectNode( oLink ) ; - -window.onload = function() -{ - // Translate the dialog box texts. - oEditor.FCKLanguageManager.TranslatePage(document) ; - - // Fill the Anchor Names and Ids combos. - // - - // Load the selected link information (if any). - LoadSelection() ; - //LoadAnchorNamesAndIds(1,first_real_url); - - // Update the dialog box. - //SetLinkType( GetE('cmbLinkType').value ) ; - - // Show/Hide the "Browse Server" button. - //GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; - - // Show the initial dialog content. - GetE('divInfo').style.display = '' ; - - // Set the actual uploader URL. -/* if ( FCKConfig.LinkUpload ) - GetE('frmUpload').action = FCKConfig.LinkUploadURL ; -*/ - // Set the default target (from configuration). - SetDefaultTarget() ; - - // Activate the "OK" button. - dialog.SetOkButton( true ) ; - - // Select the first field. - switch( GetE('cmbLinkType').value ) - { - case 'external' : - case 'url' : - SelectField( 'txtUrl' ) ; - break ; - case 'Doc' : - SelectField( 'fileUrl' ) ; - break ; - case 'email' : - SelectField( 'txtEMailAddress' ) ; - break ; - case 'anchor' : - if ( GetE('divSelAnchor').style.display != 'none' ) - SelectField( 'cmbAnchorName' ) ; - else - SelectField( 'cmbLinkType' ) ; - } - dialog.SetAutoSize( true ); -} - -function MyPause() -{ - return; -} - -var bHasAnchors ; - -function UpdateAnchorNamesAndIds(load_url) -{ - new_url = window.frames["frmInternal"].document.location.href; - if (new_url.match(/fckblank.html/)) { - return; - } - var count_real_anchors = 0; - var aAnchors = window.frames["frmInternal"].document.anchors ; - if (aAnchors) { - for ( var i = 0 ; i < aAnchors.length ; i++ ) - { - var sName = aAnchors[i].name ; - if ( sName && sName.length > 0 ) { - count_real_anchors++; - var AddAnchor = true; - for ( var j = GetE('cmbAnchorName').options.length - 1 ; j >= 0 ; j-- ) - { - count_real_anchors++; - //alert(GetE('cmbAnchorName').options[j].value + ' == ' + aAnchors[i].name); - if (GetE('cmbAnchorName').options[j].value == aAnchors[i].name) - { - AddAnchor = false; - } - } - if (AddAnchor) { - FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ; - } - } - } - } - if (count_real_anchors > 0) - { - bHasAnchors = true; - for ( var i = 0 ; i < GetE('cmbAnchorName').length ; i++ ) - { - if (anchor_ == GetE('cmbAnchorName').options[i].value) - GetE('cmbAnchorName').options[i].selected=1; - } - - - - } else { - bHasAnchors = false ; - } - ShowE( 'divSelAnchor' , bHasAnchors ) ; - ShowE( 'divNoAnchor' , !bHasAnchors ) ; - -} - -function LoadAnchorNamesAndIds(local,load_url) -{ - //alert('LoadAnchorNamesAndIds ' + local + ' load_url' + load_url); - if (GetE('cmbAnchorName').options.length > 0) { - GetE('cmbAnchorName').options.length = 0; - } - var count_real_anchors = 0; -// return ; - // Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon - // to edit them. So, we must look for that images now. - if (local) { - var aAnchors = new Array() ; - var i ; - var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ; - for( i = 0 ; i < oImages.length ; i++ ) - { - if ( oImages[i].getAttribute('_fckanchor') ) - aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ; - } - - // Add also real anchors - var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ; - for( i = 0 ; i < oLinks.length ; i++ ) - { - if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) ) - aAnchors[ aAnchors.length ] = oLinks[i] ; - } - - // var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ; - - bHasAnchors = ( aAnchors.length > 0) ; - if (bHasAnchors) { - FCKTools.AddSelectOption( GetE('cmbAnchorName'), '', '' ) ; - for ( i = 0 ; i < aAnchors.length ; i++ ) - { - count_real_anchors++; - var sName = aAnchors[i].name ; - if ( sName && sName.length > 0 ) { - FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ; - } - } - } - } - if (load_url) { - window.frames["frmInternal"].document.location.href = ServerPath + load_url + GetAdmin(); - } - - - if (count_real_anchors > 0) { - bHasAnchors = true; - for ( var i = 0 ; i < GetE('cmbAnchorName').length ; i++ ) - { - if (anchor_ == GetE('cmbAnchorName').options[i].value) - GetE('cmbAnchorName').options[i].selected=1; - } - - } else { - bHasAnchors = false ; - } - ShowE( 'divSelAnchor' , bHasAnchors ) ; - ShowE( 'divNoAnchor' , !bHasAnchors ) ; -} - -function LoadSelection() -{ - if ( !oLink ) { - SetLinkType('internal'); - - return ; - } - - var sType = 'url' ; - var oPopupMatch = ''; - // Get the actual Link href. - var sHRef = oLink.getAttribute( '_fcksavedurl' ) ; - if ( sHRef == null ) - sHRef = oLink.getAttribute( 'href' , 2 ) || '' ; - - // Look for a popup javascript link. - var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; - if ( onclick ) - { - // Decode the protected string - onclick = decodeURIComponent( onclick ) ; - oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ; - var popup_data = oPopupMatch.toString(); - if( oPopupMatch ) - { - var aPopUp = new Array(); - var aPopUp = popup_data.split(","); - var width = aPopUp[2]; - var exp = '\);\"$' - var height = aPopUp[3].replace( /\);\"$/ , '' ); - GetE('txtPopupWidth').value = width; - GetE('txtPopupHeight').value = height; - GetE( 'cmbTarget' ).value = 'popup' ; -// FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ; - SetTarget( 'popup' ) ; - } - } - - // Search for the protocol. - var sProtocol = oRegex.UriProtocol.exec( sHRef ) ; - - if ( sProtocol ) - { - sProtocol = sProtocol[0].toLowerCase() ; - GetE('cmbLinkProtocol').value = sProtocol ; - - // Remove the protocol and get the remaining URL. - var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ; - - if ( sProtocol == 'mailto:' ) // It is an e-mail link. - { - sType = 'email' ; - - var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ; - GetE('txtEMailAddress').value = oEMailInfo.Address ; - GetE('txtEMailSubject').value = oEMailInfo.Subject ; - GetE('txtEMailBody').value = oEMailInfo.Body ; - } - else // It is a normal link. - { - sType = 'url' ; - GetE('txtUrl').value = sUrl ; - } - } - else // It is another type of link. - { - sType = 'url' ; - - GetE('cmbLinkProtocol').value = '' ; - GetE('txtUrl').value = sHRef ; - } - if (sType != 'email') { - if (sHRef.match(/@@[0-9]+@@/)) { - sType = 'internal' ; - } else { - - var oldsType = GetAttribute( oLink, 'label', '' ); - - id = oLink.getAttribute( 'id' , 2 ); - if (!id && !oldsType) { - sType = 'external'; - } else if (id.match(/Doc_|_[0-9]+/)) { - sType = 'Doc'; - GetE('fileUrl').value = GetE('txtUrl').value; - } else { - sType = 'external'; - } - } - } - if ( !oPopupMatch ) - { - // Get the target. - var sTarget = oLink.target ; - - if ( sTarget && sTarget.length > 0 ) - { - if ( oRegex.ReserveTarget.test( sTarget ) ) - { - sTarget = sTarget.toLowerCase() ; - GetE('cmbTarget').value = sTarget ; - } - else - GetE('cmbTarget').value = 'frame' ; - GetE('txtTargetFrame').value = sTarget ; - } - } - - // Get Advances Attributes - if (oLink.getAttribute('alt',2)) { - if(oLink.getAttribute('alt',2).length > 0) - GetE('txtAlt').value = oLink.getAttribute('alt',2) + '' ; - else - GetE('txtAlt').value = ''; - } - - GetE('txtAttId').value = oLink.id ; -// GetE('txtAlt').value = oLink.alt ; -// GetE('txtAttName').value = oLink.name ; -// GetE('cmbAttLangDir').value = oLink.dir ; -// GetE('txtAttLangCode').value = oLink.lang ; -// GetE('txtAttAccessKey').value = oLink.accessKey ; -// GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ; -// GetE('txtAttTitle').value = oLink.title ; -// GetE('txtAttContentType').value = oLink.type ; -// GetE('txtAttCharSet').value = oLink.charset ; - -/* var sClass ; - if ( oEditor.FCKBrowserInfo.IsIE ) - { - sClass = oLink.getAttribute('className',2) || '' ; - // Clean up temporary classes for internal use: - sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ; - - GetE('txtAttStyle').value = oLink.style.cssText ; - } - else - { - sClass = oLink.getAttribute('class',2) || '' ; - GetE('txtAttStyle').value = oLink.getAttribute('style',2) || '' ; - } - GetE('txtAttClasses').value = sClass ; -*/ - // Update the Link type combo. - if (sType == 'internal' && sHRef.length > 2 && sHRef.indexOf('#') > 0) { - anchor_ = sHRef.slice(sHRef.lastIndexOf('#')+1); - sHRef = sHRef.slice(0,sHRef.lastIndexOf('#')); - GetE('txtUrl').value = sHRef ; - } - - GetE('cmbLinkType').value = sType ; - SetLinkType( sType ) -} - -//#### Link type selection. -function SetLinkType( linkType ) -{ -/* - ShowE('divLinkTypeUrl' , (linkType == 'url') ) ; - ShowE('divLinkTypeAnchor' , (linkType == 'anchor') ) ; - ShowE('divLinkTypeEMail' , (linkType == 'email') ) ; -*/ - if (!linkType) { - linkType = 'internal'; - - } - ShowE('divLinkTypeInternal' , (linkType == 'internal') ) ; - ShowE('divLinkTypeExternal' , (linkType == 'external') ) ; - ShowE('divLinkTypeEMail' , (linkType == 'email') ) ; - ShowE('divLinkTypeFile' , (linkType == 'Doc') ) ; - - - - if (linkType == 'email') { - ShowE('divNoMail1',0); - ShowE('divNoMail2',0); - ShowE('divNoMail3',0); - } else { - ShowE('divNoMail1',1); - ShowE('divNoMail2',1); - ShowE('divNoMail3',1); - } - if (linkType != 'internal') { - ShowE( 'divNoAnchor', 0 ) ; - } - - - if(GetE('cmbTarget')) - { - if (GetE('cmbTarget').value == 'popup' ) { - ShowE('divPopupSize',1); - } else - ShowE('divPopupSize',0); - } else - ShowE('divPopupSize',0); - - if ( linkType == 'internal' ) { - LoadResources(); - - } - if ( linkType == 'email') - window.parent.SetAutoSize( true ) ; - - dialog.SetAutoSize(); - -} - - - - function LoadResources() { - var oXML = new FCKXml() ; - var sConnUrl = window.location.href.replace( /core.*$/, 'admin/index.php?env=-dummy:fck--OnLoadCmsTree---&admin=1' ); - //alert(sConnUrl) - oXML.LoadUrl(sConnUrl, GetCmsTreeCallBack ) ; // Asynchronous load. - } - -function show_props(obj, objName) { - var result = ""; - for (var i in obj) { - alert( objName + "." + i + " = " + obj[i] + " \n" ); - } - } - - function GetCmsTreeCallBack( fckXml ) -{ - //alert(fckXml); - var oNodes = fckXml.SelectNodes( 'CmsPages/CmsPage' ) ; - //alert(show_props(oNodes[0], 'oNodes')); - //var links_path = new Array(); - GetE('cmbImternalPagName').options[0] = new Option('', ''); - for ( var j = 0 ; j < oNodes.length ; j++ ) - { - var i = j + 1; - var sCmsPage = oNodes[j].attributes.getNamedItem('path').value ; - var sCmsId = oNodes[j].attributes.getNamedItem('st_id').value ; - - var real_url = false; - if (sCmsPage == '@@'+sCmsId+'@@') { - real_url = oNodes[j].attributes.getNamedItem('real_url').value ; - links_path[i] = real_url; - } - - var sTitle = oNodes[j].attributes.getNamedItem('title').value ; - ServerPath = oNodes[j].attributes.getNamedItem('serverpath').value; - GetE('cmbImternalPagName').options[i] = new Option(sTitle, sCmsPage); - if (GetE('txtUrl')) { - tmpUrl = GetE('txtUrl').value; - // alert(GetE('txtUrl').value + ' ' + sCmsId + ' == ' + FCKConfig.page_id); - if (tmpUrl.match(sCmsPage+'$')) { - GetE('cmbImternalPagName').options[i].selected=1; - LoadAnchorNamesAndIds(true,real_url); - //alert(sCmsId + ' == ' + FCKConfig.page_id); - //if (sCmsId == FCKConfig.page_id) { - //LoadAnchorNamesAndIds(true,real_url); - //} - //alert(tmpUrl+GetAdmin()); - //if (real_url) { - //window.frames["frmInternal"].document.location.href = real_url; - //} - //else { - //window.frames["frmInternal"].document.location.href = tmpUrl+GetAdmin(); - //} - } - } - } -} - -function GetAdmin() -{ - return '&admin=1'; -} - - -function ChangeInternalUrl(url,obj) -{ - if(url.match(/@@[0-9]+@@/) ) { - for (var i=0; i < obj.options.length; i++) { - if (obj.options[i].value == url) { - myCmsId = url.replace( /@@/gi,''); - //alert(myCmsId+' MYCMSID'); - load_url = links_path[i] + GetAdmin(); - if (myCmsId == FCKConfig.page_id) { - LoadAnchorNamesAndIds(1,load_url); - } else { - window.frames["frmInternal"].document.location.href = links_path[i] + GetAdmin(); - } - return; - } - } - } else { - window.frames["frmInternal"].document.location.href = url + GetAdmin(); - } -} - - - - -//#### Target type selection. -function SetTarget( targetType ) -{ - //GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ; - //GetE('tdPopupName').style.display = - //GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ; - - switch ( targetType ) - { - case "_blank" : - case "_self" : - case "_parent" : - case "_top" : - GetE('txtTargetFrame').value = targetType ; - break ; - case "" : - GetE('txtTargetFrame').value = '' ; - break ; - } - - if ( targetType == 'popup' ) { - ShowE('divPopupSize',1); - if (!GetE('txtPopupWidth').value) - GetE('txtPopupWidth').value = 800; - if (!GetE('txtPopupHeight').value) - GetE('txtPopupHeight').value = 600; - dialog.SetAutoSize( true ) ; - } else { - ShowE('divPopupSize',0); - } -} - -//#### Called while the user types the URL. -function OnUrlChange() -{ - var sUrl = GetE('txtUrl').value ; - var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ; - - if ( sProtocol ) - { - sUrl = sUrl.substr( sProtocol[0].length ) ; - GetE('txtUrl').value = sUrl ; - GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ; - } - else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) ) - { - GetE('cmbLinkProtocol').value = '' ; - } -} - -//#### Called while the user types the target name. -function OnTargetNameChange() -{ - //var sFrame = GetE('txtTargetFrame').value ; - - //if ( sFrame.length == 0 ) - // GetE('cmbTarget').value = '' ; - //else if ( oRegex.ReserveTarget.test( sFrame ) ) - // GetE('cmbTarget').value = sFrame.toLowerCase() ; - //else - // GetE('cmbTarget').value = 'frame' ; - if(GetE('cmbTarget')) { - if (GetE('cmbTarget').value == 'popup' ) { - ShowE('divPopupSize',1); - } else - ShowE('divPopupSize',0); - } else - ShowE('divPopupSize',0); -} - -// Accessible popups -function BuildOnClickPopup() -{ - var onclick = 'FCKOpenPopUp(this,event,'+ GetE('txtPopupWidth').value +','+ GetE('txtPopupHeight').value +');'; - return onclick; -} - -//#### Fills all Popup related fields. -function FillPopupFields( windowName, features ) -{ - alert(features+' FEATURES'); - if ( windowName ) - GetE('txtPopupName').value = windowName ; - - var oFeatures = new Object() ; - var oFeaturesMatch ; - while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null ) - { - var sValue = oFeaturesMatch[2] ; - - if ( sValue == ( 'yes' || '1' ) ) - oFeatures[ oFeaturesMatch[1] ] = true ; - else if ( ! isNaN( sValue ) && sValue != 0 ) - oFeatures[ oFeaturesMatch[1] ] = sValue ; - } - - // Update all features check boxes. - var aChkFeatures = document.getElementsByName('chkFeature') ; - for ( var i = 0 ; i < aChkFeatures.length ; i++ ) - { - if ( oFeatures[ aChkFeatures[i].value ] ) - aChkFeatures[i].checked = true ; - } - - // Update position and size text boxes. - if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ; - if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ; - if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ; - if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ; -} - -function BuildUrlByType() -{ - switch ( GetE('cmbLinkType').value ) - { - - case 'internal' : - sUri = GetE('cmbImternalPagName').value; - //sUri = GetE('cmbLinkProtocol').value + sUri ; - //alert(sUri); - //var cmbAnchorName = GetE('cmbAnchorName').value - //if (cmbAnchorName.length > 0) - // sUri = sUri+'#'+cmbAnchorName - - //if( GetE('cmbTarget').value == 'popup' ) - // sUri = BuildPopupUri( sUri ) ; - var cmbAnchorName = GetE('cmbAnchorName').value - if (cmbAnchorName.length > 0) - sUri = sUri+'#'+cmbAnchorName - break ; - - case 'external' : - case 'url' : - - sUri = GetE('txtUrl').value ; - - if ( sUri.length == 0 ) - { - alert( FCKLang.DlnLnkMsgNoUrl ) ; - return false ; - } - - sUri = GetE('cmbLinkProtocol').value + sUri; - - break ; - case 'Doc' : - sUri = GetE('fileUrl').value ; - GetE('txtUrl').value = GetE('fileUrl').value ; - if ( sUri.length == 0 ) - { - alert( FCKLang.DlnLnkMsgNoUrl ) ; - return false ; - } - - sUri = GetE('cmbLinkProtocol').value + sUri ; - break; - - - case 'email' : - sUri = GetE('txtEMailAddress').value ; - - if ( sUri.length == 0 ) - { - alert( FCKLang.DlnLnkMsgNoEMail ) ; - return false ; - } - - sUri = oParser.CreateEMailUri( - sUri, - GetE('txtEMailSubject').value, - GetE('txtEMailBody').value ) ; - break ; - - case 'anchor' : - var sAnchor = GetE('cmbAnchorName').value ; - if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ; - - if ( sAnchor.length == 0 ) - { - alert( FCKLang.DlnLnkMsgNoAnchor ) ; - return false ; - } - - sUri = '#' + sAnchor ; - break ; - } - - // If no link is selected, create a new one (it may result in more than one link creation - #220). - var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ; - - // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26) - var aHasSelection = ( aLinks.length > 0 ) ; - if ( !aHasSelection ) - { - sInnerHtml = sUri; - - // Built a better text for empty links. - switch ( GetE('cmbLinkType').value ) - { - // url: try to get path - case 'internal' : - case 'external' : - case 'url': - var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ; - var asLinkPath = oLinkPathRegEx.exec( sUri ) ; - if (asLinkPath != null) - sInnerHtml = asLinkPath[1]; // use matched path - break ; - - // mailto: try to get email address - case 'email': - sInnerHtml = GetE('txtEMailAddress').value ; - break ; - } - - // Create a new (empty) anchor. - aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ; - } - - for ( var i = 0 ; i < aLinks.length ; i++ ) - { - oLink = aLinks[i] ; - - if ( aHasSelection ) - sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL). - - oLink.href = sUri ; - SetAttribute( oLink, '_fcksavedurl', sUri ) ; - - var onclick; - // Accessible popups - if( GetE('cmbTarget').value == 'popup' ) - { - onclick = BuildOnClickPopup() ; - // Encode the attribute - onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" ) ; - SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ; - } - else - { - // Check if the previous onclick was for a popup: - // In that case remove the onclick handler. - onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; - if ( onclick ) - { - // Decode the protected string - onclick = decodeURIComponent( onclick ) ; - - if( oRegex.OnClickPopup.test( onclick ) ) - SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ; - } - } - - oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML - - // Target - if( GetE('cmbTarget').value != 'popup' ) - SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ; - else - SetAttribute( oLink, 'target', null ) ; - - // Advances Attributes - if (GetE('txtAlt')) { - SetAttribute( oLink, 'alt', GetE('txtAlt').value) ; - SetAttribute( oLink, 'title', GetE('txtAlt').value) ; - } - if ( i == 0 && GetE('cmbLinkType').value == 'Doc') { - if (GetE('txtAttId').value == '') { - GetE('txtAttId').value = 'Doc_|_' + Math.round((99977562 - 10016486) * Math.random()); - } - SetAttribute( oLink, 'id', GetE('txtAttId').value) ; - } - } - // Select the (first) link. - oEditor.FCKSelection.SelectNode( aLinks[0] ); - - return true ; - -} - - -//#### The OK button was hit. -function Ok() -{ - var sUri, sInnerHtml ; - oEditor.FCKUndo.SaveUndoStep() ; - - - if (window.location.search.substr(1) == 'from') { - // updateDataArray(); - // window.location.href = '../editor/plugins/MyImage/fck_image.html?create'; - // return ; - } - - return BuildUrlByType(); -} - -function BrowseServer() -{ - OpenFileBrowser( FCKConfig.DocumentsBrowserURL, FCKConfig.DocumentsBrowserWindowWidth, FCKConfig.DocumentsBrowserWindowHeight ) ; -} - -function SetUrl( url ) -{ - GetE('fileUrl').value = url ; - GetE('txtUrl').value = url ; - OnUrlChange() ; - //dialog.SetSelectedTab( 'Info' ) ; -} - -function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) -{ - // Remove animation - window.parent.Throbber.Hide() ; - GetE( 'divUpload' ).style.display = '' ; - - switch ( errorNumber ) - { - case 0 : // No errors - alert( 'Your file has been successfully uploaded' ) ; - break ; - case 1 : // Custom error - alert( customMsg ) ; - return ; - case 101 : // Custom warning - alert( customMsg ) ; - break ; - case 201 : - alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; - break ; - case 202 : - alert( 'Invalid file type' ) ; - return ; - case 203 : - alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; - return ; - case 500 : - alert( 'The connector is disabled' ) ; - break ; - default : - alert( 'Error on file upload. Error number: ' + errorNumber ) ; - return ; - } - - SetUrl( fileUrl ) ; - //GetE('frmUpload').reset() ; -} - -var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ; -var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ; - -function CheckUpload() -{ - var sFile = GetE('txtUploadFile').value ; - - if ( sFile.length == 0 ) - { - alert( 'Please select a file to upload' ) ; - return false ; - } - - if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || - ( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) - { - OnUploadCompleted( 202 ) ; - return false ; - } - - // Show animation - window.parent.Throbber.Show( 100 ) ; - GetE( 'divUpload' ).style.display = 'none' ; - - return true ; -} - -function SetDefaultTarget() -{ - var target = FCKConfig.DefaultLinkTarget || '' ; - - if ( oLink || target.length == 0 ) - return ; - - switch ( target ) - { - case '_blank' : - case '_self' : - case '_parent' : - case '_top' : - GetE('cmbTarget').value = target ; - break ; - default : - GetE('cmbTarget').value = 'frame' ; - break ; - } - - GetE('txtTargetFrame').value = target ; -}