Jump to content
  1. Версии и обновление приложения

    В этой статье описывается, как определить версии  вашего приложения и использовать Upgrader для выполнения запросов обновления между версиями.
    Обновляетесь с IP.Board 3.x?
    Если у вас есть приложение, которое изначально было разработано под IP.Board 3.x, вам нужно будет сделать следующее. Не имеет значения установили ли вы сразу версию 4.x или обновились с 3.x.
    Создайте новое приложение в обычном режиме в панели администратора. Если вы установили сразу версию 4.x, а не обновились, вручную создайте таблицы в вашей SQL базе данных. Во вкладке “Database Schema” в центре разработчика импортировать таблицы базы данных. Важно использовать вкладку "Импорт из базы данных",  так как другие варианты будут предполагать создание новых таблиц. На вкладке “Versions” добавьте все ваши предыдущие версии и запросы, необходимые для обновления – более подробно это рассмотрено ниже. Существует возможность загрузить ваш более ранний файл versions.xml, чтобы быстро их импортировать, но  нужно будет указать обновления для каждой версии вручную. Как определить версии
    В Центре разработчика есть вкладка “Versions”, которая показывает все версии вашего приложения. Важно, чтобы там всегда была указана последняя версия приложения. Например для нового приложения у вас должна быть указана версия "1.0.0". Когда вы создадите новую версию приложения (версии 1.0.0), вы должны сразу после этого добавить следующую версию (например 1.0.1),  вы укажете информацию о версии при построении приложения, а специальная версия upg_working будет очищена и готова к следующей новой версии. Это нужно для того, чтобы когда вы работаете над приложением, система автоматически вносила любые изменения, которые вы сделали, в базу данных для того, чтобы обновить его с текущей версии до той, которую вы указали.
    Схема базы данных
    Во вкладке  “Database Schema”  можно определить все таблицы, которые использует ваше приложение. Когда приложение устанавливается в первый раз, создаются таблицы. По мере внесения изменений в схему базы данных, система автоматически добавит соответствующие запросы, чтобы обновить приложение до последней версии.
    Например: у вас есть текущая финальная версия приложения на вкладке “Versions” 1.0.0 и у вас есть таблица на вкладке “Database Schema”. Вы публикуете эту версию, а затем добавляете версию 1.0.1 во вкладке “Versions”. Позже вы добавляете столбец в таблицу на вкладке “Database Schema”. При публикации версии 1.0.1, система автоматически:
    Для установки: просто создает таблицу, как это было указано, в том числе с добавленным столбом. Для обновлений: добавляет столбец. Вам не нужно вручную добавлять столбец в процессе обновления.
    Запросы пользовательской версии и код
    Хотя система Database Schema хороша при автоматической обработке таблиц, принадлежащих вашему приложению, может понадобиться так же выполнить и другие запросы (например UPDATE запросы или запросы, чтобы добавить столбцы в таблицы, не принадлежащие вашему приложению). Это делается на вкладке Versions. Просто нажмите на значок "+" для версии, для которой должен быть выполнен запрос (например, если запрос должен быть выполнен при обновлении до версии 1.0.1 запрос, нужно нажать "+" для версии 1.0.1), однако, вы просто добавите это в текущую версию, над которой вы работаете, которая будет обозначаться как "upgrade_working" в списке "Versions").
    Вы увидите, что есть специальная "install" версия, которая может быть использована для задания запросов, которые должны быть выполнены при установке. Может потребоваться добавить запрос как к "install" версии, так и к версии с которой вы работаете . Например, если вы работаете над версией 1.0.1, и хотите добавить столбец в таблицу core_groups, который вы не добавляли в версии 1.0.1, вам нужно будет добавить запрос для версии 1.0.1 (для тех, кто обновился с 1.0.0) и специальной "install" версии (для новых установок).
    Если вам необходимо запустить код, который не может быть выражен в виде одного запроса, вы также можете использовать пользовательский код. Для этого нажмите на кнопку "</>" для версии, которая нуждается в пользовательском коде. Это создаст файл в директории applications/<ваше_приложение>/setup/<version>/ с каркасом для работы. Просто откройте этот файл и следуйте инструкциям в нем, чтобы добавить туда свой код. Вы также можете сделать это для "install" версии.
    Если вы перешли с IP.Board 3, вы можете вручную создать файл queries.php в директории applications/<your_app>/setup/<version>/ с содержимым старого файла mysql_updates.php (установив $SQL переменную). Поскольку эта функция только для поддержки устаревших версий, файл нельзя создать из центра разработчика, только вручную. Если у вас небольшое количество запросов, может быть проще переписать их вызовом метода \IPS\Db::i() и добавить, используя обычный метод (нажав на кнопку "+" для нужной версии в Центре Разработчика).
    Удаление кода
    Система  автоматически удалит все таблицы, определенные схемой базы данных вашего приложения при его удалении. Если вам необходимо выполнить код в дополнение к этому, вы можете сделать это с расширением Uninstall. В Центре разработчиков для вашего приложения, на вкладке “Расширения”  нажмите кнопку "+" для core > Uninstall и создайте расширение (название не важно). Это создаст файл с каркасом в каталоге applications/<your_app>/extensions/core/Uninstall/. Просто откройте файл и следуйте инструкциям в нем, чтобы добавить свой код.
  2. Добавление и использование ресурсов в приложении

    HTML шаблоны
    В директории dev вашего приложения вы найдете каталог HTML, который будет содержать какие-либо шаблоны, которые вы создаете для использования в вашем приложении. Применимы три поддиректории:
    admin/ содержит шаблоны для любых интерфейсов панели администратора; front/ содержит шаблоны для пользовательского и фронт-энд интерфейсов; global/ содержит шаблоны, которые используются как администраторскими так и фронт-энд областями. Внутри каждого из этих каталогов вы должны создать подкаталоги, которые объединяют шаблоны в логические группы; как правило, каждый модуль в вашем приложении будет иметь соответствующий каталог и в admin и в front папках шаблонов, хотя вы можете сгруппировать их как вам удобно.
    Шаблоны создаются в виде файлов с расширением .phtml в Режиме разработчика. Когда ваше приложение собрано и установлено другими администраторами, эти файлы шаблонов компилируются.
    Чтобы использовать шаблоны в коде приложения, вы должны применять следующую конструкцию:
    \IPS\Theme::i()->getTemplate( 'group', 'app', 'location' )->template_name( ... ); где:
    group
    Имя папки, которую вы создали в папке admin/front/global. например MyModule. app
    Ключ вашего приложения. location
    Расположение группы, т.е. admin, front или global. template_name
    Имя шаблона, который является файлом без расширения .phtml. Любые параметры, которые требуются для вашего шаблона, могут быть переданы, так как template_name компилируется в функцию.
    Сам файл шаблона должен содержать специальную строку заголовка в качестве самой первой строки:
    <ips:template parameters="$example1=array(), $example2=FALSE" /> Атрибут parameters определяет параметры этого шаблона. Синтаксис этого атрибута идентичен определению параметров в PHP функциях. Если вам не нужны какие-либо параметры, вы все равно должны включать заголовок и атрибут parameters, но просто оставить его пустым.
    CSS файлы
    CSS файлы, которые требуются для вашего приложения, должны быть созданы в каталоге dev/css/ вашего приложения. Как и в случае HTML-шаблонов, есть три поддиректории для admin css, front-end css, и shared css. Файлы, созданные здесь, должны быть подгружены вручную в вашем коде, например, так:
    \IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'filename.css', 'app', 'location' ) ); где:
    filename.css
    Имя файла CSS (с суффиксом). app
    Ключ вашего приложения. location
    Расположение файла CSS (admin, front или global). Куда загружать файлы CSS
    Так как вы загрузите CSS файлы вручную с помощью вышеуказанного кода, имеет значение где вы разместите их. Если ваш файл CSS очень специфичный для конкретной страницы, вы можете загрузить только метод контроллера (-ов), которые обрабатывают эту страницу. Тем не менее, чаще всего, CSS-файл будет применяться к целому контроллеру в вашем приложении. В этом случае, вы можете загрузить файл CSS в методе контроллера execute(). Обратитесь к документации Контроллеры для получения дополнительной информации.
    Если вам нужен CSS для всех front-end или admin страниц вашего приложения, вы можете поместить .css файл непосредственно в  /admin или /front-end каталог, с таким же именем, как и у вашего приложения. В этом случае IPS4 будет автоматически загружать файл CSS для всех страниц вашего приложения. Например, ключ вашего приложения my_app, вы можете создать CSS файл /dev/css/front/my_app.css, и он будет включен во всех front-end страницах нашего приложения.
    Javascript файлы
    Файлы JavaScript обрабатываются аналогично CSS файлам: то есть, они создаются как .js файлы в соответствующем каталоге, а затем подгружаются  по требованию в вашем коде. Существует одна небольшая разница: из-за способа архивации JavaScript файлов, при подключении файла JavaScript вы должны указать имя пакета, а не имя файла JavaScript. Javascript файлы архивируются по местоположению и группе что формирует имя результирующего пакета.
    Например, если мы создали JavaScript файл dev/js/front/mygroup/somefile.js, то имя пакета будет front_mygroup.js (местоположение, подчеркивание, GroupName) и загрузится следующим образом:
    \IPS\Output::i()->jsFiles = array_merge( \IPS\Output::i()->jsFiles, \IPS\Output::i()->js( 'front_mygroup.js', 'app', 'location' ) ); Изображения и другие ресурсы
    Изображения (и другие ресурсы, такие как шрифты) должны быть размещены в каталоге /dev/resources, и, как обычно, есть /front, /admin и /global каталоги. Чтобы использовать файл ресурсов в шаблоне напишите следующее:
    <img src='{resource="example.jpg" app="yourapp" location="front"}'> ... Изменяйте имя файла, ключ приложения и расположение в зависимости от потребностей.
  3. Структура приложений

    Приложения в Invision Community состоят из нескольких типов классов. Большинство из них вы будете использовать в своих приложениях. Структура файлов ваших приложений должна быть построена верно. Именно это позволяет системе автоматически подгружать нужные классы.
     
    Обзор структуры
    В каталоге вашего приложения должна быть приблизительно следующая структура:
    /Application.php
    Главный файл вашего приложения. /data
    Содержит множество json файлов которые содержат настройки вашего приложения, схемы и другие данные трубуемые приложению. /dev
    Существует только когда вы в режиме разработчика. /css
    Содержит CSS файлы для front/admin каталогов /email
    Содержит шаблоны для нотификации писем, отправляемых вашем приложением /html
    Содержит все  HTML шаблоны для front/admin каталогов, которые использует ваше приложение /js
    Содержит javascript контроллеры и шаблоны для front/admin каталогов, которые использует ваше приложение. /resources
    Содержит все другие ресурсы (такие как изображения, шрифты, аудиофайлы, которые использует ваше приложение). /extensions
    Содержит различные расширения которые может использовать ваше приложение. /hooks
    Содержит любые хуки для вашего приложения. /interface
    Каталог  interface содержит код, который используется вашим приложением, но не являющийся его частью. Например здесь вы можете подкльчить сторонние javascript или PHP библиотеки которые вы используете. /modules
    Здесь находятся ваши контроллеры. Этот каталог делится на: /admin
    Содержит модули admin контроллеров. /<module_name> /<module_name_2> и т.д. /front
    Содержит модули font-end контроллеров /<module_name> /<module_name_2> и т.д. /setup
    Установка и обновление скриптов которые использует ваше приложение, если требуется. /sources
    каталог содержит models. /<model_type> /<model_type_2> и т.д. /tasks
    Содержит скрипты которые периодически выполняются плинировщиком. /widgets
    Содержит скрипты которые отображают виджеты которые используются в системе блоков.

Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy