вопрос
Приветствую, дорогие друзья!
Требуется ваша помощь в подключении модуля для DLE.
Вкратце:
В далеком 2012-2013 году, заказал себе модуль "Всплывающие подсказки" для DLE 9.7
Разработчиком был ShapeShifter.
Все бы хорошо, однако с выходом новых версий DLE, инструкция подключения модуля - устарела. Действующая инструкция подходила для DLE 9.7 - 10.3, в более новых версиях DLE поменялась структура файлов. То есть, банально необходимо подсказать, какой кусок кода, в какой php добавляется и после какой строки.
Для DLE 12.0(!)
"Всплывающие подсказки" - добавляют кнопку вызова в редактор TinyMCE (WYSIWYG), но хотелось бы в инструкции, сделать подключение кнопки в редактор FroalaEditor (WYSIWYG), т.к. он более правильный с точки зрения SEO.
Разумеется обращался к разработчику - ему это не интересно. Обращался к ПафНутиЙ - не занимается разработками.
Пробовал сам проследить изменения в файлах движка от версии к версии - черт ногу сломит...
Кто поможет, с меня помощь в сайтостроении, кроме программирования кода =)))
SEO / Маркетинг / Дизайн / Консультации и т.д.
Требуется ваша помощь в подключении модуля для DLE.
Вкратце:
В далеком 2012-2013 году, заказал себе модуль "Всплывающие подсказки" для DLE 9.7
Разработчиком был ShapeShifter.
Все бы хорошо, однако с выходом новых версий DLE, инструкция подключения модуля - устарела. Действующая инструкция подходила для DLE 9.7 - 10.3, в более новых версиях DLE поменялась структура файлов. То есть, банально необходимо подсказать, какой кусок кода, в какой php добавляется и после какой строки.
Для DLE 12.0(!)
"Всплывающие подсказки" - добавляют кнопку вызова в редактор TinyMCE (WYSIWYG), но хотелось бы в инструкции, сделать подключение кнопки в редактор FroalaEditor (WYSIWYG), т.к. он более правильный с точки зрения SEO.
Разумеется обращался к разработчику - ему это не интересно. Обращался к ПафНутиЙ - не занимается разработками.
Пробовал сам проследить изменения в файлах движка от версии к версии - черт ногу сломит...
Кто поможет, с меня помощь в сайтостроении, кроме программирования кода =)))
SEO / Маркетинг / Дизайн / Консультации и т.д.
########### Загрузить файлы на сервер
########### Выполнить запрос к БД:
CREATE TABLE dle_post_hints (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL DEFAULT '0',
`autor` varchar(40) NOT NULL default '',
`date` int(10) NOT NULL default '0',
`width_b` smallint(4) NOT NULL default '0',
`thint` text NOT NULL,
PRIMARY KEY (`id`),
KEY `autor` (`autor`),
KEY `news_id` (`news_id`),
KEY `date` (`date`)
) ENGINE=MyISAM;
########### Открыть main.tpl
Найти:
</head>
Добавить ВЫШЕ:
<link media="screen" href="{THEME}/style/jquery.cluetip.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="{THEME}/js/jquery.cluetip.js"></script>
########### Открыть index.php
Найти:
require_once ROOT_DIR . '/engine/init.php';
Добавить ВЫШЕ:
$news_hint_arr = array(); // Массив с ID подсказок и их шириной
Найти:
$ajax .= <<<HTML
//-->
</script>
HTML;
Добавить ВЫШЕ:
if (count($news_hint_arr))
{
$ajax .= <<<HTML
$(document).ready(function() {
// jTip theme
HTML;
foreach($news_hint_arr as $key => $value)
{
if (intval($value) < 10) $value = 200;
$ajax .= <<<HTML
$('a#jt_{$key}').cluetip({
width: '{$value}',
closePosition: 'title',
closeText: '<img src="{THEME}/images/cross.png" title="Закрыть" />'
});
HTML;
}
$ajax .= <<<HTML
});
HTML;
}
Найти:
if (strpos ( $tpl->result['content'], "hs.expand" ) !== false or strpos ( $tpl->copy_template, "hs.expand" ) !== false) {
Заменить на:
//if (strpos ( $tpl->result['content'], "hs.expand" ) !== false or strpos ( $tpl->copy_template, "hs.expand" ) !== false) {
Найти:
{$gallery}
//-->
</script>
HTML;
}
Заменить на:
{$gallery}
//-->
</script>
HTML;
//}
########### Открыть engine/editor/shortnews.php
Найти:
"FullScreen", "TextDialog"
Заменить на:
"ShapeShifterHints", "FullScreen", "TextDialog"
Найти:
["DLEUpload", "media_upload('short_story', '{$p_name}', '{$row['id']}', '1')", "{$lang['bb_t_up']}", "dle_upload.gif"],
Добавить выше:
["ShapeShifterHints", "ShapeShifter_Hints('short_story', '{$p_name}', '{$row['id']}', 0)", "Подсказки", "dle_upload.gif"],
########### Открыть /engine/skins/default.js
Найти:
function media_upload ( area, author, news_id, wysiwyg){
Добавить ВЫШЕ:
function ShapeShifter_Hints ( area, author, news_id, hint_id)
{
var rndval = new Date().getTime();
var shadow = 'none';
$('#ss_hint').remove();
$('body').prepend("<div id='ss_hint' title='Подсказка' style='display:none'></div>");
$('#ss_hint').dialog({
autoOpen: true,
width: 820,
height: 700,
dialogClass: "modalfixed",
open: function(event, ui) {
$("#ss_hint").html("<iframe name='ss_hintframe' id='ss_hintframe' width='100%' height='550' src='engine/ajax/ss_hints.php?area=" + area + "&author=" + author + "&news_id=" + news_id + "&hint_id="+hint_id+"&rndval=" + rndval + "' frameborder='0' marginwidth='0' marginheight='0' allowtransparency='true'></iframe>");
$( ".ui-dialog" ).draggable( "option", "containment", "" );
},
dragStart: function(event, ui) {
shadow = $(".modalfixed").css('box-shadow');
$(".modalfixed").fadeTo(0, 0.6).css('box-shadow', 'none');
$("#ss_hint").hide();
},
dragStop: function(event, ui) {
$(".modalfixed").fadeTo(0, 1).css('box-shadow', shadow);
$("#ss_hint").show();
},
beforeClose: function(event, ui) {
$("#ss_hint").html("");
}
});
if ($(window).width() > 830 && $(window).height() > 530 ) {
$('.modalfixed.ui-dialog').css({position:"fixed"});
$('#ss_hint').dialog( "option", "position", ['0','0'] );
}
return false;
};
Найти:
src='engine/ajax/upload.php
Заменить на:
src='/engine/ajax/upload.php
########### Открыть engine/inc/addnews.php
Найти:
// XFields Call
$xfieldsaction = "list";
Добавить ВЫШЕ:
############# ShapeShifter - Подсказки ############
echo <<<HTML
<tr>
<td colspan="2"><div class="hr_line"></div></td>
</tr>
HTML;
echo <<<HTML
<script type="text/javascript">
function ShapeShifter_Hints_List (nid)
{
$.get("engine/ajax/ss_hints_list.php", {"nid": nid}, function(data){
$("#hints_list").html(data);
});
}
</script>
<tr>
<td height="29" style="padding-left:5px;">Список подсказок:</td>
<td>
<div id="hints_list">
HTML;
$hints = $db->query( "SELECT * FROM " . PREFIX . "_post_hints WHERE news_id = '0' AND autor = '{$member_id['name']}' ORDER BY date ASC" );
while ( $row_hint = $db->get_row($hints) )
{
$hint_autor = urlencode($row_hint['autor']);
if ($row_hint['width_b'] <= 0) $row_hint['width_b'] = 600;
echo <<<HTML
<input type="text" class="edit bk" value="[news_hint={$row_hint['id']}|{$row_hint['width_b']}][/news_hint]" style="width:230px;" /> <a href="#" onclick="ShapeShifter_Hints('short_hint', '{$hint_autor}', '0', '{$row_hint['id']}'); return false;" title="Редактировать">Редактировать</a><br />
HTML;
}
$db->free($hints);
echo <<<HTML
</div>
<br />
<a href="#" onclick="ShapeShifter_Hints_List('0'); return false;" title="Обновить список">Обновить список</a><br /><br />
</td></tr>
HTML;
############# ShapeShifter - Подсказки ############
Найти:
$db->query( "UPDATE " . PREFIX . "_files set news_id='{$row}' where author = '{$member_id['name']}' AND news_id = '0'" );
Добавить ниже:
$db->query( "UPDATE " . PREFIX . "_post_hints set news_id='{$row}' where autor = '{$member_id['name']}' AND news_id = '0'" );
########### Открыть engine/inc/editnews.php
Найти:
// Доп. поля
$xfieldsaction = "list";
$xfieldsid = $row['xfields'];
Добавить ВЫШЕ:
############# ShapeShifter - Подсказки ############
echo <<<HTML
<tr>
<td colspan="2"><div class="hr_line"></div></td>
</tr>
HTML;
echo <<<HTML
<script type="text/javascript">
function ShapeShifter_Hints_List (nid)
{
$.get("engine/ajax/ss_hints_list.php", {"nid": nid}, function(data){
$("#hints_list").html(data);
});
}
</script>
<tr>
<td height="29" style="padding-left:5px;">Список подсказок:</td>
<td>
<div id="hints_list">
HTML;
$hints = $db->query( "SELECT * FROM " . PREFIX . "_post_hints WHERE news_id = '{$row['id']}' ORDER BY date ASC" );
while ( $row_hint = $db->get_row($hints) )
{
$hint_autor = urlencode($row_hint['autor']);
if ($row_hint['width_b'] <= 0) $row_hint['width_b'] = 600;
echo <<<HTML
<input type="text" class="edit bk" value="[news_hint={$row_hint['id']}|{$row_hint['width_b']}][/news_hint]" style="width:230px;" /> <a href="#" onclick="ShapeShifter_Hints('short_hint', '{$hint_autor}', '0', '{$row_hint['id']}'); return false;" title="Редактировать">Редактировать</a><br />
HTML;
}
$db->free($hints);
echo <<<HTML
</div>
<br />
<a href="#" onclick="ShapeShifter_Hints_List('{$row['id']}'); return false;" title="Обновить список">Обновить список</a><br /><br />
</td></tr>
HTML;
############# ShapeShifter - Подсказки ############
########### Открыть engine/engine.php
Найти:
case "comments" :
include ENGINE_DIR . '/modules/comments.php';
break;
Добавить ниже:
case "ss_hint" :
include ENGINE_DIR . '/modules/ss_hint.php';
break;
########### Открыть engine/modules/show.short.php
Найти:
if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) );
else $tpl->result['content'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['content'] );
Добавить ВЫШЕ:
$tpl->result['content'] = preg_replace("#\[news_hint=(.*?)\](.+?)\[/news_hint\]#ise", "news_hint('{$row['id']}', '\\1', '\\2')", $tpl->result['content']);
########### Открыть engine/modules/show.full.php
Найти:
if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) );
else $tpl->result['content'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['content'] );
Добавить ВЫШЕ:
$tpl->result['content'] = preg_replace("#\[news_hint=(.*?)\](.+?)\[/news_hint\]#ise", "news_hint('{$row['id']}', '\\1', '\\2')", $tpl->result['content']);
########### Открыть engine/modules/functions.php
Найти (в конце файла):
?>
Добавить ВЫШЕ:
function news_hint ($nid, $data, $text)
{
global $news_hint_arr;
$data = explode("|", $data);
$id = $data[0];
$width = $data[1];
$text = stripslashes($text);
$news_hint_arr[$id] = $width;
return "<a href=\"#\" id=\"jt_{$id}\" rel=\"/?do=ss_hint&nid={$nid}&id={$id}\">{$text}</a>";
}