Так, господа. Я щас в pear-dev продвигаю замену модуля IT[X] на мою версию и назначение меня его maintainer'ом. Создайте пожалуйста, всенародную поддержку, кто может. 

поддержка создаётся просто... пишете в pear-dev, какие это крутые классы и насколько они круче, чем исходные.Several months ago I wrote to this list proposing my private fork of these
template classes for merging:
http://marc.theaimsgroup.com/?l=pear-dev&m=103242445816080&w=2
Well, at that time the fork had some problems:
1) It was one file instead of IT.php/ITX.php
2) The comments were in Russian
3) Callback functions were not implemented.
This time I am back with a drop-in replacement for PEAR's HTML_Template_IT[X].
As the development of IT[X] is effectivelly stalled and its current maintainer
wasn't interested in new features back then (see the archives), I propose
replacing the current code in PEAR repository with my work. I am also willing
to become its developer (or a maintainer, if the current one resigns).
I must point out that making a patch against current sources was impractical,
as the classes are almost completely rewritten.
The classes are available for review:
http://158.250.10.119/pear/IT.phps
http://158.250.10.119/pear/ITX.phps
http://158.250.10.119/pear/ITMod.phps (my original work, don't bother if you
don't read Russian)
They also can be dowloaded with a readme file describing new
features/incompatibilities from
http://158.250.10.119/pear/IT[X]-fork.tar.gz
here is the part of this readme:
------------------
HTML_Template_IT
1) New features and improvements:
a) Transparent caching of prepared templates. You just have to pass a second
parameter to the constructor: a directory name (the directory should be
writable for PHP). After the template gets parsed for blocks and
variables, the resultant arrays are serialized and saved into files in
this directory. The next time the template file needs to be loaded, the
prepared one is loaded instead, with a cheap unserialize() instead of
very expensive RegExp matching logic.
b) Global variables. Variables set by a function setGlobalVariable() do
not get cleared after first substitution, unlike ordinary ones, and do
not trigger "block not empty" logic (block with only global variables is
still considered "empty"). Can be used for directory prefixes, session
identifiers and the stuff like that.
c) hideBlock(): an opposite of touchBlock(). It prevents block from
appearing in the result even if it is "not empty".
d) The source was cleaned, PEARified and optimised. Inline docs were updated
2) Removed features and incompatibilities:
a) $flagCacheTemplatefile and related logic was dropped in favor of a more
generic approach, see (1.a)
b) $clearCache and $clearCacheOnParse were removed (now the engine works as
if they are always false)
c) Public functions init() and free() are removed, they were unusable
unless called from setTemplate() anyway...
d) Using <!-- INCLUDE something --> in template is no more possible. If one
needs unconditional include, he should consider joining the templates
into single file, if one needs something more useful, he should use ITX
with its addBlockfile() method.
HTML_Template_ITX
3) New features and improvements:
a) Transparent caching (1.a) also works for addBlockfile() and
replaceBlockfile()
b) Error handling war PEARified. It was completely broken in stock version
as it relied on class IT_Error from file IT_Error.php which never got
included...
c) Cleanups.
2) Removed features and incompatibilities:
a) Public functions getFunctioncalls(), setFunctioncontent(),
setCallbackFuntiontable() (sic!), getBlocklist(),
getBlockvariables(), BlockvariableExists() were removed.
b) replaceBlock() implementation is somewhat different from stock version.
c) Callback functions and caching do not mix. If you pass a second parameter
to the constructor, the template WILL NOT be parsed for function calls.
If you attempt to call setCallbackFunction() of performCallback()
afterwards, an error will be thrown.
------------------
Nobody is named "lead developer". PA is "lead", and my perception of
his role is as a maintainer. But he still needs to be "lead" for
practical reasons.
Please take that attitude of yours somewhere else. There's enough
people who can get work done _without_ acting like total jerks. If you
want to get anywhere with this, I suggest trying to cooperate rather
than pissing people off.
Тот Dickmann пропихнул слабополезную фичу, которой только он, похоже, и пользуется.Автор оригинала: kvn
причем мысли довольно здравые, например о BC - это действительно важно, как сказал "Christian Dickmann" <[email protected]>
Remember: IT is stable and widely used.
поэтому должен сохранятся BC.
М@дак он... Я не первый раз патчи предлагаю, не первый раз меня с ними посылают подальшеХотя, конечно, что то очень много агрессии со стороны lead developer-a..
Блин, публичное API осталось тем же. Приватное --- другое совершенно. Были бы regression тесты --- давно бы проверили, но их-то готовить как раз и должен был "lead developer".Нужны аргументы. + дока с примерами, потому как если твой класс делает _все_, то, что делает IT/ITX (а это не правда, см. about BC) то стремно просто взять и закоммитить вместо того, что есть..
А дока нужна для того, чтобы посмотреть что действительно _нового_ в твоем классе.
+ тесты на BC, и скорость, если твой класс действительно вставляет IT/ITX - и поддерживает все ф-ции - тогда можно о чем то говорить..
Ты мой readme читал? Все несовместимости я там описал. В осоновном они из ITX, в котором на данный момент вообще бяда...А так это похоже на типа:
У меня прога круче, она делает почти то, что делала старая прога, но она новее, и делает еще что-то..
Но здесь (как для разработчика) мешает слово "почти"..![]()
Смысла нет. Два разных класса с одинаковым API в одном репозитории? А субкласс в котором все функции переписаны?П.С. Попроси сделать просто еще один класс, или суб-класс, а не заменять уже существующий...
или в этом какае то проблема?
Давай голосуй, не отлынивай! Тем более что я на твой вопрос про меню ответил.П.П.С. С Вашего позволения, я пока воздержусь от голосования в ту или тную сторону по поводу данного класса. Сам его использую. Хотя по функциональности мне HTML_Template_PHPLIB нравится больше, и я к нему привык..
А чем тебе далось это кеширование? Это что - основная задача темплейт движка? Есть PEAR/Cache, Cache/Function..А сделана она так, что практически не сочетается с кэшированием
ок. Просто еще не проверял "ответ на вопрос".Давай голосуй, не отлынивай! Тем более что я на твой вопрос про меню ответил
Блин, задрали. Все поп#@деть горазды, а в код никто так и не заглянул. Там же не general puprose кэширование, а элементарный алгоритм: если меняется файл A, то грузим его и перегенерируем файл B, в противном случае грузим сразу B. Такую хрень проще сделать парой строк, чем тащить с собой ещё один модуль, а потом понять, что он не умеет проверять время изменения исходного файла.Автор оригинала: kvn
А чем тебе далось это кеширование? Это что - основная задача темплейт движка? Есть PEAR/Cache, Cache/Function..
Давай не будем..Все поп#@деть горазды, а в код никто так и не заглянул.
и из-за этого алгоритма ты бьешь BC - круто, только кому это нужно?а элементарный алгоритм
А, то есть в код ты так и не заглянул, и readme мой не прочитал? И вообще, с каких пор добавление новых фич и исправление багов называется "бьёшь BC"?Автор оригинала: kvn
и из-за этого алгоритма ты бьешь BC - круто, только кому это нужно?
Это мой ответ на письмо "ведущего разработчика" IT[X].>>except that the first would fuck up if 'bar' contains '$1' and the >>second one would not.
>???? not enough ????
>Well, it seems both of you does not match the problem. I have >many apps
>running with IT. These apps use preg and everything to do with >preg has
>be done. Now, drop preg, what happens ?
>That's why I'm against to drop preg ***BY DEFAULT***.
>And finally, try to be pollite and everything will go fine and fast
Translating this into plain English: there is a well known bug in the public package I maintain. In my private applications I have some workarounds for it. Now, I don't want to bother changing my applications, so don't want anyone to fix a bug in the package.
Am I the only one having problems with this kind of attitude?
Короче, там уже поступило предложение завести мои классы отдельным пакетом. Щас я напишу туда письмо с поддержкой этого предложения, и ты тоже проголосуешь "за", ОК?Мен, ты же видел, что тебе отказали в pear-dev, по одной простой причине - Backward compatibility.
Чё ж они тогда недоумка Lemos'а так долго терпели? И главное не зря, выгнали бы сразу, не было бы щас никакого MDB.Автор оригинала: Максим Деркачев
Если кто не в курсе, подобные "голосования" в листе pear-dev обычно наказываются баном. Там сидят серьезные сформировавшиеся люди, и им давно надоели политические баталии.
Пальцем в ж@пу попал.Мое мнение. Ulf Wendel (автор IT/IT[X]) - достаточно грамотный, опытный и известный программист, ему можно доверять, с ним можно цивилизованно спорить, а пробовать закидать его шапками - идея дохлая.
Дружок, тебе знакомо слово "рефакторинг"? Я ничего не писал с нуля, а переработал готовый код.Форк, как было сказано в листе не раз, худший из способов что-то изменить. Классы на то и существуют, чтобы их наследовать в новых классах с расширенной функциональностью. И лучше иметь пару известных багов "от Ульфа" в IT[X], которому уже, дай бог памяти, года 3, чем n-ное количество неизвестных багов в новом коде от никому неизвестного Sad Spirit (ничего личного).
Если бы он был так широко используем, в нём не было бы столь тривиальных багов. Я их, между прочим, нашёл сразу как только написал unit test'ы для IT[X]. За которые мне уже даже текущий maintainer спасибо сказал, а ты вот откуда-то выполз, опомнился.И еще. IT[X] - давно известный и используемый повсеместно продукт, и делать из него площадку для личного паблисити, по-моему, не совсем прилично. Тем более при помощи таких "голосований".