// Contains all the logic of the user dashboard, such as create canvas, remove one or logout $(function() { /* ================================================ Miscellaneous ================================================= */ // Prevent AJAX requests from being cached $.ajaxSetup({ cache: false }); /* ================================ REGISTERED USER HAS LOGGED IN: Load their canvases ================================= */ // "loggedin_user_email" is the email of the user who's logged in. It is retrieved from the php script on top of the in the dashbord.php file and stored as a js variable in the js script the in the header of the dashboard.php file /* --------------------------------------------------------- An AJAX request to post the user's email to the server to load their saved canvases ---------------------------------------------------------- */ /* If the user has no canvases it returns []. This is an example of what two canvases returned: [ { "canvas_id": "6RnpIt9d9W", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 2", "canvas_date": "2016-07-16"}, { "canvas_id": "E4YoiRJgSB", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 1", "canvas_date": "2016-07-16"} ] */ var url = "load_user_canvases.php"; $.post(url, { loggedin_user_email: loggedin_user_email }, function(data, status) { // The data is a string holding array of json // Concert the string to array of json to be able to loop it var canvasArray = jQuery.parseJSON(data); var canvas_color_index; // The color of the canvas in the gallery (is designed in dashbord.css, and assiged here with jQuery) $.each(canvasArray, function(index, canvasItem) { // Canvas gallery elements will be dynamically created by jQuery if (index < 5) { canvas_color_index = index; } else { canvas_color_index = index % 5; } var canvasGalleryHTML = ''; // The added divs are appended to the outer gallery div .user-canvas-gallery $('.user-dashboard').find('.user-canvas-gallery').append(canvasGalleryHTML); }); // If the AJAX request fails }).fail(function(jqXHR) { console.log("Error " + jqXHR.status + ' ' + jqXHR.statustext); }); /* --------------------------------------------------------- An AJAX request to load shared canvases with the user ---------------------------------------------------------- */ /* If the user has no canvases it returns []. This is an example of what two canvases returned: [ { "canvas_id": "6RnpIt9d9W", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 2", "canvas_date": "2016-07-16"}, { "canvas_id": "E4YoiRJgSB", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 1", "canvas_date": "2016-07-16"} ] */ var url = "load_shared_canvases.php"; $.post(url, { loggedin_user_email: loggedin_user_email }, function(data, status) { // The data is a string holding array of json // Concert the string to array of json to be able to loop it var canvasArray = jQuery.parseJSON(data); var canvas_color_index; // The color of the canvas in the gallery (is designed in dashbord.css, and assiged here with jQuery) $.each(canvasArray, function(index, canvasItem) { // Canvas gallery elements will be dynamically created by jQuery if (index < 5) { canvas_color_index = index; } else { canvas_color_index = index % 5; } var canvasGalleryHTML = ''; // The added divs are appended to the outer gallery div .user-canvas-gallery $('.user-dashboard').find('.shared-canvases-gallery').append(canvasGalleryHTML); }); // If the AJAX request fails }).fail(function(jqXHR) { console.log("Error " + jqXHR.status + ' ' + jqXHR.statustext); }); /* --------------------------------------------------------- An AJAX request to load public canvases with the user ---------------------------------------------------------- */ /* If the user has no canvases it returns []. This is an example of what two canvases returned: [ { "canvas_id": "6RnpIt9d9W", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 2", "canvas_date": "2016-07-16"}, { "canvas_id": "E4YoiRJgSB", "user_id": "hello@arturocalvo.com", "canvas_name": "Test ARTURO 1", "canvas_date": "2016-07-16"} ] */ var url = "load_public_canvases.php"; $.post(url, { loggedin_user_email: loggedin_user_email }, function(data, status) { // The data is a string holding array of json // Concert the string to array of json to be able to loop it var canvasArray = jQuery.parseJSON(data); var canvas_color_index; // The color of the canvas in the gallery (is designed in dashbord.css, and assiged here with jQuery) $.each(canvasArray, function(index, canvasItem) { // Canvas gallery elements will be dynamically created by jQuery if (index < 5) { canvas_color_index = index; } else { canvas_color_index = index % 5; } var canvasGalleryHTML = ''; // The added divs are appended to the outer gallery div .user-canvas-gallery $('.user-dashboard').find('.public-canvases-gallery').append(canvasGalleryHTML); }); // If the AJAX request fails }).fail(function(jqXHR) { console.log("Error " + jqXHR.status + ' ' + jqXHR.statustext); }); /*============================================= Handling click on the log out button ============================================= */ $('.user-dashboard').on('click', '.dashbord-logout-btn', function(event) { var url = "logout.php"; $.post(url, function(data, status) { if (data == 200) { // Go to the landing page window.location.href = "../../index.html"; } }); }); /*============================================= Handling click on each canvas in the gallery ============================================= */ $(".user-dashboard").on("click", ".canvas-gallery-item", function(event) { event.stopPropagation(); // The ID of the canvas that the user clicked on to load var canvas_ID = $(this).attr("id"); // AJAX $.post("utils.php", { canvas_ID: canvas_ID }, function(data, status) { if(data == 200) { $.ajax({ timeout: 5000, dataType: "text", type: "post", data: { "canvas_id": canvas_ID }, url: "../php/check-version.php", success: function(returnData) { // Declarations var canvasVersion = returnData; // If the chosen canvas is version 1.8 if(canvasVersion === "1.8") { window.location.href = "../index.php"; } // If the chosen canvas is version 1.7 else if(canvasVersion === "1.7") { window.location.href = "../1.7/index.php"; } }, error: function(xhr) { console.log(xhr.statusText); } }); } }); }); /* ================================================ If the user closes a dialog ================================================= */ $("div.dialog button.close").on("click", function() { $("div#shadow").css("display", "none"); $("div.dialog").css("display", "none"); }); /*============================================== Handling the click on "remove" btn for each canvas in the gallery ============================================== */ function removeCanvas(canvas, remove_canvas_ID) { canvas.remove(); // Also tell the back-end to remove this from the database var url = "remove-canvas.php"; $.post(url, { remove_canvas_ID: remove_canvas_ID }, function(data, status) { console.log("response from remove-canvas.php: --DATA: " + data + " --STATUS:" + status); }); } $(".user-dashboard").on("click", ".remove-canvas", function(event) { event.stopPropagation(); // Declarations var canvas = $(this).closest(".canvas-gallery-item"); var remove_canvas_ID = $(this).closest(".canvas-gallery-item").attr("id"); // Show the Remove Canvas dialog $("div#shadow").css("display", "block"); $("div#dialog-remove-canvas").css("display", "block"); // If the user clicks on "Yes" $("#dialog-remove-canvas #button-yes").on("click", function() { $("div#shadow").css("display", "none"); $("div#dialog-remove-canvas").css("display", "none"); removeCanvas(canvas, remove_canvas_ID); }); // If the user clicks on "Cancel" $("#dialog-remove-canvas #button-no").on("click", function() { $("div#shadow").css("display", "none"); $("div#dialog-remove-canvas").css("display", "none"); }); }); });