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 @@ -
- - - -
- - '; - - - $NEWS_MENU_TEMPLATE['carousel']['item'] = ' -
- {NEWSIMAGE} - -
';; - - - $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']['item'] = ' +
    {SETIMAGE: w=800&h=370&crop=1} + {NEWS_IMAGE: class=img-responsive} + +
    '; + + + +$NEWS_MENU_TEMPLATE['carousel']['nav'] = '
  • {NEWS_SUMMARY}
  • '; \ No newline at end of file