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