Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

Пожелания дополнений Event List

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
2PiK
phpBB 1.4.2
Сообщения: 69
Зарегистрирован: 06.08.2008 9:18
Благодарил (а): 10 раз
Поблагодарили: 12 раз

Re: Пожелания дополнений Event List

Сообщение 2PiK »

rxu писал(а): Так может, перенести его в место перед
Лично мне не нужно, но наверное правильнее будет так, кому-то возможно понадобится.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

2PiK писал(а): В файле /download/file.php
https://tracker.phpbb.com/browse/PHPBB3-14101
https://github.com/phpbb/phpbb/pull/3831
2PiK писал(а): В файле /includes/mcp/mcp_topic.php
https://tracker.phpbb.com/browse/PHPBB3-14102
https://github.com/phpbb/phpbb/pull/3833
Изображение

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11541
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2594 раза

Re: Пожелания дополнений Event List

Сообщение Sheer »

Для модификации поиска пользователей требуются два события в memberlist.php
1. Как и было в 3.0 поиск пользователей по IP осуществляется по таблице posts, то есть определяются IP адреса, с которых пользователь оставлял сообщения, игнорируя IP адрес регистрации. То есть если пользователь не оставил ни одного сообщения, то найти его по IP невозможно. Чтобы устранить это недочет требуется изменить SQL-запрос ( Double Account Preventer - ошибка. )
Найти

Код: Выделить всё

                            AND " . $db->sql_in_set('forum_id', $ip_forums);
Добавить после

Код: Выделить всё

                    /**
                    * Modify the query used to get the list of users for search users by IP
                    *
                    * @event core.memberlist_modify_search_ip_query
                    * @var string    sql
                    * @var string    ips
                    * @since 3.1.6???
                    */
                    $vars = array(
                        'sql',
                        'ips'
                    );
                    extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_search_ip_query', compact($vars))); 
2. Для осуществления поиска по полю Откуда (Поиск пользователей по городу)
Найти

Код: Выделить всё

        // Count the users ... 
Добавить перед

Код: Выделить всё

        /**
        * Modify the query used to get the list of users for search users
        *
        * @event core.memberlist_modify_search_query
        * @var string    sql_from
        * @var string    sql_where
        * @since 3.1.6???
        */
        $vars = array(
            'sql_from',
            'sql_where',
        );
        extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_search_query', compact($vars))); 
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

Sheer писал(а): Для модификации поиска пользователей требуются два события в memberlist.php
https://tracker.phpbb.com/browse/PHPBB3-14113
https://github.com/phpbb/phpbb/pull/3844
Изображение

ostridm
phpBB 2.0.7
Сообщения: 551
Зарегистрирован: 30.03.2012 21:52
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Re: Пожелания дополнений Event List

Сообщение ostridm »

прошу добавить событие в app.php перед отсылкой респонса

Код: Выделить всё

$response = $http_kernel->handle($symfony_request);

vars = array(
        'symfony_request',
        'response',
);
extract($phpbb_dispatcher->trigger_event('core.app_before_send', compact($vars))); 

$response->send();

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

ostridm писал(а): в app.php перед отсылкой респонса
Цель? Пример использования есть?
Изображение

ostridm
phpBB 2.0.7
Сообщения: 551
Зарегистрирован: 30.03.2012 21:52
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Re: Пожелания дополнений Event List

Сообщение ostridm »

Эх. preg_replace по контенту. В экстеншенах не работает событие core.page_footer (не уверен что правильно написал его название но можно уточнить)

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

ostridm писал(а): preg_replace по контенту
Так app.php работает только для т.н. контроллеров.
ostridm писал(а): В экстеншенах не работает событие core.page_footer
Как так? С чего бы?
Изображение

ostridm
phpBB 2.0.7
Сообщения: 551
Зарегистрирован: 30.03.2012 21:52
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Re: Пожелания дополнений Event List

Сообщение ostridm »

ничего удивительного - разный пайплайн

вьютопик

