+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Slidehorizon optimierung: Call to a member function get()...

  1. #1
    Neu an Board
    Registriert seit
    16.07.2010
    Beiträge
    74
    Bedankte sich
    4
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Frage Slidehorizon optimierung: Call to a member function get()...

    Hallo Forum

    Ich versuche das Modul Slidehorizon etwas zu optimieren. Der erste Schritt dabei ist, das Javascript auszulagern, damit der Javascriptcode den Quelltext nicht mehr verwüstet.

    Nun habe ich den JavaScript erzeugenden php Code in ein neues File namens js.css verschoben und in diesem File die Datei helpers.php included. Wenn ich nun die Seite js.php im Browser aufrufe, erscheint lediglich die Meldung "Fatal error: Call to a member function get() on a non-object in /joomla15/modules/mod_slidehorizon/js.php</b> on line <b>10"

    Weiss jemand wie ich das beheben kann?

    Hier der Code der drei Dateien, die alle im selben Verzeichnis liegen:
    mod_slidehorizon.php:
    PHP-Code:
    <script language="JavaScript" type="text/javascript" src="modules/mod_slidehorizon/js.php"></script> 
    js.php:
    PHP-Code:
    <?php
    include 'helper.php';

    $php_sliderwidth intval ($params -> get('width',400)); // width of container
    $php_sliderheight intval ($params -> get('height',140)); // height of container
    $php_speed intval ($params -> get('speed',1)); // scrolling speed
    $php_direction =  ($params -> get('direction','left')); // direction of scrolling
    $php_contwidth intval ($params -> get('bwidth',0)); // width of outer container-border
    $php_contcolor = ($params -> get('bcolor','FFFFFF')); // color of container and gap, if any
    $php_gap intval ($params -> get('gap',0)); // size of gap
    $php_stopmouse intval ($params -> get ('stopmouse',0)); // stop on mouseover, 0 means no

    echo 'var leftrightslide=new Array();'."\n";
    $bilderfeld = array();

    modSlidehorizonImageHelper::getAllImages($params,$bilderfeld);
    // print_r ($bilderfeld);
    $x 0;

    foreach (
    $bilderfeld as $i){
                list(
    $width,$height)=getimagesize($i);
                
    $width=$width+$php_gap;
                
    $height=$height+$php_gap;
                echo 
    'leftrightslide['."$x".']= "background-image:url('."$i".'); width:'."$width".'px; height:'."$height".'px; background-repeat:no-repeat"'."\n";
                
    $sum_width=$sum_width+$width;
                
    $sum_height=$sum_height+$height;
                
    $x++;
    }

    echo 
    'var stopmouse='.$php_stopmouse."\n";
    echo 
    'var slidespeed='.$php_speed."\n";
    echo 
    'var sliderheight="'.$php_sliderheight."px".'"'."\n";
    echo 
    'var sliderwidth="'.$php_sliderwidth."px".'"'."\n";
    echo 
    'var slidedirection="'.$php_direction.'"'."\n";
    echo 
    'var sumwidth="'.$sum_width.'"'."\n";
    echo 
    'var sumheight="'.$sum_height.'"'."\n";
    echo 
    'var gap="'.$gap.'"'."\n";
    echo 
    'var container_width="'.($php_sliderwidth $php_contwidth $php_contwidth).'"'."\n";
    echo 
    'var container_height="'.($php_sliderheight $php_contwidth $php_contwidth).'"'."\n";


    if (
    $php_direction == "left" || $php_direction == "up"){
    $logi_op '>';
    $ari_op_1 '-';
    $ari_op_2 '+';
    $negation '-1';
    switch (
    $php_direction){
    case 
    "up":
            
    $dimension 'height';
            
    $corner 'top';
        
    break;
    default:     
    $dimension 'width';
             
    $corner 'left';
        }
    }    
    if (
    $php_direction == "right" || $php_direction == "down"){
    $logi_op '<';
    $ari_op_1 '+';
    $ari_op_2 '-';
    $negation '1';
    switch (
    $php_direction){
    case 
    "down":
            
    $dimension 'height';
            
    $corner 'top';
        
    break;
    default:     
    $dimension 'width';
             
    $corner 'left';
        }
    }    
    ?>
    var mouseappend="";

    if(stopmouse == 1){
        var mouseappend='onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"';
        }

    slidebgcolor= <?php echo '"#'.$php_contcolor.'"'."\n" ?>

    var leftright = new Array (leftrightslide.length);

    for(i=0;i<leftrightslide.length;i++){
    leftright[i]='<span id="einzelbild_'+i+'" style="float:left; margin:0px; border:0px;'+leftrightslide[i]+'"></span>';
    }

    var copyspeed=slidespeed;
    var iedom=document.all||document.getElementById;

    if (iedom){
    var tmp = "";
    innerslide=leftright=leftright.join(" "); 
    leftright = '<div id="slidehori_temp" style="position:absolute; width:'+sumwidth+'px; top:-100px; left:-9000px">'+leftright+'</div>';
    document.write(leftright)
    }

    function fillup(){
    if (iedom){
    cross_slide=document.getElementById? document.getElementById("slidehori_rotator_1") : document.all.slidehori_rotator_1
    cross_slide2=document.getElementById? document.getElementById("slidehori_rotator_2") : document.all.slidehori_rotator_2
    cross_slide.innerHTML=cross_slide2.innerHTML=innerslide
    actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("slidehori_temp").offsetWidth
    actualheight=document.all? cross_slide.clientHeight : document.getElementById("slidehori_rotator_1").clientHeight

    lefttime=setInterval("slide()",40);

    <?php
    echo 'cross_slide2.style.'.$corner.'=actual'.$dimension.'+"px"'."\n";
    ?>

    }
    }

    window.onload=fillup

    <?php

    echo 'function slide(){'."\n";
    echo 
    'if (iedom){'."\n";
    echo 
    'if (parseInt(cross_slide.style.'.$corner.')'.$logi_op.'(actual'.$dimension.'*('.$negation.')))'."\n";
    echo 
    'cross_slide.style.'.$corner.'=parseInt(cross_slide.style.'.$corner.')'.$ari_op_1.'copyspeed+"px"'."\n";
    echo 
    'else'."\n";
    echo 
    'cross_slide.style.'.$corner.'=parseInt(cross_slide2.style.'.$corner.')'.$ari_op_2.'actual'.$dimension.'+"px"'."\n"

    echo 
    'if (parseInt(cross_slide2.style.'.$corner.')'.$logi_op.'(actual'.$dimension.'*('.$negation.')))'."\n";
    echo 
    'cross_slide2.style.'.$corner.'=parseInt(cross_slide2.style.'.$corner.')'.$ari_op_1.'copyspeed+"px"'."\n";
    echo 
    'else'."\n";
    echo 
    'cross_slide2.style.'.$corner.'=parseInt(cross_slide.style.'.$corner.')'.$ari_op_2.'actual'.$dimension.'+"px"'."\n";

    echo 
    '}'."\n".'}'."\n";

    ?>

    if (iedom||document.layers){
    with (document){
    document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
    if (iedom){
    write('<div id="slidehori_border" style="text-align: center; position: relative; border: 0;margin: 0;padding: <?php echo($php_contwidth?>px ;background-color:'+slidebgcolor+';overflow:hidden">')

    write('<div id="slidehori_container" style="text-align:center; position:relative; border:0px; margin:0px; padding:0px; width:'+sliderwidth+'; height:'+sliderheight+';background-color:'+slidebgcolor+'; overflow:hidden">')
    write('<div id="slidehori_stopmouse" style="border:0px; margin:0px; padding:0px; position:relative; width:'+sliderwidth+'; height:'+sliderheight+'; background-color:'+slidebgcolor+'; overflow: hidden"'+mouseappend+'>')

    if(slidedirection == "up" || slidedirection == "down"){
        write('<div id="slidehori_rotator_1" style="border:0px; margin:0px; padding:0px; position:absolute; left:0px; top:0px; background-color:'+slidebgcolor+'; overflow:visible; display:inline"></div>')
        write('<div id="slidehori_rotator_2" style="border: 0px;margin: 0px;padding: 0px; position: absolute; left: 0px; top: 0px; background-color:'+slidebgcolor+'; overflow:visible; display:inline"></div>')
    }
    else{
        write('<div id="slidehori_rotator_1" style="border:0px; margin:0px; padding:0px; position:absolute; left:0px; top:0px; width:'+sumwidth+'px; height: '+sliderheight+'; background-color:'+slidebgcolor+'; overflow:visible; display:inline"></div>')
        write('<div id="slidehori_rotator_2" style="border: 0px;margin: 0px;padding: 0px; position: absolute; left: 0px; top: 0px; width:'+sumwidth+'px; height: '+sliderheight+'; background-color:'+slidebgcolor+'; overflow:visible; display:inline"></div>')
    }
    write('</div></div></div>')
    }
    document.write('</td></table>')
    }
    }
    helper.php:
    PHP-Code:
    <?php
    // no direct access
    //defined( '_JEXEC' ) or die( 'Restricted access' );


    class modSlidehorizonImageHelper
    {

        function 
    getAllImages(&$params,&$bilderfeld)
        {
            
    $types         = array ('.jpg''.png''.jpeg');
            
    $userandom     intval($params->get'userandom')); // 0 means NO
            
    $numtoshow     intval($params->get'numtoshow')); // 0 means ALL
            
    $dir     $params->get 'folder' );
            
    $files    = array();
            
    $images = array();
            
    $num 0;

            
    $dir JFolder::makeSafe ($dir);

            if (
    JFolder::exists ($dir)) {
                
    $files =   JFolder::files ($dir$filter '.'$recurse false$fullpath true$exclude = array('.svn''CVS''.html')); 
            
                foreach (
    $files as $img)
                {
                    foreach (
    $types as $type)
                    {
                        if (
    eregi($type$img)) {
                            
    $images[$num]     = $img;
                        }
                    }
                ++
    $num;
                }
            }
            
            else {
            
    $err JError::raiseWarning ($code='01',$msg='Das angegebene Bilderverzeichnis existiert nicht oder dessen Name enthält nicht erlaubte Zeichen ( Leerzeichen und/oder Umlaute! )');
            }
            
            switch (
    $userandom){
            
    // randomize
            
    case 1:
                
    // and show all images
            
    if ($numtoshow == 0) {
                    
    PickImages(1,$num,$images);
                    
    $bilderfeld $images;
                }
                
    // and show some images
            
    else {
                    
    $num $numtoshow;
                    
    PickImages(1,$num,$images);
                    
    $bilderfeld $images;
                    return 
    0;
                }
                break;
            
    // dont randomize
            
    case 0:
                
    // and show some images
            
    if ($numtoshow 0) {
                    
    $num $numtoshow;
                    
    PickImages(0,$num,$images);
                    
    $bilderfeld $images;
                }
            else {
                
    // and show all images
                    
    $bilderfeld $images;
                    return 
    0;
                }
                break;
            }
        }
    }
        function 
    PickImages ($rand,$num,&$images)
        {
            switch (
    $rand) {
                case 
    1:
                    
    // alle und Zufall
                    
    if ($num == 0) {
                        
    $images shuffle ($images);
                        return 
    0;
                    }
                    
    // einige und Zufall
                    
    else {
                        
    $rand_var array_rand($images,$num);
                        for (
    $i=0$i<$num$i++) {
                            
    $tmp_arr[$i] = $images[$rand_var[$i]];
                        }
                        
    $images $tmp_arr;
                        return 
    0;
                    }
                break;
                case 
    0:
                    
    // einige und kein Zufall
                    
    $tmp_arr array_slice ($images,0,$num);
                    
    $images $tmp_arr;
                    return 
    0;
                break;
                return 
    0;
            }
        }
    Ich wäre sehr Dankbar, wenn mir jemand dabei helfen könnte.

  2. #2
    Gehört zum Inventar Avatar von Marcus77
    Registriert seit
    17.02.2006
    Ort
    Stettenhof
    Beiträge
    5.087
    Bedankte sich
    76
    Erhielt 1.021 Danksagungen
    in 996 Beiträgen

    Standard

    Ich hab nicht alles gelesen


    aber

    JavaScript erzeugenden php Code in ein neues File namens js.css
    kann nicht gehen
    (Sofern dir meine Antwort geholfen hat, drücke einfach LINKS den "DANKE" - BUTTON)

  3. #3
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Und direkt aufrufen sollte man Dateien innerhalb von Joomla! auch nicht.. - daher gibts auch keine $params die man get()ten kann :P
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein