ustore.js 8.8 KB

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