Ошибка в Panels for Drupal 6.*

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

Аватар пользователя albert t@drupal.org albert t@drupal.org 7 октября 2008 в 10:03

Доброе утро!

В модуле panels для шестёрки есть неприятный косячёк который показывает себя следующими сообщениями об ошибке

* warning: Invalid argument supplied for foreach() in Z:\home\sceo.loc\www\sites\all\modules\panels\includes\plugins.inc on line 1225.
* warning: Invalid argument supplied for foreach() in Z:\home\sceo.loc\www\sites\all\modules\panels\includes\plugins.inc on line 1123.

Разработчики пока устранили его патчем.

Патч такой

Index: plugins.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/panels/includes/plugins.inc,v
retrieving revision 1.12
diff -u -r1.12 plugins.inc
--- plugins.inc 3 Sep 2008 02:13:19 -0000 1.12
+++ plugins.inc 3 Sep 2008 18:55:19 -0000
@@ -1120,9 +1120,11 @@
*/
function panels_context_get_keywords($contexts) {
$keywords = array();
- foreach ($contexts as $id => $context) {
- if ($keyword = $context->get_keyword()) {
- $keywords["%$keyword"] = $context->get_title();
+ if (!empty($contexts)){
+ foreach ($contexts as $id => $context) {
+ if ($keyword = $context->get_keyword()) {
+ $keywords["%$keyword"] = $context->get_title();
+ }
}
}
return $keywords;
@@ -1222,9 +1224,11 @@
* Return the first context with a form id from a list of contexts.
*/
function panels_context_get_form($contexts) {
- foreach ($contexts as $context) {
- if (!empty($context->form_id)) {
- return $context;
+ if (!empty($contexts)) {
+ foreach ($contexts as $context) {
+ if (!empty($context->form_id)) {
+ return $context;
+ }
}
}
}

Как патчит?

Очень просто. Для маленького по размеру патча, как этот, находите файл указанный в RCS file:
И очень аккуратно и точно камментируете с помощью /** * */ всё что помечено "-" и вставляете всё что помечено "+"
Внимание! Обращайте особое внимание на дополнительный скобки и точный порядок следования строк. особенно если вы новичёк в php.

Патч и буквы на английском тут
http://drupal.org/node/304199#comment-1044577

Удачи.

Комментарии

Аватар пользователя Ромка Ромка 7 октября 2008 в 11:10

Панелс под шестерку находится в состоянии альфы, отсюда и глючность. Кроме этой ошибки я нашел еще 2 штуки и, как позже оказалось, о них уже зарепортили. Так что использовать этот модуль на рабочих сайтах пока не рекомендуется.

Предложенный вариант применения патча не очень хорош, потому что некоторые патчи могут изменять по несколько файлов и несколько тысяч строк. Запаришься руками применять такие патчи. Под виндой лучше воспользоваться Cygwin, в котором есть аналог юниксовой утилиты patch, которая автоматом обрабатывает файлы патчей.

Аватар пользователя albert t albert t 7 октября 2008 в 11:42

2 Ромка
Какие ошибки? В студию!

зы На коммерческих сайтах десятки тысяч ошибок, глюков, пустых страниц, вирусов, тупого текста и прочего прочего прочего. Так что ожидание идиального решения только глупость и ничего большего. Поставил? - работает? - кросброузерно? - и нечего ждать. Или может под 4.7 глюков не осталось? Smile

Аватар пользователя Ромка Ромка 7 октября 2008 в 16:51

albert t wrote:
2 Ромка
Какие ошибки? В студию!

http://drupal.org/project/issues/panels?states=8,13,14

albert t wrote:
зы На коммерческих сайтах десятки тысяч ошибок, глюков, пустых страниц, вирусов, тупого текста и прочего прочего прочего. Так что ожидание идиального решения только глупость и ничего большего. Поставил? - работает? - кросброузерно? - и нечего ждать. Или может под 4.7 глюков не осталось? :)

Бред. Во-первых, покажи мне сайт с десятком тысяч критических ошибок. Во-вторых, вот тебе цитата из Википедии: «альфа-версия продукта (как правило, программного или аппаратного обеспечения), в которой реализован не весь функционал, запланированный для данной версии продукта, штатными программистами (разработчиками и тестерами) с целью выявления ошибок в работе реализованных модулей и функций для их последующего устранения перед бета-тестированием».