Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Сигнатура:
function (openSelectWindowOptions, hostUID, destination)
Параметры:
Название | Описание |
openSelectWindowOptions | Экземпляр класса OpenSelectWindowOptions (или объект с аналогичной структурой), определяющий действие выбора. |
hostUID | Уникальный идентификатор вкладки текущего пользовательского действия. Генерируется бекэндом, передаётся в пользовательское действие в виде одноимённого параметра QueryString. |
destination | Окно, содержащее основное приложение бекэнда. Обычно нужно передавать window. parent. |
Класс OpenSelectWindowOptions
Класс OpenSelectWindowOptions имеет следующую структуру:
Название | Тип | Описание |
selectActionCode | String | Код вызываемого действия выбора. |
entityTypeCode | String | Код типа сущности, к которой относится вызываемое действие. |
parentEntityId | Number | Идентификатор родительской сущности. |
isMultiple | Boolean | Указатель, является ли действие выбора множественным Значение по умолчанию – false. |
selectedEntityIDs | Array | ID сущностей, выбранные заранее. Элементы массива имеют тип Number. |
selectWindowUID | String | Уникальный идентификатор окна выбора. Задаётся веб-приложением. |
callerCallback | Function | Ссылка на метод-обработчик в веб-приложении. Обычно определяется через BackendEventObserver. |
Необходимо использовать экземпляр класса, чтобы через callback получать результат взаимодействия с бекэндом.
Конструктор имеет следующую сигнатуру:
function (callbackProcName, callback)
Регистрирует callback c именем callbackProcName в библиотеке PMRPC.
Метод callback должен иметь следующую сигнатуру:
function (eventType, args)
Параметры:
Название | Описание |
eventType | Причина вызова callback. Принимает одно из возможных значений, определённых в BackendEventObserver. EventType:
В этом случае в args. reason передаётся причина отсоединения (одно из двух значений, определённых в BackendEventObserver. HostUnbindingReason).
|
args | Передаются дополнительные данные, специфичные для каждого действия. Например, при выборе сущностей передаются:
|
Использование объектов QP
Внимание: данный подход является устаревшим.
В шаблон полностью вносится вёрстка для страницы (всё содержимое в тэге <html>).
Осуществляется разбиение вёрстки на блоки. Блоки оформляются в виде объектов шаблона и заменяются в теле шаблона вызовами требуемых объектов. Подобная декомпозиция применяется к созданным объектам шаблона до нужного уровня. Нужный уровень определяется наличием динамического содержимого или необходимостью переопределения. Если объект имеет динамическое содержимое, то создаётся объект типа «Publishing Container», связанный с контентом для данного содержимого. При создании других страниц, основанных на том же шаблоне, можно как создавать новые объекты страницы, так и создавать их, переопределяя требуемые объекты шаблона.Пример создания Системы Постановка задачи. Определение требований
В примере рассматривается создание для веб-сайта одной страницы, содержащей одну зону для размещения виджета.
Для создания веб-сайта следует использовать QP и Виджетную платформу.
Дополнительная разметка для страницы не требуется.
Разработка выполняется в Visual Studio.
Проектирование Определение групп пользователей
Доступ к странице не ограничивается по группам пользователей. Таким образом, не потребуется выполнения работ с пользователями и группами пользователей для веб-сайта.
Проектирование структуры данныхДля выполнения задачи не понадобится разработка дополнительных виджетов.
В бекэнде понадобится создать статьи в контентах «ItemDefinition» и «AbstractItem», также сгенерировать классы LINQ to SQL.
Проектирование ГПИВнимание: для использования на странице ГПИ Виджетной платформы в разметку следует добавить код для вызова ГПИ.
Для страницы достаточно минимально необходимой разметки, содержащей одну зону для размещения виджета.
Реализация Подготовка структуры данных
Примечание: общие сведения о процедуре создания страницы приведены в разделе Процедура создания и добавления нового типа страницы в Систему.
Создание типа страницы
В контенте «ItemDefinition» создана статья со следующим содержимым:
Название поля | Значение поля |
Название (Title) | Стартовая страница |
Идентификатор (Name) | start_page |
Description | Корневая страница |
Страница (IsPage) | Флаг установлен |
Контент (PreferredContentId) | 0 (контент-расширение не требуется для решения задачи) |
FullName (FriendlyDescription) | Значение не задано (не требуется для решения задачи) |
Категория (CategoryName) | |
IconUrl |
После создания статью следует опубликовать.
Создание экземпляра страницы требуемого типа
В контенте «AbstractItem» создана статья, для которой в качестве значения поля Тип страницы/виджета (Discriminator) задана ранее созданная статья «Стартовая страница».
После создания статью следует опубликовать.
Примечание: создание статьи можно осуществить как с помощью ГПИ QP, так и ГПИ Виджетной платформы (пользовательское действие «Manage pages»).
Подготовка данных в QP для разработки в Visual Studio
Для сайта, в котором размещены статьи, сгенерированы требуемые для разработки данные (классы LINQ to SQL и/или сопоставление для Entity Framework). Полученные файлы скопированы в решение в Visual Studio, в проекте из которого далее должно быть создано веб-приложение.
Разработка кода веб-приложенияДля данной задачи создание модели не требуется.
Примечание: файл с кодом модели требуется размещать в проекте в директории Models.
Файл с кодом представления требуется размещать в проекте в директории Views. Для страницы создана вложенная директория StartPage, в ней размещён файл Index. cshtml со следующим кодом:
@{
ViewBag. Title = Model. Title;
}
<div class="content">
@Html. Raw(Model. Text)
</div>
Файл с кодом контроллера требуется размещать в проекте в директории Controllers. Создан файл StartPageController. cs со следующим кодом:
using System;
using System. Web. Mvc;
using QA. Core. Engine;
using QA. Core. Engine. Web. Mvc;
using System. Threading. Tasks;
using Main. PageModel. Pages;
namespace Main. WebUi. Controllers
{
[Controls(typeof(Main. PageModel. Pages. StartPage))]
public partial class StartPageController : ContentController<Main. PageModel. Pages. StartPage>
{
[NonAction]
public override ActionResult Index()
{
throw new InvalidOperationException();
}
public async Task<ActionResult> Index(string id)
{
await Task. Yield();
var mode = CurrentItem. Mode;
if (mode == StartPageMode. Content)
{
return View(CurrentItem);
}
else
{
// в этом режиме стартовая страница должна наследовать функциональность страницы-перенаправления
throw new NotImplementedException("The mode Redirect is not implemented yet.");
}
}
}
}
Создание ГПИФайл с кодом разметки требуется размещать в проекте в директории Views. Создана вложенная директория Shared, в ней размещён файл _Layout. cshtml со следующим кодом:
@using QA. Engine. Extensions. Html
@using QA. Infrastructure. Web. Mvc. Extensions
@{
var zoneState = ZoneExtensions. GetZoneState(Context);
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>@ViewBag. Title</title>
@Scripts. Render(BundleConfig. JQuery)
@*это нужно только для onscreen*@
@if (zoneState!= ZoneState. Disabled)
{
@Styles. Render(BundleConfig. JQueryUIStyles)
@Scripts. Render(BundleConfig. JQueryUI)
}
@RenderSection("headScripts", required: false)
</head>
<body>
@{Html. ControlPanel().Render();}
@*скрипты для панели, скрипты для Onscreen*@
@if (zoneState!= ZoneState. Disabled)
{
@Scripts. Render(BundleConfig. OnScreen);
@Styles. Render(BundleConfig. OnScreenCSS);
<script type="text/javascript">
// workaroud
var ContentIdToEdit = 537;
</script>
}
<div class="g-page-wrapper">
<div class="footer__to-bottom-wrap">
<div class="footer__to-bottom-content">
<div class="b-wrapper">
<H2>@ViewBag. Title</H2>
@{ Html. WidgetZone("ZoneName").Render(); }
@RenderBody()
</div>
</div>
</div>
</div>
@Scripts. Render("~/bundles/bootstrap")
@Scripts. Render(BundleConfig. QAScripts)
@RenderSection("scripts", required: false)
</body>
</html>
Размещение виджетаВ бекэнде с использованием ПУ виджетной платформы (пользовательское действие «Manage widgets») на страницу добавлен виджет типа «HTML-виджет» и задано его содержимое.
В результате при обращении к странице через веб-браузер выводится содержимое, заданное при добавлении виджета на страницу.
Приложение А
Структура БД QP8

![]()
АРТ»
Программный продукт «QP8.Framework»
Руководство разработчика
02.02.2018
Версия 0.9.7
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |


