Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
United-Forum Nivo Slider Widget Details »»
United-Forum Nivo Slider Widget
Version: 1.1.0, by Mooff Mooff is offline
Developer Last Online: Nov 2013 Show Printable Version Email this Page

Category: vBulletin CMS Widgets - Version: 4.1.4 Rating:
Released: 07-17-2011 Last Update: 07-18-2011 Installs: 146
Additional Files  
No support by the author.

Based on the Nivo Slider - all credit for slider awesomeness goes to them.
vB4 implementation goes to me.


What it is:
A slider for cms articles, it gets the articles via database, uses (if possible) the previewimage there and resizes it to slider size *update 1.1.0 cropping function included.

Livedemo on a Big Board (>2.000.000 posts)
the nivo slider on our site is customized to fit our heavily customized cms. Default look of this addon is shown in the picture below


facts about the nivo slider
Quote:
Originally Posted by nivo slider homepage
- ~ 600.000 downloads
- 16 transition effects
- a ton of options
- different available themes
- ...
Installation
  • upload all files (attached zip file) in the folder where you do need them - this has to be the same folder you will set via $slider_img_filepath (see picture)


  • create a new php-widget and insert the following code:
    Code:
    // DEBUG MODUS !
    $debug_modus = false;
    
    if($debug_modus === false)
    {
    	ob_start();
    }
    
    //nivo slider - uf - vb.org version
    //set these values as you need them:
    
    //your slider folder - has to be read and writeable
    //folder where all slider files are saved
    $slider_img_filepath = 'external/unitedforum/slider/';   
    
    //picture width and height !same as in the CSS FILE!
    $maxwidth = 650;                                  
    $maxheight = 250;    
    
    //do you want images without previewimage to be shown? slider is using the fallback then
    $show_articles_without_image = false;           
    
    //picture shown if your articles has no previewpicture
    $fallback_img = $slider_img_filepath . 'uf_fallback_slider.png';  
    
    //hardcoded maximum is 20 - if you want more just ask
    $number_of_articles_shown = 10;                                
                
    //lengh in characters of the article descriptions
    $description_length = 95;
    
    //stretch picture or crop them? false = strechting (default) true = cropping (beta)
    $crop = false;
    
    
    //Debug Messages
    if($debug_modus)
    {
    	echo "<span style='color:red;'>DEBUG MODE is ON! </span><br />";
    	echo "slider_img_filepath: $slider_img_filepath <br />";
    	echo "width: $maxwidth   height: $maxheight <br />";
    	echo "Strech or Crop? $crop <br />";
    	echo "show_articles_without_image: "; 
            var_dump($show_articles_without_image); 
            echo " <br />";
    	echo "fallback_img: $fallback_img <br />";
    	echo "#img: $number_of_articles_shown <br />";
    	echo "description_length: $description_length <br />";
    	echo 'directory ' . DIR . '<br />';
    
    }
    
    
    
    
    $article_type = vb_Types::instance()->getContentTypeID("vBCms_Article");
    $time = TIMENOW;
     
    if(!extension_loaded('gd'))
    {
    	echo '<span style="color:red">Error occurred:</span> Your System does not support the GD-Libary. Please install the GD-Libary.<br />';
    }
           
    	$article_get = vB::$db->query_read('
            SELECT
                article.pagetext,
                article.previewimage,
                node.url,
                node.publishdate,
                node.parentnode,
                parentnode.url AS parenturl,
                thread.replycount,
                info.title,
                node.nodeid,            
                GROUP_CONCAT( category.category )
            FROM
                '.TABLE_PREFIX.'cms_article AS article INNER JOIN
                '.TABLE_PREFIX.'cms_node AS node 
                    ON (node.contentid = article.contentid AND node.contenttypeid = ' . vb::$db->sql_prepare($article_type) .') INNER JOIN
                '.TABLE_PREFIX.'cms_nodeinfo AS info 
                    ON info.nodeid = node.nodeid INNER JOIN
                '.TABLE_PREFIX.'cms_node AS parentnode 
                    ON parentnode.nodeid = node.parentnode LEFT JOIN
                '.TABLE_PREFIX.'thread AS thread ON thread.threadid = info.associatedthreadid LEFT JOIN
                '.TABLE_PREFIX.'cms_nodecategory AS nodecategory ON nodecategory.nodeid = node.nodeid LEFT JOIN
                '.TABLE_PREFIX.'cms_category AS category ON nodecategory.categoryid = category.categoryid 
            WHERE
                node.setpublish = 1 AND
                node.publishdate > '. vb::$db->sql_prepare($time) .' -34560000 AND
    			node.publishdate < '. vb::$db->sql_prepare($time) .' 
            GROUP BY node.nodeid
            ORDER BY node.publishdate
            DESC LIMIT 20');
    
        $database_articles = array();
        
        /* my version of sorting the articles via relevance - i'll keep it in case someone is interested*/
        while($article = vB::$db->fetch_array($article_get))
        {
            $article['value'] = ( 5 - ($time - $article['publishdate'] ) / 86400 ) * ( 5 - ($time - $article['publishdate'] ) / 86400 ) * ( 5 - ($time - $article['publishdate'] ) / 86400 ) + (10 * $article['replycount']);
            $database_articles[] = $article;        
        }
        
        foreach($database_articles as $c => $key)
        {
            $sort_value[] = $key['value'];
        }
        
        array_multisort($sort_value, SORT_DESC, $database_articles);    
        
        //
        $i = 0;
        $section_array = array();
        $featured_articles = array();
    	
        foreach($database_articles AS $article)
        {
            $section_array[$article['parentnode']]++;
    
            $categories = explode(',' , $article['GROUP_CONCAT( category.category )']);
         
            if($show_articles_without_image == true OR $article['previewimage'])
            {
                if($section_array[$article['parentnode']] < 50 AND $i < $number_of_articles_shown)
                {
    				if($debug_modus == true OR !file_exists($slider_img_filepath . 'slide_' . $article['nodeid'] . '.jpg'))
    				{
    					//rebuild image to the height and width we want in the slider 
    					//called sprite since i got the code from our sprite addon :P
    					$sprite = imagecreatetruecolor($maxwidth, $maxheight);
    					if(is_resource($sprite) AND $article['previewimage'] )
    					{                   				
    						$imageinfo = getimagesize($article['previewimage']);
    						if(is_array($imageinfo))
    						{   
    							$image = null;
    							switch($imageinfo[2])
    							{
    								case IMAGETYPE_PNG:
    								$image = imagecreatefrompng($article['previewimage']);
    								break;
    								case IMAGETYPE_GIF:
    								$image = imagecreatefromgif($article['previewimage']);
    								break;
    								case IMAGETYPE_JPEG:
    								$image = imagecreatefromjpeg($article['previewimage']);
    								break;
    								default:
    								echo '<span style="color:red">Error occurred:</span> Unknown image format. ' . $article['previewimage']. '<br />';
    								break;                        
    							}
    							
    							if(!is_resource($image))
    							{
    								//resiziing did not work - we are using the fallback image.
    								echo '<span style="color:red">Error occurred:</span> imagecreation failed. ' . $article['previewimage']. '<br />';
    								$article['previewimage'] = $fallback_img;
    							}
    							else
    							{
    								$img_width = $imageinfo[0];
    								$img_height = $imageinfo[1];							
    								
    								if($crop == false)
    								{									
    									imagecopyresampled($sprite, $image, 0, 0, 0, 0, $maxwidth, $maxheight, $img_width, $img_height );
    									imagedestroy($image);
    								}
    								else
    								{
    									//cropping
    									$ratiox = $maxheight / $img_height ;
    									$ratioy = $maxwidth / $img_width ;
    									$new_height = $img_height;
    									$new_width = $img_width;
    									
    									if ($maxheight > $img_height OR $maxwidth > $img_width)
    									{
    										if($ratiox > $ratioy)
    										{
    											$new_height = round($img_height * $ratiox);
    											$new_width = round($img_width * $ratiox);
    										}
    										else
    										{
    											$new_height = round($img_height * $ratioy);
    											$new_width = round($img_width * $ratioy);
    										}										
    									}
    									$cropx = $new_height - $maxheight;
    									$cropy = $new_width - $maxwidth;
    									
    									imagecopyresampled($sprite, $image, 0, 0, 0, 0, $new_width, $new_height, $img_width, $img_height);
    									imagedestroy($image);
    									
    								}
    								
    								
    								$img_filepath = $slider_img_filepath . 'slide_' . $article['nodeid'] . '.jpg';
    								$success = imagejpeg($sprite, DIR  . ($img_filepath[0] != DIRECTORY_SEPARATOR ?  DIRECTORY_SEPARATOR : '') . $img_filepath);
    								imagedestroy($sprite);
    								if($success)
    								{
    									$article['previewimage'] = $img_filepath;
    								}
    								else
    								{
    									$img_filepath = DIR  . ($img_filepath[0] != DIRECTORY_SEPARATOR ?  DIRECTORY_SEPARATOR : '') . $img_filepath;
    									echo '<span style="color:red">Error occurred:</span> imagejpeg failed. ' . $article['previewimage']. '<br />
    									directory: '. $img_filepath ;
    									
    									$article['previewimage'] = $fallback_img;
    								}
    							}
    							
    						}
    						else
    						{
    							//resiziing did not work - we are using the fallback image.
    							echo '<span style="color:red">Error occurred:</span> picture is not readable.' . $article['previewimage']. '<br /> ';
    							$article['previewimage'] = $fallback_img;
    						}                  
    					}
    					else
    					{
    						//resiziing did not work - we are using the fallback image.
    						echo '<span style="color:red">Warning:</span> article has no previewimage or sprite is no ressource. ' . $article['previewimage']. '<br />';
    						$article['previewimage'] = $fallback_img;
    					}
    				}
    				else
    				{
    					//we already have the image, no need to resize or crop anything
    					$article['previewimage'] = $slider_img_filepath . 'slide_' . $article['nodeid'] . '.jpg';
    				}
    
                    /*remove everything from the previewtext - html and bb. I do not want bold or colored text there. Cut to a decent length.*/        
                    $article['pagetext'] = strip_bbcode($article['pagetext'], true, true, false, true, false);
    
                    $article['previewtext'] = strip_tags($article['pagetext'], '<a>');
                        
                    $len = $description_length;
                    if ( strlen($article['previewtext']) > $len )
                    {                    
                        $article['previewtext'] = substr( $article['previewtext'] , 0 , strrpos( substr( $article['previewtext'], 0, $len), ' ' ));
                    }   
    
                    $i++;
                    //Build Array
                    $article_neu = array();
                    $article_neu['description'] = '<h2 style="font-weight:bold; font-size: 14px">'. $article['title'].'</h2><span>'. $article['previewtext'] .'</span> <a href="/content.php?r=' . $article['nodeid'] . '-' . $article['url'] . '">read on</a>';
                    $article_neu['htmlcaptionname'] = 'htmlcaption' . $article['nodeid'] ;
                    $article_neu['picture'] = '<a href="/content.php?r=' . $article['nodeid'] . '-' . $article['url'] . '"><img src="'.$article['previewimage'].'" alt="" title="#htmlcaption'. $article['nodeid'] . '" /></a>';
                    
                    $featured_articles[] = $article_neu;
                }
            }
        }
        
        //Randomize Array
        //shuffle($featured_articles);
    
    	//Debug Messages
    	if($debug_modus)
    	{
    		echo '#articles - featured and databasepull ';
    		var_dump(count($featured_articles));
    		var_dump(count($database_articles));
    	}
    
        
    $output_bits = '
        <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider_uf_theme.css" type="text/css" media="screen" />
        <div style="height:' . $maxheight . 'px;">
        <div id="wrapper">
            <div class="slider-wrapper theme-uf">
                <div class="ribbon"></div>
                <div id="slider" class="nivoSlider">';
                
                    foreach($featured_articles AS $article)
                    {
                        $output_bits .= $article['picture'];
                    }
                $output_bits .= '
                </div>';
                
                foreach($featured_articles AS $article)
                {
                    $output_bits .= '<div id="' . $article['htmlcaptionname'] . '" class="nivo-html-caption">' . $article['description'] .'</div>';
                }
                
                $output_bits .= '         
            </div>
    
        </div>
        <script type="text/javascript" src="' .$slider_img_filepath. 'jquery-1.6.1.min.js"></script>
        <script type="text/javascript" src="' .$slider_img_filepath. 'jquery.nivo.slider.pack.js"></script>
        <script type="text/javascript">
        $(window).load(function() {
            $("#slider").nivoSlider();
        });
        </script>
        </div>
        ';
            $output = $output_bits;
     
    if($debug_modus === false)
    {
    	ob_end_clean();        
    }
  • set refresh time to something big!
  • save - add the widget to your layout - enjoy


Custom settings:

At the top of the php-widget code you can see the following:
Code:
// DEBUG MODUS !
$debug_modus = false;

if($debug_modus === false)
{
	ob_start();
}

//nivo slider - uf - vb.org version
//set these values as you need them:

//your slider folder - has to be read and writeable
//folder where all slider files are saved
$slider_img_filepath = 'external/unitedforum/slider/';   

//picture width and height !same as in the CSS FILE!
$maxwidth = 650;                                  
$maxheight = 250;    

//do you want images without previewimage to be shown? slider is using the fallback then
$show_articles_without_image = false;           

//picture shown if your articles has no previewpicture
$fallback_img = $slider_img_filepath . 'uf_fallback_slider.png';  

//hardcoded maximum is 20 - if you want more just ask
$number_of_articles_shown = 5;                                
            
//lengh in characters of the article descriptions
$description_length = 95;
If you change $maxwidth and $maxheight you need to edit the nivo-slider_uf_theme.css file, here:
Code:
.theme-uf #slider {
    margin:0px auto 0 auto;
    width:650px; /* Make sure your images are the same size */
    height:250px; /* Make sure your images are the same size */
}
Width and height have to be the same value in your php-widget and in the css file.

