Не надо ли доработать функцию drupal_match_path

Главные вкладки

Аватар пользователя logicsun logicsun 16 декабря 2009 в 2:33

Доброе время суток!
При использовании модуля popups
обнаружил что popup ссылки не добавляються на страницы администрирования.
после планомерного ковыряния модуля и выяснения причины обнаружил, что все дело в
if условии

<?php
    
elseif (strpos($path'*') !== FALSE && drupal_match_path($_GET['q'], $path)) {
      
popups_add_popups($popup_config);
    }
?>

Т.е. если $path являеться маской то проверить удовлетворяет ли текущий путь этой маске

Вот тут то и загвоздка
Путь admin/build/block/list почему-то не удовлетворяет маске admin/build/block/list/*

Либо так и должно быть (хотя это странно ) либо что-то не так с функцией drupal_match_path ?

Функция drupal_match_path преобразует маску admin/build/block/list/* в шаблон регулярного выражения
/^(admin\/build\/block\/list\/.*)&/

затем применяет preg_match("/^(admin\/build\/block\/list\/.*)&/", "admin/build/block/list" )
и в силу последнего завершающего слеша не находить соответствия

Кто что по этому поводу думает?

Комментарии

Аватар пользователя Dan Dan 16 декабря 2009 в 9:37

"logicsun" wrote:
Путь admin/build/block/list почему-то не удовлетворяет маске admin/build/block/list/*

Естественно, дело именно в слеше. admin/build/block/list* - вот так надо.
Если поправить по Вашей идее, то как задать такую маску: именно admin/build/block/list/* ? Она периодически нужна.

Аватар пользователя logicsun logicsun 16 декабря 2009 в 20:13

Ага !
ну я и говорю, тут дело в том, чтоб определить правильную идеалогию.
(Может правда аксиоматика адресов уже есть до я ее не знаю, тогда буду благодарен за ссылку )

правильно ли что

admin/build/block/list/ удовлетворяет маске admin/build/block/list/*

а

admin/build/block/list не удовлетворяет

(по виду маски формально не должен, но дополнительно принято, что это один и тот же адресс )

Да и плюс
Вроде бы создатель модуля popups считал что должен удовлетворяеть.

так как в функции popups_admin_popups()
определены правила замены адлесов только для адреса
admin/build/block/list/*
в результате при заходе на admin/build/block/list никаких popup ссылок штатно не появлялось

drupal же у меня по умолчанию считает путь без слеша на конце.

Соответственно вопрос, где правильней будет изменить
в модуле popups,
в функции друпал drupal_match_path
или тут дело настройки друпал ?

Аватар пользователя Dan Dan 16 декабря 2009 в 20:39

"logicsun" wrote:
правильно ли что

да

"logicsun" wrote:
Соответственно вопрос, где правильней будет изменить
в модуле popups,
в функции друпал drupal_match_path
или тут дело настройки друпал ?

Нигде. Всё работает как и задумал автор. Вы открываете список блоков и _там_ все ссылки работают на всплытие. Зачем вам громоздкий список блоков в попапе?

Если же так хочеться менять, то как Вы думаете, где надо менять: в модуле, реализующем конечную функциональность или в функции ядра?