Browse Source

Merge branch 'master' of https://github.com/thingles/foreground

Tom Hutchison 10 years ago
parent
commit
f435b1bd08
7 changed files with 341 additions and 129 deletions
  1. 12 0
      CHANGELOG.md
  2. 27 0
      CONTRIBUTING.md
  3. 122 77
      Foreground.skin.php
  4. 30 2
      README.md
  5. 42 41
      assets/scripts/foreground.js
  6. 105 8
      assets/stylesheets/foreground.css
  7. 3 1
      foreground.php

+ 12 - 0
CHANGELOG.md

@@ -0,0 +1,12 @@
+## Version 1.1
+
+* [feature] Addition of Social Media Follow Icons using AddThis horizontal follow bar
+* [feature] Turn on or off the display of standard MW footer icons
+* [feature] Navbar image/icon, ability to change title shown in navbar independent of $wgSitename, and turn on/off image/icon in navbar.
+* [feature] Ability to change the displayed title name independent of $wgSitename 
+* [bug fix] Parent <div> for mw-content-text <div>
+* [bug fix] Missing icon for Atom(RSS) Feedlink
+* [bug fix] Fix Font Awesome icon alignment
+* [feature] i18n json update/create shim, i18n.php file for localization deprecated in MW 1.23 and being removed in MW 1.24, and shim is backwards compatable to MW 1.17
+* Added CONTRIBUTING.md file
+* Update to README.md

+ 27 - 0
CONTRIBUTING.md

