mediawiki with tidy
Oct. 2nd, 2012 10:54 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Не нравится мне когда абзацы начинаются не с красной строки. Поэтому на своём сервере отбиваю красную строку, заворачивая весь текст в div с text-indent. Наконец надоело мне это делать каждый раз ручками и решил вписать индент прямо в Common.css.
Естественно, сначала надо вычислить какой тег нужно осчастливить индентом. Открываю в браузере исходный код первой попавшейся страницы, нахожу начало текста и ищу вышестоящий тег, на который можно было бы повесить индент. И тут потихоньку офигеваю: с того момента как заканчивается div с mw-content-text и т.п. начинается (!!!) DOCTYPE, хедер и прочая ахинея.
Можно представить себе мою реакцию. Одновременно начинаю соображать что и почему может таким образом поломать страницу. Обновление статьи не помогло. Предположил что какой-то косяк в старом движке: стоит 1.17.х, тогда как 1.19.2 уже есть. По соседству имеется недавно установленный на 1.19.2 - там всё нормально. Ну, думаю, может быть ещё какое-то расширение или скрип может паскудить. Но между первым и вторым сервером есть разница и в наборе расширений, и скриптов, и что, может быть, даже более значимо: первый представляет из себя wikifarm: четыре проекта, пара из которых имеет по четыре языка с общим (типа комона) файловым. С какой стороны рыть? Глаз, конечно, зацепился за то, что лишний заголовок посреди текста содержит мета с генератором tidy. Но не на столько с совершенстве я знаю mw-движок, чтобы сообразить где и как этот tidy участвует в производстве страницы. В общем, решил начать с обновления движка, которое прошло более-менее гладко, если не считать пары затыков:
Зато заодно вычистил около пяти расширений, которые давно отключил, но в багажнике они всё валялись, обновлялись и переносились на новые версии...
Так вот когда апгрейд движка был завершён и всё заработало, задумался я кто такой этот tidy и зачем он там нужен. Гугуль с ходу помочь ничем не смог. Точнее - подсовывал бесполезные ссылки. Зато сайт самого mw содержан нужную информаци. Это из серии - "Кто додумался пиджак в шкаф повесить?" ;) Оказывается, tidy используется для того чтобы генерировать чистый код и я его сам включал. Только забыл. К нему ещё конфиг должен быть, хотя справка заверяет tidy может и без конфига работать. Но вот в конфиге сервера я сам прописывал путь до конфига tidy, но самого конфига в выделенном каталоге - нет. Как и самого каталога. Тут в памяти стали проявляться воспоминания, что директорию я вроде бы как делал. А может это ложная память? В общем, после того как конфиг для tidy был предоставлен, всё стало в лучшем виде.
Ура! Вот так софтинка для генерации чистого кода может оказать софтинкой, загрязняющей код. ;)
Да, чуть не забыл, ради чего всё это делалось. Тупо прописать text-indent в нужный div#mw-content-text не получилось. То есть получиться-то, конечно, получилось, и даже текты автоматом стали краснострочиться, но... Конечно, стали откраснострочиваться и все другие тексты, которые откраснострочивать не надо. В общем, либо придётся придумывать более хитрый способ идентификации нужных текстов, либо по-старинке вставлять вручную div в голове. Кстати, хвост-то можно и не прописывать. tidy - :) - сам допишет. ;-)
PS. А tidy, оказывается, обрабатывает текст при выдаче клиенту, а не, как предположил, при сохранении при парсинге.
PPS. А ещё вдруг заработало кеширование самим движком. Правда до сих пор закешировалось только пара скриптов, один файл стиль и одна страница...
Естественно, сначала надо вычислить какой тег нужно осчастливить индентом. Открываю в браузере исходный код первой попавшейся страницы, нахожу начало текста и ищу вышестоящий тег, на который можно было бы повесить индент. И тут потихоньку офигеваю: с того момента как заканчивается div с mw-content-text и т.п. начинается (!!!) DOCTYPE, хедер и прочая ахинея.
Можно представить себе мою реакцию. Одновременно начинаю соображать что и почему может таким образом поломать страницу. Обновление статьи не помогло. Предположил что какой-то косяк в старом движке: стоит 1.17.х, тогда как 1.19.2 уже есть. По соседству имеется недавно установленный на 1.19.2 - там всё нормально. Ну, думаю, может быть ещё какое-то расширение или скрип может паскудить. Но между первым и вторым сервером есть разница и в наборе расширений, и скриптов, и что, может быть, даже более значимо: первый представляет из себя wikifarm: четыре проекта, пара из которых имеет по четыре языка с общим (типа комона) файловым. С какой стороны рыть? Глаз, конечно, зацепился за то, что лишний заголовок посреди текста содержит мета с генератором tidy. Но не на столько с совершенстве я знаю mw-движок, чтобы сообразить где и как этот tidy участвует в производстве страницы. В общем, решил начать с обновления движка, которое прошло более-менее гладко, если не считать пары затыков:
- Просто забыл проапдейтить контент (update.php)
- Простой перенос расширений не прокатил. По крайней мере не все из них захотели работать с новым движком.
Зато заодно вычистил около пяти расширений, которые давно отключил, но в багажнике они всё валялись, обновлялись и переносились на новые версии...
Так вот когда апгрейд движка был завершён и всё заработало, задумался я кто такой этот tidy и зачем он там нужен. Гугуль с ходу помочь ничем не смог. Точнее - подсовывал бесполезные ссылки. Зато сайт самого mw содержан нужную информаци. Это из серии - "Кто додумался пиджак в шкаф повесить?" ;) Оказывается, tidy используется для того чтобы генерировать чистый код и я его сам включал. Только забыл. К нему ещё конфиг должен быть, хотя справка заверяет tidy может и без конфига работать. Но вот в конфиге сервера я сам прописывал путь до конфига tidy, но самого конфига в выделенном каталоге - нет. Как и самого каталога. Тут в памяти стали проявляться воспоминания, что директорию я вроде бы как делал. А может это ложная память? В общем, после того как конфиг для tidy был предоставлен, всё стало в лучшем виде.
Ура! Вот так софтинка для генерации чистого кода может оказать софтинкой, загрязняющей код. ;)
Да, чуть не забыл, ради чего всё это делалось. Тупо прописать text-indent в нужный div#mw-content-text не получилось. То есть получиться-то, конечно, получилось, и даже текты автоматом стали краснострочиться, но... Конечно, стали откраснострочиваться и все другие тексты, которые откраснострочивать не надо. В общем, либо придётся придумывать более хитрый способ идентификации нужных текстов, либо по-старинке вставлять вручную div в голове. Кстати, хвост-то можно и не прописывать. tidy - :) - сам допишет. ;-)
PS. А tidy, оказывается, обрабатывает текст при выдаче клиенту, а не, как предположил, при сохранении при парсинге.
PPS. А ещё вдруг заработало кеширование самим движком. Правда до сих пор закешировалось только пара скриптов, один файл стиль и одна страница...