]> git.mxchange.org Git - friendica.git/blobdiff - view/theme/frio/js/filebrowser.js
Merge develop into 20170321_-_frio-fbbrowser
[friendica.git] / view / theme / frio / js / filebrowser.js
index c267de4c5d31e3e21f8f3fa1c000b5f051d8cd8b..1ca24966a8bd2ff89f434369deff168d38d10c3b 100644 (file)
@@ -68,6 +68,7 @@ var FileBrowser = {
        nickname : "",\r
        type : "",\r
        event: "",\r
+       folder: "",\r
        id : null,\r
 \r
        init: function(nickname, type, hash) {\r
@@ -81,39 +82,40 @@ var FileBrowser = {
                        FileBrowser.id = h.split("-")[1];\r
                        FileBrowser.event = FileBrowser.event + "." + destination;\r
                        if (destination == "comment") {\r
-                               // get the comment textimput field\r
+                               // Get the comment textimput field\r
                                var commentElm = document.getElementById("comment-edit-text-" + FileBrowser.id);\r
                        }\r
                };\r
 \r
-               console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id );\r
+               console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id);\r
+\r
+               FileBrowser.postLoad();\r
 \r
                $(".error .close").on("click", function(e) {\r
                        e.preventDefault();\r
                        $(".error").addClass("hidden");\r
                });\r
 \r
-               $(".folders a, .path a, .folders button, .path button").on("click", function(e) {\r
+               // Click on album link\r
+               $(".fbrowser").on("click", ".folders a, .path a", function(e) {\r
                        e.preventDefault();\r
                        var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=none";\r
+                       FileBrowser.folder = this.dataset.folder;\r
 \r
-                       // load new content to fbrowser window\r
-                       $(".fbrowser").load(url,function() {\r
-                               $(function() {FileBrowser.init(nickname, type, hash);});\r
-                       });\r
+                       FileBrowser.loadContent(url);\r
                });\r
 \r
-               //embed on click\r
-               $(".photo-album-photo-link").on('click', function(e) {\r
+               //Embed on click\r
+               $(".fbrowser").on('click', ".photo-album-photo-link", 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
+                               embed = "[url=" + this.dataset.link + "][img]" + this.dataset.img + "[/img][/url]";\r
                        }\r
-                       if (FileBrowser.type=="file") {\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
+                               embed = "[attachment]" + this.dataset.link.split("/").pop() + "[/attachment]";\r
                        }\r
 \r
                        // Delete prefilled Text of the comment input\r
@@ -129,52 +131,79 @@ var FileBrowser = {
                                }\r
 \r
                        }\r
+\r
                        console.log(FileBrowser.event, this.dataset.filename, embed, FileBrowser.id);\r
+\r
                        parent.$("body").trigger(FileBrowser.event, [\r
                                this.dataset.filename,\r
                                embed,\r
                                FileBrowser.id,\r
-                               this.dataset.img,\r
+                               this.dataset.img\r
                        ]);\r
 \r
-                       // close model\r
+                       // Close model\r
                        $('#modal').modal('hide');\r
-                       // update autosize for this textarea\r
+                       // Update autosize for this textarea\r
                        autosize.update($(".text-autosize"));\r
                });\r
 \r
-               if ($("#upload-image").length)\r
+               // EventListener for switching between image and file mode\r
+               $(".fbrowser").on('click', ".fbswitcher .btn", function(e) {\r
+                       e.preventDefault();\r
+                       FileBrowser.type = this.getAttribute("data-mode");\r
+                       $(".fbrowser").removeClass().addClass("fbrowser " + FileBrowser.type);\r
+                       url = baseurl + "/fbrowser/" + FileBrowser.type + "?mode=none";\r
+\r
+                       FileBrowser.loadContent(url);\r
+               });\r
+       },\r
+\r
+       // Initialize the AjaxUpload for the upload buttons\r
+       uploadButtons: function() {\r
+               if ($("#upload-image").length) {\r
+                       // To get the albumname we need to convert it from hex\r
+                       var albumname = hex2bin(FileBrowser.folder);\r
+                       //AjaxUpload for images\r
                        var image_uploader = new window.AjaxUpload(\r
                                'upload-image',\r
-                               { action: 'wall_upload/'+FileBrowser.nickname+'?response=json',\r
+                               {       action: 'wall_upload/' + FileBrowser.nickname + '?response=json&album=' + albumname,\r
                                        name: 'userfile',\r
                                        responseType: 'json',\r
-                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },\r
+                                       onSubmit: function(file, ext) {\r
+                                               $(".fbrowser-content").hide();\r
+                                               $(".fbrowser .profile-rotator-wrapper").show();\r
+                                               $(".error").addClass('hidden');\r
+                                       },\r
                                        onComplete: function(file,response) {\r
-                                               if (response['error']!= undefined) {\r
+                                               if (response['error'] != undefined) {\r
                                                        $(".error span").html(response['error']);\r
                                                        $(".error").removeClass('hidden');\r
-                                                       $('#profile-rotator').hide();\r
+                                                       $(".fbrowser .profile-rotator-wrapper").hide();\r
                                                        return;\r
                                                }\r
+\r
 //                                             location = baseurl + "/fbrowser/image/?mode=none"+location['hash'];\r
 //                                             location.reload(true);\r
 \r
-                                               var url = baseurl + "/fbrowser/" + FileBrowser.type + "?mode=none"\r
+                                               var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + FileBrowser.folder + "?mode=none";\r
                                                // load new content to fbrowser window\r
-                                               $(".fbrowser").load(url,function() {\r
-                                                       $(function() {FileBrowser.init(nickname, type, hash);});\r
-                                               });\r
+                                               FileBrowser.loadContent(url);\r
                                        }\r
                                }\r
                        );\r
+               }\r
 \r
-               if ($("#upload-file").length)\r
+               if ($("#upload-file").length) {\r
+                       //AjaxUpload for files\r
                        var file_uploader = new window.AjaxUpload(\r
                                'upload-file',\r
-                               { action: 'wall_attach/'+FileBrowser.nickname+'?response=json',\r
+                               {       action: 'wall_attach/' + FileBrowser.nickname + '?response=json',\r
                                        name: 'userfile',\r
-                                       onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },\r
+                                       onSubmit: function(file, ext) {\r
+                                               $(".fbrowser-content").hide();\r
+                                               $(".fbrowser .profile-rotator-wrapper").show();\r
+                                               $(".error").addClass('hidden');\r
+                                       },\r
                                        onComplete: function(file,response) {\r
                                                if (response['error']!= undefined) {\r
                                                        $(".error span").html(response['error']);\r
@@ -182,17 +211,50 @@ var FileBrowser = {
                                                        $('#profile-rotator').hide();\r
                                                        return;\r
                                                }\r
+\r
 //                                             location = baseurl + "/fbrowser/file/?mode=none"+location['hash'];\r
 //                                             location.reload(true);\r
 \r
-                                               var url = baseurl + "/fbrowser/" + FileBrowser.type + "?mode=none"\r
-                                               // load new content to fbrowser window\r
-                                               $(".fbrowser").load(url,function() {\r
-                                                       $(function() {FileBrowser.init(nickname, type, hash);});\r
-                                               });\r
+                                               var url = baseurl + "/fbrowser/" + FileBrowser.type + "?mode=none";\r
+                                               // Load new content to fbrowser window\r
+                                               FileBrowser.loadContent(url);\r
                                        }\r
                                }\r
-               );\r
+                       );\r
+               }\r
        },\r
-};\r
 \r
