Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

создание кейсов в диалог

Авг
2
0
Пользователь
пацаны можете сказать. вот я делаю af, я хочу сделать так чтобы если админ подал форму то где принимать форму там создавался кейс формы подачи, если админ еще раз подал то создавался второй кейс подачи, если не поняли могу обьяснить что я от вас хочу
 
Июл
490
416
Активный
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.

1. В админ-панели:​

Создай форум для кейсов:
Админка → Forums → Create new forum
Название: "Кейсы формы"
Type: Forum
Настрой права:
Только админы могут создавать темы
Пользователи видят только свои кейсы

2. Модификация формы (через Template modifications)

Добавь в шаблон формы (например, thread_create):
code:
<xf:if is="$formData.case_form">
  <xf:checkboxrow name="create_case" label="Создать кейс из этой формы" />
</xf:if>

3. PHP код для автоматического создания кейса

Создай файл src/addons/YourAddon/Listener.php:
code2:
<?php

namespace YourAddon\Listener;

use XF\Mvc\Entity\Entity;

class FormListener
{
    public static function threadEntityPostSave(\XF\Mvc\Entity\Entity $entity)
    {
        // Проверяем, что это новая тема и отмечена как кейс
        if ($entity->isInsert() && \XF::visitor()->is_admin)
        {
            $input = \XF::app()->request()->filter('create_case', 'bool');
            
            if ($input)
            {
                self::createCaseFromThread($entity);
            }
        }
    }
    
    protected static function createCaseFromThread(\XF\Entity\Thread $thread)
    {
        $forum = \XF::finder('XF:Forum')->where('node_id', 123)->fetchOne(); // ID форума кейсов
        
        $creator = \XF::service('XF:Thread\Creator', $forum);
        $creator->setContent(
            "Кейс формы #" . time(),
            "Создан из формы:\n\n" .
            "Автор: " . $thread->User->username . "\n" .
            "Тема: " . $thread->title . "\n" .
            "Ссылка: " . \XF::app()->router('public')->buildLink('canonical:threads', $thread) . "\n\n" .
            "---\n" . $thread->FirstPost->message
        );
        
        $creator->setIsAutomated();
        $creator->save();
        
        // Добавляем связь между формой и кейсом
        $thread->fastUpdate('case_id', $creator->getThread()->thread_id);
    }
}

4. Расширение через аддон

Создай полноценный аддон:

addon.json:

code3:
{
    "title": "Case Manager",
    "version_string": "1.0.0",
    "dev": "Ваше имя"
}

_output/class_extensions/XF/Entity/Thread.php:

code4:
<?php

namespace YourAddon\XF\Entity;

class Thread extends XFCP_Thread
{
    public function canCreateCase()
    {
        return \XF::visitor()->is_admin;
    }
}

если помог, ставь лайк и галочку решения)
 
may 12th is the date ⚡
Ноя
2,685
5,864
Профессионал

1. В админ-панели:​

Создай форум для кейсов:
Админка → Forums → Create new forum
Название: "Кейсы формы"
Type: Forum
Настрой права:
Только админы могут создавать темы
Пользователи видят только свои кейсы

2. Модификация формы (через Template modifications)

Добавь в шаблон формы (например, thread_create):
code:
<xf:if is="$formData.case_form">
  <xf:checkboxrow name="create_case" label="Создать кейс из этой формы" />
</xf:if>

3. PHP код для автоматического создания кейса

Создай файл src/addons/YourAddon/Listener.php:
code2:
<?php

namespace YourAddon\Listener;

use XF\Mvc\Entity\Entity;

class FormListener
{
    public static function threadEntityPostSave(\XF\Mvc\Entity\Entity $entity)
    {
        // Проверяем, что это новая тема и отмечена как кейс
        if ($entity->isInsert() && \XF::visitor()->is_admin)
        {
            $input = \XF::app()->request()->filter('create_case', 'bool');
           
            if ($input)
            {
                self::createCaseFromThread($entity);
            }
        }
    }
   
    protected static function createCaseFromThread(\XF\Entity\Thread $thread)
    {
        $forum = \XF::finder('XF:Forum')->where('node_id', 123)->fetchOne(); // ID форума кейсов
       
        $creator = \XF::service('XF:Thread\Creator', $forum);
        $creator->setContent(
            "Кейс формы #" . time(),
            "Создан из формы:\n\n" .
            "Автор: " . $thread->User->username . "\n" .
            "Тема: " . $thread->title . "\n" .
            "Ссылка: " . \XF::app()->router('public')->buildLink('canonical:threads', $thread) . "\n\n" .
            "---\n" . $thread->FirstPost->message
        );
       
        $creator->setIsAutomated();
        $creator->save();
       
        // Добавляем связь между формой и кейсом
        $thread->fastUpdate('case_id', $creator->getThread()->thread_id);
    }
}

4. Расширение через аддон

Создай полноценный аддон:

addon.json:

code3:
{
    "title": "Case Manager",
    "version_string": "1.0.0",
    "dev": "Ваше имя"
}

_output/class_extensions/XF/Entity/Thread.php:

code4:
<?php

namespace YourAddon\XF\Entity;

class Thread extends XFCP_Thread
{
    public function canCreateCase()
    {
        return \XF::visitor()->is_admin;
    }
}

если помог, ставь лайк и галочку решения)
OFFTOP

@pikamonov @Kolpak ответ чатом гпт

 
Сверху