Hilfe bei Migration Eigenentwicklung -> Drupal
am 01.11.2014 - 17:07 Uhr in
Hallo zusammen,
ich brauche mal eure Hilfe. Ich bin noch nicht ganz so lange mit Drupal am arbeiten daher weiß ich nicht wie ich folgendes Problem angehen kann. Ich führe eine Internetseite / Community die von mir in PHP und MySQL entwickelt wurde. Es geht im groben darum Aufgaben zu lösen wie z. B. "Wieviel ist 5 + 5" usw. Die Seite hat derzeit über 400 angemeldete Benutzer und ich möchte die komplette Seite gerne in Drupal übertragen. Das Problem der Datenbankmigration schiebe ich erst einmal nach hinten mir gehts hauptsächlich um folgende Frage. Wie realisere ich in Drupal folgende Aufgabenstellung?
Ich möchte ein Node haben welches einen Aufgabentext "wieviel ist 5 + 5" und ein Textfeld enthält. Wenn ich in das Textfeld "7" eingebe soll eine Fehlerausgabe und wenn ich "10" eingebe eine Ausgabe dass das Ergebnis richtig ist kommen. Bei dem angemeldeten Benutzer soll bei richtiger Eingabe die jeweilige Aufgabe als "bereits gelöst" angezeigt werden. In meiner aktuellen DB ist es derzeit so, dass ich einen Benutzer habe mit den Spalten "Aufgabe 1, Aufgabe 2 etc." Sofern jemand das Formular abgesendet hat prüft PHP mit einer SQL Abfrage ob die Eingabe mit dem richtigen Passwort stimmt und wenn ja wird bei dem Benutzer die Spalte "Aufgabe xy" auf "true" gesetzt. So jetzt mal im ganz groben dargestellt. Wie realisiere ich soetwas in Drupal? Mit Webforms? Mit Views? Mit Hookentwicklung? Ich brauch nun keine komplette Anleitung aber so ein Schubser in die richtige Richtung wräre super. Aktuell weiß ich nicht wie ich da anfangen soll.
Um es etwas deutlicher zu machen, es geht um diese Seite: Hacking-Challenges
Vielen Dank schonmal!
- Anmelden oder Registrieren um Kommentare zu schreiben
Schaue dir Modulentwicklung an
am 01.11.2014 - 20:19 Uhr
Je nach bisherigem Programmierstil, wirst du weite Teile weiterverwenden können.
Allerdings kommst du nicht drum herum, dich intensiv in Drupal einzuarbeiten.
Grüße
Ronald
Mmhh davon bin ich
am 02.11.2014 - 13:46 Uhr
Mmhh davon bin ich ausgegangen, dass ich mich intensiv einarbeite. ;-) Mir würde für den Anfang schon reichen, wie ich ein Eingabefeld in einem Inhaltytyp platziere welches bei richtiger Eingabe eines von mir definieten Wertes ein "richtig" oder "falsch" ausgibt. Also eine Art Passwortabfrage. Wie kann ich sowas am besten realisieren? Muss ich das selbst entwickeln also über eine eigene page.tpl? oder wie geht man sowas an?
Theming und Funktion sind bei Drupal getrennt
am 02.11.2014 - 18:51 Uhr
wenn du etwas gestalten willst, machst du dies über Templates und CSS, wenn du eine Funktion realisieren willst, mit einem Modul.
Deine Aufgabe könnte ggf. vom Voting-Modul erledigt werden. Dazu müsste sich jedoch jemand äußern, der mit diesem Modul Erfahrung hat.
Ob du eine content.tpl oder ein eigenes CSS brauchst, ist Geschmacksache.
Grüße
Ronald
Da es sich bei deinem
am 02.11.2014 - 22:30 Uhr
Da es sich bei deinem Aufgabenstellungen ja hauptsächlich um quizähnliche Fragen handelt, könntest du hier auch auf der https://www.drupal.org/project/quiz Modul zurückgreifen.
EIne Alternative wäre hier vielleicht auch das Framework http://h5p.org/ für dich interessant - ist sehr viel mehr auf Rich media ausgelegt als bspw. das quiz Modul.
Dies bietet neben normalen Multiple / Singlechoice Fragen auch noch diverse andere Möglichkeiten (Imagemaps, Videos, Drag&Drop Tests etc.).
Ein Drupalmodul hierfür gibt es bereits https://www.drupal.org/project/h5p.
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
@Steffen: Vielen Dank für die
am 03.11.2014 - 13:18 Uhr
@Steffen: Vielen Dank für die Infos. Das Quiz-Modul gefällt mir beim flüchtigen ansehen nicht so gut. Das h5p Framework dafür umso mehr. Damit lässt sich sicherlich eine ganze Menge machen. Für meine Frage aber "erst einmal" zu viel.
@Ronald: Mit CSS hat meine Aufgabenstellung eigentlich nichts zu tun. Das Theming ist zweitrangig. Dennoch danke für deine Antwort.
Um es nochmal etwas verständlicher zu machen. So sieht meine Seite jetzt aus:
oben ist eine Inputbox. Wenn ich eine Lösung eingebe die falsch ist kommt die entsprechende Fehlermeldung. Ansonsten erscheint die Meldung dass das Passwort richtig ist. Das Script weiß, dass ich als angemeldeter Benutzer die Aufgabe bereits gelöst habe. Des weiteren wird angezeigt, dass die Aufgabe bereits von 287 Usern gelöst wurde. Weiter unten "Aller Anfang ist leicht" kommt die eigentliche Aufgabe. Aber das soll hier nicht das Thema sein. Die Aufgabe lässt sich einfach mit einem WYSIWYG Editor eintragen. Für mich ist interessant wie ich den oberen Block mit der Passwortabfrage umsetze. Ich hoffe es ist nun etwas verständlicher geworden.
---------------------Edit-----------------------
Also ich habe es jetzt mal folgendermaßen gelöst. Ich habe einen eigenen Inhaltstyp "Aufgabe" angelegt und eine eigene node--aufgabe.tpl.php erstellt und in dieser folgenden Code eingegeben.
<div class="content"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
//print render($content);
if (isset($_POST["submit"])) {
if (isset($_POST["inputPassword"]) && $_POST["inputPassword"] == "Test") {?>
<div class="alert alert-dismissable alert-success">
<button class="close" type="button" data-dismiss="alert">×</button>
<strong>Well done!</strong> You successfully read <a class="alert-link" href="#">this important alert message</a>.
</div>
<?php
}
else { ?>
<div class="alert alert-dismissable alert-danger">
<button class="close" type="button" data-dismiss="alert">×</button>
<strong>Oh snap!</strong> <a class="alert-link" href="#">Change a few things up</a> and try submitting again.
</div>
<?php
}
}
?>
<form class="form-horizontal" method="post">
<fieldset>
<legend>Legend</legend>
<div class="form-group">
<label class="col-lg-2 control-label" for="inputPassword">Password</label>
<div class="col-lg-10">
<input class="form-control" id="inputPassword" name="inputPassword" type="password" placeholder="Password">
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button class="btn btn-primary" type="submit" name="submit">Submit</button>
</div>
</div>
</fieldset>
</form>
</div>
Somit habe ich nun bei jedem Node vom Typ Aufgabe eine Form mit dahinterliegender Passwortabfrage. Nicht wundern ich spiele gerade mit dem Bootstrap Framework daher die ganzen Divs. So sieht das ganze dann aus.
Das finde ich prinzipiell schon ganz gut aber bin ich damit auf dem richtigen Weg, dass ich den ganzen Code in der node.tpl hinterlege oder macht man sowas für gewöhnlich mit einer Modulprogrammierung?
Das ist ein recht komplexes Gebilde
am 03.11.2014 - 13:33 Uhr
das sicher mit Drupal realisierbar ist, aber einiges an Arbeit erfordert.
Ich würde nicht unbedingt mit dem schwierigsten Segment anfangen ;-)
Diese "challenges" erforden wahrscheinlich ein bisschen eigenes Coding. Wie gesagt, Quiz und ähnlichse habe ich keine eigene Erfahrung.
Da lohnt es sich sicher, einen zweiten Blick zu werfen, ehe du ein eigenes Modul entwickelst.
Die nächste Frage, die bei einem Projekt dieser Größenordnung relevant sein könnte, ist: lohnt es sich vielleicht, das Ganze gleich auf Basis Drupal 8 zu entwickeln?
Dort ändert sich einiges, was wiederum Umstellungsaufwand in drei oder vier Jahren nach sich zöge.
Grüße
Ronald
ACHTUNG
am 03.11.2014 - 13:38 Uhr
Mit der Codierung im Template umgehst du Drupal.
Nicht nur, dass das nicht "sauber" ist, sondern die Pflege wird sehr schwierig.
Du solltest das Grundprinziim der Trennung von Darstellung, Inhalt und Funktion beibehalten.
Wenn du ein Formular malen lassen willst, nutze die Form-API.
Das mag heute funktionieren, aber schon in Kürze wirst du es bereuen.
Grüße
Ronald