1
0
mirror of https://github.com/e107inc/e107.git synced 2025-03-14 01:19:44 +01:00

Issue #435 - Initial Bootstrap3 theme added.

This commit is contained in:
Cameron 2013-12-21 01:32:39 -08:00
parent e778a4483f
commit e2d67d8ecd
9 changed files with 715 additions and 4 deletions

View File

@ -189,7 +189,7 @@ class cpage_shortcodes extends e_shortcode
$size = vartrue($options['size'], "");
$inc = ($size) ? " btn-".$size : "";
return '<a class="cpage btn'.$inc.'" href="'.$url.'">'.$text.'</a>';
return '<a class="cpage btn btn-default'.$inc.'" href="'.$url.'">'.$text.'</a>';
}

View File

@ -36,7 +36,6 @@ function wmessage_shortcode($parm)
if (strpos($front_url, 'http') === FALSE) $front_url = SITEURL.$front_url;
if (deftrue('e_FRONTPAGE') || ($parm == 'force') || ((e_SELF == $front_url) && (($parm == 'ignore_query') || (e_QUERY == $front_qry))))
{
// Actually want to display a welcome message here

View File

@ -576,6 +576,18 @@ echo "</head>\n";
// ---------- New in 2.0 -------------------------------------------------------
if(isset($LAYOUT) && is_array($LAYOUT)) // $LAYOUT is a combined $HEADER,$FOOTER.
{
foreach($LAYOUT as $key=>$template)
{
list($hd,$ft) = explode("{...}",$template);
$HEADER[$key] = $hd;
$FOOTER[$key] = $ft;
}
unset($hd,$ft);
}
$def = THEME_LAYOUT; // The active layout based on custompage matches.
// echo "DEF = ".$def."<br />";

View File

@ -1702,6 +1702,10 @@ class e_form
case 'filter e-hide-if-js': // FIXME hide-js shouldn't be here.
$options['class'] .= 'btn-primary';
break;
default:
$options['class'] .= 'btn-default';
break;
}
return "

View File

@ -35,7 +35,7 @@ $login_menu_shortcodes = $tp -> e_sc -> parse_scbatch(__FILE__);
/*
SC_BEGIN LM_USERNAME_INPUT
global $pref;
return "<input class='tbox login user' type='text' name='username' placeholder='Username' required='required' id='username' size='15' value='' maxlength='".varset($pref['loginname_maxlength'],30)."' />\n";
return "<input class='form-control tbox login user' type='text' name='username' placeholder='Username' required='required' id='username' size='15' value='' maxlength='".varset($pref['loginname_maxlength'],30)."' />\n";
SC_END
SC_BEGIN LM_USERNAME_LABEL
@ -54,7 +54,7 @@ SC_END
SC_BEGIN LM_PASSWORD_INPUT
global $pref;
$t_password = "<input class='tbox login pass' type='password' placeholder='Password' required='required' name='userpass' id='userpass' size='15' value='' maxlength='30' />\n";
$t_password = "<input class='form-control tbox login pass' type='password' placeholder='Password' required='required' name='userpass' id='userpass' size='15' value='' maxlength='30' />\n";
if (!USER && e107::getSession()->is('challenge') && varset($pref['password_CHAP'],0)) $t_password .= "<input type='hidden' name='hashchallenge' id='hashchallenge' value='".e107::getSession()->get('challenge')."' />\n\n";
return $t_password;
SC_END

View File

@ -0,0 +1,5 @@
/* Move down content because we have a fixed navbar that is 50px tall */
body {
padding-top: 50px;
padding-bottom: 20px;
}

View File

