А, кстати, как сделать так, чтобы комменты были доступны всем, но зарегестрированным и авторизованным без капчи и прочей ереси?
А то он либо всем с капчой, либо только зарегистрированным.
Вот код отображение формы, с условием авторизованности:
- Код: Выделить всё
if( $controller->authenticationRequired && !$u->isLoggedIn() ){ ?>
<div><?php echo t('You must be logged in to leave a reply.')?> <a href="<?php echo View::url("/login","forward",$c->getCollectionID())?>"><?php echo t('Login')?> »</a></div>
<?php }else{ ?>
<a name="guestBookForm-<?php echo $controller->bID?>"></a>
<div id="guestBook-formBlock-<?php echo $controller->bID?>" class="guestBook-formBlock">
<h5 class="guestBook-formBlock-title"><?php echo t('Leave a Reply')?></h5>
<form method="post" action="<?php echo $this->action('form_save_entry', '#guestBookForm-'.$controller->bID)?>">
<?php if(isset($Entry->entryID)) { ?>
<input type="hidden" name="entryID" value="<?php echo $Entry->entryID?>" />
<?php } ?>
<?php if(!$controller->authenticationRequired){ ?>
<label for="name"><?php echo t('Name')?>:</label><?php echo (isset($errors['name'])?"<span class=\"error\">".$errors['name']."</span>":"")?><br />
<input type="text" name="name" value="<?php echo $Entry->user_name ?>" /> <br />
<label for="email"><?php echo t('Email')?>:</label><?php echo (isset($errors['email'])?"<span class=\"error\">".$errors['email']."</span>":"")?><br />
<input type="email" name="email" value="<?php echo $Entry->user_email ?>" /> <span class="note">(<?php echo t('Your email will not be publicly displayed.')?>)</span> <br />
<?php } ?>
<?php echo (isset($errors['commentText'])?"<br /><span class=\"error\">".$errors['commentText']."</span>":"")?>
<textarea name="commentText"><?php echo $Entry->commentText ?></textarea><br />
<?php
if($controller->displayCaptcha) {
$captcha = Loader::helper('validation/captcha');
$captcha->label();
$captcha->showInput();
$captcha->display();
echo isset($errors['captcha'])?'<span class="error">' . $errors['captcha'] . '</span>':'';
}
?>
<br/><br/>
<input type="submit" name="Post Comment" value="<?php echo t('Post Comment')?>" class="button"/>
</form>
</div>
<?php } ?>
А вот контроллер, кусок определения зарегестрированности и вывода капчи:
- Код: Выделить всё
$u = new User();
$uID = intval( $u->getUserID() );
if($this->authenticationRequired && !$u->isLoggedIn()){
$errors['notLogged'] = '- '.t("Your session has expired. Please log back in.");
}elseif(!$this->authenticationRequired){
if(!$v->email($_POST['email'])) {
$errors['email'] = '- '.t("Invalid Email Address");
}
if(!$v->notempty($_POST['name'])) {
$errors['name'] = '- '.t("Name is required");
}
}
// check captcha if activated
if ($this->displayCaptcha) {
$captcha = Loader::helper('validation/captcha');
if (!$captcha->check()) {
$errors['captcha'] = '- '.t("Incorrect captcha code");
}
}
Я пытался менять условия и там и там. Чет нифига
