1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-10 16:46:50 +02:00

News Grid Upgrades (TBD)

This commit is contained in:
Cameron
2017-02-06 19:27:23 -08:00
parent 780123f5de
commit cf43841e27
8 changed files with 131 additions and 26 deletions

View File

@@ -434,7 +434,7 @@ class news_admin_ui extends e_admin_ui
'news_id' => array('title' => LAN_ID, 'type' => 'text', 'width' => '5%', 'thclass' => 'center', 'class' => 'center', 'nosort' => false, 'readParms'=>'link=sef&target=blank'), 'news_id' => array('title' => LAN_ID, 'type' => 'text', 'width' => '5%', 'thclass' => 'center', 'class' => 'center', 'nosort' => false, 'readParms'=>'link=sef&target=blank'),
'news_thumbnail' => array('title' => NWSLAN_67, 'type' => 'method', 'data'=>'str', 'width' => '110px', 'thclass' => 'center', 'class' => "center", 'nosort' => false, 'readParms'=>'thumb=60&thumb_urlraw=0&thumb_aw=60', 'readonly'=>false), 'news_thumbnail' => array('title' => NWSLAN_67, 'type' => 'method', 'data'=>'str', 'width' => '110px', 'thclass' => 'center', 'class' => "center", 'nosort' => false, 'readParms'=>'thumb=60&thumb_urlraw=0&thumb_aw=60', 'readonly'=>false),
'news_title' => array('title' => LAN_TITLE, 'type' => 'text', 'data'=>'str', 'tab'=>0, 'writeParms'=> array('required'=> 1, 'size'=>'block-level'), 'inline'=>true, 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_title' => array('title' => LAN_TITLE, 'type' => 'text', 'data'=>'str', 'tab'=>0, 'writeParms'=> array('required'=> 1, 'size'=>'block-level'), 'inline'=>true, 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false),
'news_summary' => array('title' => LAN_SUMMARY, 'type' => 'text', 'data'=>'str', 'tab'=>0, 'writeParms'=>'size=block-level', 'width' => 'auto', 'thclass' => 'left', 'class' => 'left', 'nosort' => false), 'news_summary' => array('title' => LAN_SUMMARY, 'type' => 'text', 'data'=>'str', 'tab'=>0, 'inline'=>true, 'writeParms'=>'size=block-level', 'width' => 'auto', 'thclass' => 'left', 'class' => 'left', 'nosort' => false),
'news_body' => array('title' => "", 'type' => 'method', 'data'=>'str', 'tab'=>0, 'nolist'=>true, 'writeParms'=>'nolabel=1','data'=>'str', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_body' => array('title' => "", 'type' => 'method', 'data'=>'str', 'tab'=>0, 'nolist'=>true, 'writeParms'=>'nolabel=1','data'=>'str', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false),
'news_extended' => array('title' => "", 'type' => null, 'data'=>'str', 'tab'=>0, 'nolist'=>true, 'writeParms'=>'nolabel=1','data'=>'str', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_extended' => array('title' => "", 'type' => null, 'data'=>'str', 'tab'=>0, 'nolist'=>true, 'writeParms'=>'nolabel=1','data'=>'str', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false),

View File

@@ -715,11 +715,18 @@ class e_news_tree extends e_front_tree_model
$start = $parser->parseTemplate($template['start'], true, $vars); // must be here in case {SETIMAGE} is present and used for items below. $start = $parser->parseTemplate($template['start'], true, $vars); // must be here in case {SETIMAGE} is present and used for items below.
} }
$featuredCount = !empty($parms['featured']) ? intval($parms['featured']) : 0;
e107::getDebug()->log("Featured Count: ".$featuredCount);
foreach ($items as $news) foreach ($items as $news)
{ {
$vars->counter = $i; $vars->counter = $i;
$batch->setScVar('news_item', $news->getData()); $batch->setScVar('news_item', $news->getData());
$ret[] = $parser->parseTemplate($template['item'], true, $batch, $vars); $tmpl = (isset($template['featured']) && $i <= $featuredCount) ? 'featured' : 'item';
$ret[] = $parser->parseTemplate($template[$tmpl], true, $batch, $vars);
$i++; $i++;
} }
@@ -912,6 +919,8 @@ class e_news_category_tree extends e_front_tree_model
return ''; return '';
} }
$ret = array(); $ret = array();
$tp = e107::getParser(); $tp = e107::getParser();
@@ -926,7 +935,8 @@ class e_news_category_tree extends e_front_tree_model
} }
$bullet = defined('BULLET') ? THEME_ABS.'images/'.BULLET : THEME_ABS.'images/bullet2.gif'; $bullet = defined('BULLET') ? THEME_ABS.'images/'.BULLET : THEME_ABS.'images/bullet2.gif';
$obj = new e_vars(array('bullet' => $bullet)); $obj = new e_vars(array('bullet' => $bullet));
foreach ($this->getTree() as $cat) foreach ($this->getTree() as $cat)
{ {
$obj->active = ''; $obj->active = '';
@@ -934,8 +944,9 @@ class e_news_category_tree extends e_front_tree_model
{ {
$obj->active = ' active'; $obj->active = ' active';
} }
$ret[] = $cat->toHTML($template['item'], $parsesc, $obj); $ret[] = $cat->toHTML($template['item'], $parsesc, $obj);
} }
if($ret) if($ret)

View File

@@ -56,6 +56,7 @@ class news_menu
$fields['source'] = array('title'=> "Source", 'type'=>'dropdown','writeParms'=>array('optArray'=>$sources), 'help'=>"Assigned items are those with a template assigned to 'News Grid Menu' "); $fields['source'] = array('title'=> "Source", 'type'=>'dropdown','writeParms'=>array('optArray'=>$sources), 'help'=>"Assigned items are those with a template assigned to 'News Grid Menu' ");
$fields['layout'] = array('title'=> "Layout", 'type'=>'method', 'writeParms'=>''); $fields['layout'] = array('title'=> "Layout", 'type'=>'method', 'writeParms'=>'');
$fields['count'] = array('title'=> "Number of Items to Display", 'type'=>'number', 'writeParms'=>array('pattern'=>'[0-9]*', 'default'=>4)); $fields['count'] = array('title'=> "Number of Items to Display", 'type'=>'number', 'writeParms'=>array('pattern'=>'[0-9]*', 'default'=>4));
$fields['feature'] = array('title'=> "Number of Feature Items", 'type'=>'number', 'writeParms'=>array('pattern'=>'[0-9]*', 'default'=>0));
$fields['titleLimit'] = array('title'=> "Title Character Limit", 'type'=>'number', 'writeParms'=>''); $fields['titleLimit'] = array('title'=> "Title Character Limit", 'type'=>'number', 'writeParms'=>'');
$fields['summaryLimit'] = array('title'=> "Summary Character Limit", 'type'=>'number', 'writeParms'=>''); $fields['summaryLimit'] = array('title'=> "Summary Character Limit", 'type'=>'number', 'writeParms'=>'');

View File

