WildRAID Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 (изменено) Название: Скрытый текст v3b (WildRAID)Добавил: WildRAIDДобавлен: 03 Май 2008Обновлен: 09 Ноя 2008Категория: IP.Board 2.3.x Новая версия скрытого текста, улучшенная и дополненная. Изменения:1. Расширены возможности по созданию условий для отображения скрытого текста. Можно указывать несколько условий, каждое из которых должно быть выполнено.2. Проверка условий скрытого текста на корректность перед публикацией сообщения.3. Добавлена поддержка "склейки" сообщений, следующих друг за другом.4. "Правильная" кнопка в редакторе.5. Наглядная система отображения выполненных и невыполненных условий. Пример.6. Улучшена работа с простыми модераторами. Нажмите здесь, чтобы скачать файл Изменено 13 Июня 2010 пользователем WildRAID Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 3 Мая 2008 Автор Жалоба Поделиться Опубликовано 3 Мая 2008 (изменено) Как добавить отображение скрытого текста в профиль, в RSS-экспорт, в другую модификацию? Вызвать функцию add_private_data, которая находится в ipsclass, передав ей в качестве аргумента массив с информацией о сообщении. Возвращается текст сообщения с добавленным приватным текстом, либо с указанием условий его отображения (в зависимости от настроек в админке). В этот массив должны входить как минимум следующие элементы: 'post' - сам текст сообщения с указателями на скрытый текст;'private_data' - скрытый текст в виде сериализованного массива; Например: $row['post'] = $this->ipsclass->add_private_data($row); Как добавить своё условие? За работу с условиями отвечает функция pd_check_condition, находящаяся в ipsclass. В качестве аргумента она принимает одно базовое условие, проверяет его и возвращает массив, состоящий из трех элементов: 'passed' - 1 или 0. Соответсвенно, условие выполнено и условие не выполнено;'reason' - текст с описанием условия;'error' - произошли ли какие-нибудь ошибки при проверке условия; Разберём стандартное условие на примере проврки кол-ва постов пользователя (p=20): #Posts case 'p': //Сочетание символов, обозначающее условие #Error? if(!$match[2]) //Здесь мы проверяем, есть ли аргумент в условии, { //записанный через знак =, $error = 2; //т.к. очевидно, что просто 'p' является break; //бессмысленным условием } if($this->member['posts'] >= $match[2]) //Непосредственно проверка { $passed = 1; } else //Если проверка дала отрицательный результат, то { //посчитать, сколько постов еще "осталось". $remains = sprintf($this->lang['priv_remains'], $match[2] - $this->member['posts']); } $reason = sprintf($this->lang['priv_reason_posts'], $match[2]) . $remains; //Собираем полный текст условия break; Обратите внимание на то, что $reason всегда должно определяться вне зависимости от того, выполнено условие или нет. Ошибки на данный момент бывают двух типов.1 - общая ошибка без указания конкретной причины. Сейчас используется в тех случаях, когда пользователь написал что-нибудь вроде 'g=Пользователи+p=20+', т.е. оставил "повисшие в воздухе" разделители.2 - ошибка пропущенного обязательного аргумента. Очевидно, что условиях вроде g, p и tp бесполезны без аргумента. Добавлять свои условия можно в место, помеченное как: //add custom case here Как поменять отображение приватного текста в сообщении? Весь текст находится в lang_wr_private_data.php. Шаблоны располагаются в отдельной группе skin_private_data. private_data - скрытый текст, который разрешено видеть пользователю;private_data_hidden - скрытый текст, который видеть НЕ разрешено. Показывает условия его отображения;condition_success - отдельное условие, которое выполнено пользователем;condition_false - отдельное условие, которе НЕ выполнено пользователем;condition_or_separator - разделитель "-ИЛИ-", использующийся между группами условий; Обратите внимание на то, что для LOFI версии шаблоны находятся в lofi_skin.php. При редактировании шаблонов результаты видны для всего скрытого текста, а не только того, который создан ранее. Никакой rebuild постов не требуется. Изменено 3 Мая 2008 пользователем WildRAID Ссылка на комментарий Поделиться на других сайтах Прочее
hsania Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 http://www.ibresource.ru/forums/index.php?...t=0&start=0 - А можно сделать так, чтобы он работал с этим модом? У меня очень много "Спасибо" уже сказано, не хочется их терять. Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 3 Мая 2008 Автор Жалоба Поделиться Опубликовано 3 Мая 2008 (изменено) С ним и работает.) Попозже выложу инструкцию, как добавлять свои условия для совместимости вообще с любыми другими модификациями. P.S. Только перед установокой резревную копию сделайте.) На всякий случай... пока кто-нибудь не подтвердит, что все устанавливается без проблем. Изменено 3 Мая 2008 пользователем WildRAID Ссылка на комментарий Поделиться на других сайтах Прочее
BenZeR Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 с данным модом "спасибо" работает? http://www.ibresource.ru/forums/index.php?...st&p=299336 Ссылка на комментарий Поделиться на других сайтах Прочее
dark-grey Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 не могу найти $raw_post = $this->post->post['post'];в /souces/action_public/xmlout.php Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 WildRAID, это видимо$raw_post = $this->post->post['post'] . "\n" . '<!--IBF.ATTACHMENT_'. $pid . '-->';? Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 3 Мая 2008 Автор Жалоба Поделиться Опубликовано 3 Мая 2008 У меня вот так это место было написано: //----------------------------------------- // Prep for display //----------------------------------------- //$raw_post = $this->post->show_post_preview( $this->post->post['post'] ) . "\n" . '<!--IBF.ATTACHMENT_'. $pid . '-->'; $raw_post = $this->post->post['post']; O_o Можно искать по началу строки: $raw_post = $this->post->post['post'] И добавлять следующей строкой: //PRIVATE_DATA_MOD $raw_post = $this->ipsclass->add_private_data($this->post->post); Ссылка на комментарий Поделиться на других сайтах Прочее
Wolf Messing Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 Как я понял, с Мультиниками эта версия не работает? Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 3 Мая 2008 Автор Жалоба Поделиться Опубликовано 3 Мая 2008 (изменено) Нет.) Но можно сделать в индивидуальном порядке. Модераторам: просьба удалить\перенести второй пост в теме, чтобы два моих поста следовали подряд. Во второй буду выкладывать всякие технические моменты. В первом - общее описание. Изменено 4 Мая 2008 пользователем Arhar типа того? freeman2103 отреагировал на это 1 Ссылка на комментарий Поделиться на других сайтах Прочее
dark-grey Опубликовано 3 Мая 2008 Жалоба Поделиться Опубликовано 3 Мая 2008 Спасибо за мод, всё работает У меня вот так это место было написано: //----------------------------------------- // Prep for display //----------------------------------------- //$raw_post = $this->post->show_post_preview( $this->post->post['post'] ) . "\n" . '<!--IBF.ATTACHMENT_'. $pid . '-->'; $raw_post = $this->post->post['post']; а у меня строчки $raw_post = $this->post->post['post'];нету Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 Здравствуйте!Возникает ошибка при добавлении и редактировании сообщения с приватным текстом: Время: Sun, 04 May 2008 10:02:09 +0400 Код ошибки: 1054 Сообщение сервера: Unknown column 'private_data' in 'field list' IP-адрес клиента: 10.21.23.176 Страница: /index.php? Запрос: INSERT INTO ibf_posts (author_id,use_sig,use_emo,ip_address,post_date,icon_id,post,author_name,topi c_id,queued,post_htmlstate,c_music,private_data,post_key,post_parent) VALUES(13,1,1,'10.21.23.176',1209880929,0,'<!--private_data=0-->','Dammian',8404,0,0,0,'a:1:{i:0;a:2:{s:11:\\\"permissions\\\";s:8:\\\"reg, g=7\\\";s:4:\\\"text\\\";s:23:\\\"Скрываемый текст - тест\\\";}}','14053f91efbdac43d5dd5c9203170eaf',0) Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 4 Мая 2008 Автор Жалоба Поделиться Опубликовано 4 Мая 2008 Наверное, инсталлятор pd_install.php не запускали. Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 Запускали. Однако, в данном окне: Выполняются запросы к БД... Для продолжения нажмите далее Я нажал на далее и поле private_data добавлено не было. Сделал запрос в ручную: ALTER TABLE `ibf_posts` ADD `private_data` text NULLОшибка пропала. Появилась другая проблема. Когда я выбираю: Как отображать скрытый от пользователя приватный текст. Выводить сообщение с указанием условий отображения. то вместо условий, я получаю просто пустое сообщение. Видимо, нужно делать какие-то изменения в скинах ручным способом. Но какие именно изменения? Ссылка на комментарий Поделиться на других сайтах Прочее
BooDi Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 в инстале посмотреть можно... Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 Хм, проверил, шаблоны присутствуют. Где же искать проблему? Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 4 Мая 2008 Автор Жалоба Поделиться Опубликовано 4 Мая 2008 А второй вариант (отображать без указания конкретных условий) работает? Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 (изменено) Нет, так тоже почему-то не работает. Проверял данную комбинацию:[priv="reg"]Некий текст[/priv] и те, которые указаны в первом сообщении темы, как пример. http://forum.wow-russian.ru/1.jpghttp://forum.wow-russian.ru/2.jpg Изменено 4 Мая 2008 пользователем Dammian Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 4 Мая 2008 Автор Жалоба Поделиться Опубликовано 4 Мая 2008 Перепроверьте правки topics.php и xmlout.php. При редактировании приватный текст виден? После полного редактирования? Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 (изменено) При редактировании приватный текст виден? После полного редактирования?Да, но при обновлении страницы опять пропадает. http://forum.wow-russian.ru/3.jpg Так, вроде всё заработало. Я так понял, что свой созданный скрытый текст я могу видеть!? P.s Создал тестового пользователя в группу Рут Админов. Почему-то могу видеть скрытый текст, cозданный с другова аккаунта. Так и должно быть? Текст видят те, кто обладает правами супер модератора?Просто сделал [priv="p=2000"]Некий текст[/priv], условие как бы не соблюдено, но скрытый текст отображается всё-равно. Как быть? Изменено 4 Мая 2008 пользователем Dammian Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 4 Мая 2008 Автор Жалоба Поделиться Опубликовано 4 Мая 2008 (изменено) Именно. 1. Супермодераторы могут видеть всё.2. Пользователи могут видеть свой скрытый текст. Для обычных модераторов предусмотрено два режима. 1. (По умолчанию) Модераторы не видят скрытый текст, если не выполнены указанные при его создании условия. При редактировании сообщений других пользователей, содержащих скрытый текст, модераторы этот текст не увидят, а после редактирования он будет помещен в конец сообщения. Также они не смогут добавить новый скрытый текст в чужое сообщение. 2. Они могут видеть всё и редактировать всё, как супермодераторы. +++++++ Добавлено попозже. В принципе, это все настраивается в коде. В add_private_data: //----------------------------------------- // General conditions check //----------------------------------------- #Moderator's all-seeing eye? if( $this->member['g_is_supmod'] or (!$this->vars['priv_restrict_mods'] and $this->member['is_mod']) ) { $passed = 1; } #Watching our own private data? elseif( $this->member['id'] and ($this->member['id'] == $row['author_id']) ) { $passed = 1; } Убираем условия - и вот мы уже можем спрятать текст от самого себя. И от админов. В pre_edit_private_data if( $this->member['g_is_supmod'] or (!$this->vars['priv_restrict_mods'] and $this->member['is_mod']) ) { $passed = 1; } Убрать это к лешему.) И еще в class_post.php одну маленькую правку. Но зачем всё это?) Изменено 4 Мая 2008 пользователем WildRAID Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 Всё, теперь всё работает. Спасибо за модификацию! Ссылка на комментарий Поделиться на других сайтах Прочее
BooDi Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 а с в2 перейти на в3 лучше откатом в2, и потом установкой в3???просто я смотрю некоторые изменения идентичны... Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Мая 2008 Жалоба Поделиться Опубликовано 4 Мая 2008 1. в инсталляторе все-таки лажа с SQL запросом, подтверждаю, пришлось делать вручную2. к тому, что не работает у Dammian - надо зайти в настройки текста и нажать "сохранить" (в кеш настройки не записываются автоматически, следовательно тег (priv) не распознается)кроме этих 2 недочетов все нормально Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 4 Мая 2008 Автор Жалоба Поделиться Опубликовано 4 Мая 2008 (изменено) Спасибо, fixed. а с в2 перейти на в3 лучше откатом в2, и потом установкой в3??? Лучше откатом. Для надеждности. Изменено 4 Мая 2008 пользователем WildRAID Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения