diff --git a/e107_core/shortcodes/batch/news_shortcodes.php b/e107_core/shortcodes/batch/news_shortcodes.php
index dfe3ce6b3..24e598455 100644
--- a/e107_core/shortcodes/batch/news_shortcodes.php
+++ b/e107_core/shortcodes/batch/news_shortcodes.php
@@ -314,6 +314,11 @@ class news_shortcodes extends e_shortcode
return $this->sc_newsavatar($parm);
}
+ public function sc_news_image($parm=null)
+ {
+ return $this->sc_newsimage($parm);
+ }
+
// ----------------------------------- BC compatible Shortcodes ------------------------------------------- //
function sc_newscategory($parm=null)
@@ -328,23 +333,28 @@ class news_shortcodes extends e_shortcode
{
$date = ($this->news_item['news_start'] > 0) ? $this->news_item['news_start'] : $this->news_item['news_datestamp'];
$con = e107::getDate();
+ $tp = e107::getParser();
+
if($parm == '')
{
- return $con->convert_date($date, 'long');
+ return $tp->toDate($date, 'long');
}
+
+
switch($parm)
{
case 'long':
- return $con->convert_date($date, 'long');
+ return $tp->toDate($date, 'long');
break;
case 'short':
- return $con->convert_date($date, 'short');
+ return $tp->toDate($date, 'short');
break;
case 'forum':
return $con->convert_date($date, 'forum');
break;
default :
- return date($parm, $date);
+ return $tp->toDate($date,$parm);
+ // return date($parm, $date);
break;
}
}
@@ -722,6 +732,7 @@ class news_shortcodes extends e_shortcode
* Display News Images (but not video thumbnails )
* @param $parm array
* @example {NEWSIMAGE: type=src&placeholder=true}
+ * @example {NEWSIMAGE: class=img-responsive}
*/
function sc_newsimage($parm = null)
{
@@ -735,7 +746,7 @@ class news_shortcodes extends e_shortcode
$tmp = $this->handleMultiple($parm);
$srcPath = $tmp['file'];
- $class = "news_image news-image img-responsive img-rounded";
+ $class = (!empty($parm['class'])) ? $parm['class'] : "news_image news-image img-responsive img-rounded";
$class .= ' news-image-'.$tmp['count'];
$dimensions = null;
$srcset = null;
diff --git a/e107_plugins/news/e_menu.php b/e107_plugins/news/e_menu.php
index 6f731f416..5fb3d95d7 100644
--- a/e107_plugins/news/e_menu.php
+++ b/e107_plugins/news/e_menu.php
@@ -61,6 +61,13 @@ class news_menu
break;
+ case "news_carousel":
+ $fields['caption'] = array('title'=> LAN_CAPTION, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'), 'help'=>LAN_OPTIONAL);
+ $fields['category'] = array('title'=> LAN_CATEGORY, 'type'=>'dropdown', 'writeParms'=>array('optArray'=>$categories, 'default'=>"(".LAN_ALL.")"), 'help'=>"Limit news items to a specific category");
+ $fields['source'] = array('title'=> "Source", 'type'=>'dropdown','writeParms'=>array('optArray'=>$sources), 'help'=>"Assigned items are those with a template assigned to 'News Carousel' ");
+ $fields['count'] = array('title'=> "Number of Items to Display", 'type'=>'number', 'writeParms'=>array('pattern'=>'[0-9]*', 'default'=>4));
+ break;
+
case "news_categories":
$fields['caption'] = array('title'=> LAN_CAPTION, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'));
diff --git a/e107_plugins/news/news_carousel.css b/e107_plugins/news/news_carousel.css
index 41b665df0..ba949f41b 100644
--- a/e107_plugins/news/news_carousel.css
+++ b/e107_plugins/news/news_carousel.css
@@ -3,13 +3,13 @@
@media all and (min-width: 768px)
{
- #news-carousel-titles { margin-top:20px; padding-left:0px; height:350px }
- #news-carousel-images { margin-top:20px; padding-right:0px; height:350px }
+ #news-carousel-titles { margin-top:20px; padding-left:0; height:350px }
+ #news-carousel-images { margin-top:20px; padding-right:0; height:350px }
}
-#news-carousel-images .carousel-caption { left:15px; right:15px: margin:0px; padding:0px; bottom:10px; text-align:left }
-#news-carousel-images .carousel-caption h1 { margin:0px }
-#news-carousel-images .carousel-caption small { font-size: 11px; margin: 0px; text-transform: uppercase; }
+#news-carousel-images .carousel-caption { left:15px; right:15px; margin:0; padding:0; bottom:10px; text-align:left }
+#news-carousel-images .carousel-caption h1 { margin:0 }
+#news-carousel-images .carousel-caption small { font-size: 11px; margin: 0; text-transform: uppercase; }
#news-carousel-nav { width:100%; height:100%; background-color:black }
#news-carousel-nav li { border-left:4px solid transparent }
#news-carousel-nav li.active { border-left:4px solid rgb(238, 50, 36); }
diff --git a/e107_plugins/news/news_carousel_menu.php b/e107_plugins/news/news_carousel_menu.php
index 774a9dd8d..1851c3cb6 100644
--- a/e107_plugins/news/news_carousel_menu.php
+++ b/e107_plugins/news/news_carousel_menu.php
@@ -1,88 +1,65 @@
-
-
-
-
';
+$limit = vartrue($parms['count'],5);
+$tp = e107::getParser();
+$template = e107::getTemplate('news', 'news_menu', 'carousel');
-
- $NEWS_MENU_TEMPLATE['carousel']['end'] = '
-
-
-
-
-
-
- ';
-
-
- $NEWS_MENU_TEMPLATE['carousel']['item'] = '
-
- {NEWSIMAGE}
-
- {NEWSDATE}
-
{NEWSTITLE}
-
-
-
';;
-
-
- $navTemplate = '{NEWSSUMMARY}';
-
-
-
-
-
- $nobody_regexp = "'(^|,)(".str_replace(",", "|", e_UC_NOBODY).")(,|$)'";
+$nobody_regexp = "'(^|,)(".str_replace(",", "|", e_UC_NOBODY).")(,|$)'";
- $query = "
+$query = "
SELECT n.*, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon,
nc.category_meta_keywords, nc.category_meta_description
FROM #news AS n
LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id
WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()."
- AND (n.news_end=0 || n.news_end>".time().") AND FIND_IN_SET(5,n.news_render_type)
+ AND (n.news_end=0 || n.news_end>".time().") ";
+
+ if(!empty($parms['category']))
+ {
+ $query .= " AND n.news_category = ".intval($parms['category']);
+ }
+
+ if(vartrue($parms['source']) == 'assigned')
+ {
+ $query .= " AND FIND_IN_SET(5,n.news_render_type) ";
+ }
+
+ if(vartrue($parms['source']) == 'sticky')
+ {
+ $query .= " AND n.news_sticky = 1 ";
+ }
+
+
+ $query .= " AND n.news_thumbnail != '' ";
+
+$query .= "
ORDER BY n.news_sticky DESC, n.news_datestamp DESC
- LIMIT 5";
+ LIMIT ".$limit;
-
-
$data = $sql->retrieve($query,true);
-if(count($data) < 1)
+if(empty($data))
{
e107::getMessage()->addDebug( "No News items found with 'carousel' as the template ")->render();
return;
@@ -90,43 +67,68 @@ if(count($data) < 1)
$count = 0;
- $tp->setThumbSize(800,0);
+// $tp->setThumbSize(800,0);
+
+$sc = e107::getScBatch('news');
+$text = '';
+
foreach($data as $row)
{
- $tmp = explode(",",$row['news_thumbnail']); // fix for multiple
-
- if($video = $tp->toVideo($tmp[0],array('thumb'=>'tag', 'w'=>800)))
- {
- $imgTag = $video;
- }
- else
- {
- $img = $tp->thumbUrl($tmp[0]);
- $imgTag = '
';
- }
-
+
+ $sc->setScVar('news_item', $row);
+
$vars = array(
- 'NEWSTITLE' => $tp->toHtml($row['news_title'],false, 'TITLE'),
- 'NEWSSUMMARY' => vartrue($row['news_summary'],$row['news_title']),
- 'NEWSDATE' => $tp->toDate($row['news_datestamp'],'dd MM, yyyy'),
- 'ACTIVE' => ($count == 0) ? 'active' : '',
- 'COUNT' => $count,
- 'NEWSIMAGE' => ''.$imgTag.''
+ '{ACTIVE}' => ($count == 0) ? 'active' : '',
+ '{COUNT}' => $count,
);
-
-
- $text .= $tp->simpleParse($NEWS_MENU_TEMPLATE['carousel']['item'], $vars);
-
- $nav[] = $tp->simpleParse($navTemplate, $vars);
+
+ $parsed = str_replace(array_keys($vars), $vars, $template['item']);
+
+ $navTemplate = str_replace(array_keys($vars), $vars,$template['nav']);
+ $nav[] = $tp->parseTemplate($navTemplate , true, $sc);
+
+ $parsed = $tp->parseTemplate($parsed,true, $sc);
+ $text .= $parsed;
$count++;
}
-
- $header = $NEWS_MENU_TEMPLATE['carousel']['start'];
+
+ $header = $template['start'];
- $footer = str_replace("{NAV}", implode("\n",$nav), $NEWS_MENU_TEMPLATE['carousel']['end']);
-
- e107::getRender()->tablerender('',$header.$text.$footer,'news-carousel'); //TODO Tablerender().
+ $footer = str_replace("{NAV}", implode("\n",$nav), $template['end']);
+
+
+if(!empty($parms['caption']))
+{
+ e107::getRender()->tablerender($parms['caption'], ($header.$text.$footer) ,'news-carousel'); //TODO Tablerender().
+}
+else
+{
+ echo $header.$text.$footer;
+}
+
+
+
+
+e107::js('footer-inline',"
+ clickEvent = false;
+ $('#news-carousel').on('click', '#news-carousel-nav a', function() {
+ clickEvent = true;
+ $('#news-carousel-nav li').removeClass('active');
+ $(this).parent().addClass('active');
+ }).on('slid.bs.carousel', function(e) {
+ if(!clickEvent) {
+ var count = $('#news-carousel-nav').children().length -1;
+ var current = $('#news-carousel-nav li.active');
+ current.removeClass('active').next().addClass('active');
+ var id = parseInt(current.data('slide-to'));
+ if(count == id) {
+ $('#news-carousel-nav li').first().addClass('active');
+ }
+ }
+ clickEvent = false;
+ });"
+);
diff --git a/e107_plugins/news/templates/news_menu_template.php b/e107_plugins/news/templates/news_menu_template.php
index 90cf8296d..e7886f93f 100644
--- a/e107_plugins/news/templates/news_menu_template.php
+++ b/e107_plugins/news/templates/news_menu_template.php
@@ -103,3 +103,40 @@ $NEWS_MENU_TEMPLATE['grid']['end'] = '';
// $NEWS_MENU_WRAPPER['grid']['NEWSTITLE'] = "{---}"; // example
+
+
+/* Carousel Menu */
+
+$NEWS_MENU_TEMPLATE['carousel']['start'] = '
+
+
+
+
+
';
+
+
+$NEWS_MENU_TEMPLATE['carousel']['end'] = '
+
+
+
+
+
+
+ ';
+
+
+$NEWS_MENU_TEMPLATE['carousel']['item'] = '
+ {SETIMAGE: w=800&h=370&crop=1}
+ {NEWS_IMAGE: class=img-responsive}
+
+ {NEWS_DATE=dd MM, yyyy}
+
{NEWS_TITLE}
+
+
+
';
+
+
+
+$NEWS_MENU_TEMPLATE['carousel']['nav'] = '{NEWS_SUMMARY}';
\ No newline at end of file