mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-21 19:34:40 +08:00
Improving reCaptcha integration in comments
--HG-- branch : 1.x extra : rebase_source : 2eeed5864e36f28f721817565816e25589453d07
This commit is contained in:
@@ -27,6 +27,11 @@ namespace Orchard.AntiSpam.Drivers {
|
||||
protected override DriverResult Editor(ReCaptchaPart part, dynamic shapeHelper) {
|
||||
return ContentShape("Parts_ReCaptcha_Fields", () => {
|
||||
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
||||
|
||||
if(settings.ByPassAuthenticated && _workContextAccessor.GetContext().CurrentUser != null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var viewModel = new ReCaptchaPartEditViewModel {
|
||||
PublicKey = settings.PublicKey
|
||||
};
|
||||
@@ -37,10 +42,14 @@ namespace Orchard.AntiSpam.Drivers {
|
||||
|
||||
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();
|
||||
|
||||
if(updater.TryUpdateModel(submitViewModel, String.Empty, null, null)) {
|
||||
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
||||
var context = _workContextAccessor.GetContext().HttpContext;
|
||||
|
||||
var result = ExecuteValidateRequest(
|
||||
@@ -55,7 +64,6 @@ namespace Orchard.AntiSpam.Drivers {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return Editor(part, shapeHelper);
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<Placement>
|
||||
<Place Parts_ReCaptcha_Fields="Content:10"/>
|
||||
<Place Parts_ReCaptcha_Fields="Content:20"/>
|
||||
<Match DisplayType="SummaryAdmin">
|
||||
<Place Parts_SpamFilter_Metadata_SummaryAdmin="Meta:2"/>
|
||||
</Match>
|
||||
|
@@ -2,5 +2,6 @@
|
||||
public class ReCaptchaPartSettings {
|
||||
public string PublicKey { get; set; }
|
||||
public string PrivateKey { get; set; }
|
||||
public bool ByPassAuthenticated { get; set; }
|
||||
}
|
||||
}
|
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.MetaData;
|
||||
using Orchard.ContentManagement.MetaData.Builders;
|
||||
@@ -30,6 +31,7 @@ namespace Orchard.AntiSpam.Settings {
|
||||
if (updateModel.TryUpdateModel(settings, "ReCaptchaPartSettings", null, null)) {
|
||||
builder.WithSetting("ReCaptchaPartSettings.PublicKey", settings.PublicKey);
|
||||
builder.WithSetting("ReCaptchaPartSettings.PrivateKey", settings.PrivateKey);
|
||||
builder.WithSetting("ReCaptchaPartSettings.ByPassAuthenticated", settings.ByPassAuthenticated.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
yield return DefinitionTemplate(settings);
|
||||
|
@@ -16,3 +16,12 @@
|
||||
</fieldset>
|
||||
|
||||
@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>
|
||||
|
||||
|
@@ -33,7 +33,6 @@ else {
|
||||
@Html.TextAreaFor(m => m.CommentText, new { rows = 10, cols = 30, @class = "comment-text" })
|
||||
</li>
|
||||
<li>
|
||||
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
|
||||
@Html.HiddenFor(m => m.CommentedOn)
|
||||
@Html.HiddenFor(m => m.RepliedOn)
|
||||
|
||||
|
@@ -22,5 +22,7 @@ else {
|
||||
else {
|
||||
@Display(Model.EditorShape)
|
||||
}
|
||||
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user