Fragebogen MOD

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
sunflower12
Mitglied
Beiträge: 3
Registriert: 04.04.2011 15:29

Fragebogen MOD

Beitrag von sunflower12 »

Warum und Wozu?
Manche Foren haben einen Bereich in dem „Neulinge“ von erfahreneren Mitgliedern anhand eines Fragebogens beraten werden. In Haustierforen werden so beispielsweise Käfiggröße, Gruppenzusammensetzung und Futter abgefragt in medizinischen Selbsthilfeforen Blutwerte.

Dabei gibt es einige Punkte, die den Mitgliedern Zeit rauben:
  • Die Fragesteller formatieren ihren Beitrag individuell, teilweise sehr unübersichtlich (vielleicht weil sie die Formatierungsmöglichkeiten von phpbb nicht kennen). Die relevanten Infos sind deswegen nicht sofort auf den ersten Blick sichtbar.
  • Eine extern verlinkte Anleitung welche Information die Fragesteller wie darstellen sollen, wird oft nicht immer vollständig gelesen, oder die Fragesteller sind überfordert, weil Anleitung und das Feld, in dem sie ihr Posting verfassen, nicht im selben Browserfenster sichtbar sind.
  • Die Personen, die den Fragebogen auswerten müssen oft immer wieder die selben Werte berechnen und nachschlagen, beispielsweise aus Anzahl der Tiere und Käfiggröße eine Besatzdichte berechnen oder die Blutwerte mit Referenzwerten in Verbindung bringen.
  • Auf bestimmte Konstellationen müssen jedes mal die selben Antworttexte formuliert werden.
Der Fragebogen MOD soll hier den Usern, die Neulinge beraten, Arbeit abnehmen.
  • Der Fragesteller schreibt kein Posting, sondern füllt ein Formular aus, in dem alles, worauf er beim Ausfüllen achten muss, direkt erwähnt wird. Aus dem Profildaten können einzelne Felder des Formulars vor ausgefüllt werden.
  • Die Eingaben werden auf Plausibilität überprüft und der Fragesteller erhält direkt eine Rückmeldung, wenn sein Formular nicht korrekt ausgefüllt wurde
  • Ist alles ok, kann der Fragesteller den Fragebogen absenden. Im Hintergrund wird daraus ein neuer Post erstellt der übersichtlich formatiert ist.
  • Der Fragesteller wird direkt zu diesem Post weitergeleitet und kann den Beitrag je nach Foreneinstellungen noch überarbeiten
  • Außerdem wird der Fragebogen direkt automatisiert ausgewertet. Aus dem Forumlardaten werden Werte berechnet oder mit Tabellenwerten verglichen und erklärende Texte vor formuliert. Dieses Ergebnis wird dem Fragesteller aber nicht direkt angezeigt (eine vollständige Beratung lässt sich nicht automatisiert vornehmen), sondern ist nur für alle Forenmitglieder sichtbar, die in dem betreffenden Forum das Recht haben, Beiträge freizuschalten. Diese können die Informationen in diesem Antwort-Post nutzen um schneller ihre Antwort zu formulieren.
Screenshots:
Fragebogen Start, teilweise vorausgefüllt: [ externes Bild ]
Test auf Plausibilität mit Fehlermeldungen: [ externes Bild ]
absenden: [ externes Bild ]
Weiterleitung für den User zum Post mit formatierten Fragebogeninhalt: [ externes Bild ]
Ansicht für Helfer mit Freischalt-Rechten: [ externes Bild ]
Automatische Fragebogenauswertung, sichtbar nur für Helfer mit Freischalt-Rechten: [ externes Bild ]

