Речь идет о VbTubePro, но, возможно, дело коснется и нескольких других хаков, так что пишу в общем разделе.
Задача - создание каталога видеоуроков Фотошоп (почему выбран именно VbTube - да по причине того, что он конвертит видео через ffmpeg а имеющиеся у меня файловые менеджеры с аналогичными возможностями заточены под другое и смешивать контент не хочу. Выбрал и выбрал, в общем.).
По умолчанию все сообщения, в том числе и при создании и при оформлении записей, создаются в BB-кодах, что не устраивает совершенно. Пример - выложен видеоурок Фотошоп и необходимо дать юзерам в комментах разместить собственную работу. С загрузкой этой самой работы на сервер.
В Сети было найдено любопытное решение,
http://www.vbtube.com/help-vbtubepro...scription.html, которое я и реализовал. Поскольку загрузка файлов в CKEditor предполагает, в общем, использование платного File Browser - наприсал собственный загрузчик, который раскидывает изображения в соотвествии с настройками хака Image Hosting Rewrited
Все замечательно и кошерно, за исключением того, что на странице добавления комментов совершенно другой принцип добавления записей, имеющий весьма мало общего с остальными вхождениями.
Шаблон vbtube_watchtube
PHP Code:
$stylevar[htmldoctype]
<html xmlns="http://www.w3.org/1999/xhtml" dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - $tubes[cattitle] - $tubes[title]</title>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="$forum_url/vbtube/includes/lightbox.css" type="text/css" media="screen" />
<style type="text/css">
.formbutton{
cursor:pointer;
border:outset 1px #ccc;
background:#999;
color:$charcolor2;
font-weight:bold;
padding: 1px 2px;
background:url(vbtube/images/btbg.gif) repeat-x left top;
}
.formbutton2 {
cursor:pointer;
border:outset 1px #ccc;
background:#999;
color:$charcolor2;
font-weight:bold;
padding: 1px 2px;
background:url(vbtube/images/btbg2.gif) repeat-x left top;
}
</style>
<script type="text/javascript" src="$forum_url/vbtube/includes/prototype.js"></script>
<script type="text/javascript" src="$forum_url/vbtube/includes/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="$forum_url/vbtube/includes/lightbox.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
function einblenden(div) {
with(document.getElementById(div).style){
if(display=="none"){
display="inline";
}
else{
display="none";
}
}
}
//-->
</script>
<script type="text/javascript" src="$forum_url/vbtube/includes/stars.js"></script>
<script type="text/javascript">
<!--
function ReportWindow(){
Window = window.open('vbtube_report.php?$session[sessionurl]do=report&tubeid=$tubes[tubeid]&securitytoken=$bbuserinfo[securitytoken]','Window','directories=no,height=400,width=450,vidlang=no,menubar=no,resizable=no,status=no,toolbar=no')
return false;
}
-->
</script>
<script type="text/javascript">
// Favorites Section
var AddFav = function()
{
var myAjax = new Ajax.Updater('fav_result','vbtube_favorites.php?do=favadd',{parameters:'tubeid=$tubeid&securitytoken=$bbuserinfo[securitytoken]',onFailure:showError});
}
var showError = function(r)
{
alert("Error: " +r.status+ "\n" +r.statusText);
}
// nc
var sendComment = function()
{
var mycomment = encodeURIComponent(document.getElementById('mytextarea1').value);
var param = 'comtext='+mycomment+'&t=$tubes[reviewid]'+'&tubeid=$tubeid'+'&securitytoken=$bbuserinfo[securitytoken]';
var myAjax = new Ajax.Updater('myspan','vbtube_comment.php$session[sessionurl_q]?do=add',{parameters:param,onFailure:showError});
}
// sc
var showComment = function(nr)
{
seitenID=nr*10-10;
var paramPage = 'tubeid=$tubeid&startid='+seitenID+'&securitytoken=$bbuserinfo[securitytoken]';
var myAjax = new Ajax.Updater('comments','vbtube_show.php$session[sessionurl_q]?do=comment_ajax',{parameters: paramPage,onFailure:showError});
}
</script>
</head>
<body$onload onload="if(document.getElementsByName) { window.scrollTo(0,document.getElementsByName('watch')[0].offsetTop); }">
$header
$navbar
<a name="watch"></a>
$usermenu
<br />
<img src="$tubes[link1img]" alt="" style="display:none;">
<div class="content">
<table width="100%" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
$leftcolumn
<td valign="top" width="100%" >
<table width="100%" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder">
<tr>
<td class="thead"><font size="+1">$tubes[title]</font>
</td>
</tr>
<tr>
<td class="alt1">
<a name="watch"></a>
$showtube
</td>
</tr>
</table>
<if condition="$vboptions[vbtube_tube_midbox]"><br />$vboptions[vbtube_tube_midbox]<br /></if>
<br />
<if condition="$bbuserinfo[userid]">
<if condition="$vbtube_reviews_enable">
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%">
<tr>
<td valign="top" class="$vboptions[vbtube_table]">
$vbphrase[vbtube_comment_now]
</td>
</tr>
<tr>
<td class="alt1">
<div align="center">
<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
<textarea rows="3" cols="45" id="mytextarea1"></textarea><br />
<input type="button" class="formbutton" name="button" value="$vbphrase[vbtube_submit]" onclick="javascript:sendComment(this.parentNode);" />
<input type="reset" class="formbutton2" value="$vbphrase[vbtube_tube_reset]" />
</form>
</div>
</td>
</tr>
</table>
</if>
</if>
<br />
<a name="c"></a>
<div class="myspan" id="myspan"></div>
<div class="comments" id="comments">
<if condition="$comments">
<if condition="$totalcomments > '10'">
<table width="100%" border="0">
<tr>
<td algin="left"><a href="javascript:showComment('$bcpage');"><b>$vbphrase[vbtube_menu_back]</b></a> | <a href="javascript:showComment('$ncpage');"><b>$vbphrase[vbtube_menu_next]</b></a></td>
<td align="right">| $comments_pages
</td>
</tr>
</table>
<br />
</if>
<div class="comments">$comments</div>
</if>
<if condition="$totalcomments > '10'">
<table width="100%" border="0">
<tr>
<td algin="left"><a href="javascript:showComment('$bcpage');"><b>$vbphrase[vbtube_menu_back]</b></a> | <a href="javascript:showComment('$ncpage');"><b>$vbphrase[vbtube_menu_next]</b></a></td>
<td align="right">| $comments_pages
</td>
</tr>
</table>
<br />
</if>
</div>
<table width="100%" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder">
<tr>
<td class="thead">$vbphrase[vbtube_tube_keywords]</td>
</tr>
<tr>
<td class="alt1">$vbt_var[keywords]</td>
</tr>
</table>
</td>
$rightcolumn
</tr>
</table>
</div>
$vboptions[vbtube_footer]
$footer
</body>
</html>
Простая замена textarea на нужный вариант ничего не дает, хотя сам CKEditor, в случае внесения правок, исправно показывается и функционален полностью.
Правки:
В начало шаблона
PHP Code:
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>
Заменить
PHP Code:
<textarea name="aboutme"....</textarea>
на
PHP Code:
<textarea name="aboutme"></textarea>
<script type="text/javascript">
CKEDITOR.replace( 'aboutme' );
</script>
Вот, собственно, и все правки.
Что можно сделать для того, чтобы начали корректно работать комменты, с учетом того, что, естественно, я менял и name этого textarea, возился с id и прочая и прочая.
Ну не силен я в Javascript!