Index: trunk/phase3/maintenance/language/messages.inc |
— | — | @@ -1035,6 +1035,8 @@ |
1036 | 1036 | 'rc_categories_any', |
1037 | 1037 | 'rc-change-size', |
1038 | 1038 | 'newsectionsummary', |
| 1039 | + 'rc-enhanced-expand', |
| 1040 | + 'rc-enhanced-hide', |
1039 | 1041 | ), |
1040 | 1042 | 'recentchangeslinked' => array( |
1041 | 1043 | 'recentchangeslinked', |
Index: trunk/phase3/skins/common/wikibits.js |
— | — | @@ -104,22 +104,6 @@ |
105 | 105 | } |
106 | 106 | } |
107 | 107 | |
108 | | -// for enhanced RecentChanges |
109 | | -function toggleVisibility(_levelId, _otherId, _linkId) { |
110 | | - var thisLevel = document.getElementById(_levelId); |
111 | | - var otherLevel = document.getElementById(_otherId); |
112 | | - var linkLevel = document.getElementById(_linkId); |
113 | | - if (thisLevel.style.display == 'none') { |
114 | | - thisLevel.style.display = 'block'; |
115 | | - otherLevel.style.display = 'none'; |
116 | | - linkLevel.style.display = 'inline'; |
117 | | - } else { |
118 | | - thisLevel.style.display = 'none'; |
119 | | - otherLevel.style.display = 'inline'; |
120 | | - linkLevel.style.display = 'none'; |
121 | | - } |
122 | | -} |
123 | | - |
124 | 108 | function showTocToggle() { |
125 | 109 | if (document.createTextNode) { |
126 | 110 | // Uses DOM calls to avoid document.write + XHTML issues |
Index: trunk/phase3/skins/common/enhancedchanges.js |
— | — | @@ -0,0 +1,39 @@ |
| 2 | +/* |
| 3 | + JavaScript file for enhanced recentchanges |
| 4 | + */ |
| 5 | + |
| 6 | +/* |
| 7 | + * Add the CSS to hide parts that should be collapsed |
| 8 | + * |
| 9 | + * We do this with JS so everything will be expanded by default |
| 10 | + * if JS is disabled |
| 11 | + */ |
| 12 | +appendCSS('.mw-changeslist-hidden {'+ |
| 13 | + ' display:none;'+ |
| 14 | + '}'+ |
| 15 | + 'div.mw-changeslist-expanded {'+ |
| 16 | + ' display:block;'+ |
| 17 | + '}'+ |
| 18 | + 'span.mw-changeslist-expanded {'+ |
| 19 | + ' display:inline !important;'+ |
| 20 | + '}' |
| 21 | +); |
| 22 | + |
| 23 | +/* |
| 24 | + * Switch an RC line between hidden/shown |
| 25 | + * @param int idNumber : the id number of the RC group |
| 26 | +*/ |
| 27 | +function toggleVisibility(idNumber) { |
| 28 | + var openarrow = document.getElementById("mw-rc-openarrow-"+idNumber); |
| 29 | + var closearrow = document.getElementById("mw-rc-closearrow-"+idNumber); |
| 30 | + var subentries = document.getElementById("mw-rc-subentries-"+idNumber); |
| 31 | + if (openarrow.className == 'mw-changeslist-expanded') { |
| 32 | + openarrow.className = 'mw-changeslist-hidden'; |
| 33 | + closearrow.className = 'mw-changeslist-expanded'; |
| 34 | + subentries.className = 'mw-changeslist-expanded'; |
| 35 | + } else { |
| 36 | + openarrow.className = 'mw-changeslist-expanded'; |
| 37 | + closearrow.className = 'mw-changeslist-hidden'; |
| 38 | + subentries.className = 'mw-changeslist-hidden'; |
| 39 | + } |
| 40 | +} |
Property changes on: trunk/phase3/skins/common/enhancedchanges.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 41 | + native |
Index: trunk/phase3/includes/ChangesList.php |
— | — | @@ -388,7 +388,24 @@ |
389 | 389 | * Generate a list of changes using an Enhanced system (use javascript). |
390 | 390 | */ |
391 | 391 | class EnhancedChangesList extends ChangesList { |
| 392 | + |
392 | 393 | /** |
| 394 | + * Add the JavaScript file for enhanced changeslist |
| 395 | + * @ return string |
| 396 | + */ |
| 397 | + public function beginRecentChangesList() { |
| 398 | + global $wgStylePath, $wgStyleVersion; |
| 399 | + $this->rc_cache = array(); |
| 400 | + $this->rcMoveIndex = 0; |
| 401 | + $this->rcCacheIndex = 0; |
| 402 | + $this->lastdate = ''; |
| 403 | + $this->rclistOpen = false; |
| 404 | + $script = Xml::tags( 'script', array( |
| 405 | + 'type' => 'text/javascript', |
| 406 | + 'src' => $wgStylePath . "/common/enhancedchanges.js?$wgStyleVersion" ), '' ); |
| 407 | + return $script; |
| 408 | + } |
| 409 | + /** |
393 | 410 | * Format a line for enhanced recentchange (aka with javascript and block of lines). |
394 | 411 | */ |
395 | 412 | public function recentChangesLine( &$baseRC, $watched = false ) { |
— | — | @@ -596,13 +613,16 @@ |
597 | 614 | |
598 | 615 | $users = ' <span class="changedby">[' . implode( $this->message['semicolon-separator'], $users ) . ']</span>'; |
599 | 616 | |
600 | | - # Arrow |
601 | | - $rci = 'RCI'.$this->rcCacheIndex; |
602 | | - $rcl = 'RCL'.$this->rcCacheIndex; |
603 | | - $rcm = 'RCM'.$this->rcCacheIndex; |
604 | | - $toggleLink = "javascript:toggleVisibility('$rci','$rcm','$rcl')"; |
605 | | - $tl = '<span id="'.$rcm.'"><a href="'.$toggleLink.'">' . $this->sideArrow() . '</a></span>'; |
606 | | - $tl .= '<span id="'.$rcl.'" style="display:none"><a href="'.$toggleLink.'">' . $this->downArrow() . '</a></span>'; |
| 617 | + # ID for JS visibility toggle |
| 618 | + $jsid = $this->rcCacheIndex; |
| 619 | + # onclick handler to toggle hidden/expanded |
| 620 | + $toggleLink = "onclick='toggleVisibility($jsid); return false'"; |
| 621 | + # Title for <a> tags |
| 622 | + $expandTitle = wfMsg('rc-enhanced-expand'); |
| 623 | + $closeTitle = wfMsg('rc-enhanced-hide'); |
| 624 | + |
| 625 | + $tl = "<span id='mw-rc-openarrow-$jsid' class='mw-changeslist-expanded' style='display:none'><a href='#' $toggleLink title='$expandTitle'>" . $this->sideArrow() . "</a></span>"; |
| 626 | + $tl .= "<span id='mw-rc-closearrow-$jsid' class='mw-changeslist-hidden' style='display:none'><a href='#' $toggleLink title='$closeTitle'>" . $this->downArrow() . "</a></span>"; |
607 | 627 | $r .= '<td valign="top" style="white-space: nowrap"><tt>'.$tl.' '; |
608 | 628 | |
609 | 629 | # Main line |
— | — | @@ -680,7 +700,7 @@ |
681 | 701 | $r .= "</td></tr></table>\n"; |
682 | 702 | |
683 | 703 | # Sub-entries |
684 | | - $r .= '<div id="'.$rci.'" style="display:none;"><table cellpadding="0" cellspacing="0" border="0" style="background: none">'; |
| 704 | + $r .= '<div id="mw-rc-subentries-'.$jsid.'" class="mw-changeslist-hidden"><table cellpadding="0" cellspacing="0" border="0" style="background: none">'; |
685 | 705 | foreach( $block as $rcObj ) { |
686 | 706 | # Get rc_xxxx variables |
687 | 707 | // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables. |
— | — | @@ -759,11 +779,10 @@ |
760 | 780 | * @param string $alt text |
761 | 781 | * @return string HTML <img> tag |
762 | 782 | */ |
763 | | - protected function arrow( $dir, $alt='' ) { |
| 783 | + protected function arrow( $dir ) { |
764 | 784 | global $wgStylePath; |
765 | 785 | $encUrl = htmlspecialchars( $wgStylePath . '/common/images/Arr_' . $dir . '.png' ); |
766 | | - $encAlt = htmlspecialchars( $alt ); |
767 | | - return "<img src=\"$encUrl\" width=\"12\" height=\"12\" alt=\"$encAlt\" />"; |
| 786 | + return "<img src=\"$encUrl\" width=\"12\" height=\"12\" />"; |
768 | 787 | } |
769 | 788 | |
770 | 789 | /** |
— | — | @@ -774,7 +793,7 @@ |
775 | 794 | protected function sideArrow() { |
776 | 795 | global $wgContLang; |
777 | 796 | $dir = $wgContLang->isRTL() ? 'l' : 'r'; |
778 | | - return $this->arrow( $dir, '+' ); |
| 797 | + return $this->arrow( $dir ); |
779 | 798 | } |
780 | 799 | |
781 | 800 | /** |
— | — | @@ -783,7 +802,7 @@ |
784 | 803 | * @return string HTML <img> tag |
785 | 804 | */ |
786 | 805 | protected function downArrow() { |
787 | | - return $this->arrow( 'd', '-' ); |
| 806 | + return $this->arrow( 'd' ); |
788 | 807 | } |
789 | 808 | |
790 | 809 | /** |
— | — | @@ -791,7 +810,7 @@ |
792 | 811 | * @return string HTML <img> tag |
793 | 812 | */ |
794 | 813 | protected function spacerArrow() { |
795 | | - return $this->arrow( '', ' ' ); |
| 814 | + return $this->arrow( '' ); |
796 | 815 | } |
797 | 816 | |
798 | 817 | /** |
Index: trunk/phase3/languages/messages/MessagesEn.php |
— | — | @@ -1714,6 +1714,8 @@ |
1715 | 1715 | 'rc_categories_any' => 'Any', |
1716 | 1716 | 'rc-change-size' => '$1', # only translate this message to other languages if you have to change it |
1717 | 1717 | 'newsectionsummary' => '/* $1 */ new section', |
| 1718 | +'rc-enhanced-expand' => 'Show details (requires JavaScript)', |
| 1719 | +'rc-enhanced-hide' => 'Hide details', |
1718 | 1720 | |
1719 | 1721 | # Recent changes linked |
1720 | 1722 | 'recentchangeslinked' => 'Related changes', |
Index: trunk/phase3/RELEASE-NOTES |
— | — | @@ -283,6 +283,8 @@ |
284 | 284 | * (bug 14609) User's namespaces to be searched default not updated after adding new namespace |
285 | 285 | * Purge form uses valid XHTML and (bug 8992) uses $wgRequest instead of $_SERVER |
286 | 286 | * (bug 12764) Special:LonelyPages shows transcluded pages |
| 287 | +* (bug 16073) Enhanced RecentChanges uses onclick handler with better fallback if |
| 288 | + JavaScript is disabled. |
287 | 289 | |
288 | 290 | === API changes in 1.14 === |
289 | 291 | |