Доброе время суток!
При использовании модуля 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" )
и в силу последнего завершающего слеша не находить соответствия
Кто что по этому поводу думает?
Комментарии
Естественно, дело именно в слеше. admin/build/block/list* - вот так надо.
Если поправить по Вашей идее, то как задать такую маску: именно admin/build/block/list/* ? Она периодически нужна.
Ага !
ну я и говорю, тут дело в том, чтоб определить правильную идеалогию.
(Может правда аксиоматика адресов уже есть до я ее не знаю, тогда буду благодарен за ссылку )
правильно ли что
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
или тут дело настройки друпал ?
да
Нигде. Всё работает как и задумал автор. Вы открываете список блоков и _там_ все ссылки работают на всплытие. Зачем вам громоздкий список блоков в попапе?
Если же так хочеться менять, то как Вы думаете, где надо менять: в модуле, реализующем конечную функциональность или в функции ядра?