@@ -0,0 +1,27 @@
+# Contributing to Foreground
+
+## Bug fixes
+
+All bug fixes should PR against the `release/x.x` branch of the version of Foreground with the bug. If you want to fix a bug, please do the following:
+
+1. Open an issue in [Issues](https://github.com/thingles/foreground/issues) and make sure you tag it with the `bug` tag. If the bug already is a known issue, skip this step.
+2. Create a branch in your repo with the name of the `bug` or whatever you feel comfortable with(patch-1, bugX, etc.) using the Foreground's `release/x.x` branch as a base.
+3. If it will take time to fix, periodically check and pull down updates to Foreground's `release/x.x` branch as you are working on the bug fix. Commits can and will occur to `release/x.x` which may affect your `bug fix` branch.
+4. When you are ready to issue a PR against the `release/x.x` branch of Foreground, please use `[bug]` as a tag at the beginning of the PR's title.
+5. Please reference the issue# in the PR's description and include any information for testing the bug fix.
+
+## Development of New Feature
+
+All new features for Foreground should PR against the `develop` branch. If you want to add a new feature, you should do the following:
+
+1. Open an issue in [Issues](https://github.com/thingles/foreground/issues) and make sure you tag it with the `feature` tag.
+2. Create a branch in your repo with the name of the `feature` or whatever you feel comfortable with using Foreground's `develop` branch as a base.
+3. Periodically check and pull down updates to Foreground's `develop` branch as you are working on your proposed feature. Commits can and will occur to `develop` which may affect your `feature` branch.
+4. When you are ready to issue a PR against the `develop` branch of Foreground, please use `[feature]` as a tag at the beginning of the PR's title.
+5. Please reference the issue# in the PR's description and include any information for testing the feature.
+
+It is very important to **note all b/c(backwards compatibility) changes** in a proposed new feature. A feature which will break b/c will not be merged into a current release version. It will create a new release version if excepted.
+
+## Proposed Feature Branches
+
+If you want to work on an existing feature proposed by Foreground, please see the `feature/name-of-feature` branch for more information. PRs should be issued against the specific `feature/name-of-feature` branch.

+ 122 - 77
Foreground.skin.php

@@ -19,7 +19,11 @@ class Skinforeground extends SkinTemplate {
 			'NavWrapperType' => 'divonly',
 			'showHelpUnderTools' => true,
 			'showRecentChangesUnderTools' => true,
-			'IeEdgeCode' => 1
+			'wikiName' => &$GLOBALS['wgSitename'],
+			'navbarIcon' => false,
+			'IeEdgeCode' => 1,
+			'showFooterIcons' => 0,
+			'addThisFollowPUBID' => ''
 		);
 		foreach ($wgForegroundFeaturesDefaults as $fgOption => $fgOptionValue) {
 			if ( !isset($wgForegroundFeatures[$fgOption]) ) {
@@ -65,75 +69,98 @@ class foregroundTemplate extends BaseTemplate {
 				echo "<div id='navwrapper' class='". $wgForegroundFeatures['NavWrapperType']. "'>";
 				break;
 		}
+		switch ($wgForegroundFeatures['showFooterIcons']) {
+			case '0':
+				$footerLeftClass = 'small-8 large-centered columns text-center';
+				$footerRightClass = 'large-12 small-12 columns';
+				$poweredbyType = "nocopyright";
+				$poweredbyMakeType = 'withoutImage';
+				break;	
+			case '1':
+				$footerLeftClass = 'large-8 small-12 columns';
+				$footerRightClass = 'large-4 small-12 columns';
+				$poweredbyType = "icononly";
+				$poweredbyMakeType = 'withImage';
+				break;
+		}
 ?>
 <!-- START FOREGROUNDTEMPLATE -->
 		<nav class="top-bar">
-						<ul class="title-area">
-							<li class="name"><h1><a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>"><?php echo $this->text('sitename'); ?></a></h1></li>
-						   <li class="toggle-topbar menu-icon"><a href="#"><span><?php echo wfMessage( 'foreground-menutitle' )->text(); ?></span></a></li>
-						</ul>
-
-						<section class="top-bar-section">
-
-		    		<ul id="top-bar-left" class="left">
-		 						<li class="divider"></li>
-									<?php foreach ( $this->getSidebar() as $boxName => $box ) { if ( ($box['header'] != wfMessage( 'toolbox' )->text())  ) { ?>
-									<li class="has-dropdown active"  id='<?php echo Sanitizer::escapeId( $box['id'] ) ?>'<?php echo Linker::tooltip( $box['id'] ) ?>>
-											<a href="#"><?php echo htmlspecialchars( $box['header'] ); ?></a>
-											<?php if ( is_array( $box['content'] ) ) { ?>
-												<ul class="dropdown">
-													<?php foreach ( $box['content'] as $key => $item ) { echo $this->makeListItem( $key, $item ); } ?>
-        								</ul>
-											<?php } } ?>
-									<?php } ?>
-		    		</ul>
-
-		        <ul id="top-bar-right" class="right">
-			      <li class="has-form">
-		        	<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform" class="mw-search">
-		        		<div class="row collapse">
-		            	<div class="small-8 columns">
-		        				<?php echo $this->makeSearchInput(array('placeholder' => wfMessage('searchsuggest-search')->text(), 'id' => 'searchInput') ); ?>
-		        			</div>
-		        			 <div class="small-4 columns">
-		        				<button type="submit" class="button search"><?php echo wfMessage( 'search' )->text() ?></button>
-		        			</div>
-		        		</div>
-		        	</form>
-		        </li>
-		         <li class="divider show-for-small"></li>
-		         <li class="has-form">
-
-								<li class="has-dropdown active"><a href="#"><i class="fa fa-cogs"></i></a>
-									<ul id="toolbox-dropdown" class="dropdown">
-										<?php foreach ( $this->getToolbox() as $key => $item ) { echo $this->makeListItem($key, $item); } ?>
-										<?php if ($wgForegroundFeatures['showRecentChangesUnderTools']): ?><li id="n-recentchanges"><?php echo Linker::specialLink('Recentchanges') ?></li><?php endif; ?>
-										<?php if ($wgForegroundFeatures['showHelpUnderTools']): ?><li id="n-help" <?php echo Linker::tooltip('help') ?>><a href="/wiki/Help:Contents"><?php echo wfMessage( 'help' )->text() ?></a></li><?php endif; ?>
-									</ul>
-								</li>
-
-							<?php if ($wgUser->isLoggedIn()): ?>
-								<li id="personal-tools-dropdown" class="has-dropdown active"><a href="#"><i class="fa fa-user"></i></a>
-									<ul class="dropdown">
-									<?php foreach ( $this->getPersonalTools() as $key => $item ) { echo $this->makeListItem($key, $item); } ?>
-									</ul>
-								</li>
-
-							<?php else: ?>
+			<ul class="title-area">
+				<li class="name">
+					<h1 class="title-name">
+					<a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>">
+					<?php if ($wgForegroundFeatures['navbarIcon'] != '0') { ?>
+						<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;">
+					<?php } ?>					
+					<div class="title-name" style="display: inline-block;"><?php echo $wgForegroundFeatures['wikiName']; ?></div>
+					</a>
+					</h1>
+				</li>
+				<li class="toggle-topbar menu-icon">
+					<a href="#"><span><?php echo wfMessage( 'foreground-menutitle' )->text(); ?></span></a>
+				</li>
+			</ul>
+
+		<section class="top-bar-section">
+
+			<ul id="top-bar-left" class="left">
+				<li class="divider"></li>
+					<?php foreach ( $this->getSidebar() as $boxName => $box ) { if ( ($box['header'] != wfMessage( 'toolbox' )->text())  ) { ?>
+				<li class="has-dropdown active"  id='<?php echo Sanitizer::escapeId( $box['id'] ) ?>'<?php echo Linker::tooltip( $box['id'] ) ?>>
+					<a href="#"><?php echo htmlspecialchars( $box['header'] ); ?></a>
+						<?php if ( is_array( $box['content'] ) ) { ?>
+							<ul class="dropdown">
+								<?php foreach ( $box['content'] as $key => $item ) { echo $this->makeListItem( $key, $item ); } ?>
+							</ul>
+								<?php } } ?>
+						<?php } ?>
+			</ul>
+
+			<ul id="top-bar-right" class="right">
+				<li class="has-form">
+					<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform" class="mw-search">
+						<div class="row">
+						<div class="small-12 columns">
+							<?php echo $this->makeSearchInput(array('placeholder' => wfMessage('searchsuggest-search')->text(), 'id' => 'searchInput') ); ?>
+							<button type="submit" class="button search"><?php echo wfMessage( 'search' )->text() ?></button>
+						</div>
+						</div>
+					</form>
+				</li>
+				<li class="divider show-for-small"></li>
+				<li class="has-form">
+
+				<li class="has-dropdown active"><a href="#"><i class="fa fa-cogs"></i></a>
+					<ul id="toolbox-dropdown" class="dropdown">
+						<?php foreach ( $this->getToolbox() as $key => $item ) { echo $this->makeListItem($key, $item); } ?>
+						<?php if ($wgForegroundFeatures['showRecentChangesUnderTools']): ?><li id="n-recentchanges"><?php echo Linker::specialLink('Recentchanges') ?></li><?php endif; ?>
+						<?php if ($wgForegroundFeatures['showHelpUnderTools']): ?><li id="n-help" <?php echo Linker::tooltip('help') ?>><a href="/wiki/Help:Contents"><?php echo wfMessage( 'help' )->text() ?></a></li><?php endif; ?>
+					</ul>
+				</li>
+
+				<?php if ($wgUser->isLoggedIn()): ?>
+				<li id="personal-tools-dropdown" class="has-dropdown active"><a href="#"><i class="fa fa-user"></i></a>
+					<ul class="dropdown">
+						<?php foreach ( $this->getPersonalTools() as $key => $item ) { echo $this->makeListItem($key, $item); } ?>
+					</ul>
+				</li>
+
+						<?php else: ?>
 							<li>
 								<?php if (isset($this->data['personal_urls']['anonlogin'])): ?>
-									<a href="<?php echo $this->data['personal_urls']['anonlogin']['href']; ?>"><?php echo wfMessage( 'login' )->text() ?></a>
+								<a href="<?php echo $this->data['personal_urls']['anonlogin']['href']; ?>"><?php echo wfMessage( 'login' )->text() ?></a>
 								<?php elseif (isset($this->data['personal_urls']['login'])): ?>
 									<a href="<?php echo htmlspecialchars($this->data['personal_urls']['login']['href']); ?>"><?php echo wfMessage( 'login' )->text() ?></a>
-								<?php else: ?>
-									<?php echo Linker::link(Title::newFromText('Special:UserLogin'), wfMessage( 'login' )->text()); ?>
-								<?php endif; ?>
+									<?php else: ?>
+										<?php echo Linker::link(Title::newFromText('Special:UserLogin'), wfMessage( 'login' )->text()); ?>
+									<?php endif; ?>
 							</li>
 
-							<?php endif; ?>
+				<?php endif; ?>
 
-		       </ul>
-		     </section>
+			</ul>
+		</section>
 		</nav>
 		<?php if ($wgForegroundFeatures['NavWrapperType'] != '0') echo "</div>"; ?>
 		
@@ -174,27 +201,45 @@ class foregroundTemplate extends BaseTemplate {
 					<?php if ( $this->data['isarticle'] ) { ?><h3 id="tagline"><?php $this->msg( 'tagline' ) ?></h3><?php } ?>
 					<h5 class="subtitle"><?php $this->html('subtitle') ?></h5>
 					<div class="clear_both"></div>
-					<?php $this->html('bodytext') ?>
+					<div class="mw-bodytext">
+						<?php $this->html('bodytext') ?>
+						<div class="clear_both"></div>
+					</div>
 		    	<div class="group"><?php $this->html('catlinks'); ?></div>
 		    	<?php $this->html('dataAfterContent'); ?>
 		    </div>
 		</div>
 
-		<footer class="row">
-
-		<ul class="large-12 columns">
-		<?php foreach ( $this->getFooterLinks( "flat" ) as $key ) { ?>
-			<li id="footer-<?php echo $key ?>"><?php $this->html( $key ) ?></li>
-		<?php } ?>
-		</ul>
-		<ul> <?php foreach ( $this->getFooterIcons( "nocopyright" ) as $blockName => $footerIcons ) { ?>
-	<li class="<?php echo $blockName ?>"><?php foreach ( $footerIcons as $icon ) { ?>
-	    <?php echo $this->getSkin()->makeFooterIcon( $icon, 'withoutImage' ); ?>
- 						<?php } ?>
-        </li>
-				<?php } ?>
-		</ul>
-		</footer>
+			<footer class="row">
+				<div id="footer">
+					<?php if ($wgForegroundFeatures['addThisFollowPUBID'] != '') { ?>
+						<div class="social-footer large-12 small-12 columns">
+							<div class="social-links">
+							<!-- Go to www.addthis.com/dashboard to customize your tools -->
+							<div class="addthis_horizontal_follow_toolbox"></div>
+							<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=<?php echo $wgForegroundFeatures['addThisFollowPUBID'];?>"></script>
+							</div>
+						</div>
+					<?php } ?>
+					<div id="footer-left" class="<?php echo $footerLeftClass;?>">
+					<ul id="footer-left">
+						<?php foreach ( $this->getFooterLinks( "flat" ) as $key ) { ?>
+							<li id="footer-<?php echo $key ?>"><?php $this->html( $key ) ?></li>
+						<?php } ?>									
+					</ul>
+					</div>	
+					<div id="footer-right-icons" class="<?php echo $footerRightClass;?>">
+					<ul id="poweredby">
+						<?php foreach ( $this->getFooterIcons( $poweredbyType ) as $blockName => $footerIcons ) { ?>
+							<li class="<?php echo $blockName ?>"><?php foreach ( $footerIcons as $icon ) { ?>
+								<?php echo $this->getSkin()->makeFooterIcon( $icon, $poweredbyMakeType ); ?>
+								<?php } ?>
+							</li>
+						<?php } ?>
+					</ul>
+					</div>								
+				</div>
+			</footer>
 
 		</div>
 		
@@ -207,4 +252,4 @@ class foregroundTemplate extends BaseTemplate {
 		wfRestoreWarnings();
 	}
 }
-?>
+?>

+ 30 - 2
README.md

@@ -36,16 +36,24 @@ Use following features in `LocalSettings.php` to change the behavior.
 - `NavWrapperType => 'divonly'`: only a div with id `navwrapper` will be created. `'0'` - no div will be created (old behavior), other values will be used as class. 
 - `showHelpUnderTools => true` a Link to "Help" will be created under "Tools".
 - `showRecentChangesUnderTools => true` a Link to "recent changes" will be created under "Tools".
+- `wikiName => 'Alternate WikiName'` sets top navbar name to a different output of the wiki's name. Useful if your `$wgSitename` is long but need to keep it for other purposes.
+- `navbarIcon => true` to display an icon in the top navbar. See below for more information.
 - `IeEdgeCode => 1` will produce a meta tag with "X-UA-Compatible" content="IE=edge", `2` will sent a header, `0` nothing will be done
+- `showFooterIcons => 0` suppresses the output of footer icons. Set to `true` or `1` to display them.
+- `addThisFollowPUBID => 'your-id'` add an id to display Follow Us horizontal bar of icons from various social media sites available on [addThis](http://addthis.com).
 
 These are the default values:
 
-    $wgForegroundFeatures = array(
+    $wgForegroundFeatures = array(      
       'showActionsForAnon' => true,
       'NavWrapperType' => 'divonly',
       'showHelpUnderTools' => true,
       'showRecentChangesUnderTools' => true,
-      'IeEdgeCode' => 1
+      'wikiName' => &$GLOBALS['wgSitename'],
+      'navbarIcon' => false,
+      'IeEdgeCode' => 1,
+      'showFooterIcons' => 0,
+      'addThisFollowPUBID' => ''
     );
 
 ### Usage of NavWrapperType
@@ -66,6 +74,26 @@ Or you set class in LocalSettings.php with:
 
 and visitors will be able to remove this class by their own JavaScript or gadget ...
 
+### Navbar Icon
+
+With a setting like:
+
+    'navbarIcon' => true
+
+A top navbar icon will be set using the current image set by `$wgLogo` in `LocalSettings.php`. See http://www.mediawiki.org/wiki/Manual:$wgLogo for more information about `$wgLogo`.
+
+The icon will be resized to fit into a maximum width of 64px x 36px wide or a 16:9 ratio.
+
+### AddThis Buttons
+
+With a setting like:
+
+    'addThisFollowPUBID' => 'yourAddThis-PubID'
+
+Important, this feature uses the free or paid version of the http://addthis.com horizontal Follow Buttons only. Choose which social media FollowUs buttons(Twitter, Facebook, YouTube, etc.) and at the bottom of the screen locate the script. Within the script you will see something similar `...#pubid=ra-5378f4902d02197">`. Everything after the `=` sign and up to the `">` is your Publisher ID. To turn on social follow icons, insert your publisher id:
+
+    'addThisFollowPUBID' => 'ra-5378f4902d02197'
+
 
 ### Notes on other skins
 

+ 42 - 41
assets/scripts/foreground.js

@@ -14,51 +14,52 @@ jQuery(document).ready(function() {
   jQuery("#pt-notifications").prependTo("#echo-notifications");
   
   // Append font-awesome icons
-  jQuery('[id^=ca-nstab] a').prepend('<i class="fa fa-file fa-fw"></i> ')
-  jQuery('li#ca-talk a').prepend('<i class="fa fa-comments-o fa-fw"></i> ')
-  jQuery('li#ca-edit a').prepend('<i class="fa fa-pencil-square-o fa-fw"></i> ')
-  jQuery('li#ca-viewsource a').prepend('<i class="fa fa-book fa-fw"></i> ')
-  jQuery('li#ca-form_edit a').prepend('<i class="fa fa-pencil-square fa-fw"></i> ')
-  jQuery('li#ca-history a').prepend('<i class="fa fa-archive fa-fw"></i> ')
-  jQuery('li#ca-delete a').prepend('<i class="fa fa-trash-o fa-fw"></i> ')
-  jQuery('li#ca-move a').prepend('<i class="fa fa-truck fa-fw"></i> ')
-  jQuery('li#ca-protect a').prepend('<i class="fa fa-shield fa-fw"></i> ')
-  jQuery('li#ca-unprotect a').prepend('<i class="fa fa-shield fa-fw"></i> ')
-  jQuery('li#ca-watch a').prepend('<i class="fa fa-star-o fa-fw"></i> ')
-  jQuery('li#ca-unwatch a').prepend('<i class="fa fa-star fa-fw"></i> ')
-  jQuery('li#ca-purge a').prepend('<i class="fa fa-refresh fa-fw"></i> ')
-  jQuery('li#ca-undelete a').prepend('<i class="fa fa-undo fa-fw"></i> ')
-  jQuery('li#ca-ask_delete_permanently a').prepend('<i class="fa fa-cut fa-fw"></i> ')
+  jQuery('[id^=ca-nstab] a').prepend('<div class="drop-icon"><i class="fa fa-file fa-fw"></i></div>')
+  jQuery('li#ca-talk a').prepend('<div class="drop-icon"><i class="fa fa-comments-o fa-fw"></i></div>')
+  jQuery('li#ca-edit a').prepend('<div class="drop-icon"><i class="fa fa-pencil-square-o fa-fw"></i></div>')
+  jQuery('li#ca-viewsource a').prepend('<div class="drop-icon"><i class="fa fa-book fa-fw"></i></div>')
+  jQuery('li#ca-form_edit a').prepend('<div class="drop-icon"><i class="fa fa-pencil-square fa-fw"></i></div>')
+  jQuery('li#ca-history a').prepend('<div class="drop-icon"><i class="fa fa-archive fa-fw"></i></div>')
+  jQuery('li#ca-delete a').prepend('<div class="drop-icon"><i class="fa fa-trash-o fa-fw"></i></div>')
+  jQuery('li#ca-move a').prepend('<div class="drop-icon"><i class="fa fa-truck fa-fw"></i></div>')
+  jQuery('li#ca-protect a').prepend('<div class="drop-icon"><i class="fa fa-shield fa-fw"></i></div>')
+  jQuery('li#ca-unprotect a').prepend('<div class="drop-icon"><i class="fa fa-shield fa-fw"></i></div>')
+  jQuery('li#ca-watch a').prepend('<div class="drop-icon"><i class="fa fa-star-o fa-fw"></i></div>')
+  jQuery('li#ca-unwatch a').prepend('<div class="drop-icon"><i class="fa fa-star fa-fw"></i></div>')
+  jQuery('li#ca-purge a').prepend('<div class="drop-icon"><i class="fa fa-refresh fa-fw"></i></div>')
+  jQuery('li#ca-undelete a').prepend('<div class="drop-icon"><i class="fa fa-undo fa-fw"></i></div>')
+  jQuery('li#ca-ask_delete_permanently a').prepend('<div class="drop-icon"><i class="fa fa-cut fa-fw"></i></div>')
 
 if ( jQuery( '#ca-addsection' ).length ) {
-  jQuery('li#ca-addsection a').html('<i class="fa fa-plus fa-fw"></i> ' + jQuery('li#ca-addsection a').attr('title').replace(/\[.+/g,""))
+  jQuery('li#ca-addsection a').html('<div class="drop-icon"><i class="fa fa-plus fa-fw"></i></div>' + jQuery('li#ca-addsection a').attr('title').replace(/\[.+/g,""))
 }
 
-  jQuery('li#pt-uls a').prepend('<i class="fa fa-book fa-fw"></i> ')
-  jQuery('li#pt-userpage a').prepend('<i class="fa fa-user fa-fw"></i> ')
-  jQuery('li#pt-mytalk a').prepend('<i class="fa fa-comments fa-fw"></i> ')
-  jQuery('li#pt-adminlinks a').prepend('<i class="fa fa-bolt fa-fw"></i> ')
-  jQuery('li#pt-preferences a').prepend('<i class="fa fa-ellipsis-h fa-fw"></i> ')
-  jQuery('li#pt-watchlist a').prepend('<i class="fa fa-th-list fa-fw"></i> ')
-  jQuery('li#pt-mycontris a').prepend('<i class="fa fa-smile-o fa-fw"></i> ')
-  jQuery('li#pt-logout a').prepend('<i class="fa fa-power-off fa-fw"></i> ')
+  jQuery('li#pt-uls a').prepend('<div class="drop-icon"><i class="fa fa-book fa-fw"></i></div>')
+  jQuery('li#pt-userpage a').prepend('<div class="drop-icon"><i class="fa fa-user fa-fw"></i></div>')
+  jQuery('li#pt-mytalk a').prepend('<div class="drop-icon"><i class="fa fa-comments fa-fw"></i></div>')
+  jQuery('li#pt-adminlinks a').prepend('<div class="drop-icon"><i class="fa fa-bolt fa-fw"></i></div>')
+  jQuery('li#pt-preferences a').prepend('<div class="drop-icon"><i class="fa fa-ellipsis-h fa-fw"></i></div>')
+  jQuery('li#pt-watchlist a').prepend('<div class="drop-icon"><i class="fa fa-th-list fa-fw"></i></div>')
+  jQuery('li#pt-mycontris a').prepend('<div class="drop-icon"><i class="fa fa-smile-o fa-fw"></i></div>')
+  jQuery('li#pt-logout a').prepend('<div class="drop-icon"><i class="fa fa-power-off fa-fw"></i></div>')
 
-  jQuery('li#t-smwbrowselink a').prepend('<i class="fa fa-eye fa-fw"></i> ')
-  jQuery('li#t-whatlinkshere a').prepend('<i class="fa fa-arrows fa-fw"></i> ')
-  jQuery('li#t-blockip a').prepend('<i class="fa fa-ban fa-fw"></i> ')
-  jQuery('li#t-recentchangeslinked a').prepend('<i class="fa fa-bars fa-fw"></i> ')
-  jQuery('li#t-contributions a').prepend('<i class="fa fa-smile-o fa-fw"></i> ')
-  jQuery('li#t-log a').prepend('<i class="fa fa-bars fa-fw"></i> ')
-  jQuery('li#t-emailuser a').prepend('<i class="fa fa-envelope fa-fw"></i> ')
-  jQuery('li#t-userrights a').prepend('<i class="fa fa-gavel fa-fw"></i> ')
-  jQuery('li#t-upload a').prepend('<i class="fa fa-upload fa-fw"></i> ')
-  jQuery('li#t-specialpages a').prepend('<i class="fa fa-magic fa-fw"></i> ')
-  jQuery('li#t-print a').prepend('<i class="fa fa-print fa-fw"></i> ')
-  jQuery('li#t-permalink a').prepend('<i class="fa fa-dot-circle-o fa-fw"></i> ')
-  jQuery('li#t-info a').prepend('<i class="fa fa-info fa-fw"></i> ')
-
-  jQuery('ul#toolbox-dropdown.dropdown>li#n-recentchanges a').prepend('<i class="fa fa-tasks fa-fw"></i> ')
-  jQuery('ul#toolbox-dropdown.dropdown>li#n-help a').prepend('<i class="fa fa-question fa-fw"></i> ')
+  jQuery('li#t-smwbrowselink a').prepend('<div class="drop-icon"><i class="fa fa-eye fa-fw"></i></div>')
+  jQuery('li#t-whatlinkshere a').prepend('<div class="drop-icon"><i class="fa fa-arrows fa-fw"></i></div>')
+  jQuery('li#t-blockip a').prepend('<div class="drop-icon"><i class="fa fa-ban fa-fw"></i></div>')
+  jQuery('li#t-recentchangeslinked a').prepend('<div class="drop-icon"><i class="fa fa-bars fa-fw"></i></div>')
+  jQuery('li#t-contributions a').prepend('<div class="drop-icon"><i class="fa fa-smile-o fa-fw"></i></div>')
+  jQuery('li#t-log a').prepend('<div class="drop-icon"><i class="fa fa-bars fa-fw"></i></div>')
+  jQuery('li#t-emailuser a').prepend('<div class="drop-icon"><i class="fa fa-envelope fa-fw"></i></div>')
+  jQuery('li#t-userrights a').prepend('<div class="drop-icon"><i class="fa fa-gavel fa-fw"></i></div>')
+  jQuery('li#t-upload a').prepend('<div class="drop-icon"><i class="fa fa-upload fa-fw"></i></div>')
+  jQuery('li#t-specialpages a').prepend('<div class="drop-icon"><i class="fa fa-magic fa-fw"></i></div>')
+  jQuery('li#t-print a').prepend('<div class="drop-icon"><i class="fa fa-print fa-fw"></i></div>')
+  jQuery('li#t-permalink a').prepend('<div class="drop-icon"><i class="fa fa-dot-circle-o fa-fw"></i></div>')
+  jQuery('li#t-info a').prepend('<div class="drop-icon"><i class="fa fa-info fa-fw"></i></div>')
+  jQuery('li#feedlinks a').prepend('<div class="drop-icon"><i class="fa fa-rss fa-fw"></i></div>')
+  
+  jQuery('ul#toolbox-dropdown.dropdown>li#n-recentchanges a').prepend('<div class="drop-icon"><i class="fa fa-tasks fa-fw"></i></div>')
+  jQuery('ul#toolbox-dropdown.dropdown>li#n-help a').prepend('<div class="drop-icon"><i class="fa fa-question fa-fw"></i></div>')
 
 
   // Turn categories into labels
@@ -72,4 +73,4 @@ if ( jQuery( '#ca-addsection' ).length ) {
     jQuery('ul#drop1').removeClass('open').css('top', '-9999px').css('left', '785px');
   });
 
-});
+});

+ 105 - 8
assets/stylesheets/foreground.css

@@ -25,6 +25,7 @@ body.action-formedit .row.hide-on-form-edit { display: none;}
 .mw-notification-area {
   margin-top: 2em;
 }
+
 /* Also adjust z-index of action menu to force it on top */
 #p-cactions #drop1 {
   z-index: 100000;
@@ -43,6 +44,12 @@ body.action-formedit .row.hide-on-form-edit { display: none;}
   z-index: 10000000;
 }
 
+/* Dropdown Icon Alignment */
+.drop-icon {
+  display: inline;
+  margin-right: 4px;
+}
+
 td.mw-submit a,
 .htmlform-tip,
 #mw-upload-permitted p {
@@ -113,9 +120,7 @@ div.small-9.columns textarea {
 }
 
 footer.row {
-  margin-top: 3em;
-  text-align: center;
-  font-size: 80%;
+  margin-top: 2em;
   color: grey;
 }
 
@@ -146,13 +151,89 @@ ul#drop1.f-dropdown {
 
 footer.row ul {
   list-style-type: none;
-  margin: .5em 1.25em;
+  margin: 0 0 1em 0;
 }
 
 footer.row ul.views.columns li {
   margin-right: 1em;
 }
 
+#footer footer.row ul {
+margin: 0;
+list-style-type: none;
+}
+
+/* Make social footer center need overflow:hidden and other div classes */
+.social-footer {
+margin: 0 0 1em;
+font-size: 90%;
+overflow: hidden;
+}
+/* Hide all text in p elements */
+.social-footer p {
+display: none;
+}
+/* Outer wrap */
+.social-links {
+position: relative;
+left: 50%;
+float: left;
+}
+/* addThis container (inner wrap) */
+.addthis_horizontal_follow_toolbox {
+position: relative;
+left: -50%;
+float: left;
+z-index: 100000;
+}
+/* end social footer classes */
+
+#footer-left {
+font-size: 90%;
+text-align: left;
+}
+#footer-right-icons {
+font-size: 85%;
+text-align: center;
+}
+
+#footer-right-icons li {
+display: inline-block;
+text-align: center;
+margin: 0 0 .5em .5em;
+}
+
+li#footer-privacy {
+float: left;
+margin-right: 2em;
+}
+
+li#footer-about {
+float: left;
+margin-right: 2em;
+}
+
+li#footer-disclaimer {
+float: left;
+margin-right: 2em;
+}
+
+.text-center #footer-left li {
+float: none;
+margin: 0;
+}
+.text-center #footer-left {
+text-align: center;
+}
+
+@media only screen and (max-width: 768px) {
+#footer-left { font-size: 85%; text-align: center;}
+#footer-right-icons { font-size: 80%;}
+li#footer-privacy { float: none; margin-right: 0;}
+li#footer-about { float: none; margin-right: 0;}
+li#footer-disclaimer { float: none; margin-right: 0;}
+}
+
 .columns ul.special li {
   float:none;
   width: 100%;
@@ -270,7 +351,6 @@ td.smwpropname, th.smwpropname, td.smwspecname {
   text-align:left;
 }
 
-
 table tbody tr td, table tr td {
   line-height: 1.6em;
 }
@@ -425,8 +505,26 @@ button, .button {
 }
 
 .top-bar .button.search {
-  top: 1px;
-  text-align: left;
+  top: 0px;
+}
+
+.top-bar .button.search {
+  margin-left: 10px;
+}
+
+.top-bar-section .has-form {
+  padding: 0 5px;
+}
+
+.top-bar input {
+  top: 0px;
+}
+
+@media only screen and (min-width: 768px) {
+.top-bar .button.search {
+  top: 1px; }
+.top-bar .button.search {
+  margin-left: -4px; }
 }
 
 .top-bar-section .dropdown {
@@ -715,4 +813,3 @@ body.mw-special-Userlogin h2.title {
 #echo-notifications #mw-echo-overlay-pref-link { padding: 10px 0 10px 30px; }
 #echo-notifications #mw-echo-overlay-link { border-right: 1px solid #DDDDDD; margin-right: 2em; }
 }
-

+ 3 - 1
foreground.php

@@ -5,7 +5,7 @@
  *
  * @file
  * @ingroup Skins
- * @author Garrick Van Buren, Jamie Thingelstad
+ * @author Garrick Van Buren, Jamie Thingelstad, Tom Hutchison
  * @license 2-clause BSD
  */
 
@@ -19,9 +19,11 @@ $wgExtensionCredits['skin'][] = array(
 	'path'		 => __FILE__,
 	'name'		 => 'Foreground',
 	'url'		 => 'http://foreground.thingelstad.com/',
+	'version'	 => 1.1,
 	'author'	 => array(
 		'Garrick Van Buren',
 		'Jamie Thingelstad',
+		'Tom Hutchison',
 		'...'
 		),
 	'descriptionmsg' => 'foreground-desc'