--- /dev/null
+<?php
+# Tentative to make a skin for wikimedia.org
+# $Id$
+
+require_once( 'Skin.php' );
+require_once( 'SkinPHPTal.php' );
+
+$wgExtraSkins['wikimediawiki'] = 'Wikimediawiki';
+
+class SkinWikimediawiki extends SkinMonoBook {
+ function initPage( &$out ) {
+ SkinPHPTal::initPage( $out );
+ $this->skinname = "wikimediawiki";
+ $this->template = "xhtml_slim_wikimediawiki";
+ }
+
+ # build array of common navigation links
+ function buildNavUrls () {
+ global $wgTitle, $wgUser, $wgRequest;
+ global $wgSiteSupportPage;
+
+ $action = $wgRequest->getText( 'action' );
+ $oldid = $wgRequest->getVal( 'oldid' );
+ $diff = $wgRequest->getVal( 'diff' );
+ // XXX: remove htmlspecialchars when tal:attributes works with i18n:attributes
+ $nav_urls = array();
+ $nav_urls['mainpage'] = array('href' => htmlspecialchars( $this->makeI18nUrl('mainpage')));
+ $nav_urls['randompage'] = (wfMsg('randompage') != '-') ? array('href' => htmlspecialchars( $this->makeSpecialUrl('Randompage'))) : false;
+ $nav_urls['recentchanges'] = (wfMsg('recentchanges') != '-') ? array('href' => htmlspecialchars( $this->makeSpecialUrl('Recentchanges'))) : false;
+ $nav_urls['whatlinkshere'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Whatlinkshere', 'target='.urlencode( $this->thispage ))));
+ $nav_urls['currentevents'] = (wfMsg('currentevents') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('currentevents'))) : false;
+ $nav_urls['portal'] = (wfMsg('portal') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('portal-url'))) : false;
+ $nav_urls['recentchangeslinked'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Recentchangeslinked', 'target='.urlencode( $this->thispage ))));
+ $nav_urls['bugreports'] = (wfMsg('bugreports') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('bugreportspage'))) : false;
+ $nav_urls['sitesupport'] = array('href' => htmlspecialchars( $wgSiteSupportPage));
+ $nav_urls['help'] = array('href' => htmlspecialchars( $this->makeI18nUrl('helppage')));
+ $nav_urls['upload'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Upload')));
+ $nav_urls['specialpages'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Specialpages')));
+
+
+ # Specific for mediawiki.org menu
+ $nav_urls['aboutmediawiki'] = (wfMsg('aboutmediawiki') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('aboutmediawiki-url'))) : false;
+ $nav_urls['projects'] = (wfMsg('projects') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('projects-url'))) : false;
+ $nav_urls['membership'] = (wfMsg('membership') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('membership-url'))) : false;
+ $nav_urls['pressroom'] = (wfMsg('pressroom') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('pressroom-url'))) : false;
+ $nav_urls['software'] = (wfMsg('software') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('software-url'))) : false;
+ $nav_urls['localchapters'] = (wfMsg('localchapters') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('localchapters-url'))) : false;
+ $nav_urls['contactus'] = (wfMsg('contactus') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('contactus-url'))) : false;
+
+ if( $wgTitle->getNamespace() == NS_USER || $wgTitle->getNamespace() == NS_USER_TALK ) {
+ $id = User::idFromName($wgTitle->getText());
+ $ip = User::isIP($wgTitle->getText());
+ } else {
+ $id = 0;
+ $ip = false;
+ }
+
+ if ( 0 != $wgUser->getID() ) { # show only to signed in users
+ if($id) {
+ # can only email non-anons
+ $nav_urls['emailuser'] = array(
+ 'href' => htmlspecialchars( $this->makeSpecialUrl('Emailuser', "target=" . $wgTitle->getPartialURL() ) )
+ );
+ # only non-anons have contrib list
+ $nav_urls['contributions'] = array(
+ 'href' => htmlspecialchars( $this->makeSpecialUrl('Contributions', "target=" . $wgTitle->getPartialURL() ) )
+ );
+ }
+ }
+
+
+ return $nav_urls;
+ }
+}
+
+
+?>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}" dir="${dir}">
+ <head>
+ <meta http-equiv="Content-Type" content="${mimetype}; charset=${charset}" />
+ ${headlinks}
+ <title tal:content="pagetitle">Exciting xhtml slimfast</title>
+ <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "${stylepath}/${skinname}/main.css"; /*]]>*/</style>
+ <link rel="stylesheet" type="text/css" media="print" href="${stylepath}/commonPrint.css" />
+ <!--[if IE]><style type="text/css" media="all">@import "${stylepath}/${skinname}/IEFixes.css";</style>
+ <script type="text/javascript" src="${stylepath}/IEFixes.js"></script>
+ <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+ <script type="text/javascript" tal:attributes="src jsvarurl"></script>
+ <script type="text/javascript" src="${stylepath}/wikibits.js"></script>
+ <style tal:condition="usercss" type="text/css">/*<![CDATA[*/ ${usercss} /*]]>*/</style>
+ <script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script
+ tal:condition="userjsprev" type="text/javascript">/*<![CDATA[*/${userjsprev}/*]]>*/</script>
+ </head>
+ <body tal:attributes="ondblclick body-ondblclick|default; class nsclass|default">
+ <div id="globalWrapper">
+ <div id="column-content">
+ <div id="content">
+ <a name="top" id="contentTop"></a>
+ <div id="siteNotice" tal:condition="sitenotice" tal:content="structure sitenotice"></div>
+ <h1 class="firstHeading" tal:content="title">Leonardo da Vinci</h1>
+ <div id="bodyContent">
+ <h3 id="siteSub" i18n:translate="string:fromwikipedia">From Wikipedia, the free encyclopedia.</h3>
+ <div id="contentSub" tal:content="structure subtitle"></div>
+ <div id="contentSub" tal:condition="undelete" tal:content="structure undelete"></div>
+ <div tal:condition="newtalk" class="usermessage" tal:content="structure newtalk"></div>
+ <!-- start content -->
+ ${bodytext}
+ <div tal:condition="catlinks" id="catlinks" tal:content="structure catlinks"></div>
+ <!-- end content -->
+ <div class="visualClear"></div>
+ </div>
+ </div>
+ </div>
+ <div id="column-one">
+ <div id="p-cactions" class="portlet">
+ <h5>Views</h5>
+ <ul>
+ <li tal:repeat="action content_actions"
+ tal:attributes="id string:ca-${repeat/action/key}; class action/class|default"><a
+ tal:attributes="href action/href|default"
+ tal:content="action/text">Linktext</a></li>
+ </ul>
+ </div>
+ <div class="portlet" id="p-personal">
+ <h5 i18n:translate="string:personaltools">Personal Tools</h5>
+ <div class="pBody">
+ <ul>
+ <li tal:repeat="item personal_urls"
+ tal:attributes="id string:pt-${repeat/item/key};"><a href="myuserpage"
+ tal:attributes="href item/href; class item/class|default"
+ tal:content="item/text">Log in</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="portlet" id="p-logo">
+ <a style="background-image: url(${logopath});" href="${nav_urls/mainpage/href}" i18n:attributes="title string:mainpage"></a>
+ </div>
+ <div class="portlet" id="p-nav">
+ <h5 i18n:translate="string:navigation">Navigation</h5>
+ <div class="pBody">
+ <ul>
+ <li id="n-mainpage"><a href="${nav_urls/mainpage/href}"
+ i18n:translate="string:mainpage">Home</a></li>
+ <li id="n-aboutmediawiki"><a href="${nav_urls/aboutmediawiki/href}"
+ i18n:translate="string:aboutmediawiki">About Mediawiki</a></li>
+ <li id="n-portal" tal:condition="nav_urls/portal/href"><a href="${nav_urls/portal/href}"
+ i18n:translate="string:portal">Community Portal</a></li>
+ <li id="n-currentevents" tal:condition="nav_urls/currentevents/href"><a href="${nav_urls/currentevents/href}"
+ i18n:translate="string:currentevents">Last News</a></li>
+ <li id="n-projects" tal:condition="nav_urls/projects/href"><a href="${nav_urls/projects/href}"
+ i18n:translate="string:projects">Our projects</a></li>
+ <li id="n-recentchanges"tal:condition="nav_urls/recentchanges/href"><a href="${nav_urls/recentchanges/href}"
+ i18n:translate="string:recentchanges">Recent Changes</a></li>
+ <li id="n-randompage" tal:condition="nav_urls/randompage/href"><a href="${nav_urls/randompage/href}"
+ i18n:translate="string:randompage">Random Page</a></li>
+ <li id="n-help" tal:condition="nav_urls/help/href"><a href="${nav_urls/help/href}"
+ i18n:translate="string:help">Help</a></li>
+ <li id="n-sitesupport" tal:condition="nav_urls/sitesupport/href"><a href="${nav_urls/sitesupport/href}"
+ i18n:translate="string:sitesupport">Support us</a></li>
+ <li id="n-membership" tal:condition="nav_urls/membership/href"><a href="${nav_urls/membership/href}"
+ i18n:translate="string:membership">Membership</a></li>
+ <li id="n-pressroom" tal:condition="nav_urls/pressroom/href"><a href="${nav_urls/pressroom/href}"
+ i18n:translate="string:pressroom">Press room</a></li>
+ <li id="n-software" tal:condition="nav_urls/software/href"><a href="${nav_urls/software/href}"
+ i18n:translate="string:software">Our software</a></li>
+ <li id="n-localchapters" tal:condition="nav_urls/localchapters/href"><a href="${nav_urls/localchapters/href}"
+ i18n:translate="string:localchapters">Local chapters</a></li>
+ <li id="n-contactus" tal:condition="nav_urls/contactus/href"><a href="${nav_urls/contactus/href}"
+ i18n:translate="string:contactus">Contact us</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="p-search" class="portlet">
+ <h5 i18n:translate="string:search">Search</h5>
+ <div class="pBody">
+ <form name="searchform" action="${searchaction}" id="searchform">
+ <input id="searchInput" name="search" type="text"
+ i18n:attributes="accesskey string:accesskey-search | default"/>
+ <input type='submit' name="go" value="Go" class="searchButton"
+ i18n:attributes="value string:go"/> <input type='submit' name="fulltext"
+ value="Search" class="searchButton"
+ i18n:attributes="value string:search"/>
+ </form>
+ </div>
+ </div>
+ <div class="portlet" id="p-tb">
+ <h5 i18n:translate="string:toolbox">Toolbox</h5>
+ <div class="pBody">
+ <ul>
+ <li id="t-whatlinkshere"><a href="${nav_urls/whatlinkshere/href}"
+ i18n:translate="string:whatlinkshere">What links here</a></li>
+ <li id="t-recentchangeslinked"><a href="${nav_urls/recentchangeslinked/href}"
+ i18n:translate="string:recentchangeslinked">Related Changes</a></li>
+ <li tal:condition="feeds" id="feedlinks">
+ <span i18n:translate="string:feedlinks">Feeds:</span>
+ <span tal:repeat="feed feeds"
+ tal:attributes="id string:feed-${repeat/feed/key};"><a
+ tal:attributes="href feed/href;"
+ tal:content="feed/text">rss</a> </span>
+ </li>
+ <li id="t-contributions" tal:condition="nav_urls/contributions/href"><a href="${nav_urls/contributions/href}"
+ i18n:translate="string:contributions">Contributions</a></li>
+ <li id="t-emailuser" tal:condition="nav_urls/emailuser/href"><a href="${nav_urls/emailuser/href}"
+ i18n:translate="string:emailuser">Email this user</a></li>
+ <li id="t-upload" tal:condition="loggedin"><a href="${nav_urls/upload/href}"
+ i18n:translate="string:upload">Upload a file</a></li>
+ <li id="t-specialpages"><a href="${nav_urls/specialpages/href}"
+ i18n:translate="string:specialpages">Special Pages</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="p-lang" class="portlet" tal:condition="language_urls">
+ <h5 i18n:translate="string:otherlanguages">Language</h5>
+ <div class="pBody">
+ <ul>
+ <li tal:repeat="langlink language_urls">
+ <a tal:attributes="href langlink/href"
+ tal:content="structure langlink/text">English</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div><!-- end of the left (by default at least) column -->
+ <div class="visualClear"></div>
+ <div id="footer">
+ <div id="f-poweredbyico" tal:condition="poweredbyico">${poweredbyico}</div>
+ <div id="f-copyrightico" tal:condition="copyrightico">${copyrightico}</div>
+ <ul id="f-list">
+ <li id="f-lastmod" tal:condition="lastmod">${lastmod}</li>
+ <li id="f-viewcount" tal:condition="viewcount">${viewcount}</li>
+ <li id="f-credits" tal:condition="credits">${credits}</li>
+ <li id="f-copyright" tal:condition="copyright">${copyright}</li>
+ <li id="f-about" tal:condition="about">${about}</li>
+ <li id="f-disclaimer" tal:condition="disclaimer">${disclaimer}</li>
+ </ul>
+ </div>
+ </div>
+ ${reporttime}
+ </body>
+</html>