Releases: relativtwebb/relativt-formular
Releases · relativtwebb/relativt-formular
Release list
v1.2.0
Nytt
- Fälttypen URL. Renderas som
<input type="url">(rätt tangentbord på
mobil, webbläsarens inbyggda formathjälp) och valideras/normaliseras
server- och klientsidan precis som e-post och telefon: saknas schemat
läggshttps://på automatiskt, så "linkedin.com/in/namn" sparas som en
riktig, klickbar länk i stället för en trasig relativ sådan. - URL-fält renderas som en klickbar länk i notismejlet. Tidigare skrevs
alla fältvärden ut som ren text i mailet – ett URL-fält blir nu en
<a href>istället, så mottagaren kan klicka sig rakt till t.ex. en
kandidats LinkedIn-profil. - Ny publik metod
normalize_url(), samma mönster somnormalize_phone().
Speglad irelativt-formular.jssomnormalizeUrl().
Tester
- 208 serverassertions (från 195). Nytt: normalisering av giltiga och
ogiltiga webbadresser (saknat schema, tom host, ren text) samt att
URL-fält faktiskt renderas som<a href>i mailkroppen.
v1.1.3
Rättat
- Fälttypen Dolt fält skickades aldrig med i inskicket. Fältet
renderades korrekt med sitt värde (t.ex. från ett shortcode-attribut),
men nyttolasten hoppade över alla fält med dold wrapper – skyddet som
finns för att villkorsdolda fält inte ska skickas träffade även typen
Dolt fält, som bär samma hidden-attribut. Värdet nådde därför aldrig
mail, ämnesrad, inskicksvy eller CSV. Nu avgör enbart fältets villkor
om det deltar i inskicket. Buggen har funnits sedan 1.0.0.
Tester
- 195 serverassertions och 88 webbläsartester. Testformuläret har nu ett
dolt fält med värde satt via shortcode-attribut, och regressionen täcks
i båda leden: värdet valideras, når ämnesraden och skickas från riktig
webbläsare.
v1.1.2
Ändrat – standardutseendet, SYNS på sajterna
Standard-CSS:en har städats utifrån verklig användning på kundsajt. Sajter
som förlitat sig på de gamla standardvärdena ser skillnad efter
uppdateringen:
- Skicka-knappen är innehållsbred på desktop; full bredd först under
768px. Alltid full bredd =width: 100%från sajtens CSS. - Ingen
!importanti utseende-regler. Sajtens CSS vinner nu med
vanlig specificitet. Kvar bara i funktionsregler som aldrig ska stylas:
honungsfällans döljning, villkorsdolda fält, fälttypen Dolt fält,
builder-läget och reducerad rörelse. - Typografiska tyckanden borttagna: ingen
text-transform: uppercase
och ingenletter-spacingpå etiketter och knapp – formuläret ärver
sajtens typografi rakt av. Variabeln--xf-label-spacingär borttagen.
Knappens textstorlek följer--xf-input-sizei stället för hårdkodade
14px. - Kryssrutor centreras mot sin text (radioalternativ toppjusteras som
förut, eftersom deras etiketter kan vara långa), plus en justering för
Oxygen-teman som ritar egen bock med::after.
v1.1.1
Nytt
- Tack-sida per formulär. Nytt fält "Tack-sida (URL)" under fliken
Texter: fylls det i skickas besökaren dit efter lyckat inskick i stället
för att tack-rutan visas – gjort för konverteringsspårning i GA4/Ads.
Kan även sättas som sajtgemensamt standardvärde; formulärets eget värde
vinner. Följer med i export/import. Knappen behåller "Skickar…" tills
sidbytet sker, så dubbelinskick inte hinner ske.
Dokumentation
- Nytt README-avsnitt Tidszon: tidsstämplarna följer sajtens
tidszonsinställning, precis som resten av WordPress. Rätt datum men fel
klockslag betyder att sajten står kvar på UTC (standard på en ny
installation) – ställ Inställningar → Allmänt → Tidszon till Stockholm.
Tester
- 192 serverassertions och 86 webbläsartester; tack-sidans hela väg från
inställning till omdirigering testas i riktig webbläsare.
v1.1.0
Rättat
- Uppdateraren pekade på ett repo som inte finns (
relativt/…i stället
förrelativtwebb/…), så kundsajter erbjöds aldrig några uppdateringar.
Samma URL rättad i pluginheadern och readme.txt. - Tidsspärren åt riktiga inskick. Ett inskick inom tre sekunder fick
fejkad succé – besökaren såg "Tack!" men inget skickades och inget sparades.
Med webbläsarens autofyll var det fullt möjligt att vara så snabb. Spärren
svarar nu med ett mjukt fel (425, kodtoofast) som JS tyst gör om efter
väntetiden; besökaren märker ingenting, boten får ett fel i stället för en
succé. - Tack-rutan har
tabindex="-1"så att fokusflytten vid tack-läget faktiskt
sker – tidigare varfocus()en tyst no-op och skärmläsare lämnades kvar i
det dolda formuläret. - Export och import ger ett begripligt besked i stället för en vit sida när
ACF Pro saknas. - Datumvalideringen använder
checkdate()–2026-13-45matchade tidigare
mönstret och släpptes igenom. - Gallringen tömmer hela backloggen i batchar i stället för att stanna vid
200 inskick per formulär och dygn.
Säkerhet
- CSV-exporten skyddar mot formelinjektion: celler som börjar med
=,+,
-eller@prefixas med apostrof så att Excel läser dem som text. - Nytt filter
relativt_form_client_ipför sajter bakom Cloudflare/proxy –
utan det delade alla besökare proxyns IP och därmed samma frekvensspärr. - Ny länkspärr: textrutor med fler än tre länkar avvisas (filtret
relativt_form_max_linksjusterar taket,0stänger av). Speglad i JS.
Nytt
- Kampanjkakan respekterar samtycke. Finns Relativt Cookie Consent på
sajten skrivsxf_srcförst när besökaren godkänt statistik eller
marknadsföring, tas bort vid återkallat samtycke, och skrivs i efterhand
när samtycket kommer. Utan samtyckesverktyg är beteendet som i 1.0.
Filtretrelativt_form_utm_cookie(auto/always/never) styr. - Hjälptext per fält i byggaren – renderaren stödde den redan, nu finns
fältet. Följer med i export/import. - Varning i formulär- och inskicksvyerna när mail inte kunnat skickas, med
länk till de drabbade inskicken (?xf_mail=failed). - Alla besökartexter kan bytas via filtret
relativt_form_messages– samma
lista driver PHP och JS, så klient och server säger alltid samma sak. - Uppdateraren skickar med
requires_php, så en framtida version med högre
PHP-krav inte erbjuds servrar som inte klarar den. - Utgången nonce gör om inskicket automatiskt med ny token i stället för att
be besökaren trycka igen.
Tillgänglighet
- Fel kopplas till fältet med
aria-invalidocharia-describedby(även
hjälptexten), val-knapps- och radiogrupper får sitt namn via
aria-labelledby, flervalsgrupperrole="group", och obligatoriska
flervalsgrupper valideras nu även i klienten viadata-xf-required.
Byggkedjan
release.ymlkräver att taggen matchar Version-headern, konstanten
RELATIVT_FORM_VERSIONochStable tagi readme.txt. Klasskonstanten
Relativt_Form::VERSIONär borttagen – huvudfilens konstant är enda källan,
och det är den som cache-bustar CSS/JS.
Tester
- 187 serverassertions (från 146) och 82 webbläsartester (från 64). Nytt:
hela REST-inskicksflödet körs rakt igenom i riggen (honungsfälla, nonce,
signatur, tidsspärr, frekvensspärr, lagring, mail), den tysta omsändningen
och samtyckeslägena testas i riktig webbläsare, och definitionscachen kan
tömmas så att testerna mäter koden i stället för cachen.
v1.0.0
Första releasen.
Ingår
- Formulärbyggare i wp-admin byggd på ACF Pro. Varje formulär får en egen
shortcode, och shortcode-attribut kan förvälja värden per sida. - Villkorliga fält som utvärderas på servern, så att formuläret ser likadant
ut med och utan JavaScript. - Mottagarregler som träffar på både etikett och tekniskt värde.
- Validering av e-post och telefon, spegelvänd mellan PHP och JavaScript.
- Spamskydd utan CAPTCHA: honungsfälla, HMAC-signerad tidsstämpel med minsta
tid, och frekvensspärr per IP. - UTM-attribution via förstapartskaka.
- Inskickslagring med konfigurerbar gallring och CSV-export.
- Export och import av formulärdefinitioner som JSON, med vitlistad import.
- Inställningssida för globala standardvärden som nya formulär ärver.
- Uppdateringar från publikt GitHub-repo, direkt i wp-admin.
- Filter för att skjuta in temats egna knappklasser och byta eller ta bort
knappikonen. - Admin-notis när ACF Pro saknas, i stället för att ingenting händer.
uninstall.phpsom medvetet inte raderar data utan att bli tillsagd.
Tester
- 146 serverassertions och 64 webbläsartester, alla gröna.