Revision: 43460
Author: ialex
Date: 2008-11-13 18:08:30 +0000 (Thu, 13 Nov 2008)
Log Message:
-----------
* Version list on Special:ViewConfig now uses a pager.
* Listed version at the top Special:Configure and Special:Extension are only
shown when they contain the configuration for the wiki being modified.
Modified Paths:
--------------
trunk/extensions/Configure/CHANGELOG
trunk/extensions/Configure/Configure.handler-db.php
trunk/extensions/Configure/Configure.handler-files.php
trunk/extensions/Configure/Configure.handler.php
trunk/extensions/Configure/Configure.obj.php
trunk/extensions/Configure/Configure.page.php
trunk/extensions/Configure/Configure.php
trunk/extensions/Configure/SpecialViewConfig.php
Added Paths:
-----------
trunk/extensions/Configure/Configure.pager-db.php
trunk/extensions/Configure/Configure.pager-files.php
Modified: trunk/extensions/Configure/CHANGELOG
===================================================================
--- trunk/extensions/Configure/CHANGELOG 2008-11-13 17:41:41 UTC (rev
43459)
+++ trunk/extensions/Configure/CHANGELOG 2008-11-13 18:08:30 UTC (rev
43460)
@@ -1,7 +1,12 @@
This file lists changes on this extension.
Localisation updates are done on betawiki and aren't listed here.
-0.9.5 - 10 November 2008
+0.9.6 - 13 November 2008
+ * Version list on Special:ViewConfig now uses a pager.
+ * Listed version at the top Special:Configure and Special:Extension are only
+ shown when they contain the configuration for the wiki being modified.
+
+0.9.5 - 12 November 2008
Added $wgNamespacesToBeSearchedProject.
0.9.4 - 9 November 2008
Modified: trunk/extensions/Configure/Configure.handler-db.php
===================================================================
--- trunk/extensions/Configure/Configure.handler-db.php 2008-11-13 17:41:41 UTC
(rev 43459)
+++ trunk/extensions/Configure/Configure.handler-db.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -127,6 +127,15 @@
}
/**
+ * Returns a pager for this handler
+ *
+ * @return Pager
+ */
+ public function getPager(){
+ return new ConfigurationPagerDb( $this );
+ }
+
+ /**
* Save a new configuration
* @param $settings array of settings
* @param $wiki String: wiki name or true for all
Modified: trunk/extensions/Configure/Configure.handler-files.php
===================================================================
--- trunk/extensions/Configure/Configure.handler-files.php 2008-11-13
17:41:41 UTC (rev 43459)
+++ trunk/extensions/Configure/Configure.handler-files.php 2008-11-13
18:08:30 UTC (rev 43460)
@@ -83,6 +83,15 @@
}
/**
+ * Returns a pager for this handler
+ *
+ * @return Pager
+ */
+ public function getPager(){
+ return new ConfigurationPagerFiles( $this );
+ }
+
+ /**
* Save a new configuration
* @param $settings array of settings
* @param $wiki String: wiki name or true for all
Modified: trunk/extensions/Configure/Configure.handler.php
===================================================================
--- trunk/extensions/Configure/Configure.handler.php 2008-11-13 17:41:41 UTC
(rev 43459)
+++ trunk/extensions/Configure/Configure.handler.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -36,6 +36,13 @@
public function getWikisInVersion( $ts );
/**
+ * Returns a pager for this handler
+ *
+ * @return Pager
+ */
+ public function getPager();
+
+ /**
* Save a new configuration
* @param $settings array of settings
* @param $wiki String: wiki name or false to use the current one
Modified: trunk/extensions/Configure/Configure.obj.php
===================================================================
--- trunk/extensions/Configure/Configure.obj.php 2008-11-13 17:41:41 UTC
(rev 43459)
+++ trunk/extensions/Configure/Configure.obj.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -151,6 +151,15 @@
}
/**
+ * Returns a pager for this handler
+ *
+ * @return Pager
+ */
+ public function getPager(){
+ return $this->mHandler->getPager();
+ }
+
+ /**
* Get the defalut values for all settings
* Very, very hacky...
*
Modified: trunk/extensions/Configure/Configure.page.php
===================================================================
--- trunk/extensions/Configure/Configure.page.php 2008-11-13 17:41:41 UTC
(rev 43459)
+++ trunk/extensions/Configure/Configure.page.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -318,27 +318,39 @@
*/
protected function buildOldVersionSelect(){
global $wgConf, $wgLang, $wgUser;
+
+ $showAllLink = false;
+ $count = 0;
+ $links = array();
+
$versions = $wgConf->listArchiveVersions();
+ $skin = $wgUser->getSkin();
+ $title = $this->getTitle();
+ foreach( $versions as $ts ){
+ if( $count > 10 ) {
+ $showAllLink = true;
+ break;
+ } elseif( in_array( $this->mWiki,
$wgConf->getWikisInVersion( $ts ) ) ){
+ $count++;
+ $links[] = $skin->makeKnownLinkObj( $title,
$wgLang->timeAndDate( $ts ), "version=$ts" );
+ } else {
+ $showAllLink = true;
+ }
+ }
+
$text = '<fieldset><legend>' . wfMsgHtml( 'configure-old' ) .
'</legend>';
- if( empty( $versions ) ){
+ if( !count( $links ) ){
$text .= wfMsgExt( 'configure-no-old', array( 'parse' )
);
} else {
$text .= wfMsgExt( 'configure-old-versions', array(
'parse' ) );
- $text .= "<ul>\n";
- $skin = $wgUser->getSkin();
- $title = $this->getTitle();
- if( count( $versions ) > 10 ){
- $versions = array_slice( $versions, 0, 10 );
- $link = SpecialPage::getTitleFor( 'ViewConfig'
);
- $moreLink = $skin->makeKnownLinkObj( $link,
wfMsgHtml( 'configure-view-all-versions' ) );
- } else {
- $moreLink = '';
- }
- foreach( $versions as $ts ){
- $text .= '<li>' . $skin->makeKnownLinkObj(
$title, $wgLang->timeAndDate( $ts ), "version=$ts" ) . "</li>\n";
- }
- $text .= '</ul>' . $moreLink;
+ $text .= "<ul>\n<li>";
+ $text .= implode( "</li>\n<li>", $links );
+ $text .= "</li>\n</ul>\n";
}
+ if( $showAllLink ){
+ $link = SpecialPage::getTitleFor( 'ViewConfig' );
+ $text .= $skin->makeKnownLinkObj( $link, wfMsgHtml(
'configure-view-all-versions' ) );
+ }
$text .= '</fieldset>';
return $text;
}
Added: trunk/extensions/Configure/Configure.pager-db.php
===================================================================
--- trunk/extensions/Configure/Configure.pager-db.php
(rev 0)
+++ trunk/extensions/Configure/Configure.pager-db.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Class used to list versions at Special:ViewConfig when using a database
+ * handler
+ *
+ * @ingroup Extensions
+ * @author Alexandre Emsenhuber
+ */
+class ConfigurationPagerDb extends ReverseChronologicalPager {
+ protected $mHandler, $mCallback, $mCounter;
+
+ function __construct( ConfigureHandlerDb $handler ) {
+ parent::__construct();
+ $this->mHandler = $handler;
+ $this->mDb = $handler->getSlaveDB();
+ }
+
+ function getQueryInfo() {
+ $queryInfo = array(
+ 'tables' => array( 'config_version' ),
+ 'fields' => array( '*' ),
+ 'conds' => array(),
+ 'options' => array()
+ );
+ return $queryInfo;
+ }
+
+ function getIndexField() {
+ return 'cv_timestamp';
+ }
+
+ function setFormatCallback( $callback ) {
+ $this->mCallback = $callback;
+ }
+
+ function formatRow( $row ) {
+ if( !is_callable( $this->mCallback ) )
+ throw new MWException(
'ConfigurationPagerDb::$mCallback not callable' );
+ $this->mCounter++;
+ $info = array(
+ 'timestamp' => $row->cv_timestamp,
+ 'wikis' => array( $row->cv_wiki ),
+ 'count' => $this->mCounter,
+ );
+ return call_user_func( $this->mCallback, $info );
+ }
+
+ function getStartBody() {
+ $this->mCounter = 0;
+ return "<ul>\n";
+ }
+
+ function getEndBody() {
+ return "</ul>\n";
+ }
+}
Property changes on: trunk/extensions/Configure/Configure.pager-db.php
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/extensions/Configure/Configure.pager-files.php
===================================================================
--- trunk/extensions/Configure/Configure.pager-files.php
(rev 0)
+++ trunk/extensions/Configure/Configure.pager-files.php 2008-11-13
18:08:30 UTC (rev 43460)
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * Class used to list versions at Special:ViewConfig when using a files handler
+ *
+ * @ingroup Extensions
+ * @author Alexandre Emsenhuber
+ */
+class ConfigurationPagerFiles implements Pager {
+ protected $mHandler, $mCallback;
+
+ function __construct( ConfigureHandler $handler ) {
+ $this->mHandler = $handler;
+ }
+
+ function getBody() {
+ $versions = $this->mHandler->listArchiveVersions();
+ if( empty( $versions ) ){
+ return wfMsgExt( 'configure-no-old', array( 'parse' ) );
+ }
+
+ $text = "<ul>\n";
+ $count = 0;
+ foreach( $versions as $version ){
+ $count++;
+ $wikis = array_keys( $this->mHandler->getOldSettings(
$version ) );
+ $info = array(
+ 'timestamp' => $version,
+ 'wikis' => $wikis,
+ 'count' => $count,
+ );
+ $text .= $this->formatRow( $info );
+ }
+ $text .= "</ul>\n";
+ return $text;
+ }
+
+ function getNumRows() {
+ return count( $this->mHandler->listArchiveVersions() );
+ }
+
+ function getNavigationBar() {
+ return '';
+ }
+
+ function setFormatCallback( $callback ) {
+ $this->mCallback = $callback;
+ }
+
+ function formatRow( $info ) {
+ if( !is_callable( $this->mCallback ) )
+ throw new MWException(
'ConfigurationPagerFiles::$mCallback not callable' );
+ return call_user_func( $this->mCallback, $info );
+ }
+}
Property changes on: trunk/extensions/Configure/Configure.pager-files.php
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/extensions/Configure/Configure.php
===================================================================
--- trunk/extensions/Configure/Configure.php 2008-11-13 17:41:41 UTC (rev
43459)
+++ trunk/extensions/Configure/Configure.php 2008-11-13 18:08:30 UTC (rev
43460)
@@ -17,7 +17,7 @@
'url' => 'http://www.mediawiki.org/wiki/Extension:Configure',
'description' => 'Allow authorised users to configure the wiki by a
web-based interface',
'descriptionmsg' => 'configure-desc',
- 'version' => '0.9.5',
+ 'version' => '0.9.6',
);
## Configuration part
@@ -179,6 +179,10 @@
$wgAutoloadClasses['ExtPreviewConfigurationDiff'] = $dir .
'Configure.diff.php';
$wgAutoloadClasses['HistoryConfigurationDiff'] = $dir . 'Configure.diff.php';
+## Pager stuff
+$wgAutoloadClasses['ConfigurationPagerDb'] = $dir . 'Configure.pager-db.php';
+$wgAutoloadClasses['ConfigurationPagerFiles'] = $dir .
'Configure.pager-files.php';
+
## API module
$wgAutoloadClasses['ApiConfigure'] = $dir . 'Configure.api.php';
$wgAPIModules['configure'] = 'ApiConfigure';
Modified: trunk/extensions/Configure/SpecialViewConfig.php
===================================================================
--- trunk/extensions/Configure/SpecialViewConfig.php 2008-11-13 17:41:41 UTC
(rev 43459)
+++ trunk/extensions/Configure/SpecialViewConfig.php 2008-11-13 18:08:30 UTC
(rev 43460)
@@ -118,100 +118,121 @@
if( !$this->isWebConfig )
return '';
- $versions = $wgConf->listArchiveVersions();
- if( empty( $versions ) ){
- return wfMsgExt( 'configure-no-old', array( 'parse' ) );
- }
+ $self = $this->getTitle();
+ $pager = $wgConf->getPager();
+ $pager->setFormatCallback( array( $this, 'formatVersionRow' ) );
+ $showDiff = $pager->getNumRows() > 1;
- $title = $this->getTitle();
- $skin = $wgUser->getSkin();
- $showDiff = count( $versions ) > 1;
+ $formatConf = array(
+ 'showDiff' => $showDiff,
+ 'allowedConfig' => $wgUser->isAllowed( 'configure' ),
+ 'allowedExtensions' => $wgUser->isAllowed( 'extensions'
),
+ 'allowedAll' => $this->isUserAllowedInterwiki(),
+ 'allowedConfigAll' => $wgUser->isAllowed(
'configure-interwiki' ),
+ 'allowedExtensionsAll' => $wgUser->isAllowed(
'extensions-interwiki' ),
+ 'self' => $self,
+ 'skin' => $wgUser->getSkin(),
+ 'editMsg' => wfMsg( 'edit' ) . ': ',
+ );
- $allowedConfig = $wgUser->isAllowed( 'configure' );
- $allowedExtensions = $wgUser->isAllowed( 'extensions' );
+ if( $formatConf['allowedConfig'] )
+ $formatConf['configTitle'] = SpecialPage::getTitleFor(
'Configure' );
- $allowedAll = $this->isUserAllowedInterwiki();
- $allowedConfigAll = $wgUser->isAllowed( 'configure-interwiki' );
- $allowedExtensionsAll = $wgUser->isAllowed(
'extensions-interwiki' );
+ if( $formatConf['allowedExtensions'] )
+ $formatConf['extTitle'] = SpecialPage::getTitleFor(
'Extensions' );
- if( $allowedConfig )
- $configTitle = SpecialPage::getTitleFor( 'Configure' );
+ $this->formatConf = $formatConf;
- if( $allowedExtensions )
- $extTitle = SpecialPage::getTitleFor( 'Extensions' );
-
$text = wfMsgExt( 'configure-old-versions', array( 'parse' ) );
- if( $showDiff )
+ $text .= $pager->getNavigationBar();
+ if( $showDiff ) {
$text .= Xml::openElement( 'form', array( 'action' =>
$wgScript ) ) . "\n" .
- Xml::hidden( 'title', $title->getPrefixedDBKey() ) .
"\n" .
- $this->getButton() . "\n";
- $text .= "<ul>\n";
-
- $editMsg = wfMsg( 'edit' ) . ': ';
- $c = 0;
- foreach( $versions as $ts ){
- $c++;
- $time = $wgLang->timeAndDate( $ts );
- if( $allowedAll || $allowedConfigAll ||
$allowedExtensionsAll ){
- $wikis = $wgConf->getWikisInVersion( $ts );
+ Xml::hidden( 'title', $self->getPrefixedDBKey() ) .
"\n" .
+ $this->getButton() . "<br/>\n";
+ }
+ $text .= $pager->getBody();
+ if( $showDiff ) {
+ $text .= $this->getButton() . "</form>";
+ }
+ $text .= $pager->getNavigationBar();
+ return $text;
+ }
+
+ public function formatVersionRow( $arr ){
+ global $wgLang;
+
+ $ts = $arr['timestamp'];
+ $wikis = $arr['wikis'];
+ $c = $arr['count'];
+ $hasSelf = in_array( $this->mWiki, $wikis );
+
+ extract( $this->formatConf );
+ $time = $wgLang->timeAndDate( $ts );
+
+ $actions = array();
+ if( $hasSelf )
+ $view = $skin->makeKnownLinkObj( $self, wfMsgHtml(
'configure-view' ), "version=$ts" );
+ else
+ $view = wfMsgHtml( 'configure-view' );
+
+ if( $allowedAll ){
+ $viewWikis = array();
+ foreach( $wikis as $wiki ){
+ $viewWikis[] = $skin->makeKnownLinkObj( $self,
htmlspecialchars( $wiki ), "version={$ts}&wiki={$wiki}" );
}
- $actions = array();
- $view = $skin->makeKnownLinkObj( $title, wfMsg(
'configure-view' ), "version=$ts" );
- if( $allowedAll ){
+ $view .= ' (' . implode( ', ', $viewWikis ) . ')';
+ }
+ $actions[] = $view;
+ $editDone = false;
+ if( $allowedConfig ){
+ if( $hasSelf )
+ $editCore = $editMsg . $skin->makeKnownLinkObj(
$configTitle, wfMsgHtml( 'configure-edit-core' ), "version=$ts" );
+ else
+ $editCore = $editMsg . wfMsgHtml(
'configure-edit-core' );
+
+ if( $allowedConfigAll ){
$viewWikis = array();
foreach( $wikis as $wiki ){
- $viewWikis[] = $skin->makeKnownLinkObj(
$title, $wiki, "version={$ts}&wiki={$wiki}" );
+ $viewWikis[] = $skin->makeKnownLinkObj(
$configTitle, htmlspecialchars( $wiki ), "version={$ts}&wiki={$wiki}" );
}
- $view .= ' (' . implode( ', ', $viewWikis ) .
')';
+ $editCore .= ' (' . implode( ', ', $viewWikis )
. ')';
}
- $actions[] = $view;
- $editDone = false;
- if( $allowedConfig ){
- $editCore = $editMsg . $skin->makeKnownLinkObj(
$configTitle, wfMsg( 'configure-edit-core' ), "version=$ts" );
- if( $allowedConfigAll ){
- $viewWikis = array();
- foreach( $wikis as $wiki ){
- $viewWikis[] =
$skin->makeKnownLinkObj( $configTitle, $wiki, "version={$ts}&wiki={$wiki}" );
- }
- $editCore .= ' (' . implode( ', ',
$viewWikis ) . ')';
+ $actions[] = $editCore;
+ }
+ if( $allowedExtensions ){
+ $editExt = '';
+ if( !$allowedConfig )
+ $editExt .= $editMsg;
+ if( $hasSelf )
+ $editExt .= $skin->makeKnownLinkObj( $extTitle,
wfMsgHtml( 'configure-edit-ext' ), "version=$ts" );
+ else
+ $editExt .= wfMsgHtml( 'configure-edit-ext' );
+
+ if( $allowedExtensionsAll ){
+ $viewWikis = array();
+ foreach( $wikis as $wiki ){
+ $viewWikis[] = $skin->makeKnownLinkObj(
$extTitle, htmlspecialchars( $wiki ), "version={$ts}&wiki={$wiki}" );
}
- $actions[] = $editCore;
+ $editExt .= ' (' . implode( ', ', $viewWikis )
. ')';
}
- if( $allowedExtensions ){
- $editExt = '';
- if( !$allowedConfig )
- $editExt .= $editMsg;
- $editExt .= $skin->makeKnownLinkObj( $extTitle,
wfMsg( 'configure-edit-ext' ), "version=$ts" );
- if( $allowedExtensionsAll ){
- $viewWikis = array();
- foreach( $wikis as $wiki ){
- $viewWikis[] =
$skin->makeKnownLinkObj( $extTitle, $wiki, "version={$ts}&wiki={$wiki}" );
- }
- $editExt .= ' (' . implode( ', ',
$viewWikis ) . ')';
- }
- $actions[] = $editExt;
- }
- if( $showDiff ){
- $diffCheck = $c == 2 ? array( 'checked' =>
'checked' ) : array();
- $versionCheck = $c == 1 ? array( 'checked' =>
'checked' ) : array();
- $buttons =
- Xml::element( 'input', array_merge(
- array( 'type' => 'radio',
'name' => 'diff', 'value' => $ts ),
- $diffCheck ) ) .
- Xml::element( 'input', array_merge(
- array( 'type' => 'radio',
'name' => 'version', 'value' => $ts ),
- $versionCheck ) );
-
- } else {
- $buttons = '';
- }
- $action = implode( ', ', $actions );
- $text .= "<li>{$buttons}{$time}: {$action}</li>\n";
+ $actions[] = $editExt;
}
- $text .= "</ul>";
- if( $showDiff )
- $text .= $this->getButton() . "</form>";
- return $text;
+ if( $showDiff ){
+ $diffCheck = $c == 2 ? array( 'checked' => 'checked' )
: array();
+ $versionCheck = $c == 1 ? array( 'checked' => 'checked'
) : array();
+ $buttons =
+ Xml::element( 'input', array_merge(
+ array( 'type' => 'radio', 'name' =>
'diff', 'value' => $ts ),
+ $diffCheck ) ) .
+ Xml::element( 'input', array_merge(
+ array( 'type' => 'radio', 'name' =>
'version', 'value' => $ts ),
+ $versionCheck ) );
+
+ } else {
+ $buttons = '';
+ }
+ $action = implode( ', ', $actions );
+ return "<li>{$buttons}{$time}: {$action}</li>\n";
}
/**
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs