Version: current

# Class VideoBankPage

Basic data-object representing all pages within the site tree. This data-object takes care of the heirachy. All page types that live within the heirachy should inherit from this.

In addition, it contains a number of static methods for querying the site tree.

  Object
  ViewableData implements IteratorAggregate
  DataObject implements DataObjectInterface, i18nEntityProvider
  SiteTree implements PermissionProvider, i18nEntityProvider
  Page
  VideoBankPage

Package: cms
Located at video/code/VideoBankPage.php

## Methods summary

`public `FieldSet`` | # `getCMSFields( )` Returns a FieldSet with which to create the CMS editing form. Returns a FieldSet with which to create the CMS editing form. You can override this in your child classes to add extra fields - first get the parent fields using parent::getCMSFields(), then use addFieldToTab() on the FieldSet. #### Returns ``FieldSet`` The fields to be displayed in the CMS. #### Overrides `Page::getCMSFields`
`public static` | # `find_root_link( )`
`public` | # `onAfterDelete( )` #### Overrides `Page::onAfterDelete`

### Methods inherited from Page

`AdminEmail()`, `DevMode()`, `FinalParent()`, `Lang()`, `Locale()`, `MetaTags()`, `NestedValue()`, `allowComments()`, `canAddChildren()`, `canDelete()`, `canDeleteFromLive()`, `canEdit()`, `canPublish()`, `checkDevPermisson()`, `hiddenCMSFields()`, `hide_cms_fields()`, `onAfterWrite()`, `onBeforeWrite()`, `populateDefaults()`, `set_hidden_cms_fields()`

### Methods inherited from SiteTree

`AbsoluteLink()`, `Breadcrumbs()`, `CMSTreeClasses()`, `Comments()`, `ContentSource()`, `DependentPages()`, `DependentPagesCount()`, `ElementName()`, `InSection()`, `Level()`, `Link()`, `LinkOrCurrent()`, `LinkOrSection()`, `LinkingMode()`, `NestedTitle()`, `RelativeLink()`, `TreeTitle()`, `VirtualPages()`, `allowedChildren()`, `batch_permission_check()`, `can()`, `canCreate()`, `canView()`, `can_delete_multiple()`, `can_edit_multiple()`, `cmsCleanup_parentChanged()`, `collateDescendants()`, `defaultChild()`, `defaultParent()`, `disableCMSFieldsExtensions()`, `disable_nested_urls()`, `doDeleteFromLive()`, `doPublish()`, `doRestoreToStage()`, `doRevertToLive()`, `doRollbackTo()`, `doUnpublish()`, `duplicate()`, `duplicateAsChild()`, `duplicateWithChildren()`, `enableCMSFieldsExtensions()`, `enable_nested_urls()`, `fieldLabels()`, `generateURLSegment()`, `generate_homepage_domain_map()`, `getAbsoluteLiveLink()`, `getCMSActions()`, `getClassDropdown()`, `getExistsOnLive()`, `getIsAddedToStage()`, `getIsDeletedFromStage()`, `getIsModifiedOnStage()`, `getMenuTitle()`, `getParent()`, `getParentType()`, `getSiteConfig()`, `get_by_link()`, `get_enforce_strict_hierarchy()`, `i18n_singular_name()`, `isCurrent()`, `isNew()`, `isPublished()`, `isSection()`, `link_shortcode_handler()`, `nested_urls()`, `onBeforeDelete()`, `page_type_classes()`, `prepopuplate_permission_cache()`, `provideI18nEntities()`, `providePermissions()`, `requireDefaultRecords()`, `reset()`, `rewriteFileURL()`, `setMenuTitle()`, `setParent()`, `set_enforce_strict_hierarchy()`, `syncLinkTracking()`, `validURLSegment()`

### Methods inherited from DataObject

`Aggregate()`, `RelationshipAggregate()`, `__construct()`, `baseTable()`, `belongs_to()`, `buildDataObjectSet()`, `buildSQL()`, `castedUpdate()`, `composite_fields()`, `context_obj()`, `customDatabaseFields()`, `custom_database_fields()`, `data()`, `databaseFields()`, `databaseIndexes()`, `database_extensions()`, `database_fields()`, `db()`, `dbObject()`, `debug()`, `defaultSearchFilters()`, `defineMethods()`, `delete()`, `delete_by_id()`, `destroy()`, `disable_subclass_access()`, `enable_subclass_access()`, `exists()`, `extendedSQL()`, `fieldLabel()`, `flushCache()`, `flush_and_destroy_cache()`, `forceChange()`, `get()`, `getAllFields()`, `getChangedFields()`, `getClassAncestry()`, `getComponent()`, `getComponents()`, `getComponentsQuery()`, `getDefaultSearchContext()`, `getField()`, `getFrontEndFields()`, `getManyManyComponents()`, `getManyManyComponentsQuery()`, `getManyManyFilter()`, `getManyManyJoin()`, `getRemoteJoinField()`, `getReverseAssociation()`, `getTitle()`, `get_by_id()`, `get_one()`, `get_validation_enabled()`, `hasDatabaseField()`, `hasField()`, `hasOwnTableDatabaseField()`, `hasValue()`, `has_many()`, `has_one()`, `has_own_table()`, `i18n_plural_name()`, `inheritedDatabaseFields()`, `instance_get()`, `instance_get_one()`, `isChanged()`, `isEmpty()`, `isInDB()`, `is_composite_field()`, `many_many()`, `many_many_extraFields()`, `merge()`, `newClassInstance()`, `plural_name()`, `relObject()`, `requireTable()`, `scaffoldFormFields()`, `scaffoldSearchFields()`, `searchableFields()`, `setCastedField()`, `setClassName()`, `setComponent()`, `setField()`, `set_context_obj()`, `set_validation_enabled()`, `singular_name()`, `summaryFields()`, `toMap()`, `update()`, `validate()`, `write()`, `writeComponents()`, `writeWithoutVersion()`

