Improving reCaptcha integration in comments

--HG--
branch : 1.x
extra : rebase_source : 2eeed5864e36f28f721817565816e25589453d07
This commit is contained in:
Sebastien Ros
2012-11-02 12:51:47 -07:00
parent 3217151eb3
commit 1e09bee429
7 changed files with 25 additions and 4 deletions

View File

@@ -27,6 +27,11 @@ namespace Orchard.AntiSpam.Drivers {
protected override DriverResult Editor(ReCaptchaPart part, dynamic shapeHelper) { protected override DriverResult Editor(ReCaptchaPart part, dynamic shapeHelper) {
return ContentShape("Parts_ReCaptcha_Fields", () => { return ContentShape("Parts_ReCaptcha_Fields", () => {
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>(); var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
if(settings.ByPassAuthenticated && _workContextAccessor.GetContext().CurrentUser != null) {
return null;
}
var viewModel = new ReCaptchaPartEditViewModel { var viewModel = new ReCaptchaPartEditViewModel {
PublicKey = settings.PublicKey PublicKey = settings.PublicKey
}; };
@@ -37,10 +42,14 @@ namespace Orchard.AntiSpam.Drivers {
protected override DriverResult Editor(ReCaptchaPart part, IUpdateModel updater, dynamic shapeHelper) { protected override DriverResult Editor(ReCaptchaPart part, IUpdateModel updater, dynamic shapeHelper) {
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
if (settings.ByPassAuthenticated && _workContextAccessor.GetContext().CurrentUser != null) {
return null;
}
var submitViewModel = new ReCaptchaPartSubmitViewModel(); var submitViewModel = new ReCaptchaPartSubmitViewModel();
if(updater.TryUpdateModel(submitViewModel, String.Empty, null, null)) { if(updater.TryUpdateModel(submitViewModel, String.Empty, null, null)) {
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
var context = _workContextAccessor.GetContext().HttpContext; var context = _workContextAccessor.GetContext().HttpContext;
var result = ExecuteValidateRequest( var result = ExecuteValidateRequest(
@@ -55,7 +64,6 @@ namespace Orchard.AntiSpam.Drivers {
} }
} }
return Editor(part, shapeHelper); return Editor(part, shapeHelper);
} }

View File

@@ -1,5 +1,5 @@
<Placement> <Placement>
<Place Parts_ReCaptcha_Fields="Content:10"/> <Place Parts_ReCaptcha_Fields="Content:20"/>
<Match DisplayType="SummaryAdmin"> <Match DisplayType="SummaryAdmin">
<Place Parts_SpamFilter_Metadata_SummaryAdmin="Meta:2"/> <Place Parts_SpamFilter_Metadata_SummaryAdmin="Meta:2"/>
</Match> </Match>

View File

@@ -2,5 +2,6 @@
public class ReCaptchaPartSettings { public class ReCaptchaPartSettings {
public string PublicKey { get; set; } public string PublicKey { get; set; }
public string PrivateKey { get; set; } public string PrivateKey { get; set; }
public bool ByPassAuthenticated { get; set; }
} }
} }

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using Orchard.ContentManagement; using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders; using Orchard.ContentManagement.MetaData.Builders;
@@ -30,6 +31,7 @@ namespace Orchard.AntiSpam.Settings {
if (updateModel.TryUpdateModel(settings, "ReCaptchaPartSettings", null, null)) { if (updateModel.TryUpdateModel(settings, "ReCaptchaPartSettings", null, null)) {
builder.WithSetting("ReCaptchaPartSettings.PublicKey", settings.PublicKey); builder.WithSetting("ReCaptchaPartSettings.PublicKey", settings.PublicKey);
builder.WithSetting("ReCaptchaPartSettings.PrivateKey", settings.PrivateKey); builder.WithSetting("ReCaptchaPartSettings.PrivateKey", settings.PrivateKey);
builder.WithSetting("ReCaptchaPartSettings.ByPassAuthenticated", settings.ByPassAuthenticated.ToString(CultureInfo.InvariantCulture));
} }
yield return DefinitionTemplate(settings); yield return DefinitionTemplate(settings);

View File

@@ -16,3 +16,12 @@
</fieldset> </fieldset>
@T("Get custom keys:") <a href="http://www.google.com/recaptcha">http://www.google.com/recaptcha</a> @T("Get custom keys:") <a href="http://www.google.com/recaptcha">http://www.google.com/recaptcha</a>
<fieldset>
<div>
@Html.EditorFor(m => m.ByPassAuthenticated, new { @class = "textMedium"})
<label class="forcheckbox" for="@Html.FieldIdFor( m => m.ByPassAuthenticated)">@T("Hide for authenticated users")</label>
<span class="hint">@T("Enable to hide reCaptcha when the user is authenticated.")</span>
</div>
</fieldset>

View File

@@ -33,7 +33,6 @@ else {
@Html.TextAreaFor(m => m.CommentText, new { rows = 10, cols = 30, @class = "comment-text" }) @Html.TextAreaFor(m => m.CommentText, new { rows = 10, cols = 30, @class = "comment-text" })
</li> </li>
<li> <li>
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
@Html.HiddenFor(m => m.CommentedOn) @Html.HiddenFor(m => m.CommentedOn)
@Html.HiddenFor(m => m.RepliedOn) @Html.HiddenFor(m => m.RepliedOn)

View File

@@ -22,5 +22,7 @@ else {
else { else {
@Display(Model.EditorShape) @Display(Model.EditorShape)
} }
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
} }
} }