Add /bookmarks/new endpoint.

Change-Id: I903dbf5f918e1478fff82e5ebf6f3e3e2766572d
diff --git a/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js b/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js
index 25de54b..313268d 100644
--- a/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js
+++ b/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js
@@ -21,7 +21,16 @@
 
   focus() {
     let uriInput = this.shadowRoot.getElementById('uri-input');
-    uriInput.focus();
+    let titleInput = this.shadowRoot.getElementById('title-input');
+    let descriptionInput = this.shadowRoot.getElementById('description-input');
+
+    if (!uriInput.value) {
+      uriInput.focus();
+    } else if (!titleInput.value) {
+      titleInput.focus();
+    } else {
+      descriptionInput.focus();
+    }
   }
 
   async onUriBlur() {
@@ -54,25 +63,28 @@
     const template = html`
       <link rel="stylesheet" type="text/css" href="/cms2/base.css" />
 
-      <form class="pure-form pure-form-aligned" method="post">
+      <form class="pure-form pure-form-aligned" method="post" action="/bookmarks">
         <fieldset>
           <legend>New Bookmark</legend>
 
           <div class="pure-control-group">
             <label for="uri-input">URI:</label>
             <input name="uri" id="uri-input" type="text" placeholder="URI" required
-                   @blur=${this.onUriBlur.bind(this)}/>
+                   value=${this.getAttribute("uri") || ""}
+                   @blur=${this.onUriBlur.bind(this)} />
             <elix-progress-spinner id="uri-spinner" hidden></elix-progress-spinner>
           </div>
 
           <div class="pure-control-group">
             <label for="title-input">Title:</label>
-            <input name="title" id="title-input" type="text" placeholder="Title" required/>
+            <input name="title" id="title-input" type="text" placeholder="Title" required
+                   value="${this.getAttribute("title") || ""}" />
           </div>
 
           <div class="pure-control-group">
             <label for="description-input">Description:</label>
-            <textarea name="description" id="description-input" placeholder="Description"></textarea>
+            <textarea name="description" id="description-input" placeholder="Description"
+                >${this.getAttribute("description") || ""}</textarea>
           </div>
 
           <div class="pure-control-group">
diff --git a/src/main/resources/META-INF/resources/bookmarks/newBookmark.js b/src/main/resources/META-INF/resources/bookmarks/newBookmark.js
new file mode 100644
index 0000000..0594c67
--- /dev/null
+++ b/src/main/resources/META-INF/resources/bookmarks/newBookmark.js
@@ -0,0 +1,4 @@
+document.addEventListener('DOMContentLoaded', () => {
+  let bookmarkSubmissionForm = document.getElementById('bookmark-submission-form');
+  bookmarkSubmissionForm.focus();
+});
diff --git a/src/main/resources/templates/benki/bookmarks/newBookmark.html b/src/main/resources/templates/benki/bookmarks/newBookmark.html
new file mode 100644
index 0000000..cb3147d
--- /dev/null
+++ b/src/main/resources/templates/benki/bookmarks/newBookmark.html
@@ -0,0 +1,26 @@
+{@java.util.List<eu.mulk.mulkcms2.benki.bookmarks.Bookmark> bookmarks}
+{@java.lang.Boolean authenticated}
+
+{#include base.html}
+
+{#title}Benki Bookmarks{/title}
+{#siteSection}Bookmarks{/siteSection}
+{#bookmarksClass}this-page{/bookmarksClass}
+
+{#head}{/head}
+
+{#body}
+
+<script type="module" src="/bookmarks/MlkBookmarkSubmissionForm.js" defer></script>
+<script type="module" src="/bookmarks/newBookmark.js" defer></script>
+
+<mlk-bookmark-submission-form
+    id="bookmark-submission-form"
+    uri="{uri}"
+    title="{title}"
+    description="{description}">
+</mlk-bookmark-submission-form>
+
+{/body}
+
+{/include}