[Pkg-mediawiki-devel] Seeking pre-upload approval (was Re: MW 1.19 for wheezy)

Thorsten Glaser t.glaser at tarent.de
Thu Aug 30 09:52:13 UTC 2012


Hi everone,

this is a follow-up message to what was already requested in the
names of the Mediawiki and FusionForge packaging team:


On Wed, 6 Jun 2012, Thorsten Glaser wrote:

> Jonathan Wiltshire dixit:
> 
> > With this in mind please bear with us for bringing this work and the associated
> > testing closer to the freeze than would otherwise be desirable, and we are
> > happy to provide status information on request.
> 
> The same goes for FusionForge, which contains a plugin integrating
> MediaWiki. I’m currently working on getting these two together,
> *and* updating mediawiki-extensions for 1.19
[…]
> So please allow for changes to src:mediawiki-extensions and
> src:fusionforge to get those pieces of software working together
> well for wheezy.


I’m hereby seeking pre-upload approval for new uploads (not new
upstream versions) of src:mediawiki-extensions (the most critical
one), src:fusionforge (very important, as otherwise the mediawiki
binary package must declare a Breaks on fusionforge-plugin-mediawiki
and thus would require a sourceful upload too) and src:mediawiki
(the least critical, but still containing bugfixes and better
integration). The changes have been delayed due to dayjob issues,
illness and delays in answers to requests for testing, but are
tested now (in which subsequent issues have been found and fixed).
I would like to apologise for that, but point out that this was
announced, before the freeze, in the above-quoted mail.

To discuss the (slightly edited, e.g. to ease file removals) debdiffs:


• mediawiki-extensions_2.8.debdiff (against 2.7, which is the version
  that really should have been in wheezy, had it not been for that
  whole node.js issue; the debdiff against 2.6 is 6 MiB large because
  MWE 2.6 targets MW 1.15 and MWE 2.7+ target MW 1.19; MWE 2.6 *will*
  not work properly with MW 1.19 and #686190 is just the tip of the
  iceberg so this _really_ should replace the t-p-u from earlier):

- turns out that the ECMAscript library dependencies on the extensions
  package are no longer needed (eliminates the indirect hold of the
  entire node.js issue)

- fix several HTML syntax issues

- fix API misuse resulting in internal strings (UNIQ‥QINU) being
  shown on the pages displayed

- fix installation path so RSS_Reader can find its files

- (sort debian/patches/series)


• fusionforge_5.2~rc1wheezy1.debdiff

- most importantly, remove some non-DFSG-free files (minified .js and
  binary .jar without source)

- use a native package format for wheezy, since the last few were
  uploaded as native packages by accident, and the current state
  in testing does not match *any* SVN revision anyway

- re-work the MediaWiki integration for MW 1.19, the old one *WILL*
  *NOT* work with MW 1.19 (and the new one not with MW 1.15), with
  much input from MediaWiki upstream developers (also removes dead
  code, such as $sys_use_mwframe, and fixes a few other bugs)

- on 2010-03-19, the data path for the wiki data was (accidentally?)
  changed, but nothing transitioned them to the new location: add a
  postinst doing precisely that, and change the places where the old
  path was still used in the package to the new path

- unbreak the nightly dump cronjob

- opt out of Apport automated bugreports due to bad experience in
  Ubuntu, per http://www.researchut.com/site/blog/report-bugs-with-apport-2

- (add myself to Uploaders; agreed in IRC)

Note: plugins/mediawiki/mediawiki-skin/FusionForge.php.patch contains
a diff between plugins/mediawiki/mediawiki-skin/FusionForge.php.renamed
(basically a copy of skins/MonoBook.php from Mediawiki, with strings
replaced, which is generated by a Makefile in the same directory, but
which FF upstream insists should be committed into SVN) and the “real”
theme, just FusionForge.php (so you can ignore these two files when
perusing the diff).


• mediawiki_1.19.1-2.debdiff

- most importantly, includes a versioned Breaks against both
  fusionforge and mediawiki-extensions versions from before
  this upload (and backports thereof)

- several bugfixes to the generated HTML and PHP warning fixes

- some FusionForge integration: the latter has got a debugging
  feature that interacts badly with wfSuppressWarnings() unless
  it’s told that that is active

- refreshes patches and removes an unused one


Please allow me to upload these three packages to unstable
and them to migrate to testing to have a well-rounded
experience for users of MediaWiki both in FusionForge and
without, or, if for some reason you think this is not
suitable, despite our informing you about this eatly,
let’s discuss alternative plans.

Thanks in advance,
//mirabilos (Evolvis developer, FF committer, MW packager, DD)
-- 
tarent solutions GmbH
Rochusstraße 2-4, D-53123 Bonn • http://www.tarent.de/
Tel: +49 228 54881-393 • Fax: +49 228 54881-314
HRB 5168 (AG Bonn) • USt-ID (VAT): DE122264941
Geschäftsführer: Boris Esser, Sebastian Mancke
-------------- next part --------------
diff -Nru mediawiki-1.19.1/debian/changelog mediawiki-1.19.1/debian/changelog
--- mediawiki-1.19.1/debian/changelog	2012-06-18 17:17:26.000000000 +0200
+++ mediawiki-1.19.1/debian/changelog	2012-08-30 11:09:28.000000000 +0200
@@ -1,3 +1,21 @@
+mediawiki (1:1.19.1-2) unstable; urgency=low
+
+  [ Thorsten Glaser ]
+  * Prevent <table></table> without any <tr /> inside, globally
+  * Fix more cases of not checking $wgHtml5
+  * MW’s ID (XML) sanitiser is there for a reason, use it!
+  * Prevent <ul></ul> without any <li /> inside in MonoBook
+  * Fix invalid XHTML caused by code not honouring $wgHtml5
+  * Quell some PHP warnings from sloppy code
+  * Do the wfSuppressWarnings patch used with FusionForge right
+  * Add myself to Uploaders and quieten lintian a bit
+  * Update versioned Breaks against fusionforge and mw-extensions
+
+  [ Jonathan Wiltshire ]
+  * Add Recommends on mediawiki-extensions-base and php-wikidiff2
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Wed, 08 Aug 2012 14:26:37 +0200
+
 mediawiki (1:1.19.1-1) unstable; urgency=low
 
   * New upstream bug fix release
diff -Nru mediawiki-1.19.1/debian/control mediawiki-1.19.1/debian/control
--- mediawiki-1.19.1/debian/control	2012-06-18 16:31:31.000000000 +0200
+++ mediawiki-1.19.1/debian/control	2012-08-08 14:29:45.000000000 +0200
@@ -2,7 +2,7 @@
 Section: web
 Priority: optional
 Maintainer: Mediawiki Maintenance Team <pkg-mediawiki-devel at lists.alioth.debian.org>
-Uploaders: Romain Beauxis <toots at rastageeks.org>, Jonathan Wiltshire <jmw at debian.org>
+Uploaders: Romain Beauxis <toots at rastageeks.org>, Jonathan Wiltshire <jmw at debian.org>, Thorsten Glaser <tg at mirbsd.de>
 Build-Depends: debhelper (>= 9),
  dh-buildinfo,
  ocaml-nox | ocaml, xsltproc, docbook-xml, docbook-xsl, po-debconf
@@ -14,9 +14,18 @@
 Package: mediawiki
 Architecture: all
 Depends: apache2 | httpd, php5, php5-mysql | php5-pgsql | php5-sqlite, mime-support, libjs-jquery, libjs-jquery-tipsy, libjs-jquery-cookie, libjs-jquery-form, libjs-jquery-tablesorter, ${misc:Depends} 
-Recommends: mysql-server | postgresql-contrib, php5-cli, python
+Recommends: mysql-server | postgresql-contrib, php5-cli, python, php-wikidiff2,  mediawiki-extensions-base
 Suggests: imagemagick | php5-gd, mediawiki-math, memcached, clamav
-Breaks: fusionforge-plugin-mediawiki (<< 5.2~rc1-4~)
+Breaks: fusionforge-plugin-mediawiki (<< 5.2~rc1wheezy1~),
+ mediawiki-extensions-base (<< 2.8~),
+ mediawiki-extensions-geshi (<< 2.8~),
+ mediawiki-extensions-ldapauth (<< 2.8~),
+ mediawiki-extensions-openid (<< 2.8~),
+ mediawiki-extensions-confirmedit (<< 2.8~),
+ mediawiki-extensions-fckeditor (<< 2.8~),
+ mediawiki-extensions-collection (<< 2.8~),
+ mediawiki-extensions-graphviz (<< 2.8~),
+ mediawiki-extensions (<< 2.8~)
 Description: website engine for collaborative work
  MediaWiki is a wiki engine (a program for creating a collaboratively
  edited website). It is designed to handle heavy websites containing
diff -Nru mediawiki-1.19.1/debian/patches/fix_invalid_sql.patch mediawiki-1.19.1/debian/patches/fix_invalid_sql.patch
--- mediawiki-1.19.1/debian/patches/fix_invalid_sql.patch	2012-05-31 00:43:48.000000000 +0200
+++ mediawiki-1.19.1/debian/patches/fix_invalid_sql.patch	2012-08-03 14:10:57.000000000 +0200
@@ -1,3 +1,5 @@
+$Id: fix_invalid_sql.patch 365 2012-08-03 12:10:57Z tg $
+
 Fix invalid SQL: Debian #615983
 | A database error has occurred
 | Query: INSERT IGNORE INTO page_restrictions (pr_page,pr_type,pr_level,pr_cascade,pr_user,pr_expiry) SELECT 793,pr_type,pr_level,pr_cascade,pr_user,pr_expiry FROM page_restrictions WHERE pr_page = '216'
@@ -7,9 +9,9 @@
 | ^
 Reference: https://evolvis.org/tracker/t_follow.php/1377
 
---- mediawiki-1.19.0.orig/includes/Title.php
-+++ mediawiki-1.19.0/includes/Title.php
-@@ -3524,8 +3524,7 @@
+--- a/includes/Title.php
++++ b/includes/Title.php
+@@ -3524,8 +3524,7 @@ class Title {
  					'pr_expiry'  => 'pr_expiry'
  				),
  				array( 'pr_page' => $pageid ),
diff -Nru mediawiki-1.19.1/debian/patches/fix_invalid_xhtml.patch mediawiki-1.19.1/debian/patches/fix_invalid_xhtml.patch
--- mediawiki-1.19.1/debian/patches/fix_invalid_xhtml.patch	1970-01-01 01:00:00.000000000 +0100
+++ mediawiki-1.19.1/debian/patches/fix_invalid_xhtml.patch	2012-08-03 17:23:30.000000000 +0200
@@ -0,0 +1,169 @@
+$Id: fix_invalid_xhtml.patch 366 2012-08-03 15:23:30Z tg $
+
+Fix invalid XHTML:
+• prevent <table></table> without any <tr /> inside
+• someone forgot to check whether HTML5 was enabled before toying around
+• sanitise XML IDs (a space is *not* allowed, and "Main Page" contains one)
+• let makeLink and all its callers remove HTML5-only attributes from
+  hyperlinks if someone else was not careful (rather, several someones)
+• prevent <ul></ul> without any <li /> inside
+
+--- a/includes/HTMLForm.php
++++ b/includes/HTMLForm.php
+@@ -803,6 +803,9 @@ class HTMLForm extends ContextSource {
+ 			$attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
+ 		}
+ 
++		if (!$tableHtml)
++			$tableHtml = '<tr><td><!-- empty to prevent invalid XHTML --></td></tr>';
++
+ 		$tableHtml = Html::rawElement( 'table', $attribs,
+ 			Html::rawElement( 'tbody', array(), "\n$tableHtml\n" ) ) . "\n";
+ 
+@@ -1206,6 +1209,8 @@ class HTMLTextField extends HTMLFormFiel
+ 	}
+ 
+ 	function getInputHTML( $value ) {
++		global $wgHtml5;
++
+ 		$attribs = array(
+ 			'id' => $this->mID,
+ 			'name' => $this->mName,
+@@ -1229,6 +1234,8 @@ class HTMLTextField extends HTMLFormFiel
+ 		# well
+ 		foreach ( array( 'min', 'max', 'pattern', 'title', 'step',
+ 		'placeholder' ) as $param ) {
++			if ( !$wgHtml5 && $param != 'title' )
++				continue;
+ 			if ( isset( $this->mParams[$param] ) ) {
+ 				$attribs[$param] = $this->mParams[$param];
+ 			}
+@@ -1625,13 +1632,14 @@ class HTMLMultiSelectField extends HTMLF
+ 				$html .= Html::rawElement( 'h1', array(), $label ) . "\n";
+ 				$html .= $this->formatOptions( $info, $value );
+ 			} else {
+-				$thisAttribs = array( 'id' => "{$this->mID}-$info", 'value' => $info );
++				$info_id = Sanitizer::escapeId($this->mID . '-' . $info);
++				$thisAttribs = array( 'id' => $info_id, 'value' => $info );
+ 
+ 				$checkbox = Xml::check(
+ 					$this->mName . '[]',
+ 					in_array( $info, $value, true ),
+ 					$attribs + $thisAttribs );
+-				$checkbox .= ' ' . Html::rawElement( 'label', array( 'for' => "{$this->mID}-$info" ), $label );
++				$checkbox .= ' ' . Html::rawElement( 'label', array( 'for' => $info_id ), $label );
+ 
+ 				$html .= ' ' . Html::rawElement( 'div', array( 'class' => 'mw-htmlform-flatlist-item' ), $checkbox );
+ 			}
+--- a/includes/SkinTemplate.php
++++ b/includes/SkinTemplate.php
+@@ -1613,6 +1613,8 @@ abstract class BaseTemplate extends Quic
+ 	 *   output a <span> instead of just text.
+ 	 */
+ 	function makeLink( $key, $item, $options = array() ) {
++		global $wgHtml5;
++
+ 		if ( isset( $item['text'] ) ) {
+ 			$text = $item['text'];
+ 		} else {
+@@ -1664,6 +1666,11 @@ abstract class BaseTemplate extends Quic
+ 					$attrs['class'] = $options['link-class'];
+ 				}
+ 			}
++			if ( !$wgHtml5 ) {
++				foreach ( array( 'context', 'primary' ) as $k ) {
++					unset( $attrs[$k] );
++				}
++			}
+ 			$html = Html::rawElement( isset( $attrs['href'] ) ? 'a' : $options['link-fallback'], $attrs, $html );
+ 		}
+ 
+--- a/skins/MonoBook.php
++++ b/skins/MonoBook.php
+@@ -60,6 +60,8 @@ class MonoBookTemplate extends BaseTempl
+ 	 * @access private
+ 	 */
+ 	function execute() {
++		global $wgHtml5;
++
+ 		// Suppress warnings to prevent notices about missing indexes in $this->data
+ 		wfSuppressWarnings();
+ 
+@@ -69,7 +71,7 @@ class MonoBookTemplate extends BaseTempl
+ 	<a id="top"></a>
+ 	<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+ 
+-	<h1 id="firstHeading" class="firstHeading"><span dir="auto"><?php $this->html('title') ?></span></h1>
++	<h1 id="firstHeading" class="firstHeading"><span<?php if ($wgHtml5) echo ' dir="auto"'; ?>><?php $this->html('title') ?></span></h1>
+ 	<div id="bodyContent" class="mw-body">
+ 		<div id="siteSub"><?php $this->msg('tagline') ?></div>
+ 		<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
+@@ -93,12 +95,21 @@ class MonoBookTemplate extends BaseTempl
+ 	<div class="portlet" id="p-personal">
+ 		<h5><?php $this->msg('personaltools') ?></h5>
+ 		<div class="pBody">
++<?php
++	$ul_shown = false;
++	foreach ($this->getPersonalTools() as $key => $item) {
++		if (!$ul_shown) {
++?>
+ 			<ul<?php $this->html('userlangattributes') ?>>
+-<?php		foreach($this->getPersonalTools() as $key => $item) { ?>
+-				<?php echo $this->makeListItem($key, $item); ?>
+-
+-<?php		} ?>
+-			</ul>
++<?php
++			$ul_shown = true;
++		}
++		echo "\n" . $this->makeListItem($key, $item);
++	}
++	if ($ul_shown) {
++		echo "\n</ul>\n";
++	}
++?>
+ 		</div>
+ 	</div>
+ 	<div class="portlet" id="p-logo">
+--- a/includes/Linker.php
++++ b/includes/Linker.php
+@@ -1148,7 +1148,7 @@ class Linker {
+ 	 * @return string
+ 	 */
+ 	private static function formatAutocommentsCallback( $match ) {
+-		global $wgLang;
++		global $wgLang, $wgHtml5;
+ 		$title = self::$autocommentTitle;
+ 		$local = self::$autocommentLocal;
+ 
+@@ -1189,7 +1189,9 @@ class Linker {
+ 			$auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
+ 		}
+ 		$auto = '<span class="autocomment">' . $auto . '</span>';
+-		$comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
++		$comment = $pre . $link . $wgLang->getDirMark() .
++		    '<span' . ($wgHtml5 ? ' dir="auto"' : '') . '>' . $auto .
++		    $post . '</span>';
+ 		return $comment;
+ 	}
+ 
+@@ -1381,6 +1383,8 @@ class Linker {
+ 	 * @return string
+ 	 */
+ 	public static function commentBlock( $comment, $title = null, $local = false ) {
++		global $wgHtml5;
++
+ 		// '*' used to be the comment inserted by the software way back
+ 		// in antiquity in case none was provided, here for backwards
+ 		// compatability, acc. to brion -ævar
+@@ -1388,7 +1392,9 @@ class Linker {
+ 			return '';
+ 		} else {
+ 			$formatted = self::formatComment( $comment, $title, $local );
+-			return " <span class=\"comment\" dir=\"auto\">($formatted)</span>";
++			return " <span class=\"comment\"" .
++			    ($wgHtml5 ? " dir=\"auto\"" : "") .
++			    ">($formatted)</span>";
+ 		}
+ 	}
+ 
diff -Nru mediawiki-1.19.1/debian/patches/fix_warnings.patch mediawiki-1.19.1/debian/patches/fix_warnings.patch
--- mediawiki-1.19.1/debian/patches/fix_warnings.patch	1970-01-01 01:00:00.000000000 +0100
+++ mediawiki-1.19.1/debian/patches/fix_warnings.patch	2012-07-26 16:13:43.000000000 +0200
@@ -0,0 +1,28 @@
+$Id: fix_warnings.patch 359 2012-07-26 14:13:43Z tg $
+
+Fix code:
+• array_merge expects at least one argument
+• apparently, checking for syntax with unserialize() needs an extra
+
+--- a/includes/SkinTemplate.php
++++ b/includes/SkinTemplate.php
+@@ -1808,7 +1808,7 @@ abstract class BaseTemplate extends Quic
+ 			}
+ 		}
+ 
+-		if ( $option == 'flat' ) {
++		if ( $option == 'flat' && $validFooterLinks ) {
+ 			// fold footerlinks into a single array using a bit of trickery
+ 			$validFooterLinks = call_user_func_array(
+ 				'array_merge',
+--- a/includes/media/PNG.php
++++ b/includes/media/PNG.php
+@@ -78,7 +78,7 @@ class PNGHandler extends BitmapHandler {
+ 		}
+ 
+ 		wfSuppressWarnings();
+-		$data = unserialize( $metadata );
++		$data = @unserialize( $metadata );
+ 		wfRestoreWarnings();
+ 
+ 		if ( !$data || !is_array( $data ) ) {
diff -Nru mediawiki-1.19.1/debian/patches/mimetypes.patch mediawiki-1.19.1/debian/patches/mimetypes.patch
--- mediawiki-1.19.1/debian/patches/mimetypes.patch	2012-05-31 00:43:48.000000000 +0200
+++ mediawiki-1.19.1/debian/patches/mimetypes.patch	2012-08-03 14:10:57.000000000 +0200
@@ -1,6 +1,8 @@
---- mediawiki-1.19.0.orig/includes/DefaultSettings.php
-+++ mediawiki-1.19.0/includes/DefaultSettings.php
-@@ -879,8 +879,8 @@
+$Id: mimetypes.patch 365 2012-08-03 12:10:57Z tg $
+
+--- a/includes/DefaultSettings.php
++++ b/includes/DefaultSettings.php
+@@ -879,8 +879,8 @@ $wgAntivirusRequired = true;
  $wgVerifyMimeType = true;
  
  /** Sets the mime type definition file to use by MimeMagic.php. */
diff -Nru mediawiki-1.19.1/debian/patches/series mediawiki-1.19.1/debian/patches/series
--- mediawiki-1.19.1/debian/patches/series	2012-06-14 00:11:34.000000000 +0200
+++ mediawiki-1.19.1/debian/patches/series	2012-07-26 15:54:47.000000000 +0200
@@ -1,3 +1,5 @@
 mimetypes.patch
 suppress_warnings.patch
 fix_invalid_sql.patch
+fix_invalid_xhtml.patch
+fix_warnings.patch
diff -Nru mediawiki-1.19.1/debian/patches/suppress_warnings.patch mediawiki-1.19.1/debian/patches/suppress_warnings.patch
--- mediawiki-1.19.1/debian/patches/suppress_warnings.patch	2012-06-04 20:46:28.000000000 +0200
+++ mediawiki-1.19.1/debian/patches/suppress_warnings.patch	2012-08-03 14:10:57.000000000 +0200
@@ -1,10 +1,36 @@
-$Id: suppress_warnings.patch 315 2012-06-04 18:46:27Z jmw $
+$Id: suppress_warnings.patch 365 2012-08-03 12:10:57Z tg $
 
 Suppress warnings from being run within FusionForge’s gforge-plugin-mediawiki
 
---- mediawiki-1.19.0.orig/includes/GlobalFunctions.php
-+++ mediawiki-1.19.0/includes/GlobalFunctions.php
-@@ -3362,7 +3362,7 @@
+--- a/includes/GlobalFunctions.php
++++ b/includes/GlobalFunctions.php
+@@ -2199,7 +2199,9 @@ function wfNegotiateType( $cprefs, $spre
+  *
+  * @param $end Bool
+  */
++$wf__warnings_suppressed = false;
+ function wfSuppressWarnings( $end = false ) {
++	global $wf__warnings_suppressed;
+ 	static $suppressCount = 0;
+ 	static $originalLevel = false;
+ 
+@@ -2208,6 +2210,7 @@ function wfSuppressWarnings( $end = fals
+ 			--$suppressCount;
+ 			if ( !$suppressCount ) {
+ 				error_reporting( $originalLevel );
++				$wf__warnings_suppressed = false;
+ 			}
+ 		}
+ 	} else {
+@@ -2217,6 +2220,7 @@ function wfSuppressWarnings( $end = fals
+ 				define( 'E_DEPRECATED', 8192 );
+ 			}
+ 			$originalLevel = error_reporting( E_ALL & ~( E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_DEPRECATED ) );
++			$wf__warnings_suppressed = true;
+ 		}
+ 		++$suppressCount;
+ 	}
+@@ -3362,7 +3366,7 @@ function wfSetupSession( $sessionId = fa
  		wfFixSessionID();
  	}
  	wfSuppressWarnings();
diff -Nru mediawiki-1.19.1/debian/patches/texvc_location.patch mediawiki-1.19.1/debian/patches/texvc_location.patch
--- mediawiki-1.19.1/debian/patches/texvc_location.patch	2012-05-31 00:43:48.000000000 +0200
+++ mediawiki-1.19.1/debian/patches/texvc_location.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
---- mediawiki-1.19.0.orig/includes/DefaultSettings.php
-+++ mediawiki-1.19.0/includes/DefaultSettings.php
-@@ -4002,8 +4002,11 @@
-  * the MediaWiki package and have latex, dvips, gs (ghostscript), andconvert
-  * (ImageMagick) installed and available in the PATH.
-  * Please see math/README for more information.
-+ * For Debian, install the mediawiki-math package and the following line will
-+ * use the system texvc binary
-  */
- $wgUseTeX = false;
-+$wgTexvc = '/usr/bin/texvc';
- 
- /* @} */ # end LaTeX }
- 
diff -Nru mediawiki-1.19.1/debian/rules mediawiki-1.19.1/debian/rules
--- mediawiki-1.19.1/debian/rules	2012-06-18 16:51:36.000000000 +0200
+++ mediawiki-1.19.1/debian/rules	2012-07-26 17:27:25.000000000 +0200
@@ -6,9 +6,14 @@
 
 override_dh_install:
 	dh_install
+	# Ugh. This is easier than patching, though.
+	chmod a+x debian/mediawiki/usr/share/mediawiki/includes/normal/UtfNormalTest2.php
 	# Now some tidying up is required
 	chmod a+x debian/mediawiki/usr/share/mediawiki/maintenance/postgres/compare_schemas.pl
 	chmod a+x debian/mediawiki/usr/share/mediawiki/maintenance/postgres/mediawiki_mysql2postgres.pl
+	chmod a+x debian/mediawiki/var/lib/mediawiki/extensions/ConfirmEdit/captcha.py
+	chmod a-x debian/mediawiki/usr/share/mediawiki/resources/jquery/images/marker.png
+	chmod a-x debian/mediawiki/var/lib/mediawiki/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js
 	find debian/mediawiki/usr/share/mediawiki -maxdepth 1 -mindepth 1 | grep -v "\(LocalSettings.php\|AdminSettings.php\|debian-scripts\|images\|extensions\|config\)" | \
 	while read i; do \
 		dh_link "`echo "$$i" | sed -e s#debian/mediawiki/##`" \
@@ -33,6 +38,7 @@
 	rm -f debian/mediawiki/usr/share/mediawiki/maintenance/cssjanus/COPYING
 	rm -f debian/mediawiki/usr/share/mediawiki/maintenance/cssjanus/LICENSE
 	rm -f debian/mediawiki/var/lib/mediawiki/extensions/ParserFunctions/COPYING
+	rm -f debian/mediawiki/var/lib/mediawiki/extensions/Nuke/COPYING
 	# Put debian version for mediawiki version..
 	sed -e "s#$(DEB_UPSTREAM_VERSION)#$(DEB_NOEPOCH_VERSION)#" \
 			-i debian/mediawiki/usr/share/mediawiki/includes/DefaultSettings.php
diff -Nru mediawiki-1.19.1/debian/watch mediawiki-1.19.1/debian/watch
--- mediawiki-1.19.1/debian/watch	2012-01-15 00:44:13.000000000 +0100
+++ mediawiki-1.19.1/debian/watch	2012-07-26 17:27:25.000000000 +0200
@@ -1,8 +1,3 @@
-# Example watch control file for uscan
-# Rename this file to "watch" and then you can run the "uscan" command
-# to check for upstream updates and more.
-# See uscan(1) for format
-
 # Compulsory line, this is a version 3 file
 version=3
 
-------------- next part --------------
diff -Nru mediawiki-extensions-2.7/debian/changelog mediawiki-extensions-2.8/debian/changelog
--- mediawiki-extensions-2.7/debian/changelog	2012-06-29 17:55:21.000000000 +0200
+++ mediawiki-extensions-2.8/debian/changelog	2012-08-30 11:09:35.000000000 +0200
@@ -1,3 +1,15 @@
+mediawiki-extensions (2.8) unstable; urgency=low
+
+  * Remove dependency of mw-ext-collection on various ECMAscript
+    libraries that apparently are available from MW core already
+    (as log message for r87847 suggests); enables testing transition
+  * Fix paths in RSS_Reader extension
+  * Quell those UNIQ‥QINU texts by fixing PageCSS to honour the API
+  * Fix content-less ul element in Collection extension
+  * Fix invalid XHTML in InputBox extension
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Wed, 08 Aug 2012 14:26:37 +0200
+
 mediawiki-extensions (2.7) unstable; urgency=low
 
   * Target MediaWiki 1.19
diff -Nru mediawiki-extensions-2.7/debian/control mediawiki-extensions-2.8/debian/control
--- mediawiki-extensions-2.7/debian/control	2012-06-29 17:55:21.000000000 +0200
+++ mediawiki-extensions-2.8/debian/control	2012-08-07 14:38:13.000000000 +0200
@@ -104,8 +104,7 @@
 
 Package: mediawiki-extensions-collection
 Architecture: all
-Depends: ${misc:Depends}, mediawiki-extensions-base,
- libjs-jquery, libjs-jquery-ui, libjs-json, php5-curl
+Depends: ${misc:Depends}, mediawiki-extensions-base, php5-curl
 Description: Extensions for MediaWiki -- Collection extension
  This package provides the mediawiki extensions for
  creating books using collections of pages.
diff -Nru mediawiki-extensions-2.7/debian/control.in mediawiki-extensions-2.8/debian/control.in
--- mediawiki-extensions-2.7/debian/control.in	2012-06-29 17:50:22.000000000 +0200
+++ mediawiki-extensions-2.8/debian/control.in	2012-08-07 14:38:13.000000000 +0200
@@ -104,8 +104,7 @@
 
 Package: mediawiki-extensions-collection
 Architecture: all
-Depends: ${misc:Depends}, mediawiki-extensions-base,
- libjs-jquery, libjs-jquery-ui, libjs-json, php5-curl
+Depends: ${misc:Depends}, mediawiki-extensions-base, php5-curl
 Description: Extensions for MediaWiki -- Collection extension
  This package provides the mediawiki extensions for
  creating books using collections of pages.
diff -Nru mediawiki-extensions-2.7/debian/mediawiki-extensions-collection.links mediawiki-extensions-2.8/debian/mediawiki-extensions-collection.links
--- mediawiki-extensions-2.7/debian/mediawiki-extensions-collection.links	2012-06-29 16:16:17.000000000 +0200
+++ mediawiki-extensions-2.8/debian/mediawiki-extensions-collection.links	2012-08-07 14:38:13.000000000 +0200
@@ -1,5 +1,2 @@
 usr/share/mediawiki-extensions/collection var/lib/mediawiki/extensions/Collection
 usr/share/mediawiki-extensions/collection/Collection.php etc/mediawiki-extensions/extensions-available/Collection.php
-usr/share/javascript/jquery-ui/jquery-ui.js usr/share/mediawiki-extensions/collection/collection/jquery.ui.js
-usr/share/javascript/jquery/jquery.js usr/share/mediawiki-extensions/collection/collection/jquery.js
-usr/share/javascript/json/json2.min.js usr/share/mediawiki-extensions/collection/collection/json2.js
diff -Nru mediawiki-extensions-2.7/debian/patches/fix_collection.patch mediawiki-extensions-2.8/debian/patches/fix_collection.patch
--- mediawiki-extensions-2.7/debian/patches/fix_collection.patch	2012-06-29 17:38:56.000000000 +0200
+++ mediawiki-extensions-2.8/debian/patches/fix_collection.patch	2012-07-26 15:14:37.000000000 +0200
@@ -1,7 +1,8 @@
-$Id: fix_collection.patch 344 2012-06-29 15:38:56Z tg $
+$Id: fix_collection.patch 352 2012-07-26 13:14:37Z tg $
 
 Fix Collection extension:
 • Invalid XHTML nesting
+• Empty ul element
 
 --- a/dist/mediawiki-extensions-collection/usr/share/mediawiki-extensions/collection/Collection.templates.php
 +++ b/dist/mediawiki-extensions-collection/usr/share/mediawiki-extensions/collection/Collection.templates.php
@@ -23,12 +24,39 @@
  				<input name="token" type="hidden" value="<?php echo htmlspecialchars( $GLOBALS['wgUser']->editToken() ) ?>" />
  				<input name="bookcmd" type="hidden" value="save_collection" />
  			</form>
-@@ -221,7 +221,7 @@ if ( count( $this->data['collection']['i
+@@ -215,13 +215,17 @@ if ( count( $this->data['collection']['i
+ </div>
+ <?php } ?>
+ 
+-<ul id="collectionList">
+-
+ <?php
++$ul_shown = false;
  foreach ( $this->data['collection']['items'] as $index => $item ) {
- 	if ( $item['type'] == 'article' ) { ?>
+-	if ( $item['type'] == 'article' ) { ?>
++	if ( $item['type'] == 'article' ) {
++		if (!$ul_shown) {
++			echo '<ul id="collectionList">' . "\n";
++			$ul_shown = true;
++		}
++?>
  	<li id="item-<?php echo intval( $index ) ?>" class="article">
 -		<a onclick="return coll_remove_item(<?php echo intval( $index ) ?>)" href="<?php echo htmlspecialchars( SkinTemplate::makeSpecialUrl( 'Book', array( 'bookcmd' => 'remove_item', 'index' => $index ) ) ) ?>" title="<?php $this->msg( 'coll-remove' ) ?>"><img src="<?php echo htmlspecialchars( $mediapath . "remove.png" ) ?>" width="10" height="10" alt="<?php $this->msg( 'coll-remove' ) ?>" /></a><a>
 +		<a onclick="return coll_remove_item(<?php echo intval( $index ) ?>)" href="<?php echo htmlspecialchars( SkinTemplate::makeSpecialUrl( 'Book', array( 'bookcmd' => 'remove_item', 'index' => $index ) ) ) ?>" title="<?php $this->msg( 'coll-remove' ) ?>"><img src="<?php echo htmlspecialchars( $mediapath . "remove.png" ) ?>" width="10" height="10" alt="<?php $this->msg( 'coll-remove' ) ?>" /></a>
  		<noscript>
  		<?php if ( $index == 0 ) { ?>
  			<img src="<?php echo htmlspecialchars( $mediapath . "trans.png" ) ?>" width="10" height="10" alt="" />
+@@ -269,8 +273,11 @@ foreach ( $this->data['collection']['ite
+ 		<a class="makeVisible" <?php if ( !isset( $this->data['is_ajax'] ) ) { echo 'style="display:none"'; } ?> onclick="<?php echo htmlspecialchars( 'return coll_rename_chapter(' . intval( $index ) . ', ' . Xml::encodeJsVar( $item['title'] ) . ')' ) ?>" href="javascript:void(0)">[<?php $this->msg( 'coll-rename' ) ?>]</a>
+ 	</li>
+ 	<?php }
+-} ?>
+-</ul>
++}
++if ($ul_shown) {
++	echo "</ul>\n";
++}
++?>
+ 
+ </div>
+ 
diff -Nru mediawiki-extensions-2.7/debian/patches/fix_inputbox.patch mediawiki-extensions-2.8/debian/patches/fix_inputbox.patch
--- mediawiki-extensions-2.7/debian/patches/fix_inputbox.patch	1970-01-01 01:00:00.000000000 +0100
+++ mediawiki-extensions-2.8/debian/patches/fix_inputbox.patch	2012-07-26 15:39:58.000000000 +0200
@@ -0,0 +1,100 @@
+$Id: fix_inputbox.patch 354 2012-07-26 13:39:58Z tg $
+
+Fix InputBox extension:
+• Invalid XHTML
+
+--- a/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/InputBox/InputBox.classes.php
++++ b/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/InputBox/InputBox.classes.php
+@@ -74,6 +74,7 @@ class InputBox {
+ 	 */
+ 	public function getSearchForm( $type ) {
+ 		global $wgContLang, $wgNamespaceAliases;
++		global $wgHtml5;
+ 
+ 		// Use button label fallbacks
+ 		if ( !$this->mButtonLabel ) {
+@@ -98,15 +99,19 @@ class InputBox {
+ 				'action' => SpecialPage::getTitleFor( 'Search' )->escapeLocalUrl(),
+ 			)
+ 		);
+-		$htmlOut .= Xml::element( 'input',
+-			array(
++		$tmpa = array(
+ 				'class' => 'searchboxInput',
+ 				'name' => 'search',
+ 				'type' => $this->mHidden ? 'hidden' : 'text',
+ 				'value' => $this->mDefaultText,
+ 				'placeholder' => $this->mPlaceholderText,
+ 				'size' => $this->mWidth,
+-			)
++			);
++		if (!$wgHtml5) {
++			unset($tmpa['placeholder']);
++		}
++		$htmlOut .= Xml::element( 'input',
++			$tmpa
+ 		);
+ 
+ 		if( $this->mPrefix != '' ){
+@@ -302,6 +307,7 @@ class InputBox {
+ 	 */
+ 	public function getCreateForm() {
+ 		global $wgScript;
++		global $wgHtml5;
+ 
+ 		if ( $this->mType == "comment" ) {
+ 			if ( !$this->mButtonLabel ) {
+@@ -387,15 +393,19 @@ class InputBox {
+ 				)
+ 			);
+ 		}
+-		$htmlOut .= Xml::openElement( 'input',
+-			array(
++		$tmpa = array(
+ 				'type' => $this->mHidden ? 'hidden' : 'text',
+ 				'name' => 'title',
+ 				'class' => 'createboxInput',
+ 				'value' => $this->mDefaultText,
+ 				'placeholder' => $this->mPlaceholderText,
+ 				'size' => $this->mWidth
+-			)
++			);
++		if (!$wgHtml5) {
++			unset($tmpa['placeholder']);
++		}
++		$htmlOut .= Xml::openElement( 'input',
++			$tmpa
+ 		);
+ 		$htmlOut .= $this->mBR;
+ 		$htmlOut .= Xml::openElement( 'input',
+@@ -418,6 +428,7 @@ class InputBox {
+ 	 */
+ 	public function getCommentForm() {
+ 		global $wgScript;
++		global $wgHtml5;
+ 
+ 		if ( !$this->mButtonLabel ) {
+ 				$this->mButtonLabel = wfMsgHtml( "postcomment" );
+@@ -460,15 +471,19 @@ class InputBox {
+ 				'value' => $this->mEditIntro,
+ 			)
+ 		);
+-		$htmlOut .= Xml::openElement( 'input',
+-			array(
++		$tmpa = array(
+ 				'type' => $this->mHidden ? 'hidden' : 'text',
+ 				'name' => 'preloadtitle',
+ 				'class' => 'commentboxInput',
+ 				'value' => $this->mDefaultText,
+ 				'placeholder' => $this->mPlaceholderText,
+ 				'size' => $this->mWidth
+-			)
++			);
++		if (!$wgHtml5) {
++			unset($tmpa['placeholder']);
++		}
++		$htmlOut .= Xml::openElement( 'input',
++			$tmpa
+ 		);
+ 		$htmlOut .= Xml::openElement( 'input',
+ 			array(
diff -Nru mediawiki-extensions-2.7/debian/patches/fix_pagecss.patch mediawiki-extensions-2.8/debian/patches/fix_pagecss.patch
--- mediawiki-extensions-2.7/debian/patches/fix_pagecss.patch	1970-01-01 01:00:00.000000000 +0100
+++ mediawiki-extensions-2.8/debian/patches/fix_pagecss.patch	2012-08-03 14:10:57.000000000 +0200
@@ -0,0 +1,16 @@
+$Id: fix_pagecss.patch 365 2012-08-03 12:10:57Z tg $
+
+Fix PageCSS extension:
+* parser hooks are expected to return strings, not void
+  => fixes those UNIQ...QINU things showing
+
+--- a/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/PageCSS/PageCSS.php
++++ b/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/PageCSS/PageCSS.php
+@@ -38,6 +38,7 @@ class CssHook {
+ </style>
+ EOT
+ 		);
++		return "";
+ 	}
+ 
+ }
diff -Nru mediawiki-extensions-2.7/debian/patches/fix_rssreader.patch mediawiki-extensions-2.8/debian/patches/fix_rssreader.patch
--- mediawiki-extensions-2.7/debian/patches/fix_rssreader.patch	2012-06-29 17:38:56.000000000 +0200
+++ mediawiki-extensions-2.8/debian/patches/fix_rssreader.patch	2012-08-01 16:55:32.000000000 +0200
@@ -1,9 +1,10 @@
-$Id: fix_rssreader.patch 344 2012-06-29 15:38:56Z tg $
+$Id: fix_rssreader.patch 364 2012-08-01 14:55:32Z tg $
 
 Fix RSS_Reader extension:
 * set $egCache to false by default, since we have no www-data writable
   cache directory, and I don't think we want it
 * add $egCacheDir which can be overridden by people who like to cache
+* fix installation path
 * fix rendering path to CSS
 * fix id="RSSMainBody" being used multiple times by making it into
   a CSS class that can be used for styling RSS output instead
@@ -28,7 +29,12 @@
  	'author' => 'Artem Kaznatcheev',
  	'description' => 'Adds <tt><rss></tt> tag',
  	'url' => 'http://www.mediawiki.org/wiki/Extension:RSS_Reader'
-@@ -37,7 +38,8 @@ $egRSSReaderPath  = $wgScriptPath."/exte
+@@ -33,11 +34,12 @@ $wgExtensionCredits['parserhook'][] = ar
+ 
+ ### Global Variables ###
+ //path to follow for server scripts
+-$egRSSReaderPath  = $wgScriptPath."/extensions/RSSReader";
++$egRSSReaderPath  = $wgScriptPath."/extensions/RSS_Reader";
  $egCacheTime      = 3600; //default cache time in seconds
  $egCacheTimeMin   = 1800; //minimum cache time in seconds
  $egCacheTimeMax   = 7200; //maximum cache time in seconds
@@ -55,7 +61,7 @@
 +    $wgOut->addLink(array(
 +	'rel' => 'stylesheet',
 +	'type' => 'text/css',
-+	'href' => "egRSSReaderPath/RSSReader.css?$wgRSSReaderExtVersion",
++	'href' => "$egRSSReaderPath/RSSReader.css?$wgRSSReaderExtVersion",
 +    ));
  
      if (!$width) {
@@ -131,4 +137,4 @@
 +http://www.mediawiki.org/w/index.php?title=Extension:RSS_Reader&oldid=390491
 +
 +
-+$Id: fix_rssreader.patch 344 2012-06-29 15:38:56Z tg $
++$Id: fix_rssreader.patch 364 2012-08-01 14:55:32Z tg $
diff -Nru mediawiki-extensions-2.7/debian/patches/series mediawiki-extensions-2.8/debian/patches/series
--- mediawiki-extensions-2.7/debian/patches/series	2012-06-29 17:38:56.000000000 +0200
+++ mediawiki-extensions-2.8/debian/patches/series	2012-08-03 14:10:57.000000000 +0200
@@ -1,10 +1,12 @@
 fix_472283.patch
 fix_collection.patch
-fix_fckeditor.patch
-fix_graphviz.patch
 fix_createbox.patch
+fix_fckeditor.patch
 fix_footnote.patch
+fix_graphviz.patch
+fix_inputbox.patch
+fix_interwiki.patch
 fix_languageselector.patch
+fix_pagecss.patch
 fix_rssreader.patch
-fix_interwiki.patch
 news_dont_break_feeds.patch
-------------- next part --------------
Removed: lib/vendor/coolfieldset/js/jquery.js
Removed: lib/vendor/jquery/jquery-1.4.2.min.js
Removed: lib/vendor/jquery-storage/jquery.Storage.js
Removed: lib/vendor/jquery-ui/js/jquery-ui-1.8.17.custom.min.js
Removed: plugins/wiki/www/themes/Sidebar/hyperwiki.jar
Removed: plugins/wiki/www/themes/default/yuicompressor-2.4.7.jar
Removed: plugins/mediawiki/www/frame.php
Replaced: plugins/mediawiki/mediawiki-skin/FusionForge.php.reference
diff -Nru fusionforge-5.2~rc1/common/include/config-vars.php fusionforge-5.2~rc1wheezy1/common/include/config-vars.php
--- fusionforge-5.2~rc1/common/include/config-vars.php	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/common/include/config-vars.php	2012-08-06 11:01:06.000000000 +0200
@@ -255,12 +255,6 @@
 	forge_set_config_item_bool ('use_ssl', 'scmsvn') ;
 }
 
-// Mediawiki plugin
-if (isset ($sys_use_mwframe)) {
-	forge_define_config_item ('use_frame', 'mediawiki', $sys_use_mwframe ? 1 : 0) ;
-	forge_set_config_item_bool ('use_frame', 'mediawiki') ;
-}
-
 // Mantis plugin
 if (file_exists ($gfconfig.'plugins/mantis/config.php')) {
 	require_once $gfconfig.'plugins/mantis/config.php' ;
diff -Nru fusionforge-5.2~rc1/common/include/pre.php fusionforge-5.2~rc1wheezy1/common/include/pre.php
--- fusionforge-5.2~rc1/common/include/pre.php	2012-06-28 11:02:39.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/common/include/pre.php	2012-08-06 11:06:57.000000000 +0200
@@ -348,12 +348,15 @@
 			$LUSER =& session_get_user();
 			$use_tooltips = $LUSER->usesTooltips();
 			header ('Cache-Control: private');
-			require_once forge_get_config('themes_root').'/'.$LUSER->setUpTheme().'/Theme.class.php';
+			$x_theme = $LUSER->setUpTheme();
 		} else {
 			$use_tooltips = 1;
-			require_once forge_get_config('themes_root').'/'.forge_get_config('default_theme').'/Theme.class.php';
+			$x_theme = forge_get_config('default_theme');
 		}
+		require_once forge_get_config('themes_root').'/'.$x_theme.'/Theme.class.php';
 		$HTML = new Theme () ;
+		$HTML->_theme = $x_theme;
+		unset($x_theme);
 	} else {		     // Script run from cron or a command line
 		require_once $gfcommon.'include/squal_exit.php';
 	}
diff -Nru fusionforge-5.2~rc1/debian/changelog fusionforge-5.2~rc1wheezy1/debian/changelog
--- fusionforge-5.2~rc1/debian/changelog	2012-06-28 20:16:27.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/debian/changelog	2012-08-30 11:11:39.000000000 +0200
@@ -1,3 +1,19 @@
+fusionforge (5.2~rc1wheezy1) unstable; urgency=low
+
+  * Since this package was accidentally uploaded as native package,
+    and there is a large delta to what’s in upstream SVN right now,
+    upload this deliberately as native package now.
+  * Add myself to uploaders
+  * Opt out of Apport reports
+  * Integrate with MediaWiki 1.19 (Closes: #679932)
+  * Update versioned Depends on MediaWiki
+  * Move wikis to new (as of 2010-03-19, possibly by accident) data path
+  * Check image upload is enabled before trying to do so (Closes: #679521)
+  * Unbreak and silence the MediaWiki nightly dump cronjob (Closes: #680165)
+  * Remove minified ECMAscript and binary *.jar from the source
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Thu, 30 Aug 2012 11:06:02 +0200
+
 fusionforge (5.2~rc1-5) unstable; urgency=low
 
   * Updated Debconf translations for Portuguese (thanks to Américo
diff -Nru fusionforge-5.2~rc1/debian/control fusionforge-5.2~rc1wheezy1/debian/control
--- fusionforge-5.2~rc1/debian/control	2012-06-02 18:02:24.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/debian/control	2012-08-08 14:29:48.000000000 +0200
@@ -2,12 +2,13 @@
 Section: devel
 Priority: optional
 Maintainer: Roland Mas <lolando at debian.org>
-Uploaders: Christian Bayle <bayle at debian.org>, Olivier Berger <obergix at debian.org>
+Uploaders: Christian Bayle <bayle at debian.org>, Olivier Berger <obergix at debian.org>, Thorsten Glaser <tg at mirbsd.de>
 Build-Depends-Indep: sharutils, docbook-to-man, devscripts, gettext, isoquery, iso-codes
 Build-Depends: debhelper (>= 7), quilt (>= 0.40), perl, confget
 Standards-Version: 3.9.2
 Homepage: http://fusionforge.org/
 Vcs-Svn: svn://scm.fusionforge.org/scmrepos/svn/fusionforge/trunk
+XBS-Apport: No
 
 Package: fusionforge-standard
 Architecture: all
@@ -464,7 +465,7 @@
 
 Package: fusionforge-plugin-mediawiki
 Architecture: all
-Depends: gforge-common (>= 4.8), gforge-db-postgresql (>= 4.8) | gforge-db, gforge-web-apache2 (>= 4.8) | gforge-web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15.5-10~), php5-cli, php5-gd, ${misc:Depends}
+Depends: gforge-common (>= 4.8), gforge-db-postgresql (>= 4.8) | gforge-db, gforge-web-apache2 (>= 4.8) | gforge-web, postgresql-contrib, mediawiki (>= 1:1.19.1-2~), php5-cli, php5-gd, ${misc:Depends}
 Provides: gforge-plugin-mediawiki
 Conflicts: gforge-plugin-mediawiki (<< 5.0.51-2)
 Replaces: gforge-plugin-mediawiki (<< 5.0.51-2)
diff -Nru fusionforge-5.2~rc1/etc/httpd.conf.d/plugin-mediawiki.inc fusionforge-5.2~rc1wheezy1/etc/httpd.conf.d/plugin-mediawiki.inc
--- fusionforge-5.2~rc1/etc/httpd.conf.d/plugin-mediawiki.inc	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/etc/httpd.conf.d/plugin-mediawiki.inc	2012-08-16 11:54:53.000000000 +0200
@@ -1,7 +1,8 @@
 RedirectMatch 301 ^(/plugins/mediawiki/wiki/[-a-zA-Z0-9_]*)/*$ $1/index.php
 AliasMatch ^/plugins/mediawiki/wiki/[-a-zA-Z0-9_]*/api.php {core/source_path}/www/plugins/mediawiki/api.php
 AliasMatch ^/plugins/mediawiki/wiki/[-a-zA-Z0-9_]*/index.php {core/source_path}/www/plugins/mediawiki/index.php
-AliasMatch ^/plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/images/(.*) {core/data_path}/plugins/mediawiki/wikidata/$1/images/$2
+AliasMatch ^/plugins/mediawiki/wiki/[-a-zA-Z0-9_]*/load.php {core/source_path}/www/plugins/mediawiki/load.php
+AliasMatch ^/plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/images/(.*) {core/data_path}/plugins/mediawiki/projects/$1/images/$2
 AliasMatch ^/plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/skins/(.*) {mediawiki/src_path}/skins/$2
 AliasMatch ^/plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/extensions/(.*) {mediawiki/src_path}/extensions/$2
 AliasMatch ^/plugins/mediawiki/dumps/(.*)$ {core/data_path}/plugins/mediawiki/dumps/$1
diff -Nru fusionforge-5.2~rc1/packaging/control/000source fusionforge-5.2~rc1wheezy1/packaging/control/000source
--- fusionforge-5.2~rc1/packaging/control/000source	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/packaging/control/000source	2012-08-07 10:15:15.000000000 +0200
@@ -2,9 +2,10 @@
 Section: devel
 Priority: optional
 Maintainer: Roland Mas <lolando at debian.org>
-Uploaders: Christian Bayle <bayle at debian.org>, Olivier Berger <obergix at debian.org>
+Uploaders: Christian Bayle <bayle at debian.org>, Olivier Berger <obergix at debian.org>, Thorsten Glaser <tg at mirbsd.de>
 Build-Depends-Indep: sharutils, docbook-to-man, devscripts, gettext, isoquery, iso-codes
 Build-Depends: debhelper (>= 7), quilt (>= 0.40), perl, confget
 Standards-Version: 3.9.2
 Homepage: http://fusionforge.org/
 Vcs-Svn: svn://scm.fusionforge.org/scmrepos/svn/fusionforge/trunk
+XBS-Apport: No
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/README.codendi fusionforge-5.2~rc1wheezy1/plugins/mediawiki/README.codendi
--- fusionforge-5.2~rc1/plugins/mediawiki/README.codendi	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/README.codendi	2012-08-24 11:51:00.000000000 +0200
@@ -41,4 +41,4 @@
 #,16,31,46 * * * * root [ -x $MWCRON/create-imagedirs.php ] && $PHP $MWCRON/create-imagedirs.php
 
 # Create wiki XML dumps every night
-#5 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/cronjobs/dump-wikis.php
+#5 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/dump-wikis.php
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/bin/mw-wrapper.php fusionforge-5.2~rc1wheezy1/plugins/mediawiki/bin/mw-wrapper.php
--- fusionforge-5.2~rc1/plugins/mediawiki/bin/mw-wrapper.php	2012-05-31 09:42:32.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/bin/mw-wrapper.php	2012-08-24 10:54:21.000000000 +0200
@@ -27,16 +27,33 @@
  * Wrapper to call MediaWiki maintenance scripts on a forge project wiki.
  */
 
-if (count ($argv) < 3) {
-        echo "Usage: .../mw-wrapper.php <project> <script> [ arguments... ]
+function usage($rv=1) {
+        echo "Usage: .../mw-wrapper.php [-L] <project> <script> [ arguments... ]
 For instance: .../mw-wrapper.php siteadmin importDump.php /tmp/wikidump.xml
               .../mw-wrapper.php siteadmin rebuildrecentchanges.php
 " ;
-        exit (1) ;
+        exit($rv);
+}
+
+if (count($argv) < 3) {
+	usage();
 }
 
 $wrapperscript = array_shift ($argv) ;
 $fusionforgeproject = array_shift ($argv) ;
+if ($fusionforgeproject == "-L") {
+	if (count($argv) < 2) {
+		usage();
+	}
+	$fusionforgeproject = array_shift($argv);
+	$preload_localsettings = true;
+} else {
+	/*
+	 * saves some warnings
+	 * works if the mwscript includes e.g. commandLine.inc
+	 */
+	$preload_localsettings = false;
+}
 $mwscript = array_shift ($argv) ;
 
 require_once dirname(__FILE__).'/../../../common/include/env.inc.php';
@@ -66,14 +83,19 @@
 register_shutdown_function('ffmw_wrapper_fixup_searchpath',
     forge_get_config('database_user'));
 
-define( "MEDIAWIKI", true );
-require_once $gfwww.'plugins/mediawiki/LocalSettings.php' ;
+$ff_localsettings = forge_get_config('source_path') .
+    '/www/plugins/mediawiki/LocalSettings.php';
+if ($preload_localsettings) {
+	define("MEDIAWIKI", true);
+	require_once($ff_localsettings);
+}
 
 $src_path = forge_get_config('src_path', 'mediawiki');
 $mwscript = $src_path . '/maintenance/'.$mwscript ;
 
-array_unshift ($argv, $mwscript, '--conf', $fusionforge_basedir . '/plugins/mediawiki/www/LocalSettings.php') ;
+array_unshift($argv, $mwscript, '--conf', $ff_localsettings);
 
-while (@ob_end_flush());
+while (@ob_end_flush())
+	/* nothing */;
 
 require_once $mwscript ;
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/debian/plugin-mediawiki.postinst fusionforge-5.2~rc1wheezy1/plugins/mediawiki/debian/plugin-mediawiki.postinst
--- fusionforge-5.2~rc1/plugins/mediawiki/debian/plugin-mediawiki.postinst	2012-06-13 17:58:24.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/debian/plugin-mediawiki.postinst	2012-08-16 11:54:53.000000000 +0200
@@ -10,6 +10,60 @@
     done
 }
 
+# Accomodate wikidata path change
+move_mediawikis() {
+	local a b found
+
+	# Determine whether there are any wikis to move
+	found=0
+	for a in /var/lib/gforge/plugins/mediawiki/wikidata/*; do
+		test -d "$a/." || continue
+		found=1
+		break
+	done
+	test $found = 1 || {
+		rmdir /var/lib/gforge/plugins/mediawiki/wikidata || \
+		    echo >&2 "WARNING: Could not delete /var/lib/gforge/plugins/mediawiki/wikidata"
+		return 0
+	}
+
+	# Move wikis
+	(
+		cd /var/lib/gforge/plugins/mediawiki/wikidata
+		for a in *; do
+			test -d "$a/." || {
+				echo >&2 "WARNING: Non-directory /var/lib/gforge/plugins/mediawiki/wikidata/$a not migrated!"
+				continue
+			}
+			# Conflict?
+			b=../projects/$a
+			if test -e "$b"; then
+				b=$(mktemp "/var/lib/gforge/plugins/mediawiki/projects/$a-olddata-XXXXXXXXXX") || {
+					echo >&2 "Could not create temporary file."
+					exit 1
+				}
+				rm -f "$b"
+			fi
+			# Move.
+			mv "$a" "$b" || \
+			    echo >&2 "WARNING: Could not move away /var/lib/gforge/plugins/mediawiki/wikidata/$a, investigate manually!"
+		done
+	)
+
+	# Look again for remnants
+	found=0
+	for a in /var/lib/gforge/plugins/mediawiki/wikidata/*; do
+		test -e "$a" || continue
+		echo >&2 "WARNING: Non-moved files in /var/lib/gforge/plugins/mediawiki/wikidata/ exist. Investigate manually!"
+		found=1
+		break
+	done
+	test $found = 1 || \
+	    rmdir /var/lib/gforge/plugins/mediawiki/wikidata || \
+	    echo >&2 "Could not delete empty /var/lib/gforge/plugins/mediawiki/wikidata"
+	return 0
+}
+
 case "$1" in
     triggered)
 	if [ "$2" = /usr/share/mediawiki/maintenance/postgres ] ; then
@@ -18,6 +72,11 @@
 	;;
     
     configure)
+	# Data path changed
+	test -d /var/lib/gforge/plugins/mediawiki/wikidata/. && \
+	    test -d /var/lib/gforge/plugins/mediawiki/projects/. && \
+	    move_mediawikis
+
 	# Run plugin specific db upgrade
 	if [ -f /usr/share/@OLDPACKAGE@/plugins/@PLUGSHORTNAME@/bin/db-upgrade.pl ]
 	then
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki	2012-08-24 10:54:21.000000000 +0200
@@ -17,4 +17,4 @@
 1,16,31,46 * * * * root [ -x $MWCRON/create-imagedirs.php ] && $PHP $MWCRON/create-imagedirs.php
 
 # Create wiki XML dumps every night
-55 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/cronjobs/dump-wikis.php
+55 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/dump-wikis.php
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/include/mediawikiPlugin.class.php fusionforge-5.2~rc1wheezy1/plugins/mediawiki/include/mediawikiPlugin.class.php
--- fusionforge-5.2~rc1/plugins/mediawiki/include/mediawikiPlugin.class.php	2012-06-19 17:17:40.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/include/mediawikiPlugin.class.php	2012-08-06 11:01:06.000000000 +0200
@@ -31,8 +31,6 @@
 forge_define_config_item('master_path', 'mediawiki', '$mediawiki/mwdata_path/master');
 forge_define_config_item('enable_uploads', 'mediawiki', false);
 forge_set_config_item_bool('enable_uploads', 'mediawiki');
-forge_define_config_item('use_frame', 'mediawiki', false);
-forge_set_config_item_bool('use_frame', 'mediawiki');
 }
 
 class MediaWikiPlugin extends Plugin {
@@ -89,11 +87,7 @@
 			}
 			if ( $project->usesPlugin ( $this->name ) ) {
 				$params['TITLES'][]=$this->text;
-				if (forge_get_config('use_frame', 'mediawiki')){
-					$params['DIRS'][]=util_make_url('/plugins/mediawiki/frame.php?group_id=' . $project->getID()) ;
-				} else {
 					$params['DIRS'][]=util_make_url('/plugins/mediawiki/wiki/'.$project->getUnixName().'/index.php');
-				}
                 $params['ADMIN'][]='';
                 $params['TOOLTIPS'][] = _('Mediawiki Space');
 			}
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php	2012-08-07 10:53:48.000000000 +0200
@@ -20,33 +20,48 @@
  */
 class SkinFusionForge extends SkinTemplate {
 	/** Using fusionforge. */
-	function initPage( OutputPage $out ) {
-		parent::initPage( $out );
-		$this->skinname  = 'fusionforge';
-		$this->stylename = 'fusionforge';
-		$this->template  = 'FusionForgeTemplate';
+	var $skinname = 'fusionforge', $stylename = 'fusionforge',
+		$template = 'FusionForgeTemplate', $useHeadElement = true;
 
+	function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
+		$tc = new $classname();
+
+		$tc->params = array();
+		if (($tc->project = $project =
+		    group_get_object_by_name($GLOBALS['fusionforgeproject']))) {
+			$tc->params['group'] = $GLOBALS['group_id'] =
+			    $project->getID();
+			$tc->params['toptab'] = 'mediawiki';
+		}
+
+		return $tc;
 	}
 
+	/**
+	 * @param $out OutputPage
+	 */
 	function setupSkinUserCss( OutputPage $out ) {
 		global $wgHandheldStyle;
 
+		/* add FusionForge styles */
+		foreach ($GLOBALS['HTML']->stylesheets as $sheet) {
+			$out->addStyle($sheet['css'], $sheet['media']);
+		}
+
 		parent::setupSkinUserCss( $out );
 
-		// Append to the default screen common & print styles...
-		$out->addStyle( 'monobook/main.css', 'screen' );
-		$out->addStyle( 'fusionforge/fusionforge.css', 'screen' );
+		$out->addModuleStyles( 'skins.monobook' );
+
+		// Ugh. Can't do this properly because $wgHandheldStyle may be a URL
 		if( $wgHandheldStyle ) {
 			// Currently in testing... try 'chick/main.css'
 			$out->addStyle( $wgHandheldStyle, 'handheld' );
 		}
 
-		$out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
-		$out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' );
+		// TODO: Migrate all of these
 		$out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
 		$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
 
-		$out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
 	}
 }
 
@@ -54,8 +69,10 @@
  * @todo document
  * @ingroup Skins
  */
-class FusionForgeTemplate extends QuickTemplate {
-	var $skin;
+class FusionForgeTemplate extends BaseTemplate {
+
+	var $project = false;
+
 	/**
 	 * Template filter callback for FusionForge skin.
 	 * Takes an associative array of data set from a SkinTemplate-based
@@ -65,243 +82,210 @@
 	 * @access private
 	 */
 	function execute() {
-		global $wgRequest, $sysDTDs;
-		$this->skin = $skin = $this->data['skin'];
-		$action = $wgRequest->getText( 'action' );
+		global $wgHtml5;
 
 		// Suppress warnings to prevent notices about missing indexes in $this->data
 		wfSuppressWarnings();
 
-		echo $sysDTDs['transitional']['doctype']; ?>
-<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
-	foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
-		?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
-	} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
-	<head>
-		<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
-		<?php $this->html('headlinks') ?>
-		<title><?php $this->text('pagetitle') ?></title>
-        	<!-- FUSIONFORGE Stylesheet BEGIN -->
-		<?php if (!forge_get_config('use_frame', 'mediawiki') && !$this->data['printable']){
-		$GLOBALS['HTML']->headerFavIcon();
-		$GLOBALS['HTML']->headerRSS();
-		$GLOBALS['HTML']->headerSearch();
-	} ?>
-		<?php if (!forge_get_config('use_frame', 'mediawiki') && !$this->data['printable']){ $GLOBALS['HTML']->headerCSS(); } ?>
-        	<!-- FUSIONFORGE Stylesheet END -->
-		<?php $this->html('csslinks') ?>
-
-		<!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
-		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-
-		<?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
-
-		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
-		<!-- Head Scripts -->
-<?php $this->html('headscripts') ?>
-<?php	if($this->data['jsvarurl']) { ?>
-		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl') ?>"><!-- site js --></script>
-<?php	} ?>
-<?php	if($this->data['pagecss']) { ?>
-		<style type="text/css"><?php $this->html('pagecss') ?></style>
-<?php	}
-		if($this->data['usercss']) { ?>
-		<style type="text/css"><?php $this->html('usercss') ?></style>
-<?php	}
-		if($this->data['userjs']) { ?>
-		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
-<?php	}
-		if($this->data['userjsprev']) { ?>
-		<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
-<?php	}
-		if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
-        	<!-- FUSIONFORGE Stylesheet BEGIN -->
-		<?php if (!forge_get_config('use_frame', 'mediawiki') && !$this->data['printable']){ $GLOBALS['HTML']->headerCSS(); } ?>
-        	<!-- FUSIONFORGE Stylesheet END -->
-	</head>
-<body id="mydoc" <?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
-<?php if($this->data['body_onload']) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
- class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
-        <!-- FUSIONFORGE BodyHeader BEGIN -->
-        <?php
-	if (!forge_get_config('use_frame', 'mediawiki') && !$this->data['printable']){
-        	$project=group_get_object_by_name($GLOBALS['fusionforgeproject']);
-        	if ($project) {
-                	$GLOBALS['group_id']=$project->getID();
-                	$params['group']=$GLOBALS['group_id'];
-                	$params['toptab']='mediawiki';
-                	$params['h1']='';
-                	$params['title']='';
-                	$GLOBALS['HTML']->bodyHeader($params);
-        	}
-	}
-        ?>
-        <!-- FUSIONFORGE BodyHeader END -->
-	<div id="globalWrapper">
-		<div id="column-content">
-	<div id="content">
-		<a name="top" id="top"></a>
-		<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
-		<h1 id="firstHeading" class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
-		<div id="bodyContent">
-			<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
-			<div id="contentSub"><?php $this->html('subtitle') ?></div>
-			<?php if($this->data['undelete']) { ?><div id="contentSub2"><?php     $this->html('undelete') ?></div><?php } ?>
-			<?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk')  ?></div><?php } ?>
-			<?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
-			<!-- start content -->
-			<?php $this->html('bodytext') ?>
-			<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
-			<!-- end content -->
-			<?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
-			<div class="visualClear"></div>
-		</div>
-	</div>
-		</div>
-		<div id="column-one">
-	<div id="p-cactions" class="portlet">
-		<h5><?php $this->msg('views') ?></h5>
-		<div class="pBody">
-			<ul>
-	<?php		foreach($this->data['content_actions'] as $key => $tab) {
-					echo '
-				 <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
-					if( $tab['class'] ) {
-						echo ' class="'.htmlspecialchars($tab['class']).'"';
-					}
-					echo'><a href="'.htmlspecialchars($tab['href']).'"';
-					# We don't want to give the watch tab an accesskey if the
-					# page is being edited, because that conflicts with the
-					# accesskey on the watch checkbox.  We also don't want to
-					# give the edit tab an accesskey, because that's fairly su-
-					# perfluous and conflicts with an accesskey (Ctrl-E) often
-					# used for editing in Safari.
-				 	if( in_array( $action, array( 'edit', 'submit' ) )
-				 	&& in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
-				 		echo $skin->tooltip( "ca-$key" );
-				 	} else {
-				 		echo $skin->tooltipAndAccesskey( "ca-$key" );
-				 	}
-				 	echo '>'.htmlspecialchars($tab['text']).'</a></li>';
-				} ?>
-			</ul>
-		</div>
+		$this->html( 'headelement' );
+
+		echo "\n<!-- FUSIONFORGE BodyHeader BEGIN -->\n";
+		$GLOBALS['HTML']->bodyHeader($this->params);
+		echo "<div id=\"ff-mw-wrapper\"><div style=\"font-size:x-small;\">\n";
+		echo "<!-- FUSIONFORGE BodyHeader END -->\n";
+
+?><div id="globalWrapper">
+<div id="column-content"><div id="content">
+	<a id="top"></a>
+	<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+
+	<h1 id="firstHeading" class="firstHeading"><span<?php if ($wgHtml5) echo ' dir="auto"'; ?>><?php $this->html('title') ?></span></h1>
+	<div id="bodyContent" class="mw-body">
+		<div id="siteSub"><?php $this->msg('tagline') ?></div>
+		<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
+<?php if($this->data['undelete']) { ?>
+		<div id="contentSub2"><?php $this->html('undelete') ?></div>
+<?php } ?><?php if($this->data['newtalk'] ) { ?>
+		<div class="usermessage"><?php $this->html('newtalk')  ?></div>
+<?php } ?><?php if($this->data['showjumplinks']) { ?>
+		<div id="jump-to-nav" class="mw-jump"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
+<?php } ?>
+		<!-- start content -->
+<?php $this->html('bodytext') ?>
+		<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
+		<!-- end content -->
+		<?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
+		<div class="visualClear"></div>
 	</div>
+</div></div>
+<div id="column-one"<?php $this->html('userlangattributes')  ?>>
+<?php $this->cactions(); ?>
 	<div class="portlet" id="p-personal">
 		<h5><?php $this->msg('personaltools') ?></h5>
 		<div class="pBody">
-			<ul>
-<?php 			foreach($this->data['personal_urls'] as $key => $item) { ?>
-				<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
-					if (isset($item['active']) && $item['active']) { ?> class="active"<?php } ?>><a href="<?php
-				echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
-				if(!empty($item['class'])) { ?> class="<?php
-				echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
-				echo htmlspecialchars($item['text']) ?></a></li>
-<?php			} ?>
-			</ul>
+<?php
+	$ul_shown = false;
+	foreach ($this->getPersonalTools() as $key => $item) {
+		if (!$ul_shown) {
+?>
+			<ul<?php $this->html('userlangattributes') ?>>
+<?php
+			$ul_shown = true;
+		}
+		echo "\n" . $this->makeListItem($key, $item);
+	}
+	if ($ul_shown) {
+		echo "\n</ul>\n";
+	}
+?>
 		</div>
 	</div>
 	<div class="portlet" id="p-logo">
-		<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
-			?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
-			echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
+<?php
+			echo Html::element( 'a', array(
+				'href' => $this->data['nav_urls']['mainpage']['href'],
+				'style' => "background-image: url({$this->data['logopath']});" )
+				+ Linker::tooltipAndAccesskeyAttribs('p-logo') ); ?>
+
 	</div>
-	<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
 <?php
-		$sidebar = $this->data['sidebar'];
-		if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
-		if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
-		if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
-		foreach ($sidebar as $boxName => $cont) {
-			if ( $boxName == 'SEARCH' ) {
-				$this->searchBox();
-			} elseif ( $boxName == 'TOOLBOX' ) {
-				$this->toolbox();
-			} elseif ( $boxName == 'LANGUAGES' ) {
-				$this->languageBox();
-			} else {
-				$this->customBox( $boxName, $cont );
-			}
-		}
+	$this->renderPortals( $this->data['sidebar'] );
 ?>
-		</div><!-- end of the left (by default at least) column -->
-			<div class="visualClear"></div>
-			<div id="footer">
-<?php
-		if($this->data['poweredbyico']) { ?>
-				<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
-<?php 	}
-		if($this->data['copyrightico']) { ?>
-				<div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
-<?php	}
+</div><!-- end of the left (by default at least) column -->
+<div class="visualClear"></div>
+<?php
+	$validFooterIcons = $this->getFooterIcons( "icononly" );
+	$validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
+
+	if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?>
+<div id="footer"<?php $this->html('userlangattributes') ?>>
+<?php
+		$footerEnd = '</div>';
+	} else {
+		$footerEnd = '';
+	}
+	foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?>
+	<div id="f-<?php echo htmlspecialchars($blockName); ?>ico">
+<?php foreach ( $footerIcons as $icon ) { ?>
+		<?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
+
+<?php }
+?>
+	</div>
+<?php }
 
-		// Generate additional footer links
-		$footerlinks = array(
-			'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
-			'privacy', 'about', 'disclaimer', 'tagline',
-		);
-		$validFooterLinks = array();
-		foreach( $footerlinks as $aLink ) {
-			if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-				$validFooterLinks[] = $aLink;
-			}
-		}
 		if ( count( $validFooterLinks ) > 0 ) {
-?>			<ul id="f-list">
+?>	<ul id="f-list">
+<?php
+			foreach( $validFooterLinks as $aLink ) { ?>
+		<li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
 <?php
-			foreach( $validFooterLinks as $aLink ) {
-				if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-?>					<li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
-<?php 			}
 			}
 ?>
-			</ul>
+	</ul>
 <?php	}
+echo $footerEnd;
 ?>
-		</div>
+
 </div>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
-<?php if ( $this->data['debug'] ): ?>
-<!-- Debug output:
-<?php $this->text( 'debug' ); ?>
-
--->
-<?php endif; ?>
-        <!-- FUSIONFORGE Footer BEGIN -->
-<?php	if (!forge_get_config('use_frame', 'mediawiki') && !$this->data['printable']){
-		$GLOBALS['HTML']->footer($params);
-	} else { ?>
-</body></html>
-<?php	} ?>
 <?php
-	wfRestoreWarnings();
+		$this->printTrail();
+		echo "</div></div>\n";
+		$GLOBALS['HTML']->footer($this->params);
+		wfRestoreWarnings();
 	} // end of execute() method
 
 	/*************************************************************************************************/
+
+	protected function renderPortals( $sidebar ) {
+		if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
+		if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+		if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+
+		if (session_loggedin()) {
+			$efbox_log_text = _('Log Out');
+			$efbox_log_link = "/account/logout.php?return_to=" .
+			    urlencode(getStringFromServer('REQUEST_URI'));
+		} else {
+			$efbox_log_text = _('Log In');
+			$efbox_log_link = "/account/login.php?return_to=" .
+			    urlencode(getStringFromServer('REQUEST_URI'));
+		}
+		$efbox_prj_link = "/projects/" .
+		    $this->project->getUnixName() . "/";
+		$this->customBox("FusionForge", array(
+			"project" => array(
+				"id" => "fusionforge_project",
+				"href" => $efbox_prj_link,
+				"text" => _("Project Summary"),
+			    ),
+			"loginout" => array(
+				"id" => "fusionforge_loginout",
+				"href" => $efbox_log_link,
+				"text" => $efbox_log_text,
+			    ),
+		    ));
+
+		foreach( $sidebar as $boxName => $content ) {
+			if ( $content === false )
+				continue;
+
+			if ( $boxName == 'SEARCH' ) {
+				$this->searchBox();
+			} elseif ( $boxName == 'TOOLBOX' ) {
+				$this->toolbox();
+			} elseif ( $boxName == 'LANGUAGES' ) {
+				$this->languageBox();
+			} else {
+				$this->customBox( $boxName, $content );
+			}
+		}
+	}
+
 	function searchBox() {
 		global $wgUseTwoButtonsSearchForm;
 ?>
 	<div id="p-search" class="portlet">
 		<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
 		<div id="searchBody" class="pBody">
-			<form action="<?php $this->text('wgScript') ?>" id="searchform"><div>
+			<form action="<?php $this->text('wgScript') ?>" id="searchform">
 				<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
-				<input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
-					if( isset( $this->data['search'] ) ) {
-						?> value="<?php $this->text('search') ?>"<?php } ?> />
-				<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?> 
-				<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
+				<?php echo $this->makeSearchInput(array( "id" => "searchInput" )); ?>
 
-				<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
+				<?php echo $this->makeSearchButton("go", array( "id" => "searchGoButton", "class" => "searchButton" ));
+				if ($wgUseTwoButtonsSearchForm): ?> 
+				<?php echo $this->makeSearchButton("fulltext", array( "id" => "mw-searchButton", "class" => "searchButton" ));
+				else: ?>
 
-			</div></form>
+				<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php
+				endif; ?>
+
+			</form>
 		</div>
 	</div>
 <?php
 	}
 
+	/**
+	 * Prints the cactions bar.
+	 * Shared between MonoBook and Modern
+	 */
+	function cactions() {
+?>
+	<div id="p-cactions" class="portlet">
+		<h5><?php $this->msg('views') ?></h5>
+		<div class="pBody">
+			<ul><?php
+				foreach($this->data['content_actions'] as $key => $tab) {
+					echo '
+				' . $this->makeListItem( $key, $tab );
+				} ?>
+
+			</ul>
+		</div>
+	</div>
+<?php
+	}
 	/*************************************************************************************************/
 	function toolbox() {
 ?>
@@ -310,51 +294,13 @@
 		<div class="pBody">
 			<ul>
 <?php
-		if($this->data['notspecialpage']) { ?>
-				<li id="t-whatlinkshere"><a href="<?php
-				echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
-				?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
-<?php
-			if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
-				<li id="t-recentchangeslinked"><a href="<?php
-				echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
-				?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
-<?php 		}
-		}
-		if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
-			<li id="t-trackbacklink"><a href="<?php
-				echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
-				?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
-<?php 	}
-		if($this->data['feeds']) { ?>
-			<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
-					?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
-					echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a> 
-					<?php } ?></li><?php
-		}
+		foreach ( $this->getToolbox() as $key => $tbitem ) { ?>
+				<?php echo $this->makeListItem($key, $tbitem); ?>
 
-		foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
-
-			if($this->data['nav_urls'][$special]) {
-				?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
-				?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
-<?php		}
-		}
-
-		if(!empty($this->data['nav_urls']['print']['href'])) { ?>
-				<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
-				?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
-		}
-
-		if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
-				<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
-				?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
-		} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
-				<li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
+<?php
 		}
-
-		wfRunHooks( 'FusionForgeTemplateToolboxEnd', array( &$this ) );
-		wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
+		wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
+		wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
 ?>
 			</ul>
 		</div>
@@ -367,12 +313,12 @@
 		if( $this->data['language_urls'] ) {
 ?>
 	<div id="p-lang" class="portlet">
-		<h5><?php $this->msg('otherlanguages') ?></h5>
+		<h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
 		<div class="pBody">
 			<ul>
-<?php		foreach($this->data['language_urls'] as $langlink) { ?>
-				<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
-				?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php		foreach($this->data['language_urls'] as $key => $langlink) { ?>
+				<?php echo $this->makeListItem($key, $langlink); ?>
+
 <?php		} ?>
 			</ul>
 		</div>
@@ -383,16 +329,21 @@
 
 	/*************************************************************************************************/
 	function customBox( $bar, $cont ) {
+		$portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) );
+		$tooltip = Linker::titleAttrib( "p-$bar" );
+		if ( $tooltip !== false ) {
+			$portletAttribs['title'] = $tooltip;
+		}
+		echo '	' . Html::openElement( 'div', $portletAttribs );
 ?>
-	<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
-		<h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
+
+		<h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
 		<div class='pBody'>
 <?php   if ( is_array( $cont ) ) { ?>
 			<ul>
 <?php 			foreach($cont as $key => $val) { ?>
-				<li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
-					if (isset($val['active']) && $val['active']) { ?> class="active" <?php }
-				?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
+				<?php echo $this->makeListItem($key, $val); ?>
+
 <?php			} ?>
 			</ul>
 <?php   } else {
@@ -404,7 +355,4 @@
 	</div>
 <?php
 	}
-
 } // end of class
-
-?>
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php.patch fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php.patch
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php.patch	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php.patch	2012-08-07 10:53:48.000000000 +0200
@@ -1,76 +1,98 @@
---- FusionForge.php.renamed	2010-04-29 23:18:01.000000000 +0200
-+++ FusionForge.php	2010-04-29 23:05:54.000000000 +0200
-@@ -34,18 +34,19 @@
+--- FusionForge.php.renamed	2012-08-06 11:35:42.000000000 +0200
++++ FusionForge.php	2012-08-07 10:52:00.000000000 +0200
+@@ -23,11 +23,31 @@
+ 	var $skinname = 'fusionforge', $stylename = 'fusionforge',
+ 		$template = 'FusionForgeTemplate', $useHeadElement = true;
+ 
++	function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
++		$tc = new $classname();
++
++		$tc->params = array();
++		if (($tc->project = $project =
++		    group_get_object_by_name($GLOBALS['fusionforgeproject']))) {
++			$tc->params['group'] = $GLOBALS['group_id'] =
++			    $project->getID();
++			$tc->params['toptab'] = 'mediawiki';
++		}
++
++		return $tc;
++	}
++
+ 	/**
+ 	 * @param $out OutputPage
+ 	 */
+ 	function setupSkinUserCss( OutputPage $out ) {
+ 		global $wgHandheldStyle;
++
++		/* add FusionForge styles */
++		foreach ($GLOBALS['HTML']->stylesheets as $sheet) {
++			$out->addStyle($sheet['css'], $sheet['media']);
++		}
++
  		parent::setupSkinUserCss( $out );
  
- 		// Append to the default screen common & print styles...
--		$out->addStyle( 'fusionforge/main.css', 'screen' );
-+		$out->addStyle( 'monobook/main.css', 'screen' );
-+		$out->addStyle( 'fusionforge/fusionforge.css', 'screen' );
- 		if( $wgHandheldStyle ) {
- 			// Currently in testing... try 'chick/main.css'
- 			$out->addStyle( $wgHandheldStyle, 'handheld' );
- 		}
- 
--		$out->addStyle( 'fusionforge/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
--		$out->addStyle( 'fusionforge/IE55Fixes.css', 'screen', 'IE 5.5000' );
--		$out->addStyle( 'fusionforge/IE60Fixes.css', 'screen', 'IE 6' );
--		$out->addStyle( 'fusionforge/IE70Fixes.css', 'screen', 'IE 7' );
-+		$out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
-+		$out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' );
-+		$out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
-+		$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
- 
--		$out->addStyle( 'fusionforge/rtl.css', 'screen', '', 'rtl' );
-+		$out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
- 	}
- }
- 
-@@ -80,6 +81,10 @@
- 		<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
- 		<?php $this->html('headlinks') ?>
- 		<title><?php $this->text('pagetitle') ?></title>
-+        	<!-- FUSIONFORGE Stylesheet BEGIN -->
-+		<?php if (!$GLOBALS['sys_use_mwframe']){ $GLOBALS['HTML']->headerLink(); } ?>
-+		<?php if (!$GLOBALS['sys_use_mwframe']){ $GLOBALS['HTML']->headerCSS(); } ?>
-+        	<!-- FUSIONFORGE Stylesheet END -->
- 		<?php $this->html('csslinks') ?>
- 
- 		<!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
-@@ -107,9 +112,22 @@
- <?php	}
- 		if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- 	</head>
--<body<?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
-+<body id="mydoc" <?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
- <?php if($this->data['body_onload']) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
-  class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
-+        <!-- FUSIONFORGE BodyHeader BEGIN -->
-+        <?php
-+	if (!$GLOBALS['sys_use_mwframe']){
-+        	$project=group_get_object_by_name($GLOBALS['fusionforgeproject']);
-+        	if ($project) {
-+			$GLOBALS['group_id']=$project->getID();
-+                	$params['group']=$GLOBALS['group_id'];
-+                	$params['toptab']='mediawiki';
-+                	$GLOBALS['HTML']->bodyHeader($params);
-+        	}
-+	}
-+        ?>
-+        <!-- FUSIONFORGE BodyHeader END -->
- 	<div id="globalWrapper">
- 		<div id="column-content">
- 	<div id="content">
-@@ -242,7 +260,12 @@
- 
- -->
- <?php endif; ?>
-+        <!-- FUSIONFORGE Footer BEGIN -->
-+<?php	if (!$GLOBALS['sys_use_mwframe']){
-+		$GLOBALS['HTML']->footer($params);
-+	} else { ?>
- </body></html>
-+<?php	} ?>
+ 		$out->addModuleStyles( 'skins.monobook' );
+@@ -51,6 +71,8 @@
+  */
+ class FusionForgeTemplate extends BaseTemplate {
+ 
++	var $project = false;
++
+ 	/**
+ 	 * Template filter callback for FusionForge skin.
+ 	 * Takes an associative array of data set from a SkinTemplate-based
+@@ -66,6 +88,12 @@
+ 		wfSuppressWarnings();
+ 
+ 		$this->html( 'headelement' );
++
++		echo "\n<!-- FUSIONFORGE BodyHeader BEGIN -->\n";
++		$GLOBALS['HTML']->bodyHeader($this->params);
++		echo "<div id=\"ff-mw-wrapper\"><div style=\"font-size:x-small;\">\n";
++		echo "<!-- FUSIONFORGE BodyHeader END -->\n";
++
+ ?><div id="globalWrapper">
+ <div id="column-content"><div id="content">
+ 	<a id="top"></a>
+@@ -162,8 +190,8 @@
+ </div>
  <?php
- 	wfRestoreWarnings();
+ 		$this->printTrail();
+-		echo Html::closeElement( 'body' );
+-		echo Html::closeElement( 'html' );
++		echo "</div></div>\n";
++		$GLOBALS['HTML']->footer($this->params);
+ 		wfRestoreWarnings();
  	} // end of execute() method
+ 
+@@ -174,6 +202,30 @@
+ 		if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+ 		if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+ 
++		if (session_loggedin()) {
++			$efbox_log_text = _('Log Out');
++			$efbox_log_link = "/account/logout.php?return_to=" .
++			    urlencode(getStringFromServer('REQUEST_URI'));
++		} else {
++			$efbox_log_text = _('Log In');
++			$efbox_log_link = "/account/login.php?return_to=" .
++			    urlencode(getStringFromServer('REQUEST_URI'));
++		}
++		$efbox_prj_link = "/projects/" .
++		    $this->project->getUnixName() . "/";
++		$this->customBox("FusionForge", array(
++			"project" => array(
++				"id" => "fusionforge_project",
++				"href" => $efbox_prj_link,
++				"text" => _("Project Summary"),
++			    ),
++			"loginout" => array(
++				"id" => "fusionforge_loginout",
++				"href" => $efbox_log_link,
++				"text" => $efbox_log_text,
++			    ),
++		    ));
++
+ 		foreach( $sidebar as $boxName => $content ) {
+ 			if ( $content === false )
+ 				continue;
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php.renamed fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php.renamed
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/FusionForge.php.renamed	1970-01-01 01:00:00.000000000 +0100
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/FusionForge.php.renamed	2012-08-06 11:36:11.000000000 +0200
@@ -0,0 +1,306 @@
+<?php
+/**
+ * FusionForge nouveau
+ *
+ * Translated from gwicke's previous TAL template version to remove
+ * dependency on PHPTAL.
+ *
+ * @todo document
+ * @file
+ * @ingroup Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/**
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
+ * @todo document
+ * @ingroup Skins
+ */
+class SkinFusionForge extends SkinTemplate {
+	/** Using fusionforge. */
+	var $skinname = 'fusionforge', $stylename = 'fusionforge',
+		$template = 'FusionForgeTemplate', $useHeadElement = true;
+
+	/**
+	 * @param $out OutputPage
+	 */
+	function setupSkinUserCss( OutputPage $out ) {
+		global $wgHandheldStyle;
+		parent::setupSkinUserCss( $out );
+
+		$out->addModuleStyles( 'skins.monobook' );
+
+		// Ugh. Can't do this properly because $wgHandheldStyle may be a URL
+		if( $wgHandheldStyle ) {
+			// Currently in testing... try 'chick/main.css'
+			$out->addStyle( $wgHandheldStyle, 'handheld' );
+		}
+
+		// TODO: Migrate all of these
+		$out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
+		$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
+
+	}
+}
+
+/**
+ * @todo document
+ * @ingroup Skins
+ */
+class FusionForgeTemplate extends BaseTemplate {
+
+	/**
+	 * Template filter callback for FusionForge skin.
+	 * Takes an associative array of data set from a SkinTemplate-based
+	 * class, and a wrapper for MediaWiki's localization database, and
+	 * outputs a formatted page.
+	 *
+	 * @access private
+	 */
+	function execute() {
+		global $wgHtml5;
+
+		// Suppress warnings to prevent notices about missing indexes in $this->data
+		wfSuppressWarnings();
+
+		$this->html( 'headelement' );
+?><div id="globalWrapper">
+<div id="column-content"><div id="content">
+	<a id="top"></a>
+	<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+
+	<h1 id="firstHeading" class="firstHeading"><span<?php if ($wgHtml5) echo ' dir="auto"'; ?>><?php $this->html('title') ?></span></h1>
+	<div id="bodyContent" class="mw-body">
+		<div id="siteSub"><?php $this->msg('tagline') ?></div>
+		<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
+<?php if($this->data['undelete']) { ?>
+		<div id="contentSub2"><?php $this->html('undelete') ?></div>
+<?php } ?><?php if($this->data['newtalk'] ) { ?>
+		<div class="usermessage"><?php $this->html('newtalk')  ?></div>
+<?php } ?><?php if($this->data['showjumplinks']) { ?>
+		<div id="jump-to-nav" class="mw-jump"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
+<?php } ?>
+		<!-- start content -->
+<?php $this->html('bodytext') ?>
+		<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
+		<!-- end content -->
+		<?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
+		<div class="visualClear"></div>
+	</div>
+</div></div>
+<div id="column-one"<?php $this->html('userlangattributes')  ?>>
+<?php $this->cactions(); ?>
+	<div class="portlet" id="p-personal">
+		<h5><?php $this->msg('personaltools') ?></h5>
+		<div class="pBody">
+<?php
+	$ul_shown = false;
+	foreach ($this->getPersonalTools() as $key => $item) {
+		if (!$ul_shown) {
+?>
+			<ul<?php $this->html('userlangattributes') ?>>
+<?php
+			$ul_shown = true;
+		}
+		echo "\n" . $this->makeListItem($key, $item);
+	}
+	if ($ul_shown) {
+		echo "\n</ul>\n";
+	}
+?>
+		</div>
+	</div>
+	<div class="portlet" id="p-logo">
+<?php
+			echo Html::element( 'a', array(
+				'href' => $this->data['nav_urls']['mainpage']['href'],
+				'style' => "background-image: url({$this->data['logopath']});" )
+				+ Linker::tooltipAndAccesskeyAttribs('p-logo') ); ?>
+
+	</div>
+<?php
+	$this->renderPortals( $this->data['sidebar'] );
+?>
+</div><!-- end of the left (by default at least) column -->
+<div class="visualClear"></div>
+<?php
+	$validFooterIcons = $this->getFooterIcons( "icononly" );
+	$validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
+
+	if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?>
+<div id="footer"<?php $this->html('userlangattributes') ?>>
+<?php
+		$footerEnd = '</div>';
+	} else {
+		$footerEnd = '';
+	}
+	foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?>
+	<div id="f-<?php echo htmlspecialchars($blockName); ?>ico">
+<?php foreach ( $footerIcons as $icon ) { ?>
+		<?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
+
+<?php }
+?>
+	</div>
+<?php }
+
+		if ( count( $validFooterLinks ) > 0 ) {
+?>	<ul id="f-list">
+<?php
+			foreach( $validFooterLinks as $aLink ) { ?>
+		<li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
+<?php
+			}
+?>
+	</ul>
+<?php	}
+echo $footerEnd;
+?>
+
+</div>
+<?php
+		$this->printTrail();
+		echo Html::closeElement( 'body' );
+		echo Html::closeElement( 'html' );
+		wfRestoreWarnings();
+	} // end of execute() method
+
+	/*************************************************************************************************/
+
+	protected function renderPortals( $sidebar ) {
+		if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
+		if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+		if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+
+		foreach( $sidebar as $boxName => $content ) {
+			if ( $content === false )
+				continue;
+
+			if ( $boxName == 'SEARCH' ) {
+				$this->searchBox();
+			} elseif ( $boxName == 'TOOLBOX' ) {
+				$this->toolbox();
+			} elseif ( $boxName == 'LANGUAGES' ) {
+				$this->languageBox();
+			} else {
+				$this->customBox( $boxName, $content );
+			}
+		}
+	}
+
+	function searchBox() {
+		global $wgUseTwoButtonsSearchForm;
+?>
+	<div id="p-search" class="portlet">
+		<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+		<div id="searchBody" class="pBody">
+			<form action="<?php $this->text('wgScript') ?>" id="searchform">
+				<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
+				<?php echo $this->makeSearchInput(array( "id" => "searchInput" )); ?>
+
+				<?php echo $this->makeSearchButton("go", array( "id" => "searchGoButton", "class" => "searchButton" ));
+				if ($wgUseTwoButtonsSearchForm): ?> 
+				<?php echo $this->makeSearchButton("fulltext", array( "id" => "mw-searchButton", "class" => "searchButton" ));
+				else: ?>
+
+				<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php
+				endif; ?>
+
+			</form>
+		</div>
+	</div>
+<?php
+	}
+
+	/**
+	 * Prints the cactions bar.
+	 * Shared between MonoBook and Modern
+	 */
+	function cactions() {
+?>
+	<div id="p-cactions" class="portlet">
+		<h5><?php $this->msg('views') ?></h5>
+		<div class="pBody">
+			<ul><?php
+				foreach($this->data['content_actions'] as $key => $tab) {
+					echo '
+				' . $this->makeListItem( $key, $tab );
+				} ?>
+
+			</ul>
+		</div>
+	</div>
+<?php
+	}
+	/*************************************************************************************************/
+	function toolbox() {
+?>
+	<div class="portlet" id="p-tb">
+		<h5><?php $this->msg('toolbox') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php
+		foreach ( $this->getToolbox() as $key => $tbitem ) { ?>
+				<?php echo $this->makeListItem($key, $tbitem); ?>
+
+<?php
+		}
+		wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
+		wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
+?>
+			</ul>
+		</div>
+	</div>
+<?php
+	}
+
+	/*************************************************************************************************/
+	function languageBox() {
+		if( $this->data['language_urls'] ) {
+?>
+	<div id="p-lang" class="portlet">
+		<h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php		foreach($this->data['language_urls'] as $key => $langlink) { ?>
+				<?php echo $this->makeListItem($key, $langlink); ?>
+
+<?php		} ?>
+			</ul>
+		</div>
+	</div>
+<?php
+		}
+	}
+
+	/*************************************************************************************************/
+	function customBox( $bar, $cont ) {
+		$portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) );
+		$tooltip = Linker::titleAttrib( "p-$bar" );
+		if ( $tooltip !== false ) {
+			$portletAttribs['title'] = $tooltip;
+		}
+		echo '	' . Html::openElement( 'div', $portletAttribs );
+?>
+
+		<h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
+		<div class='pBody'>
+<?php   if ( is_array( $cont ) ) { ?>
+			<ul>
+<?php 			foreach($cont as $key => $val) { ?>
+				<?php echo $this->makeListItem($key, $val); ?>
+
+<?php			} ?>
+			</ul>
+<?php   } else {
+			# allow raw HTML block to be defined by extensions
+			print $cont;
+		}
+?>
+		</div>
+	</div>
+<?php
+	}
+} // end of class
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/Makefile fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/Makefile
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/Makefile	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/Makefile	2012-08-06 11:32:19.000000000 +0200
@@ -1,24 +1,20 @@
 MWSKINPATH=/usr/share/mediawiki/skins
 
 all: FusionForge.php
-allold: FusionForge.php fusionforge/main.css
 
 FusionForge.php: FusionForge.php.renamed
 	@echo 'Building $@'
 	patch -p0 -o $@ FusionForge.php.renamed FusionForge.php.patch
 
 FusionForge.php.renamed: $(MWSKINPATH)
-	cp $(MWSKINPATH)/MonoBook.php FusionForge.php.reference
-	cat $(MWSKINPATH)/MonoBook.php | sed 's/MonoBook/FusionForge/g' | sed 's/monobook/fusionforge/g' > $@
-	
-
-fusionforge/main.css: fusionforge/main.css.renamed
-	@echo 'Building $@'
-	patch -p0 -o $@ fusionforge/main.css.renamed fusionforge/main.css.patch
-
-fusionforge/main.css.renamed: $(MWSKINPATH)
-	cp $(MWSKINPATH)/monobook/main.css fusionforge/main.css.reference
-	cat $(MWSKINPATH)/monobook/main.css | sed 's/MonoBook/FusionForge/g' | sed 's/monobook/fusionforge/g' > $@
+	sed \
+	    -e 's/MonoBook/FusionForge/g' \
+	    -e 's/Shared between FusionForge/Shared between MonoBook/' \
+	    -e 's/FusionForgeTemplateToolboxEnd/MonoBookTemplateToolboxEnd/g' \
+	    -e 's/Using monobook/Using fusionforge/' \
+	    -e "s/skinname = 'monobook/skinname = 'fusionforge/" \
+	    -e "s/stylename = 'monobook/stylename = 'fusionforge/" \
+	    <$(MWSKINPATH)/MonoBook.php >$@
 	
 
 $(MWSKINPATH):
@@ -27,11 +23,5 @@
 cleanphp:
 	rm -f FusionForge.php.renamed FusionForge.php.patch2
 
-cleancss:
-	rm -f fusionforge/main.css.renamed fusionforge/main.css.patch2
-
 patchphp: FusionForge.php.renamed
 	-diff -uN FusionForge.php.renamed FusionForge.php > FusionForge.php.patch2
-
-patchcss: fusionforge/main.css.renamed
-	-diff -uN fusionforge/main.css.renamed fusionforge/main.css > fusionforge/main.css.patch2
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/README.beforemodifying fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/README.beforemodifying
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/README.beforemodifying	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/README.beforemodifying	2012-08-06 11:32:19.000000000 +0200
@@ -1,8 +1,8 @@
-The FusionForge.php and fusionforge/main.css are built
-from MonoBook.php and monobook/main.css mediawiki files
+The FusionForge.php is built from MonoBook.php mediawiki file.
 2 things are done
 
 -Renaming monobook in fusionforge and MonoBook in FusionForge
+ and remove empty trailing lines
 -Apply a minimal patch on the renamed patch
 
 It is highly recommended to touch these files as few as possible
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/fusionforge/fusionforge.css fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/fusionforge/fusionforge.css
--- fusionforge-5.2~rc1/plugins/mediawiki/mediawiki-skin/fusionforge/fusionforge.css	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/mediawiki-skin/fusionforge/fusionforge.css	1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-#globalWrapper { position: relative; }
-/* disable the logo */
-/*
-#p-logo { display: none; }
-#column-one { padding-top: 0px; }
-*/
-/* use the font inherited from FF */
-body {font-size:85%;font-family:"verdana",sans-serif;color:rgb(68,68,68);background-color:rgb(247,247,247);text-align:left; }
-td.mainCanvas { font-size:85%;font-family:"verdana",sans-serif; }
-
-table { background-color: transparent; }
-
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/packaging/control/160plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/control/160plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/packaging/control/160plugin-mediawiki	2012-06-01 16:52:35.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/control/160plugin-mediawiki	2012-08-08 14:29:48.000000000 +0200
@@ -1,6 +1,6 @@
 Package: @PACKAGE at -plugin-mediawiki
 Architecture: all
-Depends: @OLDPACKAGE at -common (>= 4.8), @OLDPACKAGE at -db-postgresql (>= 4.8) | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 (>= 4.8) | @OLDPACKAGE at -web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15.5-10~), php5-cli, php5-gd, ${misc:Depends}
+Depends: @OLDPACKAGE at -common (>= 4.8), @OLDPACKAGE at -db-postgresql (>= 4.8) | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 (>= 4.8) | @OLDPACKAGE at -web, postgresql-contrib, mediawiki (>= 1:1.19.1-2~), php5-cli, php5-gd, ${misc:Depends}
 Provides: @OLDPACKAGE at -plugin-mediawiki
 Conflicts: @OLDPACKAGE at -plugin-mediawiki (<< 5.0.51-2)
 Replaces: @OLDPACKAGE at -plugin-mediawiki (<< 5.0.51-2)
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/packaging/cron.d/plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/cron.d/plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/packaging/cron.d/plugin-mediawiki	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/cron.d/plugin-mediawiki	2012-08-24 11:51:00.000000000 +0200
@@ -17,4 +17,4 @@
 1,16,31,46 * * * * root [ -x $MWCRON/create-imagedirs.php ] && $PHP $MWCRON/create-imagedirs.php
 
 # Create wiki XML dumps every night
-55 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/cronjobs/dump-wikis.php
+55 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/dump-wikis.php
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/packaging/dirs/plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/dirs/plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/packaging/dirs/plugin-mediawiki	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/dirs/plugin-mediawiki	2012-08-16 11:54:53.000000000 +0200
@@ -6,6 +6,5 @@
 usr/share/@OLDPACKAGE@/plugins/mediawiki/www
 usr/share/@OLDPACKAGE@/etc/httpd.d
 usr/share/mediawiki/skins
-usr/share/mediawiki/skins/fusionforge
-var/lib/@OLDPACKAGE@/plugins/mediawiki/wikidata
 var/lib/@OLDPACKAGE@/plugins/mediawiki/dumps
+var/lib/@OLDPACKAGE@/plugins/mediawiki/projects
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/packaging/install/plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/install/plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/packaging/install/plugin-mediawiki	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/install/plugin-mediawiki	2012-08-06 11:32:19.000000000 +0200
@@ -4,6 +4,6 @@
 plugins/mediawiki/cronjobs/*       usr/share/gforge/plugins/mediawiki/cronjobs/
 plugins/mediawiki/db/*		   usr/share/gforge/plugins/mediawiki/lib/
 plugins/mediawiki/www/*            usr/share/gforge/plugins/mediawiki/www/
-plugins/mediawiki/mediawiki-skin/* usr/share/mediawiki/skins/
+plugins/mediawiki/mediawiki-skin/FusionForge.php usr/share/mediawiki/skins/
 plugins/mediawiki/etc/httpd.d/*    usr/share/gforge/etc/httpd.d/
 plugins/mediawiki/etc/*.ini 	   etc/@PACKAGE@/config.ini.d/
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/packaging/links/plugin-mediawiki fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/links/plugin-mediawiki
--- fusionforge-5.2~rc1/plugins/mediawiki/packaging/links/plugin-mediawiki	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/packaging/links/plugin-mediawiki	2012-08-07 10:53:48.000000000 +0200
@@ -4,6 +4,7 @@
 usr/share/mediawiki/includes			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/includes
 usr/share/mediawiki/index.php			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/index.php
 usr/share/mediawiki/languages			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/languages
+usr/share/mediawiki/load.php			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/load.php
 usr/share/mediawiki/maintenance			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/maintenance
 usr/share/mediawiki/opensearch_desc.php		usr/share/@OLDPACKAGE@/plugins/mediawiki/www/opensearch_desc.php
 usr/share/mediawiki/profileinfo.php		usr/share/@OLDPACKAGE@/plugins/mediawiki/www/profileinfo.php
@@ -13,6 +14,7 @@
 usr/share/mediawiki/trackback.php		usr/share/@OLDPACKAGE@/plugins/mediawiki/www/trackback.php
 
 usr/share/mediawiki/skins			usr/share/@OLDPACKAGE@/plugins/mediawiki/www/skins
+usr/share/mediawiki/skins/monobook/headbg.jpg	usr/share/@OLDPACKAGE@/www/themes/css/mw-headbg.jpg
 
 usr/share/mediawiki				var/lib/@OLDPACKAGE@/plugins/mediawiki/master
 
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/www/LocalSettings.php fusionforge-5.2~rc1wheezy1/plugins/mediawiki/www/LocalSettings.php
--- fusionforge-5.2~rc1/plugins/mediawiki/www/LocalSettings.php	2012-06-14 17:20:18.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/www/LocalSettings.php	2012-08-06 11:19:03.000000000 +0200
@@ -46,8 +46,11 @@
         if (($exppath[0] == 'plugins') &&
 	    ($exppath[1] == 'mediawiki') &&
 	    ($exppath[2] == 'wiki') &&
-	    (($exppath[4] == 'index.php') || ($exppath[4] == 'api.php'))
-	    ) {
+	    in_array($exppath[4], array(
+		'api.php',
+		'index.php',
+		'load.php',
+	    ))) {
                 $fusionforgeproject = $exppath[3] ;
                 break ;
         } else {
diff -Nru fusionforge-5.2~rc1/plugins/mediawiki/www/plugin_admin.php fusionforge-5.2~rc1wheezy1/plugins/mediawiki/www/plugin_admin.php
--- fusionforge-5.2~rc1/plugins/mediawiki/www/plugin_admin.php	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/plugins/mediawiki/www/plugin_admin.php	2012-08-24 10:43:47.000000000 +0200
@@ -2,7 +2,7 @@
 /*-
  * MediaWiki Plugin for FusionForge
  *
- * Copyright © 2010
+ * Copyright © 2010, 2012
  *      Thorsten Glaser <t.glaser at tarent.de>
  * Copyright 2012, Franck Villaume - TrivialDev
  * All rights reserved.
@@ -151,6 +151,15 @@
        util_make_url("/plugins/mediawiki/dumps/" . $group_unix_name . ".xml"));
 echo "</p>\n";
 
+if (!forge_get_config('enable_uploads', 'mediawiki')) {
+	echo "<h2>Disabled: \$wgLogo</h2>\n";
+	echo '<p>' .
+	    _('Custom per-project logos require that the "enable_uploads" setting in the [mediawiki] section of your FusionForge configuration is enabled.') .
+	    "</p>\n";
+	site_project_footer(array());
+	exit(0);
+}
+
 echo "<h2>\$wgLogo</h2>\n";
 echo '<div style="border:solid 1px black; margin:3px; padding:3px;">';
 if (file_exists($group_logo)) {
diff -Nru fusionforge-5.2~rc1/www/themes/css/fusionforge.css fusionforge-5.2~rc1wheezy1/www/themes/css/fusionforge.css
--- fusionforge-5.2~rc1/www/themes/css/fusionforge.css	2012-05-31 09:40:26.000000000 +0200
+++ fusionforge-5.2~rc1wheezy1/www/themes/css/fusionforge.css	2012-08-07 13:31:23.000000000 +0200
@@ -879,3 +879,111 @@
 	border: 1px solid #ccc;
 	padding: 5px;
 }
+
+#ff-mw-wrapper {
+	position: relative;	/* so MW can position absolutely */
+		top: -1em;	/* undo div#maindiv */
+		left: -1em;	/* undo div#maindiv */
+	margin-right: -2em;
+	background: #f9f9f9 url(mw-headbg.jpg) 0 0 no-repeat;
+}
+
+/* un-do some damage from the main and YUI sheets */
+
+#ff-mw-wrapper p, #ff-mw-wrapper fieldset, #ff-mw-wrapper table {
+	margin:0.4em 0 0.5em;
+}
+
+#ff-mw-wrapper h1, #ff-mw-wrapper h2, #ff-mw-wrapper h3, #ff-mw-wrapper h4, #ff-mw-wrapper h5, #ff-mw-wrapper h6 {
+	padding-bottom:0.17em;
+	padding-top:0.5em;
+	margin-top:0;
+	margin-bottom:0.6em;
+}
+
+#ff-mw-wrapper h1 {
+	font-size:188%;
+	font-weight:normal;
+}
+
+#ff-mw-wrapper h2 {
+	font-size:150%;
+}
+
+#ff-mw-wrapper h3 {
+	font-weight:bold;
+	font-size:132%;
+}
+
+#ff-mw-wrapper h4 {
+	font-size:116%;
+}
+
+#ff-mw-wrapper h6 {
+	font-size:80%;
+	margin-bottom:0;
+}
+
+#ff-mw-wrapper h3, #ff-mw-wrapper h4, #ff-mw-wrapper h5 {
+	margin-bottom:0.3em;
+}
+
+#ff-mw-wrapper ul {
+	line-height:1.5em;
+	list-style-type:square;
+	margin:0.3em 0 0 1.6em;
+	padding:0;
+}
+
+#ff-mw-wrapper ul li {
+	/*      ↑   →    ↓   ←    */
+	margin:0em 0em 0.1em 0em;
+	list-style-type:square;
+	list-style-image:url(data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=);
+}
+
+#ff-mw-wrapper #toc ul, #ff-mw-wrapper .toc ul {
+	margin-left:0;
+}
+
+#ff-mw-wrapper #toc ul li, #ff-mw-wrapper .toc ul li {
+	margin:0em 0em 0.1em 0em;
+	list-style-image:none;
+	list-style-type:none;
+}
+
+#ff-mw-wrapper #toc ul ul, #ff-mw-wrapper .toc ul ul {
+	margin-left:2em;
+}
+
+#ff-mw-wrapper ol {
+	line-height:1.5em;
+	list-style-type:decimal;
+	margin:0.3em 0 0 3.2em;
+	padding:0;
+}
+
+#ff-mw-wrapper ol li {
+	margin:0em 0em 0.1em 0em;
+	list-style-type:decimal;
+}
+
+#ff-mw-wrapper #p-personal ul {
+	margin:0;
+	padding:0 2em 0 3em;
+}
+
+#ff-mw-wrapper #p-personal li {
+	margin-left:1em;
+}
+
+#ff-mw-wrapper pre {
+	line-height:1.1em;
+	padding:1em;
+	margin-top:1em;
+}
+
+#ff-mw-wrapper a {
+	color:#002BB8;
+	font-weight:normal;
+}


More information about the Pkg-mediawiki-devel mailing list