Код: Выделить всё

// Output the page
page_header($page_title, true, $forum_id);

$template->set_filenames(array(
    'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_body.html')
);
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"), $forum_id);

page_footer(); 
контроллер

Код: Выделить всё

$response = $http_kernel->handle($symfony_request);
$response->send();

$http_kernel->terminate($symfony_request, $response); 
и внутри примерно так $this->helper->render

Код: Выделить всё

	protected function error($message, $status = 200, $title = '')
	{

		$title = $title ?: 'INFORMATION';

		$this->template->assign_vars(array(
			'MESSAGE_TITLE'		=> $this->user->lang($title),
			'MESSAGE_TEXT'		=> $message,
		));

		return $this->helper->render('message_body.html', $this->user->lang($title), $status);
	}
вот он и не вызывается....

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

Я не против, просто чтобы сделать ПР, надо разобраться в сути.
page_footer() вызывается в методе \phpbb\controller\helper->render(), и событие не срабатывает?
Изображение

ostridm
phpBB 2.0.7
Сообщения: 551
Зарегистрирован: 30.03.2012 21:52
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Re: Пожелания дополнений Event List

Сообщение ostridm »

Мне показалось что так и есть. Свой вопрос я закрыл событием.

Аватара пользователя
Алг
Former team member
Сообщения: 878
Зарегистрирован: 31.07.2012 23:11
Откуда: Израиль
Благодарил (а): 84 раза
Поблагодарили: 279 раз

Re: Пожелания дополнений Event List

Сообщение Алг »

Принимайте большой, оптовый,можно сказать, заказ на события в ACP Template Events
Все они для одной цели - сделать живой поиск юзеров/форумов/групп в панели администратора. Назвала я их по своему усмотрению, какое название дадут(если добавят) не столь важно, важно местоположение в шаблоне, которое я попыталась детализировать
Итак:

Отправлено спустя 37 секунд:
file acp_permissions.html

1.
find

Код: Выделить всё

<!-- IF S_FORUM_MULTIPLE --><p>{L_LOOK_UP_FORUMS_EXPLAIN}</p><!-- ENDIF -->
		<dl>
			<dt><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label></dt>
find inside

Код: Выделить всё

<dt><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label></dt>
replace

Код: Выделить всё

<dt><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label><!-- EVENT acp_search_permissions_forum_multiple --></dt>
2.find

Код: Выделить всё

				<p>{L_SELECT_FORUM_SUBFORUM_EXPLAIN}</p>
			<dl>
				<dt><label for="sforum">{L_LOOK_UP_FORUM}{L_COLON}</label></dt>
fide inside

Код: Выделить всё

<dt><label for="sforum">{L_LOOK_UP_FORUM}{L_COLON}</label></dt>
replace

Код: Выделить всё

<dt><label for="sforum">{L_LOOK_UP_FORUM}{L_COLON}</label><!-- EVENT acp_search_permissions_forum_multiple_subforum --></dt>
3. find

Код: Выделить всё

<!-- ELSEIF S_SELECT_GROUP and S_CAN_SELECT_GROUP -->

		<form id="select_victim" method="post" action="{U_ACTION}">

		<fieldset>
			<legend>{L_LOOK_UP_GROUP}</legend>
		<dl>
			<dt><label for="group">{L_LOOK_UP_GROUP}{L_COLON}</label></dt>
find inside

Код: Выделить всё

			<dt><label for="group">{L_LOOK_UP_GROUP}{L_COLON}</label>
replace

Код: Выделить всё

<dt><label for="group">{L_LOOK_UP_GROUP}{L_COLON}</label><!-- EVENT acp_permissions_group_local_append --></dt>
4. find