@@ -15,8 +15,9 @@ if (!defined('e107_INIT')) { exit; }
* @param string $parm['source'] latest (latest news items) | sticky (news items) | template (assigned to news-grid layout) * @param string $parm['source'] latest (latest news items) | sticky (news items) | template (assigned to news-grid layout)
* @param integer $parm['order'] n.news_datestamp DESC * @param integer $parm['order'] n.news_datestamp DESC
* @param integer $parm['limit'] 10 * @param integer $parm['limit'] 10
* @param string $parm['template'] default | or any key as defined in news_grid_template.php
* *
* @example hard-coded {MENU: path=news/news_grid&limit=6&source=latest} * @example hard-coded {MENU: path=news/news_grid&limit=6&source=latest&featured=2&template=other}
* @example admin assigned - Add via Media-Manager and then configure. * @example admin assigned - Add via Media-Manager and then configure.
*/ */
$cacheString = 'nq_news_grid_menu_'.md5(serialize($parm)); $cacheString = 'nq_news_grid_menu_'.md5(serialize($parm));
@@ -43,14 +44,29 @@ if(false === $cached)
$parms['caption'] = $parms['caption'][e_LANGUAGE]; $parms['caption'] = $parms['caption'][e_LANGUAGE];
} }
if(defset($parms['caption'])) if(!empty($parms['caption']) && defined($parms['caption']))
{ {
$parms['caption'] = constant($parms['caption']); $parms['caption'] = constant($parms['caption']);
} }
$ntree = e107::getObject('e_news_tree', null, e_HANDLER.'news_class.php'); $ntree = e107::getObject('e_news_tree');
$template = e107::getTemplate('news', 'news_menu', 'grid');
if($legacyTemplate = e107::getTemplate('news', 'news_menu', 'grid')) // BC
{
$template = $legacyTemplate;
$parms['tmpl'] = 'news_menu';
$parms['tmpl_key'] = 'grid';
}
else // New in v2.1.5
{
$tmpl = !empty($parms['template']) ? $parms['template'] : 'default';
$template = e107::getTemplate('news', 'news_grid', $tmpl);
$parms['tmpl'] = 'news_grid';
$parms['tmpl_key'] = $tmpl;
}
$gridSize = vartrue($parms['layout'],'col-md-4'); $gridSize = vartrue($parms['layout'],'col-md-4');
$parmSrch = array( $parmSrch = array(
@@ -61,16 +77,15 @@ if(false === $cached)
$parmReplace = array( $parmReplace = array(
$gridSize, $gridSize,
vartrue($parms['titleLimit'],0), vartrue($parms['titleLimit'], 0),
vartrue($parms['summaryLimit'],0) vartrue($parms['summaryLimit'], 0)
); );
$template = str_replace($parmSrch , $parmReplace, $template); $template = str_replace($parmSrch , $parmReplace, $template);
$render = (empty($parms['caption'])) ? false: true; $render = (empty($parms['caption'])) ? false: true;
$parms['tmpl'] = 'news_menu';
$parms['tmpl_key'] = 'grid';
if(empty($parms['count'])) if(empty($parms['count']))
{ {
@@ -81,14 +96,22 @@ if(false === $cached)
$treeparm = array(); $treeparm = array();
if(vartrue($parms['count'])) $treeparm['db_limit'] = '0, '.intval($parms['count']);
if(!empty($parms['count']))
{
$treeparm['db_limit'] = '0, '.intval($parms['count']);
}
if(!empty($parms['limit'])) if(!empty($parms['limit']))
{ {
$treeparm['db_limit'] = '0, '.intval($parms['limit']); $treeparm['db_limit'] = '0, '.intval($parms['limit']);
} }
if(vartrue($parms['order'])) $treeparm['db_order'] = e107::getParser()->toDb($parms['order']); if(!empty($parms['order']))
{
$treeparm['db_order'] = e107::getParser()->toDb($parms['order']);
}
$parms['return'] = true; $parms['return'] = true;
if(varset($parms['source']) == 'template') if(varset($parms['source']) == 'template')
@@ -102,6 +125,7 @@ if(false === $cached)
} }
$cached = $ntree->loadJoinActive(vartrue($parms['category'], 0), false, $treeparm)->render($template, $parms, $render); $cached = $ntree->loadJoinActive(vartrue($parms['category'], 0), false, $treeparm)->render($template, $parms, $render);
e107::getCache()->set($cacheString, $cached); e107::getCache()->set($cacheString, $cached);
} }

View File

