newFolder.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <html>
  2. <head>
  3. <title>New Folder Creation Utility</title>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no">
  6. <link rel="stylesheet" href="../../script/tocas/tocas.css">
  7. <link rel="stylesheet" href="../../script/ao.css">
  8. <script type="text/javascript" src="../../script/tocas/tocas.js"></script>
  9. <script type="text/javascript" src="../../script/jquery.min.js"></script>
  10. <script type="text/javascript" src="../../script/ao_module.js"></script>
  11. <style>
  12. body{
  13. background-color:#fafafa;
  14. }
  15. .themebackground{
  16. background-color:#f2f2f2 !important;
  17. color:#2e2e2e !important;
  18. }
  19. .toolicon{
  20. position:absolute;
  21. top:30px;
  22. left:30px;
  23. height:60px;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div class="ts heading fluid slate themebackground" style="padding-left:120px; margin-bottom:12px;">
  29. <span class="header">New Folder</span>
  30. <span class="description">Create a new folder with the given name.</span>
  31. </div>
  32. <img class="toolicon" src="img/new folder.png"></img>
  33. <div class="ts container">
  34. <div class="ts horizontal form">
  35. <div class="field">
  36. <label>Folder Name</label>
  37. <input id="fname" type="text" onkeyup="checkvalid(event);">
  38. <small id="tips"></small>
  39. </div>
  40. </div><br><br>
  41. <div align="right" style="width:100%;">
  42. <button class="ts button" onclick="ao_module_close();">Cancel</button>
  43. <button id="createBtn" class="ts primary button" onclick="createFolder();">Create</button>
  44. </div>
  45. </div>
  46. <script>
  47. var existingFilelist = ao_module_loadInputFiles();
  48. var filenameList = [];
  49. var pathInfo = existingFilelist[0].filepath.split("/");
  50. pathInfo.pop();
  51. var vsrc = pathInfo.join("/") + "/";
  52. var format = /[`!@#$%^&*_+\-=\[\]{};':"\\|,.<>\/?~]/;
  53. for (var i =0; i < existingFilelist.length; i++){
  54. filenameList.push(existingFilelist[i].filename);
  55. }
  56. ao_module_setFixedWindowSize();
  57. //Generate a default new folder name for this
  58. var newFolderName = "New Folder";
  59. var counter = 1;
  60. while (filenameList.includes(newFolderName)){
  61. newFolderName = `New Folder (${counter})`;
  62. counter++;
  63. }
  64. //Update the default value
  65. $("#fname").val(newFolderName);
  66. function checkvalid(event){
  67. var fname = $("#fname").val();
  68. if (filenameList.includes(fname)){
  69. $("#fname").parent().addClass("error");
  70. $("#fname").parent().removeClass("warning");
  71. $("#tips").text("A folder with the same name already exists.");
  72. $("#createBtn").addClass('disabled');
  73. }else if (format.test(fname)){
  74. $("#fname").parent().addClass("warning");
  75. $("#fname").parent().removeClass("error");
  76. $("#tips").text("Do not use special characters like & # * [ ] / or \\ in the folder name.");
  77. $("#createBtn").addClass('disabled');
  78. }else if (fname.trim() == ""){
  79. $("#fname").parent().removeClass("error");
  80. $("#fname").parent().removeClass("warning");
  81. $("#createBtn").addClass('disabled');
  82. }else{
  83. $("#fname").parent().removeClass("warning");
  84. $("#fname").parent().removeClass("error");
  85. $("#createBtn").removeClass('disabled');
  86. }
  87. if (event.which == 13){
  88. //Enter key
  89. createFolder();
  90. }
  91. }
  92. function createFolder(){
  93. var foldername = $("#fname").val().trim();
  94. //Create a folder via file system api
  95. $.post("../../system/file_system/newItem",{type: "folder", src: vsrc, filename: foldername}).done(function(data){
  96. if (data.error !== undefined){
  97. console.log(data.error);
  98. }else{
  99. parent.refresh();
  100. ao_module_close();
  101. }
  102. });
  103. }
  104. </script>
  105. </body>
  106. </html>