Лента блогов InstantCMS

Найк Борзов на Неформатном радио

Итак с грехом пополам состоялся этот долгожданный эфир, кто не успел послушать, можете сделать это здесь
v
ВНИМАНИЕ !!! Ненормативная лексика !!!
три часа тридцать минут тридцать секунд )))
Найка смогли подключить только на 20-й минуте через громкую связь телефона Барби  laugh

Поступило пожелание...

Поступило предложение рассказать как устроить своё радио на просторах сети интернет. Расскажу обязательно, только не в данный момент, потому как опаздываю, как вернусь обязательно напишу, но....

Вернее, НО !!!

Для начала вы можете постучаться ко мне в аську или в личку и попробовать себя на волнах нашего Неформатного радио, поверьте - тут и помогут и расскажут  laugh
Тему не закрываю, обязательно отпишусь.....

Обновляемся правильно

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

В этом посте мы посмотрим как:

1. узнать какие файлы изменились в новом дистрибутиве
2. быстро обновить файлы сайта, не теряя собственных изменений в них

1. Введение

Для начала сформулируем начальные условия. Допустим, у нас имеется сайт, работающий на версии 1.5.1 и в некоторые php-файлы мы вносили изменения. Чтобы быть более конкретными, давайте представим что мы изменили файл /admin/applets/arhive.php, добавив в него такой код:

Код PHP:
$a = 123;
$b = $a * 2;

echo "summ = " .($a+$b); 
Потом вышла версия 1.5.2 и нам нужно обновиться на нее, не потеряв этих изменений.

Для пользователей Linux эта задача является одной из тривиальных, поскольку в их распоряжении есть такие замечательные комманды как diff и patch. Любителям Windows в этом плане везет меньше, но решения тоже есть.

2. Устанавливаем Araxis Merge

Под Windows есть несколько программ, позволяющих сравнивать текстовые файлы и папки. Araxis Merge платная программа, но очень удобная (спасибо bibendi, который порекомендовал ее на форуме). На сайте программы можно получить пробный серийник, который позволит ей работать без ограничений целых 30 дней. Что делать потом - думаю все догадываются :)

Действуем:

1. Скачиваем Araxis Merge (~68mb)
2. Запрашиваем 30-дневный серийный номер (достаточно просто указать email и номер придет в письме)

Если Araxis Merge по каким-то причинам вас не устроит, можете поискать аналоги, коих немало (например WinMerge или WinDiff).

3. Подготавливаем файлы

Удобнее всего создать две папки рядом, и назвать их номерами версий, в нашем случае 151 и 152.  В папку 151 кладем наши текущие файлы. В папку 152 распаковываем архив, скачанный с этого сайта.

4. Сравниваем папки

Открываем Araxis Merge и на тулбаре жмем кнопку "Folder Comparsion". Затем указываем пути к нашим папкам: 151 (левая панель) и 152 (правая панель), затем жмем Enter. Программа покажет содержимое обеих папок, а файлы имеющие отличия будут подсвечены синими строками. Для наглядности см. скриншот:


5. Переносим наши правки

Обратите внимание на файл arhive.php на скриншоте выше. Как можно заметить, в левой панели (т.е. в нашей текущей версии) в нем есть изменения, которых нет в дистрибутиве. Об этом говорит красная точка на иконке файла.

Если дважды щелкнуть по файлу arhive.php, откроется окно сравнения файлов:



Наши изменения, сделанные в п.1 подсвечены зеленым цветом.

Чтобы внести эти изменения в файл из новой версии, нужно:

1. кликнуть по кнопочке со стрелкой
2. поместить курсор в правую панель
3. нажать кнопку "Сохранить" на тулбаре

Эта последовательность действий изображена на скриншоте:



После этого возвращаемся к просмотру папок и ищем следующий файл с красной точкой в левой панели и повторяем п.5.
Естесственно, что переносить строки из старого файла в новый стоит только тогда, когда вы уверены что эти строки были написаны/изменены вами.

6. Заключение

Когда перенос изменений завершен, просто забираем файлы из новой папки (152) и закачиваем на сайт, заменяя текущие.

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

Правильный .Запомнить пароль.

Добрый день!
На днях внимательный пользователь сообщил мне, что он старательно ставит галочку "запомнить пароль", но каждый раз потом приходится ему набирать снова и снова.
Я попробовал, и правда, но дело было в том, что если сразу перейти на другую страницу, то пользователь чудесным образом авторизовывался. А виной всему всего одна строчка.
Итак, говорю сразу, что делаю на версию 1.5.1, на 1.5.2 смотрите сами. Но так как на этом сайте ситуация та же (не верите, проверьте :)), то значит и в версии 1.5.2 эта ошибка не вылечена.
UPDATE! Данное решение также работает в версии 1.5.2 (спасибо Madmax)
А решение простое.
1. Открываем в корне вашего сайта файл index.php в вашем любимом текстовом редакторе (не пугайтесь, редактировать нужно именно его :))
2. ищем строчку
Код PHP:
$inUser->autoLogin();
(примерно 80-81)
3. вырезаем ее (не удаляем!!!. а вырезаем, комбинация кнопок Ctrl+X)
4. находим чуть выше строку
Код PHP:
if ( !$inUser->update() ) { $inCore->redirect('/404'); }
(у меня 55)
5. ДО нее вставляем наш вырезанный текст (комбинация  кнопок Ctrl+V)
6. Открываем файл /core/classes/user.class.php
7. Ищем там строчку
Код PHP:
if ($inCore->getCookie('userid') && !$this->id){
(у меня 193)
8. ЗАМЕНЯЕМ эту строку следующей:
Код PHP:
 if ($inCore->getCookie('userid') && !$_SESSION['user']['id']){
9. Чуть ищем строку
Код PHP:
$this->resetStatTimer();
(у меня 205)
10. Закомментируем ее. Примерно вот так:
Код PHP:
 //$this->resetStatTimer();
или вовсе удаляем
11. Сохраняем всё и радуемся жизнью :)

Теперь с программной точки зрения. Тут всё просто, инстант пользователя держит по его id, который хранится в массиве $_SESSION, но обратите внимание на строки, что мы изменили, функция $inUser->update() как раз и проверяет, пользователь это или нет, но функция $inUser->autoLogin() находится по коду ниже, то есть у нас получается, что инстант проверяет пользователя, хотя он его еще не авторизовал автоматически. Вознилка проблема с функцией $inUser->autoLogin(), она срабатывает всегда когда есть кука, но нет id, но так как по логике мы должны сначала войти, а только потом представиться, то и данное правило получается срабатывало бы всегда, так как переменная $this->id присваивается после в функции $inUser->autoLogin(), которая наступит позже.

ВОЗМОЖНО есть еще какие-либо проблемы после этого изменения, но я в течение непродолжительного времени их не увидел, да и по логике их не будет, так как функция $inUser->autoLogin() ничего особенного не делает, просто в $_SESSION добавляет id пользователя, и всё. Поэтому система от этого не пострадает.

Старожилы, прощу у вас помощи, проверьте этот метод, и скажите, куда обратиться к администрации, чтобы они это исправили в системе.

P.S. ну сделайте наконец, чтобы можно было вводить кавычки в заголовок записи.... :(
P.S.S. Кто делал по старой версии, прочитайте пункты 6-10.

Форма для ввода данных в каталог

Добрый день!
Моя первая запись, и мой первый публичный мод для инстанта.
Предисловие.
Как известно, данные в универсальный каталог может внести только администраторы. А у меня каталог организаций, и нужно любому зарегистрированному пользователю дать доступ к добавлению.

Итак, данный мод (модулем его не назовешь, так как модулем инстанта он не является) представляет собой файл для инклуда. Пример можно посмотреть здесь http://kamenka-city.ru/content/0/read37.html
Мод писался для версии 1.5.1, на 1.5.2 тоже работает.
Инструкция.
1. Качаем данный файл http://kamenka-city.ru/temp/additem.rar.
2. Распаковываем, полученный файл additem.php добавляем в папку /includes/myphp/
3. Если необходимо, изменяем настройки скрипта (в начале файла)
4. Создаем статью, в ней выбираем "внешний файл", название файла будет additem.
5. в .htaccess найти все строки, начинающиеся на
Код PHP:
RewriteRule ^content
и 
RewriteRule ^view-
и в конце каждой строки дописать
Код PHP:
&%{QUERY_STRING}
(без пробела)

6. Проверяем работу, заходим в нашу статью (до этого не забываем создать рубрики в каталоге)
7. Если всё в порядке, то открываем в текстовом редакторе файл /components/catalog/frontend.php
ищем там строку
Код PHP:
if ($do == 'tag') 
(примерно 334) и ДО НЕЕ добавляем:
Код PHP:
echo "<a href=\"/content/0/read37.html\">Добавить организацию в каталог</a>
";
Внимание!!! Вместо 37 вводим id вашей статьи, которую вы создали в пункте 4.
Всё.

Данный мод еще только сырой, поэтому прежде чем впускать его к пользователям, проверьте его работоспособность. По мере свободного времени буду обновлять этот мод.

Пишу первый раз, поэтому прошу прощения, если что не так. :).
Надеюсь модуль кому-нибудь пригодится.

UPDATE1.
1. Добавилась возможность выбора раздела для выбора рубрик (удобно, если на сайте несколько универсальных каталогов)
2. Показываются не только данные из определенного раздела, но еще и только те рубрики, у которых активирован пункт "опубликовать"
3. Появилась возможность добавлять данные гостям (будьте осторожнее, так как никакой защиты от спамеров в настоящий момент в скрипте нет!)
Для установки новой версии просто скачайте по старой ссылке.

Инструментарий web-разработчика

Приветсвую сообщество! Хочу рассказать здесь какими инструментами пользуюсь для разработки.
Первым делом это Aptana Studio, изначально это плагин для Eclipse, сейчас доступна как плагин и как самостоятельная среда, мощи этой IDE мне хватает для HTML вёрстки, написания CSS кода, JavaScript  c PHP тоже неплохо справляется(мне хватает по крайней мере, в пшп не силён). Её плюсы это автозакрытие тегов, хорошая подсветка, CSS код писать вообще шикарно, само оформление среды радует глаз, всё интуитивно понятно, наличие FTP клиента, SVN, расширяется до безумия, под неё написана куча всевозможных расширений. И ещё один большой плюс этой среды - наличие jQuery шпаргалки. В общем всем кто всё ещё пишет в Notepad, дримвивере, PHP эксперт эдишне и т.п., переходите на эту систему не пожалеете. Из минусов лично для меня там только один, русские кодировки она не поддерживает, т.е. коментарий или какую нибудь запись на русском не получится написать, будут кракозябры) По этому у меня установлен ещё и Notepad++, использую его например, когда надо быстро подправить пару строк кода, ну или когда в HTML код вкрадывается русский язык, описывать его думаю не стоит это классика)

