diff --git a/wire/core/Interfaces.php b/wire/core/Interfaces.php index 88829507..326475d9 100644 --- a/wire/core/Interfaces.php +++ b/wire/core/Interfaces.php @@ -236,6 +236,58 @@ interface FieldtypeHasPageimages { public function getPageimages(Page $page, Field $field); } +/** + * Indicates Fieldtype has version support and manages its own versions + * + */ +interface FieldtypeDoesVersions { + + /** + * Get the value for given page, field and version + * + * @param Page $page + * @param Field $field + * @param int $version + * @return mixed + * + */ + public function getPageFieldVersion(Page $page, Field $field, $version); + + /** + * Save version of given page field + * + * @param Page $page + * @param Field $field + * @param int $version + * @return bool + * + */ + public function savePageFieldVersion(Page $page, Field $field, $version); + + /** + * Restore version of given page field to live page + * + * @param Page $page + * @param Field $field + * @param int $version + * @return bool + * + */ + public function restorePageFieldVersion(Page $page, Field $field, $version); + + /** + * Delete version + * + * @param Page $page + * @param Field $field + * @param int $version + * @return bool + * + */ + public function deletePageFieldVersion(Page $page, Field $field, $version); +} + + /** * Indicates that an Inputfield provides tree selection capabilities * diff --git a/wire/core/PageTraversal.php b/wire/core/PageTraversal.php index 834c0430..34230601 100644 --- a/wire/core/PageTraversal.php +++ b/wire/core/PageTraversal.php @@ -881,6 +881,9 @@ class PageTraversal { } if($language && $language->id) $url .= "&language=$language->id"; } + + $version = (int) ((string) $page->get('_version|_repeater_version')); + if($version) $url .= "&version=$version"; $append = $page->wire()->session->getFor($page, 'appendEditUrl');