A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

62 lines
1.7 KiB

  1. {{define "import"}}
  2. {{template "header" .}}
  3. <style>
  4. input[type=file] {
  5. padding: 0;
  6. font-size: 0.86em;
  7. display: block;
  8. margin: 0.5rem 0;
  9. }
  10. label {
  11. display: block;
  12. margin: 1em 0;
  13. }
  14. </style>
  15. <div class="snug content-container">
  16. <h1 id="import-header">Import posts</h1>
  17. {{if .Message}}
  18. <div class="alert {{if .InfoMsg}}info{{else}}success{{end}}">
  19. <p>{{.Message}}</p>
  20. </div>
  21. {{end}}
  22. {{if .Flashes}}
  23. <ul class="errors">
  24. {{range .Flashes}}<li class="urgent">{{.}}</li>{{end}}
  25. </ul>
  26. {{end}}
  27. <p>Publish plain text or Markdown files to your account by uploading them below.</p>
  28. <div class="formContainer">
  29. <form id="importPosts" class="prominent" enctype="multipart/form-data" action="/api/me/import" method="POST">
  30. <label>Select some files to import:
  31. <input id="fileInput" class="fileInput" name="files" type="file" multiple accept="text/markdown, text/plain"/>
  32. </label>
  33. <input id="fileDates" name="fileDates" hidden/>
  34. <label>
  35. Import these posts to:
  36. <select name="collection">
  37. {{range $i, $el := .Collections}}
  38. <option value="{{.Alias}}" {{if eq $i 0}}selected{{end}}>{{.DisplayTitle}}</option>
  39. {{end}}
  40. <option value="">Drafts</option>
  41. </select>
  42. </label>
  43. <script>
  44. const fileInput = document.getElementById('fileInput');
  45. const fileDates = document.getElementById('fileDates');
  46. fileInput.addEventListener('change', (e) => {
  47. const files = e.target.files;
  48. let dateMap = {};
  49. for (let file of files) {
  50. dateMap[file.name] = file.lastModified / 1000;
  51. }
  52. fileDates.value = JSON.stringify(dateMap);
  53. })
  54. </script>
  55. <input type="submit" value="Import" />
  56. </form>
  57. </div>
  58. </div>
  59. {{template "footer" .}}
  60. {{end}}