//var xmlformshost='http://sofd60188046a.dhcp.sofl.sap.corp:59300'; var xmlformshost=''; var xmlformsbrowsers_url = xmlformshost + '/irj/servlet/prt/portal/prtroot/com.sap.km.cm.xmlformsbrowser'; var usePortalStyleStr = "true"; var xfdiv='&'; // SEE // function htmlb_hed_link_apply(sId, linkText, linkURL, launchMode, insertMode,editorId){ // direct call function insertLinkToParentHtmlComponent(textForField, linkStyleClass) { km_debug_full( 'insertLinkToParentHtmlComponent() start' ); if (textForField != null && editRange != null && editRange.execCommand ) { var paramsArray = textForField.split(";"); var varURLTmp = "/irj/go/km/docs"+paramsArray[4]; var varURL = escapeApostrophe( varURLTmp, "'", "\\'" ); var endPosition = paramsArray[2].indexOf ("htmlbeditor"); // BUG? iframe, TODO check var id = paramsArray[2].substring(0,endPosition); var linkDisplayName = paramsArray[5]; // when there is no selected text, the link is displayed as the resource's display name (generated by XMLFormsNavigation.java) if (editRange.text == ""){ sEditorId = id+"HtmlbEditorIframe"; htmlb_hed_link_select(null, linkDisplayName, varURL, "_blank", true, sEditorId); save(id); return; } editRange.execCommand("createlink", false, varURL); if( (editRange.parentElement() != null) && (editRange.parentElement().tagName == "A" || editRange.parentElement().tagName == "a") ){ editRange.parentElement().setAttribute( 'target', '_blank' ); } save(id); if( linkStyleClass != null && ( editRange.parentElement().tagName == "A" || editRange.parentElement().tagName == "a" ) ){ // the portal style is "urLnk urVt1" editRange.parentElement().className = linkStyleClass; } else { } document.getElementById(id+"htmlbeditor").focus(); // BUG? iframe, TODO check } else { var paramsArray = textForField.split(";"); var varURLTmp = "/irj/go/km/docs" + paramsArray[4]; var varURL = escapeApostrophe(varURLTmp, "'", "\\'"); km_debug_full( 'varURL = ' + varURL ); var endPosition = paramsArray[2].indexOf ("htmlbeditor"); // BUG? iframe, TODO check var id = paramsArray[2].substring(0,endPosition); var textEditorId = id+"HtmlbEditorIframe"; var cWin = getHtmlEditorWindow( id ); var us = cWin.getSelection(); // var range = us.createRange(); var newHtml = "" + us + "//" + varURLTmp + ""; if( !us.isCollapsed ) { var range = us.getRangeAt(0); // var linkTag = document.createElement("a"); // linkTag.href = varURLTmp; // linkTag.className = 'urLnk urVt1'; // linkTag.target = '_blank'; try { // range.surroundContents( linkTag/*.cloneNode(false) */); htmlb_hed_link_select( id, us, varURL, "", "true", textEditorId ); } catch( e ){ try{ var ex_joro = e; // this is to remember to set the exception name :) var errorString = ex_joro.name + ' ' + ex_joro.message + ', fileName = ' + ex_joro.fileName + ', lineNumber = ' + ex_joro.lineNumber + ", stack: " + ex_joro.stack + ",\n\n all: " + ex_joro ; // this is used when you do javascript debugging alert( errorString ); } catch ( exception_666 ){ alert( "exception while trying to alert exception " + exception_666 ); } } } // cWin.document.execCommand( 'insertHTML', false, newHtml ); } km_debug_full( 'insertLinkToParentHtmlComponent() end' ); } function openChildBrowserInsertLink( inputField, querystring, valueParameter, width, height ) { km_debug( 'openChildBrowserInsertLink' ); if ( !isSelectedText(inputField)) { km_debug( 'no text is selected' ); //return; } var tmpVP=(valueParameter != null)?(xfdiv+valueParameter+'='+""):''; tmpVP = tmpVP + xfdiv + 'fieldId='+inputField + "htmlbeditor"; tmpVP = tmpVP + xfdiv + 'isLink='+"true"; tmpVP = tmpVP + xfdiv + 'usePortalStyle='+ usePortalStyleStr; if ( !isSelectedText(inputField)) { tmpVP = tmpVP + xfdiv + 'returnDisplayName='+"true"; } childWindow=open( xmlformsbrowsers_url+querystring+tmpVP,'WinBrowserControl','resizable=yes,width='+width+',height='+height ); childWindow.focus(); if (childWindow.opener==null) childWindow.opener=self; } function getHtmlEditorSelection( inputField ){ var editorDocument = getHtmlEditorDocument( inputField ); if( !editorDocument ){ km_debug( 'getHtmlEditorSelection: Can not get editorDocument' ); return; } if( editorDocument && editorDocument.selection && editorDocument.selection.createRange && editorDocument.selection.createRange().htmlText ){ // Internet Explorer return editorDocument.selection.createRange().htmlText; } if( editorDocument && editorDocument.getSelection ){ var selectionObject = getHtmlEditorWindow(inputField).getSelection(); // km_debug_full( "editorDocument.getSelection() 1 = " + selectionObject ); // km_debug_full( "editorDocument.getSelection() 2 = " + selectionObject.getRangeAt(0) ); return editorDocument.getSelection(); } km_debug( "getHtmlEditorSelection: browser unsupported for getting browser selection" ); } function getHtmlEditorDocument( inputField ){ var editor; // try to get as in new HTMLB editor editor = document.getElementById(inputField + "HtmlbEditorIframe"); if( editor && editor.contentWindow && editor.contentWindow.document ) return editor.contentWindow.document; // try to get as in old HTMLB editor editor = document.getElementById(inputField + "htmlbeditor"); if( editor && editor.document ) return editor.document; km_debug( "cant get editor's document, getHtmlEditorDocument("+inputField+") = null" ); return null; } function getHtmlEditorWindow( inputField ){ var editor; // try to get as in new HTMLB editor editor = document.getElementById(inputField + "HtmlbEditorIframe"); if( editor && editor.contentWindow ) return editor.contentWindow; // try to get as in old HTMLB editor return document.window; } function isSelectedText (inputField) { if(inputField != null) { var textAreaSelectedValue; textAreaSelectedValue = getHtmlEditorSelection( inputField ); if (textAreaSelectedValue != null) { if(textAreaSelectedValue.length > 0) { return true; } else { km_debug( "textAreaSelectedValue.length == 0;" ); return false; } } else { km_debug( 'can get element with id=' + inputField + ", but can NOT with id=" + inputField + "htmlbeditor" ); } } else { km_debug( 'inputField == null, no element with id=' + inputField + " found" ); } } function openChildBrowserInsertImage( inputField, querystring, valueParameter, width, height ) { // km_debug( 'openChildBrowserInsertImage start' ); var tmpVP=(valueParameter != null)?('&'+valueParameter+'='+""):''; tmpVP = tmpVP + xfdiv + 'fieldId='+inputField + "htmlbeditor"; tmpVP = tmpVP + xfdiv + 'isLink='+"false"; childWindow=open( xmlformsbrowsers_url+querystring+tmpVP,'WinBrowserControl','resizable=yes,width='+width+',height='+height ); childWindow.focus(); if (childWindow.opener==null) childWindow.opener=self; // km_debug( 'openChildBrowserInsertImage end' ); } function insertImageToParentHtmlComponent(textForField) { km_debug( 'insertImageToParentHtmlComponent() start' ); if(textForField != null && editRange != null) { var paramsArray = textForField.split(";"); editRange.execCommand("insertImage", false, "/irj/go/km/docs"+paramsArray[4]); var endPosition = paramsArray[2].indexOf ("htmlbeditor"); var id = paramsArray[2].substring(0,endPosition); save(id); document.getElementById(id+"htmlbeditor").focus(); } else { if( km_debug ){ if( textForField == null ){ km_debug( 'textForField == null' ); } else { if( editRange == null ){ km_debug( 'editRange == null' ); } else { km_debug( 'unknown fdgwrt' ); } } } } km_debug( 'insertImageToParentHtmlComponent() end' ); } function escapeApostrophe(strToReplace, oldString, newString){ var result=""; var startIdx = 0; var idxOld = 0; while ((idxOld = strToReplace.indexOf(oldString, startIdx)) >= 0) { result = result+ strToReplace.substring(startIdx, idxOld); result = result+newString; startIdx = idxOld + oldString.length; } result=result + strToReplace.substring(startIdx); return result; }