27 комментариев

Сегодня большое обновление фреймворка и почти всех приложений!
Версия фреймворка 1.0.10 — контрольное обновление перед выходом фреймворка из статуса альфа-версии.

Приложение «Сайт»: версия 2.0

Большая часть приложения «Сайт» была переработана, и теперь новый «Сайт» может конкурировать со всеми полнофункциональными CMS-системами. Новые функции «Сайта» 2.0:


  • Иерархия страниц и улучшенная схема управления страницами. Теперь страница может быть прикреплена только к одному поселению, что исключает возможность дублирования контента и упрощает публикацию новых страниц на сайте.
  • Новый раздел «Темы дизайна», из которого можно одним кликом устанавливать темы оформления для разных приложений («Сайт», «Блог», «Фото» и других).
  • Связанные темы оформления: любой теме дизайна можно установить родительскую тему, из которой данная тема сможет подключать CSS-файлы, шаблоны и изображения. Это позволяет создавать универсальные темы дизайна (семейства тем), которые будут подходить многим приложением: для сайта, блога, фотогалереи, интернет-магазина и пр., не задавая при этом жестких рамок для дизайнеров при разработке тем.
  • Темы дизайна CUSTOM: пример универсальной темы дизайна. Для бесплатной загрузки доступны темы CUSTOM для приложений «Сайт», «Блог» и «Фото». Тема для приложения «Сайт» является основной темой этого семейства и предоставляет единый набор CSS-стилей и общий макет index.html, внутрь которого вписывается контент других приложений (content.html). Темы CUSTOM для «Блога» и «Фото» используют тему CUSTOM для «Сайта» в качестве родительской темы.
  • Обновленные блоки (общие блоки). Теперь блоки представляют собой полноценный инструмент интеграции фронтендов приложений друг с другом. Например, приложение «Блог» предоставляет блоки, которые выводят последние посты и комментарии из блога. Такой блок можно редактировать (Smarty!), разместить в любом шаблоне дизайна или на любой странице сайта. Еще пример: приложение «Сайт» предоставляет блок с формой отправки запроса. Этот блок можно встроить также на любую страницу сайта или даже в отдельную запись блога.
  • Поддержка регистрации пользователей приложением «Сайт» (ранее это поддерживали только приложения «Блог» и «Фото»).
  • Улучшенный интерфейс всего приложения, новые возможности настройки: адаптеров авторизации, ввода единого для сайта идентификатора Google Analytics, общего JS-кода, обновленное управление роутингом, возможность изменения фона для каждого сайта, что очень удобно при работы с несколькими сайтами в одной установке.

Дизайн-редактор

Ранее дизайн-редактор для шаблонов всех приложений (в том числе и для «Блога» и «Фото») был в приложении «Сайт». В «Сайте» 2.0 мы переработали эту часть, и теперь дизайн-редактор внутри «Сайта» позволяет редактировать только шаблоны дизайна самого приложения «Сайт», а дизайн-редакторы других приложений располагаются непосредственно в самих приложениях. Такой подход к управлению оформлением фронтендов приложений является более естественным и интуитивно понятным.


То же самое с информационными страницами — они прикрепляются к каждому конкретному приложению и редактируются внутри этих приложений. В каждом приложении теперь поддерживается иерархия страниц.


Дублирование этого функционала в разных приложениях не означает дублирование кода. Функционал дизайн-редактора и страниц реализуется на уровне ядра фреймворка (wa-system), и может быть подключен в любом приложении. Документацию по этому вопросу мы скоро опубликуем.

Другие изменения

Их тоже немало:

— Обновления в системной части фреймворке (в ядре), связанные с переборкой приложения «Сайт» и вынесением общего функционала на уровень системы.
— Визуальные улучшения в большинстве Вебасист-приложений: «Контактах», «Стикерах», «Списках дел», «Фото», «Блоге» и пр. Обновленные иконки.
— Для «Блога» и «Фото» разработаны мобильные версии бекенда, позволяющие следить за последними записями в блоге, последними загруженными фотографиями, загружать фотографии непосредственно с мобильного устройства. Мобильная версия адаптирована и протестирована на устройствах на основе iOS и Android.

Что дальше

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

Далее мы сосредоточимся на подготовке к выпуску новой версии Shop-Script (ожидается в конце этого года) и обновленной качественной документации по фреймворку. Все дальнейшие обновления фреймворка и приложений будут сопровождаться ченджлогами (подробным списком изменений), которые можно будет просматривать при установке обновлений непосредственно в Инсталлере.

6 комментариев

В текущий состав фреймворка Вебасист входят три версии jQuery: 1.4.2, 1.5.2 и 1.7.1 (JS-файлы находятся в папке wa-content/js/jquery/).

В течение нескольких следующих обновлений фреймворка мы планируем удалить из базового состава версии jQuery 1.4.2 и 1.5.2 и оставить только 1.7.1. Это будет сделано в течение сентября 2012. Если вы используете в вашем приложении jQuery одной из версией, которые будут удалены, пожалуйста, обратите на это внимание.

19 комментариев

Встречайте приложение «Фото»!
http://www.webasyst.com/ru/apps/photos/

Приложение бесплатное и уже доступно для установки через Инсталлер.

Разработка «Фото» длилась несколько месяцев. В течение этого времени во фреймворк были внедрены разные полезные механизмы, например, работа с изображениями (класс waImage), а в самом приложении «Фото» реализовано множество интересных и крайне полезных для фотогалереи функций:
— организация фотографий по обычным (наборным) и «умным» (динамическим) альбомам,
— фотопоток без обязательной привязки фотографий к альбомом,
— иерархическое дерево альбомов,
— быстрая фильтрация фотографий по разным критериям, например, по тегам и оценкам,
— публикация фотографий и альбомов во фронтенде,
— группировка фотографий в стеки,
— экспорт фотографий в виде прямой ссылки или HTML,
— приватные фотографии, доступ к которым имеют только авторизованные пользователи бекенда,
— массовая загрузка фотографий, в том числе драг-н-дропом прямо в браузер,
— плагиновая структура, позволяющая очень гибко расширять функционал приложения,
— интеграция с приложением «Блог» (на основе связки приложений «Фото» и «Блог» очень удобно вести фотоблог!)

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

Для приложения также доступны четыре плагина (как и само приложение, плагины бесплатные и устанавливаются через Инсталлер):

Будем рады услышать ваше мнение о приложении, замечания и пожелания.

Пользуясь случаем, поздравляем всех читателей блога, разработчиков и пользователей фреймворка с днем сисадмина и открытием ХХХ Олимпийских игр!

19 комментариев

Опубликована документация по тому, как внедрить возможность регистрации и авторизации пользователей во фронтенде вашего приложения: http://www.webasyst.com/ru/framework/docs/dev/auth-frontend/

В качестве примера мы сделали простое приложение «Гостевая книга 2», в котором реализовали описанный механизм. Рекомендуем установить и посмотреть. Помимо «Гостевой книги 2» (в данный момент) авторизация пользователей поддерживается приложением «Блог».

14 комментариев

Сегодня мы выпустили значимое системное обновление фреймворка. В ядре фреймворка появился механизм, который позволяет разработчику приложения довольно просто добавить во фронтенд возможность регистрации и входа для пользователей. Хранение данных о зарегистрированных пользователях осуществляется приложением «Контакты», а ядро фреймворка предоставляет интерфейсы для подключения форм регистрации и входа в шаблонах дизайна приложения (аналогично капче).

Регистрация и вход для пользователей на сайте включается в приложении «Сайт» в настройках сайта:

Включив регистрацию для сайта и выбрав приложение, в контексте которого должны работать формы авторизации, администратор включает на сайте возможность регистрации для посетителей (оформление форм авторизации зависит от приложения и поэтому подключаются на сайте не на системном уровне, а на уровне приложения; система предоставляет готовые инструменты для удобного подключения этих форм внутри приложения, но определить подходящее место для их внедрения должен разработчик приложения).

Зарегистрироваться можно и через внешние сервисы. Во фреймворке реализованы адаптеры авторизации для Фейсбука, Твиттера, Вконтакта и Гугла.

В данный момент (в этом обновлении) поддержка регистрации реализована в приложении «Блог». На его примере можно посмотреть и попробовать, как работает регистрация пользователей. В общих настройках «Блога» включите опцию «Только зарегистрированные пользователи могут оставлять комментарии», и тогда все посетители, которые оставляют комментарии, должны будут зарегистрироваться на вашем сайте, а пользователи бекенда смогу управлять списком зарегистрированных пользователей с помощью приложения «Контакты».

Документация для разработчиков по подключению авторизации в приложениях пока не опубликована, но будет предоставлена в самое ближайшее время. Также как и обновление приложения «Контакты», в котором появится отдельная фильтрация пользователей по связанным приложениям.

Важная информация для пользователей приложения «Блог»

Если вы не редактировали шаблоны дизайна блога, то есть фронтенд блога работает на основе оригинала темы дизайна из wa-apps/blog/themes/default, тогда ничего делать не надо — обновление само заменит оригиналы шаблонов дизайна, и блог будет продолжать работать.

Если же вы редактировали шаблоны дизайна блога с помощью приложения «Сайт», то ваша измененная копия темы была сохранена в wa-data/public/blog/themes/default/. При обновлении «Блога» ваши изменения не будут затронуты, поэтому может потребоваться выполнить некоторые изменения в шаблонах дизайна вручную. Пожалуйста, внимательно посмотрите, все ли продолжает работать во фронтенде блога, и если что-то вдруг перестало работать, замените в шаблонах дизайна старые переменные на новые, как описано ниже.

