[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Resource loader module for user preference customizations. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 * @author Trevor Parscal 22 * @author Roan Kattouw 23 */ 24 25 /** 26 * Module for user preference customizations 27 */ 28 class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule { 29 30 /* Protected Members */ 31 32 protected $modifiedTime = array(); 33 34 protected $origin = self::ORIGIN_CORE_INDIVIDUAL; 35 36 /* Methods */ 37 38 /** 39 * @param ResourceLoaderContext $context 40 * @return array|int|mixed 41 */ 42 public function getModifiedTime( ResourceLoaderContext $context ) { 43 $hash = $context->getHash(); 44 if ( !isset( $this->modifiedTime[$hash] ) ) { 45 global $wgUser; 46 $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() ); 47 } 48 49 return $this->modifiedTime[$hash]; 50 } 51 52 /** 53 * @param ResourceLoaderContext $context 54 * @return array 55 */ 56 public function getStyles( ResourceLoaderContext $context ) { 57 global $wgUser; 58 59 if ( !$this->getConfig()->get( 'AllowUserCssPrefs' ) ) { 60 return array(); 61 } 62 63 $options = $wgUser->getOptions(); 64 65 // Build CSS rules 66 $rules = array(); 67 68 // Underline: 2 = browser default, 1 = always, 0 = never 69 if ( $options['underline'] < 2 ) { 70 $rules[] = "a { text-decoration: " . 71 ( $options['underline'] ? 'underline' : 'none' ) . "; }"; 72 } else { 73 # The scripts of these languages are very hard to read with underlines 74 $rules[] = 'a:lang(ar), a:lang(kk-arab), a:lang(mzn), ' . 75 'a:lang(ps), a:lang(ur) { text-decoration: none; }'; 76 } 77 if ( $options['editfont'] !== 'default' ) { 78 // Double-check that $options['editfont'] consists of safe characters only 79 if ( preg_match( '/^[a-zA-Z0-9_, -]+$/', $options['editfont'] ) ) { 80 $rules[] = "textarea { font-family: {$options['editfont']}; }\n"; 81 } 82 } 83 $style = implode( "\n", $rules ); 84 if ( $this->getFlip( $context ) ) { 85 $style = CSSJanus::transform( $style, true, false ); 86 } 87 return array( 'all' => $style ); 88 } 89 90 /** 91 * @return string 92 */ 93 public function getGroup() { 94 return 'private'; 95 } 96 97 /** 98 * @return array 99 */ 100 public function getDependencies() { 101 return array( 'mediawiki.user' ); 102 } 103 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |