mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 23:43:12 +00:00
361 lines
10 KiB
JavaScript
361 lines
10 KiB
JavaScript
var publicationModule = (function () {
|
|
|
|
var ajaxState = {
|
|
query: null,
|
|
isRunning: false
|
|
};
|
|
|
|
var curPage;
|
|
var $answers = $('#answers');
|
|
|
|
// refresh current view
|
|
$answers.on('click', '.feed_reload', function (event) {
|
|
event.preventDefault();
|
|
fetchPublications(curPage)
|
|
});
|
|
|
|
// navigate to a specific feed
|
|
$answers.on('click', '.ajax_answers', function (event) {
|
|
event.preventDefault();
|
|
var $this = $(this);
|
|
var append = $this.hasClass('append');
|
|
var noScroll = $this.hasClass('no_scroll');
|
|
|
|
_fetchRemote($(event.currentTarget).attr('href'), {})
|
|
.then(function (data) {
|
|
if (!append) {
|
|
$answers.empty();
|
|
if (!noScroll) {
|
|
$answers.scrollTop(0);
|
|
}
|
|
$answers.append(data);
|
|
|
|
$answers.find("img.lazyload").lazyload({
|
|
container: $answers
|
|
});
|
|
}
|
|
else {
|
|
$('.see_more.loading', $answers).remove();
|
|
$answers.append(data);
|
|
|
|
$answers.find("img.lazyload").lazyload({
|
|
container: $answers
|
|
});
|
|
|
|
if (!noScroll) {
|
|
$answers.animate({
|
|
'scrollTop': ($answers.scrollTop() + $answers.innerHeight() - 80)
|
|
});
|
|
}
|
|
}
|
|
afterSearch();
|
|
});
|
|
|
|
});
|
|
|
|
// subscribe_rss
|
|
$answers.on('click', '.subscribe_rss', function (event) {
|
|
event.preventDefault();
|
|
var $this = $(this);
|
|
|
|
if (typeof(renew) === 'undefined')
|
|
renew = 'false';
|
|
else
|
|
renew = renew ? 'true' : 'false';
|
|
|
|
var buttons = {};
|
|
buttons[language.renewRss] = function () {
|
|
$this.trigger({
|
|
type: 'click',
|
|
renew: true
|
|
});
|
|
};
|
|
buttons[language.fermer] = function () {
|
|
$('#DIALOG').empty().dialog('destroy');
|
|
};
|
|
|
|
event.stopPropagation();
|
|
|
|
$.ajax({
|
|
type: "GET",
|
|
url: $this.attr('href') + (event.renew === true ? '?renew=true' : ''),
|
|
dataType: 'json',
|
|
success: function (data) {
|
|
if (data.texte !== false && data.titre !== false) {
|
|
if ($("#DIALOG").data("ui-dialog")) {
|
|
$("#DIALOG").dialog('destroy');
|
|
}
|
|
$("#DIALOG").attr('title', data.titre)
|
|
.empty()
|
|
.append(data.texte)
|
|
.dialog({
|
|
autoOpen: false,
|
|
closeOnEscape: true,
|
|
resizable: false,
|
|
draggable: false,
|
|
modal: true,
|
|
buttons: buttons,
|
|
width: 650,
|
|
height: 250,
|
|
overlay: {
|
|
backgroundColor: '#000',
|
|
opacity: 0.7
|
|
}
|
|
}).dialog('open');
|
|
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// edit a feed
|
|
$answers.on('click', '.feed .entry a.feed_edit', function () {
|
|
var $this = $(this);
|
|
$.ajax({
|
|
type: "GET",
|
|
url: $this.attr('href'),
|
|
dataType: 'html',
|
|
success: function (data) {
|
|
return _createPublicationModal(data);
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
// remove a feed
|
|
$answers.on('click', '.feed .entry a.feed_delete', function () {
|
|
if (!confirm('etes vous sur de vouloir supprimer cette entree ?'))
|
|
return false;
|
|
var $this = $(this);
|
|
$.ajax({
|
|
type: "POST",
|
|
url: $this.attr('href'),
|
|
dataType: 'json',
|
|
success: function (data) {
|
|
if (data.error === false) {
|
|
var $entry = $this.closest('.entry');
|
|
$entry.animate({
|
|
height: 0,
|
|
opacity: 0
|
|
}, function () {
|
|
$entry.remove();
|
|
});
|
|
}
|
|
else
|
|
alert(data.message);
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
|
|
$answers.on('mouseover', '.feed .entry', function () {
|
|
$(this).addClass('hover');
|
|
});
|
|
|
|
$answers.on('mouseout', '.feed .entry', function () {
|
|
$(this).removeClass('hover');
|
|
});
|
|
|
|
$answers.on('click', '.see_more a', function (event) {
|
|
$see_more = $(this).closest('.see_more');
|
|
$see_more.addClass('loading');
|
|
});
|
|
|
|
|
|
var _fetchRemote = function (url, data) {
|
|
var page = 0;
|
|
if (data.page === undefined) {
|
|
page = data.page;
|
|
}
|
|
|
|
return ajaxState.query = $.ajax({
|
|
type: "GET",
|
|
url: url,
|
|
dataType: 'html',
|
|
data: data,
|
|
beforeSend: function () {
|
|
if (ajaxState.isRunning && ajaxState.query.abort)
|
|
answAjax.abort();
|
|
if (page === 0)
|
|
clearAnswers();
|
|
ajaxState.isRunning = true;
|
|
$answers.addClass('loading');
|
|
},
|
|
error: function () {
|
|
ajaxState.isRunning = false;
|
|
$answers.removeClass('loading');
|
|
},
|
|
timeout: function () {
|
|
ajaxState.isRunning = false;
|
|
$answers.removeClass('loading');
|
|
},
|
|
success: function (data) {
|
|
ajaxState.isRunning = false;
|
|
}
|
|
});
|
|
};
|
|
|
|
var _createPublicationModal = function (data) {
|
|
|
|
var buttons = {};
|
|
buttons[language.valider] = function () {
|
|
var dialog = p4.Dialog.get(1);
|
|
var error = false;
|
|
var $form = $('form.main_form', dialog.getDomElement());
|
|
|
|
$('.required_text', $form).each(function (i, el) {
|
|
if ($.trim($(el).val()) === '') {
|
|
$(el).addClass('error');
|
|
error = true;
|
|
}
|
|
});
|
|
|
|
if (error) {
|
|
alert(language.feed_require_fields);
|
|
}
|
|
|
|
if ($('input[name="feed_id"]', $form).val() === '') {
|
|
alert(language.feed_require_feed);
|
|
error = true;
|
|
}
|
|
|
|
if (error) {
|
|
return false;
|
|
}
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: $form.attr('action'),
|
|
data: $form.serializeArray(),
|
|
dataType: 'json',
|
|
beforeSend: function () {
|
|
$('button', dialog.getDomElement()).prop('disabled', true);
|
|
},
|
|
error: function () {
|
|
$('button', dialog.getDomElement()).prop('disabled', false);
|
|
},
|
|
timeout: function () {
|
|
$('button', dialog.getDomElement()).prop('disabled', false);
|
|
},
|
|
success: function (data) {
|
|
$('button', dialog.getDomElement()).prop('disabled', false);
|
|
if (data.error === true) {
|
|
alert(data.message);
|
|
return;
|
|
}
|
|
|
|
if ($('form.main_form', dialog.getDomElement()).hasClass('entry_update')) {
|
|
var id = $('form input[name="entry_id"]', dialog.getDomElement()).val();
|
|
var container = $('#entry_' + id);
|
|
|
|
container.replaceWith(data.datas);
|
|
|
|
container.hide().fadeIn();
|
|
|
|
$answers.find("img.lazyload").lazyload({
|
|
container: $answers
|
|
});
|
|
}
|
|
|
|
p4.Dialog.Close(1);
|
|
}
|
|
});
|
|
p4.Dialog.Close(1);
|
|
};
|
|
|
|
var dialog = p4.Dialog.Create({
|
|
size: 'Full',
|
|
closeOnEscape: true,
|
|
closeButton: true,
|
|
buttons: buttons
|
|
});
|
|
|
|
dialog.setContent(data);
|
|
|
|
var $feeds_item = $('.feeds .feed', dialog.getDomElement());
|
|
var $form = $('form.main_form', dialog.getDomElement());
|
|
|
|
$feeds_item.bind('click', function () {
|
|
$feeds_item.removeClass('selected');
|
|
$(this).addClass('selected');
|
|
$('input[name="feed_id"]', $form).val($('input', this).val());
|
|
}).hover(function () {
|
|
$(this).addClass('hover');
|
|
}, function () {
|
|
$(this).removeClass('hover');
|
|
});
|
|
|
|
$form.bind('submit', function () {
|
|
return false;
|
|
});
|
|
|
|
return;
|
|
};
|
|
|
|
var fetchPublications = function (page) {
|
|
curPage = page;
|
|
return _fetchRemote('../prod/feeds/', {
|
|
page: page
|
|
})
|
|
.then(function (data) {
|
|
$('.next_publi_link', $answers).remove();
|
|
|
|
$answers.append(data);
|
|
|
|
$answers.find("img.lazyload").lazyload({
|
|
container: $answers
|
|
});
|
|
|
|
afterSearch();
|
|
if (page > 0) {
|
|
$answers.stop().animate({
|
|
scrollTop: $answers.scrollTop() + $answers.height()
|
|
}, 700);
|
|
}
|
|
return;
|
|
});
|
|
};
|
|
|
|
|
|
var publishRecords = function (type, value) {
|
|
var options = {
|
|
lst: '',
|
|
ssel: '',
|
|
act: ''
|
|
};
|
|
|
|
switch (type) {
|
|
case "IMGT":
|
|
case "CHIM":
|
|
options.lst = value;
|
|
break;
|
|
|
|
case "STORY":
|
|
options.story = value;
|
|
break;
|
|
case "SSTT":
|
|
options.ssel = value;
|
|
break;
|
|
}
|
|
|
|
$.post("../prod/feeds/requestavailable/"
|
|
, options
|
|
, function (data) {
|
|
|
|
return _createPublicationModal(data);
|
|
});
|
|
|
|
return;
|
|
};
|
|
|
|
return {
|
|
fetchPublications: function (page) {
|
|
return fetchPublications(page);
|
|
},
|
|
publishRecords: function (type, value) {
|
|
return publishRecords(type, value)
|
|
}
|
|
};
|
|
})();
|