"Installation"
  • getestet mit phpBB 3.0.8
  • Die Datei fragebogen.html unter /phpBB3/styles/prosilver/fragebogen.html speichern, die Datei fragebogen.php im Verzeichnis /phpBB3/fragebogen.php
  • In der Datei fragebogen.php, die forum_id anpassen, es muss die ID eines existierenden Forums sein
  • Mit den Einstellungen kann der MOD direkt verwendet werden und berechnet den Body-Mass-Index. Anhand des Beispiels und der Kommentare in fragebogen.php sollten auch Programmier-Anfänger mit einfachen Kenntnissen zu Formularen und ihrer Auswertung mit php den MOD auf ihre persönlichen Bedürfnisse erweitern können.

Quelltext
/phpBB3/styles/prosilver/fragebogen.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
<form action="" method="post">
<div class="panel bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="content">
<h2>Fragebogen</h2>
<div style="font-size:110%;">
<textarea rows="10" cols="30" name="data_start">
{S_DATA_START}
</textarea>
<br/>
Körpergröße: 
<input type="text" name="data_height" value="{S_DATA_HEIGHT}"/>cm 
<span class="error">{S_ERROR_HEIGHT}</span>
<br/>
Gewicht: 
<input type="text" name="data_weight" value="{S_DATA_WEIGHT}"/>kg 
<span class="error">{S_ERROR_WEIGHT}</span>
<br/>
<input type="submit" name="submit" value="Absenden"/>
</form>
</div>
</div>
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- INCLUDE overall_footer.html -->
/phpBB3/fragebogen.php

Code: Alles auswählen

<?php
/* 
 * Dieser MOD erstellt eine Seite in phpbb mit einem Fragebogen der von
 * eingeloggten Usern ausgefüllt werden kann. Teile des Fragebogens können
 * aus Profilfeldern vor-ausgefüllt werden.
 * Der Fragebogen wird anschließend formatiert ins Forum gestellt (ein neues
 * Posting wird erstellt).
 * Als Antwort auf dieses Posting kann eine automatische Auswertung des 
 * Fragebogens erstellt werden. Diese Antwort kann auf "moderiert" gesetzt 
 * werden, so dass sie von Forenmitgliedern mit entsprechenden Rechten noch
 * überarbeitet werden kann, ehe sie angezeigt wird.
 */
 
##################################################################### 
##################################################################### 
# Konfiguration:
# Wenn diese Werte angepasst sind, kann dieses Beispielskript direkt
# verwendet werden und das Skript anschließend an die individuellen 
# Bedürfnisse angepasst werden
$forum_id = 10; //id des Forums in dem der Beitrag erstellt werden soll
$antwort_user_id = 4; /* id des Users von dem die automatische Antwort 
 * geschrieben werden soll (4=Alexa Bot)
 * Wenn die automatische Antwort zunächst freigeschaltet werden soll:
 * - im ACP auf Benutzer/Gruppenspezifische Forenrechte, und das Forum 
 *   forum_id auswählen
 * - dem User antwort_user_id die Rolle "Mit Warteschlange" auswählen.
 */
 
##################################################################### 
##################################################################### 
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$user->session_begin();
$auth->acl($user->data); 
$user->setup(); 
 
