Source files moved into "src" directory
[le-skin.git] / src / LE.php
1 <?php
2 /**
3  * Libre Entreprise Mediawiki Skin
4  *
5  * Copyright (c) 2009, Michaël Parienti <mparienti@easter-eggs.com>
6  *
7  * Creative Common Attribution-Share Alike 2.0 France
8  *
9  * You are free:
10  * + to Share — to copy, distribute and transmit the work
11  * + to Remix — to adapt the work
12  *
13  * Under the following conditions:
14  * + Attribution — You must attribute the work in the manner specified
15  *   by the author or licensor (but not in any way that suggests that
16  *   they endorse you or your use of the work).
17  * + Share Alike — If you alter, transform, or build upon this work,
18  *   you may distribute the resulting work only under the same or
19  *   similar license to this one.
20  *
21  * With the understanding that:
22  * + Waiver — Any of the above conditions can be waived if you get
23  *   permission from the copyright holder.
24  * + Other Rights — In no way are any of the following rights affected
25  *   by the license:
26  *   o Your fair dealing or fair use rights;
27  *   o The author's moral rights;
28  *   o Rights other persons may have either in the work itself or in
29  *     how the work is used, such as publicity or privacy rights.
30  * + Notice — For any reuse or distribution, you must make clear to
31  *   others the license terms of this work. The best way to do this is
32  *   with a link to http://creativecommons.org/licenses/by-sa/2.0/fr/deed.en.
33  *
34  *
35  * Based on original monobook skin.
36  *
37  * @todo document
38  * @package MediaWiki
39  * @subpackage Skins
40  */
41
42 if( !defined( 'MEDIAWIKI' ) )
43         die();
44
45 /** */
46 require_once('includes/SkinTemplate.php');
47
48 /**
49  * Inherit main code from SkinTemplate, set the CSS and template filter.
50  * @todo document
51  * @package MediaWiki
52  * @subpackage Skins
53  */
54 class SkinLE extends SkinTemplate {
55         /** Using monobook. */
56         function initPage( &$out ) {
57                 SkinTemplate::initPage( $out );
58                 $this->skinname  = 'le';
59                 $this->stylename = 'le';
60                 $this->template  = 'LETemplate';
61         }
62 }
63
64 /**
65  * @todo document
66  * @package MediaWiki
67  * @subpackage Skins
68  */
69 class LETemplate extends QuickTemplate {
70
71         function __construct() {
72                 require_once('skins/LeSettings.php');
73
74                 $this->configdata = $wgTemplateData;
75         }
76
77         /**
78          * Template filter callback.
79          * Takes an associative array of data set from a SkinTemplate-based
80          * class, and a wrapper for MediaWiki's localization database, and
81          * outputs a formatted page.
82          *
83          * @access private
84          */
85         function execute() {
86                 // Suppress warnings to prevent notices about missing indexes in $this->data
87                 wfSuppressWarnings();
88
89 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
90 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
91   <head>
92     <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
93     <?php $this->html('headlinks') ?>
94     <?php $this->html('headscripts') ?>
95     <title><?php $this->text('pagetitle') ?></title>
96     <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css"; /*]]>*/</style>
97     <link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css" />
98     <meta http-equiv="imagetoolbar" content="no" />
99     <?php if($this->data['jsvarurl'  ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl'  ) ?>"></script><?php } ?>
100     <script type="<?php $this->text('jsmimetype') ?>" src="<?php                                   $this->text('stylepath' ) ?>/common/wikibits.js"></script>
101     <?php if($this->data['usercss'   ]) { ?><style type="text/css"><?php              $this->html('usercss'   ) ?></style><?php    } ?>
102     <?php if($this->data['userjs'    ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs'    ) ?>"></script><?php } ?>
103     <?php if($this->data['userjsprev']) { ?><script type="<?php $this->text('jsmimetype') ?>"><?php      $this->html('userjsprev') ?></script><?php   } ?>
104     <?php if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
105   </head>
106   <body <?php if($this->data['body_ondblclick']) { ?>ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
107         <?php if($this->data['body_onload'    ]) { ?>onload="<?php     $this->text('body_onload')     ?>"<?php } ?>
108         <?php if($this->data['nsclass'        ]) { ?>class="<?php      $this->text('nsclass')         ?>"<?php } ?>>
109
110
111         <div id="header">
112            <h1><a href="/"><?php echo $this->configdata['siteTitle'] ;?></a></h1>
113             <ul id="usersurls">
114            <?php foreach($this->data['personal_urls'] as $key => $item) {
115                ?><li id="pt-<?php echo htmlspecialchars($key) ?>"><a href="<?php
116                echo htmlspecialchars($item['href']) ?>"<?php
117                if(!empty($item['class'])) { ?> class="<?php
118                echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
119                echo htmlspecialchars($item['text']) ?></a></li><?php
120             } ?>
121             </ul>
122 <!--
123           <div id="search">
124            </div> -->
125         </div>
126
127
128
129         <div id="content">        <a name="top" id="top"></a>
130
131         <?php if ($this->data['loggedin']) {?>
132         <div id="pagesactions">
133           <ul>
134              <?php foreach(array_reverse($this->data['content_actions']) as $key => $action) {
135                ?><li 
136                <?php if($action['class']) { ?>class="<?php echo htmlspecialchars($action['class']) ?>"<?php } ?> 
137                ><a href="<?php echo htmlspecialchars($action['href']) ?>"><?php
138                echo htmlspecialchars($action['text']) ?></a></li><?php
139              } ?>
140           </ul>
141         </div>
142         <?php } ?>
143
144
145           <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
146           <h1 class="firstHeading"><?php $this->text('title') ?></h1>
147           <div id="bodyContent">
148             <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
149             <div id="contentSub"><?php $this->html('subtitle') ?></div>
150             <?php if($this->data['undelete']) { ?><div id="contentSub"><?php     $this->html('undelete') ?></div><?php } ?>
151             <?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk')  ?></div><?php } ?>
152             <!-- start content -->
153             <?php $this->html('bodytext') ?>
154             <?php if($this->data['catlinks']) { ?><div id="catlinks"><?php       $this->html('catlinks') ?></div><?php } ?>
155             <!-- end content -->
156
157           </div>
158          </div>
159
160         <div id="floatright">
161         <div class="navbar">
162          <h3>Sur ce site</h3>
163            <ul>
164              <li><a href="/">Accueil</a></li>
165                <li id='search-item'
166                <form name="searchform" action="<?php $this->text('searchaction') ?>" id="searchform">
167                  <input id="searchInput" name="search" type="text"
168                    <?php if($this->haveMsg('accesskey-search')) {
169                      ?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
170                      if( isset( $this->data['search'] ) ) {
171                      ?> value="<?php $this->text('search') ?>"<?php } ?> /><br />
172                   <!-- <input type='submit' name="go" class="searchButton" id="searchGoButton"
173                      value="<?php $this->msg('go') ?>"
174                    /><br /> -->
175                     <input type='submit' name="fulltext"
176                      class="searchButton"
177                      value="<?php $this->msg('search') ?>" />
178                               </form>
179               </li>
180         </div>
181
182         <?php if($this->configdata['showToolboxFirst'] && $this->configdata['showToolbox']) { $this->displayToolbox(); }  ?>
183
184         <?php $this->displayNavbars(); ?>
185
186         <?php if(!$this->configdata['showToolboxFirst'] && $this->configdata['showToolbox']) { $this->displayToolbox(); } ?>
187
188         </div> <!-- floatright -->
189
190
191       <div id="footer">
192         <?php if($this->configdata['showFooteritems']['poweredbyico'] && $this->data['poweredbyico']) { ?><div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div><?php } ?>
193         <?php if($this->configdata['showFooteritems']['copyrightico'] && $this->data['copyrightico']) { ?><div id="f-copyrightico"><?php $this->html('copyrightico') ?></div><?php } ?>
194         <ul id="f-list">
195           <?php if($this->configdata['showFooteritems']['lastmod'] && $this->data['lastmod'   ]) { ?><li id="f-lastmod"><?php    $this->html('lastmod')    ?></li><?php } ?>
196           <?php if($this->configdata['showFooteritems']['viewcount'] && $this->data['viewcount' ]) { ?><li id="f-viewcount"><?php  $this->html('viewcount')  ?></li><?php } ?>
197           <?php if($this->configdata['showFooteritems']['numberofwatchingusers'] && $this->data['numberofwatchingusers' ]) { ?><li id="f-numberofwatchingusers"><?php  $this->html('numberofwatchingusers') ?></li><?php } ?>
198           <?php if($this->configdata['showFooteritems']['credits'] && $this->data['credits'   ]) { ?><li id="f-credits"><?php    $this->html('credits')    ?></li><?php } ?>
199           <?php if($this->configdata['showFooteritems']['copyright'] && $this->data['copyright' ]) { ?><li id="f-copyright"><?php  $this->html('copyright')  ?></li><?php } ?>
200           <?php if($this->configdata['showFooteritems']['about'] && $this->data['about'     ]) { ?><li id="f-about"><?php      $this->html('about')      ?></li><?php } ?>
201           <?php if($this->configdata['showFooteritems']['disclaimer'] && $this->data['disclaimer']) { ?><li id="f-disclaimer"><?php $this->html('disclaimer') ?></li><?php } ?>
202           <?php if($this->configdata['showFooteritems']['tagline'] && $this->data['tagline']) { ?><li id="f-tagline"><?php echo $this->data['tagline'] ?></li><?php } ?>
203         </ul>
204           <?php if($this->configdata['showFooteritems']['skin-license']) { ?>
205 <span class='skin-license'><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/fr/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/2.0/fr/80x15.png" /></a><br />The <a href='http://le-skin.easter-eggs.org/'>skin</a> used by this site is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/fr/">Creative Commons Attribution-Share Alike 2.0 France License</a>.</span>
206           <?php } ?>
207       </div>
208
209     <?php $this->html('reporttime') ?>
210
211   </body>
212 </html>
213 <?php
214         wfRestoreWarnings();
215         }
216
217
218         function displayToolbox() 
219         { ?>
220         <div class="navbar">
221           <h3><?php $this->msg('toolbox') ?></h3>
222             <ul>
223                   <?php if($this->data['notspecialpage']) { foreach( array( 'whatlinkshere', 'recentchangeslinked' ) as $special ) { ?>
224                   <?php if($this->configdata['showToolboxitems'][$special]) { ?>
225                   <li id="t-<?php echo $special?>"><a href="<?php
226                     echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
227                     ?>"><?php echo $this->msg($special) ?></a></li>
228                   <?php } ?>
229                   <?php } } ?>
230               <?php if($this->configdata['showToolboxitems']['trackbacklink'] && isset($this->data['nav_urls']['trackbacklink'])) { ?>
231                   <li id="t-trackbacklink"><a href="<?php
232                     echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
233                     ?>"><?php echo $this->msg('trackbacklink') ?></a></li>
234               <?php } ?>
235               <?php if($this->configdata['showToolboxitems']['feeds'] && $this->data['feeds']) { ?><li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
236                 ?><span id="feed-<?php echo htmlspecialchars($key) ?>"><a href="<?php
237                 echo htmlspecialchars($feed['href']) ?>"><?php echo htmlspecialchars($feed['text'])?></a>&nbsp;</span>
238                 <?php } ?></li><?php } ?>
239               <?php foreach( array('contributions', 'emailuser', 'upload', 'specialpages') as $special ) { ?>
240                 <?php if($this->configdata['showToolboxitems'][$special]) { ?>                
241               <?php if($this->data['nav_urls'][$special]) {?><li id="t-<?php echo $special ?>"><a href="<?php
242                 echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
243                 ?>"><?php $this->msg($special) ?></a></li><?php } ?>
244               <?php } ?>
245               <?php } ?>
246               <?php if($this->configdata['showToolboxitems']['printableversion'] && !empty($this->data['nav_urls']['print']['href'])) { ?>
247               <li id="t-print"><a href="<?php
248                     echo htmlspecialchars($this->data['nav_urls']['print']['href'])
249                     ?>"><?php echo $this->msg('printableversion') ?></a></li>
250               <?php } ?>
251
252             </ul>
253         </div>
254         <?php
255         }
256
257         function displayNavbars() 
258         { ?>
259         <?php foreach ($this->configdata['navbars'] as $navbar) { ?>
260         <div class="navbar">
261            <h3 ><?php echo $navbar['title'];?></h3>
262            <ul>
263            <?php foreach ($navbar['links'] as $link) { ?>
264              <?php printf('<li><a href="%s">%s</a></li>', $link['url'], htmlspecialchars($link['name'])); ?>
265            <?php } ?>
266            </ul>
267           </div>
268         <?php } ?>
269             <?php
270         }
271
272 }
273 ?>