Changes to include captcha image on post to verify humanity

This commit is contained in:
Frank Dillon 2007-07-20 20:19:01 +00:00
parent 1623847808
commit 6c54cbc161

View file

@ -158,82 +158,85 @@ sub commit {
sub definition { sub definition {
my $class = shift; my $class = shift;
my $session = shift; my $session = shift;
my $definition = shift; my $definition = shift;
my $i18n = WebGUI::International->new($session,"Asset_Post"); my $i18n = WebGUI::International->new($session,"Asset_Post");
push(@{$definition}, {
assetName=>$i18n->get('assetName'), my $properties = {
icon=>'post.gif', storageId => {
tableName=>'Post', fieldType=>"image",
className=>'WebGUI::Asset::Post', defaultValue=>undef
properties=>{ },
storageId => { threadId => {
fieldType=>"image", noFormPost=>1,
defaultValue=>undef fieldType=>"hidden",
}, defaultValue=>undef
threadId => { },
noFormPost=>1, originalEmail => {
fieldType=>"hidden", noFormPost=>1,
defaultValue=>undef fieldType=>"hidden",
}, defaultValue=>undef
originalEmail => { },
noFormPost=>1, dateSubmitted => {
fieldType=>"hidden", noFormPost=>1,
defaultValue=>undef fieldType=>"hidden",
}, defaultValue=>$session->datetime->time()
dateSubmitted => { },
noFormPost=>1, dateUpdated => {
fieldType=>"hidden", fieldType=>"hidden",
defaultValue=>$session->datetime->time() defaultValue=>$session->datetime->time()
}, },
dateUpdated => { username => {
fieldType=>"hidden", fieldType=>"hidden",
defaultValue=>$session->datetime->time() defaultValue=>$session->form->process("visitorUsername") || $session->user->profileField("alias") || $session->user->username
}, },
username => { rating => {
fieldType=>"hidden", noFormPost=>1,
defaultValue=>$session->form->process("visitorUsername") || $session->user->profileField("alias") || $session->user->username fieldType=>"hidden",
}, defaultValue=>undef
rating => { },
noFormPost=>1, views => {
fieldType=>"hidden", noFormPost=>1,
defaultValue=>undef fieldType=>"hidden",
}, defaultValue=>undef
views => { },
noFormPost=>1, contentType => {
fieldType=>"hidden", fieldType=>"contentType",
defaultValue=>undef defaultValue=>"mixed"
}, },
contentType => { userDefined1 => {
fieldType=>"contentType", fieldType=>"HTMLArea",
defaultValue=>"mixed" defaultValue=>undef
}, },
userDefined1 => { userDefined2 => {
fieldType=>"HTMLArea", fieldType=>"HTMLArea",
defaultValue=>undef defaultValue=>undef
}, },
userDefined2 => { userDefined3 => {
fieldType=>"HTMLArea", fieldType=>"HTMLArea",
defaultValue=>undef defaultValue=>undef
}, },
userDefined3 => { userDefined4 => {
fieldType=>"HTMLArea", fieldType=>"HTMLArea",
defaultValue=>undef defaultValue=>undef
}, },
userDefined4 => { userDefined5 => {
fieldType=>"HTMLArea", fieldType=>"HTMLArea",
defaultValue=>undef defaultValue=>undef
}, },
userDefined5 => { content => {
fieldType=>"HTMLArea", fieldType=>"HTMLArea",
defaultValue=>undef defaultValue=>undef
}, },
content => { };
fieldType=>"HTMLArea",
defaultValue=>undef push(@{$definition}, {
} assetName=>$i18n->get('assetName'),
}, icon=>'post.gif',
}); tableName=>'Post',
return $class->SUPER::definition($session,$definition); className=>'WebGUI::Asset::Post',
properties=>$properties,
});
return $class->SUPER::definition($session,$definition);
} }
@ -1081,195 +1084,241 @@ sub www_deleteFile {
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub www_edit { sub www_edit {
my $self = shift; my $self = shift;
my $session = $self->session;
my $form = $session->form;
my $privilege = $session->privilege;
my $user = $session->user;
my $func = $form->process("func");
my (%var, $content, $title, $synopsis); my (%var, $content, $title, $synopsis);
my $i18n = WebGUI::International->new($session);
my $i18n = WebGUI::International->new($self->session); if ($func eq "add" || ($func eq "editSave" && $form->process("assetId") eq "new")) { # new post
if ($self->session->form->process("func") eq "add") { # new post #Add Form Header for all new posts
$var{'form.header'} = WebGUI::Form::formHeader($self->session,{action=>$self->getParent->getUrl}) my $className = $form->process("class","className");
.WebGUI::Form::hidden($self->session, { #Post to the parent if this is a new request
name=>"func", my $action = $self->getParent->getUrl;
value=>"add" #Post to self if there was an error Posting to a Thread (not a Collaboration)
}) $action = $self->getUrl if($func eq "editSave" && $className ne "WebGUI::Asset::Post::Thread");
.WebGUI::Form::hidden($self->session, {
name=>"assetId", $var{'form.header'} = WebGUI::Form::formHeader($session,{
value=>"new" action=>$action
}) });
.WebGUI::Form::hidden($self->session, { $var{'form.header'} .= WebGUI::Form::hidden($session, {
name=>"class", name=>"func",
value=>$self->session->form->process("class","className") value=>"add"
}); });
$var{'isNewPost'} = 1; $var{'form.header'} .= WebGUI::Form::hidden($session, {
$content = $self->session->form->process("content"); name=>"assetId",
$title = $self->session->form->process("title"); value=>"new"
$synopsis = $self->session->form->process("synopsis"); });
if ($self->session->form->process("class","className") eq "WebGUI::Asset::Post") { # new reply $var{'form.header'} .= WebGUI::Form::hidden($session, {
$self->{_thread} = $self->getParent->getThread; name=>"class",
return $self->session->privilege->insufficient() unless ($self->getThread->canReply); value=>$form->process("class","className")
$var{isReply} = 1; });
$var{'reply.title'} = $self->getParent->get("title");
$var{'reply.synopsis'} = $self->getParent->get("synopsis"); if($self->getThread->getParent->getValue("useCaptcha")) {
$var{'reply.content'} = $self->getParent->formatContent; $var{'useCaptcha' } = "true";
use WebGUI::Form::Captcha;
my $captcha = WebGUI::Form::Captcha->new($self->session,{
"name"=>"captcha"
});
$var{'captcha_form' }
= $captcha->toHtml. '<span class="formSubtext">'.$captcha->get('subtext').'</span>';
}
$var{'isNewPost' } = 1;
$content = $form->process("content");
$title = $form->process("title");
$synopsis = $form->process("synopsis");
if ($className eq "WebGUI::Asset::Post") { # new reply
#If editSave comes back on a reply to a new thread, you wind up with a post who's parent is a collaboration system.
my $parent = $self->getParent;
if(ref $self->getParent eq "WebGUI::Asset::Wobject::Collaboration") {
$self->{_thread} = $self->getThread;
$parent = $self;
} else {
$self->{_thread} = $self->getParent->getThread;
}
return $privilege->insufficient() unless ($self->getThread->canReply);
$var{'isReply' } = 1;
$var{'reply.title' } = $title || $parent->get("title");
$var{'reply.synopsis'} = $synopsis || $parent->get("synopsis");
$var{'reply.content' } = $content || $parent->formatContent;
for my $i (1..5) { for my $i (1..5) {
$var{'reply.userDefined'.$i} = WebGUI::HTML::filter($self->getParent->get('userDefined'.$i),"macros"); $var{'reply.userDefined'.$i} = WebGUI::HTML::filter($parent->get('userDefined'.$i),"macros");
} }
unless ($self->session->form->process("content") || $self->session->form->process("title")) { unless ($content || $title) {
$content = "[quote]".$self->getParent->get("content")."[/quote]" if ($self->session->form->process("withQuote")); $content = "[quote]".$parent->get("content")."[/quote]" if ($form->process("withQuote"));
$title = $self->getParent->get("title"); $title = $parent->get("title");
$title = "Re: ".$title unless ($title =~ /^Re:/i); $title = "Re: ".$title unless ($title =~ /^Re:/i);
} }
$var{'subscribe.form'} = WebGUI::Form::yesNo($self->session, { $var{'subscribe.form'} = WebGUI::Form::yesNo($session, {
name=>"subscribe", name=>"subscribe",
value=>$self->session->form->process("subscribe") value=>$self->session->form->process("subscribe")
}); });
} }
elsif ($self->session->form->process("class","className") eq "WebGUI::Asset::Post::Thread") { # new thread elsif ($className eq "WebGUI::Asset::Post::Thread") { # new thread
return $self->session->privilege->insufficient() unless ($self->getThread->getParent->canPost); return $privilege->insufficient() unless ($self->getThread->getParent->canPost);
$var{isThread} = 1; $var{'isThread' } = 1;
$var{isNewThread} = 1; $var{'isNewThread' } = 1;
if ($self->getThread->getParent->canEdit) { if ($self->getThread->getParent->canEdit) {
$var{'sticky.form'} = WebGUI::Form::yesNo($self->session, { $var{'sticky.form'} = WebGUI::Form::yesNo($session, {
name=>'stick', name=>'stick',
value=>$self->session->form->process("stick") value=>$form->process("stick")
}); });
$var{'lock.form'} = WebGUI::Form::yesNo($self->session, { $var{'lock.form' } = WebGUI::Form::yesNo($session, {
name=>'lock', name=>'lock',
value=>$self->session->form->process('lock') value=>$form->process('lock')
}); });
} }
$var{'subscribe.form'} = WebGUI::Form::yesNo($self->session, { $var{'subscribe.form'} = WebGUI::Form::yesNo($session, {
name=>"subscribe", name=>"subscribe",
value=>$self->session->form->process("subscribe") || 1 value=>$form->process("subscribe") || 1
}); });
} }
$content .= "\n\n".$self->session->user->profileField("signature") if ($self->session->user->profileField("signature") && !$self->session->form->process("content")); $content .= "\n\n".$user->profileField("signature") if ($user->profileField("signature") && !$form->process("content"));
} }
else { # edit else { # edit
return $self->session->privilege->insufficient() unless ($self->canEdit); return $privilege->insufficient() unless ($self->canEdit);
$var{isThread} = !$self->isReply; $var{'isThread' } = !$self->isReply;
$var{'form.header'} = WebGUI::Form::formHeader($self->session,{action=>$self->getUrl}) $var{'form.header'} = WebGUI::Form::formHeader($session,{
.WebGUI::Form::hidden($self->session, { action=>$self->getUrl
name=>"func", });
value=>"edit" $var{'form.header'} .= WebGUI::Form::hidden($session, {
}) name=>"func",
.WebGUI::Form::hidden($self->session, { value=>"edit"
name=>"revision", });
value=>$self->session->form->param("revision") $var{'form.header'} .= WebGUI::Form::hidden($session, {
}) name=>"revision",
.WebGUI::Form::hidden($self->session, { value=>$form->param("revision")
name=>"ownerUserId", });
value=>$self->getValue("ownerUserId") $var{'form.header'} .= WebGUI::Form::hidden($session, {
}) name=>"ownerUserId",
.WebGUI::Form::hidden($self->session, { value=>$self->getValue("ownerUserId")
name=>"username", });
value=>$self->getValue("username") $var{'form.header'} .= WebGUI::Form::hidden($session, {
}); name=>"username",
value=>$self->getValue("username")
});
$var{isEdit} = 1; $var{isEdit} = 1;
$content = $self->session->form->process('content') || $self->getValue("content"); $content = $form->process('content') || $self->getValue("content");
$title = $self->session->form->process('title') || $self->getValue("title"); $title = $form->process('title') || $self->getValue("title");
$synopsis = $self->session->form->process('synopsis') || $self->getValue("synopsis"); $synopsis = $form->process('synopsis') || $self->getValue("synopsis");
} }
$var{'archive.form'} = WebGUI::Form::yesNo($self->session, {
name=>"archive" $var{'archive.form'} = WebGUI::Form::yesNo($session, {
}); name=>"archive"
$var{'form.header'} .= WebGUI::Form::hidden($self->session, {name=>"proceed", value=>"showConfirmation"}); });
if ($self->session->form->process("title") || $self->session->form->process("content") || $self->session->form->process("synopsis")) { $var{'form.header'} .= WebGUI::Form::hidden($session, {
$var{'preview.title'} = WebGUI::HTML::filter($self->session->form->process("title"),"all"); name=>"proceed",
($var{'preview.synopsis'}, $var{'preview.content'}) = $self->getSynopsisAndContent($self->session->form->process("synopsis","textarea"), $self->session->form->process("content","HTMLArea")); value=>"showConfirmation"
$var{'preview.content'} = $self->formatContent($var{'preview.content'},$self->session->form->process("contentType")); });
if ($form->process("title") || $form->process("content") || $form->process("synopsis")) {
$var{'preview.title'} = WebGUI::HTML::filter($form->process("title"),"all");
($var{'preview.synopsis'}, $var{'preview.content'}) = $self->getSynopsisAndContent($form->process("synopsis","textarea"), $form->process("content","HTMLArea"));
$var{'preview.content'} = $self->formatContent($var{'preview.content'},$form->process("contentType"));
for my $i (1..5) { for my $i (1..5) {
$var{'preview.userDefined'.$i} = WebGUI::HTML::filter($self->session->form->process('userDefined'.$i),"macros"); $var{'preview.userDefined'.$i} = WebGUI::HTML::filter($form->process('userDefined'.$i),"macros");
} }
} }
$var{'form.footer'} = WebGUI::Form::formFooter($self->session,); $var{'form.footer' } = WebGUI::Form::formFooter($session);
$var{usePreview} = $self->getThread->getParent->get("usePreview"); $var{'usePreview' } = $self->getThread->getParent->get("usePreview");
$var{'user.isModerator'} = $self->getThread->getParent->canModerate; $var{'user.isModerator'} = $self->getThread->getParent->canModerate;
$var{'user.isVisitor'} = ($self->session->user->userId eq '1'); $var{'user.isVisitor' } = ($user->userId eq '1');
$var{'visitorName.form'} = WebGUI::Form::text($self->session, { $var{'visitorName.form'} = WebGUI::Form::text($session, {
name => "visitorName", name => "visitorName",
value => $self->session->form->process('visitorName') || $self->getValue("visitorName") value => $form->process('visitorName') || $self->getValue("visitorName")
}); });
for my $x (1..5) { for my $x (1..5) {
my $userDefinedValue my $userDefinedValue
= $self->session->form->process("userDefined".$x) = $form->process("userDefined".$x)
|| $self->getValue("userDefined".$x) || $self->getValue("userDefined".$x)
; ;
$var{'userDefined'.$x} = $userDefinedValue; $var{'userDefined'.$x} = $userDefinedValue;
$var{'userDefined'.$x.'.form'} $var{'userDefined'.$x.'.form'}
= WebGUI::Form::text($self->session, { = WebGUI::Form::text($session, {
name => "userDefined".$x, name => "userDefined".$x,
value => $userDefinedValue, value => $userDefinedValue,
}); });
$var{'userDefined'.$x.'.form.yesNo'} $var{'userDefined'.$x.'.form.yesNo'}
= WebGUI::Form::yesNo($self->session, { = WebGUI::Form::yesNo($session, {
name => "userDefined".$x, name => "userDefined".$x,
value => $userDefinedValue, value => $userDefinedValue,
}); });
$var{'userDefined'.$x.'.form.textarea'} $var{'userDefined'.$x.'.form.textarea'}
= WebGUI::Form::textarea($self->session, { = WebGUI::Form::textarea($session, {
name => "userDefined".$x, name => "userDefined".$x,
value => $userDefinedValue, value => $userDefinedValue,
}); });
$var{'userDefined'.$x.'.form.htmlarea'} $var{'userDefined'.$x.'.form.htmlarea'}
= WebGUI::Form::HTMLArea($self->session, { = WebGUI::Form::HTMLArea($session, {
name => "userDefined".$x, name => "userDefined".$x,
value => $userDefinedValue, value => $userDefinedValue,
}); });
$var{'userDefined'.$x.'.form.float'} $var{'userDefined'.$x.'.form.float'}
= WebGUI::Form::Float($self->session, { = WebGUI::Form::Float($session, {
name => "userDefined".$x, name => "userDefined".$x,
value => $userDefinedValue, value => $userDefinedValue,
}); });
} }
$title = WebGUI::HTML::filter($title,"all"); $title = WebGUI::HTML::filter($title,"all");
$content = WebGUI::HTML::filter($content,"macros"); $content = WebGUI::HTML::filter($content,"macros");
$synopsis = WebGUI::HTML::filter($synopsis,"all"); $synopsis = WebGUI::HTML::filter($synopsis,"all");
$var{'title.form'} = WebGUI::Form::text($self->session, { $var{'title.form' } = WebGUI::Form::text($session, {
name=>"title", name=>"title",
value=>$title value=>$title
}); });
$var{'title.form.textarea'} = WebGUI::Form::textarea($self->session, { $var{'title.form.textarea'} = WebGUI::Form::textarea($session, {
name=>"title", name=>"title",
value=>$title value=>$title
}); });
$var{'synopsis.form'} = WebGUI::Form::textarea($self->session, { $var{'synopsis.form'} = WebGUI::Form::textarea($session, {
name=>"synopsis", name=>"synopsis",
value=>$synopsis, value=>$synopsis,
}); });
$var{'content.form'} = WebGUI::Form::HTMLArea($self->session, { $var{'content.form'} = WebGUI::Form::HTMLArea($session, {
name=>"content", name=>"content",
value=>$content, value=>$content,
richEditId=>$self->getThread->getParent->get("richEditor") richEditId=>$self->getThread->getParent->get("richEditor")
}); });
$var{'form.submit'} = WebGUI::Form::submit($self->session, { $var{'form.submit'} = WebGUI::Form::submit($session, {
extras=>"onclick=\"this.value='".$i18n->get(452)."'; this.form.func.value='editSave'; this.form.submit();return false;\"" extras=>"onclick=\"this.value='".$i18n->get(452)."'; this.form.func.value='editSave'; this.form.submit();return false;\""
}); });
$var{'karmaScale.form'} = WebGUI::Form::integer($self->session, { $var{'karmaScale.form'} = WebGUI::Form::integer($session, {
name=>"karmaScale", name=>"karmaScale",
defaultValue=>$self->getThread->getParent->get("defaultKarmaScale"), defaultValue=>$self->getThread->getParent->get("defaultKarmaScale"),
value=>$self->getValue("karmaScale"), value=>$self->getValue("karmaScale"),
}); });
$var{karmaIsEnabled} = $self->session->setting->get("useKarma"); $var{karmaIsEnabled} = $session->setting->get("useKarma");
$var{'form.preview'} = WebGUI::Form::submit($self->session, { $var{'form.preview'} = WebGUI::Form::submit($session, {
value=>$i18n->get("preview","Asset_Collaboration") value=>$i18n->get("preview","Asset_Collaboration")
}); });
my $numberOfAttachments = $self->getThread->getParent->getValue("attachmentsPerPost"); my $numberOfAttachments = $self->getThread->getParent->getValue("attachmentsPerPost");
$var{'attachment.form'} = WebGUI::Form::image($self->session, { $var{'attachment.form'} = WebGUI::Form::image($session, {
name=>"storageId", name=>"storageId",
value=>$self->get("storageId"), value=>$self->get("storageId"),
maxAttachments=>$numberOfAttachments, maxAttachments=>$numberOfAttachments,
deleteFileUrl=>$self->getUrl("func=deleteFile;filename=") deleteFileUrl=>$self->getUrl("func=deleteFile;filename=")
}) if ($numberOfAttachments); }) if ($numberOfAttachments);
$var{'contentType.form'} = WebGUI::Form::contentType($self->session, {
$var{'contentType.form'} = WebGUI::Form::contentType($session, {
name=>'contentType', name=>'contentType',
value=>$self->getValue("contentType") || "mixed", value=>$self->getValue("contentType") || "mixed",
}); });
if ($self->session->setting->get("metaDataEnabled") if ($session->setting->get("metaDataEnabled")
&& $self->getThread->getParent->get('enablePostMetaData')) { && $self->getThread->getParent->get('enablePostMetaData')) {
my $meta = $self->getMetaDataFields(); my $meta = $self->getMetaDataFields();
my $formGen = $self->session->form; my $formGen = $form;
my @meta_loop = (); my @meta_loop = ();
foreach my $field (keys %{ $meta }) { foreach my $field (keys %{ $meta }) {
my $fieldType = $meta->{$field}{fieldType} || "Text"; my $fieldType = $meta->{$field}{fieldType} || "Text";
@ -1279,14 +1328,14 @@ sub www_edit {
if($fieldType eq "selectList") { if($fieldType eq "selectList") {
$options = {"", $i18n->get("Select", "Asset")}; $options = {"", $i18n->get("Select", "Asset")};
} }
my $form = WebGUI::Form::DynamicField->new($self->session, my $form = WebGUI::Form::DynamicField->new($session,
name=>"metadata_".$meta->{$field}{fieldId}, name=>"metadata_".$meta->{$field}{fieldId},
uiLevel=>5, uiLevel=>5,
value=>$meta->{$field}{value}, value=>$meta->{$field}{value},
extras=>qq/title="$meta->{$field}{description}"/, extras=>qq/title="$meta->{$field}{description}"/,
possibleValues=>$meta->{$field}{possibleValues}, possibleValues=>$meta->{$field}{possibleValues},
options=>$options, options=>$options,
fieldType=>$fieldType, fieldType=>$fieldType,
)->toHtml; )->toHtml;
push @meta_loop, { push @meta_loop, {
field => $form, field => $form,
@ -1316,6 +1365,14 @@ sub www_editSave {
my $self = shift; my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit; return $self->session->privilege->insufficient() unless $self->canEdit;
return $self->session->privilege->locked() unless $self->canEditIfLocked; return $self->session->privilege->locked() unless $self->canEditIfLocked;
my $assetId = $self->session->form->param("assetId");
if($assetId eq "new" && $self->getThread->getParent->getValue("useCaptcha")) {
my $captcha = $self->session->form->process("captcha","Captcha");
unless ($captcha) {
return $self->www_edit;
}
}
if ($self->session->config("maximumAssets")) { if ($self->session->config("maximumAssets")) {
my ($count) = $self->session->db->quickArray("select count(*) from asset"); my ($count) = $self->session->db->quickArray("select count(*) from asset");
my $i18n = WebGUI::International->new($self->session, "Asset"); my $i18n = WebGUI::International->new($self->session, "Asset");