Страница 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 тем - третий заголовок