<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link
      rel="stylesheet"
      href="https://assets.cantorgymnasium.de/fonts/mdi/v7/css/materialdesignicons.min.css"
    />
    <link
      rel="stylesheet"
      href="https://assets.cantorgymnasium.de/static-cms/v4/main.css"
    />
    <title>Static CMS</title>
  </head>
  <body>
    <script src="https://assets.cantorgymnasium.de/static-cms/v4/static-cms-app.js"></script>
    <script type="module">
      import config from "./config/index.js";
      // imports
      import {
        AboutPreview,
        BlogPreview,
        ContestPreview,
        PagePreview,
        EventPreview,
        AnmeldungPreview,
        HeaderPreview,
        ChronikPreview,
        KontaktPreview,
        AnmeldeformularPreview,
        ChronikIndexPreview,
        AuthorPreview,
        FormsPreview,
        CantorpreisPreview,
        ProjektwochePreview,
        AbiturientenPreview,
        PreviewStyles,
      } from "./previews/page-previews/index.js";
      import {
        BooleanPreview,
        DraftPreview,
        CountPreview,
        BodyPreview,
        DatePreview,
      } from "./previews/field-previews/index.js";
      import {
        GalleryShortcode,
        ImageShortcode,
        DownloadShortcode,
        CardShortcode,
        YoutubeShortcode,
        AudioShortcode,
        SliderShortcode,
        VideoShortcode,
      } from "./shortcodes/index.js";
      import { StatusPage, WikiLink } from "./links/index.js";
      import Icons from "./icons.js";

      // cms initialization
      CMS.init({ config });

      // preview templates
      CMS.registerPreviewTemplate("about-index", AboutPreview);
      CMS.registerPreviewTemplate("blog", BlogPreview);
      CMS.registerPreviewTemplate("wettbewerbe", ContestPreview);
      CMS.registerPreviewTemplate("kontakt", KontaktPreview);
      CMS.registerPreviewTemplate("termine", EventPreview);
      CMS.registerPreviewTemplate("anmeldung-index", AnmeldungPreview);
      CMS.registerPreviewTemplate("chronikjahre", ChronikPreview);
      CMS.registerPreviewTemplate("anmeldeformular", AnmeldeformularPreview);
      CMS.registerPreviewTemplate("schulchronik-index", ChronikIndexPreview);
      CMS.registerPreviewTemplate("author", AuthorPreview);
      CMS.registerPreviewTemplate("forms", FormsPreview);
      CMS.registerPreviewTemplate("cantorpreis", CantorpreisPreview);
      CMS.registerPreviewTemplate("begabte", ContestPreview);
      ["projektwoche", "superhaufen", "ganztagsangebote-index"].forEach((page) =>
        CMS.registerPreviewTemplate(page, ProjektwochePreview)
      );
      ["abiturienten", "cantorfora"].forEach((page) =>
        CMS.registerPreviewTemplate(page, AbiturientenPreview)
      );
      [
        "blog-index",
        "cantorpreis-index",
        "forms-index",
        "wettbewerbe-index",
        "begabte-index",
        "abiturienten-index",
        "projektwoche-index",
        "author-index",
      ].forEach((page) => CMS.registerPreviewTemplate(page, HeaderPreview));
      [
        "abiturienten",
        "cantorfora-index",
        "pages",
        "anmeldeformular",
        "schulchronik-index",
        "chronikseiten",
      ].forEach((page) => CMS.registerPreviewTemplate(page, PagePreview));

      PreviewStyles.forEach((url) => {
        CMS.registerPreviewStyle(url);
      });

      //shortcodes
      CMS.registerShortcode("gallery", GalleryShortcode);
      CMS.registerShortcode("image", ImageShortcode);
      CMS.registerShortcode("download", DownloadShortcode);
      CMS.registerShortcode("card", CardShortcode);
      CMS.registerShortcode("youtube", YoutubeShortcode);
      CMS.registerShortcode("audio", AudioShortcode);
      CMS.registerShortcode("slider", SliderShortcode);
      CMS.registerShortcode("video", VideoShortcode);

      // links
      CMS.registerAdditionalLink(StatusPage);
      CMS.registerAdditionalLink(WikiLink);

      // icons
      Icons.forEach((i) => CMS.registerIcon(i.name, i.icon));

      // field previews
      CMS.registerFieldPreview("author", "active", BooleanPreview);
      CMS.registerFieldPreview("author", "simplified", BooleanPreview);
      CMS.registerFieldPreview("blog", "date", DatePreview);
      CMS.registerFieldPreview("chronikjahre", "topics", CountPreview);
      ["projektwoche", "superhaufen"].forEach((collection) =>
        CMS.registerFieldPreview(collection, "tiles", CountPreview)
      );
      [
        "forms",
        "blog",
        "cantorpreis",
        "pages",
        "wettbewerbe",
        "begabte",
        "projektwoche",
        "chronikjahre",
        "abiturienten",
        "superhaufen",
        "cantorfora",
        "chronikseiten",
      ].forEach((collection) =>
        CMS.registerFieldPreview(collection, "draft", DraftPreview)
      );
      [
        "blog",
        "author",
        "chronikseiten",
        "pages",
        "cantorpreis",
        "begabte",
      ].forEach((collection) =>
        CMS.registerFieldPreview(collection, "body", BodyPreview)
      );
      [
        "cantorpreis-index",
        "wettbewerbe-index",
        "abiturienten-index",
        "pages",
        "projektwoche",
        "cantorfora",
        "blog-index",
        "about-index",
        "anmeldung-index",
        "kontakt",
        "termine",
        "forms-index",
        "ganztagsangebote-index",
        "begabte-index",
        "projektwoche-index",
      ].forEach((collection) =>
        CMS.registerFieldPreview(collection, "description", BodyPreview)
      );
      ["chronikseiten", "blog"].forEach((collection) =>
        CMS.registerFieldPreview(collection, "title", BodyPreview)
      );

      // access control
      CMS.registerEventListener({
        name: "login",
        handler: ({ author: { login, name } }) => {
          const adminUsers = [
            "Tramus00",
            "denyskon",
            "gfelke",
            "lberthold",
            "cschapitz",
            "bgorsler",
            "tmesse",
            "spflug",
            "fberner"
          ];
          if (login && !adminUsers.includes(login)) {
            alert(
              "Sie sind nicht berechtigt, diese Seite aufzurufen. Sie werden nun zur Startseite weitergeleitet."
            );
            location.href = "/";
          } else {
            console.log("Willkommen im Admin-Bereich!")
          }
        },
      });
    </script>
  </body>
</html>