Fix typos
This commit is contained in:
parent
f36f8c7a7c
commit
411f4ee792
5 changed files with 27 additions and 27 deletions
|
@ -7,13 +7,13 @@ use crate::config::CustomField;
|
||||||
/// Fields of the contact form that persist after a redirection
|
/// Fields of the contact form that persist after a redirection
|
||||||
/// (example after failed server side validation).
|
/// (example after failed server side validation).
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
pub struct PersistantFieldContents {
|
pub struct PersistentFieldContents {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub email: String,
|
pub email: String,
|
||||||
pub custom: Vec<String>,
|
pub custom: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PersistantFieldContents {
|
impl PersistentFieldContents {
|
||||||
pub fn new_empty(custom_fields: &[CustomField]) -> Self {
|
pub fn new_empty(custom_fields: &[CustomField]) -> Self {
|
||||||
Self {
|
Self {
|
||||||
name: String::default(),
|
name: String::default(),
|
||||||
|
@ -29,7 +29,7 @@ pub struct ContactForm {
|
||||||
/// The id for the captcha.
|
/// The id for the captcha.
|
||||||
pub id: u16,
|
pub id: u16,
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub persistant_field_contents: PersistantFieldContents,
|
pub persistent_field_contents: PersistentFieldContents,
|
||||||
pub captcha_answer: String,
|
pub captcha_answer: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ impl ContactForm {
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
id,
|
id,
|
||||||
persistant_field_contents: PersistantFieldContents {
|
persistent_field_contents: PersistentFieldContents {
|
||||||
name,
|
name,
|
||||||
email,
|
email,
|
||||||
custom,
|
custom,
|
||||||
|
|
|
@ -11,7 +11,7 @@ use tracing::info;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
config::{Config, StateConfig},
|
config::{Config, StateConfig},
|
||||||
forms::PersistantFieldContents,
|
forms::PersistentFieldContents,
|
||||||
};
|
};
|
||||||
|
|
||||||
type ASmtpTransport = AsyncSmtpTransport<Tokio1Executor>;
|
type ASmtpTransport = AsyncSmtpTransport<Tokio1Executor>;
|
||||||
|
@ -66,14 +66,14 @@ impl Mailer {
|
||||||
/// Sends a mail with data from the contact form.
|
/// Sends a mail with data from the contact form.
|
||||||
pub async fn send(
|
pub async fn send(
|
||||||
&self,
|
&self,
|
||||||
persistant_field_contents: &PersistantFieldContents,
|
persistent_field_contents: &PersistentFieldContents,
|
||||||
config: &StateConfig,
|
config: &StateConfig,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let name = persistant_field_contents.name.trim().to_string();
|
let name = persistent_field_contents.name.trim().to_string();
|
||||||
let subject = config.strings.message_from.clone() + &name;
|
let subject = config.strings.message_from.clone() + &name;
|
||||||
let reply_to = Mailbox::new(
|
let reply_to = Mailbox::new(
|
||||||
Some(name),
|
Some(name),
|
||||||
persistant_field_contents
|
persistent_field_contents
|
||||||
.email
|
.email
|
||||||
.parse()
|
.parse()
|
||||||
.context("Failed to parse the email from the form to an address!")?,
|
.context("Failed to parse the email from the form to an address!")?,
|
||||||
|
@ -82,16 +82,16 @@ impl Mailer {
|
||||||
let default_fields_content = format!(
|
let default_fields_content = format!(
|
||||||
"{}: {}\n\n{}: {}\n\n\n",
|
"{}: {}\n\n{}: {}\n\n\n",
|
||||||
config.strings.name_field.label,
|
config.strings.name_field.label,
|
||||||
persistant_field_contents.name,
|
persistent_field_contents.name,
|
||||||
config.strings.email_field.label,
|
config.strings.email_field.label,
|
||||||
persistant_field_contents.email
|
persistent_field_contents.email
|
||||||
);
|
);
|
||||||
let body = config
|
let body = config
|
||||||
.custom_fields
|
.custom_fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| &field.label)
|
.map(|field| &field.label)
|
||||||
.zip(
|
.zip(
|
||||||
persistant_field_contents
|
persistent_field_contents
|
||||||
.custom
|
.custom
|
||||||
.iter()
|
.iter()
|
||||||
.map(|content| content.trim()),
|
.map(|content| content.trim()),
|
||||||
|
|
|
@ -14,7 +14,7 @@ use crate::{
|
||||||
captcha_solutions::CaptchaSolutions,
|
captcha_solutions::CaptchaSolutions,
|
||||||
config::StateConfig,
|
config::StateConfig,
|
||||||
errors::AppError,
|
errors::AppError,
|
||||||
forms::{ContactForm, PersistantFieldContents},
|
forms::{ContactForm, PersistentFieldContents},
|
||||||
mailer::Mailer,
|
mailer::Mailer,
|
||||||
templates,
|
templates,
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ use crate::{
|
||||||
pub struct ContactFormParams<'a> {
|
pub struct ContactFormParams<'a> {
|
||||||
config: Arc<StateConfig>,
|
config: Arc<StateConfig>,
|
||||||
captcha_solutions: Arc<Mutex<CaptchaSolutions>>,
|
captcha_solutions: Arc<Mutex<CaptchaSolutions>>,
|
||||||
persistant_field_contents: Option<PersistantFieldContents>,
|
persistent_field_contents: Option<PersistentFieldContents>,
|
||||||
error_message: Option<&'a str>,
|
error_message: Option<&'a str>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,12 +43,12 @@ pub fn render_contact_form(params: ContactFormParams<'_>) -> Result<Response, Ap
|
||||||
lang: ¶ms.config.lang,
|
lang: ¶ms.config.lang,
|
||||||
path_prefix: ¶ms.config.path_prefix,
|
path_prefix: ¶ms.config.path_prefix,
|
||||||
},
|
},
|
||||||
was_validated: params.persistant_field_contents.is_some(),
|
was_validated: params.persistent_field_contents.is_some(),
|
||||||
id,
|
id,
|
||||||
// Default is empty fields.
|
// Default is empty fields.
|
||||||
persistant_field_contents: params
|
persistent_field_contents: params
|
||||||
.persistant_field_contents
|
.persistent_field_contents
|
||||||
.unwrap_or_else(|| PersistantFieldContents::new_empty(¶ms.config.custom_fields)),
|
.unwrap_or_else(|| PersistentFieldContents::new_empty(¶ms.config.custom_fields)),
|
||||||
captcha: captcha_base64,
|
captcha: captcha_base64,
|
||||||
error_message: params.error_message.unwrap_or_default(),
|
error_message: params.error_message.unwrap_or_default(),
|
||||||
strings: ¶ms.config.strings,
|
strings: ¶ms.config.strings,
|
||||||
|
@ -68,7 +68,7 @@ pub async fn index(
|
||||||
render_contact_form(ContactFormParams {
|
render_contact_form(ContactFormParams {
|
||||||
config,
|
config,
|
||||||
captcha_solutions,
|
captcha_solutions,
|
||||||
persistant_field_contents: None,
|
persistent_field_contents: None,
|
||||||
error_message: None,
|
error_message: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -93,18 +93,18 @@ pub async fn submit(
|
||||||
return render_contact_form(ContactFormParams {
|
return render_contact_form(ContactFormParams {
|
||||||
config: Arc::clone(&config),
|
config: Arc::clone(&config),
|
||||||
captcha_solutions,
|
captcha_solutions,
|
||||||
persistant_field_contents: Some(form.persistant_field_contents),
|
persistent_field_contents: Some(form.persistent_field_contents),
|
||||||
error_message: Some(&config.strings.error_messages.captcha_error),
|
error_message: Some(&config.strings.error_messages.captcha_error),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(e) = mailer.send(&form.persistant_field_contents, &config).await {
|
if let Err(e) = mailer.send(&form.persistent_field_contents, &config).await {
|
||||||
error!("{e:?}");
|
error!("{e:?}");
|
||||||
|
|
||||||
return render_contact_form(ContactFormParams {
|
return render_contact_form(ContactFormParams {
|
||||||
config: Arc::clone(&config),
|
config: Arc::clone(&config),
|
||||||
captcha_solutions,
|
captcha_solutions,
|
||||||
persistant_field_contents: Some(form.persistant_field_contents),
|
persistent_field_contents: Some(form.persistent_field_contents),
|
||||||
error_message: Some(&config.strings.error_messages.email_error),
|
error_message: Some(&config.strings.error_messages.email_error),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ use askama::Template;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
config::{self, CustomField},
|
config::{self, CustomField},
|
||||||
forms::PersistantFieldContents,
|
forms::PersistentFieldContents,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Base template.
|
/// Base template.
|
||||||
|
@ -18,14 +18,14 @@ pub struct ContactForm<'a> {
|
||||||
pub base: Base<'a>,
|
pub base: Base<'a>,
|
||||||
pub was_validated: bool,
|
pub was_validated: bool,
|
||||||
pub id: u16,
|
pub id: u16,
|
||||||
pub persistant_field_contents: PersistantFieldContents,
|
pub persistent_field_contents: PersistentFieldContents,
|
||||||
pub captcha: String,
|
pub captcha: String,
|
||||||
pub error_message: &'a str,
|
pub error_message: &'a str,
|
||||||
pub strings: &'a config::Strings,
|
pub strings: &'a config::Strings,
|
||||||
pub custom_fields: &'a Vec<CustomField>,
|
pub custom_fields: &'a Vec<CustomField>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sucessful contact form submission template.
|
/// Successful contact form submission template.
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "success.askama.html")]
|
#[template(path = "success.askama.html")]
|
||||||
pub struct Success<'a> {
|
pub struct Success<'a> {
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<label for="name" class="form-label">{{ strings.name_field.label }}</label>
|
<label for="name" class="form-label">{{ strings.name_field.label }}</label>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="name"
|
name="name"
|
||||||
value="{{ persistant_field_contents.name }}"
|
value="{{ persistent_field_contents.name }}"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="exampleInputEmail1"
|
id="exampleInputEmail1"
|
||||||
required>
|
required>
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
<label for="email" class="form-label">{{ strings.email_field.label }}</label>
|
<label for="email" class="form-label">{{ strings.email_field.label }}</label>
|
||||||
<input type="email"
|
<input type="email"
|
||||||
name="email"
|
name="email"
|
||||||
value="{{ persistant_field_contents.email }}"
|
value="{{ persistent_field_contents.email }}"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="email"
|
id="email"
|
||||||
required>
|
required>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
{% for custom_field in custom_fields %}
|
{% for custom_field in custom_fields %}
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
{% let value = persistant_field_contents.custom[loop.index0] %}
|
{% let value = persistent_field_contents.custom[loop.index0] %}
|
||||||
{% let required = custom_field.required_feedback.is_some() %}
|
{% let required = custom_field.required_feedback.is_some() %}
|
||||||
|
|
||||||
<label for="{{ custom_field.key }}" class="form-label">{{ custom_field.label }}</label>
|
<label for="{{ custom_field.key }}" class="form-label">{{ custom_field.label }}</label>
|
||||||
|
|
Loading…
Reference in a new issue