Files
Facilitor/APPL/MLD/mld_show_note2.asp
Erik Groener 9506fdbb99 QUAW#37079 Dubbele tekst bij aanvullen behandelingstekst
svn path=/Website/trunk/; revision=30299
2016-08-15 12:58:01 +00:00

363 lines
16 KiB
Plaintext

<%@ language="javascript"%>
<% /*
$Revision$
$Id$
File: mld_show_note2.asp
Description: Nieuwe notities versie.
Betere layout, altijd een invulveld
Parameters: mld_key (altijd verplicht hier)
Note: We forceren dat je BO of FO rechten hebt. Je mag dus altijd alles zien
*/%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!--#include file="../Shared/status.inc"-->
<!-- #include file="./mld.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<%
FCLTHeader.Requires({js: ["../mld/mld_list.js"]})
var mld_key = getQParamInt("mld_key"); // altijd verplicht mld_key
var urole = getQParamSafe("urole", "fe");
var outputmode = getQParamInt("outputmode", 0);
var tracking = getQParamInt("tracking", 1) == 1; // tracking erbij tonen? Onderdrukken met 0
var tmp_note = getQParam("tmp_note", "");
var note_key = getQParamInt("note_key", -1);
var mld_info = mld.mld_melding_info(mld_key);
var verynew = getQParamInt("verynew", 0) == 1;
lcl.set_dialect(mld_info.srtdisc, "MLD_SRTDISCIPLINE_KEY");
var mfe = mld.func_enabled_melding (mld_key);
// Heb ik rechten om notities te zien
user.auth_required_or_abort(mfe.canReadNotes);
user.auth_required_or_abort(!mfe.haveOnlyFErights); // FE only mag hier helemaal niet (kunnen) komen
var eigenMelding = user_key == mld_info.melder_key || user.isCollega(mld_info.melder_key);
var afgehandeld = (mld_info.mld_status == 1 || mld_info.mld_status == 5 || mld_info.mld_status == 6);
var timestamp_notes = new Date();
var kenmerk_key = -1;
if (mld_key > 0)
{
// Is er een bijlage kenmerk?
var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["mkm.mld_kenmerk_volgnummer < 800",
"msk.mld_srtkenmerk_kenmerktype = 'M'"]}
);
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
kenmerk_key = oRs("mld_kenmerk_key").Value;
}
oRs.Close();
}
%>
<html>
<head>
<% FCLTHeader.Generate({outputmode: outputmode}); %>
<script>
function persoonDetails(evt, perslid_key)
{
FcltMgr.stopPropagation(evt);
FcltMgr.openDetail("appl/fac/fac_user.asp?prs_key=" + perslid_key);
}
function mld_notechange(mld_note_key)
{
window.location.href = "mld_show_note2.asp?urole=<%=urole%>&mld_key=<%=mld_key%>&note_key="+mld_note_key + "&tracking=<%=tracking?1:0%>";
}
function note_submit()
{
if ($.trim($("#note").val()) != "")
{
var url = $("form[name=u2]")[0].action;
$.post($("form[name=u2]")[0].action,
$("[name=u2]").serialize(),
FcltCallbackAndThen(note_submit_callback),
"json");
return true; // disabled button ook
}
}
function note_submit_callback(json)
{
window.location.href = "mld_show_note2.asp?urole=<%=urole%>&mld_key=<%=mld_key%>&tracking=<%=tracking?1:0%>";
window.parent.FcltMgr.reload();
}
function doPrint()
{
window.open("./mld_show_note.asp?urole=<%=urole%>&mld_key=<%=mld_key%>&outputmode=1");
}
function Upload()
{
var url = "<%=protectQS.create("../Shared/BijlagenForm.asp?module=MLD&niveau=M&multi=1&key=" + mld_key + "&kenmerk_key=" + kenmerk_key)%>";
var params = {callback: UploadCallback};
FcltMgr.openModalDetail(url, L("lcl_appendixes"), params );
}
function UploadCallback()
{
var params = {};
if ($("#note").val() != "")
params.appendurl = "tmp_note=" + $("#note").val();
FcltMgr.reload(params);
// window.parent.FcltMgr.reload();
}
$(function () {
$('textarea').autogrow();
// Let op: scrollen is complexer dan je denkt. Ons huidige document heeft
// helemaal geen scrollbars, die zijn van de parent-IFrame!
<% if (!verynew && getQParamInt("autoscroll", 0) == 1) { %>
$('#note').focus();
window.setTimeout('parent.scrollBy(0,$(\'#note\').height() + $(\'#note_submit\').height())', 1);
<% } %>
$("span.notetoggler").click(function ()
{
$(this).toggleClass("open");
$(this).prev().toggleClass("open");
FcltMgr.resized();
});
var timerID=null;
function delayed(delay, fn)
{
if (window.timerID)
clearTimeout(window.timerID);
window.timerID = setTimeout(fn, delay);
}
function doFilter(deze)
{
var deze = $("#autofilter");
var valThis = deze.val().toLowerCase();
$('#mldHistorieList table.fcltblocktab>tbody>tr.mldhandlingdiv,tr.mldhandlinghead').each(function(){
var text = $(this).text().toLowerCase();
var moretext = ($(this).find("span.rsTruncmore").attr('resttxt')||"").toLowerCase();
$(this).toggle(text.indexOf(valThis) > -1 || moretext.indexOf(valThis) > -1);
});
}
if ($('#mldHistorieList table.fcltblocktab>tbody>tr').length > 12)
{
$("#mldHistorie .fcltblockhead").append("<input id='autofilter' type='text' placeholder='"+L("lcl_autofilter")+"'>");
$("#autofilter")
.click(function (e) {e.stopPropagation()})
.keyup(function(e){
if (e.which == 27) {
$("#autofilter").val("");
}
delayed(200, doFilter);
});
}
});
</script>
</head>
<body id="showbody">
<%
function fnPerslidNaamFull(oRs)
{
if (!oRs("prs_perslid_key").Value) return "";
if (outputmode != 0)
return safe.html(oRs("prs_perslid_naam_friendly").Value);
if (oRs("prs_perslid_key").Value == user_key) {
var html = "<span class='self'>"
+ safe.html(oRs("prs_perslid_naam_friendly").Value)
+ "</span>";
} else {
var html = "<span class='details' onclick='persoonDetails(event,"+ oRs("prs_perslid_key").Value +")'>"
+ safe.html(oRs("prs_perslid_naam_friendly").Value)
+ "</span>";
}
return html;
}
var refresher = '<img class="details blockrefresh" id="refresh" src="../Pictures/page_refresh.png" title="' + L("lcl_refresh") + '" onclick="FcltMgr.reload()">';
if (urole=="fo" || urole=="bo")
refresher += '<img class="details blockrefresh" id="printen" src="../Pictures/print.png" title="' + L("lcl_print_table") + '" onclick="doPrint()">';
refresher += '<img class="details blockrefresh" id="upload" src="../Pictures/attach.png" title="' + L("lcl_appendixes") + '" onclick="Upload()">';
BLOCK_START("mldHistorie", (tracking?L("lcl_status_details"):L("lcl_mld_frame_notes")) + refresher);
sql = "SELECT n.mld_melding_note_aanmaak"
+ ", n.mld_melding_note_key"
+ ", pf.prs_perslid_key"
+ ", pf.prs_perslid_naam_friendly"
+ ", n.mld_melding_note_omschrijving"
+ ", mld_melding_note_flag"
+ ", NULL fac_srtnotificatie_code"
+ " FROM mld_melding_note n, prs_v_perslid_fullnames_all pf"
+ " WHERE n.prs_perslid_key = pf.prs_perslid_key (+)"
+ " AND n.mld_melding_key = " + mld_key
+ (mfe.haveOnlyFErights? " AND mld_melding_note_flag = 1" : "");
var sqls = [sql];
if (S("mld_merge_notes_and_tracking") == 1 && tracking) // tracking info erbij?
{
var sql = "SELECT tr.fac_tracking_datum"
+ " , tr.fac_tracking_key"
+ " , tr.prs_perslid_key"
+ " , pf.prs_perslid_naam_friendly"
+ " , tr.fac_tracking_oms"
+ " , NULL mld_melding_note_flag"
+ " , str.fac_srtnotificatie_code"
+ " FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf"
+ " WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key"
+ " AND tr.prs_perslid_key = pf.prs_perslid_key (+)"
+ " AND str.fac_srtnotificatie_code <> 'MLDNOT'" // beetje dubbelop
+ " AND (tr.fac_tracking_refkey = " + mld_key + " AND str.fac_srtnotificatie_xmlnode IN ('melding'))";
sqls.push(sql)
}
sql = "SELECT * FROM ("+ sqls.join(" UNION ") + ") ORDER BY 1";
var oRs = Oracle.Execute(sql);
var lasttime = null;
var lastuser = null;
while(!oRs.Eof)
{
var thisuser = oRs("prs_perslid_naam_friendly").Value;
var prs_key = oRs("prs_perslid_key").Value;
var thistime = new Date(oRs("mld_melding_note_aanmaak").Value);
var timestr = toTimeString(thistime);
var srtnoti = oRs("fac_srtnotificatie_code").Value;
var note_oms = oRs("mld_melding_note_omschrijving").Value;
var fullname = fnPerslidNaamFull(oRs);
var last_note_key = oRs("mld_melding_note_key").Value;
var note_zichtbaar = oRs("mld_melding_note_flag").value == 1;
oRs.MoveNext();
var LastIsSelfNote = oRs.Eof && user.isCollega(prs_key) && !srtnoti;
var clsself = "";
if (prs_key == user_key)
clsself = ' mldhandlingself'
// Bij user of dag switch altijd kopje. Ik zou graag systeemmeldingen niet als user-switch zien,
// dus die bij het voorgaande kopje laten horen door die te skippen bij lastuser
if ((lastuser != thisuser || !lasttime || thistime.midnight() > lasttime.midnight()) && thisuser != null )
{
Response.Write("<tr class='mldhandlinghead'><td colspan='2'>");
if (fullname != "") {
Response.Write("<div class='mldhandlinghead'>"+L("lcl_status_behandelheader").format(toTimeString(thistime),
toDateString(thistime, false, true),
fullname)+"</div>");
} else {
// zal maar sporadisch voorkomen
Response.Write("<div class='mldhandlinghead'>"+L("lcl_status_behandelheaderanonym").format(toTimeString(thistime),
toDateString(thistime, false, true))+"</div>");
}
Response.Write("</td></tr>");
}
else
{
if (lasttime && (thistime.getTime() - lasttime.getTime()) < 1000 * 60 * 1)
timestr = ""; // Binnen 1 minuut onderdrukken
}
if (LastIsSelfNote && last_note_key == note_key)
break; // uit de while-loop
lasttime = thistime;
if (thisuser != null)
lastuser = thisuser; // de laatste echte user
var safehtml = "";
if (note_oms) // Notitie of tracking met opgeslagen tekst
{
safehtml = safe.fclthtml(note_oms, true);
var edittm = timestr;
var cls = '';
var cls_tr = (srtnoti?" trtrack": "");
var note_zichtbaar_class = (note_zichtbaar?"note_fe_visible":(srtnoti?"" :"note_fe_hidden"));
if (LastIsSelfNote)
{
edittm = "<img src='../pictures/wijzigen.png' onclick='mld_notechange(" + last_note_key + ")' class='details' title='" + L("lcl_change") + "'></img>";
var cls = " mldnoteedit";
}
if (safehtml.length > S("rs_maxchar") * 5)
{
safehtml = "<div class='notetoggler'>{0}</div>".format(safehtml)
+ "<span class='notetoggler'>" + L("lcl_rs_truncated") + "</span>";
}
Response.Write("<tr class='mldhandlingdiv"+clsself+cls_tr+"'><td class='mldhtime " + cls + "'>{0}</td><td class='mldhandlingnote {1}'>{2}</td></tr>".format(edittm, note_zichtbaar_class, safehtml));
}
else if (srtnoti)
{
safehtml = status.getsrtnotificatietext(srtnoti); // default tracking tekst
if (srtnoti == 'MLDUPD')
{
var arr = safehtml.split("<br>");
arr.shift(); // Verwijder de tekst 'Melding xxx is gewijzigd'
for (var i = 0; i < arr.length; i++) // Eerste woord tot ':' vet maken
{
arr[i] = arr[i].replace(/^([\w]+)\:/, "<span class='mldhandlingfield'>$1:</span>")
}
safehtml = arr.join("<br>");
}
Response.Write(("<tr class='mldhandlingdiv"+clsself+" trtrack'><td class='mldhtime'>{0}</td><td"+(thisuser == null ? " class='system'" : "")+">{1}</td></tr>").format(timestr, safehtml));
}
// De MoveNext hebben we al eerder gehad
}
oRs.Close()
// == Verder met de nieuwe/bestaande notitie
var note_oms = "";
var note_zichtbaar = (mld_info.fenotes & 1 );
if (note_key > -1)
{ // Bestaande note: gegevens uit record gebruiken.
sql = "SELECT mld_melding_note_omschrijving"
+ " , mld_melding_note_flag"
+ " FROM mld_melding_note"
+ " WHERE mld_melding_note_key = " + note_key;
var oRs = Oracle.Execute(sql);
note_oms = oRs("mld_melding_note_omschrijving").value;
note_zichtbaar = oRs("mld_melding_note_flag").value == 1;
}
// Voeg eventueel weer toe wat er voor de reload als gevolg van upload bijlage stond.
note_oms = (tmp_note != "" ? tmp_note : note_oms);
// Bron van verwarring maar: als het een eigen melding is dan ben je zelf de FE-user van die melding
// Dan is het heel onlogisch als je het vinkje zou kunnen uitzetten. Disablen we dan ook effectief.
if (eigenMelding)
note_zichtbaar = true;
if (note_key < 0) { %>
<tr><td colspan='2'><div class='mldhandlinghead'><%=L("lcl_mld_note_new")%>:
<% if (afgehandeld) { %> <span class='hot'> <%=L("lcl_mld_edit_note_completed")%></span> <% } %>
<span class='mldgotop details' onclick='if (parent) parent.scrollTo(0,0)'>^Top</span></div></td></tr>
<% } %>
<tr><td></td><td>
<div class='mldhandlingdiv'>
<form name=u2 method=post action="mld_edit_note_save.asp?mld_key=<%=mld_key%>&urole=<%=urole%>&note_key=<%=note_key%>">
<input type="hidden" name="notestamp" id="notestamp" value="<%=timestamp_notes.getTime()%>">
<textarea id='note' name='note' class='fldtxt' rows='4' cols='80' maxlength='4000'><%=safe.textarea(note_oms)%></textarea>
<%
if (mld_info.fenotes & 2 || mld_info.fenotes == 0)
{
if (note_key == -1 && !eigenMelding)
RWCHECKBOXTR("zichtbaarFE", "fldcheck", "<nobr>" + L("lcl_mld_zichtbaar_FE") + "</nobr>", note_zichtbaar, { boxfirst: true } );
else
Response.Write("<tr><td></td><td>{0}: {1}</td></tr>".format(L("lcl_mld_zichtbaar_FE"), note_zichtbaar?L("lcl_Yes"):L("lcl_No")));
}
IFACE.FORM_END();
%>
</form></td></tr>
<%
buttons = [{ title: L("lcl_submit"), action: "note_submit()", id: "note_submit", singlepress: true}];
if (note_key > 0)
buttons.push({title: L("lcl_cancel"), icon: "undo.png", action: "note_submit_callback()"});
Response.Write("<tr><td colspan='2'><div style='float:left'>");
CreateButtons(buttons);
BLOCK_END();
%>
</body>
</html>