diff --git a/extension.json b/extension.json index 6505292..5dda34f 100644 --- a/extension.json +++ b/extension.json @@ -1,8 +1,8 @@ { - "name": "AnatImageViewer", + "name": "AnnotatedImages", "author": "Justin Georgi", "url": "https://gitea.azgeorgis.net/jgeorgi/AnatImageViewer", - "description": "This extension allows the creation of .an pages in the Files namespace which will be annotated images.", + "description": "This extension allows the creation of pages in the Annotation namespace which will create annotated images.", "version": "0.0.1", "license-name": "MIT", "type": "media", @@ -12,23 +12,27 @@ "id": 2218, "constant": "NS_AV_ANNOT", "name": "Annotation", - "protection": "annotations-edit" - }, + "protection": "annotations-edit", + "subpages": false, + "content": true, + "defaultcontentmodel": "annotation" + }, { "id": 2219, "constant": "NS_AV_ANNOT_TALK", - "name": "Annotation_talk" - } + "name": "Annotation_talk", + "subpages": true, + "content": false, + "defaultcontentmodel": "wikitext" + } ], + "callback": "MediaWiki\\Extension\\AnatImageViewer\\AnnotationHooks::registrationCallback", "AutoloadNamespaces": { "MediaWiki\\Extension\\AnatImageViewer\\": "includes/" }, - "MediaHandlers": { - "image/annotation": "MediaWiki\\Extension\\AnatImageViewer\\AnatImageHandler" + "ContentHandlers": { + "annotation": "MediaWiki\\Extension\\AnatImageViewer\\AnnotationHandler" }, "Hooks": { - "MimeMagicInit": "MediaWiki\\Extension\\AnatImageViewer\\AnatImageHooks::onMimeMagicInit", - "MimeMagicImproveFromExtension": "MediaWiki\\Extension\\AnatImageViewer\\AnatImageHooks::onMimeMagicImproveFromExtension", - "ParserFirstCallInit": "MediaWiki\\Extension\\AnatImageViewer\\AnatImageHooks::onParserFirstCallInit" } } \ No newline at end of file diff --git a/includes/AnatImageHandler.php b/includes/AnatImageHandler.php deleted file mode 100644 index 6c9eb32..0000000 --- a/includes/AnatImageHandler.php +++ /dev/null @@ -1,63 +0,0 @@ -validateParam() - * @param int $flags A bitfield, may contain self::TRANSFORM_LATER - * @return MediaTransformOutput - */ - public function doTransform($image, $dstPath, $dstUrl, $params, $flags = 0) { - return new AnatImageTransformOutput($image, $params); - } - - /** - * Small helper function to display information on the browser console - * - * Usage: - * echo ''; - * - * @param $data information to display - * @param bool $add_script_tags true to put information is inside complete script tag - */ - public static function console_log($data, $add_script_tags = false) { - $command = 'console.log('. json_encode($data, JSON_HEX_TAG).');'; - if ($add_script_tags) { - $command = ''; - } - echo $command; - } -} \ No newline at end of file diff --git a/includes/AnatImageHooks.php b/includes/AnatImageHooks.php deleted file mode 100644 index 58a5197..0000000 --- a/includes/AnatImageHooks.php +++ /dev/null @@ -1,77 +0,0 @@ -addExtraTypes('image/annotation an'); - $mime->addExtraInfo('image/annotation [METAIMAGE]'); - } - - /** - * MWHook: Make sure that an files (fake) get the proper mime assignement on upload - * - * @see https://www.mediawiki.org/wiki/Manual:Hooks/MimeMagicImproveFromExtension - * - * @param MimeAnalyzer $mimeAnalyzer Instance of MW MimeAnalyzer object - * @param string $ext extention of upload file - * @param string &$mime current assigned mime type - */ - public static function onMimeMagicImproveFromExtension( $mimeAnalyzer, $ext, &$mime ) { - if ( $mime !== 'image/annotation' && in_array( $ext, ['an'] ) ) { - $mime = 'image/annotation'; - } - } - - /** - * MWHook: Called when the parser initializes for the first time - * - * @param Parser $parser: Parser object being initialized - */ - static function onParserFirstCallInit( $parser ) { - $parser->setHook('anconfig', array( __CLASS__, 'renderConfigTag')); - } - - /** - * Render the config toml in a
tag
- *
- * @param $input The text inside the custom tag
- * @param array $args Any attributes given in the tag
- * @param Parser $parser The parser object
- * @param PPFrame $frame The parent frame calling the parser
- * @return string HTML string of output
- */
- static function renderConfigTag( $input, array $args, $parser, $frame ) {
- return '' . $input . '
';
- }
-
- /**
- * Small helper function to display information on the browser console
- *
- * Usage:
- * echo '';
- *
- * @param $data information to display
- * @param bool $add_script_tags true to put information is inside complete script tag
- */
- public static function console_log($data, $add_script_tags = false) {
- $command = 'console.log('. json_encode($data, JSON_HEX_TAG).');';
- if ($add_script_tags) {
- $command = '';
- }
- echo $command;
- }
-}
\ No newline at end of file
diff --git a/includes/AnnotationContent.php b/includes/AnnotationContent.php
new file mode 100644
index 0000000..ae8f492
--- /dev/null
+++ b/includes/AnnotationContent.php
@@ -0,0 +1,32 @@
+file = $file;
- $this->parameters = $parameters;
- self::console_log($parameters, true);
+class AnnotationHandler extends TextContentHandler {
+ private const ANNOT_VERSION = '0.1';
+
+ public function __construct( $modelId = 'annotation' ) {
+ parent::__construct( $modelId, [ CONTENT_FORMAT_TEXT ] );
}
- /**
- * Fetch HTML for this transform output
- *
- * @access public
- * @param array $options Associative array of options. Boolean options
- * should be indicated with a value of true for true, and false or
- * absent for false.
- * alt Alternate text or caption
- * desc-link Boolean, show a description link
- * file-link Boolean, show a file download link
- * custom-url-link Custom URL to link to
- * custom-title-link Custom Title object to link to
- * valign vertical-align property, if the output is an inline element
- * img-class Class applied to the "
" tag, if there is such a tag
- * preview Boolean, render is being called from a preview page
- *
- * @return string HTML
- */
- public function toHtml($options = []) {
- $descriptText = $this->file->getDescriptionText();
- preg_match('/([\S\s]*?)<\/pre>/',$descriptText,$annotDescript);
- $metadata = toml_decode($annotDescript[1], true);
+ /*
+ public function serializeContent( Content $content, $format = null ) {
+ }
+
+ public function unserializeContent( $blob, $format = null ) {
+ }
+ */
+
+ public function makeEmptyContent() {
+ return new AnnotationContent();
+ }
+
+ public function supportsDirectEditing() {
+ return true;
+ }
+
+ protected function fillParserOutput( Content $content, ContentParseParams $cpoParams, ParserOutput &$output ) {
+ // define $html somewhere
+ // e.g. $output->setText( $html );
+
+ self::console_log($content, true);
+
+ $metadata = toml_decode($content->getNativeData(), true);
if (isset($metadata['baseImage'])) {
- $baseImage = MediaWikiServices::getInstance()->getRepoGroup()->findFile(`File:` . $metadata['baseImage']);
+ $baseImage = MediaWikiServices::getInstance()->getRepoGroup()->findFile('File:' . $metadata['baseImage']);
} else {
$baseImage = false;
}
- return self::buildSvg($metadata,$baseImage);
- }
+ $output->setText( self::buildSvg($metadata,$baseImage) );
+ }
/**
* Build annotated SVG from TOML metadata
diff --git a/includes/AnnotationHooks.php b/includes/AnnotationHooks.php
new file mode 100644
index 0000000..bbb1e8a
--- /dev/null
+++ b/includes/AnnotationHooks.php
@@ -0,0 +1,33 @@
+';
+ * self::console_log('logged string');
+ * echo '';
+ *
+ * @param $data information to display
+ * @param bool $add_script_tags true to put information is inside complete script tag
+ */
+ public static function console_log($data, $add_script_tags = false) {
+ $command = 'console.log('. json_encode($data, JSON_HEX_TAG).');';
+ if ($add_script_tags) {
+ $command = '';
+ }
+ echo $command;
+ }
+}
\ No newline at end of file