Код: Выделить всё

		<!-- ELSEIF S_SELECT_USERGROUP -->

		<div class="column1">

		<!-- IF S_CAN_SELECT_USER -->

			<h1>{L_USERS}</h1>

			<form id="users" method="post" action="{U_ACTION}">

			<fieldset>
				<legend>{L_MANAGE_USERS}</legend>
			<dl>
				<dd class="full"><select style="width: 100%;" name="user_id[]" multiple="multiple" size="5">{S_DEFINED_USER_OPTIONS}</select></dd>
				<!-- IF S_ALLOW_ALL_SELECT --><dd class="full" style="text-align: right;"><label><input type="checkbox" class="radio" name="all_users" value="1" /> {L_ALL_USERS}</label></dd><!-- ENDIF -->
			</dl>
			</fieldset>

			<fieldset class="quick">
				{S_HIDDEN_FIELDS}
				{S_FORM_TOKEN}
				<input type="submit" class="button2" name="action[delete]" value="{L_REMOVE_PERMISSIONS}" style="width: 46% !important;" /> &nbsp; <input class="button1" type="submit" name="submit_edit_options" value="{L_EDIT_PERMISSIONS}" style="width: 46% !important;" />
			</fieldset>
			</form>

			<form id="add_user" method="post" action="{U_ACTION}">

			<fieldset>
				<legend>{L_ADD_USERS}</legend>
				<p>{L_USERNAMES_EXPLAIN}</p>
			<dl>
				<dd class="full"><textarea id="username" name="usernames" rows="5" cols="5" style="width: 100%; height: 60px;"></textarea></dd>
				<dd class="full" style="text-align: left;"><div style="float: {S_CONTENT_FLOW_END};">[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</div><label><input type="checkbox" class="radio" id="anonymous" name="user_id[]" value="{ANONYMOUS_USER_ID}" /> {L_SELECT_ANONYMOUS}</label></dd>
			</dl>
			</fieldset>
find inside

Код: Выделить всё

<<dd class="full" style="text-align: left;"><div style="float: 
replace

Код: Выделить всё

<dd class="full" style="text-align: left;"><!-- EVENT acp_search_permissions_add_users--><div style="float: 
5. find

Код: Выделить всё

			<form id="add_groups" method="post" action="{U_ACTION}">

			<fieldset>
				<legend>{L_ADD_GROUPS}</legend>
			<dl>
				<dd class="full"><select name="group_id[]" style="width: 100%; height: 107px;" multiple="multiple">{S_ADD_GROUP_OPTIONS}</select></dd>
			</dl>
			</fieldset>
find inside

Код: Выделить всё

				<dd class="full"><select name="group_id[]" style="width: 100%; height: 107px;" multiple="multiple">{S_ADD_GROUP_OPTIONS}</select></dd>
replace

Код: Выделить всё

				<dd class="full"><select name="group_id[]" style="width: 100%; height: 107px;" multiple="multiple">{S_ADD_GROUP_OPTIONS}</select><!-- EVENT acp_search_permissions_add_groups--></dd>
6.find

Код: Выделить всё

<dd><select name="group_id[]" id="group_select">{S_ADD_GROUP_OPTIONS}</select>
add after

Код: Выделить всё

<!-- EVENT acp_search_permissions_group_admin_global -->
Отправлено спустя 40 секунд:
file permission_forum_copy.html

1. find

Код: Выделить всё

			<dt><label for="src_forum">{L_COPY_PERMISSIONS_FROM}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_FROM_EXPLAIN}</span></dt>
replace

Код: Выделить всё

			<dt><label for="src_forum">{L_COPY_PERMISSIONS_FROM}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_FROM_EXPLAIN}</span><!-- EVENT acp_search_permissions_forum_copy_from--></dt>
2. find

Код: Выделить всё

			<dt><label for="dest_forums">{L_COPY_PERMISSIONS_TO}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_TO_EXPLAIN}</span></dt>
replace

Код: Выделить всё

			<dt><label for="dest_forums">{L_COPY_PERMISSIONS_TO}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_TO_EXPLAIN}</span><!-- EVENT acp_search_permissions_forum_copy_to --></dt>
Отправлено спустя 42 секунды:
file acp_users.html
1. find

