636 lines
17 KiB
JavaScript
636 lines
17 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
|
|
var jsonsrv = require('../lib/jsonsrv');
|
|
var eventutils = require('../lib/eventutils');
|
|
|
|
router.get('/:day/:event', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "event_details",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
res.render("event_details", { date: result.date.date, event: result.event });
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
});
|
|
|
|
function event_from_session(req)
|
|
{
|
|
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
|
{
|
|
console.log("-> day undefined");
|
|
return null;
|
|
}
|
|
if(typeof req.session.cache.days[req.params.day].events[req.params.event] === 'undefined')
|
|
{
|
|
console.log("-> event undefined");
|
|
return null;
|
|
}
|
|
return req.session.cache.days[req.params.day].events[req.params.event];
|
|
}
|
|
|
|
function event_from_session_is_invalid(req, res, ev)
|
|
{
|
|
if(ev === null)
|
|
{
|
|
console.log('EVENT UNDEFINED!');
|
|
console.log(req.params);
|
|
res.redirect('/day');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/*function delete_event_if_nothing_is_edited(day, event)
|
|
{
|
|
if(event.in_editing)
|
|
return;
|
|
|
|
var can_delete = true;
|
|
for(idx in event.thereafter)
|
|
{
|
|
if(event.thereafter[idx].in_editing === true)
|
|
{
|
|
can_delete = false;
|
|
break;
|
|
}
|
|
}
|
|
if(can_delete)
|
|
{
|
|
var found = false;
|
|
var idx;
|
|
for(idx in day.events)
|
|
{
|
|
console.log("DELETE_IDX", idx);
|
|
if(day.events[idx].uuid === event.uuid)
|
|
{
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(found)
|
|
{
|
|
console.log("DELETING EVENT: ", event.uuid);
|
|
delete day.events[event.uuid];
|
|
}
|
|
}
|
|
}*/
|
|
|
|
function end_event_editing(day, event) {
|
|
event.in_editing = false;
|
|
|
|
eventutils.delete_event_if_nothing_is_edited(day, event);
|
|
}
|
|
|
|
router.get('/:day/:event/cancel', function(req, res, next) {
|
|
end_event_editing( req.session.cache.days[req.params.day],
|
|
req.session.cache.days[req.params.day].events[req.params.event]);
|
|
|
|
console.log('NOW REDIRECT');
|
|
|
|
switch(req.query.pcalview) {
|
|
case 'timeline': {
|
|
if(req.params.event.substring(0, 4) === "new_")
|
|
res.redirect("/timeline/" + req.params.day);
|
|
else
|
|
res.redirect('/timeline/' + req.params.day + '/' + req.params.event);
|
|
break;
|
|
}
|
|
default: {
|
|
if(req.params.event.substring(0, 4) === "new_")
|
|
res.redirect("/day/" + req.params.day + "?back=false");
|
|
else
|
|
res.redirect('/day/' + req.params.day + '/' +req.params.event);
|
|
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
router.post('/:day/:event/commit', function(req, res, next) {
|
|
|
|
var event = event_from_session(req);
|
|
console.log("EVENT_form_session: ", event, "\n___");
|
|
if(event_from_session_is_invalid(req, res, event))
|
|
return;
|
|
|
|
//event.punit = { name : req.body.punit_name, dn : req.body.punit_dn };
|
|
event.name = req.body.edit_name;
|
|
event.name_secondary = req.body.edit_name_secondary;
|
|
event.visibility = req.body.combo_type;
|
|
event.start = req.body.edit_begin;
|
|
event.end = req.body.edit_end;
|
|
if(event.end !== "")
|
|
event.end_is_vague = (req.body.check_end_is_vague === "on" ? true : false);
|
|
event.description = req.body.area_description;
|
|
event.annotations = req.body.area_annotations;
|
|
|
|
console.log(event);
|
|
|
|
var data = {
|
|
"request" : "commit_event",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
"event_data" : event
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK") {
|
|
end_event_editing(req.session.cache.days[req.params.day], event);
|
|
|
|
switch(req.body.pcalview) {
|
|
case 'pfarreientimeline' : {
|
|
if(req.params.event.substr(0,4) === "new_")
|
|
res.redirect("/pfarreientimeline/" + req.params.day + "?scrollto=" + request.uuid);
|
|
else
|
|
res.redirect('/pfarreientimeline/' + req.params.day + '/' + req.params.event);
|
|
}
|
|
case 'pastoralteam' : {
|
|
if(req.params.event.substr(0,4) === "new_")
|
|
res.redirect("/pastoralteam/" + req.params.day + "?scrollto=" + request.uuid);
|
|
else
|
|
res.redirect('/pastoralteam/' + req.params.day + '/' + req.params.event);
|
|
}
|
|
case 'timeline': {
|
|
if(req.params.event.substr(0,4) === "new_")
|
|
res.redirect("/timeline/" + req.params.day + "?scrollto=" + request.uuid);
|
|
else
|
|
res.redirect('/timeline/' + req.params.day + '/' + req.params.event);
|
|
}
|
|
default : {
|
|
if(req.params.event.substr(0,4) === "new_")
|
|
res.redirect("/day/" + req.params.day + "?back=false");
|
|
else
|
|
res.redirect('/day/' + req.params.day + '/' + req.params.event);
|
|
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
}
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
});
|
|
|
|
generateUID = function() {
|
|
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
|
}
|
|
|
|
function render_event_edit(req, res) {
|
|
var event_href = "/event/" + req.params.day + "/" + req.params.event;
|
|
|
|
var the_event = req.session.cache.days[req.params.day].events[req.params.event];
|
|
|
|
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
|
pentrytype: "event",
|
|
pentrytype_pretty: "Ereignis",
|
|
pentry: the_event,
|
|
pentry_href : event_href,
|
|
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
|
edit_type: (the_event.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
|
|
|
console.log('render_event_edit');
|
|
}
|
|
|
|
router.get('/:day/:event/edit', function(req, res, next) {
|
|
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
|
if(typeof req.session.cache.days[req.params.day].events[req.params.event] !== 'undefined') {
|
|
if(req.session.cache.days[req.params.day].events[req.params.event].in_editing === true) {
|
|
render_event_edit(req, res);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
var day = {
|
|
events: {},
|
|
away : {},
|
|
keep_in_mind : {},
|
|
todo : {},
|
|
vehicle_use : {}
|
|
};
|
|
|
|
req.session.cache.days[req.params.day] = day;
|
|
|
|
console.log(req.session.cache.days);
|
|
|
|
console.log("created new day:");
|
|
console.log(req.session.cache.days[req.params.day]);
|
|
}
|
|
|
|
if(req.params.event === "new") {
|
|
var data = {
|
|
"request" : "get_parishday",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
req.session.cache.days[req.params.day].date = result.day.date;
|
|
req.session.date = result.day.date;
|
|
|
|
var uuid = "new_" + generateUID();
|
|
var new_event = eventutils.create_empty_event();
|
|
new_event.uuid = uuid;
|
|
new_event.in_editing = true;
|
|
new_event.thereafter = {};
|
|
req.session.cache.days[req.params.day].events[uuid] = new_event;
|
|
|
|
//render_event_edit(req, res );
|
|
var pcalview = "";
|
|
if(req.query.pcalview)
|
|
pcalview = '?pcalview='+req.query.pcalview;
|
|
res.redirect('/event/'+req.params.day+'/'+uuid+'/edit' + pcalview);
|
|
}
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
var data =
|
|
{
|
|
"request" : "event_details",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
req.session.date = result.date;
|
|
req.session.cache.days[req.params.day].date = result.date;
|
|
|
|
// the event-object might exist, if there is a thereafter of it editet in the same session (other window)
|
|
// so we create it only, if it does not exist, so that thereafters in editing are not deleted!
|
|
if(! req.session.cache.days[req.params.day].events[req.params.event] ) {
|
|
console.log("creating new event-object for ", req.params.day, "/", req.params.event);
|
|
req.session.cache.days[req.params.day].events[req.params.event] = { thereafter: {} };
|
|
}
|
|
else
|
|
console.log("using existing (from thereafter!) event-object for ", req.params.day, "/", req.params.event);
|
|
|
|
eventutils.copy_event_without_thereafter(req.session.cache.days[req.params.day].events[req.params.event], result.event)
|
|
req.session.cache.days[req.params.day].events[req.params.event].in_editing = true;
|
|
|
|
console.log("NOW ADDING UIDs");
|
|
eventutils.add_uids_to_event(req.session.cache.days[req.params.day].events[req.params.event]);
|
|
/* NOT NECCESSARY: WE DO NOT SAVE THEREAFTERS WHICH WE GOT IN THIS event_details-call!
|
|
// they are loaded, when we edit them (see tevents.js!)
|
|
thereafter = req.session.cache.days[req.params.day].events[req.params.event].thereafter;
|
|
for(idx in thereafter)
|
|
{
|
|
add_uids_to_event(thereafter[idx]);
|
|
thereafter[idx].in_editing = false;
|
|
}*/
|
|
console.log("END ADDING UIDs");
|
|
|
|
render_event_edit(req, res);
|
|
}
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
/*router.get('/:day/:event/clone', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "event_details",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv(req, res, data,
|
|
function(req, res, result) {
|
|
if(result.result === "OK")
|
|
res.render("pentrymove", { pentrytype: "event",
|
|
date : result.date.date,
|
|
uuid : result.event.uuid,
|
|
clone_or_move: "clone",
|
|
clone_or_move_pretty_verb: "geklont",
|
|
clone_or_move_pretty_noun: "Klonen",
|
|
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
|
pentryname: "das Ereignis \"" + result.event.name +"\"",
|
|
});
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
});
|
|
|
|
router.get('/:day/:event/move', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "event_details",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
res.render("pentrymove", { pentrytype: "event",
|
|
date : result.date.date,
|
|
uuid : result.event.uuid,
|
|
clone_or_move: "move",
|
|
clone_or_move_pretty_verb: "verschoben",
|
|
clone_or_move_pretty_noun: "Verschieben",
|
|
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
|
pentryname: "das Ereignis \"" + result.event.name +"\"",
|
|
});
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
});*/
|
|
|
|
router.post('/:day/:event/delete', function(req, res, next) {
|
|
console.log(req.body);
|
|
|
|
var data = {
|
|
"request" : "delete_event",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"date" : req.params.day,
|
|
"event" : req.params.event,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv(req, res, data,
|
|
function(req, res, result) {
|
|
if(result.result === "OK")
|
|
res.redirect("/day/" + req.params.day + "?back=false");
|
|
else
|
|
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
|
},
|
|
function(error) {
|
|
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|
|
|
|
/*
|
|
|
|
router.get('/:day/:event/select_pastoralunit', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "get_all_pastoralunits",
|
|
"sessionuuid" : req.session.sessionuuid
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
var event = event_from_session(req);
|
|
|
|
res.render("pastoralunitselector", {
|
|
actual_punit_dn : event.punit.dn,
|
|
actual_punit_name: event.punit.name,
|
|
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
|
pastoralunits: result.pastoralunits
|
|
});
|
|
}
|
|
else
|
|
res.redirect("/login");
|
|
},
|
|
redirect_to_login);
|
|
});
|
|
|
|
router.post('/:day/:event/pastoralunit_selected', function(req, res, next) {
|
|
var event = event_from_session(req);
|
|
event.punit.dn = req.body.actual_punit_dn;
|
|
event.punit.name = req.body.actual_punit_name;
|
|
|
|
console.log(event);
|
|
|
|
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
|
});
|
|
|
|
router.get('/:day/:event/add_predefined_location', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "get_all_predefined_locations",
|
|
"sessionuuid": req.session.sessionuuid,
|
|
"omitt" : []
|
|
};
|
|
|
|
for(idx in req.session.event.locations)
|
|
{
|
|
var loc = req.session.event.locations[idx];
|
|
if(loc.id != "other")
|
|
data.omitt.push(loc.id);
|
|
}
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
res.render("locationselector", {
|
|
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
|
units: result.locations
|
|
});
|
|
}
|
|
else
|
|
res.redirect('/login');
|
|
},
|
|
function(error) {
|
|
res.redirect('/login');
|
|
});
|
|
});
|
|
|
|
router.post('/:day/:event/add_predefined_location', function(req, res, next) {
|
|
|
|
var loc =
|
|
{
|
|
uid : generateUID(),
|
|
name : req.body.actual_location_name,
|
|
sign : req.body.actual_location_sign,
|
|
id : req.body.actual_location_id
|
|
};
|
|
|
|
var event = event_from_session(req);
|
|
|
|
event.locations.push(loc);
|
|
|
|
console.log(event.locations);
|
|
|
|
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit#locations");
|
|
});
|
|
|
|
router.get('/:day/:event/add_actor', function(req, res, next) {
|
|
var data =
|
|
{
|
|
"request" : "get_all_actors",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
"omitt" : []
|
|
};
|
|
|
|
var role = '';
|
|
|
|
if(typeof req.query.role !== 'undefined')
|
|
{
|
|
role = req.query.role;
|
|
console.log('ADD ACTOR FOR ROLE '+req.query.role);
|
|
}
|
|
|
|
var event = event_from_session(req);
|
|
var the_involved = get_involved_from_event(event, role);
|
|
|
|
for(a in the_involved)
|
|
{
|
|
var actor = the_involved[a];
|
|
if(actor.id !== "other" && actor.id !== "dn")
|
|
data.omitt.push(actor.id);
|
|
}
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
res.render("actorselector", {
|
|
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
|
units: result.actors,
|
|
for_role: role
|
|
});
|
|
}
|
|
else
|
|
res.redirect("/login");
|
|
},
|
|
redirect_to_login);
|
|
});
|
|
|
|
router.post('/:day/:event/add_actor', function(req, res, next) {
|
|
|
|
var actor =
|
|
{
|
|
uid : generateUID(),
|
|
name : req.body.actual_actor_name,
|
|
id : req.body.actual_actor_id
|
|
};
|
|
|
|
var event = event_from_session(req);
|
|
var the_involved = get_involved_from_event(event, req.body.for_role);
|
|
|
|
the_involved.push(actor);
|
|
|
|
console.log(the_involved);
|
|
|
|
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
|
});
|
|
|
|
function do_add_edit_role(req, res, next, pentry_edit_base, submit_dest, role_uid)
|
|
{
|
|
var data =
|
|
{
|
|
"request" : "get_predefined_roles",
|
|
"sessionuuid" : req.session.sessionuuid,
|
|
};
|
|
|
|
jsonsrv.do_jsonsrv2(data,
|
|
function(result) {
|
|
if(result.result === "OK")
|
|
{
|
|
var event = event_from_session(req);
|
|
var role_name = '';
|
|
if(submit_dest == 'edit_role')
|
|
{
|
|
role_name = get_role_from_uid(event, role_uid).name;
|
|
}
|
|
|
|
var already_defined_roles = [];
|
|
for( idx in event.involved_roles )
|
|
{
|
|
if(event.involved_roles[idx].name !== role_name)
|
|
already_defined_roles.push(event.involved_roles[idx].name);
|
|
}
|
|
|
|
res.render("roleeditor", {
|
|
pentry_edit_base: pentry_edit_base,
|
|
roles : result.roles,
|
|
submit_dest : submit_dest,
|
|
role_name : role_name,
|
|
role_uid : role_uid,
|
|
already_defined_roles : already_defined_roles
|
|
});
|
|
}
|
|
else
|
|
res.redirect("/login");
|
|
},
|
|
redirect_to_login);
|
|
}
|
|
|
|
router.get('/:day/:event/add_role', function(req, res, next) {
|
|
do_add_edit_role(req, res, next, '/event/' + req.params.day + '/' + req.params.event, 'add_role', '')
|
|
});
|
|
|
|
router.get('/:day/:event/edit_role/:role', function(req, res, next) {
|
|
do_add_edit_role(req, res, next, '/event/' + req.params.day + '/' + req.params.event, 'edit_role', req.params.role)
|
|
});
|
|
|
|
router.post('/event/:day/:event/add_role', function(req, res, next) {
|
|
var role =
|
|
{
|
|
uid : generateUID(),
|
|
name : req.body.role_name,
|
|
involved : []
|
|
};
|
|
|
|
var event = event_from_session(req);
|
|
|
|
event.involved_roles.push(role);
|
|
|
|
console.log(event);
|
|
|
|
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
|
});
|
|
|
|
router.post('/:day/:event/edit_role', function(req, res, next) {
|
|
console.log(req.body);
|
|
|
|
var event = event_from_session(req);
|
|
get_role_from_uid(event, req.body.role_uid).name = req.body.role_name;
|
|
|
|
console.log(event);
|
|
|
|
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
|
});
|
|
|
|
|
|
*/
|