deblan.io-murph/assets/js/app/post.js
2021-03-29 19:40:55 +02:00

119 lines
3.5 KiB
JavaScript

const Post = function(w) {
this.window = w;
}
Post.prototype.commentsEvents = function() {
var document = this.window.document;
var parentCommentIdField = document.getElementById('comment_parentCommentId');
if (!parentCommentIdField) {
return;
}
var isAnswerAlert = document.getElementById('answer-alert');
var cancelAnswerButton = document.getElementById('cancel-answer');
var toogleAnswerAlert = function() {
if (parentCommentIdField.value) {
isAnswerAlert.classList.remove('hidden');
} else {
isAnswerAlert.classList.add('hidden');
}
}
toogleAnswerAlert();
var answerButtons = document.querySelectorAll('a[data-answer]');
for (var i = 0, len = answerButtons.length; i < len; i++) {
answerButtons[i].addEventListener('click', function(e) {
parentCommentIdField.value = e.target.getAttribute('data-answer');
toogleAnswerAlert();
}, false);
}
cancelAnswerButton.addEventListener('click', function(e) {
e.preventDefault();
parentCommentIdField.value = null;
toogleAnswerAlert();
}, false);
var previewButton = document.querySelector('.preview-button');
var previewRender = document.querySelector('#preview');
previewButton.addEventListener('click', function() {
if (previewRender.innerHTML === '') {
previewRender.innerHTML = '<p>Chargement en cours…</p>';
}
var content = document.querySelector('#comment_content').value;
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function(data) {
if (httpRequest.readyState === 4 && httpRequest.status === 200) {
var json = JSON.parse(httpRequest.response);
previewRender.innerHTML = json.render;
document.location.href = '#preview';
}
};
httpRequest.open('POST', Routing.generate('api_comment_preview'));
httpRequest.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
httpRequest.send('content=' + encodeURIComponent(content));
}, false);
}
Post.prototype.imagesEvents = function() {
var document = this.window.document;
var isFullscreen = false;
var images = document.querySelectorAll('.body img');
var handleClick = function(image) {
if (isFullscreen) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
} else {
if (image.requestFullscreen) {
image.requestFullscreen();
} else if (image.webkitRequestFullscreen) {
image.webkitRequestFullscreen();
} else if (image.mozRequestFullScreen) {
image.mozRequestFullScreen();
}
}
isFullscreen = !isFullscreen;
};
for (var i = 0, len = images.length; i < len; i++) {
var image = images[i];
if (image.parentNode.tagName === 'A') {
continue;
}
(function(i) {
i.addEventListener('click', function() {
handleClick(i);
}, false);
})(image);
}
}
Post.prototype.init = function() {
this.commentsEvents();
this.imagesEvents();
}
module.exports = Post