Страница 10 из 13
UserTopics
Добавлено: 13 сен 2014, 10:46
Alecto
rxu, внес ваши правки.
так, когда перед глазами код, когда есть объяснения - более-менее понятно.
сам бы - не написал такое.
спасибо. вроде как работает. на гитхабе обновил.
из того, что хотел реализовать, сделал все.
единственное, что можно было бы еще сделать в расширении - вынести в админку опции где отображать.
в профиле - однозначно надо показывать ТЕМЫ. в ссылках - однозначно.
единственное - в минипрофиле можно включать/выключать Темы пользователя, на усмотрение администраторов.
как считаете? или не стоит с админкой связываться?
UserTopics
Добавлено: 13 сен 2014, 10:54
rxu
Почему не стОит, можно связываться хоть с чем. Чем глубже в это погружаешься, тем проще потом начинать следующий экст.
UserTopics
Добавлено: 13 сен 2014, 11:44
Alecto
сделал файл
usertopics_info.php по аналогии из поиска и БО
Код: Выделить всё
<?php
/**
*
* @package quickreply
* @copyright (c) 2014 Alecto
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
namespace alecto\UserTopics\acp;
class usertopics_info
{
function module()
{
return array(
'filename' => '\alecto\UserTopics\acp\acp_usertopics_module',
'title' => 'ACP_USERTOPICS',
'version' => '0.0.1',
'modes' => array(
'config_usertopics' => array('title' => 'ACP_USERTOPICS_CONFIG', 'auth' => 'ext_alecto/UserTopics && acl_a_usertopics', 'cat' => array('ACP_USERTOPICS_CONFIG')),
),
);
}
}
его можно для начала включить без второго файла
_module.php ? стили на каком этапе создаются ?
для подключения надо переустанавливать расширение?
Отправлено спустя 19 минут 57 секунд:
есть ли "рыба" для _module.php ? чтобы получить пустой файл, с минимально необходимым для включения кодом?
UserTopics
Добавлено: 13 сен 2014, 11:56
Татьяна5
Alecto писал(а):QR_BBPOST его можно для начала включить без второго файла _module.php ?
Объявить модуль в файле
Код: Выделить всё
'filename' => '\alecto\UserTopics\acp\acp_usertopics_module',
, а сам модуль не создать?
Alecto писал(а):QR_BBPOST стили на каком этапе создаются ?
Стили - на этапе установки phpBB. Для всех модулей одинаковые.
Шаблон - вместе с модулем
Alecto писал(а):QR_BBPOST для подключения надо переустанавливать расширение?
Да. Создать ещё файл миграции с добавлением модуля в БД, необходимыми настройками для расширения, и переустановить расширение.
И право
acl_a_usertopics тоже надо будет добавить (раз оно записано в
usertopics_info.php)
Насколько сама поняла, набор файлов для админки:
acp/extname_info.php - файл с подключением модуля. Содержит
filename - название php-файла модуля,
title - заголовок категории
version - модуля, версию,
config_extname - конфигурацию (
title - заголовок самого модуля,
auth - права на модуль,
cat - категория модуля)
acp/extname_module.php - сам модуль (если не требуется нестандартных настроек - файл на 90% шаблонный, различаются
namespace, название класса,
$this->page_title - заголовок,
$this->tpl_name - название шаблона модуля, и
$display_vars - настройки для расширения)
adm/style/acp_extname.html - файл шаблона (если нет нестандартных настроек - различие только в id формы)
language/(название языка)/info_acp_extname.php - языковой файл для админки, подключается при правильном названии сам
language/(название языка)/permissions_extname.php - языковой файл для прав доступа (если они добавлены)
migrations/произвольное_название.php - файл для внесения изменений в базу данных (в т.ч. и добавления модуля)
UserTopics
Добавлено: 13 сен 2014, 12:04
Alecto
acl_a_usertopics это право для установки модуля?
или дополнительное право? поскольку дополнительных прав для работы модуля нет, может тогда лучше удалить?
UserTopics
Добавлено: 13 сен 2014, 12:08
Татьяна5
Alecto писал(а):QR_BBPOST acl_a_usertopics это право для установки модуля?
Это право для отображения модуля. Можно вместо него использовать уже существующее, к примеру
acl_a_board (право изменять настройки конференции)
UserTopics
Добавлено: 13 сен 2014, 14:33
Alecto
вроде как собрал файлы для папки acp и adm.
делал по аналогии из файлов БО, архив приложил, можете глянуть на предмет явных косяков?
пока не включал ничего, потому как надо еще стили и миграцию освоить и сделать.
Отправлено спустя 1 час 32 минуты 32 секунды:
обновил
UserTopics
Добавлено: 13 сен 2014, 18:28
Alecto
всем поискам подставлялся тайтл "Ваши темы", что было ошибкой.
Сейчас переделал условие, чтобы для
egosearch было "Ваши темы", для
id= "Темы пользователя".
Было бы не плохо еще выводить имя пользователя.
Сейчас скрипт переименования выполняется в
overall_footer_page_body_after.html, это ближайшее событие, которое удалось найти.
Все события search... работают в строках и по этому не подходят.
Вопрос, можно ли как-то передать в это событие имя пользователя?
или может быть в самом скрипте найти первое вхождение имени пользователя для первой найденной темы и подставить?
Отправлено спустя 11 минут 38 секунд:
в профиле, если у пользователя 0 тем - не формирую ссылку.
что делать с минипрофилем? если считать темы пользователей для каждого поста - очень много дурных запросов к базе получится.
вижу вариант - показывать ссылку всегда, а на странице списка тем уже будет видно, что 0 тем.
Отправлено спустя 26 минут 56 секунд:
если такое решение нормальное - обновлю мод.
Код: Выделить всё
<!-- IF SCRIPT_NAME == "search" -->
<script type="text/javascript">
var isTopics = window.location.href.indexOf("sr=topics&sf=firstpost");
var isEgosearch = window.location.href.indexOf("id=egosearch");
if( isTopics > -1 && isEgosearch > -1 ) {
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_FROM_LINKS}";
} else if( isTopics > -1 && isEgosearch == -1 ) {
if ( !document.getElementById('page-body').getElementsByClassName("list-inner")[1] ) {
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_HAVE_NO}";
} else if ( document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username-coloured")[0] ) {
var isUserName = document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username-coloured")[0].innerHTML;
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_MINIPROFILE_TEXT}" + " " + isUserName;
} else if ( document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username")[0] ) {
var isUserName = document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username")[0].innerHTML;
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_MINIPROFILE_TEXT}" + " " + isUserName;
}
}
</script>
<!-- ENDIF -->
проверяю первый найденный элемент "
username-coloured" в диве с айди "
page-body", если он существует - это ник пользователя, добавляю его к заголовку и получаю "Темы пользователя НИК".
если элемент не существует, значит тем нет - вывожу сообщение
Пользователь не создал ни одной темы
UserTopics
Добавлено: 20 сен 2014, 22:20
rxu
В RC4 добавлено событие core.search_results_modify_search_title в search.php, через него можно менять заголовок страницы результатов.
UserTopics
Добавлено: 21 сен 2014, 00:06
Alecto
ок. спасибо. как только закончу с обновление и проверкой модов - перейду к доделыванию этого.
Отправлено спустя 1 час 19 минут 22 секунды:
что-то не могу понять, как использовать данное событие?
ведь мне нужно получить автора искомых тем, если они существуют. как получить автора через это событие, если там только с
author_id, l_search_title, search_id, show_results, start
можно работать?
Отправлено спустя 11 минут 11 секунд:
Код: Выделить всё
public function custom_topic_title($event)
{
$this->template->assign_vars(array(
'SEARCH_TITLE_USER_TOPIC' => ????,
));
}
как определить, что:
пользователь ищет собственные темы?
egosearch - первый заголовок
пользователь ищет темы другого пользователя
ID= - второй заголовок
в результате поиска найдено 0 тем - третий заголовок