##################################################################### 
##################################################################### 
# Nur User, die Schreibrechte in dem Forum haben, dürfen den Fragebogen
# bearbeiten, anderenfalls Weiterleitung zur Login-Seite
$auth->acl($user->data);
if (!$auth->acl_get('f_read', $forum_id)){
	header('Location: ucp.php?mode=login');
}
##################################################################### 
##################################################################### 
##################################################################### 
# Schritt 1: Formular mit vorausgefüllten Feldern erstellen
# Das Formular selbst findet sich in der datei fragebogen.html
if(!isset($_POST['submit'])){
	page_header('Fragebogen');
	$start = "Hallo,
könnt ihr mir zu meinen Werten etwas sagen?
Danke, {$user->data['username']}";
	$template->assign_vars(array(
		'S_DATA_START'  	=> $start,
		'S_DATA_HEIGHT' 	=> '',
		'S_DATA_WEIGHT' 	=> '',
		'S_ERROR_NAME'		=> '',
		'S_ERROR_HEIGHT'	=> '',
		'S_ERROR_WEIGHT'	=> '',
		)
	);
	$template->set_filenames(array('body' => 'fragebogen.html'));
	page_footer();
}else{
 
##################################################################### 
##################################################################### 
# Schritt 2: Ausgefüllten Fragebogen überprüfen, wenn Felder fehlerhaft
# ausgefüllt wurden, erneut zum Fragebogen weiterleiten, die bereits 
# ausgefüllten Felder beibehalten und eine Fehlermeldung anzeigen.
# Werte aus dem Fragebogen werden mit request_var aufgerufen
	$formdata = array(
		'start'     => request_var('data_start', '', true),
		'height'  	=> request_var('data_height', 0, true),
		'weight'  	=> request_var('data_weight', 0, true),
	);
	page_header('Fragebogen');
	$assign_vars_array = array(
		'S_DATA_START'  	=> $formdata['start'],
		'S_DATA_HEIGHT' 	=> $formdata['height'],
		'S_DATA_WEIGHT' 	=> $formdata['weight'],
	);
	$error = false;
	if(!($formdata['weight']>0)){
		$error = true;
		$assign_vars_array['S_ERROR_WEIGHT'] = 'Bitte eine Zahl für das Gewicht eingeben.';
	}
	if(!($formdata['height']>0)){
		$error = true;
		$assign_vars_array['S_ERROR_HEIGHT'] = 'Bitte eine Zahl für die Größe eingeben.';
	}
	if($error == true){
		page_header('Fragebogen');
		$template->assign_vars($assign_vars_array);
		$template->set_filenames(array('body' => 'fragebogen.html'));
		page_footer();
	}else{
 
##################################################################### 
##################################################################### 
# Schritt 3: Der Fragebogen wurde korrekt ausgefüllt, nun wird ein Posting
# mit dem ausgefüllten Fragebogen erstellt.
		$threadtitel = $user->data['username'];
		$threadtext = "{$formdata['start']}
		[b]Gewicht[/b]: {$formdata['weight']} kg
		[b]Größe[/b]: {$formdata['height']} cm
		";
		# Posting erstellen:
		utf8_normalize_nfc(request_var($threadtitel, '', true));
		utf8_normalize_nfc(request_var($threadtext, '', true));
		$poll = $uid = $bitfield = $options = ''; 
		generate_text_for_storage($threadtitel, $uid, $bitfield, $options, false, false, false);
		generate_text_for_storage($threadtext, $uid, $bitfield, $options, true, true, true);
		$data = array( // mehr Optionen: http://wiki.phpbb.com/Function.submit_post
			'forum_id'      	=> $forum_id,
			'icon_id'       	=> false,
			'enable_bbcode'     => true,
			'enable_smilies'    => true,
			'enable_urls'       => true,
			'enable_sig'        => true,
			'message'       	=> $threadtext,
			'message_md5'   	=> md5($threadtext),
			'bbcode_bitfield'   => $bitfield,
			'bbcode_uid'        => $uid,
			'post_edit_locked'  => 0,
			'topic_title'       => $threadtitel,
			'notify_set'        => false,
			'notify'            => false,
			'post_time'         => 0,
			'forum_name'        => '',
			'enable_indexing'   => true,
		);
		$path2newtopic = submit_post('post', $threadtitel, '', POST_NORMAL, $poll, $data);
##################################################################### 
##################################################################### 
# Schritt 4: Der User wird zu dem neuen Posting weiter geleitet
		$path2newtopic = str_replace('&','&',$path2newtopic);
		$topic_id = substr($path2newtopic,strpos($path2newtopic,'&t=')+3);
		header('Location: '.$path2newtopic);
##################################################################### 
##################################################################### 
# Schritt 5: Die automatische Auswertung des Fragebogens wird erstellt 
# und eine Antwort auf das Posting geschrieben
		sleep(2); //warten, damit Postings nacheinander
		$bmi = $formdata['weight']/$formdata['height']/$formdata['height']*10000;
		$bmi = round($bmi*10)/10;
		$bmi = str_replace('.',',',$bmi);
		$threadtext = "Hallo {$user->data['username']},
Dein BMI ist {$bmi}.";
		$threadtitel = 'Automatische Auswertung';
		# Post erstellen:
		utf8_normalize_nfc(request_var($threadtitel, '', true));
		utf8_normalize_nfc(request_var($threadtext, '', true));
		$poll = $uid = $bitfield = $options = ''; 
		generate_text_for_storage($threadtitel, $uid, $bitfield, $options, false, false, false);
		generate_text_for_storage($threadtext, $uid, $bitfield, $options, true, true, true);
		$data = array( // mehr Optionen: http://wiki.phpbb.com/Function.submit_post
			'forum_id'      	=> $forum_id,
			'topic_id'      	=> $topic_id,
			'icon_id'       	=> false,
			'enable_bbcode'     => true,
			'enable_smilies'    => true,
			'enable_urls'       => true,
			'enable_sig'        => true,
			'message'       	=> $threadtext,
			'message_md5'   	=> md5($threadtext),
			'bbcode_bitfield'   => $bitfield,
			'bbcode_uid'        => $uid,
			'post_edit_locked'  => 0,
			'topic_title'       => $threadtitel,
			'notify_set'        => false,
			'notify'            => false,
			'post_time'         => 0,
			'forum_name'        => '',
			'enable_indexing'   => true,
		);
		# User wechseln
		$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . $antwort_user_id;
		$result = $db->sql_query($sql);
		$row = $db->sql_fetchrow($result);
		$db->sql_freeresult($result);
		$user->data = array_merge($user->data, $row);
		$auth->acl($user->data);
		# Posting
		submit_post('reply', $threadtitel, '', POST_NORMAL, $poll, $data);
##################################################################### 
	}
}
?>
Zuletzt geändert von sunflower12 am 04.04.2011 18:44, insgesamt 1-mal geändert.
sunflower12
Mitglied
Beiträge: 3
Registriert: 04.04.2011 15:29

