Просмотр темы
# 21
Тема: все тотже хайд
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 31 Августа 2008, 18:23:05
Ой я даже не в курсе своих разработок... Код полностью рабочий, единственно может криво работать если его КРИВО использовать (типа [hide=500][hide=400][/hide]. То есть не проверны баги, но дело не в этом.
1. Вариант обхода - кнопка цитата. Есть идеи как править?
2. Вариант, сервисы типа RSS портала дают полный код (проблема админа имхо уже,чтобы проганять парсером пол рсс)
3. Вариант, всякие моды печати (?)
4. Вариант - код видять все модеры (редактирование никто не отменял)
В данном случае - меня интересует остро только 1ый вариант, ибо нет смысла в коде изза него.
Гыгы а штука прикольная все таки
-------------------- Retired
^ наверх ^
# 22
mishqa35
SF Team
.jQ*
SF Support Team
Немогу без SFСообщений: 732
Откуда: Череповец
Зарегистрирован: 08 Ноября 2007, 20:35:30
Сказали спасибо 129 раз Статус: offline
ICQ статус
Опубликовано 01 Сентября 2008, 14:45:03
Psc , выложи то что сделал
--------------------Fusion и jQuery
^ наверх ^
# 23
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 01 Сентября 2008, 15:53:07
Ну вот вроде отлажено, потому выложу.
Открытым кодом, ибо она небольшая (затачивать далее не вижу смысла - пока не будет решена проблема с обходом)
$hide_u = substr_count($text, '[hide=');
global $userdata,$user_posts_now;
if(iMEMBER){
//[hide=?] parse
$user_posts_now = ( $userdata['user_posts'] > 0 ? $userdata['user_posts'] : 0 );
//callback iSee
if (!function_exists(iseepost_now)) {
function iseepost_now($matches)
{
$postsneed = $matches[1]; //|| iADMIN
global $user_posts_now;
if ( ( $user_posts_now >= $postsneed ) || iMOD || iSUPERADMIN ) { //users post >= needed
return '<div class=\'quote\'> ['.$postsneed.'] Скрытый текст:<br>'.$matches[2].'</div>';
}
else { //not enough messages
return '<div class=\'quote\'><center>Для просмотра скрытого текста - оставьте столько сообщений:
'.$matches[1].'</b></a></center></div>';
}
}
}
for ($i=0;$i < $hide_u;$i++) {
$text = preg_replace_callback(
'#\[hide=([0-9]*?)\](.*?)\[/hide\]#si',
'iseepost_now',
$text);
}
} //iMem end
else {
for ($i=0;$i < $hide_u;$i++) $text = preg_replace('#\[hide=([0-9]*?)\](.*?)\[/hide\]#si', '<div
class=\'quote\'><center>Для просмотра скрытого текста - <a href=\'/register.php\'><u>зарегистрируйтесь</u></a> и
оставьте столько сообщений: <b>\1</b></center></div>', $text);
}
Все просто и понятно (разве что кроме callback, но это тоже несложно)
Ставим в мейн коре, ищем решения, радуем юзеров.
PS Кто знает как лучше подрубать функцию чтоб оно не потворяло саму себя? У меня вот так, но ето тормозит цикл (а выносить за парсер неприемлимо)
Блин самое главное, вдруг кто не знает, юзать так:
[hide=10]скрыть на 10 постов[/hide]
[Изменил(а) Psc , 01 Сентября 2008, 15:57:38]
-------------------- Retired
^ наверх ^
# 24
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 02 Сентября 2008, 09:15:14
Ну куда все пропали, не будем доделывать? Кинем так?
Приаттачьте все таки модуль хайда, вроде на булке есть такой. Или какой найдете.
[Изменил(а) Psc , 02 Сентября 2008, 13:54:21]
-------------------- Retired
^ наверх ^
# 25
mishqa35
SF Team
.jQ*
SF Support Team
Немогу без SFСообщений: 732
Откуда: Череповец
Зарегистрирован: 08 Ноября 2007, 20:35:30
Сказали спасибо 129 раз Статус: offline
ICQ статус
Опубликовано 08 Сентября 2008, 19:54:15
Вот так делается в дле.
Я пробывал и так и сяк, все краказябры получаются.. попробуй приюти код
---------------------------------------------------
ХАК ДЛЯ СКРЫТОГО ТЕКСТА ОТ ТЕХ, КТО НЕ НАБРАЛ НУЖНОЕ КОЛ-ВО КОММЕНТОВ.
---------------------------------------------------
Как установить в ручную ?
1. Открываем engine/modules/show.short.php
Ищем :
if ($user_group[$member_id['user_group']]['allow_hide'])
$tpl->set_block("'\[hide\](.*?)\[/hide\]'si","\\1");
else
$tpl->set_block("'\\[hide\\](.*?)\\[/hide\\]'si","<div class=\"quote\">".$lang['news_regus']."</div>");
ниже добовляем :
// -------------------------------------------::code::---------------------------------------------------------------------------------------------
$tpl->set_block( "#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')");
// ------------------------------------------::end code::------------------------------------------------------------------------------------------
2. Открываем engine/modules/show.full.php
Ищем:
else $tpl->set_block("'\\[hide\\](.*?)\\[/hide\\]'si","<div class=\"quote\">".$lang['news_regus']."</div>");
ниже вставляем
// ------------------------------------------------------------------------------------------------------------------------------------
$tpl->set_block( "#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')");
// ------------------------------------------------------------------------------------------------------------------------------------
else $tpl->set_block("'\\[hide\\](.*?)\\[/hide\\]'si","<div class=\"quote\">".$lang['news_regus']."</div>");
// ------------------------------------------------------------------------------------------------------------------------------------
$tpl->set_block( "#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')");
// ------------------------------------------------------------------------------------------------------------------------------------
3. Открываем engine/ajax/addcomments.php
ищем :
else $tpl->set_block("'\\[hide\\](.*?)\\[/hide\\]'si","<div class=\"quote\">".$lang['news_regus']."</div>");
Ниже вставляем:
// ------------------------------------------------------------------------------------------------------------------------------------
$tpl->set_block( "#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')");
// ------------------------------------------------------------------------------------------------------------------------------------
4. Открываем engine/ajax/editcomments.php
ищем :
$comm_txt = preg_replace ("'\[hide\](.*?)\[/hide\]'si","\\1", $comm_txt);
Ниже вставляем :
// -------------------------------------------::code::---------------------------------------------------------------------------------------------
$comm_txt = preg_replace("#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')",$comm_txt);
// ------------------------------------------::end code::------------------------------------------------------------------------------------------
5. Открываем engine/ajax/editnews.php
// -------------------------------------------::code::---------------------------------------------------------------------------------------------
$news_txt = preg_replace("#\\[hide=(.+?)\\](.*?)\\[/hide\\]#ies","comm_protect('\\1', '\\2')",$news_txt);
// ------------------------------------------::end code::------------------------------------------------------------------------------------------
6. ОТКРЫВАЕМ engine/modules/bbcode.php
ищем :
<div id="b_hide" class="editor_button" onclick="simpletag('hide')"><img title="$lang[bb_t_hide]" src="{THEME}/bbcodes/hide.gif" width="23" height="25" border="0"></div>
ниже вставляем:
<div class="editor_button" onclick="tag_comm()"><img title="Вставить скрытый текст (по кол-ву коммов)" src="{THEME}/bbcodes/xvalue.gif" width="23" height="25" border="0"></div>
Открываем engine/modules/function.php
Ищем:
$block = str_replace('\"', '"', str_replace("&", "&", $block));
return $block;
}
НИЖЕ ВСТАВЛЯЕМ:
function comm_protect ($comms, $block) {
global $member_id;
$targ = $member_id['comm_num'];
$group = $member_id['user_group'];
$uname = $member_id['name'];
$allow_groups = array(1,2); // Группы которым скрытый текст доступен напостой!
if (in_array($group,$allow_groups)) return $block;
if($targ < $comms)
$summ = (int)($comms-$targ);
return "<div class=\"quote\">Для просмотра скрытого текста надо <b>".$comms."</b> комментариев. У вас <b>".$targ."</b> еще надо <b>" . $summ ."</b> сообщений</div>";
$block = str_replace('\"', '"', str_replace("&", "&", $block));
return $block;
}
// ------------------------------------------::end code::------------------------------------------------------------------------------------------
ОТКРЫВАЕМ `engine/ajax/bbcodes.js`
ИЩЕМ :
doInsert("[url="+enterURL+"]"+enterTITLE+"[/url]", "", false);
};
НИЖЕ ВСТАВЛЯЕМ:
function tag_comm()
{
var FoundErrors = '';
var thesel ='';
if ( (ua_vers >= 4) && is_ie && is_win)
{
thesel = document.selection.createRange().text;
} else thesel ='текст доступный для просмотра';
if (!thesel) {
thesel ='текст доступный для просмотра';
}
var comm_num = prompt("Введите кол-во комментариев которое должен набрать пользователь для просмотра скрытого текста", "10");
var enterTEXT = prompt("Введите текст:", thesel);
if (!comm_num) {
FoundErrors += " " + "Вы не ввели число комментариев";
}
if (!enterTEXT) {
FoundErrors += " " + "Не ввели текст!";
}
if (FoundErrors) {
alert("Обнаружены ошибки:"+FoundErrors);
return;
}
doInsert("[hide="+comm_num+"]"+enterTEXT+"[/hide]", "", false);
};
откройте `engine/modules/functions.php` ищем:
$allow_groups = array(1,2); // Группы которым скрытый текст доступен напостой!
Где 1,2 - группы (ID ) которым доступно всегда.
УСТАНОФКА завершена!
--------------------Fusion и jQuery
^ наверх ^
# 26
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 09 Сентября 2008, 15:39:02
Так, во первых реализация этого кода есть, а я просил помощи в проблеме "ЦИТАТА" , то есть обхода ограничения.
Код полезен лишь в качестве идеи, да и то весьма относительно, лучше всего взять код с форума - там уже все будет нормальным.
-------------------- Retired
^ наверх ^
# 27
mishqa35
SF Team
.jQ*
SF Support Team
Немогу без SFСообщений: 732
Откуда: Череповец
Зарегистрирован: 08 Ноября 2007, 20:35:30
Сказали спасибо 129 раз Статус: offline
ICQ статус
Опубликовано 10 Сентября 2008, 02:47:10
в php-fusion v7 hide идет видным токо админам, когда нажимаеш цитата все че в тегах hide невставляется в пост, тоже самое и при печати.. а переделать под hide=X несоставит труда =).. хотя я с траблой сталкнулся когда делал под v7..
вот в чем трабла.
Notice: Use of undefined constant iseepost_now - assumed 'iseepost_now' in
я eng незнаю так что помогай если че =)
--------------------Fusion и jQuery
^ наверх ^
# 28
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 10 Сентября 2008, 13:56:33
Notice: Use of undefined constant iseepost_now - assumed 'iseepost_now' in
Уведомление: неопределенная константа iseepost_now - принятая 'iseepost_now' в
Где то накосячил
iseepost_now функция обратного вызова а не константа, не может она быть константой
Или это в моем коде? Просто у меня еррор репортс на нуле
PS Насчет вырезать это логично, нада подумать, просто я как всегда минимализирую код, чтоб не было проблем с переносом и работой его.
-------------------- Retired
^ наверх ^
# 29
mishqa35
SF Team
.jQ*
SF Support Team
Немогу без SFСообщений: 732
Откуда: Череповец
Зарегистрирован: 08 Ноября 2007, 20:35:30
Сказали спасибо 129 раз Статус: offline
ICQ статус
Опубликовано 10 Сентября 2008, 14:49:26
да это в твоем коде.. я его почти к 7 прикрутил посмотрю че у мня с стоит в e..r..
--------------------Fusion и jQuery
^ наверх ^
# 30
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 10 Сентября 2008, 17:01:46
Ага все верно, не посмотрел синтаксис команды, теперь с фиксами:
$hide_u = substr_count($text, '[hide=');
global $userdata,$user_posts_now;
if(iMEMBER){
//[hide=?] parse
$user_posts_now = ( $userdata['user_posts'] > 0 ? $userdata['user_posts'] : 0 );
//callback iSee
if (!function_exists('iseepost_now')) {
function iseepost_now($matches)
{
$postsneed = $matches[1]; //|| iADMIN
global $user_posts_now;
if ( ( $user_posts_now >= $postsneed ) || iMOD || iSUPERADMIN ) { //users post >= needed
return '<div class=\'quote\'> [<b>'.$postsneed.'</b>] Скрытый текст:<br>'.$matches[2].'</div>';
}
else { //not enough messages
return '<div class=\'quote\' align=\'center\' ><center>Для просмотра скрытого текста - оставьте столько сообщений: <b>'.$matches[1].'</b></a></div>';
}
}
}
for ($i=0;$i < $hide_u;$i++) {
$text = preg_replace_callback(
'#\[hide=([0-9]*?)\](.*?)\[/hide\]#si',
'iseepost_now',
$text);
}
} //iMem end
else {
for ($i=0;$i < $hide_u;$i++) $text = preg_replace('#\[hide=([0-9]*?)\](.*?)\[/hide\]#si', '<div class=\'quote\' align=\'center\' >Для просмотра скрытого текста - <a href=\''.BASEDIR.'register.php\'><u>зарегистрируйтесь</u></a> и оставьте столько сообщений: <b>\1</b></div>', $text);
}
-------------------- Retired
^ наверх ^
# 31
mishqa35
SF Team
.jQ*
SF Support Team
Немогу без SFСообщений: 732
Откуда: Череповец
Зарегистрирован: 08 Ноября 2007, 20:35:30
Сказали спасибо 129 раз Статус: offline
ICQ статус
Опубликовано 10 Сентября 2008, 17:21:11
сделал для v7 все работает как часики.. но пришлось убрать из строки
if ( ( $user_posts_now >= $postsneed ) || iMOD || iSUPERADMIN ) {
вот это
|| iMOD
ошибка при печати была.
Notice: Use of undefined constant iMOD - assumed 'iMOD' in D:\xampp\htdocs\78\includes\bbcodes\hide_bbcode_include.php on line 33
и несмотря на ошибку все вроде бы нормально но в этой же печати выводился текст из под hide=x.. пришлось обойтись без iMOD.. может конешно это из за груп, там ведь все по другому сделано
[Изменил(а) mishqa35 , 10 Сентября 2008, 17:23:15]
--------------------Fusion и jQuery
^ наверх ^
# 32
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 10 Сентября 2008, 17:43:37
По сути мода нет уже в 6 фьжне вроде как :) Но с другой стороны он там есть. А в семерке хз, я токо поверхностно ее знаю.
Так продолжим, вторая часть кода, альфа пока что:
function parse_edithide($text) { //parsing hide func
if(!iMEMBER) die('Ты гость чтоли?'); // ;)
//if all is ok
//include func
if (!function_exists(iseecleanpost_now)) { //callback func
function iseecleanpost_now($matches)
{
$postsneed = $matches[1]; //|| iADMIN
global $user_posts_now;
if ( ( $user_posts_now >= $postsneed ) || iMOD || iSUPERADMIN ) { //users post >= needed
return '[hide='.$postsneed.']'.$matches[2].'[/hide]';
}
else { //not enough messages
return '[qu.''.ote]Для просмотра скрытого текста - оставьте столько сообщений: '.$matches[1].'[/quote]';
}
}
}
//eof inc
global $userdata,$user_posts_now;
$hide_u = substr_count($text, '[hide=');
$user_posts_now = ( $userdata['user_posts'] > 0 ? $userdata['user_posts'] : 0 );
for ($i=0;$i < $hide_u;$i++) {
$text = preg_replace_callback(
'#\[hide=([0-9]*?)\](.*?)\[/hide\]#si',
'iseecleanpost_now',
$text);
}
return $text;
}
Можно вставлять чисто в файл где идет цитирование и печать, вставлять в парсер бб кодов нельзя!
Далее обрабатываем сообщение которое выдается в окно редактирования вот так:
parse_edithide($data['post_message']) , теперь в цитате тоже все глухо.
PS По сути переделанная функция же, но только заточена под цитирование.
PPS Чем больше тестов - тем меньше багов :)
PPPS !!!! Поиск не парсит код, потому нада добавить parse в него. Хотя он все равно будет тупить кажися.
[Изменил(а) Psc , 11 Сентября 2008, 17:57:01]
-------------------- Retired
^ наверх ^
# 33
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 23 Августа 2009, 17:00:31
Если кому интересно - доделал хайд под семерку уже, переделывать под шестерку не буду, но можете на основе моего кода сделать под 6рку например
Здесь
Offtopic : PS мля семерик лочит форум от гостей
-------------------- Retired
^ наверх ^
Перейти на форум:
Правила форума
FAQ
Новости и объявления
Конкурс на лучший сайт на PHP-Fusion 6
Разработка нового фьюжена
Релизы/Текущие версии
Установка и настройка системы
Ошибки / Bugs Reports
Будущие версии
Народный SF Fusion
Юмор
Моды/Mods
Плагины/Plugins
Платные разработки плагинов и модов!
ArtCell - профессиональный дизайн, верстка
Темы оформления
Хостинг
Сайты на PHP-Fusion SF
Вопросы / Жалобы / Предложения
Флейм
Оптимизация сайта и методы раскрутки
96,142,080 уникальных посетителей сейчас: 15 Мая 2024, 04:48:33 Генерация страницы: 0.39 сек.
Original size:52 кб. GZipped size: 11 кб. Compression:78%