inNamespace( NS_GADGET_DEFINITION ); } /** * @return string */ protected function getContentClass() { return GadgetDefinitionContent::class; } public function makeEmptyContent() { $class = $this->getContentClass(); return new $class( FormatJson::encode( $this->getDefaultMetadata(), "\t" ) ); } public function getDefaultMetadata() { return [ 'settings' => [ 'rights' => [], 'default' => false, 'hidden' => false, 'skins' => [], 'category' => '' ], 'module' => [ 'scripts' => [], 'styles' => [], 'peers' => [], 'dependencies' => [], 'messages' => [], 'type' => '', ], ]; } /** * @param Title $title The title of the page to supply the updates for. * @param string $role The role (slot) in which the content is being used. * @return DeferrableUpdate[] A list of DeferrableUpdate objects for putting information * about this content object somewhere. */ public function getDeletionUpdates( Title $title, $role ) { return array_merge( parent::getDeletionUpdates( $title, $role ), [ new GadgetDefinitionDeletionUpdate( $title ) ] ); } /** * @param Title $title The title of the page to supply the updates for. * @param Content $content The content to generate data updates for. * @param string $role The role (slot) in which the content is being used. * @param SlotRenderingProvider $slotOutput A provider that can be used to gain access to * a ParserOutput of $content by calling $slotOutput->getSlotParserOutput( $role, false ). * @return DeferrableUpdate[] A list of DeferrableUpdate objects for putting information * about this content object somewhere. */ public function getSecondaryDataUpdates( Title $title, Content $content, $role, SlotRenderingProvider $slotOutput ) { return array_merge( parent::getSecondaryDataUpdates( $title, $content, $role, $slotOutput ), [ new GadgetDefinitionSecondaryDataUpdate( $title ) ] ); } }