Во-первых, если вы хотите включить авторизацию во фронтенде блога, то после установки обновления нужно скопировать новые файлы темы дизайна signup.html, login.html, forgotpassword.html из папки с оригиналом темы wa-apps/blog/themes/default в папку с вашими файлами wa-data/public/blog/themes/default/. Скопировать можно либо по FTP (с последующей установкой прав на запись для этих файлов), либо создав в вашей теме дизайна в приложении «Сайт» шаблоны с вышеуказанными названиями файлов и содержимым, как в оригинальных файлах.

В CSS-файл вашей темы скопируйте набор классов из секции «Sign up & Login forms» оригинального default.css.

Во-вторых, в теме дизайна блог были упразднены несколько переменных:

$is_concrete_blog — рекомендуется заменить на условие $wa->param('blog_url')?true:false
$layout_type — рекомендуется использовать пару переменных $is_lazy_loading и $page (см. оригинал темы default
$post.comment_str_translate - вместо этого необходимо использовать целую конструкцию. В потоке:

{if !empty($post.comment_count)}
    {_w('%d comment','%d comments',$post.comment_count)}
{else}
    нет комментариев
{/if}

В отдельном посте:

<h3 class="comment-count" {if $post.comment_count == 0}style="display: none;"{/if}>
    {_w('%d comment','%d comments',$post.comment_count)}
</h3>

Так же требуется отдельно добавить подключение jQuery в явном виде в шаблоне index.html перед всеми остальными JS-скриптами:

<script type="text/javascript" src="{$wa_url}wa-content/js/jquery/jquery-1.7.1.min.js"></script>

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

Если у вас есть вопросы, пожалуйста, задавайте их в комментариях.

UPD: Дополнение по поводу шаблона comments.html и адаптеров авторизации. Изменилось перечисление адаптеров авторизации:

— вместо {foreach $auth_adapters as $name => $adapter} теперь используется {foreach $auth_adapters as $adapter}
— {$name} заменяется на {$adapter->getId()}
— вместо {$adapter.photo_url_20|default:$adapter.photo_url|default:"`$wa_url`wa-content/img/userpic20.jpg"} используется {$adapter->getIcon()}
— вместо {$adapter.name} используется {$adapter->getName()}
— ссылку <a href="#" onclick="return $.blog.oauth('{$name}');"><img src="{$adapter.photo_url_20|default:$adapter.photo_url}" alt="">{$adapter.name}</a> нужно заменить на такую:
<a href="{$adapter->getCallbackUrl(0)}&app=blog"><img src="{$adapter->getIcon()}" alt="">{$adapter->getName()}</a>

Так же обновился JS-скрипт в этом шаблоне:

<script type="text/javascript">
$(document).ready(function() {
    $("#user-auth-provider a").click(function () {
        var left = (screen.width-600)/2;
        var top = (screen.height-400)/2;
        window.open($(this).attr('href'){if !$request_authorization} + "&guest=1"{/if},'oauth', "width=600,height=400,left="+left+",top="+top+",status=no,toolbar=no,menubar=no");
        return false;
    })
});
</script>

9 комментариев

Мы готовим к выпуску еще одно очень интересное приложение на основе фреймворка — приложение «Фото». Приложение позволит создать свою онлайн-фотогалерею, публиковать фотографии на сайте, в блог-постах приложения «Блог» и на страницах приложения «Сайт».

Приложение будет являться апгрейдом прежней версии WebAsyst Фото и будет значительно более функциональным и гибким. Вот несколько скриншотов из тестовой установки.

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

10 комментариев

Разработка (Developer) — приложение для разработчиков приложений: http://www.webasyst.com/ru/apps/developer/

Приложение является хорошим помощником при разработке приложений на основе фреймворка Вебасист: предоставляет «песочницу» для выполнения произвольного PHP/Smarty-кода в окружении фреймворка, включает в себя документацию по основным CSS-классам для построения интерфейса приложения и список всех доступных иконок .icon16 и .icon10.

В связи с тем, что приложение позволяет выполнить произвольный PHP-код, а значит получить доступ к любым данным фреймворка, его нельзя установить через «Инсталлер». Установить можно только вручную, скачав архив с сайта фреймворка и скопировав файлы приложения в папку wa-apps/ установки Вебасиста. Приложение «Разработчик» — для установки и использования на локальном компьютере или сервере, на котором ведется разработка. Оно не предназначено для работы на хостинге и в рабочей установке с реальными данными!

В будущем в приложение будут добавлены еще несколько полезных инструментов: для быстрого создания «приложений-пустышек» под новые проекты, просмотра полной документации по фреймворку с возможностью поиска, инструмент для работы с базой данных. Будем признательны разработчикам за ваши комментарии и пожелания по дальнейшему улучшению приложения.

Идея и реализация приложения: Леонид Вакуленко

11 комментариев

Пара советов по обеспечению безопасности вашей установки Вебасиста.

1. Изменение адреса бекенда (по умолчанию /webasyst/).
Делается это очень просто: в файле wa-config/config.php добавлением строки:

'backend_url' => 'admin',
// тогда бекенд будет открываться по адресу /admin/

'admin' можно заменить на что угодно.

Можно даже сделать URL входа в бекенд динамическим. Например, так:

'backend_url' => 'admin'.date('d'),

date('d') возвращает число месяца, например, 8 июня эта функция вернёт 08. Таким орбазом адрес бекенда будет /admin08/

2. Изменение функции генерации хеша паролей пользователей.
Фреймворк не хранит пароли пользователей в открытом виде. Хранится только хеш. Для совместимости с другими системами и прежними версиями скриптов WebAsyst по умолчанию в качестве функции хеша используется md5($password).

На современных GPU можно достаточно быстро перебирать пароли md5, а это значит, что если у вас каким-то образом будут украдены хеши паролей пользователей, то многие хеши могут быть расшифрованы (http://habrahabr.ru/post/145454/).

Начиная с версии фреймворка 1.0.8 появилась возможность задать свою функцию хеша от пароля. Для этого нужно в файле wa-config/SystemConfig.class.php в конце добавить объявление функции wa_password_hash().

Например, так:

function wa_password_hash($password)
{
    return md5(sha1("S!aL:T1%(#".$password)."_s+A=lT,2?*");
}

Строки S!aL:T1% и _s+A=lT,2?* принято называть «солью». При редактировании функции задайте ваши собственные значения этим строкам. Добавление «соли» делает хеши более устойчивыми к расшифровке (брутфорсу).

ВАЖНО: После смены функции хеша вам нужно будет установить новые пароли для пользователей: каждому пользователю бекенда нужно будет пройти стандартную процедуру восстановлением пароля («забыли пароль?»). Так что лучше всего обновленную функцию задавать тогда, когда в вашей системе еще мало пользователей. Рекомендуется сохранить код функции wa_password_hash() в надёжном месте на случай, если вы потеряете доступ к коду, и вам нужно будет перенести базу данных на другой сервер.

Есть пожелания или вопросы по улучшению безопасности? Пожалуйста, пишите комментарии.

2 комментария

Сегодня, 7 июня 2012, фреймворку Вебасист исполняется 1 год! Ровно год назад была представлена первая версия фреймворка и открыт сайт webasyst.com. В течение этого года мы реализовали почти все необходимые системные механизмы в ядре фреймворка, и сейчас готовим к выпуску несколько интересных приложений! В честь первого дня рождения представляем интересное нововведение — установку фреймворка одним кликом. Объясню, как это работает.

Как любой другой PHP-скрипт, фреймворк Вебасист устанавливается в несколько шагов: скачивание архива, загрузка на сервер по FTP, предоставление прав доступа к файлам, создание базы данных. Упростить процедуру установки скриптов может хостинг-провайдер, реализовав возможность экспресс-установки. Так многие хостинг-провайдеры позволяют пользователям устанавливать популярные скрипты одним кликом: WordPress, Joomla!, Drupal и другие.

Мы опубликовали документацию для хостинг-провайдеров, в которой описана реализация однокликовой установки фреймворка Webasyst: http://www.webasyst.com/ru/framework/docs/server/1-click-installation-implementation-guide/

Реализация несложная. В документации подробно описано, по какому адресу забирать дистрибутив, как сохранять данные для подключения к базе данных MySQL и т.д. Приведен готовый пример аддона для cPanel, позволяющий установить Вебасист одним кликом.

Приглашаем хостинг-провайдеров реализовать возможность установки Вебасиста и попасть в список рекомендованных хостингов для фреймворка! Вебасист уверенно набирает популярность! С появлением в ближайшем будущем новых приложений, в том числе нового Shop-Script, пользователей и разработчиков приложений на основе фреймворка будет каждый день все больше и больше. Всем им нужен надежный хостинг, и мы будем рады рекомендовать вас!

Сейчас в списке рекомендованных только один хостинг — предоставляемый нашей же компанией. На нем мы реализовали и протестировали процедуру однокликовой установки (работает!). Сделайте поддержку экспресс-установки на вашем хостинге, и мы добавим ваш хостинг в список рекомендованных. Ответим на любые ваши вопросы, окажем помощь в разработке: пишите нам по адресу framework-ru@webasyst.com

Опубликована документация по использованию капчи в приложениях на основе фреймворка Вебасист: http://www.webasyst.com/ru/framework/docs/dev/captcha/