представляю, как папаша бы твой, глядя на хулиганство в детстве, сказал бы: блин, проблемы с ним постоянно. Может, нового завести, вместо этого? или какие-то уже готовые - взрослые и обученные бывают?а то у меня с встраиванием редактора Spaw постоянно возникают проблемы.
может есть какие-то готовые решения?
class HTML_QuickForm_fckeditor extends HTML_QuickForm_textarea
{
protected $options = array(
'basePath' => '/FCKeditor/',
'width' => '100%',
'height' => '200',
'toolbarSet' => 'Default',
'config' => array()
);
public function __construct($elementName = null, $elementLabel = null, $attributes = null, $options = null)
{
parent::HTML_QuickForm_textarea($elementName, $elementLabel, $attributes);
$this->_type = 'fckeditor';
if (null !== $options) {
$this->options = array_merge($this->options, $options);
}
}
public function toHtml()
{
if ($this->isFrozen() || !$this->isBrowserSupported()) {
return parent::toHtml();
} else {
$name = $this->getName();
$value = htmlspecialchars($this->getValue());
$link = $this->options['basePath'] . 'editor/fckeditor.html?InstanceName=' . $name .
('' == $this->options['toolbarSet']? '': '&Toolbar=' . $this->options['toolbarSet']);
return '<input type="hidden" id="' . $name . '" name="' . $name . '" value="' . $value . '" />' .
'<input type="hidden" id="' . $name . '___Config" value="' . $this->getConfigString() . '" />' .
'<iframe id="' . $name . '___Frame" src="' . $link . '" width="' . $this->options['width'] .
'" height="' . $this->options['height'] . '" frameborder="no" scrolling="no"></iframe>';
}
}
protected function isBrowserSupported()
{
$sAgent = $_SERVER['HTTP_USER_AGENT'];
if (strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false) {
$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3);
return ($iVersion >= 5.5) ;
} elseif (strpos($sAgent, 'Gecko') !== false) {
$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
return ($iVersion >= 20030210) ;
}
return false;
}
protected function getConfigString()
{
$params = array();
foreach ($this->options['config'] as $key => $value) {
if (true === $value) {
$hValue = 'true';
} elseif (false === $value) {
$hValue = 'false';
} else {
$hValue = $this->encodeConfig($value);
}
$params[] = $this->encodeConfig($key) . '=' . $hValue;
}
return implode('&', $params);
}
protected function encodeConfig($str)
{
return strtr($str, array(
'&' => '%26',
'=' => '%3D',
'"' => '%22'
));
}
}
тут товарищ Фанат сможет выразиться гораздо более цветисто, но я тоже скажу --- отлаживай. Такие ошибки (кстати, какого хрена мы до сих пор не видели их текста?) подсказывают нам то, что где-то используются глобальные переменные.Автор оригинала: que_bunt
Sad Spirit спасибо, по сути я все также сделал только для spaw, и теперь понимаю что скорее все в подключении самого редактора. если подключаю в классе елемента (в ф-и toHtml) - ошибки, если подключаю в скрипте - все нормально.
function toHtml()
{
if ($this->_flagFrozen) {
return $this->getFrozenHtml();
} else {
//подключаем клас WYSIWYG-редактор
$spaw_root='spaw/';
include_once('spaw/spaw_control.class.php');
$spaw = new SPAW_Wysiwyg($this->getName() /*name*/, ''/*value*/,
'ru' /*language*/, 'page_edit' /*toolbar mode*/, 'default' /*theme*/,
'350px' /*width*/, '150px' /*height*/);
return $spaw->getHtml();
}
}
Ну блин, когда ты загружаешь файл внутри функции, то определённые в нём переменные попадают в список переменных этой функции, а не в список глобальных переменных. Отсюда и ошибки. Какого хрена авторы Spaw так написали своё поделие, что не принимают в расчёт возможность загрузки файла внутри функции --- вопрос к авторам Spaw.Автор оригинала: que_bunt
ошибки такие:
Notice: Undefined variable: spaw_lang_data in z:\home\host.org.ua\www\admin-panel\spaw\class\lang.class.php on line 90
Notice: Undefined variable: spaw_toolbar_data in z:\home\host.org.ua\www\admin-panel\spaw\class\toolbars.class.php on line 156
и дальше в том же стиле только разные переменные.
причем все делаю также как и отдельно в скрипте.