Re: Fragebogen MOD

Beitrag von sunflower12 »

Meine erste "größere" Modifikation (für die Experten sicherlich klein) für ein phpbb in dem ich Mitglied bin. Verbesserungsvorschläge nehme ich gerne entgegen, ansonsten läuft das Skript aber stabil.
Zuletzt geändert von sunflower12 am 04.04.2011 18:55, insgesamt 2-mal geändert.
Benutzeravatar
darkonia
Mitglied
Beiträge: 900
Registriert: 15.11.2008 15:24
Wohnort: München
Kontaktdaten:

Re: Fragebogen MOD

Beitrag von darkonia »

hört sich sehr interessant an, danke dir.
Community bedeutet Gleichgesinnte finden - MMOG-Heaven ist Deine Community! Von Spielern für Spieler bietet Dir dieses Portal genau das, was ein Spieler braucht. Bleibe ständig informiert, finde die neuesten MMORPGs, oder suche die frischesten News aus der Welt des Online Gamings - dieses und vieles mehr erwartet Dich auf MMOG-Heaven
hackepeter13
Valued Contributor
Beiträge: 3557
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Re: Fragebogen MOD

Beitrag von hackepeter13 »

Klingt für mich von der Sache her, wie ein Support Ticket System.
Der gibt im Prinzip die selbe Funktion.
sunflower12
Mitglied
Beiträge: 3
Registriert: 04.04.2011 15:29

Re: Fragebogen MOD

Beitrag von sunflower12 »

Danke für den Hinweis! Das ist noch mal ein ganzes Stück professioneller - es fehlt aber die Auswertung die nur für einen kleinen Benutzerkreis sichtbar ist.
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“