diff --git a/.travis.yml b/.travis.yml index cebd18f..6f0c848 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,16 +10,12 @@ env: matrix: include: - - php: 5.6 - env: DB=MYSQL RECIPE_VERSION=4.2.x-dev PHPUNIT_TEST=1 - - php: 7.0 - env: DB=PGSQL RECIPE_VERSION=4.2.x-dev PHPUNIT_TEST=1 - php: 7.1 - env: DB=MYSQL RECIPE_VERSION=4.3.x-dev PHPUNIT_TEST=1 PHPCS_TEST=1 + env: DB=MYSQL RECIPE_VERSION=4.3.x-dev PHPUNIT_TEST=1 - php: 7.2 - env: DB=PGSQL RECIPE_VERSION=4.4.x-dev PHPUNIT_TEST=1 + env: DB=PGSQL RECIPE_VERSION=4.4.x-dev PHPUNIT_TEST=1 PHPCS_TEST=1 - php: 7.3 - env: DB=MYSQL RECIPE_VERSION=4.x-dev PHPUNIT_COVERAGE_TEST=1 + env: DB=MYSQL RECIPE_VERSION=4.5.x-dev PHPUNIT_COVERAGE_TEST=1 before_script: - phpenv rehash diff --git a/_config/config.yml b/_config/config.yml index 23c3a70..9611978 100644 --- a/_config/config.yml +++ b/_config/config.yml @@ -1,9 +1,6 @@ --- Name: FlexSlider --- -Dynamic\FlexSLider\Model\SlideImage: - extensions: - - SilverStripe\Versioned\Versioned('Stage','Live') Dynamic\FlexSlider\ORM\FlexSlider: flex_slider_speed: 7 diff --git a/src/Interfaces/SlideInterface.php b/src/Interfaces/SlideInterface.php new file mode 100644 index 0000000..3891f99 --- /dev/null +++ b/src/Interfaces/SlideInterface.php @@ -0,0 +1,16 @@ + Image::class, + ]; + + /** + * @var array + */ + private static $owns = [ + 'Image', + ]; + + /** + * @return FieldList + */ + public function getCMSFields() + { + $this->beforeUpdateCMSFields(function (FieldList $fields) { + $fields->addFieldToTab( + 'Root.Main', + ImageUploadField::create('Image') + ->setTitle('Image'), + 'Content' + ); + }); + + return parent::getCMSFields(); + } +} diff --git a/src/Model/Slide.php b/src/Model/Slide.php new file mode 100644 index 0000000..9797f52 --- /dev/null +++ b/src/Model/Slide.php @@ -0,0 +1,366 @@ + 'Varchar(255)', + 'ShowTitle' => 'Boolean', + 'Content' => 'HTMLText', + 'SortOrder' => 'Int', + ]; + + /** + * @var array + */ + private static $has_one = [ + 'Page' => \Page::class, + ]; + + /** + * @var array + */ + private static $extensions = [ + Versioned::class, + InheritedPermissionsExtension::class, + ]; + + /** + * @var array + */ + private static $versioning = [ + "Stage", "Live", + ]; + + + /** + * @var string + */ + private static $default_sort = 'SortOrder'; + + /** + * Adds Publish button to SlideImage record + * + * @var bool + */ + private static $versioned_gridfield_extensions = true; + + /** + * @var array + */ + private static $searchable_fields = [ + 'Title', + 'Content', + ]; + + /** + * @var array + */ + private static $summary_fields = [ + 'SlideType', + 'Title', + ]; + + /** + * @return FieldList + */ + public function getCMSFields() + { + $this->beforeUpdateCMSFields(function (FieldList $fields) { + $viewInherit = $fields->dataFieldByName('CanViewType'); + $editInherit = $fields->dataFieldByName('CanEditType'); + + $fields->removeByName([ + 'Title', + 'ShowTitle', + 'SortOrder', + 'CanViewType', + 'CanEditType', + 'PageID', + ]); + + $fields->addFieldToTab( + 'Root.Main', + TextCheckboxGroupField::create(), + 'Content' + ); + + $fields->addFieldsToTab( + 'Root.Permissions', + [ + $viewInherit, + $editInherit, + ] + ); + }); + + return parent::getCMSFields(); + } + + /** + * @return array + */ + public function providePermissions() + { + return [ + static::SLIDE_CREATE => [ + 'name' => _t(__CLASS__ . '.PERMISSION_CREATE_DESCRIPTION', 'Create Slides'), + 'help' => _t(__CLASS__ . '.PERMISSION_CREATE_HELP', 'Allow creating slides'), + 'category' => _t(__CLASS__ . '.PERMISSIONS_CATEGORY', 'FlexSlider Permissions'), + 'sort' => 100, + ], + static::SLIDE_PUBLISH => [ + 'name' => _t(__CLASS__ . '.PERMISSION_PUBLISH_DESCRIPTION', 'Publish Slides'), + 'help' => _t(__CLASS__ . '.PERMISSION_PUBLISH_HELP', 'Allow publishing slides'), + 'category' => _t(__CLASS__ . '.PERMISSIONS_CATEGORY', 'FlexSlider Permissions'), + 'sort' => 100, + ], + static::SLIDE_EDIT => [ + 'name' => _t(__CLASS__ . '.PERMISSION_EDIT_DESCRIPTION', 'Edit Slides'), + 'help' => _t(__CLASS__ . '.PERMISSION_EDIT_HELP', 'Allow editing slides'), + 'category' => _t(__CLASS__ . '.PERMISSIONS_CATEGORY', 'FlexSlider Permissions'), + 'sort' => 100, + ], + static::SLIDE_DELETE => [ + 'name' => _t(__CLASS__ . '.PERMISSION_DELETE_DESCRIPTION', 'Delete Slides'), + 'help' => _t(__CLASS__ . '.PERMISSION_DELETE_HELP', 'Allow deleting slides'), + 'category' => _t(__CLASS__ . '.PERMISSIONS_CATEGORY', 'FlexSlider Permissions'), + 'sort' => 100, + ], + ]; + } + + /** + * @param null $member + * @param array $context + * @return bool|int + */ + public function canCreate($member = null, $context = []) + { + if (!$member) { + $member = Security::getCurrentUser(); + } + + // Standard mechanism for accepting permission changes from extensions + $extended = $this->extendedCan(__FUNCTION__, $member, $context); + if ($extended !== null) { + return $extended; + } + + // Check permission + if ($member && Permission::checkMember($member, "ADMIN") || Permission::checkMember($member, static::SLIDE_CREATE)) { + return true; + } + + // This doesn't necessarily mean we are creating a root page, but that + // we don't know if there is a parent, so default to this permission + return SiteConfig::current_site_config()->canCreateTopLevel($member); + } + + /** + * @param null $member + * @return bool|int + */ + public function canPublish($member = null) + { + if (!$member) { + $member = Security::getCurrentUser(); + } + + // Check extension + $extended = $this->extendedCan('canPublish', $member); + if ($extended !== null) { + return $extended; + } + + if (Permission::checkMember($member, "ADMIN") || Permission::checkMember($member, static::SLIDE_PUBLISH)) { + return true; + } + + return false; + } + + /** + * @param null $member + * @return bool|int + */ + public function canEdit($member = null) + { + if (!$member) { + $member = Security::getCurrentUser(); + } + + // Standard mechanism for accepting permission changes from extensions + $extended = $this->extendedCan('canEdit', $member); + if ($extended !== null) { + return $extended; + } + + // Default permissions + if (Permission::checkMember($member, "ADMIN") || Permission::checkMember($member, static::SLIDE_EDIT)) { + return true; + } + + + return false; + } + + /** + * @param null $member + * @return bool|null + */ + public function canView($member = null) + { + if (!$member) { + $member = Security::getCurrentUser(); + } + + // Standard mechanism for accepting permission changes from extensions + $extended = $this->extendedCan('canView', $member); + if ($extended !== null) { + return $extended; + } + + // admin override + if ($member && Permission::checkMember($member, ["ADMIN", "SITETREE_VIEW_ALL"])) { + return true; + } + + // Note: getInheritedPermissions() is disused in this instance + // to allow parent canView extensions to influence subpage canView() + + // check for empty spec + if (!$this->CanViewType || $this->CanViewType === InheritedPermissions::ANYONE) { + return true; + } + + // check for inherit + if ($this->CanViewType === InheritedPermissions::INHERIT) { + return $this->getSiteConfig()->canViewPages($member); + } + + // check for any logged-in users + if ($this->CanViewType === InheritedPermissions::LOGGED_IN_USERS && $member && $member->ID) { + return true; + } + + // check for specific groups + if ($this->CanViewType === InheritedPermissions::ONLY_THESE_USERS + && $member + && $member->inGroups($this->ViewerGroups()) + ) { + return true; + } + + return false; + } + + /** + * @param null $member + * @return bool|int + */ + public function canDelete($member = null) + { + if (!$member) { + $member = Security::getCurrentUser(); + } + + // Standard mechanism for accepting permission changes from extensions + $extended = $this->extendedCan('canDelete', $member); + if ($extended !== null) { + return $extended; + } + + if (!$member) { + return false; + } + + // Default permission check + if (Permission::checkMember($member, ["ADMIN", static::SLIDE_DELETE])) { + return true; + } + + return false; + } + + /** + * Stub method to get the site config, unless the current class can provide an alternate. + * + * @return SiteConfig + */ + public function getSiteConfig() + { + $configs = $this->invokeWithExtensions('alternateSiteConfig'); + foreach (array_filter($configs) as $config) { + return $config; + } + + return SiteConfig::current_site_config(); + } + + /** + * @return string + */ + public function getSlideType() + { + return static::i18n_singular_name(); + } +} diff --git a/src/Model/VideoEmbedSlide.php b/src/Model/VideoEmbedSlide.php new file mode 100644 index 0000000..b316017 --- /dev/null +++ b/src/Model/VideoEmbedSlide.php @@ -0,0 +1,55 @@ + EmbeddedObject::class, + ]; + + /** + * @return FieldList + */ + public function getCMSFields() + { + $this->beforeUpdateCMSFields(function (FieldList $fields) { + $fields->removeByName(['VideoID']); + $fields->addFieldToTab( + 'Root.Main', + EmbeddedObjectField::create('Video', 'Video', $this->Video()), + 'Content' + ); + }); + + return parent::getCMSFields(); + } +} diff --git a/src/Model/VideoSlide.php b/src/Model/VideoSlide.php new file mode 100644 index 0000000..f466cf4 --- /dev/null +++ b/src/Model/VideoSlide.php @@ -0,0 +1,62 @@ + File::class, + ]; + + /** + * @var array + */ + private static $owns = [ + 'Video', + ]; + + /** + * @return FieldList + */ + public function getCMSFields() + { + $this->beforeUpdateCMSFields(function (FieldList $fields) { + $fields->addFieldToTab( + 'Root.Main', + UploadField::create('Video') + ->setTitle('Video') + ->setDescription('mp4 format') + ->setAllowedExtensions(['mp4']), + 'Content' + ); + }); + + return parent::getCMSFields(); + } +} diff --git a/src/ORM/FlexSlider.php b/src/ORM/FlexSlider.php index 0617be6..3c946b4 100644 --- a/src/ORM/FlexSlider.php +++ b/src/ORM/FlexSlider.php @@ -2,8 +2,9 @@ namespace Dynamic\FlexSlider\ORM; -use Dynamic\FlexSlider\Model\SlideImage; +use Dynamic\FlexSlider\Model\Slide; use SilverStripe\CMS\Model\SiteTree; +use SilverStripe\Core\ClassInfo; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Configurable; use SilverStripe\Forms\CheckboxField; @@ -11,13 +12,16 @@ use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldAddExistingAutocompleter; +use SilverStripe\Forms\GridField\GridFieldAddNewButton; use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor; use SilverStripe\Forms\GridField\GridFieldDeleteAction; use SilverStripe\Forms\NumericField; use SilverStripe\Forms\ToggleCompositeField; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataObject; +use SilverStripe\ORM\HasManyList; use SilverStripe\View\Requirements; +use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; /** @@ -33,6 +37,8 @@ * @property int $CarouselThumbnailCt * @property double $FlexSliderSpeed * + * @method HasManyList Slides() + * * @property-read DataObject|FlexSlider $owner */ class FlexSlider extends DataExtension @@ -59,7 +65,7 @@ class FlexSlider extends DataExtension * @var array */ private static $has_many = [ - 'Slides' => SlideImage::class, + 'Slides' => Slide::class, ]; /** @@ -81,6 +87,7 @@ public function populateDefaults() /** * @param FieldList $fields + * @throws \ReflectionException */ public function updateCMSFields(FieldList $fields) { @@ -100,12 +107,21 @@ public function updateCMSFields(FieldList $fields) // Slides if ($this->owner->ID) { + $availableSlides = []; + foreach (ClassInfo::subclassesFor(Slide::class, false) as $class) { + $availableSlides[$class] = $class::singleton()->i18n_singular_name(); + }; + $config = GridFieldConfig_RecordEditor::create(); $config->addComponent(new GridFieldOrderableRows('SortOrder')); $config->removeComponentsByType([ GridFieldAddExistingAutocompleter::class, GridFieldDeleteAction::class, - ]); + GridFieldAddNewButton::class, + ])->addComponent($multiClass = new GridFieldAddNewMultiClass()); + + $multiClass->setClasses($availableSlides); + $SlidesField = GridField::create( 'Slides', _t(__CLASS__ . '.SLIDES', 'Slides'), @@ -222,13 +238,13 @@ public function getCustomScript() "(function($) { $(document).ready(function(){ jQuery('.flexslider').each(function(index){ - + if(jQuery('.fs-carousel').eq(index).length) { jQuery('.fs-carousel').eq(index).flexslider({ slideshow: " . $this->owner->obj('Animate')->NiceAsBoolean() . ", animation: 'slide', animationLoop: " . $this->owner->obj('Loop')->NiceAsBoolean() . ", - controlNav: " . $this->owner->obj('CarouselControlNav')->NiceAsBoolean() . ", + controlNav: " . $this->owner->obj('CarouselControlNav')->NiceAsBoolean() . ", directionNav: " . $this->owner->obj('CarouselDirectionNav')->NiceAsBoolean() . ", prevText: '', nextText: '', @@ -241,7 +257,7 @@ public function getCustomScript() itemMargin: 10 }); } - + if(jQuery('.flexslider').eq(index).length){ jQuery('.flexslider').eq(index).flexslider({ slideshow: " . $this->owner->obj('Animate')->NiceAsBoolean() . ", @@ -259,7 +275,7 @@ public function getCustomScript() }, before: " . $before . ', after: ' . $after . ', - slideshowSpeed: ' . $speed . ' + slideshowSpeed: ' . $speed . ' }); } }) diff --git a/tests/Model/SlideImageTest.php b/tests/Model/SlideImageTest.php new file mode 100644 index 0000000..c00a7c2 --- /dev/null +++ b/tests/Model/SlideImageTest.php @@ -0,0 +1,38 @@ +getCMSFields(); + + $this->assertInstanceOf(FieldList::class, $fields); + $this->assertInstanceOf(TextField::class, $fields->dataFieldByName('Name')); + $this->assertInstanceOf(UploadField::class, $fields->dataFieldByName('Image')); + $this->assertInstanceOf(EmbeddedObjectField::class, $fields->dataFieldByName('Video')); + $this->assertInstanceOf(TextareaField::class, $fields->dataFieldByName('Description')); + } +} diff --git a/tests/Model/SlideTest.php b/tests/Model/SlideTest.php new file mode 100644 index 0000000..ab1afa3 --- /dev/null +++ b/tests/Model/SlideTest.php @@ -0,0 +1,135 @@ +objFromFixture(Member::class, 'slide_author'); + /** @var Member $canAdminister */ + $canAdminister = $this->objFromFixture(Member::class, 'slide_admin'); + /** @var Member $noPermission */ + $noPermission = $this->objFromFixture(Member::class, 'slide_no_permission'); + + $this->logInAs($canCreate); + $slide = Slide::singleton(); + + $this->assertTrue($slide->canCreate()); + + $this->logOut(); + $this->logInAs($canAdminister); + + $this->assertTrue($slide->canCreate()); + + $this->logOut(); + $this->logInAs($noPermission); + + $this->assertFalse($slide->canCreate()); + $this->logOut(); + } + + /** + * + */ + public function testCanEdit() + { + /** @var Slide $slide */ + $slide = $this->objFromFixture(Slide::class, 'base_slide'); + /** @var Member $canCreate */ + $canEdit = $this->objFromFixture(Member::class, 'slide_author'); + /** @var Member $canAdminister */ + $canAdminister = $this->objFromFixture(Member::class, 'slide_admin'); + /** @var Member $noPermission */ + $noPermission = $this->objFromFixture(Member::class, 'slide_no_permission'); + + $this->logInAs($canEdit); + + $this->assertTrue($slide->canEdit()); + + $this->logOut(); + $this->logInAs($canAdminister); + + $this->assertTrue($slide->canEdit()); + + $this->logOut(); + $this->logInAs($noPermission); + + $this->assertFalse($slide->canEdit()); + $this->logOut(); + } + + /** + * + */ + public function testCanDelete() + { + /** @var Slide $slide */ + $slide = $this->objFromFixture(Slide::class, 'base_slide'); + /** @var Member $canCreate */ + $noDelete = $this->objFromFixture(Member::class, 'slide_author'); + /** @var Member $canAdminister */ + $canAdminister = $this->objFromFixture(Member::class, 'slide_admin'); + /** @var Member $noPermission */ + $noPermission = $this->objFromFixture(Member::class, 'slide_no_permission'); + + $this->logInAs($noDelete); + + $this->assertFalse($slide->canDelete()); + + $this->logOut(); + $this->logInAs($canAdminister); + + $this->assertTrue($slide->canDelete()); + + $this->logOut(); + $this->logInAs($noPermission); + + $this->assertFalse($slide->canDelete()); + $this->logOut(); + } + + public function testCanPublish() + { + /** @var Slide $slide */ + $slide = $this->objFromFixture(Slide::class, 'base_slide'); + /** @var Member $canCreate */ + $noPublish = $this->objFromFixture(Member::class, 'slide_author'); + /** @var Member $canAdminister */ + $canAdminister = $this->objFromFixture(Member::class, 'slide_admin'); + /** @var Member $noPermission */ + $noPermission = $this->objFromFixture(Member::class, 'slide_no_permission'); + + $this->logInAs($noPublish); + + $this->assertFalse($slide->canPublish()); + + $this->logOut(); + $this->logInAs($canAdminister); + + $this->assertTrue($slide->canPublish()); + + $this->logOut(); + $this->logInAs($noPermission); + + $this->assertFalse($slide->canPublish()); + $this->logOut(); + } +} diff --git a/tests/FlexSliderTest.php b/tests/ORM/FlexSliderTest.php similarity index 90% rename from tests/FlexSliderTest.php rename to tests/ORM/FlexSliderTest.php index af4e59b..d0fea99 100644 --- a/tests/FlexSliderTest.php +++ b/tests/ORM/FlexSliderTest.php @@ -1,15 +1,20 @@ markTestSkipped('Re-implement'); $object = TestPage::create(); $object->write(); $slide1 = $this->objFromFixture(SlideImage::class, 'slide1'); diff --git a/tests/SlideImageTest.php b/tests/SlideImageTest.php deleted file mode 100644 index 149d6f9..0000000 --- a/tests/SlideImageTest.php +++ /dev/null @@ -1,216 +0,0 @@ -getCMSFields(); - - $this->assertInstanceOf(FieldList::class, $fields); - $this->assertInstanceOf(TextField::class, $fields->dataFieldByName('Name')); - $this->assertInstanceOf(UploadField::class, $fields->dataFieldByName('Image')); - $this->assertInstanceOf(EmbeddedObjectField::class, $fields->dataFieldByName('Video')); - $this->assertInstanceOf(TextareaField::class, $fields->dataFieldByName('Description')); - } - - /** - * @throws ValidationException - */ - public function testValidateName() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $object->Name = ''; - $object->ImageID = 1; - $this->setExpectedException(ValidationException::class); - $object->write(); - - $object->Name = 'Foo'; - $this->assertGreaterThan(0, $object->write()); - } - - /** - * @throws ValidationException - */ - public function testValidateImage() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $object->ImageID = null; - $this->setExpectedException(ValidationException::class); - $object->write(); - - $base->ImageID = 1; - $this->assertGreaterThan(0, $object->write()); - } - - /** - * @throws ValidationException - */ - public function testValidateVideo() - { - $object = $this->objFromFixture(SlideImage::class, 'slide2'); - $object->VideoID = null; - $this->setExpectedException(ValidationException::class); - $object->write(); - - $object->VideoID = 1; - $this->assertGreaterThan(0, $object->write()); - } - - /** - * @throws ValidationException - */ - public function testValidateText() - { - $object = $this->objFromFixture(SlideImage::class, 'slide3'); - $description = $object->Description; - - $object->Description = null; - $this->setExpectedException(ValidationException::class); - $object->write(); - - $object->Description = $description; - $this->assertGreaterThan(0, $object->write()); - } - - /** - * - */ - public function testProvidePermissions() - { - $object = SlideImage::singleton(); - - $expected = [ - 'Slide_EDIT' => 'Slide Edit', - 'Slide_DELETE' => 'Slide Delete', - 'Slide_CREATE' => 'Slide Create', - ]; - - $this->assertEquals($expected, $object->providePermissions()); - } - - /** - * - */ - public function testCanCreate() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $admin = $this->objFromFixture(Member::class, 'admin'); - $this->assertTrue($object->canCreate($admin)); - - $author = $this->objFromFixture(Member::class, 'author'); - $this->assertTrue($object->canCreate($author)); - - $member = $this->objFromFixture(Member::class, 'default'); - $this->assertFalse($object->canCreate($member)); - } - - /** - * - */ - public function testCanEdit() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $admin = $this->objFromFixture(Member::class, 'admin'); - $this->assertTrue($object->canEdit($admin)); - - $author = $this->objFromFixture(Member::class, 'author'); - $this->assertTrue($object->canEdit($author)); - - $member = $this->objFromFixture(Member::class, 'default'); - $this->assertFalse($object->canEdit($member)); - } - - /** - * - */ - public function testCanDelete() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $admin = $this->objFromFixture(Member::class, 'admin'); - $this->assertTrue($object->canDelete($admin)); - - $author = $this->objFromFixture(Member::class, 'author'); - $this->assertTrue($object->canDelete($author)); - - $member = $this->objFromFixture(Member::class, 'default'); - $this->assertFalse($object->canDelete($member)); - } - - /** - * - */ - public function testCanView() - { - $object = $this->objFromFixture(SlideImage::class, 'slide1'); - $admin = $this->objFromFixture(Member::class, 'admin'); - $this->assertTrue($object->canView($admin)); - - $author = $this->objFromFixture(Member::class, 'author'); - $this->assertTrue($object->canView($author)); - - $member = $this->objFromFixture(Member::class, 'default'); - $this->assertTrue($object->canView($member)); - } - - /** - * - */ - public function testImageSizeLimit() - { - $default = 512000; - $this->assertEquals(Config::modify()->get(SlideImage::class, 'image_size_limit'), $default); - - $new = 1024000; - Config::modify()->update(SlideImage::class, 'image_size_limit', $new); - $this->assertEquals(Config::modify()->get(SlideImage::class, 'image_size_limit'), $new); - } - - /** - * - */ - public function testRenderWith() - { - $this->markTestSkipped("Todo SlideImageText::testRenderWith()"); - //$slide = SlideImage::singleton(); - - //$this->assertInstanceOf(DBHTMLText::class, $slide->renderWith()); - } - - /** - * - */ - public function testForTemplate() - { - $this->markTestSkipped("Todo SlideImageText::testForTemplate()"); - //$slide = SlideImage::singleton(); - - //$this->assertInstanceOf(DBHTMLText::class, $slide->forTemplate()); - } -} diff --git a/tests/TestPage.php b/tests/TestOnly/TestPage.php similarity index 57% rename from tests/TestPage.php rename to tests/TestOnly/TestPage.php index 3e5ee1c..7489e32 100644 --- a/tests/TestPage.php +++ b/tests/TestOnly/TestPage.php @@ -1,6 +1,6 @@ SilverStripe\Security\Group.administrators slide_edit: - Code: Slide_EDIT - Type: 1 - Group: =>SilverStripe\Security\Group.content_authors + Code: 'SLIDE_EDIT' + Group: =>SilverStripe\Security\Group.slidecreator slide_delete: - Code: Slide_DELETE - Type: 1 - Group: =>SilverStripe\Security\Group.content_authors + Code: 'SLIDE_DELETE' + Group: =>SilverStripe\Security\Group.slideadministrator slide_create: - Code: Slide_CREATE - Type: 1 - Group: =>SilverStripe\Security\Group.content_authors + Code: 'SLIDE_CREATE' + Group: =>SilverStripe\Security\Group.slidecreator + slide_publish: + Code: 'SLIDE_PUBLISH' + Group: =>SilverStripe\Security\Group.slideadministrator + SilverStripe\Security\Member: admin: FirstName: Default Surname: Admin - Email: administrator + Email: administrator@test.test Groups: =>SilverStripe\Security\Group.administrators - author: + slide_author: FirstName: "Content" Surname: "Author" - Email: "content" - Groups: =>SilverStripe\Security\Group.content_authors - default: + Email: slideauthor@test.test + Groups: =>SilverStripe\Security\Group.slidecreator + slide_admin: + FirstName: Slide + Surname: Admin + Email: slideadmin@test.test + Groups: =>SilverStripe\Security\Group.slideadministrator, =>SilverStripe\Security\Group.slidecreator + slide_no_permission: FirstName: Default Surname: Member - Email: member -Dynamic\FlexSlider\Model\SlideImage: - slide1: - Name: 'Hello World' - Description: 'What a fine place it is too!' - SlideType: 'Image' - slide2: - Name: 'Goodbye World' - Description: 'It was fun while it lasted!' - SlideType: 'Video' - slide3: - Name: 'Baz' - Description: 'Text Slide Description' - SlideType: 'Text' -SilverStripe\Assets\Image: - image1: - Name: Test Image - Filename: test.jpg + Email: default@test.test + +Dynamic\FlexSlider\Model\Slide: + base_slide: + Title: 'Hello World' + Content: 'What a fine place it is too!' +# slide2: +# Title: 'Goodbye World' +# Content: 'It was fun while it lasted!' +# slide3: +# Title: 'Baz' +# Content: 'Text Slide Description' +#SilverStripe\Assets\Image: +# image1: +# Name: Test Image +# Filename: test.jpg