Skip to content

Instantly share code, notes, and snippets.

@fluxdigital
Last active October 9, 2020 16:35
Show Gist options
  • Save fluxdigital/4f2383465decc171a9657d316a160a50 to your computer and use it in GitHub Desktop.
Save fluxdigital/4f2383465decc171a9657d316a160a50 to your computer and use it in GitHub Desktop.
adds a captcha to any form within a folder that doesn't have a captcha already
#add captcha to any form that doesn't have one already
$formsRootPath = "master:/sitecore/content/Wbsite1/forms/test"
$wffmFormTemplateId = "{FFB1DA32-2764-47DB-83B0-95B843546A7E}"
$wffmFieldTemplateId = "{C9E1BF85-800A-4247-A3A3-C3F5DFBFD6AA}"
$captchaFieldTemplateId = "{7FB270BE-FEFC-49C3-8CB4-947878C099E5}"
$captchaFieldName = "I'm not a Robot"
$captchFieldSortOrder = 1000
$updatedCount = 0
Write-Host "Getting List of Forms to add Captchas to from: $($formsRootPath)..."
$forms = Get-ChildItem -Path $formsRootPath -Recurse | Where-Object { $_.TemplateId -eq $wffmFormTemplateId }
foreach ($form in $forms) {
Write-Host "- checking form: $($form.Name) -" -ForegroundColor "yellow";
#get captcha fields in form
$fields = Get-ChildItem -Item $form
$captchaFields = $fields | Where-Object { $_.TemplateId -eq $wffmFieldTemplateId -and $_.Fields["Field Link"].value -eq $captchaFieldTemplateId }
#get the last field and add 100 to its sort position in order to make sure the captcha is the last field
$lastField = $fields | Select-Object -Last 1
if($lastField){
$lastFieldOrder = $lastField.Fields['__Sortorder'].value
$captchFieldSortOrder = [int]$lastFieldOrder + 100
#Write-Host "Last Field: $($lastField.Name) - $($lastField.Fields['__Sortorder'].value)"
#Write-Host "Captcha Sortorder: $($captchFieldSortOrder)"
}
#already a captcha on the form - don't add one
if ($captchaFields) {
Write-Host "captcha Exists, skipping form" -ForegroundColor "red"
}
#add a captcha
else {
Write-Host "adding captcha to form..." -ForegroundColor "green"
$captchaField = New-Item -Path $form.Paths.FullPath -Name $captchaFieldName -ItemType $wffmFieldTemplateId
$captchaField.Editing.BeginEdit()
$captchaField.Fields["Title"].value = $captchaFieldName
$captchaField.Fields["Field Link"].value = $captchaFieldTemplateId
$captchaField.Fields["Save"].value = "1"
$captchaField.Fields["Required"].value = "1"
$captchaField.Fields["Parameters"].value = "<CaptchaFontWarping>0</CaptchaFontWarping><BackgroundNoiseLevel>0</BackgroundNoiseLevel><LineNoiseLevel>0</LineNoiseLevel>"
$captchaField.Fields["Localized Parameters"].value = "<Text></Text>"
$captchaField.Fields["__Sortorder"].value = $captchFieldSortOrder
$captchaField.Editing.EndEdit()
Write-Host "captcha added with Sortorder: $($captchFieldSortOrder)"
$updatedCount ++
}
}
Write-Host "-Script Complete: $($updatedCount) forms updated -"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment