508 lines
19 KiB
Plaintext
508 lines
19 KiB
Plaintext
include mixins
|
|
include mixins_day
|
|
|
|
doctype html
|
|
html(lang="de", xml:lang="de", xmlns="http://www.w3.org/1999/xhtml")
|
|
include header
|
|
script(src='/javascripts/pfiswebsocket.js')
|
|
script(src='/templates/daycontent.js')
|
|
script(src='/templates/timelinecontent.js')
|
|
script(src='/templates/timeline_eventdetails.js')
|
|
script(src='/templates/pastoralteamcontent.js')
|
|
script(src='/templates/pfarreientimelinecontent.js')
|
|
script(src='/templates/errorview_inlay.js')
|
|
script(src='/templates/pcal/pentry_clone_move.js')
|
|
script(src='/templates/pcal/pentry_clone_move_parishday.js')
|
|
script(src='/javascripts/pcal_pentry_clone_move_manager.js')
|
|
script(src='/templates/pcal/pentry_edit.js')
|
|
script(src='/templates/pcal/edit_event.js')
|
|
script(src='/templates/pcal/edit_away.js')
|
|
script(src='/templates/pcal/edit_todo.js')
|
|
script(src='/templates/pcal/edit_keep_in_mind.js')
|
|
script(src='/templates/pcal/edit_vehicle_use.js')
|
|
script(src='/templates/actorselector_inlay.js')
|
|
script(src='/templates/pastoralunitselector_inlay.js')
|
|
script(src='/templates/locationselector_inlay.js')
|
|
script(src='/templates/locationeditor_inlay.js')
|
|
script(src='/templates/roleeditor_inlay.js')
|
|
script(src='/templates/involvededitor_inlay.js')
|
|
script(src='/templates/messageview_inlay.js')
|
|
script(src='/templates/parishdbpersongroupselector_inlay.js')
|
|
script(src='/javascripts/pcal_pentry_edit_manager.js')
|
|
script(src="/javascripts/typeahead.jquery.min.js")
|
|
link(href="/stylesheets/mytypeahead.css", rel="stylesheet")
|
|
script(src="/javascripts/validator.min.js")
|
|
script(src='/javascripts/runtime.js')
|
|
link(href="/stylesheets/bootstrap-datepicker.min.css", rel="stylesheet")
|
|
script(src='/javascripts/bootstrap-datepicker.min.js' )
|
|
script(src='/javascripts/bootstrap-datepicker.de.min.js' )
|
|
link(href="/stylesheets/style_day.css", rel="stylesheet")
|
|
link(href="/stylesheets/style_week.css", rel="stylesheet")
|
|
style.
|
|
.block-relative { position: relative; width: 100%; }
|
|
.block-absolute { position: absolute; padding-left: 2px; padding-right: 2px; padding-bottom: 2px;}
|
|
.timepoint { font-size: 80%; position: absolute; border-top-style: dotted; border-top-width: 1px; border-top-color: grey; right: -15px; left: -15px; z-index: -5; }
|
|
|
|
/* for pentry_clone_move */
|
|
.cell_element { display: table-cell; }
|
|
.td_new_celebration { padding-top: 10px; }
|
|
.give_margin_left { padding-left: 10px; }
|
|
@media only screen and (max-width: 768px) {
|
|
.cell_element {
|
|
display: block;
|
|
margin-bottom: 15px;
|
|
}
|
|
.td_new_celebration { padding-top: 0px; }
|
|
.give_margin_left { padding-left: 0px; }
|
|
}
|
|
|
|
/* for pentry_edit */
|
|
.panel { margin-bottom: 5px; }
|
|
.panel-title { cursor: pointer; }
|
|
//- .panel_group_and_unit { border-width: 3px; }
|
|
|
|
/* The sticky class is added to the header with JS when it reaches its scroll position */
|
|
.sticky {
|
|
position: fixed;
|
|
top: 0;
|
|
z-index: 5;
|
|
}
|
|
|
|
body
|
|
script.
|
|
console.log(history.state);
|
|
|
|
if(history.state === null || typeof history.state.direction === 'undefined')
|
|
{
|
|
history.replaceState({direction: 'back'}, document.title, "/#{viewformat}/#{date.date}?back=false");
|
|
history.pushState({direction: 'mainpage', date: "#{date.date}", scrollto: ''}, document.title, "/#{viewformat}/#{date.date}");
|
|
}
|
|
else
|
|
console.log(history.state.direction);
|
|
|
|
|
|
.modal.fade(id="daypickerDialog", role="dialog", aria-labelledby="daypickerDialogLabel", aria-hidden="true")
|
|
.modal-dialog(role="document")
|
|
.modal-content
|
|
.modal-header
|
|
button(type="button", class="close", data-dismiss="modal", aria-hidden="true") ×
|
|
h4(class="modal-title" id="daypickerDialogLabel") Datum anspringen
|
|
.modal-body
|
|
#datepicker()
|
|
.modal-footer
|
|
button(type="button", class="btn btn-default", data-dismiss="modal") Abbrechen
|
|
button(type="button", class="btn btn-success", id="confirm") Anspringen
|
|
|
|
+standard_delete_dialog("confirmDelete")
|
|
|
|
#pentry_clone_move_parent.sidewideoverlay(style="z-index: 5;")
|
|
|
|
#pentry_edit_parent.sidewideoverlay(style="z-index: 5;")
|
|
|
|
#daymainview.root
|
|
|
|
.new_flex_zero
|
|
+nav_main_primary(viewformat, date.date)
|
|
|
|
#dataparent.subroot.full_height(style="margin-top: 5px;")
|
|
if viewformat == "timeline"
|
|
+timeline(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
|
else if viewformat == "pastoralteam"
|
|
+pastoralteam(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
|
else if viewformat == "pfarreientimeline"
|
|
+pfarreientimeline(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
|
else
|
|
+daycontent(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
|
|
|
- var d = JSON.stringify(date);
|
|
|
|
script.
|
|
var ws;
|
|
var viewformat = "#{viewformat}";
|
|
|
|
var pcal_pentry_clone_move_manager;
|
|
var pcal_pentry_edit_manager;
|
|
|
|
var saved_messages = [];
|
|
|
|
$(document).ready(function() {
|
|
ws = new PfISWebSocket("#{sessionuuid}");
|
|
ws.bind_standard_close_handler();
|
|
|
|
|
|
pcal_pentry_clone_move_manager = new pcalPentryCloneMoveManager(ws, "#{viewformat}");
|
|
pcal_pentry_clone_move_manager.set_date(!{d});
|
|
|
|
pcal_pentry_edit_manager = new pcalPentryEditManager(ws);
|
|
pcal_pentry_edit_manager.set_date(!{d});
|
|
|
|
/*if("#{event}" !== "") {
|
|
ws.bind('open', function() {day_show_event("#{date.date}", "#{event}");});
|
|
}*/
|
|
|
|
|
|
ws.bind('get_parishday_result', function(data){
|
|
var scrollto = '';
|
|
if(history.state && history.state.scrollto)
|
|
scrollto = history.state.scrollto;
|
|
// console.log('scrollto:', scrollto);
|
|
|
|
// history.replaceState({direction: 'back'}, document.title, '/'+ viewformat + '/' + data.date.date + '?back=false');
|
|
if(history.state && history.state.date && history.state.date === data.date.date && history.state.direction === "mainpage")
|
|
{
|
|
console.log('NO new entry in history created')
|
|
}
|
|
else {
|
|
history.pushState({direction: 'mainpage', date: data.date.date }, document.title, '/'+ viewformat + '/' + data.date.date) ;
|
|
console.log('new entry in history created')
|
|
}
|
|
|
|
update_navlinks(data.date.date); // navlinks include the current date, so they must always be updated!
|
|
|
|
var html;
|
|
switch(viewformat) {
|
|
case "timeline" : html = timelinecontent_template(data); break;
|
|
case "pastoralteam" : html = pastoralteamcontent_template(data); break;
|
|
case "pfarreientimeline" : html = pfarreientimelinecontent_template(data); break;
|
|
default : html = daycontent_template(data); break;
|
|
}
|
|
$('#dataparent').html(html);
|
|
|
|
for(midx in saved_messages)
|
|
$('#daycontrol_parent').append(saved_messages[midx]);
|
|
saved_messages = [];
|
|
|
|
if((viewformat === "timeline" || viewformat === "pastoralteam" || viewformat === "pfarreientimeline") && scrollto !== '') {
|
|
var the_elem = $("[data-event-uuid='" + scrollto + "']");
|
|
// this event (the_elem) might have been deleted!!!
|
|
if(the_elem.length > 0) {
|
|
$('#timelinebody').parent().parent().animate({
|
|
scrollTop: the_elem.offset().top - $("#timelinebody").offset().top
|
|
}, 1000);
|
|
}
|
|
}
|
|
|
|
pcal_pentry_clone_move_manager.set_date(data.date);
|
|
pcal_pentry_edit_manager.set_date(data.date);
|
|
|
|
//console.log("FINISHED REDRAW", new Date());
|
|
});
|
|
|
|
ws.bind('event_details_result', function(data) {
|
|
console.log('event_details_result');
|
|
|
|
if(data.result === "OK") {
|
|
if(history.state.direction !== 'day_show_event')
|
|
if(history.state.direction === 'day_show_event_after_edit')
|
|
history.replaceState({direction: 'day_show_event', event_uuid: data.event.uuid, date: data.date.date}, document.title, location.pathname /* + '/' + data.event.uuid*/);
|
|
else
|
|
history.pushState({direction: 'day_show_event', event_uuid: data.event.uuid, date: data.date.date}, document.title, location.pathname /* + '/' + data.event.uuid*/);
|
|
var html = timeline_eventdetails_template({date : data.date, litinfo: data.litinfo, event: data.event, pcalview: viewformat} );
|
|
$('#dataparent').html(html);
|
|
}
|
|
else {
|
|
if(history.state.direction !== 'day_show_event')
|
|
history.pushState({direction: 'day_show_event', event_uuid: 'invalid', date: data.date.date}, document.title, location.pathname);
|
|
else
|
|
history.replaceState({direction: 'day_show_event', event_uuid: 'invalid', date: data.date.date}, document.title, location.pathname);
|
|
var html = errorview_inlay_template({ messages: data.messages, is_error: true, session_ended: false});
|
|
$('#dataparent').html(html);
|
|
}
|
|
});
|
|
|
|
ws.bind('pentry_delete_result', function(data) {
|
|
console.log("pentry_delete_result");
|
|
console.log(data);
|
|
|
|
var message = errorview_inlay_template({ messages: data.messages, is_error: (data.result === 'OK' ? false : true), session_ended: false});
|
|
|
|
if(data.pentrytype !== 'event') {
|
|
if(data.result === 'OK') {
|
|
var button = $('[data-pentry-uuid="'+ data.uuid + '"]');
|
|
var type = data.pentrytype;
|
|
var box = button.closest('.' + type);
|
|
box.remove();
|
|
}
|
|
|
|
$('#daycontrol_parent').append(message);
|
|
}
|
|
else {
|
|
saved_messages.push(message);
|
|
history.back();
|
|
}
|
|
|
|
$('#confirmDelete').modal('hide');
|
|
});
|
|
|
|
ws.bind('tevent_delete_result', function(data) {
|
|
console.log(data);
|
|
|
|
if(data.result === "OK") {
|
|
|
|
var delete_button = $('[data-event-uuid="'+ data.event + '"][data-tevent-uuid="'+ data.tevent + '"]');
|
|
|
|
console.log(delete_button);
|
|
|
|
var eventbox = delete_button.closest('.eventbox');
|
|
var number_of_children = eventbox.parent().children().length;
|
|
|
|
console.log('number_of_children: ', number_of_children);
|
|
|
|
if(number_of_children > 1) {
|
|
if(eventbox.is(':first-child')) { // disable up-button
|
|
$(eventbox.next().find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
|
}
|
|
if(eventbox.is(':last-child')) { // disable down-ubtton
|
|
$(eventbox.prev().find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
|
}
|
|
}
|
|
|
|
eventbox.remove();
|
|
}
|
|
else
|
|
console.log('tevent_delete_result: ', data);
|
|
|
|
$('#confirmDelete').modal('hide');
|
|
});
|
|
|
|
function adjust_updown_buttons(teventbox) {
|
|
if(teventbox.is(':first-child'))
|
|
{
|
|
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
|
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
|
}
|
|
else
|
|
{
|
|
if(teventbox.is(':last-child'))
|
|
{
|
|
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
|
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
|
}
|
|
else
|
|
{
|
|
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
|
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
|
}
|
|
}
|
|
}
|
|
|
|
ws.bind('tevent_move_updown_result',function(data){
|
|
console.log(data);
|
|
|
|
// via the delete_button we can get the eventbox!
|
|
var delete_button = $('[data-event-uuid="'+ data.event + '"][data-tevent-uuid="'+ data.tevent + '"]');
|
|
var eventbox = delete_button.closest('.eventbox');
|
|
var other = {};
|
|
/* http://stackoverflow.com/questions/3050830/reorder-list-elements-jquery */
|
|
if(data.updown === "down")
|
|
{
|
|
next = eventbox.next();
|
|
next.after(eventbox);
|
|
other = next;
|
|
}
|
|
else /* up */
|
|
{
|
|
prev = eventbox.prev();
|
|
prev.before(eventbox);
|
|
other = prev;
|
|
}
|
|
adjust_updown_buttons(eventbox);
|
|
adjust_updown_buttons(other);
|
|
|
|
/* $('body').loading('stop'); */
|
|
});
|
|
|
|
if(history.state.direction === 'day_show_event' && history.state.event_uuid != 'invalid')
|
|
{
|
|
ws.bind('open', function() {day_show_event("#{date.date}", history.state.event_uuid)});
|
|
}
|
|
else if(history.state.direction === 'clone_move')
|
|
{
|
|
ws.bind('open', function() {pcal_pentry_clone_move_manager.start(history.state.pentrytype, history.state.uuid, history.state.clone_or_move);});
|
|
}
|
|
else if(history.state.direction.substr(0,12) === 'pentry_edit_')
|
|
{
|
|
ws.bind('open', function() {pcal_pentry_edit_manager.start(history.state.pentrytype, history.state.uuid);});
|
|
}
|
|
|
|
if("#{scrollto}" !== "") {
|
|
$('#timelinebody').animate({
|
|
scrollTop: $("[data-event-uuid='#{scrollto}']").offset().top - $("#timelinebody").offset().top
|
|
}, 1000);
|
|
}
|
|
|
|
});
|
|
|
|
function set_viewformat(format, new_date) {
|
|
viewformat = format;
|
|
day_goto(new_date);
|
|
}
|
|
|
|
function update_navlinks(new_date) {
|
|
var day_elem = $('.navbar-collapse > ul > li:nth(0) > a');
|
|
var tml_elem = $('.navbar-collapse > ul > li:nth(1) > a');
|
|
var pt_elem = $('.navbar-collapse > ul > li:nth(2) > a');
|
|
var pfrtl_elem = $('.navbar-collapse > ul > li:nth(3) > a');
|
|
|
|
var week_elem = $('.navbar-collapse > ul > li:nth(4) > a');
|
|
week_elem.prop('href', '/week/' + new_date);
|
|
var select_for_view_elem = $('#select_punits_for_view').closest('a');
|
|
select_for_view_elem.prop("href", "/"+ viewformat +"/"+new_date+"/select_punits_for_view");
|
|
var parishcalA4week_elem = $('#parishcalA4week').closest('a');
|
|
parishcalA4week_elem.prop("href", "/parishcalA4week/" + new_date);
|
|
|
|
switch(viewformat) {
|
|
case "timeline":
|
|
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
|
day_elem.parent().removeClass("active");
|
|
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
|
pt_elem.parent().removeClass("active");
|
|
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
|
pfrtl_elem.parent().removeClass("active");
|
|
tml_elem.prop("href", "#");
|
|
tml_elem.parent().addClass("active");
|
|
break;
|
|
case "pastoralteam":
|
|
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
|
day_elem.parent().removeClass("active");
|
|
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
|
tml_elem.parent().removeClass("active");
|
|
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
|
pfrtl_elem.parent().removeClass("active");
|
|
pt_elem.prop("href", "#");
|
|
pt_elem.parent().addClass("active");
|
|
break;
|
|
case "pfarreientimeline":
|
|
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
|
day_elem.parent().removeClass("active");
|
|
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
|
tml_elem.parent().removeClass("active");
|
|
pfrtl_elem.prop("href", "#");
|
|
pfrtl_elem.parent().addClass("active");
|
|
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
|
pt_elem.parent().removeClass("active");
|
|
break;
|
|
default:
|
|
day_elem.prop("href", "#");
|
|
day_elem.parent().addClass("active");
|
|
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
|
tml_elem.parent().removeClass("active");
|
|
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
|
pt_elem.parent().removeClass("active");
|
|
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
|
pfrtl_elem.parent().removeClass("active");
|
|
}
|
|
|
|
//console.log("UPDATED NAVLINKS", new Date());
|
|
}
|
|
|
|
function day_goto(new_date) {
|
|
ws.send('get_parishday', {format : viewformat, date : new_date});
|
|
}
|
|
|
|
function day_show_event(date, event) {
|
|
//console.log('day_show_event', date, event);
|
|
history.replaceState({direction: 'mainpage', date: date, scrollto: event }, document.title, "/" + viewformat + "/" + date) ;
|
|
//console.log(ws);
|
|
ws.send('event_details', { date: date, event: event});
|
|
}
|
|
|
|
$('#datepicker').datepicker({format: "yyyy-mm-dd", language: "de", calendarWeeks: true, todayHighlight: true});
|
|
|
|
$('#daypickerDialog').on('show.bs.modal', function (e) {
|
|
date = $(e.relatedTarget).attr('data-date');
|
|
$('#datepicker').datepicker("update", date);
|
|
});
|
|
|
|
$('#daypickerDialog').find('.modal-footer #confirm').on('click', function() {
|
|
$('#daypickerDialog').modal('hide');
|
|
//console.log('CLICKED');
|
|
day_goto($("#datepicker").datepicker('getFormattedDate'));
|
|
});
|
|
|
|
function toggle_pentrydetails_visibility(pentry) {
|
|
$(pentry).find(".pentry_details").toggle();
|
|
}
|
|
|
|
$('#confirmDelete').on('show.bs.modal', function (e) {
|
|
if(pcal_pentry_edit_manager.is_active()) {
|
|
pcal_pentry_edit_manager.deletedialog_handle_show($(this), e);
|
|
return;
|
|
}
|
|
|
|
$etitle = $(e.relatedTarget).attr('data-pentry-title');
|
|
$(this).find('.modal-body p').text("Sind Sie sicher, dass Sie " + $etitle + " löschen wollen?");
|
|
|
|
$(this).find('.modal-footer #confirm').data('button', $(e.relatedTarget));
|
|
});
|
|
|
|
$('#confirmDelete').find('.modal-footer #confirm').on('click', function() {
|
|
if(pcal_pentry_edit_manager.is_active()) {
|
|
pcal_pentry_edit_manager.deletedialog_handle_confirm($(this));
|
|
return;
|
|
}
|
|
|
|
var delete_button = $(this).data('button');
|
|
|
|
var date = delete_button.data('date');
|
|
var type = delete_button.data('pentry-type');
|
|
|
|
if(type === "tevent") {
|
|
console.log('delete tevent');
|
|
var event = delete_button.data('event-uuid');
|
|
var tevent = delete_button.data('tevent-uuid');
|
|
|
|
console.log(date, event, tevent);
|
|
|
|
ws.send('tevent_delete', { date: date, event: event, thereafter: tevent });
|
|
|
|
return;
|
|
}
|
|
|
|
var uuid = delete_button.data('pentry-uuid');
|
|
|
|
console.log(date, type, uuid);
|
|
|
|
ws.send('pentry_delete', { date: date, pentrytype: type, uuid: uuid });
|
|
});
|
|
|
|
do_tevent_move_updown = function(button, date, event, tevent, updown) {
|
|
ws.send('tevent_move_updown', { date: date, event: event, thereafter: tevent, updown: updown });
|
|
}
|
|
|
|
window.addEventListener("popstate", function(e) {
|
|
console.log(e.state);
|
|
if(e.state !== null) {
|
|
if(e.state.direction === "back") {
|
|
history.go(1);
|
|
return;
|
|
}
|
|
if(e.state.direction === "mainpage"){
|
|
// clone_move/edit _manager is active if user clicked on back-button in browser; handle this here:
|
|
if(pcal_pentry_clone_move_manager.is_active())
|
|
pcal_pentry_clone_move_manager.finish();
|
|
if(pcal_pentry_edit_manager.is_active())
|
|
pcal_pentry_edit_manager.finish();
|
|
|
|
day_goto(e.state.date);
|
|
return;
|
|
}
|
|
if(e.state.direction === "pentry_edit_main" && pcal_pentry_edit_manager.is_active())
|
|
{
|
|
pcal_pentry_edit_manager.show_edit_main();
|
|
return;
|
|
}
|
|
if(e.state.direction.substr(0, 12) === "pentry_edit_")
|
|
{
|
|
history.go(-1);
|
|
}
|
|
if(e.state.direction === "day_show_event_after_edit")
|
|
{
|
|
pcal_pentry_edit_manager.finish();
|
|
}
|
|
|
|
history.replaceState({direction: "mainpage", date: e.state.date}, document.title)
|
|
day_goto(e.state.date);
|
|
}
|
|
}, false);
|