Hallo Leute,
ich habe mir mal die Sache mit der Bildergalerie etwas unter die Lupe genommen, und dabei ist mir aufgefallen, dass das wohl doch relativ komplex geschildert war, wie ich es zuerst beschrieben hatte.
Daher als Verbesserungsvorschlag ein Script (Uploader.php), das es ermöglicht, die Bilder hochzuladen und automatisch die Galerie zu erstellen, incl. der notwendigen HTML-Dateien um sie im Newswriter zu integrieren.
Wie das ganze dann aussieht, könnt ihr unter
www.ffw-losheim.de betrachten.
Also dann mal ans eingemachte:
1. Anpassen der 'article.php' im newswriter Verzeichnis.Die Änderungen mit der Galerie benutzen der Einfachheit halber den Link3, der unten am Artikel angefügt wird.
Die Änderungen sollten dann ab Zeile 423 etwa gemacht werden:
if ($article_data['LINK2']) {
$news_url = preg_replace('#<a href="([^"]*)".+?</a>#i','\\1',$article_data['LINK2']);
$news_lname1 = preg_replace('#<[^>]*>#','',$article_data['LINK2']);
if (!strstr($news_url,'http://') && !strstr($news_url,'ftp://') && strpos($news_url,'/') != 0 && strpos($news_url,'.') != 0) {
$news_url = 'http://'.$news_url;
}
$link_tag = '<a href="'.$news_url.'"';
if (strstr($article_data['LINK2'],'target="_blank"')) {
$link_tag .= ' target="_blank"';
}
$link_tag .= '>'.$news_lname1.'</a> ';
$frame_link = '<hr>Mehr Bilder:<br><br><iframe src="'.$news_url.'" scrolling="auto" marginheight="0" marginwidth="0" frameborder="0" width="100%" height="120pt"></iframe><hr>';
$line = str_replace('[--PICFRAME--]', $frame_link, $line);
$line = str_replace('[--LINK2--]',$NW_TRANSLATION['layout_linkleft'].$link_tag.$NW_TRANSLATION['layout_linkright'],$line);
}
else {
$line = str_replace('[--LINK2--]','',$line);
$line = str_replace('[--PICFRAME--]','',$line);
}
Ab jetzt gibt's einen neuen Tag für die Template-Dateien, und zwar [PICFRAME] mit dem Ihr die Position der Vorschau bestimmen könnt.
2. Als nächstes kommt die Datei Uploader.php.Screenshot:
http://www.ffw-losheim.de/Versuche/upl_screenshot.gifDamit diese Funktioniert, braucht ihr auf dem Server die gdLib und natürlich die gleichen Rechte wie der Newswriter, am besten jedoch 0x0777.
Mit diesem Script wird folgendes gemacht:
a. Anlegen eines Ordners auf dem Zielserver für die Bildergallery (setzt den Ordner 'pictures' im nw-Verzeichnis vorraus.
b. Kopieren der ausgewählten Bilder (nur jpgs) in das Zielverzeichnis
c. automatisches Umbenennen der Bilder und Erstellen von Thumbnails oder mittelgrossen Bildern für im Artikel integriert zu werden.
d. automatisches Erstellen der notwendigen HTML-Dateien um die Gallerie blättern zu können.
Dazu müsst ihr nur den folgenden code als
uploader.php in den newswriter integrieren und einen Ordner 'pictures' erstellen.
(Anm.: Mein nw Verzeichnis heisst news_cust)
<title>Datei Uploader V 0.20</title>
<body bgcolor="#DDDDDD">
<basefont color="#000099" face="Tahoma" size="-1">
<h1>Uploader V 0.2 (beta)</h1>
(c) 2004 Olli112 - This code is provided 'as is'. By using it you accept it as it is and what it does, even it does any bad.
<?php
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
// PHP - Uploader
//---------------------------------------------------------------------------------------------------------------------------
// Script zum uploaden und erstellen einer Bildergallerie, vornehmlich für Newswriter
//
// (c) 2004 Olli (Oliver Fehr)
//---------------------------------------------------------------------------------------------------------------------------
//
// History:
// ========
//
// V 0.10 - 12. Nov 2004 Createt as V 0.10a beta
// V 0.20 - 18. Nov 2004 minor changes with access rights
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
require('./conf.php'); // für Benutzerdaten und Verzeichnissvariablen
$nFiles = 10;
$nThumbSize = 75;
$nMediumSize = 300;
RebuildScreen($nFiles);
if (!empty($HTTP_POST_VARS["transmission"]))
{
global $NWCONF_USERS;
$username = $HTTP_POST_VARS["username"];
$password = $HTTP_POST_VARS["password"];
while (list ($key, $userarray) = each ($NWCONF_USERS['alluser']) )
{
if(is_array($userarray))
{
while (list ($key2, $user) = each ($userarray))
{
if($user==$username)
{
list ($key2, $pass) = each ($userarray);
if($password==$pass)
{
$login_correct = true;
break;
}
}
}
}
}
if(!$login_correct)
{
echo 'FALSCHER BENUTZERNAME ODER PASSWORT!';
die;
}
if(!empty($HTTP_POST_VARS['targetfolder']))
{
echo $HTTP_POST_VARS['targetfolder'].'<br>';
global $NWCONF_SYSTEM;
$targetdir = $NWCONF_SYSTEM['server_path'].'pictures/'.$HTTP_POST_VARS['targetfolder'];
$webfolder = $NWCONF_SYSTEM['domain_path'].'pictures/'.$HTTP_POST_VARS['targetfolder'];
echo $targetdir.'<br>';
if (is_dir($targetdir))
echo 'Verzeichnis existiert bereits, beginne Übertragung...<br>';
else
{
echo 'Verzeichnis wird angelegt...';
$old_umask = umask(0);
// if(mkdir($targetdir, $NWCONF_SYSTEM['diraccess'])) // uncomment here if you like to apply general data...
if(mkdir($targetdir, 0777))
echo 'OK<br>';
else
echo 'Fehler beim Anlegen des Verzeichnisses<br>';
umask($old_umask);
}
$lgPics = '';
$tnPics = '';
for($i=0; $i<$nFiles; $i++)
{
if(!empty($_FILES["userfile"]["name"][$i]))
{
$filename = $_FILES["userfile"]["name"][$i];
if(!eregi("jpg",$_FILES["userfile"]["name"][$i]))
echo $filename.' ist kein gültiger Typ zum hochladen...'.$_FILES["userfile"]["type"][$i].'?<br>';
else
{
echo 'Tramsmit: '.$filename;
if(move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $targetdir.'/'.'lg_'.$filename))
{
echo ' OK.<br>Beginne Umrechnung:...';
if(isset($HTTP_POST_VARS["smSize".$i]))
{
if($HTTP_POST_VARS["smSize".$i]=="small")
{
$im = imagecreatefromjpeg($targetdir.'/'.'lg_'.$filename); // load it from server
$x = imagesx($im); // find out size
$y = imagesy($im);
$yDest = $nThumbSize; // calc the nez size
$xDest = $nThumbSize * $x/$y;
$imgDest = imagecreatetruecolor($xDest, $yDest); // create new image
imagecopyresampled ($imgDest, $im, 0,0,0,0, $xDest, $yDest, $x, $y); // resample it from origin
imagejpeg($imgDest, $targetdir.'/tn_'.$filename); // save it as new jpeg
imagedestroy($imgDest);
imagedestroy($im); // deallocate it
if(!empty($lgPics))
$lgPics.= ',';
$lgPics.='"lg_'.$filename.'"';
if(!empty($tnPics))
$tnPics.= ',';
$tnPics.='"tn_'.$filename.'"';
}
}
if(isset($HTTP_POST_VARS["mdSize".$i]))
{
if($HTTP_POST_VARS["mdSize".$i]=="medium")
{
$im = imagecreatefromjpeg($targetdir.'/'.'lg_'.$filename); // load it from server
$x = imagesx($im); // find out size
$y = imagesy($im);
$yDest = $nMediumSize *$y/$x; // calc the nez size
$xDest = $nMediumSize;
$imgDest = imagecreatetruecolor($xDest, $yDest); // create new image
imagecopyresampled ($imgDest, $im, 0,0,0,0, $xDest, $yDest, $x, $y); // resample it from origin
imagejpeg($imgDest, $targetdir.'/md_'.$filename); // save it as new jpeg
imagedestroy($imgDest);
imagedestroy($im); // deallocate it
}
}
echo 'OK<br>';
}
else
echo ' failed<br>';
} // if typecheck
} // empty inputfield
} // for loop
if ($HTTP_POST_VARS["makeGalFiles"]="makeGallery")
{
CreateGall($targetdir, $webfolder, $lgPics, $tnPics);
}
} // targetdir check
else
{
echo 'Die Angabe des Zielverzeichnisses fehlt...';
}
}
function CreateGall($targetPathName, $webfolder, $lgPics, $tnPics)
{
echo 'beginne mit galls...';
echo '<br>'.$lgPics.'<br>'.$tnPics.'<br>';
$strGalHTML = "
<html>
<head>
<title>Bilder</title>
<style type=\"text/css\">
.ueschrift{
font-family:Tahoma;
font-size:10pt;
color:#FFCC00;
font-style: normal;
font-weight: normal;
}
</style>
<script language=\"javascript\">
large_pics=new Array(".$lgPics.")
small_pics=new Array(".$tnPics.")
wndCount=0
//function zum öffnen des Popups
//Parameter ist der Dateiname des großen Bildes
//angegeben durch die Indexnummer des Arrays large_pics bzw. kblider (ist egal)
function openPopup(URL1NR)
{
if(wndCount>0)
{
if(F1.closed==false)
F1.close()
}
wndCount=1
//Wichtig resizable auf yes setzen
F1=open(\"gallery_popup.htm?\"+URL1NR,\"\",\"width=200,height=200,resizable=yes\")
F1.focus()
}
</script>
</head>
<body bgcolor=\"#000000\">
<center><table border=\"0\"><tr>
<script type=\"text/javascript\">
tabs=small_pics.length
for(i=0;i<small_pics.length;i++)
{
<!-- wenn max. spaltenzahl erreicht nächste Tabellenzeile--//-->
if(i%tabs==0)
document.write('</tr><tr>')
document.write('<td align=\"center\" valign=\"middle\"><a href=\"'+large_pics[i]+'\" target=\"_blank\" onclick=\"openPopup(\''+i+'\','+i+');return false\"><img src=\"'+small_pics[i]+'\" width=\"100\" border=\"0\"></td>')
}
</script>
</tr></table></center>
</body>
</html>";
$strPopHTML = "
<html>
<style type=\"text/css\">
<!--
.Stil1 {color: #000000}
body {
background-color: #000000;
}
-->
</style>
<script type=\"text/javascript\">
PicNum=unescape(location.search.substring(1,location.search.length))
Pic=opener.large_pics[PicNum]
function resize()
{
docWidth=document.images[0].width
if(document.layers)
docHeight=document.dummy.y
else
docHeight=document.dummy.offsetTop
self.resizeTo(docWidth,docHeight)
self.moveTo((screen.width-docWidth)/2,(screen.height-docHeight)/2)
}
function NextPic(direction)
{
nextnum=0
if(direction>0)
{
if(PicNum<opener.large_pics.length-1)
nextnum=parseInt(PicNum)+1
else
nextnum=0
}
else
{
if(PicNum>0)
nextnum=PicNum-1
else
nextnum=opener.large_pics.length-1
}
self.location.href=\"gallery_popup.htm?\"+nextnum
}
</script>
<title>Bild</title><body \" onload=\"resize()\" topmargin=\"0\" onresize=\"if(document.layers)self.location.reload()\" leftmargin=\"0\" marginheight=\"0\" marginwidth=\"0\">
<table cellspacing='0' cellpadding='0'> <tr> <td>
<script type=\"text/javascript\">
document.write(\" <img src='\"+Pic+\"'>\")
</script>
<td><tr>
<tr><td align ='center'><form>
<input type='button' name='b1' value='<<<<' onclick='NextPic(-1)'></input>
<input type='button' name='b2' value='>>>>' onclick='NextPic(1)'></input>
</form></td></tr></table><br><img src='\"+Pic+\"' width='1' height='1' name='dummy'>
</body>
</html> ";
// echo $strGalHTML;
// echo $str_pop_HTML;
$galFileName = $targetPathName.'/gallery.htm';
$popFileName = $targetPathName.'/gallery_popup.htm';
$galLinkName = $webfolder.'/gallery.htm';
$old_umask = umask(0);
if( ! $galFile = fopen($galFileName,'w'))
{
echo 'Dateifehler: Konnte '.$galFileName.' nicht erstellen!';
}
else
{
echo 'Erstelle Galerie: '.$galFileName.'...';
umask(0);
if(!fwrite($galFile, $strGalHTML))
{
echo 'Dateifehler: Konnte nicht '.$galFileName.' schreiben!';
}
fclose($galFile);
echo 'OK<br>';
}
umask(0);
if(!$popFile = fopen($popFileName,'w'))
{
echo 'Dateifehler: Konnte '.$popFileName.' nicht erstellen!';
}
else
{
echo 'Erstelle Galerie-Popup: '.$popFileName.'...';
umask(0);
if(!fwrite($popFile, $strPopHTML))
{
echo 'Dateifehler: Konnte nicht '.$popFileName.' schreiben!';
}
fclose($popFile);
echo 'OK<br>';
}
umask($oldmask);
echo '<br><br>';
echo '<a href="'.$galLinkName.'" target="_blank"><b>Galerie ansehen</b></a><br><br>';
echo 'Hier der link für die Zwischenablage (STRG-C):<br><br>';
echo '<font size="+1">'.$galLinkName.'</font>';
}
?>
<p style="size=-1 "
<?php
function RebuildScreen($num)
{
echo '<form enctype="multipart/form-data" action="uploader.php" method="post" >';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="300000">';
echo '<table width="100%" border="0" cellspacing="0">';
echo '<tr height="10pt" bgcolor="#555555"><td></td><td width="60%"></td><td></td></tr>';
echo '<tr bgcolor="#DDDDDD">';
echo '<td width="5%"></td>';
echo '<td width="60%">Zielverzeichnis auf Server: * <input name="targetfolder" type="text" value="Info/" size="90%"></td>';
echo '<td></td>';
echo '</tr>';
echo '<tr height="10pt" bgcolor="#555555"><td></td><td width="60%"></td><td></td></tr>';
echo '<tr height="30pt" bgcolor="#DDDDDD"><td></td><td width="60%">Lokaler Name u. Pfad</td><td size="10%">Optionen</td></tr>';
for($i=0; $i < $num; $i++)
{
echo '<tr>';
echo '<td width = "5%"></td>';
echo '<td witdh = "60%" align="left"><input name="userfile[]" type="file" size = "100%" accept="image/jpeg"></td>';
echo '<td width = "20%" align="left">';
echo '<font size="-1"><input type="checkbox" name="smSize'.$i.'" value="small" checked="checked"> Thumbnail ';
echo '<input type="checkbox" name="mdSize'.$i.'" value="medium"> Medium</font>';
echo '</tr>';
}
echo '</table>';
echo '<br>';
echo '<font size="-1">(*) Hier Ordnernamen ab news_cust/pictures eingeben, ohne vorangestelltes \' / \' eingeben...';
echo ' Unbedingt bei Ordnernamen Gross/Kleinschreiben beachten (UNIX konform) und slashes / verwenden!!!</font><br><hr><br>';
echo '<input type="checkbox" name="makeGalFiles" value="makeGallery" checked="checked"> Gall erstellen';
echo '<br><br>';
echo '<table width="20%" border="0" cellspacing="0" bgcolor="#AAAAAA">';
echo '<tr><td width="40%"><font size="-1" color="#ffffff">Benutzername</td><td><input type="text" name="username"></font></td></tr>';
echo '<tr><td width="40%"><font size="-1" color="#ffffff">Passwort</td><td><input type="password" name="password"></font></td></tr></table>';
echo '<br><br>';
echo '<input type="submit" name="transmission" value="Sende Dateien">';
echo '</form>';
}
?>
</body>
so, langes Ding, oder?
Ich hoffe es klappt jetzt besser als mit dem ersten Posting von mir.
Und eine Bitte hätte ich noch:
Postet mir doch einfach hier Fragen, Kommentare oder Beschwerden, denn ganz ohne Reaktionen kann ich das Ding weder verbessern noch was ändern.
Viele Grüße,
Olli
P.S.: Die Hintergrundfarbe der Gallery ist schwarz, einfach nur in den beiden html Abschnitten die Farbe ändern...