Artikel im Frontend mit Bildupload erstellen und senden

Gesperrt
Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Artikel im Frontend mit Bildupload erstellen und senden

Beitrag von Snuppel007 » Di 4. Mär 2008, 01:29

Hallo liebe Contenido-Gemeinde

wir haben mal auf die schnelle ien Modul gebastelt von dem ich Denke das es dem einem oder anderem nützen könnte.

Details:
Benötigt war ein Modul wie es auf der Website von Contenido benutzt wird um sich mit einer Referenz-Site anzumelden.

Mit dem Modul ist es Möglich über ein Formular Felder Auszufüllen und ein Bild mit Hoch zu laden. Das Formular wird an einen Redakteur geschickt, dervorher im Modul Konfiguriert werden muß. Das Formular wird dann als offline Artikel unter einer bestimmten Katergorie (auch im Modul Konfigurierbar) hinterlegt. Nun brauch der Redakteu diesen Artikel nur noch online setzen (nach Prüfung).

Benötigt werden im Template 2 HTMLHEAD, 5 CMS_HTML und ein CMS_IMG Module für die Ausgabe.

Hier das Modul (nur Output)..., ich weiß, ist nicht ganz sauber, aber vieleicht findet ja jemand die Zeit es zu Optimieren.

Code: Alles auswählen

<?php

/* Wer bekommt die Freischalt-Mails? */

$reciever = "deine.mail@web.de"; 

/* URL des Moduls zum generieren der Freischalt-Links */

$modurl = "http://www.webiste.de/kategorie/";

/* Unterverzeichnis für Bilddateien */

$sl_upload_subdir = "pfadangabe/";

/* Die verschiedenen Kategorien */

$sl_regions = array("de" => "121", "pl" => "122", "cz" => "123");
$sl_regions_t = array("de" => "Deutschland", "pl" => "Polen", "cz" => "Tschechien");

/* Debug, Auf 1 setzen zum Debuggen */

$debug = 0;

/* Ende der Konfiguration */

$sl_upload_dir = $cfgClient[$client]["upload"].$sl_upload_subdir;

function scCreateArticle($category, $title = "", $summary = "", $author = "", $online = 0) {

	/* create article */

	global $client, $lang;

   $new_art_id = 0;

   $def = array(
	
		"client" => $client,
		"lang" => $lang,
		"idcat" => $category,
		"idcatnew" => array($category),
		"is_start" => 0,
		"idtpl" => null,
		"idartlang" => null,
		"title" => $title,
		"summary" => $summary, 
		"artspec" => null,
		"created" => date('Y-m-d H:i:s'),
		"lastmodified" => date('Y-m-d H:i:s'),
		"author" => $author,
		"online" => $online,
		"datestart" => '0000-00-00 00:00:00',
		"dateend" => '0000-00-00 00:00:00',
		"artsort" => 0
	
	);
	
	$new_art_id = conEditFirstTime($def["idcat"], $def["idcatnew"], $def["idart"], $def["is_start"], $def["idtpl"], $def["idartlang"], $def["lang"], $def["title"], $def["summary"], $def["artspec"], $def["created"], $def["lastmodified"], $def["author"], $def["online"], $def["keyart"], $def["datestart"], $def["dateend"]);

	if ($new_art_id != 0) {
				
		return $new_art_id;
		
	} else {
		
		return false;
		
	}
 
}

function debug($dbg, $hl = "") {
	
	global $debug;
	
	if ($debug != 0) {
	
		echo "<h2>".$hl."</h2>";
	
		echo "<pre>";
	
		print_r($dbg);
	
		echo "</pre>";

	}
	
	return true;
	
}

