ustore.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. //delete = delets from DB
  2. //remove = removes from HTML
  3. //save = save to DB
  4. //add = changes HTML
  5. //get = get from DB
  6. //new = changes HTML
  7. //CrossSiteReference needed for WAS
  8. var test = {};
  9. var ref = $(test);
  10. $(document).on('change', '#selectfolders', function(e) {
  11. //getFolders(this.options[e.target.selectedIndex].text);
  12. listFolders(this.options[e.target.selectedIndex].text);
  13. });
  14. function listFolders(folder = ""){
  15. $('#Folders').text("");
  16. $('#CurFolder').text("");
  17. getAllFolders();
  18. if(folder != "" && folder != "." && folder != ".."){
  19. $("#selectfolders").val(folder);
  20. }
  21. else{
  22. $("#selectfolders").val(".");
  23. }
  24. $.ajax({
  25. type: "GET",
  26. url: "../server/folders/" + folder,
  27. dataType: "json",
  28. success: function(data) {
  29. if(folder != "" && folder != "." && folder != ".."){
  30. var clone = document.importNode(document.querySelector('#cpyFolder').content,true);
  31. $('[data-class=text]',clone).text("..");
  32. $('[data-class=link]',clone).attr('onclick','listFolders("' + folder.substr(0, folder.lastIndexOf("/")) + '")');
  33. $('#Folders').append(clone);
  34. }
  35. $.each( data, function( key, value ) {
  36. var clone = document.importNode(document.querySelector('#cpyFolder').content,true);
  37. //remove /
  38. value = value.slice(0,-1)
  39. $('[data-class=text]',clone).text(value);
  40. if(folder == ""){
  41. $('[data-class=link]',clone).attr('onclick','listFolders("' + value + '")');
  42. }
  43. else{
  44. $('[data-class=link]',clone).attr('onclick','listFolders("' + folder + "/" + value + '")');
  45. }
  46. $('#Folders').append(clone);
  47. });
  48. //new Folder
  49. var clone = document.importNode(document.querySelector('#cpyFolderNew').content,true);
  50. $('[data-class=text]',clone).text("+");
  51. $('[data-class=link]',clone).attr('onclick','createFolder("' + folder + '")');
  52. $('#Folders').append(clone);
  53. }
  54. });
  55. listData(folder)
  56. }
  57. function createFolder(folder = ""){
  58. var newFolder = window.prompt("Please enter a folder name.","");
  59. if (newFolder != null && newFolder != "") {
  60. $.ajax({
  61. type: "Post",
  62. url: "../server/folders/" + folder + "/" + newFolder,
  63. success: function(res) {
  64. listFolders(folder)
  65. }
  66. });
  67. }
  68. }
  69. function deleteFolder(datalink) {
  70. if (datalink != "" && datalink != "." && datalink != ".." && confirm('Deleting ' + datalink)) {
  71. $.ajax({
  72. type: "DELETE",
  73. url: "../server/folders/" + datalink,
  74. success: function(res) {
  75. listFolders(datalink.substr(0, datalink.lastIndexOf("/")))
  76. }
  77. });
  78. }
  79. }
  80. function listData(folder = ""){
  81. $('#Data').text("");
  82. const imageext = ["png", "jpg", "svg"]
  83. const movieext = ["mp4"]
  84. $('#imgUpload').attr("action", "../server/data/" + folder);
  85. $.ajax({
  86. type: "GET",
  87. url: "../server/images/" + folder,
  88. dataType: "json",
  89. success: function(data) {
  90. $.each( data, function( key, value ) {
  91. var ext = value.substr(value.lastIndexOf('.') + 1);
  92. if(folder == ""){
  93. fullfolder = value
  94. }
  95. else{
  96. fullfolder = folder + "/" + value;
  97. }
  98. var clone = document.importNode(document.querySelector('#DataItem').content,true);
  99. $('[data-class=name]',clone).text(value);
  100. //Image
  101. if(imageext.includes(ext)){
  102. $('[data-class=image]',clone).append("<img src='./../storage/"+ fullfolder + "' alt=''>")
  103. }
  104. else if(movieext.includes(ext)){
  105. $('[data-class=image]',clone).append("<div class='imageAlternative' style='padding-top: 0.12em;'>▶</div>")
  106. }
  107. else{
  108. $('[data-class=image]',clone).append("<div class='imageAlternative'>🗎</div>")
  109. }
  110. $('[data-class=image]',clone).attr('onclick',"overlayOn('" + fullfolder + "')");
  111. $('[data-class=inspect]',clone).attr('href','../storage/' + fullfolder + '');
  112. $('[data-class=delete]',clone).attr('href','javascript:deleteData("' + fullfolder + '");');
  113. $('[data-class=getLink]',clone).attr('href','javascript:copy2Clipboard("' + fullfolder + '");');
  114. var queryString = window.location.search;
  115. var urlParams = new URLSearchParams(queryString);
  116. if(urlParams.has('iframe')){
  117. $('[data-class=eventTrigger]',clone).css("visibility", "visible")
  118. $('[data-class=eventTrigger]',clone).attr('href','javascript:triggerEvent("' + fullfolder + '");');
  119. console.log("I am an Iframe")
  120. }
  121. $('#Data').append(clone);
  122. });
  123. }
  124. });
  125. if(folder != "" && folder != "." && folder != ".."){
  126. $('#RemoveFolder').css("display", "block")
  127. $('#removeFolderLink').attr('href','javascript:deleteFolder("' + folder + '");');
  128. }
  129. else{
  130. $('#RemoveFolder').css("display", "none")
  131. }
  132. }
  133. function triggerEvent(data) {
  134. //get url
  135. var datalink = new URL("../storage/" + data, document.baseURI).href;
  136. ref = $(test);
  137. setTimeout(function(){
  138. ref.triggerHandler('getUrl', {"url": datalink});
  139. },500);
  140. }
  141. function overlayOn(data) {
  142. var url = new URL("../storage/" + data, document.baseURI).href
  143. document.getElementById("overlay").style.display = "block";
  144. const imageext = ["png", "jpg", "svg"]
  145. const movieext = ["mp4"]
  146. var ext = url.substr(url.lastIndexOf('.') + 1);
  147. if(imageext.includes(ext)){
  148. $('#overlaycontentsize').append("<img id='overlaycontent' src=" + url + "></img>");
  149. }
  150. else if(movieext.includes(ext)){
  151. $('#overlaycontentsize').append("<video id='overlaycontent' controls> <source src=" + url + " type=\"video/mp4\">Your browser does not support the video tag.</video>");
  152. }
  153. else{
  154. $('#overlaycontentsize').append("<iframe id='overlaycontent' src=" + url + "></iframe>");
  155. }
  156. }
  157. function overlayOff() {
  158. document.getElementById("overlay").style.display = "none";
  159. $('#overlaycontentsize').text("");
  160. }
  161. function deleteData(datalink) {
  162. if (confirm('Deleting ' + datalink)) {
  163. $.ajax({
  164. type: "DELETE",
  165. url: "../server/data/" + encodeURIComponent(datalink),
  166. success: function(res) {
  167. listFolders(datalink.substr(0, datalink.lastIndexOf("/")))
  168. }
  169. });
  170. }
  171. }
  172. function copy2Clipboard(datalink) {
  173. new URL("../storage/" + datalink, document.baseURI).href
  174. datalink = new URL("../storage/" + datalink, document.baseURI).href;
  175. const el = document.createElement('textarea');
  176. el.value = datalink;
  177. document.body.appendChild(el);
  178. el.select();
  179. document.execCommand('copy');
  180. document.body.removeChild(el);
  181. }
  182. function getAllFolders(folder = ""){ //Get DB 2 HTML //has to be synchronus in order to update before loading the rest
  183. $('#selectfolders').find('option').remove()
  184. $('#selectfolders').append("<option>.</option>")
  185. $.ajax({
  186. type: "GET",
  187. url: "../server/allfolders/" + folder,
  188. async: false,
  189. dataType: "json",
  190. success: function(data) {
  191. $.each( data, function( key, value ) {
  192. $('#selectfolders').append("<option>" + value.slice(0,-1) +"</option>")
  193. });
  194. }
  195. });
  196. }
  197. function saveexternalfolder(folder = ""){
  198. var newFolder = window.prompt("Please enter URL","");
  199. if (newFolder != null && newFolder != "") {
  200. $.ajax({
  201. type: "Post",
  202. data: JSON.stringify({"folder": newFolder}),
  203. contentType: "application/json; charset=utf-8",
  204. dataType: "json",
  205. async:true,
  206. url: "../server/externalFolder/",
  207. success: function(res) {
  208. }
  209. });
  210. }
  211. }
  212. function listExternalFolders(folder = ""){
  213. $('#ExternalFolders').text("");
  214. if(folder == ""){
  215. $.ajax({
  216. type: "GET",
  217. url: "../server/externalFolder",
  218. dataType: "json",
  219. success: function(data) {
  220. $.each( data, function( key, value ) {
  221. var clone = document.importNode(document.querySelector('#cpyFolder').content,true);
  222. //remove /
  223. value = value.slice(0,-1)
  224. $('[data-class=text]',clone).text(value);
  225. $('[data-class=link]',clone).attr('onclick','listExternalFolders("' + value + '")');
  226. $('#ExternalFolders').append(clone);
  227. });
  228. }
  229. });
  230. }
  231. else{
  232. $('#Folders').text("");
  233. //alert($.get(folder));
  234. /*
  235. $.ajax({
  236. type: "GET",
  237. url: folder,
  238. crossDomain: true,
  239. success: function(data) {
  240. alert(data);
  241. }
  242. });
  243. */
  244. }
  245. //listData(folder)
  246. }
  247. $(document).ready(function() {
  248. listFolders();
  249. listExternalFolders();
  250. getAllFolders();
  251. });