Код: Выделить всё

			{L_USER_GROUP_ADD}{L_COLON} <select name="g">{S_GROUP_OPTIONS}</select> <input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
add after

Код: Выделить всё

<!-- EVENT acp_search_user_add_access_groups-->
Отправлено спустя 28 секунд:
file acp_groups

1.find

Код: Выделить всё

<form id="acp_groups" method="post" action="{U_ACTION}">
    
add after

Код: Выделить всё

<!-- EVENT acp_search_groups_manage-->
2.find

Код: Выделить всё

<dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
replace

Код: Выделить всё

<dd><!-- EVENT acp_search_users_add_group_groups_manage -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
Отправлено спустя 38 секунд:
file acp_prune_forums.html
find

Код: Выделить всё

<dt><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label></dt>
replace

Код: Выделить всё

<dt><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label><!-- EVENT acp_search_forums_prune--></dt>
Отправлено спустя 34 секунды:
file acp_forums.html
find

Код: Выделить всё

<input class="button2" type="submit" value="{L_GO}" />
add after <!-- EVENT acp_search_forums_manage -->

Отправлено спустя 33 секунды:
file acp_logs
find

Код: Выделить всё

<input class="button2" type="submit" value="{L_GO}" />
add after

Код: Выделить всё

<!-- EVENT acp_forums_log -->
Отправлено спустя 33 секунды:
file acp_pran_users.html
find

Код: Выделить всё

<dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
replace

Код: Выделить всё

<dd><!-- EVENT acp_search_users_prune -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
Отправлено спустя 39 секунд:
file acp_groups_position.html
1. find

Код: Выделить всё

				<!-- END add_legend -->
			</select>
			<input class="button2" type="submit" name="submit" value="{L_ADD}" />
			<input type="hidden" name="action" value="add" />
add after

Код: Выделить всё

<!-- EVENT acp_search_groups_position_special -->
2. find

Код: Выделить всё

				<!-- END add_teampage -->
			</select>
			<input class="button2" type="submit" name="submit" value="{L_ADD}" />
			<input type="hidden" name="action" value="add" />
add after

Код: Выделить всё

<!-- EVENT acp_search_groups_position_general -->
Отправлено спустя 30 секунд:
file acp_email.html
1.find

Код: Выделить всё

<dt><label for="group">{L_SEND_TO_GROUP}{L_COLON}
add after

Код: Выделить всё

<!-- EVENT acp_search_group_email -->
2. find

Код: Выделить всё

<dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
replace

Код: Выделить всё

<dd><!-- EVENT acp_search_users_email -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd>
Отправлено спустя 27 секунд:
file acp_ban.html
find

Код: Выделить всё

<dd><textarea name="ban" cols="40" rows="3" id="ban"></textarea></dd>
replace

Код: Выделить всё

<dd><textarea name="ban" cols="40" rows="3" id="ban"></textarea><!-- EVENT acp_search_user_ban --></dd>
Отправлено спустя 1 минуту 3 секунды:
Всего 20 событий
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

Алг писал(а): Всего 20 событий
События должны быть обязательно внутри элементов dt/dd, или могут обрамлять их?
Изображение

Аватара пользователя
Алг
Former team member
Сообщения: 878
Зарегистрирован: 31.07.2012 23:11
Откуда: Израиль
Благодарил (а): 84 раза
Поблагодарили: 279 раз

Re: Пожелания дополнений Event List

Сообщение Алг »

внутри. Иначе местоположение текстбокса быстрого поиска будет не там, где ему место
Если есть смысл, то могу прислать видоизмененные файлы( с вставленными событиями) и новую версию расширения( черновую, конечно), чтобы было видно, для чего каждое событие
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14745
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 354 раза
Поблагодарили: 1623 раза

Re: Пожелания дополнений Event List

Сообщение rxu »

Алг писал(а): Если есть смысл, то могу прислать видоизмененные файлы
Пока нет, если у девелоперов возникнут вопросы - обращусь :)
Изображение

Вернуться в «Для авторов»