if ($edit) {

	echo "<h1>Unternehmen</h1>";
	echo "<p>Hier erscheint die dynamische Ausgabe des Unternehmen-Moduls</p>";

} else {
	
	debug($lang, "Lang");

	if (isset($_POST["sent"])) {
		
		debug($_POST, "Post");
		
		/* Artikel sepeichern */
		
		if ($_POST["firma"] == "") {
			
			echo "Sie haben keinen Firmennamen angegeben.";
			
		} else {
			
			if ($_FILES["logo"]["error"] == 0) {
				
				debug($_FILES, "Files");
				
				if ($_FILES["logo"]["type"] == "image/jpeg" || $_FILES["logo"]["type"] == "image/pjpeg" || $_FILES["logo"]["type"] == "image/png") {
				
					switch($_FILES["logo"]["type"]) {
						
						case "image/jpeg": $sl_ext = ".jpg"; break;
						case "image/pjpeg": $sl_ext = ".jpg"; break;
						case "image/png": $sl_ext = ".png"; break;
						
					}
				
					$sl_tmp = time();
				
					do {
					
						$sl_tmp +=1;
					
						$sl_upload_filename = $sl_tmp.$sl_ext;
						$sl_upload_destination = $sl_upload_dir.$sl_tmp.$sl_ext;
					
					} while(file_exists($sl_upload_destination));
					
					move_uploaded_file($_FILES["logo"]["tmp_name"], $sl_upload_destination);
					
					chmod ($sl_upload_destination, 0777);
					
					$sl_imagesize = getimagesize($sl_upload_destination);
					
					if ($sl_imagesize[0] > 150 || $sl_imagesize[1] > 150) {
						
						echo "Die Bilddatei ist größer als 150x150 Pixel";
						
						$sl_logo = false;
						$sl_proceed = false;
						
					} else {
						
						$sl_logo = true;
						$sl_proceed = true;
						
						cInclude("includes", "functions.upl.php");
						
						uplSyncDirectory($sl_upload_subdir);
						
						/* get id */
						
						$db->query("SELECT idupl FROM ".$cfg["tab"]["upl"]." WHERE filename = '".$sl_upload_filename."' AND dirname = '".$sl_upload_subdir."'");

						$db->next_record();
						
						$sl_logo_id = $db->f("idupl"); 
						
						debug($dl_logo_id, "Logo");
						
					}

				} else {
					
					echo "<p>Ihr Logo wurde nicht gespeichert.</p>";
					
					$sl_logo = false;
					$sl_proceed = true;

				}
				
			} else {
				
				$sl_logo = false;
				$sl_proceed = true;
				
			}
			
			if ($sl_proceed) {
				
				$setfree = array();
				
				foreach($sl_regions as $region => $sl_idcat) {
					
					if ($_POST["region_".$region] == 1) {
						
						$sl_id = scCreateArticle (

							$sl_idcat, 
							"Untenehmensspartner: ".$_POST["firma"], 
							"...", /* FIXME */ 
							"Untenehmensspartner",
							0

						);
						
						debug($sl_idcat, "Idcat for ".$region);

						$setfree[] = $sl_id;

						$sl_idartlang = getArtLang($sl_id, $lang);

						if ($sl_logo) {

							conSaveContentEntry($sl_idartlang, "CMS_IMG", 3, $sl_logo_id);
							conSaveContentEntry($sl_idartlang, "CMS_IMGDESCR", 3, $_POST["firma"]);
						
						} else {
							
							conSaveContentEntry($sl_idartlang, "CMS_IMG", 3, "");
							conSaveContentEntry($sl_idartlang, "CMS_IMGDESCR", 3, "");							
							
						}
						
						conSaveContentEntry($sl_idartlang, "CMS_HTMLHEAD", 1, "Untenehmensspartner: ".$_POST["firma"]);
						conSaveContentEntry($sl_idartlang, "CMS_HTML", 1, $_POST["branche"]);
						
						conSaveContentEntry($sl_idartlang, "CMS_HTMLHEAD", 3, "Kontakt");

						$sl_regionen = array();
						
						foreach($sl_regions_t as $r => $r_name) {
						
							if ($_POST["region_".$r] == 1) {
								
								$sl_regionen[] = $r_name;
								
							}
							
						}
						
						$sl_regionen = join(" - ", $sl_regionen);

						conSaveContentEntry($sl_idartlang, "CMS_HTML", 2, $sl_regionen);
						
						conSaveContentEntry($sl_idartlang, "CMS_HTML", 3, 'Ansprechpartner: '.$_POST["name"].'<br />Telefon: '.$_POST["telefon"].'<br />E-Mail:'.$_POST["email"]);
						
						conSaveContentEntry($sl_idartlang, "CMS_HTML", 4, nl2br(strip_tags($_POST["beschreibung"])));
						
						$webseite = str_replace("http://", "", $_POST["webseite"]);
						$webseite = str_replace("https://", "", $webseite);

						$url = "http://" . $webseite;
						
						conSaveContentEntry($sl_idartlang, "CMS_HTML", 5, '<a href="'.$url.'">'.$webseite.'</a>');
						
					}
					
				}
			
				echo "Vielen Dank. Wir werden Ihr Inserat in unserem Untenehmen nach einer Überprüfung freischalten.";
				
				$setfree = base64_encode(serialize($setfree));
			
				debug($setfree, "Setfree");
				
				/* mail verschicken */
				
				#mail($reviever, "Neuer Untenehmenspartner", $_POST["firma"]."\n\nHier muss noch ein guter Text hin.\n\nFreischalten: ".$modurl."?publish=".$setfree."\nLoeschen: ".$modurl."?remove=".$setfree, "From:  Untenehmenspartner<noreply@domain.de>");
				
			}
			
		}
						
	} elseif($_GET["publish"] != "") {
		
		/* Veröffentlichen des Artikels */
		
		$arts = unserialize(base64_decode($_GET["publish"]));
		
		foreach ($arts as $art) {
			
			conMakeOnline($art, $lang);
			
		} 
		
		echo "Der Eintrag wurde veröffentlicht.";
		
	} 	elseif($_GET["remove"] != "") {

		/* Löschen des Artikels */
		
		$arts = unserialize(base64_decode($_GET["remove"]));
		
		foreach ($arts as $art) {
			
			conDeleteart($art);
			
		}
		
		echo "Der Eintrag wurde gelöscht";

	} else {
		
		/* Ausgabe des Formulars */
		
		echo '<form action="" method="post" enctype="multipart/form-data">'."\n";
		echo '<input type="hidden" name="sent" value="1" />'."\n";

		echo '<p></p>'."\n";

		echo '<table>'."\n";

		echo '<tr>'."\n";
		echo '<td>Firma*:</td>'."\n";
		echo '<td><input type="text" name="firma" size="30" maxlength="50" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Branche:</td>'."\n";
		echo '<td><input type="text" name="branche" size="30" maxlength="50" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Regionen*:</td>'."\n";
		echo '<td><input type="checkbox" name="region_de" value="1" /> <label for="region_de">Deutschland</label> <input type="checkbox" name="region_pl" value="1" /> <label for="region_pl">Polen</label> <input type="checkbox" name="region_cz" value="1" /> <label for="region_cz">Tschechien</label> </td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Firmenlogo<sup>1</sup>:</td>'."\n";
		echo '<td><input type="file" name="logo" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Ansprechpartner:</td>'."\n";
		echo '<td><input type="text" name="name" size="30" maxlength="50" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Telefon:</td>'."\n";
		echo '<td><input type="text" name="telefon" size="30" maxlength="50" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>E-Mail:</td>'."\n";
		echo '<td><input type="text" name="email" size="30" maxlength="50" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Webseite:</td>'."\n";
		echo '<td><input type="text" name="webseite" size="30" maxlength="100" value="" /></td>'."\n";
		echo '</tr>'."\n";

		echo '<tr>'."\n";
		echo '<td>Beschreibung:</td>'."\n";
		echo '<td><textarea name="beschreibung" cols="38" rows="4" wrap="virtual"></textarea></td>'."\n";
		echo '</tr>'."\n";

		echo '</table>'."\n";
		
		echo '<p>* Diese Felder müssen ausgefüllt werden.</p>';
		echo '<p><sup>1</sup> Nur <abbr title="Joint Photography Expert Group">JPG</abbr> und <abbr title="Portable Network Graphics">PNG</abbr>, maximal 150x150 Pixel</p>';

		echo '<input type="submit" value="Absenden" />'."\n";

		echo '</form>'."\n";
		
	}

}

