Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

Собственно хотел на сайт выдернуть редактор с IPB путем его интеграции и так тут показана как это делать http://www.invisionpower.com/support/guides/_/advanced-and-developers/api-methods/editor-bbcode-r146

Делаю так

<?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'			=> 300,
'autoSaveKey'			=> '',
'warnInfo'			=> NULL,
'modAll'			=> FALSE,
'recover'			=> FALSE,
'noSmilies'			=> FALSE,
'isHtml'			=> FALSE,
'isRte'				=> NULL,
'isTypingCallBack'		=> '',
'delayInit'			=> FALSE,
'editorName'			=> NULL 	) );

echo "$html";

 

Но отображает просто поле textarea сам редактор не подгружается хотя в исходном коде страницы он вроде присутствует все

В чем ошибка что не так сделал?

Рекомендованные сообщения

Опубликовано:
  • Автор

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

У меня это $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;

Опубликовано:

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

Опубликовано:
  • Автор

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

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

Опубликовано:

Строчки

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

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

$registry->init();

 

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

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

Опубликовано:
  • Автор

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

Опубликовано:

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

перед

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

Опубликовано:

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

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

Опубликовано:

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

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

Опубликовано:

Про минифи забыл, есть такой скрипт. Спасибо за подсказку.

  • 3 года спустя...
Опубликовано:

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

<?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

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

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

Форму создайте c кнопкой отправки.

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.