update to bootstrap 4 p1, bugfix for logoLarge, logging cleanup, more

This commit is contained in:
Joey Kimsey
2024-12-08 04:35:25 -05:00
parent 9abd3865f5
commit dcbe7c2ac0
25 changed files with 509 additions and 264 deletions

View File

@ -48,4 +48,376 @@ body {
border-color: #555;
box-shadow: none;
}
/**
* app/css/main.css
*
* This file is for any css that should be applied site wide.
*
* @version 3.0
* @author Joey Kimsey <Joey@thetempusproject.com>
* @link https://TheTempusProject.com
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
*/
@media ( min-width: 768px ) {
.side-nav {
/* background-color: #222; */
}
.side-nav li a:hover,
.side-nav li a:focus {
background-color: #fff !important;
}
}
/**
* Other
*/
.bars {
/* background-color: #333; */
/* box-shadow: 0 5px 0 #333, 0 10px 0 #333; */
}
.bg-gray {
/* background-image: -moz-linear-gradient( center bottom, #BBBBBB 0%, #F0F0F0 100% ); */
/* box-shadow: 0 1px 0 #B4B3B3; */
}
.UI-buffer {
/* border-bottom: 1px solid #CCCCCC; */
}
.UI-page-buffer {
/* border-bottom: 1px solid #CCCCCC; */
}
.table-user-information>tbody>tr {
/* border-top: 1px solid rgb( 221, 221, 221 ); */
}
.sticky-foot-head {
/* background: #EDEFF1; */
/* border-bottom: 1px solid #CCCCCC; */
/* border-top: 1px solid #DDDDDD; */
}
.sticky-foot {
background-color: #fff;
}
.sticky-copy {
background: #282828; /* E3E3E3; */
border-bottom: 1px solid #b0b0b0; /* CCCCCC; */
border-top: 1px solid #bfbfbf; /* DDDDDD; */
}
/**
* Main Carousel
*/
.main-text {
color: #000;
}
.btn-clear {
color: #000;
border-color: #000;
}
.btn-clear:hover {
color: #fff;
/* background-color: #F000FF; */
}
/**
* Top Navigation
*/
.top-nav>li>a {
/* color: #999; */
}
.top-nav>li>a:hover,
.top-nav>li>a:focus,
.top-nav>.open>a,
.top-nav>.open>a:hover,
.top-nav>.open>a:focus {
color: #000;
background-color: #fff;
}
.top-nav>.open>.dropdown-menu {
/* border: 1px solid rgba( 0, 0, 0, .15 ); */
background-color: #000;
/* -webkit-box-shadow: 0 6px 12px rgba( 0, 0, 0, .175 ); */
/* box-shadow: 0 6px 12px rgba( 0, 0, 0, .175 ); */
}
/**
* Messages Dropdown
*/
li.message-header {
/* border-bottom: 1px solid rgba( 0, 0, 0, .15 ); */
}
li.message-preview {
/* border-bottom: 1px solid rgba( 0, 0, 0, .15 ); */
}
/**
* Widget
*/
.widget li.list-group-item {
/* border-top: 1px solid #ddd; */
}
.widget li.list-group-item:hover {
/* background-color: rgba( 86, 61, 124, .1 ); */
}
.widget .mic-info {
/* color: #666666; */
}
/**
* Footer and Copyright
*/
.copy {
background: #282828; /* E3E3E3; */
border-bottom: 1px solid #b0b0b0; /* CCCCCC; */
border-top: 1px solid #bfbfbf; /* DDDDDD; */
}
.footer-head {
background: #282828; /* E3E3E3; */
border-bottom: 1px solid #b0b0b0; /* CCCCCC; */
border-top: 1px solid #bfbfbf; /* DDDDDD; */
}
.footer-head h3 {
border-bottom: 1px solid #a1a7ad; /* BAC1C8 */
color: #4a5c6e; /* 54697E */
}
.footer-head ul {
/* color: #7F8C8D; */
}
.footer-head a {
/* color: #78828D */
}
/**
* Side Navigation
*/
.side-nav>li>ul>li>a {
/* color: #999; */
}
.side-nav>li>ul>li>a:hover {
color: #000;
}
.side-nav .active > a {
color: #000;
background-color: #fff;
}
.side-nav .active > a:hover {
color: #000;
background-color: #fff;
}
/**
* Social
*/
.social span {
/* background: none repeat scroll 0 0 #B5B5B5; */
/* border: 2px solid #B5B5B5; */
}
.social span a {
/* color: #EDEFF1; */
}
.social span:hover {
/* border: 2px solid #2c3e50;
background: #2c3e50; */
}
.social span a i {
/* color: #EDEFF1 !important; */
}
/**
* Newsletter Box
*/
.newsletter-box input#appendedInputButton {
background: #000;
}
.newsletter-box .btn {
color: #000;
}
/**
* Colored Badges
*/
.badge {
color: #000;
/* background-color: #999999; */
}
.badge:hover {
color: #000;
}
.badge-error {
/* background-color: #b94a48; */
}
.badge-error:hover {
/* background-color: #953b39; */
}
.badge-warning {
/* background-color: #f89406; */
}
.badge-warning:hover {
/* background-color: #c67605; */
}
.badge-success {
/* background-color: #468847; */
}
.badge-success:hover {
/* background-color: #356635; */
}
.badge-info {
/* background-color: #3a87ad; */
}
.badge-info:hover {
/* background-color: #2d6987; */
}
.badge-inverse {
/* background-color: #333333; */
}
.badge-inverse:hover {
/* background-color: #1a1a1a; */
}
/**
* Install Terms
*/
.install-terms {
/* border: 1px solid #ccc;
background: #f2f2f2; */
}
.install-terms p,
.install-terms li {
/* color: #333; */
}
.install-terms h3 {
color: #fff;
}
.install-terms h4 {
color: #fff;
}
.install-terms strong {
color: #fff;
}
/**
* Terms Page
*/
.terms-page {
/* border: 1px solid #ccc;
background: #f2f2f2; */
}
.terms-page p,
.terms-page li {
/* color: #333; */
}
.terms-page h3 {
color: #fff;
}
.terms-page h4 {
color: #fff;
}
.terms-page strong {
color: #fff;
}
/**
* Terms
*/
.terms {
/* border: 1px solid #ccc; */
/* background: #f2f2f2; */
}
.terms p,
.terms li {
/* color: #333; */
}
.terms h3 {
color: #fff;
}
.terms h4 {
color: #fff;
}
.terms strong {
color: #fff;
}
.material-switch > label::before {
/* background: rgb(0, 0, 0); */
/* box-shadow: inset 0px 0px 10px rgba(0, 0, 0, 0.5); */
}
.material-switch > label::after {
/* background: rgb(255, 255, 255); */
/* box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3); */
}