@@ -0,0 +1,77 @@
<?php
/**
* e107 website system
*
* Copyright (C) 2008-2017 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
*/
$NEWS_GRID_TEMPLATE['default']['start'] = '<div class="row news-grid-default news-menu-grid">';
$NEWS_GRID_TEMPLATE['default']['featured'] = '<div class="row featured">
<div class="col-sm-12">
<div class="item col-sm-6" >
{SETIMAGE: w=600&h=400&crop=1}
{NEWSTHUMBNAIL=placeholder}
</div>
<div class="item col-sm-6">
<h3>Featured {NEWSTITLE: limit=_titleLimit_}</h3>
<p>{NEWSMETADIZ: limit=100}</p>
<p class="text-right"><a class="btn btn-primary btn-othernews" href="{NEWSURL}">' . LAN_READ_MORE . '</a></p>
</div>
</div>
</div>
';
$NEWS_GRID_TEMPLATE['default']['item'] = '<div class="item {NEWSGRID}">
{SETIMAGE: w=400&h=400&crop=1}
{NEWSTHUMBNAIL=placeholder}
<h3>{NEWSTITLE: limit=_titleLimit_}</h3>
<p>{NEWSSUMMARY: limit=_summaryLimit_}</p>
<p class="text-right"><a class="btn btn-primary btn-othernews" href="{NEWSURL}">' . LAN_READ_MORE . '</a></p>
</div>';
$NEWS_GRID_TEMPLATE['default']['end'] = '</div>';
//@todo find a better name than 'other'
$NEWS_GRID_TEMPLATE['other']['start'] = '<div class="row news-grid-other">';
$NEWS_GRID_TEMPLATE['other']['featured'] = '<div class="featured item col-sm-6" >
{SETIMAGE: w=600&h=400&crop=1}
{NEWSTHUMBNAIL=placeholder}
<h3>Featured {NEWSTITLE: limit=_titleLimit_}</h3>
<p>{NEWSSUMMARY}</p>
</div>
';
$NEWS_GRID_TEMPLATE['other']['item'] = '<div class="item col-sm-6">
{SETIMAGE: w=120&h=120&crop=1}
<ul class="media-list">
<li class="media">
<div class="media-left media-top">
<a href="#">
{NEWS_IMAGE: class=media_object img-rounded}
</a>
</div>
<div class="media-body">
<h4 class="media-heading">{NEWSTITLE: limit=_titleLimit_}</h4>
<p>{NEWSSUMMARY: limit=_summaryLimit_}</p>
</div>
</li>
</ul>
</ul>
</div>';
$NEWS_GRID_TEMPLATE['other']['end'] = '</div>';

View File

@@ -86,15 +86,7 @@ $NEWS_MENU_TEMPLATE['other2']['end'] = "</ul>";
// Grid Menu // Grid Menu
$NEWS_MENU_TEMPLATE['grid']['start'] = '<div class="row news-menu-grid">'; // Moved to news_grid_template.php
$NEWS_MENU_TEMPLATE['grid']['item'] = '<div class="item {NEWSGRID}">
{SETIMAGE: w=400&h=400&crop=1}
{NEWSTHUMBNAIL=placeholder}
<h3>{NEWSTITLE: limit=_titleLimit_}</h3>
<p>{NEWSSUMMARY: limit=_summaryLimit_}</p>
<p class="text-right"><a class="btn btn-primary btn-othernews" href="{NEWSURL}">'.LAN_READ_MORE.'</a></p>
</div>';
$NEWS_MENU_TEMPLATE['grid']['end'] = '</div>';
// $NEWS_MENU_WRAPPER['grid']['NEWSTITLE'] = "<span style='color:red'>{---}</span>"; // example // $NEWS_MENU_WRAPPER['grid']['NEWSTITLE'] = "<span style='color:red'>{---}</span>"; // example

View File

@@ -1287,7 +1287,7 @@ li.rssRow > div {
.selectize-input > input, .selectize-input.full { color: inherit; background-color:inherit} .selectize-input > input, .selectize-input.full { color: inherit; background-color:inherit}
.selectize-control div.item { border-radius:3px; } .selectize-control div.item { border-radius:3px; }
.selectize-control div.item .remove { margin-top:3px } .selectize-control div.item .remove { margin-top:3px }
.selectize-input.focus { } .selectize-input.focus { box-shadow: inherit; }
/* /*

View File

@@ -153,8 +153,8 @@ li.dropdown-submenu.lower ul.submenu-start li a { display:inline-block; padding-
li.dropdown-submenu.lower ul.submenu-start li a:hover { background:none} li.dropdown-submenu.lower ul.submenu-start li a:hover { background:none}
li.dropdown-submenu.lower ul.submenu-start li:hover { background-color:#f5f5f5; } li.dropdown-submenu.lower ul.submenu-start li:hover { background-color:#f5f5f5; }
.news-grid-default .featured { margin-bottom:30px; }
.news-grid-other .featured { margin-bottom:30px; }
/* CUSTOM Responsive Styles */ /* CUSTOM Responsive Styles */