Webasyst документация – Документация Webasyst — Документация Webasyst

Содержание

Документация Webasyst — Документация Webasyst

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

Бекенд — это закрытый паролем раздел сайта для управления данными. Доступ к бекенду может иметь любое количество пользователей, и каждый пользователь имеет доступ только к тому набору инструментов, к которому у него есть доступ. Бекенд работает сразу же после установки фреймворка, и в нем изначально доступны несколько системных приложений: «Сайт», «Контакты» и «Инсталлер».

  • «Сайт» — это приложение для управления страницами сайта, полноценная CMS с редактором дизайна, средствами настройки маршрутизации (распределения URL запросов между всеми установленными приложениями), и визуальным редактором текста для быстрого формирования содержимого страниц сайта.
  • «Контакты» — приложение для управления всеми контактами, хранящимися в базе данных фреймворка. Контакт — это запись в базе данных, хранящая разнообразную информацию о каком-либо человеке или организации: имя, адрес, номер телефона и т. д.
  • «Инсталлер» — инструмент для автоматизированной установки приложений, плагинов и тем дизайна из централизованного хранилища (репозитория) на сервере Webasyst.

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

Для формирования дизайна страниц фронтенда (т. е. сайта) используется механизм тем дизайна. Тема дизайна — это набор HTML-шаблонов, CSS- и JavaScript-файлов, задающих оформление страниц одного приложения. Наряду с отдельными темами для конкретных приложений существуют и семейства тем дизайна, которые позволяют придать общий внешний вид страницам, сформированным несколькими разными приложениями.

Приложение — это набор скриптов, объединенных общей логикой и выполняющихся в общем адресном пространстве. Например, по адресу вида

http://yourdomain.ru/webasyst/shop/ работает бекенд приложения Shop-Script — все запросы, URL которых начинается с такого базового адреса, обрабатываются только этим одним приложением. В отличие от приведенного примера запросов к бекенду, запросы к фронтенду каждого приложения могут группироваться с помощью неограниченного количества правил (масок). Например, витрина интернет-магазина может быть доступна по нескольким адресам: http://yourdomain.ru/, http://yourdomain.ru/books/, http://yourdomain.ru/
facebook/
и т. д. И у каждой такой витрины может свое собственное оформление — в зависимости от выбранной темы дизайна.

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

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

developers.webasyst.ru

Список самостоятельной проверки продукта — Документация Webasyst

Выполните все эти проверки самостоятельно, чтобы пройти модерацию с первой попытки.