View File

@ -31,45 +31,11 @@ pre {
padding-right: 225px;
padding-left: 0;
}
.side-nav {
right: 0;
left: auto;
}
.side-nav {
position: fixed;
top: 51px;
left: 225px;
width: 225px;
margin-left: -225px;
border: none;
border-radius: 0;
overflow-y: auto;
background-color: #222;
bottom: 53px;
overflow-x: hidden;
padding-bottom: 10px;
}
.side-nav>li>a {
width: 225px;
}
.side-nav li a:hover,
.side-nav li a:focus {
outline: none;
background-color: #000 !important;
}
}
/**
* Other
*/
.custom-nav {
display: relative;
float: right;
}
.navbar-form-alt {
margin-top: 10px;
margin-bottom: 10px;
}
.bars {
display: block;
width: 60px;
@ -158,7 +124,7 @@ pre {
.dynamic-footer-padding {
padding-bottom: var(--footer-height);
}
.footer-head .navbar-toggle {
.footer-head .navbar-toggler {
display: inline-block;
float: none;
}
@ -225,45 +191,6 @@ pre {
margin: 0 auto;
}
/**
* Top Navigation
*/
.top-nav {
padding: 0 15px;
}
.top-nav>li {
display: inline-block;
float: left;
}
.top-nav>li>a {
padding-top: 15px;
padding-bottom: 15px;
line-height: 20px;
color: #999;
}
.top-nav>li>a:hover,
.top-nav>li>a:focus,
.top-nav>.open>a,
.top-nav>.open>a:hover,
.top-nav>.open>a:focus {
color: #fff;
background-color: #000;
}
.top-nav>.open>.dropdown-menu {
float: left;
position: absolute;
margin-top: 0;
border: 1px solid rgba( 0, 0, 0, .15 );
border-top-left-radius: 0;
border-top-right-radius: 0;
background-color: #fff;
-webkit-box-shadow: 0 6px 12px rgba( 0, 0, 0, .175 );
box-shadow: 0 6px 12px rgba( 0, 0, 0, .175 );
}
.top-nav>.open>.dropdown-menu>li>a {
white-space: normal;
}
/**
* Messages Dropdown
*/
@ -327,44 +254,6 @@ ul.alert-dropdown {
border-top-right-radius: 0px;
}
/**
* Signin Form
*/
.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="text"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
/**
* Footer and Copyright
*/
@ -420,30 +309,6 @@ ul.alert-dropdown {
color: #78828D
}
/**
* Side Navigation
*/
.side-nav>li>ul {
padding: 0;
}
.side-nav>li>ul>li>a {
display: block;
padding: 10px 15px 10px 38px;
text-decoration: none;
color: #999;
}
.side-nav>li>ul>li>a:hover {
color: #fff;
}
.side-nav .active > a {
color: #fff;
background-color: #080808;
}
.side-nav .active > a:hover {
color: #fff;
background-color: #080808;
}
/**
* Social
*/

View File

@ -117,6 +117,7 @@ window.onload = function () {
// Check if dark mode is saved in localStorage
if (localStorage.getItem('darkMode') === 'enabled') {
darkModeStylesheet.disabled = false;
toggleButton.checked = true;
}
toggleButton.addEventListener('click', function () {

View File

@ -257,7 +257,7 @@ class Group extends DatabaseModel {
if ( $group === false ) {
return false;
}
$members = self::$db->getPaginated( 'users', [ 'userGroup', '=', $id ] );
$members = self::$db->get( 'users', [ 'userGroup', '=', $id ] );
if ( !$members->count() ) {
Debug::info( "list members: Could not find anyone in group: $id" );
return false;

View File

@ -87,7 +87,7 @@ class Log extends DatabaseModel {
}
public function list( $filter = null ) {
$logData = self::$db->getPaginated( $this->tableName, [ 'source', '=', $filter ] );
$logData = self::$db->get( $this->tableName, [ 'source', '=', $filter ] );
if ( !$logData->count() ) {
return false;
}

View File

@ -128,7 +128,7 @@ class Routes extends DatabaseModel {
}
$routeData = self::$db->get( $this->tableName, [ 'nickname', '=', $name ] );
if ( !$routeData->count() ) {
Debug::warn( "Could not find a group named: $name" );
Debug::info( "Routes:findByName: Could not find a route named: $name" );
return false;
}
return $this->filter( $routeData->first() );
@ -137,7 +137,7 @@ class Routes extends DatabaseModel {
public function findByOriginalUrl( $url ) {
$routeData = self::$db->get( $this->tableName, [ 'original_url', '=', $url ] );
if ( !$routeData->count() ) {
Debug::warn( "Could not find route by original url: $url" );
Debug::info( "Routes:findByOriginalUrl: Could not find route by original url: $url" );
return false;
}
return $this->filter( $routeData->first() );
@ -145,12 +145,12 @@ class Routes extends DatabaseModel {
public function findByforwardedUrl( $url ) {
if ( !Check::url( $url ) ) {
Debug::warn( "Invalid forwarded_url: $url" );
Debug::warn( "Routes:findByforwardedUrl: Invalid forwarded_url: $url" );
return false;
}
$routeData = self::$db->get( $this->tableName, [ 'forwarded_url', '=', $url ] );
if ( !$routeData->count() ) {
Debug::warn( "Could not find route by forwarded url: $url" );
Debug::info( "Routes:findByforwardedUrl: Could not find route by forwarded url: $url" );
return false;
}
return $this->filter( $routeData->first() );

View File

@ -446,7 +446,7 @@ class User extends DatabaseModel {
*/
public function recent( $limit = null ) {
if ( empty( $limit ) ) {
$data = self::$db->getpaginated( $this->tableName, '*' );
$data = self::$db->get( $this->tableName, '*' );
} else {
$data = self::$db->get( $this->tableName, [ 'ID', '>', '0' ], 'ID', 'DESC', [ 0, $limit ] );
}

View File

@ -221,9 +221,9 @@ class Posts extends DatabaseModel {
$whereClause = '*';
}
if ( empty( $limit ) ) {
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
} else {
$postData = self::$db->getPaginated( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
$postData = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
}
if ( !$postData->count() ) {
Debug::info( 'No Blog posts found.' );
@ -239,7 +239,7 @@ class Posts extends DatabaseModel {
} else {
$whereClause = ['draft', '=', '0'];
}
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
if ( !$postData->count() ) {
Debug::info( 'No Blog posts found.' );
@ -263,7 +263,7 @@ class Posts extends DatabaseModel {
$firstDayUnix = date( 'U', strtotime( "first day of $year" ) );
$lastDayUnix = date( 'U', strtotime( "last day of $year" ) );
$whereClause = array_merge( $whereClause, ['created', '<=', $lastDayUnix, 'AND', 'created', '>=', $firstDayUnix] );
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
if ( !$postData->count() ) {
Debug::info( 'No Blog posts found.' );
@ -282,7 +282,7 @@ class Posts extends DatabaseModel {
$whereClause = ['draft', '=', '0', 'AND'];
}
$whereClause = array_merge( $whereClause, ['author' => $ID] );
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
if ( !$postData->count() ) {
Debug::info( 'No Blog posts found.' );
@ -311,7 +311,7 @@ class Posts extends DatabaseModel {
$month = date( 'F', $firstDayUnix );
$lastDayUnix = date( 'U', strtotime( "last day of $month $year" ) );
$whereClause = array_merge( $whereClause, ['created', '<=', $lastDayUnix, 'AND', 'created', '>=', $firstDayUnix] );
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
if ( !$postData->count() ) {
Debug::info( 'No Blog posts found.' );

View File

@ -28,7 +28,7 @@ class Blog extends Plugin {
public $pluginDescription = 'A simple plugin to add a blog to your installation.';
public $admin_links = [
[
'text' => '<i class="glyphicon glyphicon-text-size"></i> Blog',
'text' => '<i class="fa fa-fw fa-font"></i> Blog',
'url' => '{ROOT_URL}admin/blog',
],
];

View File

@ -32,7 +32,6 @@
<link rel="icon" href="{ROOT_URL}images/favicon.ico">
<!-- Required CSS -->
<link rel="stylesheet" href="{FONT_AWESOME_URL}font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap-theme.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap.min.css" crossorigin="anonymous">
<!-- RSS -->
<link rel="alternate" href="{ROOT_URL}blog/rss" title="{TITLE} Feed" type="application/rss+xml" />
@ -44,7 +43,7 @@
<!--Brand and toggle should get grouped for better mobile display -->
<div class="navbar-header">
<a href="{ROOT_URL}" class="navbar-brand">{SITENAME}</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse" style="">
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target=".navbar-ex1-collapse" style="">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -55,7 +54,7 @@
<div class="collapse navbar-collapse navbar-ex1-collapse">
{topNavLeft}
<div class="navbar-right">
<ul class="nav navbar-nav">
<ul class="navbar-nav">
{topNavRight}
</ul>
</div>
@ -75,9 +74,7 @@
{/ISSUES}
<div class="row">
<div class="container">
<div class="page-header">
<h1 class="blog-title">{SITENAME} Blog</h1>
</div>
<h1 class="blog-title">{SITENAME} Blog</h1>
<div class="row">
<div class="col-sm-8 blog-main">
{BLOG_BREADCRUMBS}

View File

@ -310,7 +310,7 @@ class Bookmarks extends DatabaseModel {
$base_url = $this->getBaseUrl( $instance->url );
if ( empty( $instance->icon ) ) {
$instance->iconHtml = '<i class="glyphicon glyphicon-link"></i>';
$instance->iconHtml = '<i class="fa fa-fw fa-link"></i>';
} else {
if (strpos($instance->icon, 'http') !== false) {
$instance->iconHtml = '<img src="' . $instance->icon .'" />';
@ -321,34 +321,34 @@ class Bookmarks extends DatabaseModel {
if ( empty( $instance->hiddenAt ) ) {
$instance->hideBtn = '
<a href="{ROOT_URL}bookmarks/hideBookmark/'.$instance->ID.'" class="btn btn-sm btn-warning" role="button">
<i class="glyphicon glyphicon-eye-open"></i>
<i class="fa fa-fw fa-eye"></i>
</a>';
} else {
$instance->hideBtn = '
<a href="{ROOT_URL}bookmarks/showBookmark/'.$instance->ID.'" class="btn btn-sm btn-default" role="button">
<i class="glyphicon glyphicon-eye-open"></i>
<i class="fa fa-fw fa-eye"></i>
</a>';
}
if ( empty( $instance->archivedAt ) ) {
$instance->archiveBtn = '
<a href="{ROOT_URL}bookmarks/archiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-info" role="button">
<i class="glyphicon glyphicon-briefcase"></i>
<i class="fa fa-fw fa-briefcase"></i>
</a>';
} else {
$instance->archiveBtn = '
<a href="{ROOT_URL}bookmarks/unarchiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-default" role="button">
<i class="glyphicon glyphicon-briefcase"></i>
<i class="fa fa-fw fa-briefcase"></i>
</a>';
}
if ( ! empty( $instance->refreshedAt ) && time() < ( $instance->refreshedAt + ( 60 * 10 ) ) ) {
$instance->refreshBtn = '
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-danger" role="button">
<i class="glyphicon glyphicon-refresh"></i>
<i class="fa fa-fw fa-refresh"></i>
</a>';
} else {
$instance->refreshBtn = '
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-success" role="button">
<i class="glyphicon glyphicon-refresh"></i>
<i class="fa fa-fw fa-refresh"></i>
</a>';
}

View File

@ -170,7 +170,7 @@ class Comments extends DatabaseModel {
$where = ['contentType', '=', $contentType];
}
if ( empty( $limit ) ) {
$commentData = self::$db->getPaginated( $this->tableName, $where, 'created', 'DESC' );
$commentData = self::$db->get( $this->tableName, $where, 'created', 'DESC' );
} else {
$commentData = self::$db->get( $this->tableName, $where, 'created', 'DESC', [0, $limit] );
}

View File

@ -67,7 +67,7 @@ class MembershipCustomers extends DatabaseModel {
$api_key = Config::getValue( 'memberships/stripeSecret' );
if ( $api_key == 'sk_xxxxxxxxxxxxxxx' || empty($api_key) ) {
Debug::error( "No Stripe Key found" );
Debug::error( "MembershipCustomers:create No Stripe Key found" );
return false;
}
self::$stripe = new \Stripe\StripeClient( $api_key );

View File

@ -22,6 +22,7 @@ use TheTempusProject\Bedrock\Classes\Config;
class MembershipProducts extends DatabaseModel {
public static $stripe;
private static $loaded = false;
public $tableName = 'membership_products';
public $databaseMatrix = [
[ 'name', 'varchar', '128' ],
@ -35,11 +36,14 @@ class MembershipProducts extends DatabaseModel {
public function __construct() {
parent::__construct();
$api_key = Config::getValue( 'memberships/stripeSecret' );
if ( $api_key == 'sk_xxxxxxxxxxxxxxx' || empty($api_key) ) {
Debug::error( "No Stripe Key found" );
} else {
self::$stripe = new \Stripe\StripeClient( $api_key );
if ( ! self::$loaded ) {
$api_key = Config::getValue( 'memberships/stripeSecret' );
if ( $api_key == 'sk_xxxxxxxxxxxxxxx' || empty($api_key) ) {
Debug::error( "MembershipProducts:__construct No Stripe Key found" );
} else {
self::$stripe = new \Stripe\StripeClient( $api_key );
}
self::$loaded = true;
}
}

View File

@ -24,6 +24,7 @@ use TheTempusProject\Canary\Classes\CustomException;
class Memberships extends DatabaseModel {
public static $stripe;
public static $products;
private static $loaded = false;
public $tableName = 'membership_records';
public $databaseMatrix = [
[ 'stripe_customer', 'varchar', '64' ],
@ -38,12 +39,15 @@ class Memberships extends DatabaseModel {
public function __construct() {
parent::__construct();
self::$products = new MembershipProducts;
$api_key = Config::getValue( 'memberships/stripeSecret' );
if ( $api_key == 'sk_xxxxxxxxxxxxxxx' || empty($api_key) ) {
Debug::error( "No Stripe Key found" );
} else {
self::$stripe = new \Stripe\StripeClient( $api_key );
if ( ! self::$loaded ) {
self::$products = new MembershipProducts;
$api_key = Config::getValue( 'memberships/stripeSecret' );
if ( $api_key == 'sk_xxxxxxxxxxxxxxx' || empty($api_key) ) {
Debug::error( "Memberships:__construct No Stripe Key found" );
} else {
self::$stripe = new \Stripe\StripeClient( $api_key );
}
self::$loaded = true;
}
}
@ -79,9 +83,9 @@ class Memberships extends DatabaseModel {
public function getUserSubs( $limit = null ) {
$whereClause = ['local_user_id', '=', App::$activeUser->ID ];
if ( empty( $limit ) ) {
$postData = self::$db->getPaginated( $this->tableName, $whereClause );
$postData = self::$db->get( $this->tableName, $whereClause );
} else {
$postData = self::$db->getPaginated( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
$postData = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
}
if ( !$postData->count() ) {
Debug::info( 'No user subs found.' );

View File

@ -61,7 +61,7 @@ class Message extends DatabaseModel {
Debug::info( 'Invalid user ID' );
return false;
}
$messageData = self::$db->getPaginated( $this->tableName, [ 'ID', '=', $parent ] );
$messageData = self::$db->get( $this->tableName, [ 'ID', '=', $parent ] );
if ( $messageData->count() == 0 ) {
Debug::info( 'Message not found.' );
return false;
@ -71,7 +71,7 @@ class Message extends DatabaseModel {
if ( $type !== null ) {
$params = array_merge( $params, [ 'AND', $type, '=', $user ] );
}
$messageData = self::$db->getPaginated( $this->tableName, $params, 'ID', 'DESC', [ 0, 1 ] );
$messageData = self::$db->get( $this->tableName, $params, 'ID', 'DESC', [ 0, 1 ] );
if ( $messageData->count() != 0 ) {
if ( $messageData->first()->recieverDeleted == 0 ) {
$message = $messageData->first();
@ -93,7 +93,7 @@ class Message extends DatabaseModel {
Debug::info( 'Invalid ID' );
return false;
}
$messageData = self::$db->getPaginated( $this->tableName, [ 'ID', '=', $id ] );
$messageData = self::$db->get( $this->tableName, [ 'ID', '=', $id ] );
if ( $messageData->count() == 0 ) {
Debug::info( 'Message not found.' );
return false;
@ -122,7 +122,7 @@ class Message extends DatabaseModel {
} else {
$find = $message->ID;
}
$messageData = self::$db->getPaginated( $this->tableName, [ 'ID', '=', $find, 'OR', 'Parent', '=', $find ], 'ID', 'ASC' )->results();
$messageData = self::$db->get( $this->tableName, [ 'ID', '=', $find, 'OR', 'Parent', '=', $find ], 'ID', 'ASC' )->results();
Components::set( 'PID', $find );
if ( $markRead == true ) {
@ -138,7 +138,7 @@ class Message extends DatabaseModel {
$limit = 10;
}
$limit = [ 0, $limit ];
$messageData = self::$db->getPaginated(
$messageData = self::$db->get(
$this->tableName,
[
'parent', '=', 0,
@ -154,7 +154,7 @@ class Message extends DatabaseModel {
$limit
);
if ( $messageData->count() == 0 ) {
Debug::info( 'No messages found' );
Debug::info( 'getInbox: No messages found' );
return false;
}
$filters = [
@ -175,7 +175,7 @@ class Message extends DatabaseModel {
$limit = 10;
}
$limit = [ 0, $limit ];
$messageData = self::$db->getPaginated(
$messageData = self::$db->get(
$this->tableName,
[
'parent', '=', 0,
@ -187,7 +187,7 @@ class Message extends DatabaseModel {
$limit
);
if ( $messageData->count() == 0 ) {
Debug::info( 'No messages found' );
Debug::info( 'getOutbox: No messages found' );
return false;
}
$filters = [

View File

@ -32,23 +32,23 @@ class Messages extends Plugin {
],
];
private static $loaded = false;
public function __construct() {
// This was taken directly from the main app
// load the message template data as part of the template
$messages = new Message;
Components::set( 'MESSAGE_COUNT', $messages->unreadCount() );
if ( $messages->unreadCount() > 0 ) {
$messageBadge = Views::simpleView( 'messages.badge' );
} else {
$messageBadge = '';
}
Components::set( 'MBADGE', $messageBadge );
if ( App::$isLoggedIn ) {
Components::set( 'RECENT_MESSAGES', Views::simpleView( 'messages.nav.recentMessagesDropdown', $messages->getInbox( 5 ) ) );
} else {
Components::set( 'RECENT_MESSAGES', '' );
}
if ( ! self::$loaded ) {
$messages = new Message;
Components::set( 'MESSAGE_COUNT', $messages->unreadCount() );
if ( $messages->unreadCount() > 0 ) {
$messageBadge = Views::simpleView( 'messages.badge' );
} else {
$messageBadge = '';
}
Components::set( 'MBADGE', $messageBadge );
if ( App::$isLoggedIn ) {
Components::set( 'RECENT_MESSAGES', Views::simpleView( 'messages.nav.recentMessagesDropdown', $messages->getInbox( 5 ) ) );
} else {
Components::set( 'RECENT_MESSAGES', '' );
}
App::$topNavRight .= '{RECENT_MESSAGES}';
App::$topNavRightDropdown .= '<li><a href="{ROOT_URL}messages"><i class="fa fa-fw fa-envelope"></i> Inbox {MBADGE}</a></li>';
self::$loaded = true;

View File

@ -73,12 +73,12 @@ class Notification extends DatabaseModel {
'expiresAt', '<', time(),
];
if ( empty( $limit ) ) {
$notifications = self::$db->getPaginated( $this->tableName, $whereClause );
$notifications = self::$db->get( $this->tableName, $whereClause );
} else {
$notifications = self::$db->getPaginated( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
$notifications = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
}
if ( !$notifications->count() ) {
Debug::info( 'No Notifications found.' );
Debug::info( 'Notification:getByUser No Notifications found' );
return false;
}
return $this->filter( $notifications->results() );

View File

@ -33,7 +33,7 @@ class Notifications extends Plugin {
];
public $admin_links = [
[
'text' => '<i class="glyphicon glyphicon-bell"></i> Notify',
'text' => '<i class="fa fa-fw fa-bell"></i> Notify',
'url' => '{ROOT_URL}admin/notifications',
],
];
@ -49,14 +49,14 @@ class Notifications extends Plugin {
$messageBadge = '';
}
Components::set( 'NBADGE', $messageBadge );
if ( App::$isLoggedIn ) {
Components::set( 'recentNotifications', Views::simpleView( 'notifications.nav.recentNotificationsDropdown', $notifications->getByUser( 10 ) ) );
} else {
Components::set( 'recentNotifications', '' );
}
if ( ! self::$loaded ) {
if ( App::$isLoggedIn ) {
Components::set( 'recentNotifications', Views::simpleView( 'notifications.nav.recentNotificationsDropdown', $notifications->getByUser( 10 ) ) );
} else {
Components::set( 'recentNotifications', '' );
}
App::$topNavRight .= '{recentNotifications}';
App::$topNavRightDropdown .= '<li><a href="{ROOT_URL}notifications"><i class="glyphicon glyphicon-bell"></i> Notifications {NBADGE}</a></li>';
App::$topNavRightDropdown .= '<li><a href="{ROOT_URL}notifications"><i class="fa fa-fw fa-bell"></i> Notifications {NBADGE}</a></li>';
self::$loaded = true;
}
}

View File

@ -19,8 +19,6 @@
<link rel="alternate" hreflang="en-us" href="alternateURL">
<link rel="icon" href="{BASE}images/favicon.ico">
<!-- Required CSS -->
<link rel="stylesheet" href="{BASE}vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{BASE}vendor/fortawesome/font-awesome/css/font-awesome.min.css">
<!-- Custom styles for this template -->
<link rel="stylesheet" href="{BASE}Templates/default/default.css">
<!-- Required JS -->
@ -32,7 +30,7 @@
but I had to account for additional menus-->
<div class="navbar-header">
<a href="{BASE}" class="navbar-brand">{SITENAME}</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse" style="">
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target=".navbar-ex1-collapse" style="">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -43,7 +41,7 @@
<div class="collapse navbar-collapse navbar-ex1-collapse">
{topNavLeft}
<div class="navbar-right">
<ul class="nav navbar-nav">
<ul class=" navbar-nav">
{topNavRight}
</ul>
</div>

View File

@ -19,52 +19,51 @@
<link rel="icon" href="{ROOT_URL}images/favicon.ico">
<!-- Required CSS -->
<link rel="stylesheet" href="{FONT_AWESOME_URL}font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap-theme.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap.min.css" crossorigin="anonymous">
<!-- Custom styles for this template -->
{TEMPLATE_CSS_INCLUDES}
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a href="{ROOT_URL}" class="navbar-brand">{SITENAME}</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Top Menu Items -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" role="navigation">
<!--Brand and toggle should get grouped for better mobile display but I had to account for additional menus-->
<div class="container-fluid">
<div class="collapse navbar-collapse navbar-ex1-collapse">
<a href="{ROOT_URL}" class="navbar-brand">{SITENAME}</a>
<!-- Toggler Button -->
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
{topNavLeft}
<div class="navbar-right">
<ul class="nav navbar-nav">
{topNavRight}
</ul>
</div>
<ul class="navbar-nav ml-auto">
{topNavRight}
</ul>
</div>
</div>
{ADMIN}
{ADMINNAV}
{/ADMIN}
</nav>
<div class="container-fluid">
{ISSUES}
<div class="row">
<div class="container">
<div class="col-xlg-11 col-xlg-offset-1 col-lg-10 col-lg-offset-2 col-med-offset-2 col-md-10 col-sm-offset-3 col-sm-9 col-xs-offset-3 col-xs-9 row">
<div class="col-xlg-11 col-xlg-offset-1 col-lg-10 col-lg-offset-2 col-med-offset-2 col-md-10 col-sm-offset-3 col-sm-9 row">
{ERROR}
{NOTICE}
{SUCCESS}
</div>
</div>
</div>
{/ISSUES}
<div class="row">
<div class="col-xlg-11 col-xlg-offset-1 col-lg-10 col-lg-offset-2 col-med-offset-2 col-md-10 col-sm-offset-3 col-sm-9 col-xs-offset-3 col-xs-9 main">
<div class="col-xlg-1 col-lg-2 col-med-2">
{ADMIN}
{ADMINNAV}
{/ADMIN}
</div>
<div class="col-xlg-11 col-xlg-offset-1 col-lg-10 col-lg-offset-2 col-med-offset-2 col-md-10 col-sm-offset-3 col-sm-9 main">
{ADMIN_BREADCRUMBS}
{CONTENT}
</div>
@ -73,7 +72,7 @@
<footer>
<div class="sticky-foot">
<div class="sticky-foot-head" id=""></div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 text-center sticky-copy">
<div class="col-lg-12 col-md-12 col-sm-12 text-center sticky-copy">
<p class="text-muted">Powered by <a href="https://thetempusproject.com">The Tempus Project</a>.</p>
</div>
</div>

View File

@ -52,7 +52,7 @@ class DefaultLoader extends Loader {
if ( App::$isLoggedIn ) {
Components::set( 'topNavRightDropdown', Template::parse( App::$topNavRightDropdown ) );
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedIn' ) );
Components::set( 'USERNAME', App::$activeUser->username );
Components::set( 'USERNAME', \ucfirst( App::$activeUser->username ) );
} else {
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedOut' ) );
}

View File

@ -30,37 +30,37 @@
<link rel="icon" href="{ROOT_URL}images/favicon.ico">
<!-- Required CSS -->
<link rel="stylesheet" href="{FONT_AWESOME_URL}font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap-theme.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="{BOOTSTRAP_CDN}css/bootstrap.min.css" crossorigin="anonymous">
<!-- Custom styles for this template -->
{TEMPLATE_CSS_INCLUDES}
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" role="navigation">
<!--Brand and toggle should get grouped for better mobile display but I had to account for additional menus-->
<div class="navbar-header">
<a href="{ROOT_URL}" class="navbar-brand">{SITENAME}</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse" style="">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="container-fluid">
<div class="collapse navbar-collapse navbar-ex1-collapse">
<a href="{ROOT_URL}" class="navbar-brand">{SITENAME}</a>
<!-- Toggler Button -->
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
{topNavLeft}
<div class="navbar-right">
<ul class="nav navbar-nav">
{topNavRight}
</ul>
</div>
<ul class="navbar-nav ml-auto">
{topNavRight}
</ul>
</div>
</div>
</nav>
<div class="container-fluid top-pad dynamic-footer-padding">
{ISSUES}
<div class="container">
<div class="container pt-4">
<div class="row">
{ERROR}
{NOTICE}
@ -69,7 +69,7 @@
</div>
</div>
{/ISSUES}
<div class="container">
<div class="pt-4">
{CONTENT}
</div>
</div>