filebrowser/assets/public_src/js/browse.js

380 lines
9.0 KiB
JavaScript
Raw Normal View History

// When the page Browse is opened
2016-02-06 16:08:48 +00:00
$(document).on('page:browse', function() {
var foreground = '#foreground';
2016-02-07 21:12:01 +00:00
/* DELETE FILE */
var removeForm = 'form#delete';
var removeItem = null;
2016-02-07 21:12:01 +00:00
$('#content').on('click', '.delete', function(event) {
2016-02-07 21:12:01 +00:00
event.preventDefault();
// Gets the information about the file the user wants to delete
removeItem = new Object();
removeItem.url = $(this).data("file");
removeItem.row = $(this).parent().parent();
removeItem.filename = $(removeItem.row).find('.filename').text();
// Shows the remove form and the foreground
$(removeForm).find('span').text(removeItem.filename);
$(removeForm).fadeIn(200)
$(foreground).fadeIn(200);
2016-02-07 21:12:01 +00:00
return false;
});
$('#content').on('submit', removeForm, function(event) {
2016-02-07 21:12:01 +00:00
event.preventDefault();
// Checks if the item to remove is defined
if (removeItem == null) {
notification({
text: "Something is wrong with your form.",
type: "error"
});
return false;
}
// Makes the DELETE request to the server
var request = new XMLHttpRequest();
request.open("DELETE", removeItem.url);
request.send();
request.onreadystatechange = function() {
if (request.readyState == 4) {
var response = JSON.parse(request.responseText),
type = "success",
timeout = 5000;
$(foreground).fadeOut(200);
$(removeForm).fadeOut(200);
$(removeItem.row).fadeOut(200);
if (request.status != 200) {
type = "error";
timeout = false;
}
notification({
text: response.message,
type: type,
timeout: timeout
});
removeItem = null;
}
}
2016-02-07 21:12:01 +00:00
return false;
});
2016-02-06 17:18:30 +00:00
2016-02-07 19:37:01 +00:00
/* FILE UPLOAD */
2016-02-06 17:18:30 +00:00
$('#content').on('change', 'input[type="file"]', function(event) {
2016-02-07 19:37:01 +00:00
event.preventDefault();
files = event.target.files;
2016-02-06 17:18:30 +00:00
$('#loading').fadeIn();
2016-02-07 19:37:01 +00:00
// Create a formdata object and add the files
var data = new FormData();
$.each(files, function(key, value) {
data.append(key, value);
});
2016-02-06 17:18:30 +00:00
$.ajax({
2016-02-07 19:37:01 +00:00
url: window.location.pathname,
type: 'POST',
data: data,
cache: false,
2016-02-06 17:18:30 +00:00
dataType: 'json',
2016-02-07 19:37:01 +00:00
headers: {
'X-Upload': 'true',
},
processData: false,
contentType: false,
2016-02-06 17:18:30 +00:00
}).done(function(data) {
notification({
2016-02-07 19:37:01 +00:00
text: "File(s) uploaded successfully.",
2016-02-06 17:18:30 +00:00
type: 'success',
timeout: 5000
});
2016-02-07 19:37:01 +00:00
$('#loading').fadeOut();
2016-02-07 19:37:01 +00:00
$.pjax({
url: window.location.pathname,
container: '#content'
})
2016-02-06 17:18:30 +00:00
}).fail(function(data) {
$('#loading').fadeOut();
2016-02-06 17:18:30 +00:00
notification({
text: 'Something went wrong.',
type: 'error'
});
console.log(data);
});
2016-02-06 17:18:30 +00:00
return false;
});
2016-02-08 08:25:38 +00:00
$('#content').on('click', '#upload', function(event) {
2016-02-06 16:08:48 +00:00
event.preventDefault();
2016-02-07 19:37:01 +00:00
$('.actions input[type="file"]').click();
2016-02-06 16:08:48 +00:00
return false;
});
2016-02-07 19:37:01 +00:00
/* NEW FILE */
var createForm = 'form#new',
createInput = createForm + ' input[type="text"]';
2016-02-07 19:37:01 +00:00
$('#content').on('click', '.new', function(event) {
2016-02-06 16:08:48 +00:00
event.preventDefault();
$(foreground).fadeIn(200);
$(createForm).fadeIn(200);
2016-02-06 16:08:48 +00:00
return false;
});
$('#content').on('keypress', createInput, function(event) {
// If it's "enter" key, submit the
2016-02-07 17:49:20 +00:00
if (event.keyCode == 13) {
event.preventDefault();
$(createForm).submit();
2016-02-07 17:49:20 +00:00
return false;
}
});
$('#content').on('submit', createForm, function(event) {
2016-02-07 17:16:09 +00:00
event.preventDefault();
2016-02-07 19:37:01 +00:00
var value = $(createInput).val(),
2016-02-07 17:16:09 +00:00
splited = value.split(":"),
filename = "",
archetype = "";
if (value == "") {
notification({
text: "You have to write something. If you want to close the box, click the button again.",
type: 'warning',
timeout: 5000
});
return false;
} else if (splited.length == 1) {
filename = value;
} else if (splited.length == 2) {
filename = splited[0];
archetype = splited[1];
} else {
notification({
text: "Hmm... I don't understand you. Try writing something like 'name[:archetype]'.",
type: 'error'
2016-02-06 16:08:48 +00:00
});
return false;
}
2016-02-07 17:16:09 +00:00
var content = {
filename: filename,
archetype: archetype
}
2016-02-07 17:16:09 +00:00
var request = new XMLHttpRequest();
request.open("POST", window.location.pathname);
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.send(JSON.stringify(content));
request.onreadystatechange = function() {
if (request.readyState == 4) {
2016-03-06 15:56:53 +00:00
var response = JSON.parse(request.responseText);
var type = "success";
var timeout = 5000;
2016-03-06 15:56:53 +00:00
if (request.status != 200) {
type = "error";
timeout = false;
}
notification({
text: response.message,
type: type,
timeout: timeout
});
if (request.status == 200) {
$.pjax({
2016-03-12 13:03:31 +00:00
url: response.location,
container: '#content'
})
}
}
}
2016-02-07 17:16:09 +00:00
return false;
2016-02-06 16:08:48 +00:00
});
2016-02-07 19:37:01 +00:00
/* RENAME FILE */
var renameForm = 'form#rename',
renameInput = renameForm + ' input[type="text"]',
renameItem = null;
2016-02-07 19:37:01 +00:00
$('#content').on('click', '.rename', function(event) {
2016-02-06 16:08:48 +00:00
event.preventDefault();
renameItem = $(this).parent().parent().find('.filename').text();
$(foreground).fadeIn(200);
$(renameForm).fadeIn(200);
$(renameForm).find('span').text(renameItem);
$(renameForm).find('input[type="text"]').val(renameItem);
2016-02-06 16:08:48 +00:00
return false;
});
$('#content').on('keypress', renameInput, function(event) {
2016-02-07 19:37:01 +00:00
if (event.keyCode == 13) {
event.preventDefault();
$(renameForm).submit();
2016-02-07 19:37:01 +00:00
return false;
}
});
$('#content').on('submit', renameForm, function(event) {
2016-02-06 16:08:48 +00:00
event.preventDefault();
var filename = $(this).find('input[type="text"]').val();
2016-02-07 19:37:01 +00:00
if (filename === "") {
return false;
}
if (filename.substring(0, 1) != "/") {
filename = window.location.pathname.replace("/admin/browse/", "") + '/' + filename;
}
2016-03-06 13:01:03 +00:00
var content = {
filename: filename
};
2016-02-06 16:08:48 +00:00
2016-03-06 13:01:03 +00:00
var request = new XMLHttpRequest();
request.open("PUT", renameItem);
2016-03-06 13:01:03 +00:00
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.send(JSON.stringify(content));
request.onreadystatechange = function() {
if (request.readyState == 4) {
var response = JSON.parse(request.responseText),
type = "success",
timeout = 5000;
if (request.status != 200) {
type = "error";
timeout = false;
2016-03-06 13:01:03 +00:00
}
$.pjax({
url: window.location.pathname,
container: '#content'
});
notification({
text: response.message,
type: type,
timeout: timeout
});
renameItem = null;
2016-03-06 13:01:03 +00:00
}
}
2016-02-06 16:08:48 +00:00
2016-02-07 19:37:01 +00:00
return false;
});
/* GIT ACTIONS */
var gitButton = 'button.git',
gitForm = 'form#git',
gitInput = gitForm + ' input[type="text"]';
$('#content').on('click', gitButton, function(event) {
event.preventDefault();
$(foreground).fadeIn(200);
$(gitForm).fadeIn(200);
return false;
});
$('#content').on('keypress', gitInput, function(event) {
if (event.keyCode == 13) {
event.preventDefault();
$(gitForm).submit();
return false;
}
});
$('#content').on('submit', gitForm, function(event) {
event.preventDefault();
var value = $(this).find('input[type="text"]').val();
if (value == "") {
notification({
text: "You have to write something. If you want to close the box, click outside of it.",
type: 'warning',
timeout: 5000
});
return false;
}
var request = new XMLHttpRequest();
request.open("POST", "/admin/git");
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.send(JSON.stringify({
command: value
}));
2016-03-06 13:01:03 +00:00
request.onreadystatechange = function() {
if (request.readyState == 4) {
2016-03-06 14:23:37 +00:00
var data = JSON.parse(request.responseText);
2016-03-06 13:01:03 +00:00
if (request.status == 200) {
notification({
2016-03-06 14:23:37 +00:00
text: data.message,
type: "success",
timeout: 5000
});
$(gitForm).fadeOut(200);
$(foreground).fadeOut(200);
$.pjax({
url: window.location.pathname,
container: '#content'
2016-03-06 13:01:03 +00:00
});
2016-03-06 14:23:37 +00:00
} else {
notification({
text: data.message,
type: "error"
});
2016-03-06 13:01:03 +00:00
}
}
}
return false;
});
/* $(foreground) AND STUFF */
2016-02-07 19:37:01 +00:00
$('#content').on('click', '.close', function(event) {
2016-02-07 21:12:01 +00:00
event.preventDefault();
$(this).parent().parent().fadeOut(200);
$(foreground).click();
2016-02-06 16:08:48 +00:00
return false;
});
2016-02-07 19:37:01 +00:00
$('#content').on('click', foreground, function(event) {
event.preventDefault();
$(foreground).fadeOut(200);
$(createForm).fadeOut(200);
$(renameForm).fadeOut(200);
$(removeForm).fadeOut(200);
$(gitForm).fadeOut(200);
return false;
2016-02-07 19:37:01 +00:00
});
2016-03-06 15:56:53 +00:00
});