@use plume_models::instance::Instance;
@use validator::ValidationErrors;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::instance::InstanceSettingsForm;
@use crate::routes::*;

@(ctx: BaseContext, instance: Instance, form: InstanceSettingsForm, errors: ValidationErrors)

@:base(ctx, i18n!(ctx.1, "Administration of {0}"; instance.name.clone()), {}, {}, {
  <h1>@i18n!(ctx.1, "Administration")</h1>

  @tabs(&[
    (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), true),
    (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), false),
    (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), false),
    (&uri!(instance::admin_email_blocklist: page=_).to_string(), i18n!(ctx.1, "Email blocklist"), false)
  ])

  <form method="post" action="@uri!(instance::update_settings)">
    @(Input::new("name", i18n!(ctx.1, "Name"))
        .default(&form.name)
        .error(&errors)
        .set_prop("minlength", 1)
        .html(ctx.1))

    <label for="open_registrations">
      <input type="checkbox" name="open_registrations" id="open_registrations" @if instance.open_registrations { checked }>
      @i18n!(ctx.1, "Allow anyone to register here")
    </label>

      <label for="short_description">@i18n!(ctx.1, "Short description")<small>@i18n!(ctx.1, "Markdown syntax is supported")</small></label>
      <textarea id="short_description" name="short_description">@Html(form.short_description)</textarea>

      <label for="long_description">@i18n!(ctx.1, "Long description")<small>@i18n!(ctx.1, "Markdown syntax is supported")</small></label>
      <textarea id="long_description" name="long_description">@Html(form.long_description)</textarea>

      @(Input::new("default_license", i18n!(ctx.1, "Default article license"))
        .default(&form.default_license)
        .error(&errors)
        .set_prop("minlength", 1)
        .html(ctx.1))

      <input type="submit" value="@i18n!(ctx.1, "Save these settings")"/>
  </form>
})