Jump to content

API или как выдернуть редактор


avgaz
 Share

Recommended Posts

Еще можно, поидее, стандартный вывод получить в переменную и модифицировать там, что нужно регекспами или в DOMDocument выгрузить и поправить.

$output = $registry->output->sendOutput(true);

Link to comment
Share on other sites

Смотрите в коде, там добавлено.

У меня это $memberData =& $registry->member->fetchMemberData(); вызывает ошибку ну и $settings['emoticons_url'] = str_replace('<#EMO_DIR#>', 'default', $settings['emoticons_url']); не меняет <#EMO_DIR#>

Код выглядит у меня вот так

<?php
require_once( '/forum/initdata.php' );
require_once( '/forum/admin/sources/base/ipsRegistry.php' );
$registry=ipsRegistry::instance();
$registry->init();
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );  
$editor = new $classToLoad();  $html = $editor->show( 'Post', array(
'type'				=> 'full',
'minimize'			=> TRUE,
'height'			=> 100,
'autoSaveKey'			=> '',
'warnInfo'			=> NULL,
'modAll'			=> FALSE,
'recover'			=> FALSE,
'noSmilies'			=> FALSE,
'isHtml'			=> FALSE,
'isRte'				=> NULL,
'isTypingCallBack'		=> '',
'delayInit'			=> FALSE,
'editorName'			=> NULL 	) );

//echo "$html";

$settings =& $registry->fetchSettings();
$memberData =& $registry->member->fetchMemberData();
$settings['emoticons_url'] = str_replace('<#EMO_DIR#>', 'default', $settings['emoticons_url']);

/* Скрипты */
echo <<<FEOF
<script type='text/javascript'>
   jsDebug         = 0; /* Must come before JS includes */
   DISABLE_AJAX    = parseInt(0); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */
   inACP           = false;
   var isRTL       = false;
   var rtlIe       = '';
   var rtlFull     = '';
</script>
{$registry->output->getTemplate('global')->includeJS(array('textEditor.bbcode' => 1, 'textEditor' => 1))}
<script type='text/javascript'>
   Loader.boot();
</script>
<link rel="stylesheet" type="text/css"  href="{$settings['board_url']}/public/style_css/css_1/ipb_ckeditor.css" />
FEOF;


echo $html;

Link to comment
Share on other sites

Да, $registry->member()->fetchMemberData(); Поправил.

Ошибки нет, но в самом редакторе не чего не поменялось, смайлы так же через EMO_DIR файлового менеджера нет (((

Link to comment
Share on other sites

Строчки

$settings   =& $registry->fetchSettings();
$memberData =& $registry->member()->fetchMemberData();
$settings['emoticons_url'] = str_replace('<#EMO_DIR#>', 'default', $settings['emoticons_url']);

Нужно добавить после

$registry->init();

 

файлового менеджера нет (((

А мы о нем и не говорим

Link to comment
Share on other sites

Да так смайлы работают, кроме показать все. А файлов менеджер не как не сделать в редактор?

Link to comment
Share on other sites

Да так смайлы работают, кроме показать все.

перед

Loader.boot();

Добавить

ipb.vars['base_url'] 			= '{$settings['base_url']}';
ipb.vars['board_url']			= '{$settings['board_url']}';
ipb.vars['img_url'] 			= '{$settings['img_url']}';
ipb.vars['upload_url']			= '{$settings['upload_url']}';

 

А файлов менеджер не как не сделать в редактор?

Может и можно, только находится он в другом шаблоне - skin_post (Страница отправки тем/сообщений) -> uploadForm или attachiFrame

Link to comment
Share on other sites

Для форумного нужен. Он подключается через объект ipb который инициализируется используя запросы прототайпа. А ТС'у нужен редактор вне оболочки форума.

Ну, не грузится же prototype.js на странице, что я давал. И все там работает, включая смайлы, медиабиблиотеку и остальные диалоговые окна.

Link to comment
Share on other sites

Ну, не грузится же prototype.js на странице, что я давал.

Страницу не смотрел, но в враппере форума $registry->output->sendOutput() он грузится по умолчанию (если используется сжатие minify это - /public/min/index.php?ibv=md5_ver&g=js).

  • Upvote 1
Link to comment
Share on other sites

  • 3 years later...

Прототайп для редактора не нужен. С враппером все нужные скрипты и стили подгружаются автоматом:

<?php
require_once('initdata.php');
require_once('./admin/sources/base/ipsRegistry.php');

$registry = ipsRegistry::instance();
$registry->init();

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );  
$editor = new $classToLoad();
$html = $editor->show( 'Post', array('minimize' => FALSE) );

$registry->output->setTitle('My Title');
$registry->output->addContent($html); 
$registry->output->sendOutput();

Нормально работает у меня - http://test.emule-rus.net/ipb346/test.php

 

Если форумный враппер не нужен, то видимо лучше подключить чистый ckeditor, замещающий любое поле textarea. http://www.site-script.ru/articles.php?id=13

Работает, но как отправлять содержимое из редактора?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...