+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Terms and Conditions vor jedem Seitenbesuch akzeptieren

  1. #1
    Neu an Board
    Registriert seit
    04.08.2009
    Beiträge
    10
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Terms and Conditions vor jedem Seitenbesuch akzeptieren

    Hallo Joomlaner, ich habe folgende Anforderungen und bräuchte einen Ansatz wo ich anfangen muss:

    1) Die gesamte Seite soll nur für registrierte Benutzer zugänglich sein.
    2) Vor jedem Seitenbesuch (z.B. beim Login) müssen die aktuellen Terms & Conditions akzeptiert werden.

    Mein Lösungsansatz zu 1) ist, dass ich die Seite auf offline schalte und so den Zugang für nicht-registrierte Benutzer sperre. Das klappt so weit auch.

    Für 2) wollte ich nun in die Datei offline.php ein Häkchen einbauen, dass die Bestätigung der Terms & Conditions übernimmt.

    Probleme, die ich nun noch habe sind,
    a) dass ich auf keinen Artikel verlinken kann, der die Terms & Conditions enthält (da der Zugriff auf Artikel ja nur nach erfolgtem LogIn möglich ist).
    b) dass ich noch nicht weiß, wie ich den LogIn nur dann zulasse, wenn auch das Akzeptieren-Häkchen markiert ist.

    Mein alternativer Ansatz, alle Seiten auf Zugriffsebene "Registriert" zu setzen, außer die Terms & Conditions, löst zwar a), ist aber i) nicht so schön wie das Offline-Fenster und ii) erhöht den Aufwand, da bei jedem Beitrag immer die Zugriffsebene gesetzt werden muss.

    Falls mit jemand mit einem Tipp helfen kann wäre das sehr nett! Vielleicht gibts ja auch schon eine Komponente, die das alles für mich erledigt?

    Danke!

  2. #2
    Gehört zum Inventar Avatar von Helrunar
    Registriert seit
    05.03.2006
    Ort
    /home/helrunar/Webdev
    Beiträge
    6.250
    Bedankte sich
    569
    Erhielt 1.546 Danksagungen
    in 1.399 Beiträgen

    Standard

    Meine spontane Idee wäre ein Plugin zu schreiben, welches sich vor der Generierung des Contens einklinkt, die Nutzungsbedingungen zum Akzeptieren anzeigt und eine Session setzt.

    Vielleicht würde sich ja mit dem Vorschaltplugin etwas realisieren lassen

    http://www.joomlaportal.de/ver-ffent...haltseite.html

  3. #3
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.936
    Bedankte sich
    13
    Erhielt 638 Danksagungen
    in 575 Beiträgen

    Standard

    Für Terms&Conditions würde ich eventuell eine eigene Komponente mit PlugIn erstellen.
    Sobald sich jemand anmeldet, wird per Plugin die Zustimmung überprüft und gegebenenfalls auf die AGB-Seite umgeleitet.
    Das Aktzeptieren wird gespeichert, sodass nicht wieder gefragt wird.
    Sobald sich die AGB ändern, wird die Tabelle Zustimmungen geleert und der Benutzer muss erneut Zustimmen.
    Suche und FAQ helfen bei Problemen oft weiter!

  4. #4
    Neu an Board
    Registriert seit
    04.08.2009
    Beiträge
    10
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    danke für eure ideen. hab noch nie ein plugin selber geschrieben, aber werde mich dann da wohl mal reinlesen müssen.

  5. #5
    Neu an Board
    Registriert seit
    04.08.2009
    Beiträge
    10
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    So, hier mal der Stand der Dinge:

    Terms&Conditions-Checkbox habe ich in die offline.php eingebaut, damit es beim Login-Fenster gezeigt wird.
    Code:
    <p id="form-login-termsandconditions">
    <label for="termsandconditions">I accept the Terms & Conditions</a></label>
    <input type="checkbox" name="termsandconditions" class="inputbox" value="yes" />
    </p>
    Plugin habe ich geschrieben. Habe das original Joomla-Authentication-Plugin kopiert und an meine Bedürfnisse angepasst: Bei korrektem Username + Password wird überprüft, ob die Checkbox angewählt wurde.
    Code:
    // check if user has accepted the Terms & Conditions
    $options['termsandconditions'] = JRequest::getBool('termsandconditions', false);
    // terms & conditions accepted?
    if ($options['termsandconditions'])
    {
    	$user = JUser::getInstance($result->id);
    	$response->email = $user->email;
    	$response->fullname = $user->name;
    	$response->status = JAUTHENTICATE_STATUS_SUCCESS;
    	$response->error_message = '';
    } else {
    	// Terms & Conditions not accepted
    	JError::raiseNotice(100, JText::_( "Please accept the Terms & Conditions"));
    	$response->status			= JAUTHENTICATE_STATUS_FAILURE;
    	$response->error_message	= 'Terms & Conditions not accepted';
    	return false;
    }
    Außerdem wird ein Eintrag in der Datenbank gemacht.
    Code:
    // Save the acceptance of the Terms & Conditions
    $query = 'INSERT INTO #__termsandconditions ( username, timestamp )' .
    	' VALUES ( '.$db->Quote( $credentials['username'] ).', '.$db->Quote(date("Y-m-d H:i:s")).')';
    $db->setQuery($query);
    if (!$db->query()) {
    	JError::raiseError( 500, $db->stderr());
    }
    Ich musste dann noch einen kleinen Bug in Joomla beheben, der die korrekte Ausgabe der Fehlermeldung unterbunden hatte. Dazu in der \libraries\joomla\application\application.php, Zeile 580 ändern in
    Code:
    return JError::raiseWarning('SOME_ERROR_CODE', $response->error_message);
    Auch wenn ich solche Hacks im Core-Sourcecode nur sehr ungern mache ging es diesmal nicht anders.

    So weit mal die Dokumentation für die Nachwelt.

    Was jetzt noch nicht 100% rund läuft ist, dass ich die Terms&Conditions-Seite außerhalb von Joomla halten muss, da ich die Seite ja im Offline-Betrieb laufen lasse und so nicht auf Artikel verweisen kann. Falls hier noch jemand eine Idee hat bin ich für alles offen.

    Außerdem muss ich die Tabelle #__termsandconditions noch von Hand anlegen, da ich nicht weiß, wie das bei der Plugin-Installation automatischgemacht werden kann. Kann es sein, dass das nur für Komponenten möglich ist?
    Geändert von hannes2000 (21.06.2010 um 14:19 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein