- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
if(!empty($this->aActions))
$sMenuItems = htmlspecialcharsbx(CAdminPopup::PhpToJavaScript($this->aActions));
?>
<tr class="adm-list-table-row<?=(isset($this->aFeatures["footer"]) && $this->aFeatures["footer"] == true? ' footer':'')?><?=$this->bEditMode?' adm-table-row-active' : ''?>"<?=($sMenuItems <> ""? ' oncontextmenu="return '.$sMenuItems.';"':'');?><?=($sDefAction <> ""? ' ondblclick="'.$sDefAction.'"'.(!empty($sDefTitle)? ' title="'.GetMessage("admin_lib_list_double_click").' '.$sDefTitle.'"':''):'')?>>
<?
if(count($this->pList->arActions)>0 || $this->pList->bCanBeEdited):
$check_id = RandString(5);
?>
<td class="adm-list-table-cell adm-list-table-checkbox adm-list-table-checkbox-hover<?=$this->bReadOnly? ' adm-list-table-checkbox-disabled':''?>"><input type="checkbox" class="adm-checkbox adm-designed-checkbox" name="ID[]" id="<?=$this->table_id."_".$this->id."_".$check_id;?>" value="<?=$this->id?>" autocomplete="off" title="<?=GetMessage("admin_lib_list_check")?>"<?=$this->bReadOnly? ' disabled="disabled"':''?><?=$this->bEditMode ? ' checked="checked" disabled="disabled"' : ''?> /><label class="adm-designed-checkbox-label adm-checkbox" for="<?=$this->table_id."_".$this->id."_".$check_id;?>"></label></td>
<?
endif;
if($this->pList->bShowActions):
if(!empty($this->aActions)):
?>
<td class="adm-list-table-cell adm-list-table-popup-block" onclick="BX.adminList.ShowMenu(this.firstChild, this.parentNode.oncontextmenu(), this.parentNode);"><div class="adm-list-table-popup" title="<?=GetMessage("admin_lib_list_actions_title")?>"></div></td>
<?
else:
?>
<td class="adm-list-table-cell"></td>
<?
endif;
endif;
У меня есть один такой одаренный, на работе, вечно вместо альтернативного синтаксиса в верстке использует фигурные скобки. Хочется ему голову лопатой отрубить уже.
Боже, как прекрасно что в моем мире шаблонизаторы лаконичны, легко встраиваются в HTML, и сами экскейпирут данные, а JS вынесен в отдельный файл и там навешивается жукверей на элементы с определенным классом.
?:))
Я вижу тут ужасную шаблонизацию (даже этот ваш смарти и то приятнее), немного логики (die()), и HTML вокруг всего этого. Бедный верстун, который захочет этот код поправить.
Но вообще я не собирался разводить флеймы на тему "почему это плохо". Это уже такое общее место, что мне не интересно) Можете спросить гостя)
Шаблонизация тут обычная, форма, в которой выводится другой компонент (а внутри него может тоже компонент выводиться и так далее).
die - следствие архитектуры, можно не писать эту строчку, если неохота, сам часто так делаю.
Каждый день такое верстаю, рвотных позывов не наблюдаю.
Кто-то работает суперсовременным швейцарским ножом, кто-то набором "собери коллайдер сам", кто-то ножовкой и молотком. Я не собираюсь собирать ферарри ножовкой и молотком, но и делать крепкую табуретку швейцарским ножом тоже не буду - вложенные инвестиции не будут оправданы.
Ставить сигнализации в такой квартире довольно трудно, равно как и указывать ее адрес) Но на вкус и цвет все фломастеры разные
Понятное дело, что если я делаю домик на колесах, я не буду использовать набор для строительства замка, а возьму тот же phalcon или kohana.
Заказчику все равно каким образом у Вас файлы лежат на диске.
Единый фреймворк того же самого Django позволяет делает реюзабельные приложения, иснталлировать их в нужные пути, и приложения автоматически включаются во все жизненные циклы вроде синхронизации БД и проверки состояния.
На самом деле даже в PHP фреймворки пропагандируют единую точку входа: тот же Zend. Это довольно очевидная конструкция.
Не существует примуществ у создания файлика "guestbook.php" или "add_order.php" в document root вебсайта. Во всяком случае , я о таких требованиях не слышал.
Не спорю, мне самому нравится подход зенд, но с другой стороны мне нравится относительная свобода, которую дает битрикс. Если надо - можно на битриксе все сделать с единой точкой входа. Это если надо и если предыдущий пункт про заказчика пройден успешно.
Как видите, есть по меньшей мере один фреймворк, который такую архитектуру единой точки входа не придерживается.
Это не требования, это реалии проектов. Банально, интеграция уже зарекомендовавшей себя гостевой книги в давно созданный проект.
Речь ведь не только о с нуля создаваемых красавцах на бутстрапе. Большую часть представляют собой уродцы прямиком из 90-00-х
Заказчик может зайти по FTP и поправить шаблон (хотя я не понимаю как тогда гарантировать работу сайт: он же не будет ничерта версионировать). Но шаблоны не имеют никакого отношения к точкам входа. Это отдельные файлы:)
Если контент лежит в конкретных файлах, скажем about.php, то причем тут шаблоны компонентов или сайта (пользуясь терминологией битрикса)?
Вобщем, это просто другая идеология, с этим нет смысла спорить, можно пользоваться ею при разработке, можно не пользоваться. Кто работает с битриксом - пользуется и не жалуется.
Все равно весь роутинг в админке представлен.
Если контент это текст, то он точно так же будет лежать в шаблоне. Пусть он правит about.html, и все.
Шаблон это просто файл на файловой системе. В базе их не хранят (а в битриксе хранят, да?).
В битриксе из коробки контент находится между подключением header.php и footer.php в файле типа .php. Вот его обычно и правят через фтп или визуальный редактор битрикса.
)Тоесть битрикс сразу же ставит верстуна в позу когда есть понятия "header" и "footer". Как прекрасно! А вдруг у меня сайт в котором вместо "header" есть "left panel"? А вдруг я хочу в 9 страничках юзать общий шаблон а в 10й -- нет?
Впрочем, битрикс тут не одинок. Так поступуюат все CMS. Потому-то фреймворки (zend, ruby, django) нравятся мне больше, чем CMSы (джумла, друпал итд)
Вы можете вообще ничего не писать ни в header, ни в footer. Вобщем, вам лучше почитать на досуге описание, как в битриксе происходит процесс выполнения страницы, чем допрашивать меня в комментариях:)
По поводу гита на сервере клиента - однозначно могу сказать, что есть ситуации, когда это невозможно. По различным соображениям (не моим конечно, я только за гит на каждом сервере))
Ошибаетесь. Django предоставляет админку для CRUD весьма годную. Причем она сразу уже умеет WYSIWIG, например.
RoR тоже есть ActiveAdmin, например.
>>Вы можете вообще ничего не писать
Я понимаю. Но сам факт внесения таких понятий как хедер и футер меня уже начинает напрягать.
В общем речь тут шла не о CMS vs frameworks, тут все понятно (CMS готовый продукт со всеми ограничениями) а о точке входа
Просто битрикс это cmf, поэтому у него есть достоинства и недостатки сразу и тех, и других:)
Вот и тут я не вижу ни одной ситуации когда НЕ единая точка входа необходима.
index.php.1, index.php.2, ...
> гит на продакшен сервере
Поосторожней с этим, а то было полно прецедентов (даже какое-то исследование проводили, собирая статистику), когда apache/nginx превращали проект в опенсурсный из-за того, что папочка .git попала в раздаваемую ими директорию.
http://habrahabr.ru/post/70330/
Но в этом случае заводим под репозиторий отдельную директорию, а из неё на продакшен сервер делаем экспорт отдельной командой.
Гит всех убил
Git нужен, как минимум для разработки ядра.
Hg нужен для людей, которые не успевают попить кофе, пока выполняется git blame или хотят понаписать плагинов.
Вот уж кто точно не нужен - так это bazaar.
Единственное разумное применение отдельной точки входа (на мой взгляд) — это скрипт для исполнения задач по крону.
А вот использовать для крона отдельную точку входа - в любом случае эту точку придется закрыть htaccess, какой смысл?
Так как знание о том, что есть урл /foo/bar/spam храница в Urlconf, то можно просто сказать "вставить сюда урл по имени foo" и не хардкодить в шаблон "/foo/bar/spam.php".
Тут парадокс балба (или как там его?) в действии. Нужно сначала попробовать поработать с единой точкой входа, тогда станет понятно почему она лучше
Голосую за подход, при котором мухи отдельно, а котлеты отдельно. Т.е. статика в одном каталоге, в котором ничего никогда не исполняется, а динамика - в другом, который никогда и ни при каких условиях не раздаётся веб-сервером. Старый добрый cgi так и работал. И это было хорошо. И все новомодные фреймворки, кроме пыховских, работают именно так.
Тогда никакие затыкания дыр через .htaccess или index.php в каждом каталоге просто не нужны. И никто не запустит какой-нибудь левый модуль системы.
Но ведь дефолтный ZF, который некоторые и за фреймворк-то не считают, хранит все исполняемые скрипты (кроме точки входа) за пределами htdocs. За это, кстати, его не любят пользователи шаред-хостингов, т. к. его придётся хитро переконфигурировать, чтобы смешать мух с котлетами.
Но так сложилось, что это не считается за php-way...
Рома-Рома-Роман,
Рама-Рома-Роман,
Роман!
Религия - физика
http://clfh.org/images
Charlton joined United in 1953 as an England Schoolboys prodigy with a bulky notorious and was yearning to make his aim in Matt Busby's free-flowing team. With Tommy Taylor away with England on global job on a quarry against Northern Ireland, his big chance arrived, five days limited of his 19th birthday.
The conspicuous footballing Knight spoke to MUTV some in unison a all the same ago about his bend in outstanding detail as he offered his recollections of the start of an incredible odyssey.
"It was the longest term I'd in any case been below par the pitch injured," recalled Sir Bobby. "There was a lad called Keith Marsden who played centre-back in behalf of Manchester New zealand urban area Reserves and we both club the ball at the notwithstanding time and my ankle swelled up. Three weeks later, Sir Matt Busby asked me how I was.
<a href=http://56b3a8a59c459ea6f4a55ef4140a8805.com>htt p://56b3a8a59c459ea6f4a55ef4140a8805.com</a>