@ -0,0 +1,549 @@
<?php
/**
* Bootstrap 3 Theme for e107 v2.x
*/
if (!defined('e107_INIT')) { exit; }
define("BOOTSTRAP", 3);
define("FONTAWESOME", 4);
define('VIEWPORT', "width=device-width, initial-scale=1.0");
e107::js("url", "//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js");
e107::css('url', '//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css');
e107::css('url', "//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css");
define('OTHERNEWS_COLS',false); // no tables, only divs.
define('OTHERNEWS_LIMIT', 3); // Limit to 3.
define('OTHERNEWS2_COLS',false); // no tables, only divs.
define('OTHERNEWS2_LIMIT', 3); // Limit to 3.
define('PRE_EXTENDEDSTRING', '<br />');
function tablestyle($caption, $text, $mode='')
{
global $style;
$type = $style;
if(empty($caption))
{
$type = 'box';
}
if($style == 'navdoc')
{
echo $text;
return;
}
if($style == 'jumbotron')
{
echo '<div class="jumbotron">
<div class="container">
<h1>'.$caption.'</h1>
<p>'.$text.'</p>
</div>
</div>';
return;
}
if($style == 'col-md-4')
{
echo ' <div class="col-md-4">
<h2>'.$caption.'</h2>
'.$text.'
</div>';
return;
}
if($mode == 'loginbox') // Login Box Style.
{
echo '<div class="well sidebar-nav">
<ul class="nav nav-list"><li class="nav-header">'.$caption.'</li></ul>
'.$text.'
</div><!--/.well -->';
return;
}
if($mode == 'login_page')
{
$type = 'no_caption';
}
switch($type)
{
// Default Menu/Side-Panel Style
case 'menu' :
echo '<div class="well sidebar-nav">
<ul class="nav nav-list"><li class="nav-header">'.$caption.'</li></ul>
'.$text.'
</div><!--/.well -->';
break;
case 'span4' :
echo $text;
break;
case 'box':
echo '
<div class="block">
<div class="block-text">
'.$text.'
</div>
</div>
';
break;
case 'no_caption':
echo $text;
break;
default: // Main Content Style.
echo '
<h2>'.$caption.'</h2>
<p>
'.$text.'
</p>
';
break;
}
}
// $LAYOUT is a combined $HEADER and $FOOTER, automatically split at the point of "{...}"
$LAYOUT['jumbotron'] = '
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">{SITENAME}</a>
</div>
<div class="navbar-collapse collapse">
{NAVIGATION=main}
{BOOTSTRAP_USERNAV}
<!--
<form class="navbar-form navbar-right" role="form">
<div class="form-group">
<input type="text" placeholder="Email" class="form-control">
</div>
<div class="form-group">
<input type="password" placeholder="Password" class="form-control">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
</form>
-->
</div><!--/.navbar-collapse -->
</div>
</div>
<!-- Main jumbotron for a primary marketing message or call to action -->
{SETSTYLE=jumbotron}
{WMESSAGE}
{SETSTYLE=default}
<div class="container">
{...}
</div>
<div class="container">
<!-- Example row of columns -->
<div class="row">
{SETSTYLE=col-md-4}
{CMENU=jumbotron-menu-1}
{CMENU=jumbotron-menu-2}
{CMENU=jumbotron-menu-3}
</div>
<hr>
<footer>
<p>&copy; Company 2013</p>
</footer>
</div> <!-- /container -->
';
$HEADER['default'] = '
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="'.SITEURL.'">{SITENAME}</a>
<div class="nav-collapse collapse">
{NAVIGATION=main}
<div class="pull-right">{BOOTSTRAP_USERNAV}</div>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span3">
{NAVIGATION|s=side}
{SETSTYLE=menu}
{MENU=1}
</div><!--/span-->
<div class="span9">
{SETSTYLE=default}
{WMESSAGE}
';
$FOOTER['default'] = '
{SETSTYLE=span4}
</div><!--/span-->
</div><!--/row-->
<hr>
<footer class="center">
{SITEDISCLAIMER}
</footer>
</div><!--/.fluid-container-->';
$HEADER['default-home'] = $HEADER['default'];
$FOOTER['default-home'] = '
{SETSTYLE=span4}
<div class="row-fluid">
{MENU=2}
</div><!--/row-->
<div class="row-fluid">
{MENU=3}
</div><!--/row-->
</div><!--/span-->
</div><!--/row-->
<hr>
<footer class="center">
{SITEDISCLAIMER}
</footer>
</div><!--/.fluid-container-->';
// HERO http://twitter.github.com/bootstrap/examples/hero.html
//FIXME insert shortcodes while maintaining only bootstrap classes.
$HEADER['hero'] = '
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<form class="navbar-form pull-right">
<input class="span2" type="text" placeholder="Email">
<input class="span2" type="password" placeholder="Password">
<button type="submit" class="btn">Sign in</button>
</form>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<!-- Main hero unit for a primary marketing message or call to action -->
<div class="hero-unit">';
/*
<h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p>
*/
//FIXME insert shortcodes while maintaining classes.
$FOOTER['hero'] = '
</div>
<!-- Example row of columns -->
<div class="row">
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
</div>
<hr>
<footer>
<p>&copy; Company 2012</p>
</footer>
</div> <!-- /container -->';
// Marketing Narrow - http://twitter.github.com/bootstrap/examples/marketing-narrow.html
//FIXME insert shortcodes while maintaing classes.
$HEADER['marketing-narrow'] = '
<div class="container-narrow">
<div class="masthead">
<ul class="nav nav-pills pull-right">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
<h3 class="muted">Project name</h3>
</div>
<hr>
<div class="jumbotron">
<h1>Super awesome marketing speak!</h1>
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<a class="btn btn-large btn-success" href="#">Sign up today</a>
';
//FIXME insert shortcodes while maintaing classes.
$FOOTER['marketing-narrow'] = '
</div>
<hr>
<div class="row-fluid marketing">
<div class="span6">
<h4>Subheading</h4>
<p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
<h4>Subheading</h4>
<p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
<h4>Subheading</h4>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
</div>
<div class="span6">
<h4>Subheading</h4>
<p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
<h4>Subheading</h4>
<p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
<h4>Subheading</h4>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
</div>
</div>
<hr>
<div class="footer">
<p>&copy; Company 2012</p>
</div>
</div> <!-- /container -->
';
/*
$CUSTOMHEADER, CUSTOMFOOTER and $CUSTOMPAGES are deprecated.
Default custom-pages can be assigned in theme.xml
*/
$HEADER['docs'] = <<<TMPL
<!-- Navbar
================================================== -->
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="./index.html">Bootstrap</a>
<div class="nav-collapse collapse">
{NAVIGATION=main}
</div>
</div>
</div>
</div>
<!-- Subhead
================================================== -->
<header class="jumbotron subhead" id="overview">
<div class="container">
<h1>{PAGE_CHAPTER_NAME}</h1>
<p class="lead">{PAGE_CHAPTER_DESCRIPTION}</p>
</div>
</header>
<div class="container">
<!-- Docs nav
================================================== -->
<div class="row">
<div class="span3 bs-docs-sidebar">
{SETSTYLE=navdoc}
{PAGE_NAVIGATION: template=navdocs&auto=1}
</div>
{SETSTYLE=doc}
<div class="span9">
TMPL;
$FOOTER['docs'] = <<<TMPL
</div>
</div>
</div>
<!-- Footer
================================================== -->
<footer class="footer">
<div class="container">
<p>{SITEDISCLAIMER}</p>
<!--
<ul class="footer-links">
<li><a href="http://blog.getbootstrap.com">Blog</a></li>
<li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
<li class="muted">&middot;</li>
<li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
</ul>
-->
</div>
</footer>
TMPL;
$NEWSCAT = "\n\n\n\n<!-- News Category -->\n\n\n\n
<div style='padding:2px;padding-bottom:12px'>
<div class='newscat_caption'>
{NEWSCATEGORY}
</div>
<div style='width:100%;text-align:left'>
{NEWSCAT_ITEM}
</div>
</div>
";
$NEWSCAT_ITEM = "\n\n\n\n<!-- News Category Item -->\n\n\n\n
<div style='width:100%;display:block'>
<table style='width:100%'>
<tr><td style='width:2px;vertical-align:middle'>&#8226;&nbsp;</td>
<td style='text-align:left;height:10px'>
{NEWSTITLELINK}
</td></tr></table></div>
";
?>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<e107Theme name="bootstrap 3" version="1.0" date="2012-12-01" compatibility="2.0">
<author name ="e107 Inc" email="e107inc@something.com" url="http://e107.org" />
<summary>Bootstrap3 e107 theme</summary>
<description>a bootstrap 3 theme for the frontend</description>
<category>generic</category>
<keywords>
<word>bootstrap</word>
<word>clean</word>
</keywords>
<screenshots>
<image>preview.jpg</image>
<image>fullpreview.jpg</image>
</screenshots>
<stylesheets>
<css file="style.css" name="Default" />
</stylesheets>
<layouts>
<layout name='jumbotron' title='Jumbotron' default='true'>
<custompages>FRONTPAGE</custompages>
</layout>
</layouts>
</e107Theme>

