Архив

Публикации с меткой ‘код’

Система модулей.

15 Август 2009 Нет комментариев

Выкладываю систему модулей — сердце моей CMS.

Лицензия: GNU GPLv3+.

Внутри один php файл, лицензия, и diff между версией в CMS и выкладываемой (разница только в заголовке, но для порядка выложил и его).

Документации не будет, зато через некоторое время будет пара модулей, кому надо — там всё прозрачно.

Скачать: module_system.tar.bz2.

Версия от 2010-02-28.

Движок темплейтов.

3 Август 2009 Нет комментариев

Выкладываю движок темплейтов, использующийся в моей CMS.

Его я писал сам, но под влиянием двжика темплейтов из phpbb.

Лицензия: GNU LGPLv3+.

Оригинал — 305 строк с шапкой и комментариями, выкладываемая версия — 326 строк, из-за того, что поддержку кэша пришлось вносить в саму библиотеку.

Примеры синтаксиса:

{L_NAME}: {USER_NAME}
 
<date /> <date time="{TIME}">Y-m-d H:i</date> [date time='{TIME}+60*60*24*7' /]
 
<ul>
<block name="row">
<li class="row[var expr='{row.BLOCK_NUM}%2' /]">{row.CONTENTS}</li>
</block>
</ul>
 
<if expr="{IS_ADMIN} || {IS_USER}">
	текст
	<else expr="{IS_INDEX}">
		другой текст
	</else>
	<else>
		третий текст
	</else>
</if>
 
<switch expr="{ERROR_CODE}">
	<case expr="404">Не найдено.</case>
	<case expr="403">Запрещено.</case>
	<case expr="{MY_ERROR_CODE}">{MY_ERROR}</case>
	<case>Ошибка {ERROR_CODE}.</case>
</switch>

И так далее, подробности – внутри, документация – в архиве.

Читать далее…

Плагины к CMS. Версия 0.7.

Выкладываю архив папки с отделяемыми (поддерживается установка на другой адрес) сторонними (автор – не я) плагинами к моей CMS, используемыми в текущей версии (0.7.0/0.7.1).

Внутри – иконки (oxygen), яваскрипт (jQuery с набором плагинов), флэш плееры видео/аудио, флажки.

Лицензии зависят от конкретного файла: public domain/lgpl/mit/mpl/аналогичные.

Набор плагинов к CMS (версия 0.7).

Размер – 8.7 МиБ в архиве.
Вся остальная CMS (включая неотделяемые плагины, т.е. флэш-загрузчик и висивиг) – 525 КиБ в архиве.

Скрипт миниатюр.

Выкладываю отдельно простой php-скрипт для генерации миниатюр на лету с кэшем (и проверкой актуальности, естественно), используемый в моей CMS.
Работает со всеми jpg/png/gif изображениями, лежащими внутри папки, в которую поставлен (рекурсивно). Если поставить в корень хоста – то со всеми изображениями на этом хосте.

Лицензия: GNU LGPLv3+.

Показываю примеры работы.

Оригинальный файл:
image.jpg (1251 на 2000 пикселей).

Уменьшенное изображение, вписанное в 300×200:

image.(300×200).jpg
(125 на 200 пикселей).

Отношение сторон сохраняется.
image.jpg.(300×200) – то же самое, что и image.(300×200).jpg, для простоты автоматического использования.

image.(300).jpg – то же самое, что и image.jpg.(300), image.(300×300).jpg, и image.jpg.(300×300) (вписанное в квадрат сто стороной 300).

image.(400×500).jpg?nocache=1 – отключает кэш (мне это нужно было для генерации изображений непостоянных размеров, например, во всплывающем div предпросмотра на яваскрипте, когда размер картинки зависит от размера окна браузера пользователя – их сохранять просто незачем).

Маленькие изображения не увеличивает, зато скрипт гарантирует что получившееся изображение будет правильного отношения сторон и не больше заданного размера.

Если файла изображения нет, показывает такую (меняется) картинку, вписанную в тот же размер:

invalid_image.(80×80).jpg

Файлы и инструкции по установке – ниже.
Читать далее…