Сохранение автора новости, при её создании — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 12: Строка 12:
 
</source>
 
</source>
 
В новой реализации добавим в файл ~/classes/components/news/permissions.custom.php запись о наших будущих обработчиках. В старой реализации запись добавляется в файл ~/classes/modules/news/permissions.custom.php
 
В новой реализации добавим в файл ~/classes/components/news/permissions.custom.php запись о наших будущих обработчиках. В старой реализации запись добавляется в файл ~/classes/modules/news/permissions.custom.php
Теперь в типе данных Новость создадим два поля author и authoredition типа выпадающий список и использующие в качестве справочника спаравочник "Пользователь".
+
 
 +
Теперь в типе данных "Новость" создадим два поля author и authoredition типа выпадающий список и использующие в качестве справочника справочник "Пользователь".
 
Осталось написать два обработчика, первый будет работать при создании новости и сохранять автора, второй будет сохранять в поле authoredition id последнего редактировавшего.  
 
Осталось написать два обработчика, первый будет работать при создании новости и сохранять автора, второй будет сохранять в поле authoredition id последнего редактировавшего.  
В новой реализации модулей код обработчиков нужно поместить в файл ~/classes/components/news/customAdmin.php после строки public $module;
+
 
В новой реализации модулей код обработчиков нужно поместить в файл ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode)
+
В новой реализации модулей код обработчиков нужно поместить в файл ~/classes/components/news/customAdmin.php после строки  
 +
<source lang="php">
 +
public $module;
 +
</source>
 +
В старой реализации модулей код обработчиков нужно поместить в файл ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode)
 
<source lang="php">
 
<source lang="php">
  
Строка 41: Строка 46:
 
</source>
 
</source>
 
Теперь, при создании статьи, в поле author будет добавлена запись о том кто создал новость, а при редактировании в поле authoredition тот кто редактировал.
 
Теперь, при создании статьи, в поле author будет добавлена запись о том кто создал новость, а при редактировании в поле authoredition тот кто редактировал.
<p>
 
Данный функционал был проверен на работоспособность в версии системы 2.8.5.2.
 
</p>
 
 
[[Категория:Модуль Новости]][[Категория:Написание кастомных макросов]]
 
[[Категория:Модуль Новости]][[Категория:Написание кастомных макросов]]

Текущая версия на 15:47, 1 мая 2018

Актуально для версии 2.18

Поставим себе задачу сохранять автора новостей, чтобы его можно было выводить на страницах сайта. Это можно реализовать воспользовавшись событийной моделью UMI.CMS.

В новой реализации модулей необходимо добавить код в файл ~/classes/components/news/custom_events.php В старой реализации модулей добавим код в файл ~/classes/modules/news/custom_events.php

<?php
new umiEventListener('systemCreateElement', 'news', 'setAuthor');
new umiEventListener('systemModifyElement', 'news', 'setAuthorEdition');
?>

В новой реализации добавим в файл ~/classes/components/news/permissions.custom.php запись о наших будущих обработчиках. В старой реализации запись добавляется в файл ~/classes/modules/news/permissions.custom.php

Теперь в типе данных "Новость" создадим два поля author и authoredition типа выпадающий список и использующие в качестве справочника справочник "Пользователь". Осталось написать два обработчика, первый будет работать при создании новости и сохранять автора, второй будет сохранять в поле authoredition id последнего редактировавшего.

В новой реализации модулей код обработчиков нужно поместить в файл ~/classes/components/news/customAdmin.php после строки

public $module;

В старой реализации модулей код обработчиков нужно поместить в файл ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode)

public function setAuthor(iUmiEventPoint $oEventPoint){
    if ($oEventPoint->getMode() === "after"){
      $object = $oEventPoint->getRef("element");
      $permissions = permissionsCollection::getInstance();
      $currentUser=$permissions->getUserId();
      $object->setValue('author',$currentUser);
      $object->commit();
      return true;
    }
}

public function setAuthorEdition(iUmiEventPoint $oEventPoint){
    if ($oEventPoint->getMode() === "after"){
      $object = $oEventPoint->getRef("element");
      $permissions = permissionsCollection::getInstance();
      $currentUser=$permissions->getUserId();
      $object->setValue('authoredition',$currentUser);
      $object->commit();
      return true;
    }
}

Теперь, при создании статьи, в поле author будет добавлена запись о том кто создал новость, а при редактировании в поле authoredition тот кто редактировал.