Для работы с графикой использую Gimp 2.6.7 с расширением Save For Web, для него есть куча различных расширений, но у меня стоит только это, ибо мне достаточно и этого. С моей точки зрения это очень хорошая альтернатива фотошопу, с моей точки зрения его аналог на 80%, только есть неоспоримый плюс, это его бесплатность)

Ну и естественно у меня стоит великий и ужасный денвер с расширением mbstring. на денвер перешёл недавно, раньше у меня просто стоял Апач+PHP+MSQL, но у этой связки есть один минус по сравнению с денвером, нет автоматического создания хостов, поэтому собственно и использую денвер.

И забыл написать про самый главный инструмент - Mozilla Firefox + Firebug + Web Developer и ColorZilla, про первые два дополнения думаю все знают а вот ColorZilla заслуживает отдельной записи, тоже очень и очень полезная вещь.

Жду подобных постов от других членов сообщества, интересно знать кто чем пользуется.

Исходный шаблон для вёстки под Instant

Так как я занимаюсь вёрсткой, то соответственно у меня есть некоторые свои наработки, которые позволяют мне ускорять процесс разработки. Меня не особо радует процесс изменения дефолтного шаблона, я верстаю с нуля(почти)glasses, пользуюсь исходником специально сделанным для инстант, что бы заново не прописывать пути , создавать файлы и т.п. Скачать архив с ним можно здесь. Структура файлов и папок в нём почти такая же как и  дефолном шаблоне, добавлен файл reset.css который обеспечивает глобальный сброс стилей, что требуется для обеспечения кроссбраузерности. Описание структуры остальных папок и рекомендации по офорлению кода описаны в slicer_recommendations.txt, следование этим рекомендациям позволяет привести CSS код к определённой структуре, что облегчает дольнейшую поддержку и взаимодействие между верстальщиками.
Все что вам надо сделать, это распаковать архив в папку с шаблонами, переименовать и в файле template.php прописать корректные пути и начинать верстать свой новенький шаблон)