Опыты чайника с экстами

Обсуждение новой системы расширения функциональности phpBB 4.0-dev, разработки новых расширений.
Аватара пользователя
Anvar
Сообщения: 19
Зарегистрирован: 05 июл 2014, 09:49

Опыты чайника с экстами

Сообщение Anvar »

Надо бы тему соответствующую создать, с полезными извращениями :D

Как накопится поболее интересных моментов, поделюсь..

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

как правильно задать redirect?
Дано

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

<form action="{U_REDIRECT}" method="post">
находится в шапке форума сабмит может быть с любой страницы.
В листенере пробую так

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

 $this->template->assign_var('U_REDIRECT', build_url());
и так

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

 $this->template->assign_var('U_REDIRECT', urlencode(build_url()));
в обоих случаях получайю искаженный url типа
Есть где-то пример как правильно делать?

п.с. и пожалуй подобную тему надо создать на гуру в разделе для авторов

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Алг писал(а):QR_BBPOST как правильно задать redirect?
В includes/functions.php есть функция redirect(), и есть meta_refresh() для отложенного редиректа.
В склейке постов используется
https://github.com/rxu/posts_merging/bl ... r.php#L191
https://github.com/rxu/posts_merging/bl ... r.php#L227

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

rxu писал(а):QR_BBPOST В includes/functions.php есть функция redirect(), и есть meta_refresh() для отложенного редиректа
это нерелевантно для моего вопроса обе функции принимают параметр $path которфй я и хочу сформировать.
по обеим ссылкам вы уходите всегда на viewtopic а аттрибуты командной строки вы имеете в массиве datа. Далее ловкость рук и никакого мошенствадело техники. Так же точно и я формирую во всех экстах. Тут проблема в том, что мы не знаем куда возврашаться, код стоит в overall_header и активировать его можно с любой страницы, в том числе и кастомной. И мы должны вернуться обязательно в это самое место. То есть все нужные параметы мы извлекаем из $this->user->page, как я поняла, а ф-ция build_url() берёт их и делает конкатенацию. вот только при этом мусорит в командной строке, и опять же из-за обшего вида задачи не знаю, как правильно убирать этот мусор.
Поищу в экстах типа быстрого логина, наверное, должно быть похожее

Отправлено спустя 32 минуты 24 секунды:
возможно тут ответ на мой вопрос http://www.phpbbguru.net/community/topi ... 5.html#top

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

есть экст PayBas/QuickStyle, где автор решает совершенно аналогичную задачу. Есть у него

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

<form action="{S_QUICK_STYLE_ACTION}" method="post">
в overall_header и, когда юзер меняет стиль, происходит сабмит и по идее юзер должен возвратиться на ту же страницу, перерисованную в другом стиле.

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

				$redirect = 'redirect=' . urlencode(str_replace(array('&', '../'), array('&', ''), build_url('style'))); // Build redirect URL
				$action = append_sid("{$this->root_path}ucp.$this->phpEx", 'i=prefs&mode=personal&' . $redirect); // Build form submit URL + redirect
				$action = preg_replace('/(?:&|(\?))style=[^&]*(?(1)&|)?/i', "$1", $action); // Remove style= param if it exists
				$this->template->assign_var('S_QUICK_STYLE_ACTION', $action);
по мне это какие-то танцы с бубном. Прежде всего непонятно зачем перенаправлять на ucp.$this->phpEx, если надо сделать апдейт только одного поля, для чего сначала формировать $redirect с параметром 'style', а потом регулярным выражением убирать параметр 'style' и два перенаправления. Может, я чего не учитываю?

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

написала простую функцию без всяких правок ядра. Пока вроде со всех станиц форума и стандартных и кастомных возвращает в то же место

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

    private function set_back_url()
    {
       $page = $this->user->page;
        if ($page['page_name'] == 'viewforum.php' || $page['page_name'] == 'index.php' ||$page['page_name'] == 'search.php' )
        {
            return str_replace('&', '&', $this->user->page['page']);
        }
        if ($page['page_name'] == 'viewtopic.php')
        {
             $url =  str_replace('&', '&', $this->user->page['page']);
             return str_replace('amp%3B', '', $url);
        }
        // Remove 'app.php/' from the page, when rewrite is enabled
		if ($this->config['enable_mod_rewrite'] && strpos($page['page_name'] , 'app.' . $this->php_ext . '/') === 0)
		{
            return  str_replace('app.' . $php_ext . '/', '', $this->user->page['page']);
		}
        return str_replace('&', '&', $this->user->page['page']);
    }
возможно, не все варианты учла, в процессе выяснится
а у PayBas/QuickStyle пока можно вернуться только в index.php и viewforum.php, ни с топика, ни с кастомной страницы правильная ссылка не формируется

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

У меня снова вопрос об относительных путях. Не знаю баг ли это, но формирование пути в листенере и в контролере даёт разные результаты
Пример: и там и там я формирую одинаковую строку для формирования пути к профилю

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

$url = append_sid("{$this->phpbb_root_path}memberlist.$this->php_ext", 'mode=viewprofile&u=' . $user_id);
Разница только в user_id. Оба значения передаются на клиент. Результат можно посмотреть тут http://chugunok.net/forum_test_3_1/index.php (логин tester, пароль 12345), откройте живой поиск по юзеру, выберите юзера и получите алерт с двумя путяти. Разными. Я понимаю, что это из-за перенаправления, но что-то с этим надо делать? Или просто никогда нельзя будет определять относительные пути на кастомных страницах?

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Алг писал(а):QR_BBPOST откройте живой поиск по юзеру, выберите юзера и получите алерт с двумя путяти.
У меня там живпоиск в Опере вообще не пашет.

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Опыты чайника с экстами

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

опера 12.16 и опера некст 26.0.1656.8 работает все
какая у вас?

Отправлено спустя 6 минут 57 секунд:
и как именно не пашет?

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Opera 25.0.1614.68, не пашет просто - набираю текст в поле, ничего не происходит.

Ответить