Harej has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/337375 )

Change subject: Function documentation.
......................................................................

Function documentation.

Bug: T149375
Change-Id: I5b39a14bf8e545f167a96dc0341443d85c10d02f
---
M CollaborationKit.hooks.php
M includes/CollaborationHubContentEditor.php
M includes/CollaborationListContentEditor.php
M includes/ResourceLoaderListStyleModule.php
M includes/SpecialCreateHubFeature.php
M includes/content/CollaborationHubContent.php
M includes/content/CollaborationHubContentHandler.php
M includes/content/CollaborationHubDiffEngine.php
M includes/content/CollaborationHubTOC.php
M includes/content/CollaborationKitImage.php
M includes/content/CollaborationListContent.php
M includes/content/CollaborationListContentHandler.php
M modules/ext.CollaborationKit.hubimage.js
M modules/ext.CollaborationKit.icon.js
M modules/ext.CollaborationKit.list.edit.js
M modules/ext.CollaborationKit.list.ui.js
16 files changed, 373 insertions(+), 153 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CollaborationKit 
refs/changes/75/337375/1

diff --git a/CollaborationKit.hooks.php b/CollaborationKit.hooks.php
index 3650353..ab56d6d 100644
--- a/CollaborationKit.hooks.php
+++ b/CollaborationKit.hooks.php
@@ -1,12 +1,18 @@
 <?php
 