### Methods inherited from ViewableData

`ATT_val()`, `BaseHref()`, `CSSClasses()`, `ColumnBreak()`, `ColumnCalc()`, `ColumnNumber()`, `ColumnPad()`, `ColumnPos()`, `CurrentMember()`, `CurrentPage()`, `Debug()`, `Even()`, `EvenOdd()`, `First()`, `FirstLast()`, `HasPerm()`, `IsAjax()`, `JS_val()`, `Last()`, `Me()`, `Middle()`, `MiddleString()`, `Modulus()`, `MultipleOf()`, `Odd()`, `Pos()`, `RAW_val()`, `SQL_val()`, `ThemeDir()`, `ThemeName()`, `Top()`, `TotalItems()`, `XML_val()`, `__get()`, `__isset()`, `__set()`, `buildCastingCache()`, `cachedCall()`, `castingClass()`, `castingHelper()`, `castingHelperPair()`, `castingObjectCreator()`, `castingObjectCreatorPair()`, `customise()`, `escapeTypeForField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`

### Methods inherited from Object

`__call()`, `__toString()`, `__wakeup()`, `addMethodsFrom()`, `addStaticVars()`, `addWrapperMethod()`, `add_extension()`, `add_static_var()`, `allMethodNames()`, `cacheToFile()`, `cacheToFileWithArgs()`, `clearCache()`, `combined_static()`, `create()`, `createMethod()`, `create_from_string()`, `extInstance()`, `extend()`, `getCustomClass()`, `getExtensionInstance()`, `getExtensionInstances()`, `get_extensions()`, `get_static()`, `hasExtension()`, `hasMethod()`, `has_extension()`, `invokeWithExtensions()`, `is_a()`, `loadCache()`, `parentClass()`, `parse_class_spec()`, `remove_extension()`, `sanitiseCachename()`, `saveCache()`, `set_stat()`, `set_static()`, `set_uninherited()`, `stat()`, `strong_create()`, `uninherited()`, `uninherited_static()`, `useCustomClass()`

### Magic methods summary

## Properties summary

`public static string|array` | $icon | # Icon to use in the CMS Icon to use in the CMS This should be the base filename. The suffixes -file.gif, openfolder.gif and -closedfolder.gif will be appended to the base name that you provide there. If you prefer, you can pass an array: array("sapphire\thirdparty\tree\images\page", $option). $option can be either "file" or "folder" to force the icon to always be a file or folder, regardless of whether the page has children or not
`public static array` | $allowed_children | # Indicates what kind of children this page type can have. This can be an array of allowed child classes, or the string "none" - indicating that this page type can't have children. If a classname is prefixed by "*", such as "*Page", then only that class is allowed - no subclasses. Otherwise, the class and all its subclasses are allowed. Indicates what kind of children this page type can have. This can be an array of allowed child classes, or the string "none" - indicating that this page type can't have children. If a classname is prefixed by "*", such as "*Page", then only that class is allowed - no subclasses. Otherwise, the class and all its subclasses are allowed.
`public static boolean` | $can_be_root | # Controls whether a page can be in the root of the site tree. Controls whether a page can be in the root of the site tree.
`public static array` | $has_many | # This defines a one-to-many relationship. It is a map of component name to the remote data class. This defines a one-to-many relationship. It is a map of component name to the remote data class. This relationship type does not actually create a data structure itself - you need to define a matching $has_one relationship on the child class. Also, if the $has_one relationship on the child class has multiple links to this class you can use the syntax "ClassName.HasOneRelationshipName" in the remote data class definition to show which foreign key to use.
`public static array` | $many_many | # many-many relationship definitions. This is a map from component name to data type. many-many relationship definitions. This is a map from component name to data type.

### Properties inherited from Page

`$db`, `$default_child`, `$defaults`, `$hidden_cms_fields`, `$summary_fields`

### Properties inherited from SiteTree

`$belongs_many_many`, `$breadcrumbs_delimiter`, `$cache_permissions`, `$can_create`, `$casting`, `$default_parent`, `$default_sort`, `$extensions`, `$has_one`, `$hide_ancestor`, `$indexes`, `$many_many_extraFields`, `$need_permission`, `$searchable_fields`, `$versioning`, `$write_homepage_map`

### Properties inherited from DataObject

`$allowed_actions`, `$ancestry`, `$api_access`, `$belongs_to`, `$brokenOnDelete`, `$brokenOnWrite`, `$cache_get_one`, `$cache_has_own_table`, `$cache_has_own_table_field`, `$componentCache`, `$components`, `$create_table_options`, `$default_records`, `$destroyed`, `$field_labels`, `$original`, `$plural_name`, `$record`, `$singular_name`

### Properties inherited from ViewableData

`$customisedObject`, `$default_cast`, `$failover`, `$iteratorPos`, `$iteratorTotalItems`

### Properties inherited from Object

`$class`, `$extension_instances`

[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -