Методы обработки форм классов QPage и QUserControl предназначены для создания или изменения статей контента посредством HTML-форм, но могут также использоваться для программной модификации содержимого контентов.
Метод используется для создания новых статей:
public int AddFormToContent(string content_name, string status_name)
и обновления существующих:
public int AddFormToContent(string content_name, string status_name, int content_item_id)
Необходимо передать:
Перед вызовом AddFormToContent значения полей статьи должны находиться в коллекции Values, данные в которую могут попасть либо автоматически при отправке на сервер HTML-формы (имена полей формы должны формироваться с помощью функции FieldName), либо вручную, с помощью функции AddValue (ключи также должны быть созданы с помощью FieldName).
Возвращает ID созданной/обновленной статьи. Также этот ID записывается в коллекцию Values c ключом new_content_item_id
.
Если в веб-форме есть поля ввода типа file с корректными именами (имена полей должны формироваться с помощью функции FieldName), то соответствующие файлы будут сохранены в библиотеку контента. Если файл с таким именем уже существует, то файл будет сохранен под измененным именем с числовым индексом, например image[1].jpg
. Также при необходимости будут сгенерированы динамические изображения.
Поддерживается полноценная работа с расщепленными статьями, включая Many-To-Many и Many-To-One поля. Значения таких полей должны представлять собой строку идентификаторов связанных статей, разделенных запятыми.
Метод поддерживает отправку уведомлений. Если такое поведение нежелательно, можно использовать AddFormToContentWithoutNotification.
В методе производятся следующие проверки на сохраняемые поля:
Кроме того:
Реализовано с помощью метода AddFormToContent класса DBConnector.
AddValue(FieldName("Users", "Login"), Login); AddValue(FieldName("Users", "Password"), Password); AddFormToContent("Users", "Published");
public int AddFormToContentWithoutNotification(string content_name, string status_name)
public int AddFormToContentWithoutNotification(string content_name, string status_name, int content_item_id)
Методы работают аналогично AddFormToContent, но без посылки уведомлений.
public void UpdateContentItem()
Работает подобно AddFormToContent с параметром content_item_id, но в данном случае ID статьи передается через коллекцию Values(ключ content_item_id). Имя контента вычисляется по ID статьи. Если в коллекции Values будут присутствовать не все поля, то значения обнулятся. Если же это поведение нежелательно, то нужно использовать перегруженную версию с параметром updateEmpty = false
.
UpdateContentItem инициирует отправку уведомлений. Если это поведение нежелательно, можно использовать UpdateContentItemWithoutNotification.
public void UpdateContentItem(bool updateEmpty, string statusName)
Эта перегруженная версия метода позволяет обновлять статус статьи (если статус менять не нужно, то передайте в метод пустую строку), а также обновлять только несколько полей статьи с помощью параметра updateEmpty = false
(данный вариант предпочтительнее, чем несколько вызовов UpdateContentItemField).
Реализовано с помощью метода UpdateContentItem класса DBConnector.
AddValue("content_item_id", 12345); AddValue(FieldName("Users", "Login"), Login); AddValue(FieldName("Users", "Password"), Password); UpdateContentItem();
public void UpdateContentItemWithoutNotification()
Работает подобно UpdateContentItem, но без посылки уведомлений.
public void UpdateContentItemField(string content_name, string field_name, int content_item_id)
Метод работает аналогично AddFormToContent c параметром content_item_id, но он предназначен для обновления только одного поля статьи. Если необходимо обновление сразу нескольких полей, лучше воспользоваться методом UpdateContentItem с параметром UpdateEmpty = false
. По умолчанию метод не инициирует отправку уведомлений. Если это поведение надо изменить, можно воспользоваться перегруженной версией:
public void UpdateContentItemField(string content_name, string field_name, int content_item_id, bool with_notification)
Реализовано с помощью метода UpdateContentItemField класса DBConnector.
AddValue(FieldName("Users", "Login"), "newLogin"); UpdateContentItemField("Users", "Login", Value("cid"));
public int AddUpdateContentItemLink(string LinkFieldName, int ItemID, string LinkItems, string TargetLinkItems)
Добавляет или обновляет заданное поле связи типа M2M (параметр LinkFieldName) для заданной статьи (параметр ItemID). Возвращает 1 в случае удачного завершения, -1 – при неудачном. Значение поля передается в параметре LinkItems. Оно представляет собой строку идентификаторов связанных статей, разделенных запятыми. Параметр TargetLinkItems позволяет ограничить набор обновляемых идентификаторов. Формат этого параметра такой же, как и у параметра LinkItems. Если обновление затрагивает все идентификаторы, то в качестве параметра TargetLinkItems нужно передать пустую строку.
AddUpdateContentItemLink("Books", NumValue("AuthorID"), Value("12345,45678,7890, 23415, 8907"), "");
public void RemoveContentItem(int content_item_id)
Удаляет статью по заданному идентификатору. Метод поддерживает уведомления. Реализовано с помощью метода DeleteContentItem класса DBConnector.
public void DeleteContentItem()
Удаляет статью по заданному идентификатору, который передается через коллекцию Values (ключ content_item_id). Метод поддерживает уведомления. Реализовано с помощью метода DeleteContentItem класса DBConnector.