Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Расширения - это просто!

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

Спасибо! заработало.
а в файле /ext/krab24/flatslist/styles/all/template/event/overall_header_navigation_prepend.html
аналогичная конструкция

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

<!-- IF ($this->auth->acl_gets('u_viewtestpage') -->TEST<!-- ELSE --><!-- ENDIF -->
вываливает ошибку :(

комбинация с {% if u_viewtestpage %} ошибки не выдает, но и содержимое ссылки тоже не дает ))
Просто хороший человек
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

Немудрено, если запихивать в шаблон PHP код.
Изображение
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

rxu, почему подход, работающий в html шаблоне /ext/krab24/flatslist/styles/all/template/mytest_body.html не подходит для html шаблона /ext/krab24/flatslist/styles/all/template/event/overall_header_navigation_prepend.html?
Просто хороший человек
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Sheer »

Подходит. Но чтобы работало, объект шаблона должен быть определен в соответствующем php-сценарии.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

попробовал использовать <!-- IF U_CAN_VIEW_LIST --> и объявить ее "заранее" - в /event/listener.php
добавил:
protected $auth; в описание класса;
\phpbb\auth\auth $auth в параметры функции __construct
$this->auth = $auth; (само присвоение)
'U_CAN_VIEW_LIST' => $this->auth->acl_gets('u_viewtestpage'), в функции add_page_header_link($event)
получил код:
listener.php 

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

<?php
/**
*
* @package phpBB Extension - My test
* @copyright (c) 2018 moonrise
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace moonrise\mytest\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class listener implements EventSubscriberInterface
{
	protected $auth;

    static public function getSubscribedEvents()
    {
        return array(
			'core.user_setup'                        => 'load_language_on_setup',
            'core.page_header'                     => 'add_page_header_link',		 
		 );
    }

    public function __construct(\phpbb\template\template $template, $phpbb_root_path, \phpbb\auth\auth $auth)
    {
        $this->template = $template;
        $this->phpbb_root_path = $phpbb_root_path;
		$this->auth = $auth; 
	}	
	
    public function add_page_header_link($event)
    {
        $this->template->assign_vars(array(
            'U_TEST_PAGE' => append_sid("{$this->phpbb_root_path}mytest"),
            'U_CAN_VIEW_LIST' => !$this->auth->acl_gets('u_viewtestpage'),
        ));
    }	
	
	public function load_language_on_setup($event)
    {
        $lang_set_ext = $event['lang_set_ext'];
        $lang_set_ext[] = array(
            'ext_name' => 'moonrise\mytest',
            'lang_set' => 'mytest_lng',
        );
        $event['lang_set_ext'] = $lang_set_ext;
    }
}
Ругается:
Catchable fatal error: Argument 3 passed to moonrise\mytest\event\listener::__construct() must be an instance of phpbb\auth\auth, none given, called in /home/p426030/www/******.*****/cache/production/container_4335734bbdd20f586549a504dff5f80c.php on line 2295 and defined in *****/ext/moonrise/mytest/event/listener.php on line 66
66 строчка - вызов конструктора.
Последний раз редактировалось moonrise 06.06.2018 12:13, всего редактировалось 2 раза.
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, всё, что добавляете в параметры конструктора, должно быть также соответствующим образом добавлено в данном случае в config/services.yml.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 06.06.2018 11:25 moonrise, всё, что добавляете в параметры конструктора, должно быть также соответствующим образом добавлено в данном случае в config.yml.
в смысле в config/services.yml ?
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, да, прошу прощения, исправил.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

спасибо большое. "забыл" совсем.
Теперь заработало и праверка происходит.. но всплыло, что в момент переходов версий (migrations/mytest_0_0_2.php) какая-то роль не прописалась. Можно ли как-то посмотреть руками/запросом наличие роли и кому?
таблицы permission в бд не находит :(
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, откройте базу данных в подходящем редакторе (например, в phpMyAdmin), так работать с ней гораздо удобнее.
Таблицы, отвечающие за права доступа, идут самыми первыми в общей структуре.

А назначение ролей пользователям можно проверить и средствами движка phpBB в админке.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

так вроде так и делаю :oops:
я наверное не так написал. не роль не добавилось, а разрешение к роли.
в migrations/mytest_0_0_3.php в функции update_data() есть код:

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

		return array(
			// Update configs
			array('config.update', array('mytest_version', '0.0.3')),
            // Add permissions
            array('permission.add', array('u_viewflatslistpage', true)),
             // Add permissions sets
//			array('permission.permission_set', array('GUESTS', 'u_viewtestpage', 'role', false)),
            array('permission.permission_set', array('ADMINISTRATORS', 'u_viewtestpage', 'group', true)),
			array('permission.permission_set', array('ROLE_ADMIN_STANDARD', 'u_viewtestpage', 'role', true)),
		);
но проверка у администратора на наличие этого разрешения возвращает false (расширение отключал/включал)

При этом в предыдущей версии мигратора аналогичная конструкция для группы REGISTERED и роли ROLE_USER_STANDARD отработала нормально.
Последний раз редактировалось moonrise 06.06.2018 12:15, всего редактировалось 1 раз.
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, т.е. для группы "Администраторы" значение права доступа не установлено?
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

с 99% вероятностью да. как раз это и хочу проверить.
То есть проверка, про которую спрашивал выше (<!-- IF U_CAN_VIEW_LIST --> в /ext/moonrise/mytest/styles/all/template/event/overall_header_navigation_prepend.html и 'U_CAN_VIEW_LIST' => $this->auth->acl_gets('u_viewtestpage'), в функции add_page_header_link($event) в /event/listener.php) выдает false
Последний раз редактировалось moonrise 06.06.2018 12:25, всего редактировалось 1 раз.
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, так я Вам и предлагаю не думать, почему не работает конечная конструкция, а проверить по пунктам.
И первый пункт - посмотреть, что же на самом деле стоит для группы.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 06.06.2018 12:25 посмотреть, что же на самом деле стоит для группы
а как? через админку -> пользователи и группы - > права групп не показывает. Через Права доступа - Роли - Администраторские роли тоже
Просто хороший человек
Ответить

Вернуться в «Для разработчиков»