-// Hooks and crap
+/**
+ * Hooks to modify the default behavior of MediaWiki.
+ *
+ * @file
+ */
+
 class CollaborationKitHooks {
 
        /**
         * Some extra tabs for editing
-        * @param &$sktemplate SkinTemplate
-        * @param &$links array
+        *
+        * @param SkinTemplate &$sktemplate
+        * @param array &$links
         * @return bool
         */
        public static function onSkinTemplateNavigation( &$sktemplate, &$links 
) {
@@ -51,7 +57,7 @@
         * lists and have them work properly, since ContentHandler does not 
provide access
         * to the parser when doing plain wikitext transclusion.
         *
-        * @param $parser Parser
+        * @param Parser $parser
         */
        public static function onParserFirstCallInit( $parser ) {
                $parser->setFunctionHook( 'transcludelist', 
'CollaborationListContent::transcludeHook' );
@@ -63,8 +69,8 @@
         * Declares JSON as the code editor language for CollaborationKit pages.
         *
         * This hook only runs if the CodeEditor extension is enabled.
-        * @param $title Title
-        * @param &$lang string Page language.
+        * @param Title $title
+        * @param string &$lang Page language.
         * @return bool
         */
        public static function onCodeEditorGetPageLanguage( $title, &$lang ) {
@@ -89,8 +95,8 @@
        /**
         * For the table of contents on subpages of a CollaborationHub
         *
-        * @param $out OutputPage
-        * @param $text string the HTML text to be added
+        * @param OutputPage $out
+        * @param string $text the HTML text to be added
         * @return bool
         */
        public static function onOutputPageBeforeHTML( &$out, &$text ) {
@@ -132,8 +138,8 @@
         * Eventually, the TOC will be output by onOutputPageBeforeHTML hook if 
this
         * hook signals it is ok.
         *
-        * @param $out OutputPage
-        * @param $pout ParserOutput
+        * @param OutputPage $out
+        * @param ParserOutput $pout
         */
        public static function onOutputPageParserOutput( OutputPage $out, 
ParserOutput $pout ) {
                if ( $out->getProperty( 'CollaborationHubSubpage' ) ) {
@@ -153,7 +159,7 @@
        /**
         * Register __NOCOLLABORATIONHUBTOC__ as a magic word.
         *
-        * @param &$magickWords Array All double underscore magic ids
+        * @param Array &$magicWords All double underscore magic ids
         */
        public static function onGetDoubleUnderscoreIDs( array &$magicWords ) {
                $magicWords[] = 'nocollaborationhubtoc';
diff --git a/includes/CollaborationHubContentEditor.php 
b/includes/CollaborationHubContentEditor.php
index 8f5d75a..9af0ad8 100644
--- a/includes/CollaborationHubContentEditor.php
+++ b/includes/CollaborationHubContentEditor.php
@@ -1,7 +1,12 @@
 <?php
+
 /**
+ * Specialized editing interface for CollaborationHubContent pages.
+ *
  * @todo Unicode unsafe browsers?
+ * @file
  */
+
 class CollaborationHubContentEditor extends EditPage {
 
        /** @var string */
@@ -27,7 +32,9 @@
        }
 
        /**
-        * @param $parts array
+        * Prepares form fields.
+        * 
+        * @param array $parts
         * @return string html
         */
        protected function getFormFields( $parts ) {
@@ -118,8 +125,9 @@
        }
 
        /**
-        * Build and return the aossociative array for the content source field.
-        * @param $mapping array
+        * Build and return the associative array for the content source field.
+        * 
+        * @param array $mapping
         * @return array
         */
        protected function getOptions( $mapping ) {
@@ -157,7 +165,7 @@
         * Used to set the color theme for Hub edit pages.
         *
         * @param OutputPage $out
-        * @param Skin $sk
+        * @param Skin $skin
         * @param array $bodyAttribs Attributes for the <body> element
         */
        public static function setCollabkitTheme( OutputPage $out, $skin, 
&$bodyAttribs ) {
@@ -175,7 +183,8 @@
        /**
         * Converts input from the editing form into the text/x-collabkit
         * serialization used for processing the edit.
-        * @param &$request WebRequest
+        * 
+        * @param WebRequest &$request
         * @return string|null
         */
        protected function importContentFormData( &$request ) {
diff --git a/includes/CollaborationListContentEditor.php 
b/includes/CollaborationListContentEditor.php
index 7dd6865..6f49384 100644
--- a/includes/CollaborationListContentEditor.php
+++ b/includes/CollaborationListContentEditor.php
@@ -1,7 +1,13 @@
 <?php
+
 /**
+ * Specialized editing interface for CollaborationListContent pages.
+ * Extends the notorious EditPage class.
+ *
  * @todo Unicode unsafe browsers?
+ * @file
  */
+
 class CollaborationListContentEditor extends EditPage {
 
        function __construct( $page ) {
@@ -17,6 +23,9 @@
                $out->addModuleStyles( 'ext.CollaborationKit.edit.styles' );
        }
 
+       /**
+        * Prepares a modified edit form
+        */
        protected function showContentForm() {
                if ( $this->contentFormat !== 
CollaborationListContentHandler::FORMAT_WIKI ) {
                        return parent::showContentForm();
@@ -63,6 +72,12 @@
                $out->addHtml( Html::rawElement( 'div', [ 'class' => 
'mw-collabkit-modifiededitform' ], $partFields ) );
        }
 
+       /**
+        * Takes contents of edit form and serializes it.
+        *
+        * @param WebRequest $request
+        * @return string
+        */
        protected function importContentFormData( &$request ) {
                $format = $request->getVal( 'format', 
CollaborationListContentHandler::FORMAT_WIKI );
                if ( $format !== CollaborationListContentHandler::FORMAT_WIKI ) 
{
diff --git a/includes/ResourceLoaderListStyleModule.php 
b/includes/ResourceLoaderListStyleModule.php
index 77dfbff..d5029dd 100644
--- a/includes/ResourceLoaderListStyleModule.php
+++ b/includes/ResourceLoaderListStyleModule.php
@@ -1,5 +1,11 @@
 <?php
 
+/**
+ * Class for loading ResourceLoader modules
+ *
+ * @file
+ */
+
 class ResourceLoaderListStyleModule extends ResourceLoaderImageModule {
        protected function getCssDeclarations( $primary, $fallback ) {
                return [
diff --git a/includes/SpecialCreateHubFeature.php 
b/includes/SpecialCreateHubFeature.php
index 7063467..ada0616 100644
--- a/includes/SpecialCreateHubFeature.php
+++ b/includes/SpecialCreateHubFeature.php
@@ -93,6 +93,8 @@
        }
 
        /**
+        * The result of submitting the form
+        * 
         * @param array $data
         * @return Status
         */
@@ -232,11 +234,6 @@
                // No-op: We have already redirected.
        }
 
-       /**
-        * Set the form format to ooui for consistency with the rest of the ck 
stuff
-        * @param HTMLForm $form
-        *
-        */
        protected function getDisplayFormat() {
                return 'ooui';
        }
diff --git a/includes/content/CollaborationHubContent.php 
b/includes/content/CollaborationHubContent.php
index 309a9f4..586cd18 100644
--- a/includes/content/CollaborationHubContent.php
+++ b/includes/content/CollaborationHubContent.php
@@ -1,11 +1,18 @@
 <?php
 
 /**
- * Structured hub pages!
+ * A content model for group collaboration pages.
  *
- * Json structure is defined in CollaborationHubContentSchema.php.
+ * The principle behind CollaborationHubContent is to facilitate
+ * the development of "WikiProjects," called "Portals" on other
+ * wikis. CollaborationHubContent facilitates the development
+ * of these nodes of activity, consisting of header content, a
+ * table of contents, and several transcluded pages.
+ * Schema is found in CollaborationHubContentSchema.php.
  *
+ * @file
  */
+
 class CollaborationHubContent extends JsonContent {
 
        const HUMAN_DESC_SPLIT = "\n-----------------------\n";
@@ -36,6 +43,7 @@
 
        /**
         * 23 preset colours; actual colour values are set in the 
extension.json and less modules
+        *
         * @return array
         */
        public static function getThemeColours() {
@@ -196,11 +204,12 @@
 
        /**
         * Fill $output with information derived from the content.
-        * @param $title Title
-        * @param $revId int
-        * @param $options ParserOptions
-        * @param $generateHtml bool
-        * @param $output ParserOutput
+        *
+        * @param Title $title
+        * @param int $revId
+        * @param ParserOptions $options
+        * @param bool $generateHtml
+        * @param ParserOutput $output
         */
        protected function fillParserOutput( Title $title, $revId, 
ParserOptions $options,
                $generateHtml, ParserOutput &$output
@@ -304,6 +313,7 @@
 
        /**
         * Helper function for fillParserOutput to get all the css classes for 
the page content
+        *
         * @return array
         */
        protected function getHubClasses() {
@@ -324,9 +334,10 @@
 
        /**
         * Helper function for fillParserOutput
-        * @param $title Title
-        * @param $options ParserOptions
-        * @param $membersContent CollaborationListContent|null Force-fed 
member-list Content for testing purposes.
+        *
+        * @param Title $title
+        * @param ParserOptions $options
+        * @param CollaborationListContent|null $membersContent Force-fed 
member-list Content for testing purposes.
         * @return string
         */
        protected function getMembersBlock( Title $title, ParserOptions 
$options, ParserOutput $output, $membersContent = null ) {
@@ -407,9 +418,10 @@
 
        /**
         * Helper function for fillParserOutput
-        * @param $title Title
-        * @param $options ParserOptions
-        * @param $announcementsText string Force-fed announcements HTML for 
testing purposes
+        *
+        * @param Title $title
+        * @param ParserOptions $options
+        * @param string $announcementsText Force-fed announcements HTML for 
testing purposes
         * @return string
         */
        protected function getParsedAnnouncements( Title $title, ParserOptions 
$options, $announcementsText = null ) {
@@ -442,8 +454,9 @@
 
        /**
         * Helper function for fillParserOutput
-        * @param $title Title
-        * @param $options ParserOptions
+        *
+        * @param Title $title
+        * @param ParserOptions $options
         * @return string
         */
        protected function getParsedFooter( Title $title, ParserOptions 
$options ) {
@@ -455,7 +468,8 @@
 
        /**
         * Get some extra buttons for another footer
-        * @param $title Title
+        *
+        * @param Title $title
         * @return string
         */
        protected function getSecondFooter( Title $title ) {
@@ -482,10 +496,11 @@
        }
 
        /**
-        * Helper function for fillParserOutput; the bulk of the actual content
-        * @param $title Title
-        * @param $options ParserOptions
-        * @param &$output ParserOutput
+        * Helper function for fillParserOutput; the main body of the page
+        *
+        * @param Title $title
+        * @param ParserOptions $options
+        * @param ParserOutout &$output
         * @return string
         */
        protected function getParsedContent( Title $title, ParserOptions 
$options, ParserOutput $output ) {
@@ -583,8 +598,10 @@
        }
 
        /**
-        * Helper function for getParsedcontent for making subpage section 
headers
-        * @param $contentItem array of data for the content item we're 
generating the header for
+        * Helper function for getParsedContent for making subpage section 
headers
+        *
+        * @param Title $title
+        * @param array $contentItem Data for the content item we're generating 
the header for
         * @return string html (NOTE THIS IS AN OPEN DIV)
         */
        protected function makeHeader( Title $title, array $contentItem ) {
@@ -659,10 +676,11 @@
 
        /**
         * Helper function for fillParserOutput for making editsection links in 
headers
-        * @param $link Target URL
-        * @param $message Message to display
-        * @param $icon Icon to display alongside the message, based on OOjs UI 
definitions
-        * @return string html
+        *
+        * @param string $link Target URL
+        * @param string $message Message to display
+        * @param string $icon Icon to display alongside the message, based on 
OOjs UI definitions
+        * @return string HTML
         */
        protected function makeEditSectionLink( $link, $message, $icon ) {
                $html = new OOUI\ButtonWidget( [
@@ -678,8 +696,9 @@
 
        /**
         * Helper function for fillParserOutput: the table of contents
-        * @param $title Title
-        * @param $options ParserOptions
+        *
+        * @param Title $title
+        * @param ParserOptions $options
         * @return string
         */
        protected function getTableOfContents( Title $title, ParserOptions 
$options ) {
@@ -689,10 +708,10 @@
 
        /**
         * Generate an image based on what's in 'image', be it an icon or a file
-        * @param $fallback string for what to do for no icons - nothing, 
random, specific icon...
+        *
+        * @param string $image Filename or icon name
         * @param $size int for non-icon images
-        * @param $seed string fallback seed for explicitly something 
somethinged ones
-        * @return string
+        * @return string HTML
         */
        public function getParsedImage( $image, $size = 200 ) {
                return CollaborationKitImage::makeImage( $image, $size, [ 
'fallback' => 'puzzlepiece' ] );
@@ -700,12 +719,13 @@
 
        /**
         * Find the parent hub, if any.
+        * 
         * Returns the first CollaborationHub Title found, even if more are 
higher up, or null if none
-        * @param $title Title to start looking from
-        * @param $destination Title for testing purposes
-        * @return Title|null
+        *
+        * @param Title $title Title to start looking from
+        * @return Title|null Title of parent hub or null if none was found
         */
-       public static function getParentHub( Title $title, Title $destination = 
null ) {
+       public static function getParentHub( Title $title ) {
                global $wgCollaborationHubAllowedNamespaces;
 
                $namespace = $title->getNamespace();
@@ -731,8 +751,9 @@
        /**
         * Converts content between wikitext and JSON.
         *
-        * @param $toModel string
-        * @param $lossy string
+        * @param string $toModel
+        * @param string $lossy Flag, set to "lossy" to allow lossy conversion. 
If lossy conversion is not allowed, full round-trip conversion is expected to 
work without losing information.
+        * @return Content
         */
        public function convert( $toModel, $lossy = '' ) {
                if ( $toModel === CONTENT_MODEL_WIKITEXT && $lossy === 'lossy' 
) {
@@ -752,6 +773,8 @@
 
        /**
         * Convert JSON to markup that's easier for humans.
+        *
+        * @return string
         */
        public function convertToHumanEditable() {
                $this->decode();
@@ -773,6 +796,7 @@
        /**
         * Get the list of items in human editable form.
         *
+        * @return string
         * @todo Should this be i18n-ized?
         */
        public function getHumanEditableContent() {
@@ -798,6 +822,8 @@
        /**
         * Escape characters used as separators in human editable mode.
         *
+        * @param string $text
+        * @return string Escaped text
         * @todo Unclear if this is best approach. Alternative might be
         *  to use &#xA; Or an obscure unicode character like ␊ (U+240A).
         */
@@ -821,8 +847,8 @@
        /**
         * Removes escape characters inserted in human editable mode.
         *
-        * @param $text string
-        * @return string
+        * @param string $text
+        * @return string Unescaped text
         */
        private static function unescapeForHumanEditable( $text ) {
                $text = strtr( $text, [
@@ -836,8 +862,8 @@
        /**
         * Convert from human editable form into a (php) array
         *
-        * @param $text String text to convert
-        * @return Array Result of converting it to native form
+        * @param string $text Text to convert
+        * @return array Result of converting it to native form
         */
        public static function convertFromHumanEditable( $text ) {
                $res = [];
@@ -863,7 +889,7 @@
        /**
         * Helper function that converts individual lines from 
convertFromHumanEditable.
         *
-        * @param $line string
+        * @param string $line
         * @return array
         */
        private static function convertFromHumanEditableItemLine( $line ) {
@@ -897,8 +923,8 @@
        /**
         * Hook to use custom edit page for lists
         *
-        * @param $page Page
-        * @param $user User
+        * @param Page $page
+        * @param User $user
         */
        public static function onCustomEditor( Page $page, User $user ) {
                if ( $page->getContentModel() === __CLASS__ ) {
diff --git a/includes/content/CollaborationHubContentHandler.php 
b/includes/content/CollaborationHubContentHandler.php
index 71631d3..0df3534 100644
--- a/includes/content/CollaborationHubContentHandler.php
+++ b/includes/content/CollaborationHubContentHandler.php
@@ -1,5 +1,14 @@
 <?php
 
+/**
+ * Content handler for CollaborationHubContent.
+ *
+ * We extend TextContentHandler instead of JsonContentHandler since
+ * we do not display this as JSON code except upon request.
+ *
+ * @file
+ */
+
 class CollaborationHubContentHandler extends TextContentHandler {
 
        const FORMAT_WIKI = 'text/x-collabkit';
@@ -18,7 +27,7 @@
        }
 
        /**
-        * @param $title Title of page to check
+        * @param Title $title Page to check
         * @return bool
         */
        public function canBeUsedOn( Title $title ) {
@@ -38,8 +47,8 @@
         * as that is done at a later step (to allow for outputting of invalid 
content for
         * debugging purposes.)
         *
-        * @param $text string
-        * @param $format string|null
+        * @param string $text
+        * @param string|null $format
         * @return CollaborationHubContent
         */
        public function unserializeContent( $text, $format = null ) {
@@ -56,8 +65,8 @@
        /**
         * Serializes the CollaborationHubContent object.
         *
-        * @param $content Content
-        * @param $format string|null
+        * @param Content $content
+        * @param string|null $format
         * @return mixed
         */
        public function serializeContent( Content $content, $format = null ) {
@@ -97,15 +106,15 @@
 
        /**
         * Edit a Collaboration Hub via the edit API
-        * @param $title Title
-        * @param $displayName string
-        * @param $icon string
-        * @param $colour string
-        * @param $introduction string
-        * @param $footer string
-        * @param $content array
-        * @param $summary string Message key for edit summary
-        * @param $context IContextSource The calling context
+        * @param Title $title
+        * @param string $displayName
+        * @param string $icon
+        * @param string $colour
+        * @param string $introduction
+        * @param string $footer
+        * @param array $content
+        * @param string $summary Message key for edit summary
+        * @param IContextSource $context The calling context
         * @return Status
         */
        public static function edit( Title $title, $displayName, $image, 
$colour, $introduction, $footer, $content, $summary, IContextSource $context ) {
diff --git a/includes/content/CollaborationHubDiffEngine.php 
b/includes/content/CollaborationHubDiffEngine.php
index bb7a3e1..2ef7055 100644
--- a/includes/content/CollaborationHubDiffEngine.php
+++ b/includes/content/CollaborationHubDiffEngine.php
@@ -1,12 +1,17 @@
 <?php
 
+/**
+ * Custom diff engine for CollaborationHubContent. Not yet implemented.
+ *
+ * @file
+ */
+
 class CollaborationHubDiffEngine extends DifferenceEngine {
 
        /**
         * Implement our own diff rendering.
-        * @param $old Content Old content
-        * @param $new Content New content
-        *
+        * @param Content $old Old content
+        * @param Content $new New content
         * @throws Exception If old or new content is not an instance of 
CollaborationHubContent
         * @return bool|string
         */
diff --git a/includes/content/CollaborationHubTOC.php 
b/includes/content/CollaborationHubTOC.php
index 5bc8606..d3ef18e 100644
--- a/includes/content/CollaborationHubTOC.php
+++ b/includes/content/CollaborationHubTOC.php
@@ -1,5 +1,11 @@
 <?php
 
+/**
+ * Helper class to generate table of contents for CollaborationHubContent.
+ *
+ * @file
+ */
+
 class CollaborationHubTOC {
 
        /** @var $tocLinks array ids/links for ToC items that have been used 
already */
@@ -7,7 +13,8 @@
 
        /**
         * Get unique id for ToC Link/header
-        * @param $header
+        *
+        * @param string $header
         * @return string
         */
        public function getToCLinkID( $header ) {
@@ -30,9 +37,10 @@
        }
 
        /**
-        * ToC rendering for hub
-        * @param $content array block from collaborationhub
-        * @return string html
+        * ToC rendering for CollaborationHubContent
+        *
+        * @param array $content Array block from CollaborationHubContent
+        * @return string HTML
         */
        public function renderToC( $content ) {
                $html = Html::openElement( 'div', [ 'class' => 
'mw-ck-toc-container' ] );
@@ -71,8 +79,9 @@
        }
 
        /**
-        * ToC rendering for non-hubs
-        * @param $title Title of hub the ToC is generated off
+        * ToC rendering for other pages such as subpages
+        *
+        * @param Title $title Hub the ToC is generated from
         * @return string html
         */
        public function renderSubpageToC( Title $title ) {
diff --git a/includes/content/CollaborationKitImage.php 
b/includes/content/CollaborationKitImage.php
index 9434a44..21bb0e5 100644
--- a/includes/content/CollaborationKitImage.php
+++ b/includes/content/CollaborationKitImage.php
@@ -1,27 +1,29 @@
 <?php
 
 /**
- *
  * Helper class to produce HTML elements containing images for 
CollaborationKit purposes
  *
+ * @file
  */
+
 class CollaborationKitImage {
        /**
         * Generate an image element from the wiki or the extension
-        * @param $image string|null The filename (no namespace prefix) or 
CollaborationKit icon
+        * 
+        * @param string|null $image The filename (no namespace prefix) or 
CollaborationKit icon
         *      identifier (or null to use fallback instead)
-        * @param $width int The width of the image in pixels
-        * @param $options array An array with optional parameters
-        * @param $options['classes'] array Array of element classes to assign
-        * @param $options['link'] Title|string|bool Internal link for the 
image; default is true (i.e.
+        * @param int $width The width of the image in pixels
+        * @param array $options An array with optional parameters
+        * @param array $options['classes'] Array of element classes to assign
+        * @param Title|string|bool $options['link'] Internal link for the 
image; default is true (i.e.
         *      link to its description page). Pass `false` for no link at all. 
Pass a string to link to a
         *      page in the manner of an internal wiki link.
-        * @param $options['colour'] string The colour of the icon if using a 
canned icon
-        * @param $options['css'] string In-line style parameters. Avoid if 
possible.
-        * @param $options['renderAsWikitext'] bool Should the output be 
wikitext instead of HTML?
+        * @param string $options['colour'] The colour of the icon if using a 
canned icon
+        * @param string $options['css'] In-line style parameters. Avoid if 
possible.
+        * @param bool $options['renderAsWikitext'] Should the output be 
wikitext instead of HTML?
         *      Defaults to false.
-        * @param $options['label'] string Label to put under image; used for 
ToC icons
-        * @param $options['fallback'] string If the specified image is null or 
doesn't exist. Valid
+        * @param string $options['label'] Label to put under image; used for 
ToC icons
+        * @param string $options['fallback'] If the specified image is null or 
doesn't exist. Valid
         *      options are none', a valid icon ID, or an arbitrary string to 
use a seed. (Note: if you
         *      specify a label, then that will serve as the fallback.)
         * @return string HTML elements or wikitext, depending on 
$options['renderAsWikitext']
@@ -83,6 +85,9 @@
                return $imageBlock;
        }
 
+       /**
+        * @return string
+        */
        protected static function makeImageFromFile( $image, $classes, $width, 
$link,
                $renderAsWikitext, $label ) {
                // This assumes that colours cannot be assigned to images.
@@ -125,6 +130,9 @@
                }
        }
 
+       /**
+        * @return string
+        */
        protected static function makeImageFromIcon( $image, $classes, $width, 
$colour, $link,
                $renderAsWikitext, $label ) {
                // Rendering as wikitext with link is not an option here due to 
unfortunate behavior from Tidy.
@@ -149,6 +157,9 @@
                return $imageHtml;
        }
 
+       /**
+        * @return string
+        */
        protected static function linkFactory( $imageHtml, $link, $label, 
$imageObj = null ) {
                // Important assumption: image is being rendered as HTML and 
not wikitext.
 
diff --git a/includes/content/CollaborationListContent.php 
b/includes/content/CollaborationListContent.php
index b04c00c..e7241a7 100644
--- a/includes/content/CollaborationListContent.php
+++ b/includes/content/CollaborationListContent.php
@@ -1,12 +1,20 @@
 <?php
 
 /**
+ * A content model for representing lists of wiki pages in JSON.
+ *
+ * This content model is used to prepare lists of pages (i.e., of
+ * members' user pages or of wiki pages to work on) and associated
+ * metadata while separating content from presentation.
+ * Features associated JavaScript modules allowing for quick
+ * manipulation of list contents.
  * Important design assumption: This class assumes lists are small
  * (e.g. Average case < 500 items, outliers < 2000)
- *
  * Schema is found in CollaborationListContentSchema.php.
  *
+ * @file
  */
+
 class CollaborationListContent extends JsonContent {
 
        const MAX_LIST_SIZE = 2000; // Maybe should be a config option.
@@ -37,6 +45,7 @@
 
        /**
         * Decode and validate the contents.
+        * 
         * @return bool Whether the contents are valid
         */
        public function isValid() {
@@ -81,6 +90,13 @@
                return false;
        }
 
+       /**
+        * Validates a list configuration option against the schema.
+        *
+        * @param string $name The name of the parameter
+        * @param mixed $value The value of the parameter
+        * @return bool Whether the configuration option is valid.
+        */
        private static function validateOption( $name, &$value ) {
                $listSchema = include __DIR__ . 
'/CollaborationListContentSchema.php';
 
@@ -108,7 +124,7 @@
        }
 
        /**
-        * Format json
+        * Format JSON
         *
         * Do not escape < and > it's unnecessary and ugly
         * @return string
@@ -120,9 +136,9 @@
        /**
        * Beautifies JSON and does subst: prior to save.
        *
-       * @param $title Title Title
-       * @param $user User User
-       * @param $popts ParserOptions
+       * @param Title $title
+       * @param User $user
+       * @param ParserOptions $popts
        * @return CollaborationListContent
        */
        public function preSaveTransform( Title $title, User $user, 
ParserOptions $popts ) {
@@ -176,11 +192,12 @@
 
        /**
         * Fill $output with information derived from the content.
-        * @param $title Title
-        * @param $revId int
-        * @param $options ParserOptions
-        * @param $generateHtml bool
-        * @param $output ParserOutput
+        *
+        * @param Title $title
+        * @param int $revId Revision ID
+        * @param ParserOptions $options
+        * @param bool $generateHtml
+        * @param ParserOutput $output
         */
        protected function fillParserOutput( Title $title, $revId, 
ParserOptions $options,
                $generateHtml, ParserOutput &$output
@@ -228,7 +245,7 @@
         * transclusions. They are not used when using the parser function.
         *
         * @todo FIXME These should maybe not be used during transclusion.
-        * @return Array Options
+        * @return array Options
         */
        private function getFullRenderListOptions() {
                return $listOptions = [
@@ -241,8 +258,8 @@
        /**
         * Convert the JSON to wikitext.
         *
-        * @param $lang Language The (content) language to render the page in.
-        * @param $options Array Options to override the default transclude 
options
+        * @param Language $lang The (content) language to render the page in.
+        * @param array $options Options to override the default transclude 
options
         * @return string The wikitext
         */
        public function convertToWikitext( Language $lang, $options = [] ) {
@@ -430,6 +447,13 @@
                );
        }
 
+       /**
+        * Converts between different text-based content models
+        *
+        * @param string $toModel The desired content model, use the 
CONTENT_MODEL_XXX flags.
+        * @param string $lossy Flag, set to "lossy" to allow lossy conversion. 
If lossy conversion is not allowed, full round-trip conversion is expected to 
work without losing information.
+        * @return Content|bool A content object with the content model 
$toModel.
+        */
        public function convert( $toModel, $lossy = '' ) {
                if ( $toModel === CONTENT_MODEL_WIKITEXT && $lossy === 'lossy' 
) {
                        global $wgContLang;
@@ -455,7 +479,7 @@
         *
         * Any new option must be added to this list.
         *
-        * @return Array default rendering options to use.
+        * @return array default rendering options to use.
         */
        public function getDefaultOptions() {
                // FIXME implement
@@ -476,8 +500,8 @@
        /**
         * Sort a list
         *
-        * @param &$items Array List to sort (sorted in-place)
-        * @param $mode String sort method
+        * @param array &$items List to sort (sorted in-place)
+        * @param string $mode sort method
         * @return Array sorted list
         * @throws UnexpectedValueException on unrecognized mode
         */
@@ -517,8 +541,8 @@
        /**
         * Sort an array pseudo-randomly using an affine transform
         *
-        * @param $items Array Stuff to sort (sorted in-place)
-        * @return Array
+        * @param array $items Stuff to sort (sorted in-place)
+        * @return array
         */
        private function sortRandomly( &$items ) {
                $totItems = count( $items );
@@ -550,9 +574,9 @@
         * e.g. $tagSpecifier = [ [ 'a', 'b' ], ['b', 'd'] ]
         * means that any item must have the tags (a&&b) || (b&&d).
         *
-        * @param $tagSpecifier Array What tags to check (aka $options['tags'])
-        * @param $itemTags Array What tags is this item tagged with
-        * @return boolean If the item matches
+        * @param array $tagSpecifier What tags to check (aka $options['tags'])
+        * @param array $itemTags What tags is this item tagged with
+        * @return bool If the item matches
         */
        private function matchesTag( array $tagSpecifier, array $itemTags ) {
                if ( !$tagSpecifier ) {
@@ -578,6 +602,7 @@
 
        /**
         * Convert JSON to markup that's easier for humans.
+        * @return string
         */
        public function convertToHumanEditable() {
                $this->decode();
@@ -593,7 +618,7 @@
        /**
         * Output the options in human readable form
         *
-        * @return String key=value pairs separated by newlines.
+        * @return string key=value pairs separated by newlines.
         */
        private function getHumanOptions() {
                $this->decode();
@@ -611,6 +636,7 @@
        /**
         * Get the list of items in human editable form.
         *
+        * @return string
         * @todo i18n-ize
         */
        public function getHumanEditableList() {
@@ -669,6 +695,7 @@
        /**
         * Escape characters used as separators in human editable mode.
         *
+        * @return string Escaped text
         * @todo Unclear if this is best approach. Alternative might be
         *  to use &#xA; Or an obscure unicode character like ␊ (U+240A).
         */
@@ -689,6 +716,9 @@
                return $text;
        }
 
+       /**
+        * @return string
+        */
        private static function unescapeForHumanEditable( $text ) {
                $text = strtr( $text, [
                        '\\\\n'=> "\\n",
@@ -700,6 +730,7 @@
 
        /**
         * @param $options String Human readable options
+        * @return object
         */
        private static function parseHumanOptions( $options ) {
                $finalList = [];
@@ -721,8 +752,8 @@
        /**
         * Convert from human editable form into a (php) array
         *
-        * @param $text String text to convert
-        * @return Array Result of converting it to native form
+        * @param string $text text to convert
+        * @return array Result of converting it to native form
         */
        public static function convertFromHumanEditable( $text ) {
                $res = [ 'columns' => [] ];
@@ -765,6 +796,9 @@
                return $res;
        }
 
+       /**
+        * @return array
+        */
        private static function convertFromHumanEditableColumn( $column ) {
                // Adding newline so that HUMAN_COLUMN_SPLIT2 correctly triggers
                $column = $column . "\n";
@@ -822,6 +856,9 @@
                return $columnItem;
        }
 
+       /**
+        * @return array
+        */
        private static function convertFromHumanEditableItemLine( $line ) {
                $parts = explode( "|", $line );
                $parts = array_map( [ __CLASS__, 'unescapeForHumanEditable' ], 
$parts );
@@ -875,6 +912,10 @@
 
        /**
         * Function to handle {{#trancludelist:Page name|options...}} calls
+        *
+        * @param Parser $parser
+        * @param string $pageName
+        * @return string|array HTML string or an array [ string, 'noparse' => 
false ]
         */
        public static function transcludeHook( $parser, $pageName = '' ) {
                $args = func_get_args();
@@ -949,11 +990,11 @@
        /**
         * Sort users into active/inactive column
         *
-        * @param $column Array An array containing key items, which
+        * @param array $column An array containing key items, which
         *  is an array of stdClass's representing each list item.
         *  Each of these has a key named title which contains
         *  a user name (including namespace). May have non-users too.
-        * @return Array Two column structure sorted active/inactive.
+        * @return array Two column structure sorted active/inactive.
         * @todo Should link property be taken into account as actual name?
         */
        private function sortUsersIntoColumns( $column ) {
@@ -992,8 +1033,8 @@
         * Filter users into active and inactive.
         *
         * @note The results of this function get stored in parser cache.
-        * @param $userList Array of user dbkeys => stdClass
-        * @return Array [ 'active' => [..], 'inactive' => '[..]' ]
+        * @param array $userList Array of user dbkeys => stdClass
+        * @return array [ 'active' => [..], 'inactive' => '[..]' ]
         */
        private function filterActiveUsers( $userList ) {
                if ( count( $userList ) > 0 ) {
@@ -1029,9 +1070,10 @@
         * So instead we put <collaborationkitloadliststyles/> on the page, 
which
         * calls this.
         *
-        * @param $content String Input to parser hook
-        * @param $attribs Array
-        * @param $parser Parser
+        * @param string $content Input to parser hook
+        * @param array $attribs
+        * @param Parser $parser
+        * @return string Empty string
         */
        public static function loadStyles( $content, array $attributes, Parser 
$parser ) {
                $parser->getOutput()->addModuleStyles( [
@@ -1048,7 +1090,7 @@
         * @todo Not clear if this is the best hook to use. onBeforePageDisplay
         *  doesn't have easy access to oldid
         *
-        * @param $output OutputPage
+        * @param Article $article
         */
        public static function onArticleViewHeader( Article $article ) {
                $title = $article->getTitle();
@@ -1075,8 +1117,9 @@
        /**
         * Hook to use custom edit page for lists
         *
-        * @param $page Page
-        * @param $user User
+        * @param Page $page
+        * @param User $user
+        * @return bool
         */
        public static function onCustomEditor( Page $page, User $user ) {
                if ( $page->getContentModel() === __CLASS__ ) {
diff --git a/includes/content/CollaborationListContentHandler.php 
b/includes/content/CollaborationListContentHandler.php
index 3fcf0b2..831f8f6 100644
--- a/includes/content/CollaborationListContentHandler.php
+++ b/includes/content/CollaborationListContentHandler.php
@@ -1,7 +1,14 @@
 <?php
 
-// We extend TextContentHandler instead of JsonContentHandler since
-// we do not display this as Json code.
+/**
+ * Content handler for CollaborationListContent.
+ *
+ * We extend TextContentHandler instead of JsonContentHandler since
+ * we do not display this as JSON code except upon request.
+ *
+ * @file
+ */
+
 class CollaborationListContentHandler extends TextContentHandler {
 
        const FORMAT_WIKI = 'text/x-collabkit';
@@ -20,7 +27,9 @@
        }
 
        /**
-        * @param $title Title of page to check
+        * Can this content handler be used on a given page?
+        * 
+        * @param Title $title Page to check
         * @return bool
         */
        public function canBeUsedOn( Title $title ) {
@@ -33,6 +42,10 @@
        }
 
        /**
+        * Takes JSON string and creates a new CollaborationListContent object.
+        *
+        * Validation is intentionally not done at this step, as it is done 
later.
+        * 
         * @param string $text
         * @param string $format
         * @return CollaborationListContent
@@ -45,10 +58,16 @@
                        $text = FormatJson::encode( $data );
                }
                $content = new CollaborationListContent( $text );
-               // Deliberately not validating at this step; validation is done 
later.
                return $content;
        }
 
+       /**
+        * Prepares a serialization of the content object.
+        * 
+        * @param Content $content
+        * @param string $format
+        * @return string
+        */
        public function serializeContent( Content $content, $format = null ) {
                if ( $format === self::FORMAT_WIKI ) {
                        return $content->convertToHumanEditable();
@@ -74,7 +93,10 @@
        }
 
        /**
-        * @param $username string
+        * Spawns a new "members" list, using the project creator as initial 
member.
+        * 
+        * @param string $username Username without "User:" prefix
+        * @param string $initialDescription The initial description of the list
         * @return CollaborationListContent
         */
        public static function makeMemberList( $username, $initialDescription ) 
{
@@ -130,9 +152,11 @@
        }
 
        /**
-        * @param $title Title
-        * @param $summary string
-        * @param $context IContextSource
+        * Posts the newly created "members" list on-wiki.
+        *
+        * @param Title $title
+        * @param string $summary
+        * @param IContextSource $context
         * @todo rework this to use a generic CollaborationList editor function 
once it exists
         */
        public static function postMemberList( Title $title, $summary, 
IContextSource $context ) {
diff --git a/modules/ext.CollaborationKit.hubimage.js 
b/modules/ext.CollaborationKit.hubimage.js
index ba72513..286fb19 100644
--- a/modules/ext.CollaborationKit.hubimage.js
+++ b/modules/ext.CollaborationKit.hubimage.js
@@ -1,6 +1,10 @@
 ( function ( $, mw, OO ) {
 
-       // Subclass ProcessDialog.
+       /**
+        * Subclass ProcessDialog.
+        *
+        * @param {Object} config
+        */
        function ProcessDialog( config ) {
                ProcessDialog.super.call( this, config );
        }
@@ -14,8 +18,10 @@
                { label: mw.msg( 'cancel' ), flags: 'safe' }
        ];
 
-       // Use the initialize() method to add content to the dialog's $body,
-       // to initialize widgets, and to set up event handlers.
+       /**
+        * Use the initialize() method to add content to the dialog's $body,
+        * to initialize widgets, and to set up event handlers.
+        */
        ProcessDialog.prototype.initialize = function () {
                var defaultSearchTerm, nsPrefix;
 
@@ -46,7 +52,10 @@
                this.$body.append( this.content.$element );
        };
 
-       // In the event "Select" is pressed
+       /**
+        * In the event "Select" is pressed
+        *
+        */
        ProcessDialog.prototype.getActionProcess = function ( action ) {
                var dialog, openItUp, windowManager, processDialog,
                        currentImageFilename, currentImage, 
hubimageBrowserButton;
@@ -80,12 +89,18 @@
                return ProcessDialog.super.prototype.getActionProcess.call( 
this, action );
        };
 
-       // Get dialog height.
+       /**
+        * Get dialog height.
+        *
+        * @return {int} Dialog height
+        */
        ProcessDialog.prototype.getBodyHeight = function () {
                        return 600;
                };
 
-       // Create and append the window manager.
+       /**
+        * Create and append the window manager.
+        */
        openItUp = function () {
                windowManager = new OO.ui.WindowManager();
                $( 'body' ).append( windowManager.$element );
diff --git a/modules/ext.CollaborationKit.icon.js 
b/modules/ext.CollaborationKit.icon.js
index ef8ff99..779b7eb 100644
--- a/modules/ext.CollaborationKit.icon.js
+++ b/modules/ext.CollaborationKit.icon.js
@@ -1,6 +1,10 @@
 ( function ( $, mw, OO ) {
 
-       // Subclass ProcessDialog.
+       /**
+        * Subclass ProcessDialog.
+        *
+        * @param {Object} config
+        */
        function ProcessDialog( config ) {
                ProcessDialog.super.call( this, config );
        }
@@ -14,8 +18,10 @@
                { label: mw.msg( 'cancel' ), flags: 'safe' }
        ];
 
-       // Use the initialize() method to add content to the dialog's $body,
-       // to initialize widgets, and to set up event handlers.
+       /**
+        * Use the initialize() method to add content to the dialog's $body,
+        * to initialize widgets, and to set up event handlers.
+        */
        ProcessDialog.prototype.initialize = function () {
                var iconList, radioChoices, className;
 
@@ -53,7 +59,10 @@
                this.$body.append( this.content.$element );
        };
 
-       // In the event "Select" is pressed
+       /**
+        * In the event "Select" is pressed
+        *
+        */
        ProcessDialog.prototype.getActionProcess = function ( action ) {
                var dialog, toAppend, openItUp, windowManager, processDialog, 
iconBrowserButton;
 
@@ -77,12 +86,18 @@
                return ProcessDialog.super.prototype.getActionProcess.call( 
this, action );
        };
 
-       // Get dialog height.
+       /**
+        * Get dialog height.
+        *
+        * @return {int} Dialog height
+        */
        ProcessDialog.prototype.getBodyHeight = function () {
                return this.content.$element.outerHeight( true );
        };
 
-       // Create and append the window manager.
+       /**
+        * Create and append the window manager
+        */
        openItUp = function () {
                windowManager = new OO.ui.WindowManager();
                $( 'body' ).append( windowManager.$element );
diff --git a/modules/ext.CollaborationKit.list.edit.js 
b/modules/ext.CollaborationKit.list.edit.js
index e30d948..1d9b7dd 100644
--- a/modules/ext.CollaborationKit.list.edit.js
+++ b/modules/ext.CollaborationKit.list.edit.js
@@ -1,6 +1,12 @@
 ( function ( $, mw, OO ) {
        var deleteItem, getCurrentJson, saveJson, addItem, reorderList, 
getListOfTitles, modifyItem, modifyExistingItem, addSelf, curUserIsInList, 
getCol;
 
+       /**
+        * Retrieves ID number of column
+        *
+        * @param {jQuery} $item
+        * @return {int}
+        */
        getColId = function ( $item ) {
                var $col, id;
 
@@ -12,6 +18,11 @@
                return id;
        };
 
+       /**
+        * Deletes an item from the list
+        *
+        * @param {jQuery} $item
+        */
        deleteItem = function ( $item ) {
                var cur,
                        $spinner,
@@ -203,6 +214,12 @@
                } );
        };
 
+       /**
+        * Retrieves JSON form of the list content
+        *
+        * @param {int} pageID
+        * @param {function} callback
+        */
        getCurrentJson = function ( pageId, callback ) {
                var api = new mw.Api();
 
@@ -240,6 +257,12 @@
                );
        };
 
+       /**
+        * Saves the JSON text to a CollaborationListContent page
+        *
+        * @param {Object} params
+        * @param {function} callback
+        */
        saveJson = function ( params, callback ) {
                var api = new mw.Api();
 
diff --git a/modules/ext.CollaborationKit.list.ui.js 
b/modules/ext.CollaborationKit.list.ui.js
index d743205..5a0fa36 100644
--- a/modules/ext.CollaborationKit.list.ui.js
+++ b/modules/ext.CollaborationKit.list.ui.js
@@ -1,11 +1,18 @@
 ( function ( $, mw, OO ) {
        var LE = require( 'ext.CollaborationKit.list.edit' );
 
+       /**
+        * Adds a new item to a list
+        *
+        * @param {int} colId The ID number of the column
+        */
        addItem = function ( colId ) {
                modifyItem( { itemColId: colId } );
        };
 
        /**
+        * Opens a window to manage list item modification
+        *
         * @param {Object} itemToEdit The name of the title to modify, or false 
to add new.
         */
        modifyItem = function ( itemToEdit ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/337375
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b39a14bf8e545f167a96dc0341443d85c10d02f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CollaborationKit
Gerrit-Branch: master
Gerrit-Owner: Harej <jamesmh...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to