1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* Skin file for Pivot |
5
|
|
|
* |
6
|
|
|
* @file |
7
|
|
|
* @ingroup Skins |
8
|
|
|
*/ |
9
|
|
|
|
10
|
|
|
|
11
|
|
|
class SkinPivot extends SkinTemplate { |
|
|
|
|
12
|
|
|
public $skinname = 'pivot', $stylename = 'pivot', $template = 'pivotTemplate', $useHeadElement = true; |
|
|
|
|
13
|
|
|
|
14
|
|
|
public function setupSkinUserCss(OutputPage $out) { |
|
|
|
|
15
|
|
|
parent::setupSkinUserCss($out); |
16
|
|
|
global $wgPivotFeatures; |
|
|
|
|
17
|
|
|
$wgPivotFeaturesDefaults = array( |
18
|
|
|
'showActionsForAnon' => true, |
19
|
|
|
'fixedNavBar' => false, |
20
|
|
|
'usePivotTabs' => false, |
21
|
|
|
'showHelpUnderTools' => true, |
22
|
|
|
'showRecentChangesUnderTools' => true, |
23
|
|
|
'wikiName' => &$GLOBALS['wgSitename'], |
24
|
|
|
'wikiNameDesktop' => &$GLOBALS['wgSitename'], |
25
|
|
|
'navbarIcon' => false, |
26
|
|
|
'IeEdgeCode' => 1, |
27
|
|
|
'showFooterIcons' => false, |
28
|
|
|
'addThisPUBID' => '', |
29
|
|
|
'useAddThisShare' => '', |
30
|
|
|
'useAddThisFollow' => '' |
31
|
|
|
); |
32
|
|
|
foreach ($wgPivotFeaturesDefaults as $fgOption => $fgOptionValue) { |
33
|
|
|
if ( !isset($wgPivotFeatures[$fgOption]) ) { |
34
|
|
|
$wgPivotFeatures[$fgOption] = $fgOptionValue; |
35
|
|
|
} |
36
|
|
|
} |
37
|
|
|
switch ($wgPivotFeatures['IeEdgeCode']) { |
38
|
|
|
case 1: |
39
|
|
|
$out->addHeadItem('ie-meta', '<meta http-equiv="X-UA-Compatible" content="IE=edge" />'); |
40
|
|
|
break; |
41
|
|
|
case 2: |
42
|
|
|
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) |
43
|
|
|
header('X-UA-Compatible: IE=edge'); |
44
|
|
|
break; |
45
|
|
|
} |
46
|
|
|
$out->addModuleStyles('skins.pivot.styles'); |
47
|
|
|
} |
48
|
|
|
|
49
|
|
|
public function initPage(OutputPage $out) { |
50
|
|
|
global $wgLocalStylePath; |
|
|
|
|
51
|
|
|
parent::initPage($out); |
52
|
|
|
|
53
|
|
|
$viewport_meta = 'width=device-width, user-scalable=yes, initial-scale=1.0'; |
54
|
|
|
$out->addMeta('viewport', $viewport_meta); |
55
|
|
|
$out->addModuleScripts('skins.pivot.js'); |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
} |
59
|
|
|
|
60
|
|
|
|
61
|
|
|
class pivotTemplate extends BaseTemplate { |
|
|
|
|
62
|
|
|
public function execute() { |
63
|
|
|
global $wgUser; |
|
|
|
|
64
|
|
|
global $wgPivotFeatures; |
|
|
|
|
65
|
|
|
wfSuppressWarnings(); |
66
|
|
|
$this->html('headelement'); |
67
|
|
|
switch ($wgPivotFeatures['usePivotTabs']) { |
68
|
|
|
case true: |
69
|
|
|
ob_start(); |
70
|
|
|
$this->html('bodytext'); |
71
|
|
|
$out = ob_get_contents(); |
72
|
|
|
ob_end_clean(); |
73
|
|
|
$markers = array("<a", "</a", ">"); |
74
|
|
|
$tags = array("<a", "</a", ">"); |
75
|
|
|
$body = str_replace($markers, $tags, $out); |
76
|
|
|
break; |
77
|
|
|
default: |
78
|
|
|
$body = ''; |
79
|
|
|
break; |
80
|
|
|
} |
81
|
|
|
switch ($wgPivotFeatures['showFooterIcons']) { |
82
|
|
|
case true: |
83
|
|
|
$poweredbyType = "icononly"; |
84
|
|
|
$poweredbyMakeType = 'withImage'; |
85
|
|
|
break; |
86
|
|
|
default: |
87
|
|
|
$poweredbyType = "nocopyright"; |
88
|
|
|
$poweredbyMakeType = 'withoutImage'; |
89
|
|
|
break; |
90
|
|
|
} |
91
|
|
|
|
92
|
|
|
?> |
93
|
|
|
<!-- START PIVOTTEMPLATE --> |
94
|
|
|
<div class="off-canvas-wrap docs-wrap" data-offcanvas=""> |
95
|
|
|
<div class="inner-wrap"> |
96
|
|
|
<?php if ($wgPivotFeatures['fixedNavBar'] != false) echo "<div class='fixed'>"; ?> |
97
|
|
|
<nav class="tab-bar hide-for-print"> |
98
|
|
|
<section id="left-nav-aside" class="left-small show-for-small"> |
99
|
|
|
<a class="left-off-canvas-toggle"><span id="menu-user"><i class="fa fa-navicon fa-lg"></i></span></a> |
100
|
|
|
</section> |
101
|
|
|
|
102
|
|
|
<section id="middle-nav" class="middle tab-bar-section"> |
103
|
|
|
<h1 class="title"><a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>"> |
104
|
|
|
<span class="show-for-medium-up"><?php echo $wgPivotFeatures['wikiNameDesktop']; ?></span> |
105
|
|
|
<span class="show-for-small-only"> |
106
|
|
|
<?php if ($wgPivotFeatures['navbarIcon'] != false) { ?> |
107
|
|
|
<img alt="<?php echo $this->text('sitename'); ?>" src="<?php echo $this->text('logopath'); ?>" style="max-width: 64px;height:auto; max-height:36px; display: inline-block; vertical-align:middle;"> |
108
|
|
|
<?php } ?> |
109
|
|
|
<?php echo $wgPivotFeatures['wikiName']; ?></span></a></h1> |
110
|
|
|
</section> |
111
|
|
|
|
112
|
|
|
<section id="right-nav-aside" class="right-small"> |
113
|
|
|
<a class="right-off-canvas-toggle"><span id="menu-user"><i class="fa <?php if ($wgUser->isLoggedIn()): ?>fa-user<?php else: ?>fa-navicon<?php endif; ?> fa-lg"></i></span></a> |
114
|
|
|
</section> |
115
|
|
|
</nav> |
116
|
|
|
<?php if ($wgPivotFeatures['fixedNavBar'] != false) echo "</div>"; ?> |
117
|
|
|
<aside class="left-off-canvas-menu"> |
118
|
|
|
<ul class="off-canvas-list"> |
119
|
|
|
|
120
|
|
|
<li class="has-form"> |
121
|
|
|
<form action="/w/index.php" id="searchform-offcanvas" class="mw-search"> |
122
|
|
|
<div class="row collapse"> |
123
|
|
|
<div class="small-12 columns"> |
124
|
|
|
<input type="search" name="search" placeholder="Search" title="Search [alt-shift-f]" accesskey="f" id="searchInput-offcanvas" autocomplete="off"> |
125
|
|
|
</div> |
126
|
|
|
</div> |
127
|
|
|
</form> |
128
|
|
|
</li> |
129
|
|
|
|
130
|
|
|
<?php $this->renderSidebar() ?> |
131
|
|
|
</ul> |
132
|
|
|
</aside> |
133
|
|
|
|
134
|
|
|
<aside class="right-off-canvas-menu"> |
135
|
|
|
<ul class="off-canvas-list"> |
136
|
|
|
<?php if ($wgUser->isLoggedIn()): ?> |
137
|
|
|
<li id="personal-tools"><label>Personal</label></li> |
138
|
|
|
<?php foreach ($this->getPersonalTools() as $key => $item) { echo $this->makeListItem($key, $item); } ?> |
139
|
|
|
<?php else: ?> |
140
|
|
|
<?php if (isset($this->data['personal_urls']['anonlogin'])): ?> |
141
|
|
|
<li><a href="<?php echo $this->data['personal_urls']['anonlogin']['href']; ?>"><?php echo wfMessage( 'login' )->text() ?></a></li> |
142
|
|
|
<?php elseif (isset($this->data['personal_urls']['login'])): ?> |
143
|
|
|
<li><a href="<?php echo htmlspecialchars($this->data['personal_urls']['login']['href']); ?>"><?php echo wfMessage( 'login' )->text() ?></a></li> |
144
|
|
|
<?php else: ?> |
145
|
|
|
<li><?php echo Linker::link(Title::newFromText('Special:UserLogin'), wfMessage( 'login' )->text()); ?></li> |
146
|
|
|
<?php endif; ?> |
147
|
|
|
<?php endif; ?> |
148
|
|
|
</ul> |
149
|
|
|
</aside> |
150
|
|
|
|
151
|
|
|
<section id="main-section" class="main-section" <?php if ($wgPivotFeatures['fixedNavBar'] != false) echo "style='margin-top:2.8125em'"; ?>> |
152
|
|
|
|
153
|
|
|
<div id="page-content"> |
154
|
|
|
|
155
|
|
|
<div id="mw-js-message" style="display:none;"></div> |
156
|
|
|
|
157
|
|
|
<div class="row"> |
158
|
|
|
|
159
|
|
|
<div id="sidebar" class="large-2 medium-3 columns hide-for-small hide-for-print"> |
160
|
|
|
<ul class="side-nav"> |
161
|
|
|
<li class="name logo"> |
162
|
|
|
<a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>"> |
163
|
|
|
<img alt="<?php echo $this->text('sitename'); ?>" src="<?php echo $this->text('logopath') ?>" style="max-width: 100%;height: auto;display: inline-block; vertical-align: middle;"></a> |
164
|
|
|
</li> |
165
|
|
|
<li class="has-form"> |
166
|
|
|
<form action="/w/index.php" id="searchform" class="mw-search"> |
167
|
|
|
<div class="row collapse"> |
168
|
|
|
<div class="small-12 columns"> |
169
|
|
|
<input type="search" name="search" placeholder="Search" title="Search [alt-shift-f]" accesskey="f" id="searchInput" autocomplete="off"> |
170
|
|
|
</div> |
171
|
|
|
</div> |
172
|
|
|
</form> |
173
|
|
|
</li> |
174
|
|
|
|
175
|
|
|
<?php $this->renderSidebar() ?> |
176
|
|
|
</ul> |
177
|
|
|
</div> |
178
|
|
|
|
179
|
|
|
<div id="p-cactions" class="large-10 medium-9 columns"> |
180
|
|
|
|
181
|
|
|
<div class="row"> |
182
|
|
|
<div class="large-12 columns"> |
183
|
|
|
<!-- Output page indicators --> |
184
|
|
|
<?php echo $this->getIndicators(); ?> |
185
|
|
|
<!-- If user is logged in output echo location --> |
186
|
|
|
<?php if ($wgUser->isLoggedIn()): ?> |
187
|
|
|
<div id="echo-notifications"> |
188
|
|
|
<div id="echo-notifications-alerts"></div> |
189
|
|
|
<div id="echo-notifications-messages"></div> |
190
|
|
|
<div id="echo-notifications-notice"></div> |
191
|
|
|
</div> |
192
|
|
|
<?php endif; ?> |
193
|
|
|
<!--[if lt IE 9]> |
194
|
|
|
<div id="siteNotice" class="sitenotice"><?php echo $this->text('sitename') . ' '. wfMessage( 'pivot-browsermsg' )->text(); ?></div> |
195
|
|
|
<![endif]--> |
196
|
|
|
|
197
|
|
|
<?php if ( $this->data['sitenotice'] ) { ?><div id="siteNotice" class="sitenotice"><?php $this->html( 'sitenotice' ); ?></div><?php } ?> |
198
|
|
|
<?php if ( $this->data['newtalk'] ) { ?><div id="usermessage" class="newtalk"><?php $this->html( 'newtalk' ); ?></div><?php } ?> |
199
|
|
|
</div> |
200
|
|
|
</div> |
201
|
|
|
|
202
|
|
|
<?php if ($wgUser->isLoggedIn() || $wgPivotFeatures['showActionsForAnon']): ?> |
203
|
|
|
<a href="#" data-options="align:left" data-dropdown="drop1" class="button secondary small radius pull-right hide-for-print" id="drop"><i class="fa fa-navicon fa-lg"><span id="page-actions" class="show-for-medium-up"> <?php echo wfMessage( 'actions' )->text() ?></span></i></a> |
204
|
|
|
<ul id="drop1" class="tiny content f-dropdown" data-dropdown-content> |
205
|
|
|
<?php foreach($this->data['content_actions'] as $key => $tab) { echo preg_replace(array('/\sprimary="1"/', '/\scontext="[a-z]+"/', '/\srel="archives"/'),'',$this->makeListItem($key, $tab)); } ?> |
206
|
|
|
<?php wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true )); ?> |
207
|
|
|
</ul> |
208
|
|
|
|
209
|
|
|
<?php endif; |
210
|
|
|
$namespace = str_replace('_', ' ', $this->getSkin()->getTitle()->getNsText()); |
211
|
|
|
$displaytitle = $this->data['title']; |
212
|
|
|
if (!empty($namespace)) { |
213
|
|
|
$pagetitle = $this->getSkin()->getTitle(); |
214
|
|
|
$newtitle = str_replace($namespace.':', '', $pagetitle); |
215
|
|
|
$displaytitle = str_replace($pagetitle, $newtitle, $displaytitle); |
216
|
|
|
?><h4 class="namespace label"><?php print $namespace; ?></h4><?php } ?> |
217
|
|
|
<div id="content"> |
218
|
|
|
<h2 class="title"><?php print $displaytitle; ?></h2> |
219
|
|
|
<?php if ($wgPivotFeatures['useAddThisShare'] !== '') { ?> |
220
|
|
|
<!-- Go to www.addthis.com/dashboard to customize your tools --> |
221
|
|
|
<div class="<?php echo $wgPivotFeatures['useAddThisShare']; ?> hide-for-print"></div> |
222
|
|
|
<!-- Go to www.addthis.com/dashboard to customize your tools --> |
223
|
|
|
<?php } ?> |
224
|
|
|
<?php if ( $this->data['isarticle'] ) { ?><h3 id="tagline"><?php $this->msg( 'tagline' ) ?></h3><?php } ?> |
225
|
|
|
<h5 id="sitesub" class="subtitle"><?php $this->html('subtitle') ?></h5> |
226
|
|
|
<div id="contentSub" class="clear_both"></div> |
227
|
|
|
<div id="bodyContent" class="mw-bodytext"> |
228
|
|
|
<?php |
229
|
|
|
switch ($wgPivotFeatures['usePivotTabs']) { |
230
|
|
|
case true: |
231
|
|
|
echo $body; |
232
|
|
|
break; |
233
|
|
|
default: |
234
|
|
|
$this->html('bodytext'); |
235
|
|
|
break; |
236
|
|
|
} |
237
|
|
|
?> |
238
|
|
|
<div class="clear_both"></div> |
239
|
|
|
</div> |
240
|
|
|
</div> |
241
|
|
|
<div id="categories" class="row"> |
242
|
|
|
<div class="small-12 columns"> |
243
|
|
|
<div class="group"><?php $this->html('catlinks'); ?></div> |
244
|
|
|
<?php $this->html('dataAfterContent'); ?> |
245
|
|
|
</div> |
246
|
|
|
</div> |
247
|
|
|
|
248
|
|
|
<footer class="row"> |
249
|
|
|
|
250
|
|
|
<div id="footer"> |
251
|
|
|
<div id="footer-left" class="small-12 medium-8 large-9 columns"> |
252
|
|
|
<ul id="footer-left"> |
253
|
|
|
<?php foreach ($this->getFooterLinks("flat") as $key) { ?> |
254
|
|
|
<li id="footer-<?php echo $key ?>"><?php $this->html($key) ?></li> |
255
|
|
|
<?php } ?> |
256
|
|
|
</ul> |
257
|
|
|
</div> |
258
|
|
|
<div id="footer-right-icons" class="small-12 medium-4 large-3 columns hide-for-print"> |
259
|
|
|
<ul id="footer-right"> |
260
|
|
|
<li class="social-follow hide-for-print"> |
261
|
|
|
<?php if ($wgPivotFeatures['useAddThisFollow'] !== '') { ?> |
262
|
|
|
<div class="social-links"> |
263
|
|
|
<!-- Go to www.addthis.com/dashboard to customize your tools --> |
264
|
|
|
<div class="<?php echo $wgPivotFeatures['useAddThisFollow']; ?> hide-for-print"></div> |
265
|
|
|
</div> |
266
|
|
|
<?php } ?> |
267
|
|
|
</li> |
268
|
|
|
<?php foreach ($this->getFooterIcons($poweredbyType) as $blockName => $footerIcons) { ?> |
269
|
|
|
<li class="<?php echo $blockName ?>"><?php foreach ($footerIcons as $icon) { ?> |
270
|
|
|
<?php echo $this->getSkin()->makeFooterIcon($icon, $poweredbyMakeType); ?> |
271
|
|
|
<?php } ?> |
272
|
|
|
</li> |
273
|
|
|
<?php } ?> |
274
|
|
|
</ul> |
275
|
|
|
</div> |
276
|
|
|
</div> |
277
|
|
|
</footer> |
278
|
|
|
|
279
|
|
|
</div> |
280
|
|
|
</div> |
281
|
|
|
</div> |
282
|
|
|
|
283
|
|
|
</section> |
284
|
|
|
|
285
|
|
|
</div> |
286
|
|
|
</div> |
287
|
|
|
<a class="exit-off-canvas"></a> |
288
|
|
|
</div> |
289
|
|
|
|
290
|
|
|
|
291
|
|
|
<?php $this->printTrail(); ?> |
292
|
|
|
|
293
|
|
|
<?php if ($this->data['isarticle'] && $wgPivotFeatures['addThisPUBID'] !== '') { ?> |
294
|
|
|
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=<?php echo $wgPivotFeatures['addThisPUBID']; ?>" async="async">></script> |
295
|
|
|
<?php } ?> |
296
|
|
|
</body> |
297
|
|
|
</html> |
298
|
|
|
|
299
|
|
|
<?php |
300
|
|
|
wfRestoreWarnings(); |
301
|
|
|
|
302
|
|
|
} |
303
|
|
|
|
304
|
|
|
function renderSidebar() { |
|
|
|
|
305
|
|
|
$sidebar = $this->getSidebar(); |
306
|
|
|
$toolbox = $this->getToolbox(); |
307
|
|
|
foreach ($sidebar as $boxName => $box) { if ( ($box['header'] != wfMessage( 'toolbox' )->text()) ) { |
308
|
|
|
echo '<li id='.Sanitizer::escapeId( $box['id'] ); Linker::tooltip( $box['id'] ).'>'; |
309
|
|
|
echo '<li><label>'.htmlspecialchars( $box['header'] ).'</label></li>'; |
310
|
|
|
if ( is_array( $box['content'] ) ) { |
311
|
|
|
foreach ($box['content'] as $key => $item) { echo $this->makeListItem($key, $item); } |
312
|
|
|
} } |
313
|
|
|
} |
314
|
|
|
echo '<li><label>Toolbox</label></li>'; |
315
|
|
|
foreach ($toolbox as $key => $tbitem) { echo $this->makeListItem($key, $tbitem); } |
316
|
|
|
} |
317
|
|
|
} |
318
|
|
|
?> |
319
|
|
|
|
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.