<%@ 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: Nu kan iedereen hier zijn, FE of FOBO. FE mag de interne notes niet zien, let daarop. */ var mld_key = getQParamInt("mld_key"); // altijd verplicht mld_key var LOCKED_USER_OK = { "xmlnode": "melding", "key": mld_key }; %> <% FCLTHeader.Requires({js: ["../mld/mld_list.js"]}) var urole = getQParamSafe("urole", "fe"); var outputmode = getQParamInt("outputmode", 0); var tracking = getQParamInt("tracking", (urole=="fe"?0:1)) == 1; // tracking erbij tonen? Onderdrukken met 0 var tmp_note = getQParam("tmp_note", ""); var parent_reload = getQParamInt("parent_reload", 0); var note_key = getQParamInt("note_key", -1); var mld_info = mld.mld_melding_info(mld_key); var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm); 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); 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_arr = []; var srtkenm_oms_arr = []; var multipleBijlagenTypes = false; if (mld_key > 0) { // Zijn er een bijlage kenmerken? var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["mkm.mld_kenmerk_volgnummer < 800", "(mkm.mld_kenmerk_verplicht IS NULL OR mkm.mld_kenmerk_verplicht=0)", "msk.mld_srtkenmerk_kenmerktype = 'M'"]} ); var oRs = Oracle.Execute(sql); while (!oRs.eof) { kenmerk_key_arr.push(oRs("mld_kenmerk_key").Value); srtkenm_oms_arr.push(oRs("mld_srtkenmerk_omschrijving").Value); oRs.moveNext(); if (!multipleBijlagenTypes && !oRs.eof) multipleBijlagenTypes = true; } oRs.Close(); } %> <% FCLTHeader.Generate({outputmode: outputmode}); %> <% 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 = "" + safe.html(oRs("prs_perslid_naam_friendly").Value) + ""; } else { var html = "" + safe.html(oRs("prs_perslid_naam_friendly").Value) + ""; } return html; } var buttons = []; buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.stopEdit(window);FcltMgr.reload()"}); if (urole=="fo" || urole=="bo") buttons.push({ icon: "print.png", title: L("lcl_print"), action: "doPrint()" }); if (kenmerk_key_arr.length == 1) buttons.push({ icon: "attach.png", title: L("lcl_appendixes"), action: "Upload()" }); else if (kenmerk_key_arr.length > 1) buttons.push({ icon: "fa-chevron-down", title: L("lcl_appendixes"), action: "toggleDropdown()" }); BLOCK_START("mldHistorie", (tracking?L("lcl_mld_behandeling"):L("lcl_mld_frame_notes")), { buttons: buttons }); // what info to show? determined by mld_merge_notes_and_tracking // 0 = meldingnotes // &1 = met meldingtracking (mits tracking) // &2 = met opdrachtnotes (voor fe alleen indien tevens opdrachttype.zichtbaarfe=1) // &4 = met opdrachttracking (voor fe alleen indien tevens opdrachttype.zichtbaarfe=1 en tracking) if (multipleBijlagenTypes) { // Create a dropDown div for the multiple bijlagen types Response.write("
"); } 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" + ", 1 regeltype" + ", null suffix" + " 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) // meldingtracking 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" + " , 1 regeltype" + " , null suffix" + " 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); } if (S("mld_merge_notes_and_tracking")&2) // opdrachtnotes erbij? { sql = "SELECT no.mld_opdr_note_aanmaak" + " , no.mld_opdr_note_key" + " , pf.prs_perslid_key" + " , pf.prs_perslid_naam_friendly" + " , no.mld_opdr_note_omschrijving" + " , DECODE(ty.mld_typeopdr_zichtbaarfe, 1, 1, 0) " + " , NULL" + " , 2 regeltype" + " , mld_opdr_bedrijfopdr_volgnr suffix" + " FROM mld_opdr_note no, prs_v_perslid_fullnames_all pf, mld_opdr o, mld_typeopdr ty" + " WHERE no.prs_perslid_key = pf.prs_perslid_key (+)" + " AND o.mld_opdr_key = no.mld_opdr_key" + " AND ty.mld_typeopdr_key = o.mld_typeopdr_key" + " AND no.mld_opdr_key IN (SELECT mld_opdr_key FROM mld_opdr WHERE mld_melding_key = " + mld_key + ")" + (mfe.haveOnlyFErights? " AND ty.mld_typeopdr_zichtbaarfe = 1" : ""); sqls.push(sql); } if (S("mld_merge_notes_and_tracking")&4 && tracking) // opdrachttracking 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" + " , 2 regeltype" + " , mld_opdr_bedrijfopdr_volgnr suffix" + " FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf, mld_opdr o, mld_typeopdr ty" + " WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key" + " AND o.mld_opdr_key = tr.fac_tracking_refkey" + " AND tr.prs_perslid_key = pf.prs_perslid_key (+)" + " AND ty.mld_typeopdr_key = o.mld_typeopdr_key" + " AND tr.fac_tracking_refkey IN (SELECT mld_opdr_key FROM mld_opdr WHERE mld_melding_key = " + mld_key + ") " + " AND str.fac_srtnotificatie_xmlnode IN ('opdracht')" + (mfe.haveOnlyFErights? " AND ty.mld_typeopdr_zichtbaarfe = 1" : ""); sqls.push(sql); } sql = "SELECT * FROM ("+ sqls.join(" UNION ") + ") ORDER BY 1" + ", 2"; // ook bij gelijktijdigheid chronologisch var oRs = Oracle.Execute(sql); var lasttime = null; var lastuser = null; while(!oRs.Eof) { var thisuser = oRs("prs_perslid_naam_friendly").Value; var suffix = oRs("suffix").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_zichtbaarFE = oRs("mld_melding_note_flag").value == 1; var cls_tr = " rt"+ oRs("regeltype").value; // 1=melding, 2=opdracht var isvanOpdracht = oRs("regeltype").value == 2; oRs.MoveNext(); var LastIsNote = oRs.Eof && !srtnoti; var LastIsSelfNote = LastIsNote && user.isCollega(prs_key); 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 (LastIsSelfNote && last_note_key == note_key) break; // uit de while-loop var dedatum = toDateString(thistime, false, true); if (lasttime == null || thistime.midnight() > lasttime.midnight()) Response.Write("{0}".format(toDateString(thistime, false, true) )); var sameevent = false; if (srtnoti && lastuser == thisuser && lasttime && (thistime.getTime() - lasttime.getTime()) < 60000) { sameevent = true; } lasttime = thistime; if (thisuser != null) lastuser = thisuser; // de laatste echte user var safehtml = ""; cls_tr += (srtnoti ? " trtrack" : ""); if (note_oms) // Notitie of tracking met opgeslagen tekst { safehtml = safe.fclthtml(note_oms, true); var edittm = timestr; var cls = 'mldhtime'; var suffixstr = suffix ? L("lcl_shared_order")+" "+suffix+": " : ""; var note_zichtbaarFE_class = (note_zichtbaarFE?"note_fe_visible":(srtnoti?"" :"note_fe_hidden")); if (LastIsSelfNote && !isvanOpdracht) { edittm += ""; var cls = " mldnoteedit"; } if (!note_zichtbaarFE && !srtnoti) edittm += "".format(L("lcl_mld_verborgen_FE")); var autocollapse = S("mld_note_autocollapse") && note_oms.match(new RegExp(S("mld_note_autocollapse"))) && note_oms.split("\n").length > 2; if (autocollapse || safehtml.length > S("rs_maxchar") * 5) { safehtml = "
{0}
".format(safehtml, autocollapse?"autocollapse":(LastIsNote?"open":"")) + "" + (!autocollapse && LastIsNote?L("lcl_rs_truncate"):L("lcl_rs_truncated")) + ""; } Response.Write("" + ""); if (!sameevent) Response.Write((fullname?"{0}
".format(fullname):"") + "{1}".format(dedatum, edittm=='00:00'?'':edittm)); if (srtnoti) Response.Write(("
{1}{0}
").format(safehtml, suffixstr)); else Response.Write(("
{2}{1}
").format( note_zichtbaarFE_class, safehtml, suffixstr)); } else if (srtnoti) { safehtml = status.getsrtnotificatietext(srtnoti); // default tracking tekst if (srtnoti == 'MLDUPD') { var arr = safehtml.split("
"); 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]+)\:/, "$1:") } safehtml = arr.join("
"); } Response.Write(""); if (!sameevent) Response.Write(("{0}
{2}").format(fullname, dedatum, timestr)); Response.Write(("{0}").format(safehtml)); } // De MoveNext hebben we al eerder gehad } oRs.Close() // == Verder met de nieuwe/bestaande notitie // Er zijn notes die voor iedereen (relevant) zichtbaar zijn en notes die alleen voor FOBO // zichtbaar zijn. Dat hangt af van mld_melding_note_flag. Die zichtbaarheid is hierboven geregeld. // // Dan kunnen er notes worden toegevoegd. Dat kan altijd en door iedereen (relevant) // alleen *niet* door de FE indien mld_info.fenotes==0 // dus wel door FOBO zelfs indien mld_info.fenotes==0 // dus wel door FE indien mld_info.fenotes>0 // Let op: fenotes is geen bitwise codering (meer), gewoon 0-3 var note_oms = ""; var note_zichtbaarFE = (mld_info.fenotes == 1 || mld_info.fenotes == 3 ); if (note_key > -1) { // Bestaande net toegevoegde note voor re-edit: 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_zichtbaarFE = oRs("mld_melding_note_flag").value == 1; // de net gekozen waarde } // Voeg eventueel weer toe wat er voor de reload als gevolg van upload bijlage stond. note_oms = (tmp_note != "" ? tmp_note : note_oms); // Aanvulling textbox niet tonen als ik alleen FEread rechten heb gekregen vanwege het feit dat de melding een parent van een eigen melding is (!mfe.parentOfOwnRead). if ((!mfe.haveOnlyFErights && mfe.canReadAny) || (mfe.haveOnlyFErights && !mfe.parentOfOwnRead && mld_info.fenotes > 0)) { if (note_key < 0) { %>
<%=L("lcl_mld_note_new")%>: <% if (afgehandeld) { %> <%=L("lcl_mld_edit_note_completed")%> <% } %> ^Top
<% } %>
<% // fenotes betekenis: // 0 FE kan niet reageren, per notitie, default niet zichtbaar voor FE, raar als je dan ook S("mld_flag_on_fenote") zou hebben // 1 FE kan reageren, alle notities zichtbaar voor FE (transparantiemodus) // 2 FE kan reageren, per notitie, default niet zichtbaar voor FE // 3 FE kan reageren, per notitie, default wel zichtbaar voor FE // Do not offer options if // - i am just an FE // - we do not do options? // - it is my call if (!mfe.haveOnlyFErights) { // FOBO // zichtbaarheid per nieuwe notitie, vast of veranderbaar if (note_key == -1 && !eigenMelding && mld_info.fenotes != 1) { // keuze voor wel of niet zichtbaar FE CHECKBOX("fldcheck", "zichtbaarFE", note_zichtbaarFE, { html: "onchange='notiToggler(this)'" }); Response.Write("".format(L("lcl_mld_zichtbaar_FE"))); } else { // re-edit, eigenmelding of geen keuze = niks te kiezen, vermeld even hoe zichtbaar deze note is Response.Write("{0}: {1}".format(L("lcl_mld_zichtbaar_FE"), note_zichtbaarFE?L("lcl_Yes"):L("lcl_No"))); /* vriendelijker is: Wel/Niet zichtbaar voor melder */ } //actie bij melder zetten if (note_key == -1 && !eigenMelding && S("mld_flag_on_fenote")) { var actie_bij_melder = (note_zichtbaarFE && S("mld_note_default_notifyFE")==1 ? true : false); // We doen aan pingpongen Response.Write("".format(L("lcl_mld_toekennen_FE"))); } } IFACE.FORM_END(); %>
<% 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("
"); CreateButtons(buttons); } BLOCK_END(); %>