portrino/px_ical

此包已被弃用且不再维护。未建议替代包。

提供通过eluceo iCal库(https://github.com/markuspoerschke/iCal)渲染ical的类。

安装: 61

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 8

分支: 0

开放问题: 0

类型:typo3-cms-extension

0.2.1 2022-01-21 16:18 UTC

This package is auto-updated.

Last update: 2024-02-21 21:01:07 UTC


README

Build Status Maintainability Test Coverage Test Coverage Issue Count Latest Stable Version Total Downloads

提供通过eluceo — iCal库渲染*.ics文件的TYPO3类。

安装

composer require portrino/px_ical

使用

Extbase视图

您可以在动作控制器请求前添加?tx_par_pi1[format]=ical,extbase会为您渲染相应的视图。通过将ICalView类放入$viewFormatToObjectNameMap,extbase能够获取到正确的视图类。当您遵循领域驱动设计时,您有一个分配给视图并由不同视图类渲染的领域模型。

通过实现ICalEventInterface,ICalView类调用需要您实现的__toICalEvent()方法。您必须在这里返回一个Eluceo\iCal\Component\Event对象。

use Portrino\PxICal\Mvc\View\ICalView;
use TYPO3\CMS\Extbase\Mvc\View\JsonView;

class BookingController extends RestController
{
    /**
     * @var array
     */
    protected $viewFormatToObjectNameMap = [
        'json' => JsonView::class,
        'ical' => ICalView::class
    ];

    /**
     * Action Show
     *
     * @param \Foo\Bar\Domain\Model\Booking $booking
     *
     * @return void
     */
    public function showAction($booking)
    {
        /**
         * $booking should implement the ICalEventInterface
         */
        $this->view->assign('booking', $booking);
    }
    
}

...

class Booking extends AbstractEntity implements ICalEventInterface
{

    /**
     * @return Event
     */
    public function __toICalEvent()
    {
        $event = new Event();

        $event
            ->setUniqueId('foo_bar_' . (string)$this->getUid())
            ->setDtStart($this->getStart())
            ->setDtEnd($this->getEnd());

        ...

        return $event;
    }
}

如果您没有领域模型或__toICalEvent()不适合您的需求,您也可以直接将Eluceo\iCal\Component\Event对象分配给ICal视图,变量名为vEvent

use Eluceo\iCal\Component\Event;

/**
 * Action Show
 *
 * @return void
 */
public function showAction()
{
    $vEvent = new Event();
    
    $vEvent
        ->setUniqueId('foo_bar_' . (string)$this->getUid())
        ->setDtStart($this->getStart())
        ->setDtEnd($this->getEnd());
        
    ...

    $this->view->assign('vEvent', $vEvent);
}

服务

此扩展提供了一种类,可以为您创建一个ical文件并将其放入:/typo3temp/px_ical文件夹。您只需将类注入到您的控制器中,...然后您可以调用这些方法来生成/删除ical文件。

依赖注入

/**
 * @var \Portrino\PxICal\Service\ICalFileServiceInterface
 * @inject
 */
protected $iCalFileService;

来自领域对象

$file = $this->iCalFileService->createFromDomainObject($booking);

来自事件对象

$file = $this->iCalFileService->create($vEvent);

要删除创建的文件,只需调用逆方法即可

通过领域对象

$file = $this->iCalFileService->removeByDomainObject($booking);

通过事件对象

$file = $this->iCalFileService->remove($vEvent);

作者

  • André Wuttig - 初始工作,单元测试 - aWuttig
  • Leopold Engst - 单元测试 - leen2104

另请参阅参与此项目的贡献者列表