Project

General

Profile

Bug #19225 » rtehtmlarea_cleanup_9185.patch

Administrator Admin, 2008-08-17 06:00

View differences:

typo3/sysext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php (copie de travail)
* @subpackage core
*/
class tx_rtehtmlarea_browse_links extends browse_links {
// Internal, static:
var $setTarget; // Target (RTE specific)
var $setClass; // Class (RTE specific)
var $setTitle; // Title (RTE specific)
var $editorNo;
var $contentTypo3Language;
var $contentTypo3Charset;
var $editorNo;
var $buttonConfig = array();
public $buttonConfig = array();
public $RTEProperties = array();
public $anchorTypes = array( 'page', 'url', 'file', 'mail', 'spec');
protected $classesAnchorDefault = array();
protected $classesAnchorDefaultTitle = array();
protected $classesAnchorDefaultTarget = array();
protected $classesAnchorJSOptions = array();
public $allowedItems;
public $allowedItems;
/**
* Constructor:
* Initializes a lot of variables, setting JavaScript functions in header etc.
......
* @return void
*/
function init() {
global $BE_USER,$BACK_PATH,$LANG,$TYPO3_CONF_VARS;
global $BACK_PATH,$LANG,$TYPO3_CONF_VARS;
$this->initVariables();
$this->initConfiguration();
$this->initHookObjects('ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php');
// Main GPvars:
$this->pointer = t3lib_div::_GP('pointer');
$this->bparams = t3lib_div::_GP('bparams');
$this->P = t3lib_div::_GP('P');
$this->RTEtsConfigParams = t3lib_div::_GP('RTEtsConfigParams');
$this->expandPage = t3lib_div::_GP('expandPage');
$this->expandFolder = t3lib_div::_GP('expandFolder');
$this->PM = t3lib_div::_GP('PM');
$this->contentTypo3Language = t3lib_div::_GP('contentTypo3Language');
$this->contentTypo3Charset = t3lib_div::_GP('contentTypo3Charset');
$this->editorNo = t3lib_div::_GP('editorNo');
// Find "mode"
$this->mode=t3lib_div::_GP('mode');
if (!$this->mode) {
$this->mode='rte';
}
// init hook objects:
$this->hookObjects = array();
if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['browseLinksHook'])) {
foreach($TYPO3_CONF_VARS['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['browseLinksHook'] as $classData) {
$processObject = &t3lib_div::getUserObj($classData);
if(!($processObject instanceof t3lib_browseLinksHook)) {
throw new UnexpectedValueException('$processObject must implement interface t3lib_browseLinksHook', 1195115652);
}
$parameters = array();
$processObject->init($this, $parameters);
$this->hookObjects[] = $processObject;
}
}
// Site URL
$this->siteURL = t3lib_div::getIndpEnv('TYPO3_SITE_URL'); // Current site url
// the script to link to
$this->thisScript = t3lib_div::getIndpEnv('SCRIPT_NAME');
// CurrentUrl - the current link url must be passed around if it exists
if ($this->mode=='wizard') {
$currentLinkParts = t3lib_div::trimExplode(' ',$this->P['currentValue']);
$this->curUrlArray = array(
'target' => $currentLinkParts[1]
);
$this->curUrlInfo=$this->parseCurUrl($this->siteURL.'?id='.$currentLinkParts[0],$this->siteURL);
} else {
$this->curUrlArray = t3lib_div::_GP('curUrl');
if ($this->curUrlArray['all']) {
$this->curUrlArray=t3lib_div::get_tag_attributes($this->curUrlArray['all']);
}
$this->curUrlInfo=$this->parseCurUrl($this->curUrlArray['href'],$this->siteURL);
}
// Determine nature of current url:
$this->act=t3lib_div::_GP('act');
if (!$this->act) {
$this->act=$this->curUrlInfo['act'];
}
// Initializing the titlevalue
// Initializing the title value
$this->setTitle = $LANG->csConvObj->conv($this->curUrlArray['title'], 'utf-8', $LANG->charSet);
// Rich Text Editor specific configuration:
$addPassOnParams='';
$classSelected = array();
if ((string)$this->mode=='rte') {
$RTEtsConfigParts = explode(':',$this->RTEtsConfigParams);
$addPassOnParams .= '&RTEtsConfigParams='.rawurlencode($this->RTEtsConfigParams);
$addPassOnParams .= ($this->contentTypo3Language ? '&typo3ContentLanguage=' . rawurlencode($this->contentTypo3Language) : '');
$addPassOnParams .= ($this->contentTypo3Charset ? '&typo3ContentCharset=' . rawurlencode($this->contentTypo3Charset) : '');
$RTEsetup = $BE_USER->getTSConfig('RTE',t3lib_BEfunc::getPagesTSconfig($RTEtsConfigParts[5]));
$this->thisConfig = t3lib_BEfunc::RTEsetup($RTEsetup['properties'],$RTEtsConfigParts[0],$RTEtsConfigParts[2],$RTEtsConfigParts[4]);
if (is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['link.'])) {
$this->buttonConfig = $this->thisConfig['buttons.']['link.'];
$addPassOnParams .= '&RTEtsConfigParams='.rawurlencode($this->RTEtsConfigParams);
$addPassOnParams .= ($this->contentTypo3Language ? '&contentTypo3Language=' . rawurlencode($this->contentTypo3Language) : '');
$addPassOnParams .= ($this->contentTypo3Charset ? '&contentTypo3Charset=' . rawurlencode($this->contentTypo3Charset) : '');
if ($this->thisConfig['classesAnchor'] || $this->thisConfig['classesLinks']) {
$this->setClass = $this->curUrlArray['class'];
if ($this->thisConfig['classesAnchor']) {
$classesAnchorArray = t3lib_div::trimExplode(',',$this->thisConfig['classesAnchor'], 1);
} else {
$classesAnchorArray = t3lib_div::trimExplode(',',$this->thisConfig['classesLinks'], 1);
}
if ($this->thisConfig['classesAnchor'] || $this->thisConfig['classesLinks']) {
$this->setClass = $this->curUrlArray['class'];
if ($this->thisConfig['classesAnchor']) {
$classesAnchorArray = t3lib_div::trimExplode(',',$this->thisConfig['classesAnchor'], 1);
} else {
$classesAnchorArray = t3lib_div::trimExplode(',',$this->thisConfig['classesLinks'], 1);
}
$classesAnchor = array();
$classesAnchor['all'] = array();
if (is_array($RTEsetup['properties']['classesAnchor.'])) {
reset($RTEsetup['properties']['classesAnchor.']);
while(list($label,$conf)=each($RTEsetup['properties']['classesAnchor.'])) {
if (in_array($conf['class'], $classesAnchorArray)) {
$classesAnchor['all'][] = $conf['class'];
if (in_array($conf['type'], $this->anchorTypes)) {
$classesAnchor[$conf['type']][] = $conf['class'];
if (is_array($this->thisConfig['classesAnchor.']) && is_array($this->thisConfig['classesAnchor.']['default.']) && $this->thisConfig['classesAnchor.']['default.'][$conf['type']] == $conf['class']) {
$this->classesAnchorDefault[$conf['type']] = $conf['class'];
if ($conf['titleText']) {
$this->classesAnchorDefaultTitle[$conf['type']] = $this->getLLContent(trim($conf['titleText']));
}
if ($conf['target']) {
$this->classesAnchorDefaultTarget[$conf['type']] = trim($conf['target']);
}
$classesAnchor = array();
$classesAnchor['all'] = array();
if (is_array($this->RTEProperties['classesAnchor.'])) {
reset($this->RTEProperties['classesAnchor.']);
while(list($label,$conf)=each($this->RTEProperties['classesAnchor.'])) {
if (in_array($conf['class'], $classesAnchorArray)) {
$classesAnchor['all'][] = $conf['class'];
if (in_array($conf['type'], $this->anchorTypes)) {
$classesAnchor[$conf['type']][] = $conf['class'];
if (is_array($this->thisConfig['classesAnchor.']) && is_array($this->thisConfig['classesAnchor.']['default.']) && $this->thisConfig['classesAnchor.']['default.'][$conf['type']] == $conf['class']) {
$this->classesAnchorDefault[$conf['type']] = $conf['class'];
if ($conf['titleText']) {
$this->classesAnchorDefaultTitle[$conf['type']] = $this->getLLContent(trim($conf['titleText']));
}
if ($conf['target']) {
$this->classesAnchorDefaultTarget[$conf['type']] = trim($conf['target']);
}
}
}
}
}
foreach ($this->anchorTypes as $anchorType) {
foreach ($classesAnchorArray as $class) {
if (!in_array($class, $classesAnchor['all']) || (in_array($class, $classesAnchor['all']) && is_array($classesAnchor[$anchorType]) && in_array($class, $classesAnchor[$anchorType]))) {
$selected = '';
if ($this->setClass == $class || (!$this->setClass && $this->classesAnchorDefault[$anchorType] == $class)) {
$selected = 'selected="selected"';
$classSelected[$anchorType] = true;
}
$classLabel = (is_array($RTEsetup['properties']['classes.']) && is_array($RTEsetup['properties']['classes.'][$class.'.']) && $RTEsetup['properties']['classes.'][$class.'.']['name']) ? $this->getPageConfigLabel($RTEsetup['properties']['classes.'][$class.'.']['name'], 0) : $class;
$classStyle = (is_array($RTEsetup['properties']['classes.']) && is_array($RTEsetup['properties']['classes.'][$class.'.']) && $RTEsetup['properties']['classes.'][$class.'.']['value']) ? $RTEsetup['properties']['classes.'][$class.'.']['value'] : '';
$this->classesAnchorJSOptions[$anchorType] .= '<option ' . $selected . ' value="' .$class . '"' . ($classStyle?' style="'.$classStyle.'"':'') . '>' . $classLabel . '</option>';
}
foreach ($this->anchorTypes as $anchorType) {
foreach ($classesAnchorArray as $class) {
if (!in_array($class, $classesAnchor['all']) || (in_array($class, $classesAnchor['all']) && is_array($classesAnchor[$anchorType]) && in_array($class, $classesAnchor[$anchorType]))) {
$selected = '';
if ($this->setClass == $class || (!$this->setClass && $this->classesAnchorDefault[$anchorType] == $class)) {
$selected = 'selected="selected"';
$classSelected[$anchorType] = true;
}
$classLabel = (is_array($this->RTEProperties['classes.']) && is_array($this->RTEProperties['classes.'][$class.'.']) && $this->RTEProperties['classes.'][$class.'.']['name']) ? $this->getPageConfigLabel($this->RTEProperties['classes.'][$class.'.']['name'], 0) : $class;
$classStyle = (is_array($this->RTEProperties['classes.']) && is_array($this->RTEProperties['classes.'][$class.'.']) && $this->RTEProperties['classes.'][$class.'.']['value']) ? $this->RTEProperties['classes.'][$class.'.']['value'] : '';
$this->classesAnchorJSOptions[$anchorType] .= '<option ' . $selected . ' value="' .$class . '"' . ($classStyle?' style="'.$classStyle.'"':'') . '>' . $classLabel . '</option>';
}
if ($this->classesAnchorJSOptions[$anchorType]) {
$selected = '';
if (!$this->setClass && !$this->classesAnchorDefault[$anchorType]) $selected = 'selected="selected"';
$this->classesAnchorJSOptions[$anchorType] = '<option ' . $selected . ' value=""></option>' . $this->classesAnchorJSOptions[$anchorType];
}
}
if ($this->classesAnchorJSOptions[$anchorType]) {
$selected = '';
if (!$this->setClass && !$this->classesAnchorDefault[$anchorType]) $selected = 'selected="selected"';
$this->classesAnchorJSOptions[$anchorType] = '<option ' . $selected . ' value=""></option>' . $this->classesAnchorJSOptions[$anchorType];
}
}
}
// Initializing the target value (RTE)
// Initializing the target value
// Unset the target if it is set to a value different than default and if no class is selected and the target field is not displayed
// In other words, do not forward the target if we changed tab and the target field is not displayed
$this->setTarget = (isset($this->curUrlArray['target'])
......
cur_href=value;
add_href="&curUrl[href]="+value;
}
';
if ($this->mode=='wizard') { // Functions used, if the link selector is in wizard mode (= TCEforms fields)
unset($this->P['fieldChangeFunc']['alert']);
reset($this->P['fieldChangeFunc']);
$update='';
while(list($k,$v)=each($this->P['fieldChangeFunc'])) {
$update.= '
window.opener.'.$v;
';
// Functions used, if the link selector is in RTE mode:
$JScode.='
function link_typo3Page(id,anchor) {
var theLink = \''.$this->siteURL.'?id=\'+id+(anchor?anchor:"");
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
$P2=array();
$P2['itemName']=$this->P['itemName'];
$P2['formName']=$this->P['formName'];
$P2['fieldChangeFunc']=$this->P['fieldChangeFunc'];
$addPassOnParams.=t3lib_div::implodeArrayForUrl('P',$P2);
$JScode.='
function link_typo3Page(id,anchor) { //
updateValueInMainForm(id+(anchor?anchor:"")+" "+cur_target);
close();
return false;
function link_folder(folder) { //
var theLink = \''.$this->siteURL.'\'+folder;
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
function link_spec(theLink) { //
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
function link_current() { //
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
if (cur_href!="http://" && cur_href!="mailto:") {
plugin.createLink(cur_href,cur_target,cur_class,cur_title);
}
function link_folder(folder) { //
updateValueInMainForm(folder+" "+cur_target);
close();
return false;
}
function link_current() { //
if (cur_href!="http://" && cur_href!="mailto:") {
var setValue = cur_href+" "+cur_target+" "+cur_class+" "+cur_title;
if (setValue.substr(0,7)=="http://") setValue = setValue.substr(7);
if (setValue.substr(0,7)=="mailto:") setValue = setValue.substr(7);
updateValueInMainForm(setValue);
close();
}
return false;
}
function checkReference() { //
if (window.opener && window.opener.document && window.opener.document.'.$this->P['formName'].' && window.opener.document.'.$this->P['formName'].'["'.$this->P['itemName'].'"] ) {
return window.opener.document.'.$this->P['formName'].'["'.$this->P['itemName'].'"];
} else {
close();
}
}
function updateValueInMainForm(input) { //
var field = checkReference();
if (field) {
field.value = input;
'.$update.'
}
}
';
} else { // Functions used, if the link selector is in RTE mode:
$JScode.='
function link_typo3Page(id,anchor) {
var theLink = \''.$this->siteURL.'?id=\'+id+(anchor?anchor:"");
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
function link_folder(folder) { //
var theLink = \''.$this->siteURL.'\'+folder;
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
function link_spec(theLink) { //
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
plugin.createLink(theLink,cur_target,cur_class,cur_title);
return false;
}
function link_current() { //
if (document.ltargetform.anchor_title) setTitle(document.ltargetform.anchor_title.value);
if (document.ltargetform.anchor_class) setClass(document.ltargetform.anchor_class.value);
if (document.ltargetform.ltarget) setTarget(document.ltargetform.ltarget.value);
if (cur_href!="http://" && cur_href!="mailto:") {
plugin.createLink(cur_href,cur_target,cur_class,cur_title);
}
return false;
}
';
}
return false;
}
';
// General "jumpToUrl" function:
$JScode.='
function jumpToUrl(URL,anchor) { //
......
return false;
}
';
// This is JavaScript especially for the TBE Element Browser!
$pArr = explode('|',$this->bparams);
$formFieldName = 'data['.$pArr[0].']['.$pArr[1].']['.$pArr[2].']';
......
}
}
';
// Finally, add the accumulated JavaScript to the template object:
$this->doc->JScode = $this->doc->wrapScriptTags($JScode);
// Debugging:
if (FALSE) debug(array(
'pointer' => $this->pointer,
'act' => $this->act,
'mode' => $this->mode,
'curUrlInfo' => $this->curUrlInfo,
'curUrlArray' => $this->curUrlArray,
'P' => $this->P,
'bparams' => $this->bparams,
'RTEtsConfigParams' => $this->RTEtsConfigParams,
'expandPage' => $this->expandPage,
'expandFolder' => $this->expandFolder,
'PM' => $this->PM,
),'Internal variables of Script Class:');
}
/**
* Initialize class variables
*
* @return void
*/
public function initVariables() {
// Process bparams
$this->bparams = t3lib_div::_GP('bparams');
$pArr = explode('|', $this->bparams);
$pRteArr = explode(':', $pArr[1]);
$this->editorNo = $pRteArr[0];
$this->contentTypo3Language = $pRteArr[1];
$this->contentTypo3Charset = $pRteArr[2];
$this->RTEtsConfigParams = $pArr[2];
if (!$this->editorNo) {
$this->editorNo = t3lib_div::_GP('editorNo');
$this->contentTypo3Language = t3lib_div::_GP('contentTypo3Language');
$this->contentTypo3Charset = t3lib_div::_GP('contentTypo3Charset');
$this->RTEtsConfigParams = t3lib_div::_GP('RTEtsConfigParams');
}
$this->pointer = t3lib_div::_GP('pointer');
$this->expandPage = t3lib_div::_GP('expandPage');
$this->expandFolder = t3lib_div::_GP('expandFolder');
$this->P = t3lib_div::_GP('P');
$this->PM = t3lib_div::_GP('PM');
$pArr[1] = implode(':', array($this->editorNo, $this->contentTypo3Language, $this->contentTypo3Charset));
$pArr[2] = $this->RTEtsConfigParams;
$this->bparams = implode('|', $pArr);
// Find "mode"
$this->mode = t3lib_div::_GP('mode');
if (!$this->mode) {
$this->mode = 'rte';
}
// Current site url
$this->siteURL = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
// the script to link to
$this->thisScript = t3lib_div::getIndpEnv('SCRIPT_NAME');
// CurrentUrl - the current link url must be passed around if it exists
$this->curUrlArray = t3lib_div::_GP('curUrl');
if ($this->curUrlArray['all']) {
$this->curUrlArray=t3lib_div::get_tag_attributes($this->curUrlArray['all']);
}
$this->curUrlInfo=$this->parseCurUrl($this->curUrlArray['href'],$this->siteURL);
// Determine nature of current url:
$this->act = t3lib_div::_GP('act');
if (!$this->act) {
$this->act=$this->curUrlInfo['act'];
}
}
/**
* Initializes the configuration variables
*
* @return void
*/
public function initConfiguration() {
$this->thisConfig = $this->getRTEConfig();
$this->buttonConfig = $this->getButtonConfig('link');
}
/**
* Get the RTE configuration from Page TSConfig
*
* @return array RTE configuration array
*/
protected function getRTEConfig() {
global $BE_USER;
$RTEtsConfigParts = explode(':', $this->RTEtsConfigParams);
$RTEsetup = $BE_USER->getTSConfig('RTE',t3lib_BEfunc::getPagesTSconfig($RTEtsConfigParts[5]));
$this->RTEProperties = $RTEsetup['properties'];
return t3lib_BEfunc::RTEsetup($this->RTEProperties, $RTEtsConfigParts[0],$RTEtsConfigParts[2],$RTEtsConfigParts[4]);
}
/**
* Get the configuration of the button
*
* @param string $buttonName: the name of the button
* @return array the configuration array of the image button
*/
protected function getButtonConfig($buttonName) {
return ((is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.'][$buttonName.'.'])) ? $this->thisConfig['buttons.'][$buttonName.'.'] : array());
}
/**
* Initialize hook objects implementing interface t3lib_browseLinksHook
* @param string $hookKey: the hook key
* @return void
*/
protected function initHookObjects($hookKey) {
global $TYPO3_CONF_VARS;
if (is_array($TYPO3_CONF_VARS['SC_OPTIONS'][$hookKey]['browseLinksHook'])) {
foreach ($TYPO3_CONF_VARS['SC_OPTIONS'][$hookKey]['browseLinksHook'] as $classData) {
$processObject = &t3lib_div::getUserObj($classData);
if(!($processObject instanceof t3lib_browseLinksHook)) {
throw new UnexpectedValueException('$processObject must implement interface t3lib_browseLinksHook', 1195115652);
}
$parameters = array();
$processObject->init($this, $parameters);
$this->hookObjects[] = $processObject;
}
}
}
/******************************************************************
*
* Main functions
......
$menuDef['page']['isActive'] = $this->act=='page';
$menuDef['page']['label'] = $LANG->getLL('page',1);
$menuDef['page']['url'] = '#';
$menuDef['page']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=page&editorNo='.$this->editorNo.'&contentTypo3Language='.$this->contentTypo3Language.'&contentTypo3Charset='.$this->contentTypo3Charset).'\');return false;"';
$menuDef['page']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=page&mode='.$this->mode.'&bparams='.$this->bparams).'\');return false;"';
}
if (in_array('file',$this->allowedItems)){
$menuDef['file']['isActive'] = $this->act=='file';
$menuDef['file']['label'] = $LANG->getLL('file',1);
$menuDef['file']['url'] = '#';
$menuDef['file']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=file&editorNo='.$this->editorNo.'&contentTypo3Language='.$this->contentTypo3Language.'&contentTypo3Charset='.$this->contentTypo3Charset).'\');return false;"';
$menuDef['file']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=file&mode='.$this->mode.'&bparams='.$this->bparams).'\');return false;"';
}
if (in_array('url',$this->allowedItems)) {
$menuDef['url']['isActive'] = $this->act=='url';
$menuDef['url']['label'] = $LANG->getLL('extUrl',1);
$menuDef['url']['url'] = '#';
$menuDef['url']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=url&editorNo='.$this->editorNo.'&contentTypo3Language='.$this->contentTypo3Language.'&contentTypo3Charset='.$this->contentTypo3Charset).'\');return false;"';
$menuDef['url']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=url&mode='.$this->mode.'&bparams='.$this->bparams).'\');return false;"';
}
if (in_array('mail',$this->allowedItems)) {
$menuDef['mail']['isActive'] = $this->act=='mail';
$menuDef['mail']['label'] = $LANG->getLL('email',1);
$menuDef['mail']['url'] = '#';
$menuDef['mail']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=mail&editorNo='.$this->editorNo.'&contentTypo3Language='.$this->contentTypo3Language.'&contentTypo3Charset='.$this->contentTypo3Charset).'\');return false;"';
$menuDef['mail']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=mail&mode='.$this->mode.'&bparams='.$this->bparams).'\');return false;"';
}
if (is_array($this->thisConfig['userLinks.']) && in_array('spec',$this->allowedItems)) {
$menuDef['spec']['isActive'] = $this->act=='spec';
$menuDef['spec']['label'] = $LANG->getLL('special',1);
$menuDef['spec']['url'] = '#';
$menuDef['spec']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=spec&editorNo='.$this->editorNo.'&contentTypo3Language='.$this->contentTypo3Language.'&contentTypo3Charset='.$this->contentTypo3Charset).'\');return false;"';
$menuDef['spec']['addParams'] = 'onclick="jumpToUrl(\''.htmlspecialchars('?act=spec&mode='.$this->mode.'&bparams='.$this->bparams).'\');return false;"';
}
// call hook for extra options
......
</td>
</tr>':'';
}
function addTargetSelector() {
global $LANG;
......
</td>
</tr>';
}
/**
* For TBE: Makes an upload form for uploading files to the filemount the user is browsing.
* The files are uploaded to the tce_file.php script in the core which will handle the upload.
*
* @param string Absolute filepath on server to which to upload.
* @return string HTML for an upload form.
*/
function uploadForm($path) {
global $BACK_PATH;
$count=3;
// Create header, showing upload path:
$header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
$code=$this->barheader($GLOBALS['LANG']->getLL('uploadImage').':');
$code.='
<!--
Form, for uploading files:
-->
<form action="'.$BACK_PATH.'tce_file.php" method="post" name="editform" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'">
<table border="0" cellpadding="0" cellspacing="3" id="typo3-uplFiles">
<tr>
<td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
</tr>
<tr>
<td>';
// Traverse the number of upload fields (default is 3):
for ($a=1;$a<=$count;$a++) {
$code.='<input type="file" name="upload_'.$a.'"'.$this->doc->formWidth(35).' size="50" />
<input type="hidden" name="file[upload]['.$a.'][target]" value="'.htmlspecialchars($path).'" />
<input type="hidden" name="file[upload]['.$a.'][data]" value="'.$a.'" /><br />';
}
// Make footer of upload form, including the submit button:
$redirectValue = $this->thisScript.'?act='.$this->act.'&editorNo='.$this->editorNo.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
$code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
'<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_upload.php.submit',1).'" />';
$code.='
<div id="c-override">
<input type="checkbox" name="overwriteExistingFiles" value="1" /> '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:overwriteExistingFiles',1).'
</div>
';
$code.='</td>
</tr>
</table>
</form>';
return $code;
}
/**
* For TBE: Makes a form for creating new folders in the filemount the user is browsing.
* The folder creation request is sent to the tce_file.php script in the core which will handle the creation.
*
* @param string Absolute filepath on server in which to create the new folder.
* @return string HTML for the create folder form.
*/
function createFolder($path) {
global $BACK_PATH;
// Create header, showing upload path:
$header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
$code=$this->barheader($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.pagetitle').':');
$code.='
<!--
Form, for creating new folders:
-->
<form action="'.$BACK_PATH.'tce_file.php" method="post" name="editform2">
<table border="0" cellpadding="0" cellspacing="3" id="typo3-crFolder">
<tr>
<td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
</tr>
<tr>
<td>';
// Create the new-folder name field:
$a=1;
$code.='<input'.$this->doc->formWidth(20).' type="text" name="file[newfolder]['.$a.'][data]" />'.
'<input type="hidden" name="file[newfolder]['.$a.'][target]" value="'.htmlspecialchars($path).'" />';
// Make footer of upload form, including the submit button:
$redirectValue = $this->thisScript.'?act='.$this->act.'&editorNo='.$this->editorNo.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
$code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
'<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.submit',1).'" />';
$code.='</td>
</tr>
</table>
</form>';
return $code;
}
/**
* Localize a string using the language of the content element rather than the language of the BE interface
(1-1/2)