119 lines
3.5 KiB
JavaScript
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
|