Настройка тестового стенда

  • Установлен PHP 5.2 (или в IDE настроена проверка соответствия кода версии PHP 5.2). Если в системных требованиях продукта указана более высокая версия PHP, то вместо 5.2 следует использовать для тестирования именно эту версию.
  • Скачайте и установите последнюю версию фреймворка Webasyst.
  • Фреймворк должен быть установлен в поддиректорию домена, например, http://localhost/check/.
  • URL входа в бекенд изменен на нестандартный, например, /admin/.
  • В файл wa-config/db.php добавлен параметр 'sql_mode' => 'TRADITIONAL'.
  • Включено логирование всех ошибок PHP: error_reporting = 2147483647.
  • В приложении «Сайт» настроено минимум 2 сайта — с разными доменами. Для тестируемого приложения должны быть настроены минимум 2 поселения: в корне сайта (*) и в «подпапке» (shop/*). Тестировать на всех поселениях всех доменов.

Чего не должно быть в программном продукте

  1. Возможность конфликтов с другими установленными продуктами.
  2. Более одной директории в корне архива с файлами продукта: архив должен содержать единственную директорию, имя которой совпадает с идентификатором продукта.
  3. Посторонний код в конфигурационных файлах db.php, app.php, plugin.php, settings.php, кроме описанного в документации. В routing.php в отдельных случаях допустим простой код, если без него нельзя обойтись.
  4. Файлы PHP-классов и HTML-шаблонов с нарушением правил именования файлов и PHP-классов, описанных в документации.
  5. Лишние файлы, не используемые в работе продукта.
  6. Директории с PHP-файлами, HTML-шаблонами и файлами локализации, не содержащие файлы .htaccess с директивой Deny from all.
  7. Лишние директивы в файлах .htaccess.
  8. Пустые директории.
  9. Вставка значений в SQL-запросы без использования плейсхолдеров (рекомендуется) или явного приведения значений к безопасному типу.
  10. В PHP-коде используются средства, недоступные в некоторых из версий начиная с 5.2, и описание этого ограничения отсутствует в системных требованиях.
  11. При использовании PHP-расширений не проверяется их наличие и в конфигурационном файле отсутствует описание соответствующего системного требования.
  12. При использовании функций file_get_contents, copy, get_headers, класса
    XMLReader
    и аналогичных инструментов применительно к удаленному ресурсу в коде продукта не проверяется значение параметра allow_url_fopen, которое должно быть также описано в системных требованиях.
  13. Сохранение, модификация или удаление файлов вне предназначенных для этого директорий wa-cache/, wa-config/ и wa-data/ — например, в wa-apps/, wa-content/, wa-installer/, wa-plugins/ и wa-system/.
  14. В именах файлов или директорий используются символы, не поддерживаемые разными операционными системами.
  15. Создание таблиц базы данных другими способами, кроме использования файлов
    db.php
    (кроме метаобновлений, см. ниже).
  16. Создание полей таблиц другими способами, кроме использования файлов install.php.
  17. Повторное выполнение кода в файле install.php вызывает возникновение ошибок.
  18. Сообщения об ошибках JavaScript в консоли браузера.
  19. Сообщения об ошибках в PHP-логах.
  20. Сообщения об ошибках в ответах сервера.
  21. Не выполняется экранирование символов при отображении данных, или выполняется излишнее экранирование.
  22. В интерфейсе пользователя неправильно обрабатывается ввод текста вида
    '"></textarea><script>alert(1)</script>
    Т. е. выполняется JavaScript-код вместо отображения текста.
  23. В качестве пути к бекенду используется жестко прописанный в коде фрагмент webasyst/.
  24. В URL для подключения к веб-странице файлов со сторонних ресурсов жестко задан протокол http:// — это может сделать нерабочим интерфейс, открытый через https://. Следует использовать универсальный способ указания URL для таких файлов с использованием фрагмента //.
  25. Во фронтенде сайта допускается индексация поисковыми системами нежелательного содержимого (технических «заглушек»), в том числе с использованием редиректов.
  26. Работающий отладочный код в исходном коде продукта.
  27. Большое количество кода, не учитывающего архитектуру и средства, предоставляемые фреймворком.
  28. Плагин не использует свой ID в качестве префикса для:
    • имен собственных таблиц базы данных (правильный шаблон именования таблиц плагинов: [app]_[plugin]_***, например: shop_watermark_data)
    • имен собственных полей, добавляемых в таблицы приложений
    • собственных переменных PHP-сессий
    • собственных переменных cookie
    • имен глобальных переменных или функций JavaScript на страницах, где код плагина выполняется совместно с кодом приложения и других плагинов
  29. При удалении плагина не удаляются (с помощью файла uninstall.php) созданные им поля в таблицах базы данных (кроме обоснованных случаев, когда удаление этих полей может нарушить работу приложения).
  30. В конфигурационном файле плагина plugin.php в качестве обработчиков хуков указаны несуществующие методы основного класса плагина.
  31. Плагин оплаты, доставки или интеграции с SMS-провайдером использует функции и классы некоторого определенного приложения вместо того, чтобы учитывать возможность работы с любым количеством разных приложений, в которых есть поддержка таких плагинов.
  32. В методе callbackHandler() плагина оплаты отсутствует проверка на наличие, ненулевую длину и корректность значения хеша-подписи, отправляемого платежной системой, перед изменением статуса заказа приложением.
  33. Плагин, выполняющий фискализацию платежей, не позволяет отключить функцию фискализации. Фискализация должна быть отключаемой функцией, потому что она может уже выполняться приложением или другим плагином.
  34. Плагин или приложение при обработке события либо в хелпере HTML-шаблона используют прерывание выполнения PHP-скрипта, например, с помощью функции die().
  35. Возможность загрузки на сервер файлов с PHP- или другим кодом, исполняемым на сервере при запросе файла по ссылке или другим способом.

Чего также не должно быть в обновлении продукта

  1. Создание новых таблиц и добавление полей в существующие таблицы базы данных другими способами, кроме использования файлов метаобновлений.
  2. Повторное выполнение кода в файлах метаобновлений вызывает возникновение ошибок.
  3. В обновлении продукта изменено содержимое его db.php и отсутствуют файлы метаобновлений для добавления/изменения таблиц уже установленного продукта.
  4. В обновлении продукта отсутствуют файлы, имевшиеся в предыдущей версии, и отсутствуют файлы метаобновлений, удаляющие эти файлы.

Критичные недочеты в функциональности и описании продукта

  1. Неполностью локализованный интерфейс пользователя.
  2. Интуитивно непонятный интерфейс без подробного описания.
  3. Кириллические тексты и обозначения валют на снимках экрана для англоязычной версии продукта.
  4. Много грамматических ошибок и опечаток в интерфейсе и описании продукта (включая снимки экрана).
  5. Реферальные ссылки в интерфейсе или описании продукта.
  6. Критичные ошибки в логике работы продукта.

developers.webasyst.ru

Файловая структура — Документация Webasyst

  • wa-apps

    исходный код приложений

    • APP_ID

      • api

        публичные API-методы приложения (необязательно)

      • css

        CSS-стили приложения

      • img

        файлы изображений

      • js

        файлы с JavaScript-кодом

      • lib

        файлы с основным PHP кодом приложения

      • locale

        файлы локализации приложения (gettext)

      • plugins

        плагины приложения (необязательно)

        • PLUGIN_ID

          • css

            CSS-стили плагина

          • img

            файлы изображений

          • js

            файлы с JavaScript-кодом

          • lib

            файлы с основным PHP-кодом плагина

          • locale

            файлы локализации плагина (gettext)

          • templates

            файлы HTML-шаблонов плагина

      • templates

        файлы HTML-шаблонов бекенда приложения

      • themes

        темы дизайна для фронтенда приложения

        • THEME_ID

          • theme.xml

            файл-манифест темы дизайна

            index.html

            основной шаблон

            другие шаблоны темы дизайна

      • widgets

        виджеты приложения (необязательно)

        • WIDGET_ID

          • css

            CSS-стили виджета

          • img

            файлы изображений

          • js

            файлы с JavaScript-кодом

          • lib

            файлы с основным PHP-кодом плагина

          • locale

            файлы локализации виджета (gettext)

          • templates

            файлы HTML-шаблонов виджета

  • wa-cache

    файлы кеша: SQL-запросы, скомпилированные шаблоны веб-страниц и т. п.

  • wa-config

    системные конфигурационные файлы

    • apps.php

      список установленных приложений

    • db.php

      параметры подключения к базе данных

    • routing.php

      правила маршрутизации HTTP-запросов по URL

  • wa-content

    общее содержимое, подключаемое на страницах разных приложений: библиотеки JavaScript, CSS-стили, изображения и т. п.

  • wa-data

    файлы, хранящие данные, необходимые для работы приложений

    • public

      файлы, доступные напрямую по HTTP

    • protected

      защищенные файлы, доступные только с помощью PHP-скриптов приложений

  • wa-installer

    установочные скрипты фреймворка

  • wa-log

    лог-файлы

  • wa-plugins

    общесистемные плагины, например, для подключения к платежным системам, плагины расчета стоимости доставки, модули интеграции с SMS-шлюзами

  • wa-system

    файлы с исходным кодом ядра фреймворка

  • wa-widgets

    файлы с исходным кодом системных виджетов

  • api.php

    точка доступа к публичным API

  • cli.php

    обработчик запросов через командную строку (CLI)

  • index.php

    центральный диспетчер HTTP-запросов

  • install.php

    скрипт установки фреймворка (автоматически удаляется после завершения установки)

  • wa.php

    скрипт для выполнения служебных команд разработчиками

  • developers.webasyst.ru

    №4. Создание сайта — Документация Webasyst

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

    1. Создание сайта mydomain.ru

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

    Сайт уже работает, и его можно посмотреть, открыв корневой адрес установки Вебасиста (в данном случае mydomain.ru):

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

    2. Маршрутизация и поселение приложений

    Основная структура сайта определяется его маршрутизацией: правилами, распределяющими общее адресное пространство сайта между отдельными приложениями Вебасиста. Откройте раздел управления маршрутизацией сайта:

    Сейчас в правилах маршрутизации только одно правило: mydomain.ru/* -> Сайт. Правило означает, что все адресное пространство предоставлено приложению «Сайт», то есть любой запрос посетителя сайта будет передан на обработку (иначе говоря, маршрутизирован) приложению «Сайт».

    Добавим, как показано на скриншоте выше, новые правила mydomain.ru/blog/* -> Блог и mydomain.ru/photos/* -> Фото.

    Мы поселили приложение «Блог» по адресу mydomain.ru/blog/, и теперь любой адрес внутри mydomain.ru/blog/ (например, /blog/2011/?tag=updates, /blog/announcements/new-app-released/ и т. д. — в правиле маршрутизации это указывается звездочкой *) будет передан на обработку приложению «Блог». Фото — аналогично. Все остальные адреса, не удовлетворяющие правила mydomain.ru/blog/* и mydomain.ru/photos/*, будут переданы приложению «Сайт» согласно правилу маршрутизации, которое действует по умолчанию.

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

    Обратите внимание, что правило /blog/* в маршрутизации должно находиться выше правила /* в связи с тем, что правила обрабатываются одно за одним в порядке их отображения, и первое правило, которое подошло для текущего запроса пользователя, будет обработано, а все последующие правила будут проигнорированы. Если бы мы поставили правило /* над правилом /blog/*, то до /blog/* очередь никогда не дошла бы, потому что самое общее правило /* всегда бы срабатывало (ведь оно удовлетворяет любому адресу, запрошенному посетителем данного сайта). Чем более общим является правило, тем ниже оно должно находиться в правилах маршрутизации.

    В верхнем меню общедоступной части сайта (во фронтенде) появятся ссылки «Блог» и «Фото», по которым уже будут открываться эти приложения:

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

    3. Новая страница

    Добавим страницу «О сайте» по адресу mydomain.ru/about-us/:

    Страница появится в левом меню основного раздела сайта (/*):

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

    4. Блоки

    Добавим еще одну страницу «Обратная связь», на которой разместим форму отправки запроса по почте. Сделать это можно с помощью блока отправки запроса, который предоставляется базовым функционалом приложения «Сайт» (запросы отправляются на адрес, указанный в настройках приложения «Инсталлер»). В разделе «Блоки» скопируем код для вставки блока send.send_email_form:

    Создадим новую страницу «Обратная связь», подключив в ней блок отправки запроса:

    Вот так страница будет выглядеть во фронтенде:

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

    5. Дизайн

    Теперь немного поменяем общее оформление сайта, которое в данный момент работает на базе «Основной» темы оформления. В левой колонке выберем приложение «Сайт» и сделаем изменения в шаблонах дизайна sidebar.html, index.html, default.css (изменения выполняются исключительно в демонстрационных целях; на снимке экрана выделена часть изменений в файле default.css, остальные изменения не показаны).

    Сохраните изменения и откройте сайт:

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

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

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

    6. Еще одно поселение «Сайта»

    Добавим в правила маршрутизации еще одно поселение приложения «Сайт» по адресу mydomain.ru/shop/

    И добавим в этом поселении одну информационную страницу в качестве корневой страницы (если не добавить страницу, то по адресу mydomain.ru/shop/ будет возвращаться ошибка 404):

    Новое поселение, так же как и существовавшее до этого, по умолчанию использует тему оформления «Дефолт», поэтому страница по адресу mydomain.ru/shop/ будет выглядеть в рамках оформления, которое мы делали ранее:

    Добавленная страница «Скоро открытие» не будет отображаться в меню страниц корневого раздела сайта (ссылка «Webasyst» в верхнем меню, соответствующая поселению «Сайта» по адресу mydomain.ru/), потому что эта страница прикреплена к другому поселению — mydomain.ru/shop/.

    Попробуем теперь изменить оформление только нового раздела сайта mydomain.ru/shop/ (только нового поселения приложения «Сайт» в mydomain.ru /shop/), не меняя оформление основного раздела «Webasyst». Для этого необходимо создать новую тему оформления и применить ее к новому поселению, оставив как есть уже существующие тему оформления и поселение mydomain.ru/*. Создадим копию темы оформления в разделе «Темы» бекенда приложения «Сайт»:

    Название копии темы — «Дефолт 1», и по желанию его можно изменить с помощью пункта меню «Переименовать» здесь же. Мы не будем этого делать и применим новую тему в настройках поселения «Сайта» по адресу mydomain.ru/shop/:

    Теперь для наглядности сделаем небольшие изменения в дизайне уже новой темы (в файле default.css темы «Дефолт 1»), в результате чего получим, например, такое оформление:

    Теперь два раздела общедоступного сайта в mydomain.ru/ и mydomain.ru/shop/, работающие на одном и том же приложении «Сайт», выглядят по-разному.

    7. $wa->apps()

    Обратите внимание, что во всех примерах выше добавление нового правила в маршрутизацию приводило к автоматическому появлению нового пункта меню в основной навигации на сайте. Такое поведение было обусловлено общей настройкой сайта, которая формирует массив $wa->apps():

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

    Если навигационное меню сайта отличается от структуры маршрутизации (например, если ваш сайт обладает сложной структурой, либо не все приложения должны отображаться в основном меню и т. п.), то $wa->apps() легко «отвязать» от маршрутризации, включив ручное задание содержимого этого массива:

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

    8. Шпаргалка

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

    Для примера рассмотрим следующую задачу: на главной странице сайта выведем приветствие для авторизованных пользователей и информацию об операционной системе на устройстве, которое в данный момент использует пользователь:

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

    Инструментарий шпаргалки можно использовать в содержимом и информационных страниц, и шаблонов разных приложений.

    developers.webasyst.ru

    API — Документация Webasyst

    Обращение к API Webasyst и установленных в нем приложений выполняется через файл api.php.

    Авторизация основана на протоколе OAuth 2.0:

    1. Получаем токен авторизации — ключ доступа. В запросе получения токена перечисляем идентификаторы приложений, к API которых нужно получить доступ.
    2. Используя полученный токен, обращаемся к API-методам этих приложений. При работе с методами API учитываются права доступа пользователя, для которого был выдан токен.

    Теперь подробнее об этом.

    1. Получение токена авторизации

    Используется немного модифицированная и упрощенная версия протокола OAuth 2.0.

    Запрос на получение токена отправляет пользователя на специальную страницу авторизации Webasyst. На этой странице пользователь авторизуется со своими логином и паролем, которые используются для входа в бекенд Webasyst. Логин и пароль пользователь вводит именно на сайте с установленным фреймворком, а не в приложении-клиенте, которое пытается получить токен.

    Пройдя авторизацию, пользователь разрешает или запрещает доступ к API от своего имени. Если доступ разрешается, то выдается токен. Пример токена: b936356100e3883cabf59abed991d03d.

    Время жизни токена не ограничено.

    Токен выдается только в случае разрешения доступа к API. Схема запроса на доступ от приложения следующая:

    А. Серверные приложения

    Перенаправлять пользователей для подтверждения прав доступа на
    http://ACCOUNT_URL/api.php/auth?client_id=CLIENT_ID&client_name=CLIENT_NAME&response_type=code&scope=SCOPE&redirect_uri=REDIRECT_URI&format=FORMAT

    Если пользователь подтверждает доступ, перенаправлять обратно на адрес
    REDIRECT_URL?code=CODE

    в противном случае — на
    REDIRECT_URL?error=access_denied

    Сервер выполняет POST-запрос с полями

    code: CODE,
    client_id: CLIENT_ID,
    grant_type: ‘authorization_code’

    по адресу http://ACCOUNT_URL/api.php/token?redirect_uri=REDIRECT_URI&format=FORMAT

    Ответ может быть в формате JSON (по умолчанию) или XML (&format=XML).

    {"access_token": ACCESS_TOKEN}

    или

    <response>
        <access_token>ACCESS_TOKEN</access_token>
    </response>
    Б. Клиентские приложения

    Перенаправлять пользователей для подтверждения прав доступа на
    http://ACCOUNT_URL/api.php/auth?client_id=CLIENT_ID&client_name=CLIENT_NAME&response_type=token&scope=SCOPE&redirect_uri=REDIRECT_URI&format=FORMAT

    Если пользователь подтверждает доступ, перенаправлять обратно на
    REDIRECT_URL#access_token=ACCESS_TOKEN
    в противном случае на
    REDIRECT_URL#error=access_denied

    Пояснения к переменным

    ACCOUNT_URL — URL корневой папки установки фреймворка Webasyst

    CLIENT_ID — уникальный идентификатор приложения, например, XYZCompanyShopImportApp; для веб-приложений рекомендуется указывать домен, чтобы избежать возможных конфликтов; идентификатор приложения разработчик придумывает на свое усмотрение

    CLIENT_NAME — название приложения, которое будет показано на странице запроса доступа

    SCOPE — приложения, к которым нужен доступ, перечисленные через запятую, например, scope=shop,photos,blog

    REDIRECT_URI — URL, на который будет перенаправлен пользователь после принятия или отказа от принятия предоставления доступа к данным приложений

    CODE — одноразовый код, необходимый для получения токена; действителен в течение 3 минут

    FORMAT — необязательный параметр, указывающий на формат обмен информацией; возможные варианты значений: xml или json; если параметр не указан, то по умолчанию используется json

    2. Запросы к API

    Формат URL

    http://ACCOUNT_URL/api.php/APP_ID.METHOD?PARAMS&access_token=ACCESS_TOKEN&format=FORMAT

    Пример

    Например, http://mydomain.ru/api.php/shop.product.getInfo?id=4&access_token=ACCESS_TOKEN&format=xml

    Альтернативный формат

    http://ACCOUNT_URL/api.php?app=APP_ID&method=METHOD&PARAMS&access_token=ACCESS_TOKEN&format=FORMAT

    Пример

    http://mydomain.ru/api.php?app=shop&method=product.getInfo&id=4&access_token=ACCESS_TOKEN&format=xml

    • METHOD

      название метода, например, shop.category.getTree, stickies.sheet.getList

    • PARAMS

      набор параметров согласно описанию метода, например, parent_id=0&max_level=3

    • ACCESS_TOKEN

      токен, полученный при авторизации

    • RESPONSE

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

    • APP_ID (в альтернативном способе вызова)

      идентификатор приложения, например, shop, stickies, photos, blog

    • FORMAT

      необязательный параметр, указывающий на формат обмен информацией; возможные варианты значений: xml или json; если параметр не указан, то по умолчанию используется json

    В случае ошибки в ответе всегда будет доступно поле error:

    JSON

    {"error": "invalid_request"}

    XML

    <response>
        <error>invalid_request</error>
    </response>

    Коды ошибок (элемент error)

    • invalid_request

      неверно сфомированный запрос; дополнительная информация об ошибке указывается в поле error_description

    • access_denied

      для данного токена нет доступа к запрошенному методу

    • invalid_method

      вызов неизвестного метода API

    developers.webasyst.ru

    GitHub — Документация Webasyst

    Исходный код фреймворка Вебасист доступен через репозиторий на GitHub. Обратите внимание: при установке фреймворка из репозитория начальная настройка и конфигурирование производятся вручную, поскольку в репозитории отсутствует скрипт установщика.

    1. Загрузите код фреймворка из репозитория в каталог на вашем веб-сервере: %PATH% (например, public_html/webasyst/).

      Через GIT:

      
      cd %PATH%
      git clone git://github.com/webasyst/webasyst-framework.git
      

      Через SVN:

      
      cd %PATH%
      svn checkout https://github.com/webasyst/webasyst-framework.git
      
    2. Создайте конфигурационные файлы фреймворка путем копирования файлов-заготовок (расположены в каталоге %PATH%/wa-config/):
      
      cd wa-config
      cp apps.php.example apps.php
      cp config.php.example config.php
      cp db.php.example db.php
      cp locale.php.example locale.php
      cp SystemConfig.class.php.example SystemConfig.class.php
      

      Файл apps.php.example содержит идентификатор только одного приложения: Контакты. Если вы хотите, чтобы в бекенде были представлены и другие приложения, их идентификаторы необходимо включить в этот файл. Подробнее см. в разделе «Конфигурационные файлы».

    3. Откройте каталог установки (%PATH%) на запись:
      
      cd ..
      chmod 0775 %PATH%
      
      # или 0777 — в зависимости от настроек сервера
      
    4. Создайте новую базу данных MySQL для фреймворка и приложений. Откройте файл wa-config/db.php в текстовом редакторе и укажите параметры подключения к базе данных.

    5. Запустите фреймворк в браузере (например, по адресу http://localhost/webasyst/).
    Примечание. В случае установки из репозитория обновление кода фреймворка и приложений лучше выполнять средствами GIT или SVN и не использовать приложение Инсталлер.

    Репозиторий открыт только для чтения. Если вы хотите предложить изменения или дополнения в код фреймворка или приложений, вы можете воспользоваться возможностями, предоставляемыми ресурсом github.com, и оформить запрос на внесение своего кода в проект через Pull Request.

    Инсталлер

    При установке фреймворка из репозитория на GitHub обновления и установка новых приложений во фреймворк возможна только средствами GitHub или вручную. Приложение «Инсталлер» не входит в состав репозитория.

    Установка новых приложений вручную

    1. Фреймворк должен быть установлен на вашем хостинге или локальном компьютере.
    2. Скачайте архив с файлами приложения.
    3. Распакуйте архив и загрузите его содержимое на сервер в подкаталог фреймворка wa-apps/. После завершения загрузки в этом каталоге появится новый подкаталог с файловой структурой приложения. Название этого подкаталога совпадает с идентификатором приложения (APP_ID).
    4. Чтобы приложение появилось в списке приложений в бекенде необходимо «включить» его в системном конфигурационном файле wa-config/apps.php, добавив туда следующую строку:

      '{APP_ID}' => true

      Вместо {APP_ID} нужно указать идентификатор (он совпадает с названием каталога приложения).

    5. Если приложение содержит фронтенд, его необходимо настроить в системном конфигурационном файле маршрутизации wa-config/routing.php. Подробнее см. раздел «Маршрутизация запросов на фронтенд».

    developers.webasyst.ru

    На хостинге — Документация Webasyst

    Для установки Webasyst (или Shop-Script, если вы скачали дистрибутив на сайте shop-script.ru) на веб-сервере должны поддерживаться PHP и MySQL версий, указанных в системных требованиях.

    Весь процесс установки:

    Теперь по порядку:

    1. Подключитесь к веб-серверу хостинг-провайдера с помощью FTP-клиента, например, FileZilla. Вместо FTP-доступа хостинг-провайдер может предоставлять специальный раздел для управления файлами в контрольной панели вашего аккаунта или SSH-доступ. После подключения к серверу выберите директорию, предназначенную для размещения сайтов, например: public_html, html, htdocs или httpdocs (при необходимости уточните название нужной директории в службе поддержки своего хостинг-провайдера).
    2. Распакуйте установочный архив скриптов Webasyst в любую пустую папку на своем компьютере и загрузите извлеченное содержимое в выбранную директорию на сервере.

      Скрипты Webasyst следует устанавливать в пустую директорию, в которой отсутствуют файлы других программных продуктов. Несоблюдение этой рекомендации может привести к непредсказуемым последствиям.
    3. Установите права доступа к директории установки скриптов и к поддиректории wa-installer/ таким образом, чтобы пользователь операционной системы сервера, от имени которого исполняются PHP-скрипты, имел полномочия для записи файлов в эти директории.

      Установите права доступа к файлам index.php и install.php таким образом, чтобы веб-сервер мог перезаписывать их содержимое. Как правило, для этого достаточно установить одно из значений 755, 775 либо 777 для директорий и 644, 664 либо 666 — для файлов.

      Точные значения прав доступа, соответствующие перечисленным выше требованиям, выясните у своего хостинг-провайдера.

    4. Создайте базу данных MySQL в контрольной панели хостинга и предоставьте пользователю MySQL полные права доступа к этой базе данных. Скопируйте имя пользователя, название базы данных и имя сервера MySQL из контрольной панели хостинга — их нужно будет ввести во время установки Webasyst.

    5. Наберите в адресной строке браузера адрес (URL), по которому должны быть доступны приложения Webasyst. Например, если файлы установщика в шаге 2 были загружены в директорию public_html, html, htdocs или httpdocs, то в браузере следует набрать доменное имя (либо IP-адрес), на котором выполняется установка, например: http://yourdomain.ru/ или http://111.222.333.444/.

    6. Выполните инструкции, показанные на открывшейся странице. В ходе установки введите в соответствующие поля скопированные ранее имя сервера MySQL, название базы данных и имя пользователя MySQL.

      После сохранения параметров подключения к базе данных перейдите по ссылке для входа в ваш Вебасист.

    7. Укажите параметры главного пользователя: логин, пароль и адрес электронной почты. Щелкните по ссылке «Войти».

      После первого входа в аккаунт установка скриптов Webasyst считается завершенной.

    Нестандартные ситуации

    Использование nginx в режиме FastCGI в качестве веб-сервера

    Сочетание nginx и FastCGI без использования веб-сервера Apache для работы скриптов Webasyst требует специальных настроек.

    Ошибка 500 («Internal Server Error»)

    RewriteBase

    Если при завершении установки после перехода по ссылке «Войти» в браузере появится сообщение о внутренней ошибке сервера («Internal Server Error 500»), отредактируйте файл .htaccess в корневой директории установки Webasyst, удалив символ комментария # в начале следующей строки:

    #RewriteBase /

    После удаления символа строка должна принять следующий вид:

    RewriteBase /

    Если скрипты Webasyst устанавливаются в поддиректорию домена (например, по адресу вида http://yourdomain.ru/wa/), то к символу косой черты в этой строке нужно добавить путь к директории установки фреймворка, например:

    RewriteBase /wa/
    Options -MultiViews

    На некоторых серверах может быть запрещено использование следующей директивы в файле .htaccess, из-за чего при использовании приложений Webasyst может возникать ошибка сервера 500:

    Options -MultiViews

    В таком случае необходимо добавить символ # в начале этой строки, чтобы получилось следующее:

    #Options -MultiViews

    developers.webasyst.ru

    Leave a Reply