Kji has submitted this change and it was merged.

Change subject: removed inline JavaScript
......................................................................


removed inline JavaScript

Fixed semantic property retrieval errors.

Change-Id: I4e5a63fcc12cb81245f9b35ae6553bda4e5b4c28
---
M HierarchyBuilder.php
M HierarchyBuilder_body.php
M extension.json
M includes/renderHierarchy.js
M includes/renderHierarchySelected.js
5 files changed, 79 insertions(+), 71 deletions(-)

Approvals:
  Kji: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/HierarchyBuilder.php b/HierarchyBuilder.php
index f6daafe..716e9be 100644
--- a/HierarchyBuilder.php
+++ b/HierarchyBuilder.php
@@ -56,7 +56,7 @@
                ' Semantic Forms 2.5.2 or above.' );
 }
 
-define( 'HB_VERSION', '3.2.1' );
+define( 'HB_VERSION', '3.2.2' );
 
 # credits
 $wgExtensionCredits['parserhook'][] = array (
diff --git a/HierarchyBuilder_body.php b/HierarchyBuilder_body.php
index 53bfcc1..aa5869d 100644
--- a/HierarchyBuilder_body.php
+++ b/HierarchyBuilder_body.php
@@ -852,6 +852,8 @@
                return $rowsOfDepth;
        }
 