?>

Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Beitrag von Snuppel007 » Mi 23. Apr 2008, 23:30

Hallo zusammen, :P

ich weiß ja das das Script recht Stümperhaft ist, bin ja auch Blutiger PHP Anfänger, aber gibts den niemanden der mir helfen kann daraus ein Waschechtes Contenido-Modul zu machen, so mit Input und anständigen Output ..., :lol:

Hab damit auch noch ein Problem, wenn ein User ein Artikel im Frontend erstellt, sollte eigentlich eine E-Mail an den Redakteur raus gehen ..., aber auf einmal tuts es das nicht mehr ..., hat vieleicht jemand eine kleine Starthilfe was ich falsch gemacht habe???

Liebe Grüße, der Snuppel

CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

Beitrag von CinKon » Do 9. Okt 2008, 10:04

wie weit ist die entwicklung dieses moduls? :)
bräuchte genau so eins...
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Beitrag von Snuppel007 » Do 9. Okt 2008, 10:31

Leider immernoch genauso Stümperhaft. Bei mir läuft das Script. Ich hatte schon mühe gehabt das so hin zu bekommen ..., worauf ich eigentlich schon stolz bin, den für einen der kein PHP kann, läuft das Ding jedenfalls.
Achso, ich hatte oben nicht erwähnt das die erstellten Artikel die Template-Konfiguration der Katergorie übernehmen in der sie abgelegt werden. Also drauf achten das die Kategorie das richtige Template hat.
Vieleicht sind Deine PHP-Künste besser und Du kannst noch mal dran schrauben ..., würde mich jedenfalls sehr freuen, denn das könnte dabei auch meinen PHP Horizont erhöhen ;-)

Bey, der Snuppel

CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

Beitrag von CinKon » Do 9. Okt 2008, 10:34

bin leider selbst absoluter php anfänger,
weswegen ich verzweifelt auf der suche nach so einem fertigen tool bin... ^^

ich werds mal ausprobiern, bei mir einzupflegen,
vllt schaff ichs ja soweit, daran rumzumodeln, dasses passt... ^^
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

Gesperrt