Project

General

Profile

Bug #17484 » 0005994_trunk.patch

Administrator Admin, 2008-01-06 11:47

View differences:

ChangeLog (Arbeitskopie)
2007-01-06 Oliver Hader <oh@inpublica.de>
* Fixed bug #5994: IRRE - RTEhtmlarea is not show in child records if parent has no RTE
2008-01-06 Stanislas Rolland <stanislas.rolland@fructifor.ca>
* Feature/Cleanup: Acronym plugin of htmlArea RTE using new plugin API and enabled in IE7
t3lib/jsfunc.inline.js (Arbeitskopie)
prependFormFieldNames: 'data',
noTitleString: '[No title]',
lockedAjaxMethod: {},
sourcesLoaded: {},
data: {},
addToDataArray: function(object) {
......
inline.lockedAjaxMethod[method] = false;
},
processAjaxResponse: function(method, xhr) {
inline.unlockAjaxMethod(method);
var json = eval('('+xhr.responseText+')');
for (var i in json.scriptCall) eval(json.scriptCall[i]);
processAjaxResponse: function(method, xhr, json) {
var addTag=null, restart=false, processedCount=0, element=null, errorCatch=[], sourcesWaiting=[];
if (!json && xhr) {
json = eval('('+xhr.responseText+')');
}
// If there are elements the should be added to the <HEAD> tag (e.g. for RTEhtmlarea):
if (json.headData) {
var head = inline.getDomHeadTag();
var headTags = inline.getDomHeadChildren(head);
$A(json.headData).each(function(addTag) {
if (!restart) {
if (addTag && (addTag.innerHTML || !inline.searchInDomTags(headTags, addTag))) {
if (addTag.name=='SCRIPT' && addTag.innerHTML && processedCount) {
restart = true;
return false;
} else {
if (addTag.name=='SCRIPT' && addTag.innerHTML) {
try {
eval(addTag.innerHTML);
} catch(e) {
errorCatch.push(e);
}
} else {
element = inline.createNewDomElement(addTag);
// Set onload handler for external JS scripts:
if (addTag.name=='SCRIPT' && element.src) {
element.onload = inline.sourceLoadedHandler(element);
sourcesWaiting.push(element.src);
}
head.appendChild(element);
processedCount++;
}
json.headData.shift();
}
}
}
});
}
if (restart || processedCount) {
window.setTimeout(function() { inline.reprocessAjaxResponse(method, json, sourcesWaiting); }, 40);
} else {
if (method) {
inline.unlockAjaxMethod(method);
}
if (json.scriptCall && json.scriptCall.length) {
$A(json.scriptCall).each(function(value) { eval(value); });
}
}
},
// Check if dynamically added scripts are loaded and restart inline.processAjaxResponse():
reprocessAjaxResponse: function (method, json, sourcesWaiting) {
var sourcesLoaded = true;
if (sourcesWaiting && sourcesWaiting.length) {
$A(sourcesWaiting).each(function(source) {
if (!inline.sourcesLoaded[source]) {
sourcesLoaded = false;
return false;
}
});
}
if (sourcesLoaded) {
$A(sourcesWaiting).each(function(source) {
delete(inline.sourcesLoaded[source]);
});
window.setTimeout(function() { inline.processAjaxResponse(method, null, json); }, 80);
} else {
window.setTimeout(function() { inline.reprocessAjaxResponse(method, json, sourcesWaiting); }, 40);
}
},
sourceLoadedHandler: function(element) {
if (element && element.src) {
inline.sourcesLoaded[element.src] = true;
}
},
showAjaxFailure: function(method, xhr) {
inline.unlockAjaxMethod(method);
alert('Error: '+xhr.status+"\n"+xhr.statusText);
......
}
},
// Get script and link elements from head tag:
getDomHeadChildren: function(head) {
var headTags=[];
$$('head script', 'head link').each(function(tag) { headTags.push(tag); });
return headTags;
},
getDomHeadTag: function() {
if (document && document.head) {
return document.head;
} else {
var head = $$('head');
if (head.length) {
return head[0];
}
}
return false;
},
// Search whether elements exist in a given haystack:
searchInDomTags: function(haystack, needle) {
var result = false;
$A(haystack).each(function(element) {
if (element.nodeName.toUpperCase()==needle.name) {
var attributesCount = $H(needle.attributes).keys().length;
var attributesFound = 0;
$H(needle.attributes).each(function(attribute) {
if (element.getAttribute && element.getAttribute(attribute.key)==attribute.value) {
attributesFound++;
}
});
if (attributesFound==attributesCount) {
result = true;
return true;
}
}
});
return result;
},
// Create a new DOM element:
createNewDomElement: function(addTag) {
var element = document.createElement(addTag.name);
if (addTag.attributes) {
$H(addTag.attributes).each(function(attribute) {
element[attribute.key] = attribute.value;
});
}
return element;
},
changeSorting: function(objectId, direction) {
var objectName = this.prependFormFieldNames+this.parseFormElementName('parts', objectId, 3, 2);
var objectPrefix = this.parseFormElementName('full', objectId, 0, 1);
t3lib/class.t3lib_tceforms_inline.php (Arbeitskopie)
* (This index is automatically created/updated by the extension "extdeveval")
*
*/
require_once(PATH_t3lib.'class.t3lib_parsehtml.php');
class t3lib_TCEforms_inline {
/**
......
);
}
// add the JavaScript data that would have been added at the bottom of a regular TCEforms calls
// Add data that would have been added at the top of a regular TCEforms call:
if ($headTags = $this->getHeadTags()) {
$jsonArray['headData'] = $headTags;
}
// Add the JavaScript data that would have been added at the bottom of a regular TCEforms call:
$jsonArray['scriptCall'][] = $this->fObj->JSbottom($this->fObj->formName, true);
// if script.aculo.us Sortable is used, update the Observer to know the the record
if ($config['appearance']['useSortable'])
......
$margin = ($this->inlineStyles['margin-right']+1)*2;
return $margin;
}
/**
* Parses the HTML tags that would have been inserted to the <head> of a HTML document and returns the found tags as multidimensional array.
*
* @return array The parsed tags with their attributes and innerHTML parts
*/
protected function getHeadTags() {
$headTags = array();
$headDataRaw = $this->fObj->JStop();
if ($headDataRaw) {
// Create instance of the HTML parser:
$parseObj = t3lib_div::makeInstance('t3lib_parsehtml');
// Removes script wraps:
$headDataRaw = str_replace(array('/*<![CDATA[*/', '/*]]>*/'), '', $headDataRaw);
// Removes leading spaces of a multiline string:
$headDataRaw = trim(preg_replace('/(^|\r|\n)( |\t)+/', '$1', $headDataRaw));
// Get script and link tags:
$tags = array_merge(
$parseObj->getAllParts($parseObj->splitTags('link', $headDataRaw)),
$parseObj->getAllParts($parseObj->splitIntoBlock('script', $headDataRaw))
);
foreach ($tags as $tagData) {
$tagAttributes = $parseObj->get_tag_attributes($parseObj->getFirstTag($tagData), true);
$headTags[] = array(
'name' => $parseObj->getFirstTagName($tagData),
'attributes' => $tagAttributes[0],
'innerHTML' => $parseObj->removeFirstAndLastTag($tagData),
);
}
}
return $headTags;
}
}
typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php (Arbeitskopie)
}
// Loading JavaScript files and code
$this->TCEform->additionalCode_pre['loadJSfiles'] = $this->loadJSfiles($this->TCEform->RTEcounter);
$this->TCEform->additionalJS_pre['loadJScode'] = $this->loadJScode($this->TCEform->RTEcounter);
if ($this->TCEform->RTEcounter == 1) {
$this->TCEform->additionalCode_pre['loadJSfiles'] = $this->loadJSfiles($this->TCEform->RTEcounter);
$this->TCEform->additionalJS_pre['loadJScode'] = $this->loadJScode($this->TCEform->RTEcounter);
}
/* =======================================
* DRAW THE EDITOR
......
$loadJavascriptCode = '
<script type="text/javascript">
/*<![CDATA[*/
var i=1;
i=1;
while (document.getElementById("pleasewait" + i)) {
document.getElementById("pleasewait" + i).style.display = "block";
document.getElementById("editorWrap" + i).style.visibility = "hidden";
i++;
};
var RTEarea = new Array();
RTEarea = new Array();
RTEarea[0] = new Object();
RTEarea[0]["version"] = "' . $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version'] . '";
RTEarea[0]["popupwin"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/popupwin.js', "popupwin") . '";'
......
RTEarea[0]["htmlarea-ie"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea-ie.js', "htmlarea-ie") . '";')
: ('
RTEarea[0]["htmlarea-gecko"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea-gecko.js', "htmlarea-gecko") . '";')) . '
var _editor_url = "' . $this->extHttpPath . 'htmlarea";
var _editor_lang = "' . $this->language . '";
var _editor_CSS = "' . $this->editorCSS . '";
var _editor_skin = "' . dirname($this->editorCSS) . '";
var _editor_edited_content_CSS = "' . $this->editedContentCSS . '";
var _typo3_host_url = "' . $this->hostURL . '";
var _editor_debug_mode = ' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableDebugMode'] ? 'true' : 'false') . ';
var _editor_compressed_scripts = ' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts'] ? 'true' : 'false') . ';'
_editor_url = "' . $this->extHttpPath . 'htmlarea";
_editor_lang = "' . $this->language . '";
_editor_CSS = "' . $this->editorCSS . '";
_editor_skin = "' . dirname($this->editorCSS) . '";
_editor_edited_content_CSS = "' . $this->editedContentCSS . '";
_typo3_host_url = "' . $this->hostURL . '";
_editor_debug_mode = ' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableDebugMode'] ? 'true' : 'false') . ';
_editor_compressed_scripts = ' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts'] ? 'true' : 'false') . ';'
. (($this->client['BROWSER'] == 'gecko') ? ('
var _editor_mozAllowClipboard_url = "' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['mozAllowClipboardURL'] ? $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['mozAllowClipboardURL'] : '') . '";')
_editor_mozAllowClipboard_url = "' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['mozAllowClipboardURL'] ? $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['mozAllowClipboardURL'] : '') . '";')
: '') . '
var _spellChecker_lang = "' . $this->spellCheckerLanguage . '";
var _spellChecker_charset = "' . $this->spellCheckerCharset . '";
var _spellChecker_mode = "' . $this->spellCheckerMode . '";
_spellChecker_lang = "' . $this->spellCheckerLanguage . '";
_spellChecker_charset = "' . $this->spellCheckerCharset . '";
_spellChecker_mode = "' . $this->spellCheckerMode . '";
/*]]>*/
</script>';
$loadJavascriptCode .= '
(4-4/4)