+       private static $renderHierarchies = array();
+
        /**
         * Renders a wikitext formatted hierarchy on a page.
         *
@@ -875,21 +877,15 @@
                self::$m_hierarchy_num++;
 
                if ( isset( $attributes[HierarchyBuilder::COLLAPSED] ) ) {
-                       $collapsed = htmlspecialchars( 
$attributes[HierarchyBuilder::COLLAPSED] );
-                       if ( $collapsed === 'collapsed' ) {
-                               $collapsed = 'true';
-                       }
+                       $collapsed = true;
                } else  {
-                       $collapsed = 'false';
+                       $collapsed = false;
                }
 
                if ( isset( $attributes[HierarchyBuilder::NUMBERED] ) ) {
-                       $numbered = htmlspecialchars( 
$attributes[HierarchyBuilder::NUMBERED] );
-                       if ( $numbered === 'numbered' ) {
-                               $numbered = 'true';
-                       }
+                       $numbered = true;
                } else {
-                       $numbered = 'false';
+                       $numbered = false;
                }
 
                if ( isset( $attributes[HierarchyBuilder::TITLEICONPROPERTY] ) 
) {
@@ -910,8 +906,8 @@
                        false )->getText();
 
                $hierarchy = HierarchyBuilder::parseHierarchy( $input,
-                       $titleiconproperty, $dummy,
-                       function ( $pageName, $titleiconproperty, $data ) {
+                       $titleiconproperty,
+                       function ( $pageName, $titleiconproperty ) {
                                $pageLinkArray = array();
                                $title = Title::newFromText( $pageName );
                                if ( $title ) {
@@ -927,19 +923,13 @@
 
                $parser->getOutput()->addModules( 'ext.HierarchyBuilder.render' 
);
 
-               $hierarchy = strtr( $hierarchy, array( '"' => "'" ) );
-
-               $script = <<<END
-mw.loader.using(['ext.HierarchyBuilder.render'], function () {
-       renderHierarchy("$hierarchyName", "$hierarchy", $collapsed, $numbered);
-});
-END;
-
-               global $wgOut;
-               $script = Html::inlineScript( $script );
-               $wgOut->addScript( $script );
-
-               //return Html::element( 'div', array( 'id' => $hierarchyName ) 
);
+               self::$renderHierarchies[] = array(
+                       'div' => $hierarchyName,
+                       'hierarchy' => $hierarchy,
+                       'collapsed' => $collapsed,
+                       'numbered' => $numbered
+               );
+               $parser->getOutput()->addJsConfigVars( 
'HierarchyBuilderRender', self::$renderHierarchies );
 
                $output = Html::element( 'div', array( 'id' => $hierarchyName ) 
);
                $parser->disableCache();
@@ -947,40 +937,32 @@
                        'noparse' => false );
        }
 
+       private static $renderHierarchiesSelected = array();
+
        public function renderHierarchySelected( $input, $attributes, $parser, 
$frame ) {
                $hierarchyName = 'HierarchyDiv' . self::$m_hierarchy_num;
                self::$m_hierarchy_num++;
 
                if ( isset( $attributes[HierarchyBuilder::COLLAPSED] ) ) {
-                       $collapsed = htmlspecialchars( 
$attributes[HierarchyBuilder::COLLAPSED] );
-                       if ( $collapsed === 'collapsed' ) {
-                               $collapsed = 'true';
-                       }
+                       $collapsed = true;
                } else  {
-                       $collapsed = 'false';
+                       $collapsed = false;
                }
 
                if ( isset( $attributes[HierarchyBuilder::NUMBERED] ) ) {
-                       $numbered = htmlspecialchars( 
$attributes[HierarchyBuilder::NUMBERED] );
-                       if ( $numbered === 'numbered' ) {
-                               $numbered = 'true';
-                       }
+                       $numbered = true;
                } else {
-                       $numbered = 'false';
+                       $numbered = false;
                }
 
                if ( isset( $attributes[HierarchyBuilder::SELECTED] ) ) {
-                       $selectedPages =
-                               json_encode( explode( ',', urldecode( 
$attributes[HierarchyBuilder::SELECTED] ) ) );
 
                        $selectedPages =
-                               json_encode(
-                                       array_map(
-                                               function ($pageName){
-                                                       return 
HierarchyBuilder::getPageDisplayName( $pageName );
-                                               },
-                                               explode( ',', urldecode( 
$attributes[HierarchyBuilder::SELECTED] ) )
-                                       )
+                               array_map(
+                                       function ($pageName){
+                                               return 
HierarchyBuilder::getPageDisplayName( $pageName );
+                                       },
+                                       explode( ',', urldecode( 
$attributes[HierarchyBuilder::SELECTED] ) )
                                );
                } else  {
                        $selectedPages = '';
@@ -996,31 +978,28 @@
                        true,
                        false )->getText();
 
-               $hierarchy = HierarchyBuilder::parseHierarchy( $input,
-               '',  $dummy,
-               function ( $pageName, $data ) {
-                       $pageLinkArray = array();
-                       $title = Title::newFromText( $pageName );
-                       if ( $title ) {
-                               $pageLinkArray['href'] = $title->getLinkURL();
-                       }
-                       $pageName = HierarchyBuilder::getPageDisplayName( 
$pageName );
-                       return Html::element( 'a', $pageLinkArray, $pageName );
-               } );
+               $hierarchy = HierarchyBuilder::parseHierarchy( $input, '',
+                       function ( $pageName ) {
+                               $pageLinkArray = array();
+                               $title = Title::newFromText( $pageName );
+                               if ( $title ) {
+                                       $pageLinkArray['href'] = 
$title->getLinkURL();
+                               }
+                               $pageName = 
HierarchyBuilder::getPageDisplayName( $pageName );
+                               return Html::element( 'a', $pageLinkArray, 
$pageName );
+                       } 
+               );
 
                $parser->getOutput()->addModules( 
'ext.HierarchyBuilder.renderSelected' );
 
-               $hierarchy = strtr( $hierarchy, array( '"' => "'" ) );
-
-               $script = <<<END
-mw.loader.using(['ext.HierarchyBuilder.renderSelected'], function () {
-       renderHierarchySelected("$hierarchyName", "$hierarchy", $collapsed, 
$numbered, $selectedPages);
-});
-END;
-
-               global $wgOut;
-               $script = Html::inlineScript( $script );
-               $wgOut->addScript( $script );
+               self::$renderHierarchiesSelected[] = array(
+                       'div' => $hierarchyName,
+                       'hierarchy' => $hierarchy,
+                       'collapsed' => $collapsed,
+                       'numbered' => $numbered,
+                       'selectedPages' => $selectedPages
+               );
+               $parser->getOutput()->addJsConfigVars( 
'HierarchyBuilderRenderSelected', self::$renderHierarchiesSelected );
 
                $output = Html::element( 'div', array( 'id' => $hierarchyName ) 
);
 
@@ -1060,7 +1039,7 @@
         *
         * @return string: Updated HTML formatted hierarchy with functional 
links.
         */
