]> git.mxchange.org Git - friendica.git/blobdiff - view/js/filebrowser.js
Merge pull request #8581 from annando/perfect-scrollbar
[friendica.git] / view / js / filebrowser.js
index 78cee0e77ed8f7349d4ca434ea60a338cc4e859e..4546ed8ffccd250bc8570eadb5d952a51ee1294f 100644 (file)
-/**\r
- * Filebrowser - Friendica Communications Server\r
- *\r
- * Copyright (c) 2010-2015 the Friendica Project\r
- *\r
- * This program is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU Affero General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This code handle user interaction for image/file upload/browser dialog.\r
- * Is loaded from filebrowser_plain.tpl\r
- *\r
- * To load filebrowser in colorbox, call\r
- *\r
- *      Dialog.doImageBrowser(eventname, id);\r
- *\r
- * or\r
- *\r
- *      Dialog.doFileBrowser(eventname, id);\r
- *\r
- * where:\r
- *\r
- *             eventname: event name to catch return value\r
- *             id: id returned to event handler\r
- *\r
- * When user select an item, an event in fired in parent page, on body element\r
- * The event is named\r
- *\r
- *             fbrowser.<type>.[<eventname>]\r
- *\r
- * <type> will be one of "image" or "file", and the event handler will\r
- * get the following params:\r
- *\r
- *             filemane: filename of item choosed by user\r
- *             embed: bbcode to embed element into posts\r
- *             id: id from caller code\r
- *\r
- * example:\r
- *\r
- *             // open dialog for select an image for a textarea with id "myeditor"\r
- *             var id="myeditor";\r
- *             Dialog.doImageBrowser("example", id);\r
- *\r
- *             // setup event handler to get user selection\r
- *             $("body").on("fbrowser.image.example", function(event, filename, bbcode, id) {\r
- *                     // close colorbox\r
- *                     $.colorbox.close();\r
- *                     // replace textxarea text with bbcode\r
- *                     $(id).value = bbcode;\r
- *             });\r
- **/\r
-\r
-var FileBrowser = {\r
-       nickname : "",\r
-       type : "",\r
-       event: "",\r
-       id : null,\r
-\r
-       init: function(nickname, type) {\r
-               FileBrowser.nickname = nickname;\r
-               FileBrowser.type = type;\r
-               FileBrowser.event = "fbrowser."+type;\r
-               if (location['hash']!=="") {\r
-                       var h = location['hash'].replace("#","");\r
-                       FileBrowser.event = FileBrowser.event + "." + h.split("-")[0];\r
-                       FileBrowser.id = h.split("-")[1];\r
-               }\r
-\r
-               console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id );\r
-\r
-               $(".error a.close").on("click", function(e) {\r
-                       e.preventDefault();\r
-                       $(".error").addClass("hidden");\r
-               });\r
-\r
-               $(".folders a, .path a").on("click", function(e){\r
-                       e.preventDefault();\r
-                       var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=minimal" + location['hash'];\r
-                       location.href = url;\r
-               });\r
-\r
-               $(".photo-album-photo-link").on('click', function(e){\r
-                       e.preventDefault();\r
-\r
-                       var embed = "";\r
-                       if (FileBrowser.type == "image") {\r
-                               embed = "[url="+this.dataset.link+"][img]"+this.dataset.img+"[/img][/url]";\r
-                       }\r
-                       if (FileBrowser.type=="file") {\r
-                               // attachment links are "baseurl/attach/id"; we need id\r
-                               embed = "[attachment]"+this.dataset.link.split("/").pop()+"[/attachment]";\r
-                       }\r
-                       console.log(FileBrowser.event, this.dataset.filename, embed, FileBrowser.id);\r
-                       parent.$("body").trigger(FileBrowser.event, [\r
-                               this.dataset.filename,\r
-                               embed,\r
-                               FileBrowser.id\r
-                       ]);\r
-\r
-               });\r
-\r
-               if ($("#upload-image").length)\r
-                       var image_uploader = new window.AjaxUpload(\r
-                               'upload-image',\r
-                               { action: 'wall_upload/'+FileBrowser.nickname+'?response=json',\r
-                                       name: 'userfile',\r
-                                       responseType: 'json',\r
-                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },\r
-                                       onComplete: function(file,response) {\r
-                                               if (response['error']!= undefined) {\r
-                                                       $(".error span").html(response['error']);\r
-                                                       $(".error").removeClass('hidden');\r
-                                                       $('#profile-rotator').hide();\r
-                                                       return;\r
-                                               }\r
-                                               location = baseurl + "/fbrowser/image/?mode=minimal"+location['hash'];\r
-                                               location.reload(true);\r
-                                       }\r
-                               }\r
-                       );\r
-\r
-               if ($("#upload-file").length)\r
-                       var file_uploader = new window.AjaxUpload(\r
-                               'upload-file',\r
-                               { action: 'wall_attach/'+FileBrowser.nickname+'?response=json',\r
-                                       name: 'userfile',\r
-                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },\r
-                                       onComplete: function(file,response) {\r
-                                               if (response['error']!= undefined) {\r
-                                                       $(".error span").html(response['error']);\r
-                                                       $(".error").removeClass('hidden');\r
-                                                       $('#profile-rotator').hide();\r
-                                                       return;\r
-                                               }\r
-                                               location = baseurl + "/fbrowser/file/?mode=minimal"+location['hash'];\r
-                                               location.reload(true);\r
-                                       }\r
-                               }\r
-               );\r
-       }\r
-};\r
-\r
+// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPLv3-or-later
+/**
+ * Filebrowser - Friendica Communications Server
+ *
+ * Copyright (c) 2010-2015 the Friendica Project
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This code handle user interaction for image/file upload/browser dialog.
+ * Is loaded from filebrowser_plain.tpl
+ *
+ * To load filebrowser in colorbox, call
+ *
+ *      Dialog.doImageBrowser(eventname, id);
+ *
+ * or
+ *
+ *      Dialog.doFileBrowser(eventname, id);
+ *
+ * where:
+ *
+ *             eventname: event name to catch return value
+ *             id: id returned to event handler
+ *
+ * When user select an item, an event in fired in parent page, on body element
+ * The event is named
+ *
+ *             fbrowser.<type>.[<eventname>]
+ *
+ * <type> will be one of "image" or "file", and the event handler will
+ * get the following params:
+ *
+ *             filemane: filename of item choosed by user
+ *             embed: bbcode to embed element into posts
+ *             id: id from caller code
+ *
+ * example:
+ *
+ *             // open dialog for select an image for a textarea with id "myeditor"
+ *             var id="myeditor";
+ *             Dialog.doImageBrowser("example", id);
+ *
+ *             // setup event handler to get user selection
+ *             $("body").on("fbrowser.image.example", function(event, filename, bbcode, id) {
+ *                     // close colorbox
+ *                     $.colorbox.close();
+ *                     // replace textxarea text with bbcode
+ *                     $(id).value = bbcode;
+ *             });
+ **/
+
+var FileBrowser = {
+       nickname : "",
+       type : "",
+       event: "",
+       id : null,
+
+       init: function(nickname, type) {
+               FileBrowser.nickname = nickname;
+               FileBrowser.type = type;
+               FileBrowser.event = "fbrowser."+type;
+               if (location['hash']!=="") {
+                       var h = location['hash'].replace("#","");
+                       FileBrowser.event = FileBrowser.event + "." + h.split("-")[0];
+                       FileBrowser.id = h.split("-")[1];
+               }
+
+               console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id );
+
+               $(".error a.close").on("click", function(e) {
+                       e.preventDefault();
+                       $(".error").addClass("hidden");
+               });
+
+               $(".folders a, .path a").on("click", function(e){
+                       e.preventDefault();
+                       location.href = baseurl + "/fbrowser/" + FileBrowser.type + "/" + encodeURIComponent(this.dataset.folder) + "?mode=minimal" + location['hash'];
+               });
+
+               $(".photo-album-photo-link").on('click', function(e){
+                       e.preventDefault();
+
+                       var embed = "";
+                       if (FileBrowser.type == "image") {
+                               embed = "[url="+this.dataset.link+"][img="+this.dataset.img+"][/img][/url]";
+                       }
+                       if (FileBrowser.type=="file") {
+                               // attachment links are "baseurl/attach/id"; we need id
+                               embed = "[attachment]"+this.dataset.link.split("/").pop()+"[/attachment]";
+                       }
+                       console.log(FileBrowser.event, this.dataset.filename, embed, FileBrowser.id);
+                       parent.$("body").trigger(FileBrowser.event, [
+                               this.dataset.filename,
+                               embed,
+                               FileBrowser.id
+                       ]);
+
+               });
+
+               if ($("#upload-image").length)
+                       var image_uploader = new window.AjaxUpload(
+                               'upload-image',
+                               { action: 'wall_upload/'+FileBrowser.nickname+'?response=json',
+                                       name: 'userfile',
+                                       responseType: 'json',
+                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },
+                                       onComplete: function(file,response) {
+                                               if (response['error']!= undefined) {
+                                                       $(".error span").html(response['error']);
+                                                       $(".error").removeClass('hidden');
+                                                       $('#profile-rotator').hide();
+                                                       return;
+                                               }
+                                               location = baseurl + "/fbrowser/image/?mode=minimal"+location['hash'];
+                                               location.reload(true);
+                                       }
+                               }
+                       );
+
+               if ($("#upload-file").length)
+                       var file_uploader = new window.AjaxUpload(
+                               'upload-file',
+                               { action: 'wall_attach/'+FileBrowser.nickname+'?response=json',
+                                       name: 'userfile',
+                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },
+                                       onComplete: function(file,response) {
+                                               if (response['error']!= undefined) {
+                                                       $(".error span").html(response['error']);
+                                                       $(".error").removeClass('hidden');
+                                                       $('#profile-rotator').hide();
+                                                       return;
+                                               }
+                                               location = baseurl + "/fbrowser/file/?mode=minimal"+location['hash'];
+                                               location.reload(true);
+                                       }
+                               }
+               );
+       }
+};
+// @license-end