In additon to these settings i also included a "value/relevance function". Meaning the slider doesn't show your latest 5 articles, but instead weights them based on age and comments.

As older an article is the less likely it will show up in the slider.
More comments make it more likely.

This behaviour can be easily changed. I didn't include an if condition cause every board has different needs and i don't know whats best for you.
In addition conditions like "articles just from this section - or these sections, or this category, with a minimum of 10 posts" can be included via one single if condition. Again, i don't know what your board needs or what your category names are.

You can also modify the preview length (more words, less words), the preview style (color fontsize, fontweight .... Again different forums different needs. It's highly customizable.
Support:

Support and requests for the slider itself should be asked here http://nivo.dev7studios.com/
Same goes for different slider themes - a lot is possible, even thumbnails - again this is part of the nivo slider and not the vb4 implementation.

If you have any questions regarding the settings - or want different settings (which have to do with vb4) - ask, and i'll try to come up with some code // show you where you have to put what.


Slider not working. No idea why?

You will find a FAQ in the first comment, which will be kept up to date:
FAQ


The widget here is completely free. No charge, no branding.
But, we do not mind donations either. If you want to give us something. Since we are advertising free and fan based we are happy about every small donation.
( On Forumhome bottom right paypal button: http://www.united-forum.de/forum.php )



That's all
Hope it works for you.
Regards Mooff

Download Now

File Type: zip uf_nivo_slider.zip (65.6 KB, 1507 views)

Screenshots

File Type: jpg install.jpg (90.8 KB, 0 views)
File Type: jpg uf_nivo_slider_promo.jpg (119.2 KB, 0 views)

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.
13 благодарности(ей) от:
AaronMiller, Aramist, doctorsexy, Gemma, LOGECT, mitch84, nacaruncr, owning_y0u, RaSa, Sage Knight, The Rocketeer, YkudzA

Comments
  #362  
Old 11-29-2011, 10:08 AM
DoDe's Avatar
DoDe DoDe is offline
 
Join Date: Feb 2007
Location: Wroclaw-Constanta
Posts: 42
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes I did, it's working fine...
Is your board on local or on the webserver?
Reply With Quote
  #363  
Old 11-29-2011, 11:19 AM
Loversama Loversama is offline
 
Join Date: Nov 2005
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DoDe View Post
Yes I did, it's working fine...
Is your board on local or on the webserver?
webserver..

www.SinfulShadows.com

however when the plugin is loaded it only loads 20% of the time, as the database errors while its half broken so the plugin is disabled.

Not sure what to do about it, but I really really want to get this working, I want to put the slider in just above the navbar (thats the reason I don't want it as a widget or anything else)
Reply With Quote
  #364  
Old 11-30-2011, 11:02 PM
Mooff Mooff is offline
 
Join Date: Mar 2010
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by karlm View Post
I wish to make use of this in different areas (categories) of the site, I've followed the instructions on how to do that from the FAQ.
I made a separate folder and gave it 777 permissions - it reflected the standard logo. However, once I add the code from the FAQ for categories....

Code:
    node.publishdate < '. vb::$db->sql_prepare($time) .' AND
        category.categoryid IN ( 9 )
        GROUP BY node.nodeid
It stops working entirely and shows only a blank slate.
please try
Code:
    node.publishdate < '. vb::$db->sql_prepare($time) .' AND
        category.categoryid = 9
        GROUP BY node.nodeid
@Coolbluelogo
I need more debug, please follow the faq

@intruder
untested:
find
Code:
    
$output_bits = '
    <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider_uf_theme.css" type="text/css" media="screen" />
    <div style="height:' . $maxheight . 'px;">
    <div id="wrapper">
replace with:
Code:
$newheight = $maxheight + 42;
$output_bits = '
    <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="' .$slider_img_filepath. 'nivo-slider_uf_theme.css" type="text/css" media="screen" />
    <div style="height:' . $newheight . 'px;">
    <div id="wrapper">
and in the css file which you uploaded to your server find this part:
Code:
.nivo-caption {
    background: none repeat scroll 0 0 #0D2132;
    bottom: 0px;
    color: #FFFFFF;
    left: 0;
    opacity: 0.4;
    position: absolute;
    width: 100%;
    z-index: 8;
}
and change the bottom value to -42px

@Loversama
I need more information on the database error so i can help.
Reply With Quote
  #365  
Old 12-01-2011, 08:09 AM
Loversama Loversama is offline
 
Join Date: Nov 2005
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mooff View Post
@Loversama
I need more information on the database error so i can help.
I will post everything I have done up to now and hopefully you can point out where I am going wrong ^___^


Plugins & Products -> Plugin Manager -> Add New Plugin

Product = vBulletin
Hook Location = process_templates_complete
Title = nivo_slider
Plugin PHP Code =

PHP Code:
// DEBUG MODUS !
$debug_modus true;

if(
$debug_modus === false)
{
    
ob_start();
}

//nivo slider - uf - vb.org version
//set these values as you need them:

//your slider folder - has to be read and writeable
//folder where all slider files are saved
$slider_img_filepath '/slider/';   

//picture width and height !same as in the CSS FILE!
$maxwidth 650;                                  
$maxheight 250;    

//do you want images without previewimage to be shown? slider is using the fallback then
$show_articles_without_image false;           

//picture shown if your articles has no previewpicture
$fallback_img $slider_img_filepath 'uf_fallback_slider.png';  

//hardcoded maximum is 20 - if you want more just ask
$number_of_articles_shown 10;                                
            
//lengh in characters of the article descriptions
$description_length 95;

//stretch picture or crop them? false = strechting (default) true = cropping (beta)
$crop false;


//Debug Messages
if($debug_modus)
{
    echo 
"<span style='color:red;'>DEBUG MODE is ON! </span><br />";
    echo 
"slider_img_filepath: $slider_img_filepath <br />";
    echo 
"width: $maxwidth   height: $maxheight <br />";
    echo 
"Strech or Crop? $crop <br />";
    echo 
"show_articles_without_image: "
        
var_dump($show_articles_without_image); 
        echo 
" <br />";
    echo 
"fallback_img: $fallback_img <br />";
    echo 
"#img: $number_of_articles_shown <br />";
    echo 
"description_length: $description_length <br />";
    echo 
'directory ' DIR '<br />';

}




$article_type vb_Types::instance()->getContentTypeID("vBCms_Article");
$time TIMENOW;
 
if(!
extension_loaded('gd'))
{
    echo 
'<span style="color:red">Error occurred:</span> Your System does not support the GD-Libary. Please install the GD-Libary.<br />';
}
       
    
$article_get vB::$db->query_read('
        SELECT
            article.pagetext,
            article.previewimage,
            node.url,
            node.publishdate,
            node.parentnode,
            parentnode.url AS parenturl,
            thread.replycount,
            info.title,
            node.nodeid,            
            GROUP_CONCAT( category.category )
        FROM
            '
.TABLE_PREFIX.'cms_article AS article INNER JOIN
            '
.TABLE_PREFIX.'cms_node AS node 
                ON (node.contentid = article.contentid AND node.contenttypeid = ' 
vb::$db->sql_prepare($article_type) .') INNER JOIN
            '
.TABLE_PREFIX.'cms_nodeinfo AS info 
                ON info.nodeid = node.nodeid INNER JOIN
            '
.TABLE_PREFIX.'cms_node AS parentnode 
                ON parentnode.nodeid = node.parentnode LEFT JOIN
            '
.TABLE_PREFIX.'thread AS thread ON thread.threadid = info.associatedthreadid LEFT JOIN
            '
.TABLE_PREFIX.'cms_nodecategory AS nodecategory ON nodecategory.nodeid = node.nodeid LEFT JOIN
            '
.TABLE_PREFIX.'cms_category AS category ON nodecategory.categoryid = category.categoryid 
        WHERE
            node.setpublish = 1 AND
            node.publishdate > '
vb::$db->sql_prepare($time) .' -34560000 AND
            node.publishdate < '
vb::$db->sql_prepare($time) .
        GROUP BY node.nodeid
        ORDER BY node.publishdate
        DESC LIMIT 20'
);

    
$database_articles = array();
    
    
/* my version of sorting the articles via relevance - i'll keep it in case someone is interested*/
    
while($article vB::$db->fetch_array($article_get))
    {
        
$article['value'] = ( - ($time $article['publishdate'] ) / 86400 ) * ( - ($time $article['publishdate'] ) / 86400 ) * ( - ($time $article['publishdate'] ) / 86400 ) + (10 $article['replycount']);
        
$database_articles[] = $article;        
    }
    
    foreach(
$database_articles as $c => $key)
    {
        
$sort_value[] = $key['value'];
    }
    
    
array_multisort($sort_valueSORT_DESC$database_articles);    
    
    
//
    
$i 0;
    
$section_array = array();
    
$featured_articles = array();
    
    foreach(
$database_articles AS $article)
    {
        
$section_array[$article['parentnode']]++;

        
$categories explode(',' $article['GROUP_CONCAT( category.category )']);
     
        if(
$show_articles_without_image == true OR $article['previewimage'])
        {
            if(
$section_array[$article['parentnode']] < 50 AND $i $number_of_articles_shown)
            {
                if(
$debug_modus == true OR !file_exists($slider_img_filepath 'slide_' $article['nodeid'] . '.jpg'))
                {
                    
//rebuild image to the height and width we want in the slider 
                    //called sprite since i got the code from our sprite addon :P
                    
$sprite imagecreatetruecolor($maxwidth$maxheight);
                    if(
is_resource($sprite) AND $article['previewimage'] )
                    {                                   
                        
$imageinfo getimagesize($article['previewimage']);
                        if(
is_array($imageinfo))
                        {   
                            
$image null;
                            switch(
$imageinfo[2])
                            {
                                case 
IMAGETYPE_PNG:
                                
$image imagecreatefrompng($article['previewimage']);
                                break;
                                case 
IMAGETYPE_GIF:
                                
$image imagecreatefromgif($article['previewimage']);
                                break;
                                case 
IMAGETYPE_JPEG:
                                
$image imagecreatefromjpeg($article['previewimage']);
                                break;
                                default:
                                echo 
'<span style="color:red">Error occurred:</span> Unknown image format. ' $article['previewimage']. '<br />';
                                break;                        
                            }
                            
                            if(!
is_resource($image))
                            {
                                
//resiziing did not work - we are using the fallback image.
                                
echo '<span style="color:red">Error occurred:</span> imagecreation failed. ' $article['previewimage']. '<br />';
                                
$article['previewimage'] = $fallback_img;
                            }
                            else
                            {
                                
$img_width $imageinfo[0];
                                
$img_height $imageinfo[1];                            
                                
                                if(
$crop == false)
                                {                                    
                                    
imagecopyresampled($sprite$image0000$maxwidth$maxheight$img_width$img_height );
                                    
imagedestroy($image);
                                }
                                else
                                {
                                    
//cropping
                                    
$ratiox $maxheight $img_height ;
                                    
$ratioy $maxwidth $img_width ;
                                    
$new_height $img_height;
                                    
$new_width $img_width;
                                    
                                    if (
$maxheight $img_height OR $maxwidth $img_width)
                                    {
                                        if(
$ratiox $ratioy)
                                        {
                                            
$new_height round($img_height $ratiox);
                                            
$new_width round($img_width $ratiox);
                                        }
                                        else
                                        {
                                            
$new_height round($img_height $ratioy);
                                            
$new_width round($img_width $ratioy);
                                        }                                        
                                    }
                                    
$cropx $new_height $maxheight;
                                    
$cropy $new_width $maxwidth;
                                    
                                    
imagecopyresampled($sprite$image0000$new_width$new_height$img_width$img_height);
                                    
imagedestroy($image);
                                    
                                }
                                
                                
                                
$img_filepath $slider_img_filepath 'slide_' $article['nodeid'] . '.jpg';
                                
$success imagejpeg($spriteDIR  . ($img_filepath[0] != DIRECTORY_SEPARATOR ?  DIRECTORY_SEPARATOR '') . $img_filepath);
                                
imagedestroy($sprite);
                                if(
$success)
                                {
                                    
$article['previewimage'] = $img_filepath;
                                }
                                else
                                {
                                    
$img_filepath DIR  . ($img_filepath[0] != DIRECTORY_SEPARATOR ?  DIRECTORY_SEPARATOR '') . $img_filepath;
                                    echo 
'<span style="color:red">Error occurred:</span> imagejpeg failed. ' $article['previewimage']. '<br />
                                    directory: '
$img_filepath ;
                                    
                                    
$article['previewimage'] = $fallback_img;
                                }
                            }
                            
                        }
                        else
                        {
                            
//resiziing did not work - we are using the fallback image.
                            
echo '<span style="color:red">Error occurred:</span> picture is not readable.' $article['previewimage']. '<br /> ';
                            
$article['previewimage'] = $fallback_img;
                        }                  
                    }
                    else
                    {
                        
//resiziing did not work - we are using the fallback image.
                        
echo '<span style="color:red">Warning:</span> article has no previewimage or sprite is no ressource. ' $article['previewimage']. '<br />';
                        
$article['previewimage'] = $fallback_img;
                    }
                }
                else
                {
                    
//we already have the image, no need to resize or crop anything
                    
$article['previewimage'] = $slider_img_filepath 'slide_' $article['nodeid'] . '.jpg';
                }

                
/*remove everything from the previewtext - html and bb. I do not want bold or colored text there. Cut to a decent length.*/        
                
$article['pagetext'] = strip_bbcode($article['pagetext'], truetruefalsetruefalse);

                
$article['previewtext'] = strip_tags($article['pagetext'], '<a>');
                    
                
$len $description_length;
                if ( 
strlen($article['previewtext']) > $len )
                {                    
                    
$article['previewtext'] = substr$article['previewtext'] , strrpossubstr$article['previewtext'], 0$len), ' ' ));
                }   

                
$i++;
                
//Build Array
                
$article_neu = array();
                
$article_neu['description'] = '<h2 style="font-weight:bold; font-size: 14px">'$article['title'].'</h2><span>'$article['previewtext'] .'</span> <a href="/content.php?r=' $article['nodeid'] . '-' $article['url'] . '">read on</a>';
                
$article_neu['htmlcaptionname'] = 'htmlcaption' $article['nodeid'] ;
                
$article_neu['picture'] = '<a href="/content.php?r=' $article['nodeid'] . '-' $article['url'] . '"><img src="'.$article['previewimage'].'" alt="" title="#htmlcaption'$article['nodeid'] . '" /></a>';
                
                
$featured_articles[] = $article_neu;
            }
        }
    }
    
    
//Randomize Array
    //shuffle($featured_articles);

    //Debug Messages
    
if($debug_modus)
    {
        echo 
'#articles - featured and databasepull ';
        
var_dump(count($featured_articles));
        
var_dump(count($database_articles));
    }

    
$output_bits '
    <link rel="stylesheet" href="' 
.$slider_img_filepath'nivo-slider.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="' 
.$slider_img_filepath'nivo-slider_uf_theme.css" type="text/css" media="screen" />
    <div style="height:' 
$maxheight 'px;">
    <div id="wrapper">
        <div class="slider-wrapper theme-uf">
            <div class="ribbon"></div>
            <div id="slider" class="nivoSlider">'
;
            
                foreach(
$featured_articles AS $article)
                {
                    
$output_bits .= $article['picture'];
                }
            
$output_bits .= '
            </div>'
;
            
            foreach(
$featured_articles AS $article)
            {
                
$output_bits .= '<div id="' $article['htmlcaptionname'] . '" class="nivo-html-caption">' $article['description'] .'</div>';
            }
            
            
$output_bits .= '         
        </div>

    </div>
    <script type="text/javascript" src="' 
.$slider_img_filepath'jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="' 
.$slider_img_filepath'jquery.nivo.slider.pack.js"></script>
    <script type="text/javascript">
    $(window).load(function() {
        $("#slider").nivoSlider();
    });
    </script>
    </div>
    '
;
        
$output $output_bits;
 
if(
$debug_modus === false)
{
    
ob_end_clean();        

}

$templater = \vB_Template::create('vbcms_page');
$templater->register('nivo_slider'$output);
$template_hook['process_templates_complete'] .= $templater->render(); 
Styles & Templates -> vbcms_page
PHP Code:
{vb:raw header}
{
vb:raw nivo_slider}
{
vb:raw navbar}
{
vb:raw toolbar
Then the website will only some times load, half the time it will get:

Quote:
Database error
The database has encountered a problem.

And the other time I get:

Quote:
DEBUG MODE is ON!
slider_img_filepath: /slider/
width: 650 height: 250
Strech or Crop?
show_articles_without_image: bool(false)
fallback_img: /slider/uf_fallback_slider.png
#img: 10
description_length: 95
directory /home1/fadertwi/public_html
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=255&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=256&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=254&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=252&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=250&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=251&cid=24
Error occurred: picture is not readable.http://www.sinfulshadows.com/attachm...tid=248&cid=24
#articles - featured and databasepull int(7) int(7)

I also get a error in the PHP which does not display onscreen but in the logs which is:

Quote:
[01-Dec-2011 02:04:44] PHP Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home1/fadertwi/public_html/includes/class_bootstrap.php(555) : eval()'d code on line 505
I have also tried the method of changing the article type as you suggested.

Quote:
$article_type = vb_Types::instance()->getContentTypeID("vBCms_Article");
to

Quote:
$article_type = 24;
which is the article type in the DB however that causes the process_templates_complete to not allow any other hooks, or it crashes or something..


So yea pretty stuck, but it'd be amazing if I could fix this, I am re-modling my website at the moment and I really need the slider in my header!

my website is www.SinfulShadows.com however I will have to disable the plugin as my members will not be able to access my site freely while its crashing.
Reply With Quote
  #366  
Old 12-05-2011, 03:25 AM
Booyakan Booyakan is offline
 
Join Date: Jan 2007
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is it possible to have this on forumhome if we do not have cms? And possible instructions if so?

I tried the static code with forumhome instructions from the FAQ but could not get it working.
Reply With Quote
  #367  
Old 12-07-2011, 01:12 PM
Mooff Mooff is offline
 
Join Date: Mar 2010
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

@Loversama
I thought that '\' Error was solved some pages ago?

the "Error occurred: picture is not readable." comes from fopen or allow_url open not beeing ON in the server configuration (i guess)

the DB-Error. I don't know, without an error message what that database error is i'm lost here.

@Booyakan
Without CMS you can only use the static version and that should be possible on forumhome either via plugin and templatehook. Or editing the template itself, or using the notice system - depending on where you want the static version to appear.
Reply With Quote
  #368  
Old 12-08-2011, 03:25 AM
Booyakan Booyakan is offline
 
Join Date: Jan 2007
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mooff View Post
@Loversama
I thought that '\' Error was solved some pages ago?

the "Error occurred: picture is not readable." comes from fopen or allow_url open not beeing ON in the server configuration (i guess)

the DB-Error. I don't know, without an error message what that database error is i'm lost here.


@Booyakan
Without CMS you can only use the static version and that should be possible on forumhome either via plugin and templatehook. Or editing the template itself, or using the notice system - depending on where you want the static version to appear.
Thank you, got it!
Reply With Quote
Благодарность от:
Mooff
  #369  
Old 12-13-2011, 06:46 PM
DoDe's Avatar
DoDe DoDe is offline
 
Join Date: Feb 2007
Location: Wroclaw-Constanta
Posts: 42
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi @,

After I moved to another host I receive the following warrning and the images are not pulled:
PHP Code:
DEBUG MODE is ON
slider_img_filepathslider
width950 height390 
Strech 
or Crop
show_articles_without_imagebool(false
fallback_imgslider/uf_fallback_slider.png 
#img: 10 
description_length95 
directory 
/home/dode/www

Warning
array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in [path]/packages/vbcms/widget/execphp.php(191) : eval()'d code on line 110 
I would appriciate any help.

Thanks!

Problem solved: problem with the templates during migration.
Reply With Quote
Благодарность от:
Mooff
  #370  
Old 12-13-2011, 07:39 PM
kenp kenp is offline
 
Join Date: Oct 2010
Posts: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The slider seems to be working for me which is great but it continues to target articles that do not have images. I have the widget code set to false; for showing sections without image, yet it continues to do so. Any one have an idea?
Reply With Quote
  #371  
Old 12-13-2011, 09:13 PM
Valker Valker is offline
 
Join Date: Jul 2009
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi !

2 questsions:

Does it work with nivo slider 2.7 and how do i update?

and

how do i limit the transistion effekt to fade ?

Edit: and i?ve got a third request:

does it lag ?
http://www.trinitas-gilde.com/content.php

I?ts lagging a bit in FF, in IE it lags very strong but in Chrome or Opera its totally fluid.
(at first it lagged only at a friends pc, but i switchted mine a few day for a few day with for an upodate, now it lags on this (little) pv even.)

Actually he even made a video:

http://www.youtube.com/watch?feature...&v=ird7NFxDHig
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:29 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05715 seconds
  • Memory Usage 2,572KB
  • Queries Executed 27 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (8)bbcode_code
  • (3)bbcode_php
  • (10)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (14)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (3)postbit_attachment
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete