//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;
}