520 lines
18 KiB
JavaScript
520 lines
18 KiB
JavaScript
$(document).ready(function () {
|
|
editor.init();
|
|
});
|
|
|
|
var editor = new Object({
|
|
/**
|
|
* Standard-Variablen für den Editor
|
|
*/
|
|
type: '',
|
|
title: '',
|
|
name: '',
|
|
contentHtml: '',
|
|
contentData: null,
|
|
|
|
/**
|
|
* jQuery-Elemente für den Editor
|
|
*/
|
|
titleElement: null,
|
|
layerElement: null,
|
|
closeElement: null,
|
|
contentElement: null,
|
|
waitingElement: null,
|
|
editableElement: null,
|
|
formElement: null,
|
|
element: null,
|
|
|
|
init: function () {
|
|
editor.initElements();
|
|
editor.hoverEvents();
|
|
editor.clickEvents();
|
|
},
|
|
|
|
initElements: function () {
|
|
editor.titleElement = $('#editor_title');
|
|
editor.layerElement = $('#editor_layer');
|
|
editor.closeElement = $('#editor_layer_close');
|
|
editor.contentElement = $('#editor_content');
|
|
editor.editableElement = $('[data-editable]');
|
|
editor.waitingElement = $('#wait');
|
|
editor.title = editor.titleElement.html();
|
|
},
|
|
|
|
hoverEvents: function () {
|
|
editor.editableElement.on('mouseenter', function (event) {
|
|
$(event.currentTarget).addClass('editable_hover');
|
|
});
|
|
editor.editableElement.on('mouseleave', function (event) {
|
|
$(event.currentTarget).removeClass('editable_hover');
|
|
});
|
|
},
|
|
|
|
clickEvents: function () {
|
|
editor.editableElement.on('click', function (event) {
|
|
if (event.target.tagName === 'A') {
|
|
return true;
|
|
}
|
|
editor.type = event.currentTarget.dataset.editable;
|
|
if (editor.type === 'textimage') {
|
|
return true;
|
|
}
|
|
editor.waitingElement.show();
|
|
editor.name = editor.type.toUpperCase();
|
|
editor.element = $(event.currentTarget).attr('id');
|
|
editor.callEditor();
|
|
});
|
|
|
|
editor.closeElement.click(function () {
|
|
editor.close();
|
|
navigation.close();
|
|
});
|
|
|
|
editor.contentElement.on('click', '.formSubmit', function () {
|
|
editor.submitData();
|
|
});
|
|
|
|
editor.contentElement.on('click', '.formCancel', function () {
|
|
editor.close();
|
|
});
|
|
|
|
editor.contentElement.on('click', '.formNext', function () {
|
|
var actualInnerSlider = $(this).parents('.inner');
|
|
actualInnerSlider.hide();
|
|
actualInnerSlider.next('.inner').show();
|
|
});
|
|
|
|
editor.contentElement.on('click', '.formPrev', function () {
|
|
var actualInnerSlider = $(this).parents('.inner');
|
|
actualInnerSlider.hide();
|
|
actualInnerSlider.prev('.inner').show();
|
|
});
|
|
|
|
editor.contentElement.on('change', '#spieltyp', function () {
|
|
var durationElement = $('#spieldauer');
|
|
var delayedElement = $('#verschoben');
|
|
var duration = $(this).find(':selected').data('duration');
|
|
var delayed = $(this).find(':selected').data('delayed');
|
|
|
|
if (duration == 'hide') {
|
|
durationElement.val('regular');
|
|
durationElement[0].disabled = true;
|
|
}
|
|
else if (duration == 'show') {
|
|
durationElement[0].disabled = false;
|
|
}
|
|
|
|
if (delayed == 'hide') {
|
|
delayedElement[0].disabled = true;
|
|
}
|
|
else if (delayed == 'show') {
|
|
delayedElement[0].disabled = false;
|
|
}
|
|
});
|
|
},
|
|
|
|
close: function () {
|
|
editor.type = '';
|
|
editor.name = '';
|
|
editor.contentHtml = '';
|
|
editor.contentData = null;
|
|
editor.formElement = null;
|
|
editor.titleElement.html(editor.title);
|
|
editor.layerElement.hide();
|
|
editor.contentElement.html('');
|
|
editor.waitingElement.hide();
|
|
},
|
|
|
|
callEditor: function () {
|
|
editor.titleElement.html(editor.titleElement.html().replace('%%type%%', editor.name));
|
|
editor.getEditorHtml();
|
|
editor.getEditorData();
|
|
editor.layerElement.show();
|
|
},
|
|
|
|
getEditorHtml: function () {
|
|
var editorFile = editorUrl + editorVersion + '/templates/' + editor.type + '.php';
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: editorFile,
|
|
data: {lang: sessLang},
|
|
dataType: 'html',
|
|
error: function () {
|
|
console.log(editorFile);
|
|
console.log(editor.type);
|
|
alert('Fehler beim Holen des Editor-HTMLs!');
|
|
},
|
|
success: function (html) {
|
|
editor.contentHtml = html;
|
|
editor.contentElement.html(html);
|
|
editor.formElement = $('#editor_form');
|
|
}
|
|
});
|
|
},
|
|
|
|
getEditorData: function () {
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: webserviceUrl,
|
|
data: {request: 'getData', userId: userId, dataSet: editor.element, prefix: prefix, navId: navigationId},
|
|
dataType: 'json',
|
|
error: function () {
|
|
console.log(webserviceUrl);
|
|
alert('Fehler beim Holen der Editor-Daten!');
|
|
},
|
|
success: function (data) {
|
|
editor.contentData = data;
|
|
console.log(data);
|
|
editor.fillHtml();
|
|
}
|
|
});
|
|
},
|
|
|
|
fillHtml: function () {
|
|
if (editor.contentHtml === '' || editor.contentData === null) {
|
|
window.setTimeout(editor.fillHtml, 100);
|
|
return;
|
|
}
|
|
|
|
if (editor.type === 'spielbericht') {
|
|
editor.fillSpielBericht();
|
|
}
|
|
|
|
if (editor.type === 'struktur') {
|
|
navigation.setData(editor.contentData);
|
|
navigation.fillData();
|
|
}
|
|
else {
|
|
editor.fillStandard();
|
|
}
|
|
|
|
editor.fillSpecial();
|
|
editor.checkDuration();
|
|
editor.checkDelayed();
|
|
editor.changeSpielBericht();
|
|
|
|
editor.waitingElement.hide();
|
|
},
|
|
|
|
fillSpecial: function () {
|
|
$('#userId', editor.contentElement).val(userId);
|
|
$('#prefix', editor.contentElement).val(prefix);
|
|
$('#dataSet', editor.contentElement).val(editor.element);
|
|
$('#siteId', editor.contentElement).val(navId);
|
|
},
|
|
|
|
fillStandard: function () {
|
|
|
|
$.each(editor.contentData, function (key, value) {
|
|
var input = $('#' + key, editor.contentElement);
|
|
if (input.length == 0) {
|
|
input = $('#' + key + '_' + value, editor.contentElement);
|
|
if (input.length != 0) {
|
|
input[0].checked = true;
|
|
}
|
|
}
|
|
else {
|
|
input.val(value);
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
fillSpielBericht: function () {
|
|
|
|
var teamOptions = '';
|
|
$.each(editorParams.spielbericht.teamname, function (key, value) {
|
|
teamOptions += '<option value="' + value + '">' + value + '</option>';
|
|
});
|
|
$('#teamname', editor.contentElement).html(teamOptions);
|
|
|
|
var spielTypOptions = '';
|
|
$.each(editorParams.spielbericht.spieltyp, function (key, value) {
|
|
var duration = (value === 'pokal') ? 'show' : 'hide';
|
|
var delayed = (value === 'abgesagt') ? 'show' : 'hide';
|
|
spielTypOptions += '<option data-duration="' + duration + '" data-delayed="' + delayed + '" value="' + value + '">' + value + '</option>';
|
|
});
|
|
$('#spieltyp', editor.contentElement).html(spielTypOptions);
|
|
|
|
var spielDauerOptions = '';
|
|
$.each(editorParams.spielbericht.spieldauer, function (key, value) {
|
|
spielDauerOptions += '<option value="' + key + '">' + value + '</option>';
|
|
});
|
|
$('#spieldauer', editor.contentElement).html(spielDauerOptions);
|
|
},
|
|
|
|
changeSpielBericht: function () {
|
|
if (editor.type != 'spielbericht') {
|
|
return true;
|
|
}
|
|
$('#siteId').val(navigationId);
|
|
},
|
|
|
|
checkDuration: function () {
|
|
var durationElement = $('#spieldauer');
|
|
var duration = $('#spieltyp').find(':selected').data('duration');
|
|
if (duration == 'hide') {
|
|
durationElement.val('regular');
|
|
durationElement[0].disabled = true;
|
|
}
|
|
else if (duration == 'show') {
|
|
durationElement[0].disabled = false;
|
|
}
|
|
},
|
|
|
|
checkDelayed: function () {
|
|
var delayedElement = $('#verschoben');
|
|
var delayed = $('#spieltyp').find(':selected').data('delayed');
|
|
if (delayed == 'hide') {
|
|
delayedElement[0].disabled = true;
|
|
}
|
|
else if (delayed == 'show') {
|
|
delayedElement[0].disabled = false;
|
|
}
|
|
},
|
|
|
|
submitData: function () {
|
|
/**
|
|
* Update der Textareas mit Daten aus der CKEditor Instanz
|
|
*/
|
|
editor.waitingElement.show();
|
|
$('textarea.ckeditor').each(function () {
|
|
var textArea = $(this);
|
|
textArea.val(CKEDITOR.instances[textArea.attr('name')].getData());
|
|
});
|
|
|
|
var formData = new FormData(editor.formElement[0]);
|
|
|
|
$.ajax({
|
|
//url: webserviceUrl.replace('remote_data', 'test_data'),
|
|
url: webserviceUrl,
|
|
type: 'POST',
|
|
data: formData,
|
|
processData: false,
|
|
contentType: false,
|
|
error: function (jqXHR, textStatus, errorThrow) {
|
|
console.log(jqXHR);
|
|
console.log(textStatus);
|
|
console.log(errorThrow);
|
|
alert('Bei der Verarbeitung der Daten ist ein Fehler aufgetreten!')
|
|
},
|
|
success: function (data) {
|
|
if (data === 'SUCCESS') {
|
|
location.reload();
|
|
}
|
|
else {
|
|
alert('Bei der Verarbeitung der Daten ist ein Fehler aufgetreten!')
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
navigation = new Object({
|
|
navData: null,
|
|
navPath: [],
|
|
structureHtml: '',
|
|
moveHtml: '',
|
|
breadCrumb: '',
|
|
chosenNavStart: 0,
|
|
chosenNavId: 0,
|
|
chosenData: null,
|
|
|
|
structureElement: null,
|
|
navPointElement: null,
|
|
breadCrumbElement: null,
|
|
showActionElement: null,
|
|
templateElement: null,
|
|
actionChooserElement: null,
|
|
moveChooserElement: null,
|
|
|
|
setData: function (navigationData) {
|
|
navigation.navData = navigationData.navigation;
|
|
navigation.navPath = navigationData.navPath;
|
|
navigation.init();
|
|
},
|
|
|
|
init: function () {
|
|
navigation.initElements();
|
|
navigation.clickEvents();
|
|
},
|
|
|
|
initElements: function () {
|
|
navigation.structureElement = $('#struktur');
|
|
navigation.navPointElement = $('#navPoint');
|
|
navigation.breadCrumbElement = $('#breadCrumb');
|
|
navigation.showActionElement = $('#showAction');
|
|
navigation.templateElement = $('#actionTemplates');
|
|
navigation.moveChooserElement = $('#otherMain_box');
|
|
navigation.actionChooserElement = $('.actionChooser', navigation.templateElement);
|
|
},
|
|
|
|
clickEvents: function () {
|
|
navigation.structureElement.on('click', 'li.open > span', function () {
|
|
var parent = $(this).parent('li');
|
|
parent.removeClass('open');
|
|
parent.addClass('navclose');
|
|
});
|
|
|
|
navigation.structureElement.on('click', 'li.navclose > span', function () {
|
|
var parent = $(this).parent('li');
|
|
parent.removeClass('navclose');
|
|
parent.addClass('open');
|
|
});
|
|
|
|
navigation.navPointElement.on('click', 'li.open > span', function () {
|
|
var parent = $(this).parent('li');
|
|
parent.removeClass('open');
|
|
parent.addClass('navclose');
|
|
});
|
|
|
|
navigation.navPointElement.on('click', 'li.navclose > span', function () {
|
|
var parent = $(this).parent('li');
|
|
parent.removeClass('navclose');
|
|
parent.addClass('open');
|
|
});
|
|
|
|
navigation.structureElement.on('click', 'li.editable', function (event) {
|
|
if (this != event.target) {
|
|
return true;
|
|
}
|
|
navigation.chosenNavStart = $(this).data('navstart');
|
|
navigation.chosenNavId = $(this).data('navid');
|
|
navigation.makeBreadCrumb(this);
|
|
navigation.fillEditArea();
|
|
});
|
|
|
|
navigation.navPointElement.on('click', 'li.editable', function (event) {
|
|
if (this != event.target) {
|
|
return true;
|
|
}
|
|
$('#navStart', editor.formElement).val($(this).data('navid'));
|
|
$('#parentNavName', editor.formElement).val($(this).context.childNodes[1].textContent);
|
|
});
|
|
|
|
navigation.showActionElement.on('click', '[data-show]', function () {
|
|
var action = $(this).data('show');
|
|
navigation.showActionElement.html($('.action' + action, navigation.templateElement).clone());
|
|
});
|
|
|
|
},
|
|
|
|
fillData: function () {
|
|
navigation.makeHtml(0);
|
|
$(navigation.structureElement, editor.contentElement).html(navigation.structureHtml);
|
|
navigation.moveHtml = '<ul><li class="editable open"><span> </span> / ' + navigation.structureHtml + '</li></ul>';
|
|
navigation.moveChooserElement.html(navigation.moveHtml);
|
|
navigation.fillEditArea();
|
|
},
|
|
|
|
makeHtml: function (navStart) {
|
|
var actualNavStartElements = navigation.navData['navStart_' + navStart];
|
|
navigation.structureHtml += '<ul>';
|
|
|
|
$.each(actualNavStartElements, function (key, actualNavElement) {
|
|
var liClass = (actualNavElement[prefix + '_navEditable'] === 'true') ? 'editable ' : 'not_editable ';
|
|
if ($.inArray(actualNavElement[prefix + '_navId'], navigation.navPath) !== -1) {
|
|
liClass += 'open ';
|
|
navigation.breadCrumb += '> ' + actualNavElement[prefix + '_navName'] + ' ';
|
|
}
|
|
else {
|
|
liClass += 'navclose ';
|
|
}
|
|
liClass += (navigation.navData['navStart_' + actualNavElement[prefix + '_navId']] == undefined) ? 'empty ' : '';
|
|
liClass += (actualNavElement[prefix + '_navActive'] != 'Y') ? 'editorDeactive ' : '';
|
|
if (actualNavElement[prefix + '_navId'] == navigationId) {
|
|
liClass += 'editorChosen';
|
|
navigation.chosenNavStart = navStart;
|
|
navigation.chosenNavId = navigationId;
|
|
}
|
|
navigation.structureHtml += '<li data-navstart="' + navStart + '" data-navid="' + actualNavElement[prefix + '_navId'] + '" class="' + liClass + '"><span> </span>' + actualNavElement[prefix + '_navName'];
|
|
if (navigation.navData['navStart_' + actualNavElement[prefix + '_navId']] != undefined) {
|
|
navigation.makeHtml(actualNavElement[prefix + '_navId']);
|
|
}
|
|
navigation.structureHtml += '</li>';
|
|
});
|
|
|
|
navigation.structureHtml += '</ul>';
|
|
},
|
|
|
|
makeBreadCrumb: function (element) {
|
|
navigation.breadCrumb = ' > ' + $(element).context.childNodes[1].textContent;
|
|
|
|
$.each($(element).parents('li'), function () {
|
|
navigation.breadCrumb = ' > ' + ($(this).context.childNodes[1].textContent) + navigation.breadCrumb;
|
|
});
|
|
},
|
|
|
|
fillEditArea: function () {
|
|
navigation.breadCrumbElement.html(navigation.breadCrumb);
|
|
navigation.chosenData = navigation.navData['navStart_' + navigation.chosenNavStart]['navId_' + navigation.chosenNavId];
|
|
|
|
var activeElement = $('span[data-show="Activate"]', navigation.actionChooserElement);
|
|
var deActiveElement = $('span[data-show="Deactivate"]', navigation.actionChooserElement);
|
|
if (navigation.chosenData[prefix + '_navActive'] === 'Y') {
|
|
activeElement.next('br').hide();
|
|
activeElement.hide();
|
|
deActiveElement.next('br').show();
|
|
deActiveElement.show();
|
|
}
|
|
else {
|
|
deActiveElement.next('br').hide();
|
|
deActiveElement.hide();
|
|
activeElement.next('br').show();
|
|
activeElement.show();
|
|
}
|
|
|
|
editor.fillSpecial();
|
|
navigation.fillSpecialData();
|
|
|
|
navigation.showActionElement.html(navigation.actionChooserElement.clone());
|
|
|
|
$.each(navigation.chosenData, function (key, value) {
|
|
$('#' + key.replace(prefix + '_', ''), editor.formElement).val(value);
|
|
/**
|
|
* In den einzelnen Aktions-Templates suchen
|
|
*/
|
|
$.each($('#' + key.replace(prefix + '_', ''), '#actionTemplates div'), function () {
|
|
$(this).val(value);
|
|
});
|
|
|
|
});
|
|
|
|
navigation.navPointElement.show();
|
|
},
|
|
|
|
fillSpecialData: function () {
|
|
navigation.fillPageTypes();
|
|
},
|
|
|
|
fillPageTypes: function () {
|
|
var optionHtml = '';
|
|
|
|
$.each(editorParams.pageTypes, function (key, value) {
|
|
optionHtml += '<option value="' + value + '">' + editorLang.struktur[value] + '</option>';
|
|
});
|
|
|
|
$('.navigationType').html(optionHtml);
|
|
},
|
|
|
|
close: function () {
|
|
navigation.structureHtml = '';
|
|
navigation.navData = null;
|
|
navigation.navPath = [];
|
|
navigation.structureHtml = '';
|
|
navigation.moveHtml = '';
|
|
navigation.breadCrumb = '';
|
|
navigation.chosenNavStart = 0;
|
|
navigation.chosenNavId = 0;
|
|
navigation.chosenData = null;
|
|
|
|
navigation.structureElement = null;
|
|
navigation.navPointElement = null;
|
|
navigation.breadCrumbElement = null;
|
|
navigation.showActionElement = null;
|
|
navigation.templateElement = null;
|
|
navigation.actionChooserElement = null;
|
|
navigation.moveChooserElement = null;
|
|
}
|
|
|
|
|
|
}); |