+       // Stuff which should be executed if ne content was loaded\r
+       postLoad: function() {\r
+               FileBrowser.initGallery();\r
+               $(".fbrowser .fbswitcher .btn").removeClass("active");\r
+               $(".fbrowser .fbswitcher [data-mode=" + FileBrowser.type + "]").addClass("active");\r
+               // We need to add the AjaxUpload to the button\r
+               FileBrowser.uploadButtons();\r
+               \r
+       },\r
+\r
+       // Load new content (e.g. change photo album)\r
+       loadContent: function(url) {\r
+               $(".fbrowser-content").hide();\r
+               $(".fbrowser .profile-rotator-wrapper").show();\r
+\r
+               // load new content to fbrowser window\r
+               $(".fbrowser").load(url, function(responseText, textStatus) {\r
+                       $(".profile-rotator-wrapper").hide();\r
+                       if (textStatus === 'success') {\r
+                               $(".fbrowser_content").show();\r
+                               FileBrowser.postLoad();\r
+                       }\r
+               });\r
+       },\r
+\r
+       // Initialize justified Gallery\r
+       initGallery: function() {\r
+               $(".fbrowser.image .fbrowser-content-container").justifiedGallery({\r
+                       'rowHeight': 80,\r
+                       'margins': 2,\r
+                       'border': 0\r
+               });\r
+       }\r
+};\r