Skip to content

Instantly share code, notes, and snippets.

@zanderwar
Last active January 31, 2018 04:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zanderwar/73ba907fe56b18f183bccc87cfbb4014 to your computer and use it in GitHub Desktop.
Save zanderwar/73ba907fe56b18f183bccc87cfbb4014 to your computer and use it in GitHub Desktop.
Just in case someone else wants to use HTMLText in DataObjects and be able to publish the images that clients can upload into TinyMCE - SilverStripe 4
<?php
namespace Vulcan\Common\Traits;
use SilverStripe\Assets\File;
use SilverStripe\Forms\FieldList;
use SilverStripe\ORM\HasManyList;
/**
* Trait DataObjectLinkTracking
* @package Vulcan\Common\Traits
*
* @method void augmentSyncLinkTracking
* @method HasManyList|File[] ImageTracking
*/
trait DataObjectLinkTracking
{
/**
* Remove fields added by SiteTreeLinkTracking
*
* @param FieldList $fields
*/
public function removeTrackingFields(FieldList $fields)
{
$fields->removeByName(['LinkTracking', 'ImageTracking', 'BackLinkTracking', 'HasBrokenFile', 'HasBrokenLink']);
}
/**
* Call in onBeforeWrite of parent
*/
public function trackDataObjectLinks()
{
$this->augmentSyncLinkTracking();
}
/**
* Call in onAfterWrite of parent
*/
public function publishTrackedImages()
{
foreach ($this->ImageTracking() as $image) {
if (!$image->isPublished()) {
$image->publishSingle();
}
}
}
}
@zanderwar
Copy link
Author

zanderwar commented Jan 31, 2018

Add to the DataObject:

use \Vulcan\Common\Traits\DataObjectLinkTracking;

private static $extensions = [
    SiteTreeLinkTracking::class
];

public function onBeforeWrite()
{
    parent::onBeforeWrite();
    $this->trackDataObjectLinks();
}

public function onAfterWrite()
{
    parent::onAfterWrite();
    $this->publishTrackedImages();
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment