2020-11-19 23:11:33 +01:00
< html >
< head >
< title > Ansicht Aufgaben< / title >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< meta http-equiv = "content-type" content = "text/html; charset=utf-8" >
< meta name = "author" content = "Stefan Pichel" >
2020-11-19 23:11:36 +01:00
< link rel = "stylesheet" type = "text/css" href = "css/bestformat.css?v=1.5.3" >
2020-11-19 23:11:33 +01:00
< link rel = "stylesheet" href = "php/contenthandler.php?module=admin&command=getmobilecss" / >
< link rel = "stylesheet" href = "php/3rdparty/orderstyle/jquery.mobile.icons.min.css" / >
< link rel = "stylesheet" href = "php/3rdparty/jquery.mobile-1.4.0.min.css" type = "text/css" / >
< script src = "php/3rdparty/jquery-1.11.3.min.js" > < / script >
< script src = "php/3rdparty/jquery.mobile-1.4.5.min.js" > < / script >
2020-11-19 23:11:36 +01:00
< script src = "utilities.js?v=1.5.3" > < / script >
2020-11-19 23:11:33 +01:00
< link rel = "stylesheet" href = "php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" / >
< script src = "php/3rdparty/jqueryui1-11-4/jquery-ui.min.js" > < / script >
< script src = "php/3rdparty/jqueryui1-11-4/jquery-ui-i18n.min.js" > < / script >
< link rel = "stylesheet" href = "php/3rdparty/jquerymobiledatepicker/jquery.mobile.datepicker.css" / >
< script src = "php/3rdparty/jquerymobiledatepicker/jquery.mobile.datepicker.js" > < / script >
< / head >
< body >
< script >
var TASKS_UPDATE = ["Aktualisieren","Update","Actualizar"];
var TASK_OVERVIEW_TXT = ["Übersicht","Overview","Resumen"];
var TASKS_NEW_TASK = ["Neue Aufgabe","New task","Tarea nueva"];
var TASK_CHANGE = ["Ändern","Change","Modificar"];
var TASK_DELETE = ["Löschen","Delete","Removar"];
var TASKS_CREATE = ["Erstellen","Create","Crear"];
var TASKS_SUMMARY = ["Thema","Topic","Tema"];
var TASKS_DESCRIPTION = ["Beschreibung","Description","Descripcion"];
var TASK_PRIO = ["Priorität","Priroty","Prio"];
var TASK_PRIO_LEVELS = [
["1 - sehr wichtig","2 - wichtig", "3 - normal","4 - unwichtig","5 - sehr unwichtig"],
["1 - very important","2 - important","3 - normal","4 - unimportant","5 - irrelevant"],
["1 - muy importante","2 - importante","3 - normal", "4 - sin importancia","5 - irrelevante"]
];
var TASK_OWNER = ["Verantwortlich","Owner","Responsible"];
var TASK_SUBMITDATE = ["Erstellung","Creation","Creado"];
var TASK_LASTDATE = ["Letzte Änderung","Last change","Modificado"];
var TASK_SUBMITTER = ["Ersteller","Creator","Creador"];
var TASK_STATUS = ["Status","Status","Status"];
var TASK_STATUS_LEVELS = [
["Neu","In Arbeit","Erledigt"],
["New","Open","Closed"],
["Nuevo","Abuerto","Completado"]
];
var TASKS_HISTORY = ["Historie","History","Historia"];
var TASKS_DATE = ["Datum","Date","Fecha"];
var TASKS_USER = ["Benutzer","User","Usario"];
var TASKS_ACTION = ["Aktion","Action","Evento"];
var TASKS_FIELDS = ["Felder","Fields","Propriedades"];
var TASKS_FILTER = ["Filter","Filter","Filtro"];
var TASK_FILTER_ALL = ["Zeige alle","Show all","Mostrar toto"];
var TASK_FILTER_OWN = ["Nur eigene","Only own items","Solo para mi"];
var TASK_FILTER_ALL_NON_COMPLETED = ["Alle nicht erledigten","All non completed","Todo las tareas que no son completadas"];
var TASK_FILTER_OWN_NON_COMPLETED = ["Nur eigene nicht erledigte","Only own incomplete tasks","Tareas no complatedas para mi"];
var TASK_FILTER_SYSTEM_AND_OPEN = ["Nicht erledigt mit Verantwortung: System","Not completed with responsibility: System","No completada, para System"];
var lang = 0;
var activeusers = [];
var taskallassign = 0;
var curuser = null;
var selectedfilter = 1;
function setLanguage(language) {
lang = language;
$("#overviewtxt").html(TASK_OVERVIEW_TXT[lang]);
initNewTaskArea();
initFilter();
gettasks();
}
function initFilter() {
var txt = "";
var values = [
{id:0, text:TASK_FILTER_ALL[lang]},
{id:1, text:TASK_FILTER_OWN[lang]},
{id:2, text:TASK_FILTER_ALL_NON_COMPLETED[lang]},
{id:3, text:TASK_FILTER_OWN_NON_COMPLETED[lang]},
{id:4, text:TASK_FILTER_SYSTEM_AND_OPEN[lang]}
];
txt += createLabelWithOption("","taskoverviewfilter","",TASKS_FILTER[lang],values,selectedfilter);
$("#filterarea").html(txt);
$("#filterarea").trigger("create");
bindFilterChange();
}
function bindFilterChange() {
$("#taskoverviewfilter").off("change").on("change", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
selectedfilter = $("#taskoverviewfilter").find(":selected").val();
gettasks();
initFilter();
});
}
function getGeneralConfigItems() {
doAjax("GET", "php/contenthandler.php?module=admin& command=getGeneralConfigItemsAndUsers", null, insertGenConfigStartRest, "Fehler Konfigurationsdaten");
}
function insertGenConfigStartRest(configResult) {
if (configResult.status == "OK") {
var values = configResult.msg;
activeusers = values.activeusers;
setLanguage(values.userlanguage);
} else {
setTimeout(function(){document.location.href = "index.html";},250); // not logged in
}
}
function createNewTaskArea(id,name) {
var collapsiblePart = '< div data-role = "collapsible" id = "' + id + '" ' ;
collapsiblePart += ' data-theme="c" data-content-theme="c">';
collapsiblePart += '< h3 > '+ toHtml(name) + '< / h3 > ';
collapsiblePart += '< form > ';
collapsiblePart += createLabelWithTextField("userlabel_summary_new",TASKS_SUMMARY[lang],TASKS_SUMMARY[lang]);
collapsiblePart += createLabelWithTextArea("userlabel_description_new",TASKS_DESCRIPTION[lang]);
collapsiblePart += createLabelWithOption("","userlabel_prio_new","",TASK_PRIO[lang],getPrioArray(),3);
collapsiblePart += createLabelWithOption("","userlabel_owner_new","",TASK_OWNER[lang],createTaskOwnerList(),curuser.id);
collapsiblePart += '< button data-theme = "f" data-icon = "plus" id = "CreateNewTask" > ' + TASKS_CREATE[lang] + '< / button > ';
collapsiblePart += '< / form > ';
collapsiblePart += '< / div > ';
return collapsiblePart;
}
function getPrioArray() {
var rets = [];
for (var i=0;i< 5 ; i + + ) {
rets[rets.length] = {id: (i+1), text: TASK_PRIO_LEVELS[lang][i] };
}
return rets;
}
function getStatusArray() {
var rets = [];
for (var i=0;i< 3 ; i + + ) {
rets[rets.length] = {id: (i+1), text: TASK_STATUS_LEVELS[lang][i] };
}
return rets;
}
function createTaskOwnerList() {
var allValues = [];
if (taskallassign == 0) {
allValues[0] = {
id:curuser.id,
text: curuser.username
};
} else {
allValues[0] = {
id:0,
text: "System"
};
for (var i=0;i< activeusers.length ; i + + ) {
var anActiveUser = activeusers[i];
allValues[allValues.length] = {
id:anActiveUser.id,
text:anActiveUser.username
};
}
}
return allValues;
}
function initNewTaskArea() {
doAjax("GET", "php/contenthandler.php?module=tasks& command=gettaskinfoforuser", null, continueNewTaskArea, null);
}
function continueNewTaskArea(answer) {
if (answer.status == "OK") {
taskallassign = answer.msg.taskallassign;
curuser = answer.msg.curuser;
var txt = createNewTaskArea("newtask",TASKS_NEW_TASK[lang]);
$("#newtaskarea").html(txt);
$("#newtaskarea").trigger("create");
bindNewTaskBtn();
}
}
function bindNewTaskBtn() {
$("#CreateNewTask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var summary = $("#userlabel_summary_new").val();
var description = $("#userlabel_description_new").val();
var prio = $("#userlabel_prio_new").find(":selected").val();
var owner = $("#userlabel_owner_new").find(":selected").val();
var data = {
summary: summary,
description: description,
prio: prio,
owner: owner
};
doAjax("POST", "php/contenthandler.php?module=tasks& command=createtask", data, handleNewTask, null);
});
}
function handleNewTask(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
} else {
initNewTaskArea();
gettasks();
}
}
function gettasks() {
doAjax("GET", "php/contenthandler.php?module=tasks& command=gettasks", {filter: selectedfilter}, handleGetTasks, null);
}
function handleGetTasks(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
return;
}
var usermaydelete = answer.usermaydelete;
var txt = "";
var tasks = answer.msg;
tasks.forEach(function (task,index) {
txt += '< div id = "taskitemcollapsible_' + task.id + '" class = "taskitemcollapsible" data-role = "collapsible" ' ;
txt += ' data-theme="e" data-content-theme="e">';
txt += '< h3 > '+ toHtml(task.summary) + ' (' + TASK_STATUS_LEVELS[lang][parseInt(task.status)-1] + ')< / h3 > ';
txt += '< form > ';
txt += '< p > < b > ' + TASK_SUBMITDATE[lang] + ":< / b > " + task.submitdate;
txt += '< p > < b > ' + TASK_LASTDATE[lang] + ":< / b > < span id = 'lastdate_" + task.id + "' > " + task.lastdate + "< / span > ";
txt += '< p > < b > ' + TASK_SUBMITTER[lang] + ":< / b > " + task.submittername;
txt += createLabelWithOption("",task.id,"taskitemstatus",TASK_STATUS[lang],getStatusArray(),task.status);
txt += createLabelWithOption("",task.id,"taskitemowner",TASK_OWNER[lang],createTaskOwnerList(),task.owner);
txt += createLabelWithOption("",task.id,"taskitemprio",TASK_PRIO[lang],getPrioArray(),task.prio);
txt += createLabelWithTextFieldWithValue("taskitemsummary_" + task.id,TASKS_SUMMARY[lang],toHtml(task.summary));
txt += createLabelWithTextAreaWithValue("taskitemdescription_" + task.id,TASKS_DESCRIPTION[lang],toHtml(task.description));
txt += '< p > < h4 > ' + TASKS_HISTORY[lang] + '< / h4 > ';
txt += '< div id = "taskhist_' + task.id + '" > ';
txt += ' < img src = "php/3rdparty/images/ajax-loader.gif" / > ';
txt += '< / div > ';
txt += '< button data-theme = "f" data-icon = "check" class = "changetask" id = "Changeask_' + task.id + '" > ' + TASK_CHANGE[lang] + '< / button > ';
if (usermaydelete == 1) {
txt += '< button data-theme = "d" data-icon = "delete" class = "deletetask" id = "deletetask_' + task.id + '" > ' + TASK_DELETE[lang] + '< / button > ';
}
txt += '< / form > ';
txt += "< / div > ";
});
txt += '< button data-theme = "f" data-icon = "check" id = "update" > ' + TASKS_UPDATE[lang] + '< / button > ';
$("#result").html(txt);
$("#result").trigger("create");
bindChangeBtn();
}
function bindChangeBtn() {
$(".changetask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var id = this.id.split("_")[1];
var status = $("#taskitemstatus_" + id).find(":selected").val();
var owner = $("#taskitemowner_" + id).find(":selected").val();
var summary = $("#taskitemsummary_" + id).val();
var description = $("#taskitemdescription_" + id).val();
var prio = $("#taskitemprio_" + id).val();
var data = {
id: id,
status: status,
owner: owner,
prio: prio,
summary: summary,
description: description
};
doAjax("POST", "php/contenthandler.php?module=tasks& command=changetask", data, handleChangeTask, null);
});
$(".taskitemcollapsible").off("collapsibleexpand").on("collapsibleexpand", function (e) {
var id = this.id.split("_")[1];
requestHistForTask(id);
});
$(".deletetask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var id = this.id.split("_")[1];
doAjax("POST", "php/contenthandler.php?module=tasks& command=delete", {id:id}, handleDeleteTask, null);
});
$("#update").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
gettasks();
});
}
function requestHistForTask(taskid) {
doAjax("GET", "php/contenthandler.php?module=tasks& command=gethistory", {id:taskid}, handleGetHistory, null);
}
function handleDeleteTask(answer) {
if (answer.status == "OK") {
gettasks();
} else {
alert("Fehler: " + answer.msg);
}
}
function handleChangeTask(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
} else {
var lastChange = answer.lastchange;
$("#lastdate_" + answer.taskid).html(lastChange);
requestHistForTask(answer.taskid);
}
}
function translateAction(action) {
if (action == 0) {
return TASKS_CREATE[lang];
} else if (action == 1) {
return TASK_CHANGE[lang];
} else if (action == 2) {
return TASK_DELETE[lang];
} else {
return "?";
}
}
function translateFields(fields) {
if (fields == "") {
return "";
}
var farr = fields.split(",");
var txt = [];
farr.forEach(function(f,i) {
var fparts = f.split(":",2);
switch(fparts[0]) {
case 'o':
txt[txt.length] = TASK_OWNER[lang] + "->" + toHtml(fparts[1]);
break;
case 's':
txt[txt.length] = TASK_STATUS[lang] + "->" + TASK_STATUS_LEVELS[lang][parseInt(fparts[1])-1];
break;
case 'p':
txt[txt.length] = TASK_PRIO[lang] + "->" + TASK_PRIO_LEVELS[lang][parseInt(fparts[1])-1];
break;
case 't':
txt[txt.length] = TASKS_SUMMARY[lang];
break;
case 'd':
txt[txt.length] = TASKS_DESCRIPTION[lang];
break;
default:
}
});
return txt.join(", ");
}
function handleGetHistory(answer) {
if (answer.status == "OK") {
var entries = answer.msg;
if (entries.length > 0) {
var taskid = entries[0]["taskid"];
var txt = "< table class = 'viewtable' > ";
txt += "< tr > < th > " + TASKS_DATE[lang] + "< th > " + TASKS_USER[lang] + "< th > " + TASKS_ACTION[lang] + "< th > " + TASKS_FIELDS[lang] + "< / tr > ";
entries.forEach(function(entry,i) {
txt += "< tr > ";
txt += "< td > " + entry.date;
txt += "< td > " + entry.username;
txt += "< td > " + translateAction(entry.action);
txt += "< td > " + translateFields(entry.fields);
txt += "< / tr > ";
});
txt += "< / table > ";
$("#taskhist_" + taskid).html(txt);
}
}
}
$(document).on("pageinit", "#time-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
$.ajaxSetup({ cache: false });
getGeneralConfigItems();
});
< / script >
< div data-role = "page" id = "time-page" data-theme = "c" >
< div data-role = "panel" id = "modulepanel" data-position = "right" data-display = "overlay" >
< ul data-role = "listview" id = "modulemenu" data-divider-theme = "a" data-inset = "true" >
< li data-theme = "b" data-role = "heading" > Hauptmenü< / li >
< / ul >
< / div > <!-- /panel -->
< div data-role = "header" data-theme = "b" data-position = "fixed" id = "theheader" style = "background-color:black;" >
< h1 > < span id = "timetitletxt" > Aufgaben< / span > < img src = "img/connection.png" class = "connectionstatus" style = "display:none;" / > < img src = "img/printerstatus.png" class = "printerstatus" style = "display:none;" / > < img src = "img/tasksstatus.png" class = "tasksstatus" style = "display:none;" / > < / h1 >
< div data-type = "horizontal" style = "top:0px;position:absolute;float:right;z-index:10;display:inline;" align = "right" class = "ui-btn-right" >
< a href = "#" data-role = "button" data-icon = "arrow-d" data-ajax = "false" id = "menuswitch" > < span id = "modulstxt2" > Hauptmenü< / span > < / a >
< / div >
< / div >
< div data-role = "content" id = "fullcontent" >
< div id = "overviewarea" >
< div data-role = "collapsible" id = "overviewcollapsibke" data-theme = "c" data-content-theme = "c" >
< h3 > < span id = 'overviewtxt' > Übersicht< / span > < / h3 >
< div id = "filterarea" > < / div >
< div id = "result" > < / div >
< / div >
< / div >
< div id = "newtaskarea" >
< img src = "php/3rdparty/images/ajax-loader.gif" / >
< / div >
< / div >
< div data-role = "footer" data-theme = "b" id = "thefooterr" style = "background-color:black;" >
< div class = "ui-grid-a" >
< div class = "ui-block-a userinfo" id = "loggedinuser" > < / div >
< div class = "ui-block-b grid_right" id = "versioninfo" > < / div >
< / div > <!-- /grid - a -->
< / div > <!-- footer -->
< / div > <!-- first page -->
< / body >
< / html >