webasyst alpha

  • Фреймворк
  • Приложения
  • Помощь
  • Блог
  • Скачать
  • Демо
  • Возможности
  • Лицензия
  • Документация Webasyst
    • Введение
    • Установка
    • Создание сайта
      • Пример: создание сайта
      • Сайты и маршрутизация
      • Шаблоны и темы оформления
      • Страницы и общие блоки
    • Разработка приложений
      • Пример: приложение «Гостевая книга»
      • Приложение-пустышка
      • Файловая структура
      • Конфигурационные файлы
      • Шаблоны
      • Интерфейс
      • База данных
      • Правила и рекомендации по именованию
      • Маршрутизация в бекенде
      • Маршрутизация во фронтенде
      • Экшены и контроллеры
      • Композитные макеты
      • Права доступа
      • AJAX
      • Переменные окружения
      • Сессии
      • Локализация
      • Мобильная версия
      • Работа с почтой
      • Работа с изображениями
      • Загрузка файлов на сервер
      • Журнал действий пользователя
      • Интеграция с приложением «Сайт»
      • Интеграция с приложением «Контакты»
      • Действия по расписанию
      • Адаптеры авторизации
      • Плагины
    • Настройки сервера
      • Nginx + FastCGI
      • Настройка Cron

Мобильная версия

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

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

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

В рамках приложения тип клиента (мобильный/стандартный) определяется с помощью простого вызова метода isMobile() системного класса waRequest:

//определяет тип устройства, с которого поступил HTTP-запрос
//возвращает true, если устройство является мобильным (смартфон, планшет),
//в противном случае возвращает false

waRequest::isMobile()

Способы организации мобильной версии приложения

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

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

Вариант 1. Разделение настольных и мобильных модулей и экшенов

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

Единственной точкой пересечения двух версий приложений остается лицевая страница приложения, которая также поддается разделению — для мобильной версии создается свой лицевой интерфейс, доступный по отдельному URL, а в логику стандартной (настольной) версии добавляется условие перенаправления мобильных клиентов на URL мобильной версии приложения:

if (waRequest::isMobile()) {
  this->redirect('mobile/');
  return;
}

Вариант 2. Доработка логики определения соответствия шаблона и экшена

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

Архитектура фреймворка позволяет переопределить логику соответствия файла шаблона экшену и включить в нее условие проверки значения waRequest::isMobile(). Для этого в классе экшена (наследнике класса waViewAction или waViewActions — подробнее см. «Экшены и контроллеры») необходимо переопределить метод getTemplate, реализующий логику, согласно которой система определяет имя файла шаблона для рендеринга при выполнении экшена. Ниже представлен пример из приложения Стикеры, иллюстрирующий такой подход:

<?php

class stickiesBackendAction extends waViewAction
{
	...
  
	public function getTemplate()
	{
		$template = parent::getTemplate();
		if (waRequest::isMobile()) {
			$template = str_replace('templates/actions/', 'templates/actions-mobile/', $template);
		}
		return $template;
	}
}
  • О компании
  • Фреймворк и WebAsyst.ru
    • Language
      • Русский
      • English

© 2011 Webasyst