-       public static function parseHierarchy( $input, $titleIconProperty, 
&$data,
+       public static function parseHierarchy( $input, $titleIconProperty,
                $callback ) {
                $hierarchy = htmlspecialchars_decode( $input );
                $newlines = array( "\n", "\r" );
@@ -1069,7 +1048,7 @@
                $numMatches = preg_match_all( $pattern, $hierarchy, $matches );
                if ( $numMatches !== false ) {
                        foreach ( $matches[1] as $pageName ) {
-                               $link = $callback( trim( $pageName ), 
$titleIconProperty, $data );
+                               $link = $callback( trim( $pageName ), 
$titleIconProperty );
                                $hierarchy = str_replace( "<a>$pageName</a>", 
$link, $hierarchy );
                        }
                }
@@ -1088,6 +1067,9 @@
         *  or the empty string if the property does not exist.
         */
        public static function getPropertyFromPage( $page, $property, 
$firstonly = true ) {
+               if ($page == '' || $property == '') {
+                       return '';
+               }
                try {
                        $store = smwfGetStore();
                        $title = Title::newFromText( $page );
@@ -1735,6 +1717,9 @@
         * @return array: The pagename, titleiconname pairs for the specified 
page.
         */
        public static function getPageTitleIconsHtml( $page, 
$titleIconProperty) {
+               if ($page == '' || $titleIconProperty == '') {
+                       return '';
+               }
                $icons = self::getPageTitleIcons( $page, $titleIconProperty );
                return count($icons) > 0 ? self::getIconsHtml( $icons ) : '';
        }
diff --git a/extension.json b/extension.json
index cd69e73..42afbc0 100644
--- a/extension.json
+++ b/extension.json
@@ -1,6 +1,6 @@
 {
        "name": "HierarchyBuilder",
-       "version": "3.2.1",
+       "version": "3.2.2",
        "author": [
                "[https://www.mediawiki.org/wiki/User:Cindy.cicalese Cindy 
Cicalese]",
                "[https://www.mediawiki.org/wiki/User:Kevin.ji Kevin Ji]"
diff --git a/includes/renderHierarchy.js b/includes/renderHierarchy.js
index bd2e0b0..811eb10 100644
--- a/includes/renderHierarchy.js
+++ b/includes/renderHierarchy.js
@@ -20,7 +20,6 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-
 ( function( $ ) {
        /**
         * Gobal function to display a hierarchy.
@@ -168,3 +167,14 @@
                .render( divId, hierarchy, collapsed, numbered );
        };
 }( jQuery ) );
+
+$( function() {
+       if ( mw.config.exists( 'HierarchyBuilderRender' ) ) {
+               var hierarchies = mw.config.get( 'HierarchyBuilderRender' );
+               for ( index in hierarchies ) {
+                       var hierarchy = hierarchies[index];
+                       renderHierarchy( hierarchy.div, hierarchy.hierarchy,
+                               hierarchy.collapsed, hierarchy.numbered );
+               }
+       }
+});
\ No newline at end of file
diff --git a/includes/renderHierarchySelected.js 
b/includes/renderHierarchySelected.js
index 142fb2e..48e0ad2 100644
--- a/includes/renderHierarchySelected.js
+++ b/includes/renderHierarchySelected.js
@@ -251,3 +251,16 @@
                .render( divId, hierarchy, collapsed, numbered, 
selectedComponents );
        };
 }( jQuery ) );
+
+
+$( function() {
+       if ( mw.config.exists( 'HierarchyBuilderRenderSelected' ) ) {
+               var hierarchies = mw.config.get( 
'HierarchyBuilderRenderSelected' );
+               for ( index in hierarchies ) {
+                       var hierarchy = hierarchies[index];
+                       renderHierarchySelected( hierarchy.div, 
hierarchy.hierarchy,
+                               hierarchy.collapsed, hierarchy.numbered,
+                               hierarchy.selectedPages );
+               }
+       }
+});
\ No newline at end of file

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4e5a63fcc12cb81245f9b35ae6553bda4e5b4c28
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/HierarchyBuilder
Gerrit-Branch: master
Gerrit-Owner: Cicalese <[email protected]>
Gerrit-Reviewer: Kji <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to