Сегодня речь пойдет о том, как запрограммировать сохранение формы в Друпале через AJAX. В принципе, для этих целей уже существует модуль Ajax. Но вдруг у нас крайне хитрые потребности, или мы просто не хотим ради сабмита пары форм тащить за собой целый модуль?
В общем, задача такова: создать средствами Друпала простую форму, вывести ее на страницу, а затем — сохранять через AJAX-запросы, выводя на ту же страницу результаты сохранения и ошибки валидации формы, если таковые были. Без обновления страницы, естественно. Для решения задачи будем использовать Form API Друпала и jQuery с плагином Form. Оформим все в виде отдельного модуля.
Рассмотрим решение по порядку. Кому не хочется читать статью целиком, тот может сразу скачать архив с исходниками тестового модуля и поиграться с ним.
Недавно дочитал книгу И. Пыхалова, А. Дюкова и других авторов «Великая оболганная война — 2». Книга по сути — сборник из нескольких статей об антисоветских мифах, распространяемых гадами сплошь и рядом. Очень хороших, толковых статей.
Предисловие:
Наши враги — и внешние, и внутренние — покушаются на самое святое — на народную память о Великой Отечественной войне. Нас пытаются лишить Великой Победы. Вторя геббельсовской пропаганде, псевдоисторики внушают нам, что Победа-де была достигнута 'слишком дорогой ценой', что она якобы обернулась 'порабощением Восточной Европы', что солдаты Красной Армии будто бы 'изнасиловали Германию', а советских граждан, переживших немецкую оккупацию, чуть ли не поголовно сослали в Сибирь.
Враги приравнивают Советский Союз к нацистскому Рейху, советских солдат — к фашистским карателям. И вот уже от нашей страны требуют 'платить и каяться', советскую символику запрещают наравне с нацистской, а памятники воинам-освободителям в Восточной Европе под угрозой сноса…
Но нам не за что каяться!
Эта книга — отповедь клеветникам, опровержение самых грязных, самых лживых мифов о Великой Отечественной войне, распространяемых врагами России.
Книжка отличная, всем любознательным — очень рекомендуется.
В принципе, статьи, из которых она составлена, можно найти и в Интернете. Но на бумаге — куда приятнее и интереснее. Жаль, первой части в магазине не было.
Полуторачасовая премьера шестого сезона получилась хорошая, в меру веселая и в меру драматичная. Хаус поиграл в Макмерфи, побыл героем-любовником и даже песенку спел. Непонятно только, действительно в следующих сериях будет "brand new House", или же авторы хитростью вернут дохтуру его мерзопакостный характер? - Are you a new doctor on the ward?
- Technically, yes. С возвращением, доктор Хаус!
Книжка «Имя розы» Умберто Эко — отличная. Собственно, учитывая ее известность, говорить об этом бессмысленно: в интернетах уже есть тысячи хвалебных рецензий.
А вот снятый по мотивам книжки художественный фильм 1986 года выпуска не так хорош, несмотря на наличие в оном Шона Коннери в главной роли. Собственно, оно и понятно: чтобы показать весь объем изложенных Умбертой событий и сюжетных линий, нужно делать сериал (или хотя бы мини-сериал). Подумалось, что создателям придется отказаться от показа одних событий в пользу других. Однако вместо этого, как ни странно, в фильм попытались втиснуть все. И получилось, как мне кажется, в ущерб пониманию происходящего.
К примеру, вот была детективная линия, в смысле убийств, библиотеки, смеха и интриг в руководящем составе аббатства, но объяснения «что к чему и почему» в фильм не попали, остались только невнятные прыжки Шона Коннери по территории. И диалоги о смехе порезали так, что в конце даже и непонятно, с чего весь сыр-бор. Была политическая линия: встреча францисканцев и имперцев с представителями папы, а ее показали как глупые выкрики нескольких клоунов. Была религиозно-еретическая линия о Дольчине — от нее осталось только упоминание имени предводителя. А зачем? Могли бы просто сделать «еретиков». Была, в конце-концов, суровая и богатейшая библиотека с секретами, а получился двухэтажный сарай, в который героев и не пускают-то чисто из вредности, а не по обоснованным в книге соображениям.
Зато немало времени уделили Святой инквизиции. Бернарда Ги сделали в десять раз более злым, кровожадным и тупым, чем в книжке. Похоже, ради того, чтобы он арестовывал, судил, пытал и жег, оригинальные события и сокращались. Получилось, что главной мыслью фильма и является нелюбовь авторов к инквизиции.
Понятно, что кино сделано «по мотивам», поэтому о серьезных расхождениях, таких как судимость Вильгельма и сожжение у стен аббатства в конце, говорить не имеет смысла — они допущены в угоду драматизму и замыслу автора. Хотя в мелочах искажения непонятны. Зачем, к примеру, было рассказывать, что Адсон — францисканец, когда в книге явно было указано, что бенедиктинец?
К слову, Адсон в исполнении пятнадцатилетнего Кристиана Слейтера вышел хорошо. Все эти его метания, испуги, впечатления изображены неплохо (только, опять же, мало!). Жаль что, не нашлось места более красочным видениям или сну про «Киприанов пир», который он в конце книги видит.
А еще отлично получился из известного актера Рона Перлмана помощник келаря Ремигия, Сальватор. Здоровский упырь!
В целом же фильм ни о чем. Все интересные места урезаны, детективная линия сокращена до минимума, а про буйства инквизиции — скучно. Не самая удачная среди экранизаций разных книг. А после нее Умберто Эко больше никому экранизировать свои книжки не разрешал.
Недавно возникла нужда написать функцию, создающую несколько одинаковых форм на одной странице. Формы небольшие, состоят из одного текстового поля и кнопки, а также (что важно) двух переменных для внутреннего использования:
Однако очевидно, что данный код работать не будет. Загвоздка в том, что все формы генерируются с одинаковым form_ID и при сохранении любой формы Друпал будет считать, что сохраняется самая первая. Поэтому $id1 и $id2 всегда будут равны указанным при создании первой формы на странице. Значит, нужно сделать, чтобы, с одной стороны, у всех форм при создании был разный ID, а с другой - чтобы создавались и обрабатывались они одной функцией.
Порывшись изрядно по Drupal.org было найдено решение в виде хука hook_forms. Собственно, будь на странице в Drupal API правильное описание хука, искать изрядно и не пришлось бы. А так - несколько раз натыкался, и каждый раз думал, что это не выход.
Дело все в том, что в описании hook_forms функция для Drupal 6 указана без аргументов, тогда как на деле она принимает и $form_id, и $args. Все сразу встало на свои места. Вот так для всех форм, начинающихся с _my_form, задается единый конструктор:
/**
* Реализует hook_forms
*
* @param string $form_id - ID формы
* @param array $args - дополнительные параметры, полученные от drupal_get_form
* @return array
*/
function mymodule_forms($form_id,$args) {
$forms = array();
if (strpos($form_id,'_my_form') === 0) {
$forms[$form_id] = array(
'callback' => '_my_form',
'callback arguments' => $args,
);
}
return $forms;
} //function mymodule_forms
Но поскольку формы у нас стали с разными ID, Друпал при сохранении формы будет искать разные функции-обработчики. Так что нужно указать единый валидатор и обработчик при создании формы:
function _my_form(&$form_state,$id1,$id2) {
//...
//валидатор и обработчик
$form['#submit'] = array('_my_form_submit');
$form['#validate'] = array('_my_form_validate');
return $form;
}
Дело сделано. Теперь остается только немного изменить генерацию данных на странице, чтобы формы создавались с разными ID:
//...
$id2 = x;
foreach ($ids as $id1) {
//$id1, естественно, должен быть уникальным
$output .= drupal_get_form('_my_form'.$id1,$id1,$id2);
}
//...
return $output;
— Where would the fun be if we already knew all there is to know?
Dr. Walter Bishop.
Наука с самых давних пор занимала важное место в жизни человеческого общества. А со времен Просвещения — пробралась на важнейшее. Наука пролезла в политику и идеологию, от ученых уже требуют ответов на вопросы, на которые они, возможно, и не обязаны отвечать. Наука, в общем, постепенно замещает собой религию и в некотором роде сама становится идолом. Но не это в данный момент важно. А важно, что с развитием научного мировоззрения появился и раздел сказок, имеющих под собой научную основу, под общим названием научная фантастика, она же science fiction, она же sci-fi.
Нетрудно догадаться, что сериал «Fringe», о котором и пойдет речь — это как раз она, научная фантастика. Название «Fringe» в первую очередь обозначает fringe science, что в переводе на русский звучит как «пограничная наука», то есть такая наука, которая, с одной стороны, научная и исследования проводятся в соответствии с научным методом, а с другой — уже на грани фантастики. Не за гранью, а на грани.
У нас, кстати, термин «пограничная наука» как-то не особо прижился. Наверное, это потому что на Родине сейчас и передовых исследований не так много, и наука от западной после развала СССР отстает сильно и серьезно. Зато у нас в достатке другой науки, с приставкой «псевдо», или даже «лже». Новых хроноложцев, торсионистов, шаманов молекулярной структуры воды, ревизионистов всех мастей, академиков черныя и белыя магии и прочей брехни в современной России хоть отбавляй. Так что сериал пока что американский, про американскую, соответственно, fringe science.
Сериал, стало быть, называется «Грань». Главной героиней выступает Оливия Данэм (Анна Торв), сотрудница Федерального бюро расследований. Случилось как-то раз, что эту сотрудницу вызвали на помощь в странном расследовании: приземлившийся в целости и сохранности на автопилоте самолет оказался наполнен трупами. Причем не просто трупами, а разложившимися до костей за рекордное время трупами, мясо и кожа с которых превратились в желе.
В общем, что случилось — неясно, за рабочую версию принимают некий вирус. В ходе расследования напарник Оливии Джон, по-совместительству — ухажер — оным вирусом успешно заражается, после чего его буквально становится видно насквозь. Однако Оливия не пользуется моментом, чтобы внимательно разглядеть возлюбленного. Напротив, она торопится его вылечить и спасти. Расследование, поэтому, накаляется. В конце-концов, Оливии в руки попадают материалы о неком докторе наук, Уолтере Бишопе (Джон Нобл). В прошлом доктор, как оказалось, занимался научными исследованиями (на государственные деньги) в области пограничной науки. Причем, слыл доктор Бишоп в своем деле гениальнейшим специалистом, и заражение борта 627, похоже, связано как раз с его работой.
Вообще, ученые в американских фильмах постоянно занимаются разнообразными противоествественными и опасными экспериментами на деньги правительства. Эксперименты эти «идут не так», в результате чего то и дело происходят катастрофы с участием зомби, мутантов, ядовитых веществ и вирусов, или сошедших с ума огромных человекоподобных роботов. Вот и доктора Уолтера Бишопа наука до добра не довела: последние 17 лет жизни он проводит взаперти, в психиатрической лечебнице.
Но Оливия твердо стоит на своем: раз нужно спасти любимого, то психов на свободу можно выпускать не задумываясь! Американское законодательство, правда, более рассудительно и просто так выпустить доктора не получается. В результате Оливии приходится лететь аж в самый Ирак, где скрывается от своей прошлой жизни (долгов, врагов и алиментов) сын душевнобольного доктора, Питер (Джошуа Джексон). Не то чтобы сын горит желанием возвращаться в Америку, да и отца брать под опеку ему не хочется. Но в конце-концов Оливии удается наладить отношения, и вот — главные герои сериала в сборе, а доктору, выписанному под ответственность сына, уже организовали лабораторию для зловещих бесчеловечных опытов. А также корову, чтобы было не скучно.
Однако несмотря ни на какие усилия спасти милого Оливии не удается. Но доктор Бишоп не зря взялся за дело: если спасти Джона еще нельзя, то можно по крайней мере организовать свидание — непосредственно в подсознании последнего, демонстрируя чудеса своей особой пограничной науки в действии. Свидание проходит продуктивно: Оливии удается напасть на след подозреваемого во всех происходящих в первой серии несчастьях.
Слово за слово, подозреваемого ловят, он помогает вылечить напарника и заодно гнусно сдает последнего: оказывается, Джон самый настоящий предатель! Между тем, предатель Джон успешно вылечивается, душит стукача подушкой, убегает в автомобиле, попадает в аварию и погибает. А затем его труп крадут, дабы сделать с ним то, что положено делать с трупами предателей.
В результате всей этой беготни и суеты Оливия, Питер и доктор Уолтер Бишоп попадают на работу в подразделение «Грань» под начало специального агента Филиппа Бройлза (которого играет Лэнс Реддик) и немедленно приступают к расследованию серии странных явлений, складывающихся в загадочную и пугающую Схему. «Как будто кто-то ставит эксперименты, и весь мир ему лаборатория» — говорят герои. Вдобавок расследование выводит героев на корпорацию «Massive Dynamic», владеющую всеми ведущими разработками в области пограничных наук. Причем, начальником корпорации работает Вильям Белл — доктор наук, гений, умница и бывший партнер доктора Бишопа по былым исследованиям. Вероятно, это намек на Bell Labs, а может и нет. Так или иначе, помощь доктора Белла не помешала бы, но он — вот незадача — пропал.
В общем, расследование преступной Схемы начинается. В каждой серии герои расследуют самые разные феномены — гибридные животные, вирусы, телепатия, телекинез, телепортация, телевизор, телескоп, телефон, телеграф, телетайп, телешоу. Но все их можно объединить по двум признакам: есть связь с работами доктора Бишопа и имеются человеческие жертвы. Расследуемые явления в сериале препарируются как сугубо научные, поддающиеся исследованиям и рациональному объяснению. Без какой-то особенной трансцендентной подоплеки. По крайней мере — до последних серий сезона.
В процессе расследования за Схемой, помимо Massive Dynamic, всплывают уши другой организации — ZFT. Название в переводе с немецкого на английский, а затем — на русский, означает «Уничтожение через технологический прогресс». Выясняется, что организация эта — террористическая, причем она повинна практически в каждом расследуемом научном злодеянии. Цель собственного существования организация ZFT видит в драматичной интерпретации известной идеи технологической сингулярности — гипотетической переломной точки развития прогресса, после которой может случиться все что угодно. И с точки зрения ZFT это «что угодно» ничего хорошего человечеству не сулит. Естественно, главные герои встают на тернистый путь борьбы против уничтожения через прогресс.
В целом получилось вполне так интересно и загадочно. Вроде бы докторы Бишоп и Белл много лет назат просто занимались важными передовыми исследованиями и это нормально, но — не все так просто. Вроде бы Питер обычный парень, немного аферист и сын доктора Бишопа, но — не все так просто. ZFT — террористическая организация, ярко выраженные злодеи, или нет? А Оливия вроде бы агент ФБР, нормальная женщина, для которой все эти научные вопросы немного сложны даже, но и тут тоже не все просто.
Что же касается динамизма — с ним все в порядке. Погони, стрельба, драки, аресты и спецэффекты имеются. Но и тут на обычное на первый взгляд расследование со всех сторон нагнетется загадочность. Обыкновенный преступник вдруг извлекает из кармана необыкновенно мощный короткоствол и сносит все на своем пути, а затем из другого кармана достает секретный прибор для чтения мыслей. Арестованный злодей неожиданно испаряется из круглосуточно охраняемой камеры. А невзрачный лысенький мужичок в костюме вдруг начинает предугадывать события и оказывается самой загадочным персонажем сеариала по фамилии Наблюдатель. Драма нарастает от серии к серии, все идет к прорицаемой ZFT катастрофе, и в конце-концов наступает развязка. Мне вообще это нравится, когда каждый сезон логически чем-то завершается. Хотя, конечно, ответы были даны не на все вопросы — ведь нужно показывать второй сезон.
В заключение скажу сакраментальное: отличный сериал, смотрится на одном дыхании. И вообще, его стоит смотреть уже только за блестящую роль доктора Уолтера Бишопа. Тихий псих и гениальный ученый в исполнении Джона Нобла — на пять с плюсом. Серия, где ему приходится возвращаться в лечебницу — прекрасна.
Хотелось бы, чтобы достоинства сериала во втором сезоне не расплескали. Там, кстати обещают уделить гораздо больше времени загадочному Наблюдателю и, конечно, доктору Вильяму Беллу, которого, кстати, играет Леонард Нимой, звезда американских сериалов.
Ну и главное: премьера второго сезона состоится уже сегодня. Смотреть обязательно.
Как известно, дорожное движение в Таиланде — левостороннее. Выглядит это забавно: все едут не в ту сторону. Притом, я слышал от некоторых людей, что, дескать, привыкнуть к такой организации движения довольно просто. Но, если честно, сам я за три недели так и не привык, переходя дорогу, смотреть сначала направо. Наверное, поэтому мы так и не воспользовались прокатом автомобилей.
Ну и еще потому что, проживая на острове площадью в двести с небольшим квадрадных километров, мы так и не поняли, куда и зачем там нужно ехать на машине. Но — по порядку.
Прогулки по Бангкоку выявили, что машин в городе очень много и пробки, как и у нас, являются нормой. Наряду с подземным, имеется и надземное метро, которое, в совокупности с хайвеями (в Бангкоке они платные), сильно мешало моему GPS-навигатору улавливать спутниковые сигналы. Но заблудиться мы все равно не успели.
Также выяснили, что благодаря благоприятному климату, город просто наводнен разнообразными скутерами, мопедами, мотороллерами и мотоциклами под общим названием «мотобайки». Автомобили, естественно, тоже есть, преимущественно — японские, что и неудивительно.
Кроме того было обнаружено, что (обратно — как и у нас) имеется ряд сложностей с переходом дороги. Оказалось, что в Бангкоке несколько странно работают светофоры. А именно — «зеленый человечек», приглашающий пешеходов переходить дорогу, включается, по-видимому, одновременно с одним из направлений движения машин через этот же переход. Ну или просто машины светофор игнорируют. Так или иначе, сплошной поток транспортных средств явно не жаждет пропускать идущих граждан, так что пересечение широкой улицы превращается в интереснейший аттракцион. Ситуация усугубляется в тех местах, где светофоры отсутствуют. Так, переход дороги с четырьмя полосами в каждую сторону по нерегулируемой «зебре» увенчался успехом только минут через 15. Успех пришел, когда мы увидели, что вместо светофора переход оборудован вазой с красными флагами. Так и переходили — размахивая красным флагом, громко распевая «Это есть наш последний и решительный бой» и постукивая длинным древком по бошкам незадачливых мотоциклистов.
Перебравшись на остров Самуи, окончательно укрепились во мнении, что в Таиланде пешеходов не уважают: на улицах либо тротуаров вовсе нет, либо есть, но шириной в полторы-две средних человеческих жопы. Что, с учетом броуновского характера перемещения туристов, а также канализации, жары и снующих туда-сюда транспортных средств, делает ходьбу по улицам не самым приятным занятием. Поэтому гуляли, в основном, по пляжу, который, кстати, в длину полностью повторяет улицу.
По идее, такое отношение к тротуарам (и еще отсутствие автобусов в нормальном понимании этого слова) должно побуждать туристов к передвижению на машинах и, в особенности, «мотобайках», аренда которых стоит какие-то смешные 150 рублей в день. И оно побуждает: мотобайков с туристами по острову ездило огромнейшее количество. В связи с чем, кстати, в гостиницу практически ежедневно кто-нибудь из отдыхающих возвращался в бинтах и гипсе. С одной стороны, вроде сочувствуешь человеку — приехал загорать и купаться, а тут такое несчастье. А с другой непонятно: вот на какой хер это надо? К слову, потом гид нам сообщил, что аварии с участием этих мотобайков стоят якобы на первом месте по смертности в Таиланде (а на втором — падение кокосов на голову). Возможно, это и страшилка, но транспортных средств мы в аренду не брали.
К тому же, как было замечено выше, мы так и не поняли, зачем и куда на арендованных транспортных средствах ехать. Скажем, достопримечательности острова нам показали на экскурсии «Жып-сафари» (о чем еще напишу), причем перевозили от одной к другой по таким горам и бездорожью, что становится не очень понятно, как туда вообще на мопеде можно заехать. Так что, мы себя берегли. Чего и вам желаем.
На нашем сайте используются куки-файлы, потому что без них всё плохо работает. А с ними — хорошо. Нажмите на кнопку «Согласен», если согласны с условиями обработки куки и данных на сайте. Если не согласны, можете отключить куки в настройках браузера.