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:
js.php:PHP-Code:<script language="JavaScript" type="text/javascript" src="modules/mod_slidehorizon/js.php"></script>
helper.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>')
}
}
Ich wäre sehr Dankbar, wenn mir jemand dabei helfen könnte.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 )); // 0 means NO
$numtoshow = intval($params->get( 'numtoshow', 0 )); // 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;
}
}


LinkBack URL
About LinkBacks
Zitieren
Lesezeichen