From de6db9f5c6f32eb8b6efd72e78d7ff2fe212c772 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Mon, 22 Feb 2016 11:44:24 +1300 Subject: [PATCH] API Mark image tracking as owned --- code/model/SiteTreeFileExtension.php | 34 ++++++++++++++++++---------- code/model/SiteTreeLinkTracking.php | 12 +++++++++- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/code/model/SiteTreeFileExtension.php b/code/model/SiteTreeFileExtension.php index d2e71904..cee594a0 100644 --- a/code/model/SiteTreeFileExtension.php +++ b/code/model/SiteTreeFileExtension.php @@ -19,11 +19,21 @@ class SiteTreeFileExtension extends DataExtension { 'BackLinkTracking' => 'SiteTree.ImageTracking' // {@see SiteTreeLinkTracking} ); + /** + * Images tracked by pages are owned by those pages + * + * @config + * @var array + */ + private static $owned_by = array( + 'BackLinkTracking' + ); + public function updateCMSFields(FieldList $fields) { $fields->insertAfter( ReadonlyField::create( - 'BackLinkCount', - _t('AssetTableField.BACKLINKCOUNT', 'Used on:'), + 'BackLinkCount', + _t('AssetTableField.BACKLINKCOUNT', 'Used on:'), $this->BackLinkTracking()->Count() . ' ' . _t('AssetTableField.PAGES', 'page(s)') ) ->addExtraClass('cms-description-toggle') @@ -72,17 +82,17 @@ class SiteTreeFileExtension extends DataExtension { $links = $this->owner->getManyManyComponents('BackLinkTracking'); $this->owner->extend('updateBackLinkTracking', $links); - + if(class_exists("Subsite")){ Subsite::disable_subsite_filter($rememberSubsiteFilter); } - + return $links; } - + /** * @todo Unnecessary shortcut for AssetTableField, coupled with cms module. - * + * * @return integer */ public function BackLinkTrackingCount() { @@ -93,7 +103,7 @@ class SiteTreeFileExtension extends DataExtension { return 0; } } - + /** * Updates link tracking in the current stage. */ @@ -125,10 +135,10 @@ class SiteTreeFileExtension extends DataExtension { // after ->doPublish() is invoked. $this->updateLinks(); } - + /** * Rewrite links to the $old file to now point to the $new file. - * + * * @uses SiteTree->rewriteFileID() */ public function updateLinks() { @@ -140,17 +150,17 @@ class SiteTreeFileExtension extends DataExtension { if(class_exists('Subsite')) { Subsite::disable_subsite_filter(true); } - + $pages = $this->owner->BackLinkTracking(); if($pages) { foreach($pages as $page) { $page->rewriteFileLinks(); } } - + if(class_exists('Subsite')) { Subsite::disable_subsite_filter(false); } } - + } diff --git a/code/model/SiteTreeLinkTracking.php b/code/model/SiteTreeLinkTracking.php index 9f9d16ce..3ec69c08 100644 --- a/code/model/SiteTreeLinkTracking.php +++ b/code/model/SiteTreeLinkTracking.php @@ -41,13 +41,23 @@ class SiteTreeLinkTracking extends DataExtension { private static $many_many = array( "LinkTracking" => "SiteTree", - "ImageTracking" => "File" + "ImageTracking" => "File" // {@see SiteTreeFileExtension} ); private static $belongs_many_many = array( "BackLinkTracking" => "SiteTree.LinkTracking" ); + /** + * Tracked images are considered owned by this page + * + * @config + * @var array + */ + private static $owns = array( + "ImageTracking" + ); + private static $many_many_extraFields = array( "LinkTracking" => array("FieldName" => "Varchar"), "ImageTracking" => array("FieldName" => "Varchar")