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?
Lesezeichen