View File

@ -0,0 +1,119 @@
<?php
/*
* e107 website system
*
* Copyright (C) 2008-2013 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* e107 Bootstrap Theme Shortcodes.
*
*/
class theme_shortcodes extends e_shortcode
{
function sc_bootstrap_usernav()
{
include_lan(e_PLUGIN."login_menu/languages/".e_LANGUAGE.".php");
$tp = e107::getParser();
if(!USERID) // Logged Out.
{
$text = '
<ul class="nav navbar-nav pull-right">';
if(deftrue('USER_REGISTRATION'))
{
$text .= '
<li><a href="'.e_SIGNUP.'">Sign Up</a></li>
';
}
$text .= '
<li class="divider-vertical"></li>
<li class="dropdown">
<a class="dropdown-toggle" href="#" data-toggle="dropdown">Sign In <strong class="caret"></strong></a>
<div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
<form method="post" onsubmit="hashLoginPassword(this);return true" action="'.e_REQUEST_HTTP.'" accept-charset="UTF-8">
{LM_USERNAME_INPUT}
{LM_PASSWORD_INPUT}
<div class="checkbox">
<input style="float: left; margin-right: 10px;" type="checkbox" name="autologin" id="autologin" value="1">
<label class="string optional" for="autologin"> Remember me</label>
</div>
<input class="btn btn-primary btn-block" type="submit" name="userlogin" id="userlogin" value="Sign In">
';
$text .= '
<a href="{LM_FPW_LINK=href}" class="btn btn-small btn-block">'.LOGIN_MENU_L4.'</a>
<a href="{LM_RESEND_LINK=href}" class="btn btn-small btn-block">'.LOGIN_MENU_L40.'</a>
';
/*
$text .= '
<label style="text-align:center;margin-top:5px">or</label>
<input class="btn btn-primary btn-block" type="button" id="sign-in-google" value="Sign In with Google">
<input class="btn btn-primary btn-block" type="button" id="sign-in-twitter" value="Sign In with Twitter">
';
*/
$text .= "
</form>
</div>
</li>
</ul>";
require_once(e_PLUGIN."login_menu/login_menu_shortcodes.php");
return $tp->parseTemplate($text, false, $login_menu_shortcodes);
}
// Logged in.
//TODO Generic LANS. (not theme LANs)
$avatar = $tp->parseTemplate('{USER_AVATAR}',true);
$text = '
<ul class="nav navbar-nav pull-right">
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">{SETIMAGE: w=20}{USER_AVATAR} '. USERNAME.' <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="'.e_HTTP.'usersettings.php"><span class="glyphicon glyphicon-cog"></span> Settings</a></li>
<li><a class="dropdown-toggle no-block" role="button" href="'.e_HTTP.'user.php?id.'.USERID.'"><span class="glyphicon glyphicon-user"></span> Profile</a></li>
<li class="divider"></li>';
if(ADMIN)
{
$text .= '<li><a href="'.e_ADMIN_ABS.'"><span class="fa fa-cogs"></span> Admin Area</a></li>';
}
$text .= '
<li><a href="'.e_HTTP.'index.php?logout"><span class="glyphicon glyphicon-off"></span> Logout</a></li>
</ul>
</li>
</ul>
';
return $tp->parseTemplate($text,true);
}
}
?>