FSN#39161 Formatting in kennisbank toelaten

svn path=/Website/trunk/; revision=32951
This commit is contained in:
Peter Feij
2017-02-24 17:12:36 +00:00
parent 820fc88200
commit e6df05d572
5 changed files with 80 additions and 71 deletions

View File

@@ -129,13 +129,8 @@ var canChange = canWriteFAQBOF || (canWriteFAQFOF && datum == null)
<% <%
BLOCK_START("mldFaqedit", L("lcl_faq_item")); BLOCK_START("mldFaqedit", L("lcl_faq_item"));
ROTEXTAREATR("fldtxt", L("lcl_faq_question"), question, {id: "fac_question", html: "rows='3' maxlength='4000'"}); ROTEXTAREATR("fldtxt", L("lcl_faq_question"), question, {id: "fac_question", html: "rows='3' maxlength='4000'"});
if (isProf) // PF: Aaqngepast. Zo kon je geen html formatting toepassen, dan maar niet meer die gekke kopieeroptie
{ // Expliciet RW (met html: "readonly") om te forceren dat het een ROTEXTAREATR("fldtxt fclthtml", L("lcl_faq_answer"), answer);
// textarea blijft ipv gerenderd als een DIV. Anders werkt CopyToClipboard niet
RWTEXTAREATR("fac_answer", "fldtxt", L("lcl_faq_answer")+"<a onclick='CopyToClipboard($(\"#fac_answer\")[0])'>"+L("lcl_faq_kopieer")+"</a>", answer, { html: "rows='3' readonly maxlength='4000'"});
}
else
ROTEXTAREATR("fldtxt", L("lcl_faq_answer"), answer);
ROTEXTAREATR("fldtxt", L("lcl_faq_hint"), hint, { suppressEmpty: true } ); ROTEXTAREATR("fldtxt", L("lcl_faq_hint"), hint, { suppressEmpty: true } );
BLOCK_END(); BLOCK_END();
@@ -144,7 +139,7 @@ var canChange = canWriteFAQBOF || (canWriteFAQFOF && datum == null)
BLOCK_START("mldInfo", L("lcl_faq_itemadm")); BLOCK_START("mldInfo", L("lcl_faq_itemadm"));
ROFIELDTR("fld", L("lcl_faq_level"), fac.getfaqleveltext(level)); ROFIELDTR("fld", L("lcl_faq_level"), fac.getfaqleveltext(level));
ROCHECKBOXTR("fldcheck", L("lcl_faq_displaymode"), displaymode); ROCHECKBOXTR("fldcheck", L("lcl_faq_displaymode"), displaymode);
ROFIELDTR("fld", L("lcl_faq_bron"), source); ROFIELDTR("fld", L("lcl_faq_bron"), source, { suppressEmpty: true});
ROFIELDTR("fld", L("lcl_faq_link"), url, { infoPointer: {Url: url, Title: L("lcl_faq_item"), NewWindow: true}, suppressEmpty: true}); ROFIELDTR("fld", L("lcl_faq_link"), url, { infoPointer: {Url: url, Title: L("lcl_faq_item"), NewWindow: true}, suppressEmpty: true});
FCLTpersoonselector("sgPers", FCLTpersoonselector("sgPers",
"sgPers", "sgPers",

View File

@@ -113,7 +113,7 @@ function fncolType(oRs)
txt = queries[srt].intern; txt = queries[srt].intern;
if (oRs.Fields("extra").Value != null) if (oRs.Fields("extra").Value != null)
{ {
var resstr = safe.html(oRs.Fields("extra").Value); var resstr = safe.fclthtml(oRs.Fields("extra").Value);
txt = makestrong(resstr, filter.s.val); txt = makestrong(resstr, filter.s.val);
} }
return txt; return txt;

View File

@@ -994,7 +994,8 @@ mld = {setmeldingstatus:
function(pautfunction, params) function(pautfunction, params)
{ {
var mld_key = params.mld_key; var mld_key = params.mld_key;
var opdr_key = params.opdr_key; var opdr_key = params.opdr_key; // de zichtbare opdrachtkey (eigenlijk meldingkey)
var intopdr_key = params.intopdr_key; // de technische echte mld_opdr_key
var mldstatus_arr = params.mldstatus_arr; var mldstatus_arr = params.mldstatus_arr;
var opdrstatus_arr = params.opdrstatus_arr; var opdrstatus_arr = params.opdrstatus_arr;
var caller_key = params.caller_key; var caller_key = params.caller_key;
@@ -1162,7 +1163,7 @@ mld = {setmeldingstatus:
? " AND m.mld_melding_key = invoerder.mld_melding_key" ? " AND m.mld_melding_key = invoerder.mld_melding_key"
: ""); : "");
if (handler_key || opdrtype_key || contact_key || opdr_key || opdrstatus_arr) if (handler_key || opdrtype_key || contact_key || opdr_key || opdrstatus_arr || intopdr_key)
{ // meldingen filter je op 'die een opdracht hebben met xxxxxx' { // meldingen filter je op 'die een opdracht hebben met xxxxxx'
// opdrachten filter je rechtstreeks // opdrachten filter je rechtstreeks
if (!toon_opdr_overz) if (!toon_opdr_overz)
@@ -1182,6 +1183,9 @@ mld = {setmeldingstatus:
+ (opdr_key // Selectie op nummer negeert alle andere filters (Andere waarde zijn niet doorgegeven + (opdr_key // Selectie op nummer negeert alle andere filters (Andere waarde zijn niet doorgegeven
? " AND o.mld_melding_key = " + opdr_key // seems odd, but is right -PF ? " AND o.mld_melding_key = " + opdr_key // seems odd, but is right -PF
: "") : "")
+ (intopdr_key // de interne (echte) opdrachtkey
? " AND o.mld_opdr_key = " + intopdr_key
: "")
+ (opdrstatus_arr + (opdrstatus_arr
? " AND o.mld_statusopdr_key IN (" + opdrstatus_arr.join(",") + ")" ? " AND o.mld_statusopdr_key IN (" + opdrstatus_arr.join(",") + ")"
: "") : "")
@@ -2510,7 +2514,7 @@ mld = {setmeldingstatus:
else else
{ {
var data = { question: oRs("fac_faq_question").Value, var data = { question: oRs("fac_faq_question").Value,
answer: oRs("fac_faq_answer").Value, answer: safe.fclthtml(oRs("fac_faq_answer").Value),
displaymode: oRs("fac_faq_displaymode").Value displaymode: oRs("fac_faq_displaymode").Value
}; };
var fac_url = oRs("fac_faq_url").value; var fac_url = oRs("fac_faq_url").value;
@@ -3058,14 +3062,14 @@ mld = {setmeldingstatus:
+ " , prs_kostenplaats k" + " , prs_kostenplaats k"
+ " , prs_kostenplaatsgrp kg" + " , prs_kostenplaatsgrp kg"
+ " , mld_v_uitvoerende mu" + " , mld_v_uitvoerende mu"
+ " WHERE o.mld_melding_key = m.mld_melding_key" // bij bgt-mode: opdracht zonder melding TODO: zo geen errors maar hoe goed zijn de waarden? + " WHERE o.mld_melding_key = m.mld_melding_key(+)" // bij bgt-mode: opdracht zonder melding
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key" + " AND m.mld_stdmelding_key = sm.mld_stdmelding_key(+)"
+ " AND sm.mld_ins_discipline_key = d.ins_discipline_key" + " AND sm.mld_ins_discipline_key = d.ins_discipline_key(+)"
+ " AND d.ins_discipline_key = mdp.mld_ins_discipline_key" + " AND d.ins_discipline_key = mdp.mld_ins_discipline_key(+)"
+ " AND o.prs_kostenplaats_key = k.prs_kostenplaats_key(+)" // kostenplaats van de opdracht kan leeg zijn + " AND o.prs_kostenplaats_key = k.prs_kostenplaats_key(+)" // kostenplaats van de opdracht kan leeg zijn
+ " AND o.mld_typeopdr_key = mto.mld_typeopdr_key" + " AND o.mld_typeopdr_key = mto.mld_typeopdr_key" // required
+ " AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+)" + " AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+)"
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" + " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // required
+ " AND o.mld_opdr_key = " + pmld_opdr_key + " AND o.mld_opdr_key = " + pmld_opdr_key
var moRs = Oracle.Execute(msql); var moRs = Oracle.Execute(msql);
var opdr_status = moRs("mld_statusopdr_key").Value; var opdr_status = moRs("mld_statusopdr_key").Value;
@@ -4396,7 +4400,9 @@ mld = {setmeldingstatus:
var showall = params.showall; var showall = params.showall;
var mld_key = params.mld_key; var mld_key = params.mld_key;
var ks_key = params.ks_key;
var opdr_key = params.opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key var opdr_key = params.opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key
var intopdr_key = params.intopdr_key; // de technische echte mld_opdr_key
var behandel_key = params.behandel_key; var behandel_key = params.behandel_key;
var srtdisc_key = params.srtdisc_key; var srtdisc_key = params.srtdisc_key;
var searchtekst = params.searchtekst; var searchtekst = params.searchtekst;
@@ -4666,17 +4672,17 @@ mld = {setmeldingstatus:
+ " , mld_typeopdr t" + " , mld_typeopdr t"
+ " , prs_v_perslid_fullnames_all pfiat" + " , prs_v_perslid_fullnames_all pfiat"
+ " , prs_perslid p" // de melder + " , prs_perslid p" // de melder
+ " WHERE o.mld_melding_key = m.mld_melding_key" + (urole == 'bgt' ? '(+)' : '') // dat is nog niet genoeg + " WHERE o.mld_melding_key = m.mld_melding_key" + (urole == 'bgt' ? '(+)' : '')
+ " AND pfiat.prs_perslid_key(+) = prs.getkpverantwoordelijke(o.prs_kostenplaats_key, "+S("prs_approvemethod")+", -1)" + " AND pfiat.prs_perslid_key(+) = prs.getkpverantwoordelijke(o.prs_kostenplaats_key, "+S("prs_approvemethod")+", -1)"
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)" + " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)"
+ " AND l.alg_district_key = di.alg_district_key(+)" + " AND l.alg_district_key = di.alg_district_key(+)"
+ " AND std.mld_ins_discipline_key = md.ins_discipline_key" + " AND std.mld_ins_discipline_key = md.ins_discipline_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND md.ins_discipline_key = mdp.mld_ins_discipline_key" + " AND md.ins_discipline_key = mdp.mld_ins_discipline_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND o.fac_activiteit_key IS NULL" + " AND o.fac_activiteit_key IS NULL"
+ " AND o.cnt_contract_key = c.cnt_contract_key(+)" + " AND o.cnt_contract_key = c.cnt_contract_key(+)"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key" + " AND m.mld_stdmelding_key = std.mld_stdmelding_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND p.prs_perslid_key = m.prs_perslid_key" + " AND m.prs_perslid_key = p.prs_perslid_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key" + " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key"; + " AND o.mld_typeopdr_key = t.mld_typeopdr_key";
if (add_prs_restrict) if (add_prs_restrict)
@@ -4699,6 +4705,10 @@ mld = {setmeldingstatus:
{ {
sql += " AND o.mld_melding_key = " + opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key sql += " AND o.mld_melding_key = " + opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key
} }
else if (intopdr_key)
{
sql += " AND o.mld_opdr_key = " + intopdr_key; // de echte opdrachtkey
}
else else
{ // { //
if (offerte >= 0) if (offerte >= 0)
@@ -4781,6 +4791,9 @@ mld = {setmeldingstatus:
sql += " AND m.mld_adres_key = " + adr_key; sql += " AND m.mld_adres_key = " + adr_key;
} }
if (ks_key)
sql += " AND o.prs_kostensoort_key = " + ks_key; // nog ff geen array dus
if (kp) if (kp)
sql += " AND o.prs_kostenplaats_key IN" sql += " AND o.prs_kostenplaats_key IN"
+ " (SELECT k.prs_kostenplaats_key" + " (SELECT k.prs_kostenplaats_key"
@@ -4943,50 +4956,51 @@ mld = {setmeldingstatus:
pautfunction = [pautfunction]; pautfunction = [pautfunction];
var sqlAB = ""; var sqlAB = "";
for (var jj = 0; jj < sqlA.length; jj++) if (urole != 'bgt')
{ {
// pautfunction is nu altijd een Array met webfuncties for (var jj = 0; jj < sqlA.length; jj++)
for (var ii = 0; ii < pautfunction.length; ii++) {
{ // pautfunction is nu altijd een Array met webfuncties
// Voorwaarde sql_extern t.b.v. setting mld_typeopdr_afmelden_extern alleen toevoegen voor WEB_ORDBO2 rechten. for (var ii = 0; ii < pautfunction.length; ii++)
var sql3d = sqlA[jj] + (pautfunction[ii] == "WEB_ORDBO2"? sql_extern : ""); {
// apply 3D authorization to the locations and to the organisations (both ALG and PRS) // Voorwaarde sql_extern t.b.v. setting mld_typeopdr_afmelden_extern alleen toevoegen voor WEB_ORDBO2 rechten.
// if "disc == 0" or disc is not defined then disc should be "" var sql3d = sqlA[jj] + (pautfunction[ii] == "WEB_ORDBO2"? sql_extern : "");
// otherwise de 3d authorization adds a "AND (1=0)" line to the query and you will have never a result // apply 3D authorization to the locations and to the organisations (both ALG and PRS)
sqlB = (ii > 0? sqlB + " UNION " : "") + discx3d (sql3d, // if "disc == 0" or disc is not defined then disc should be ""
"md.ins_discipline_key", // otherwise de 3d authorization adds a "AND (1=0)" line to the query and you will have never a result
"di.alg_regio_key", sqlB = (ii > 0? sqlB + " UNION " : "") + discx3d (sql3d,
"l.alg_district_key", "md.ins_discipline_key",
"l.alg_locatie_key", "di.alg_regio_key",
"g.alg_gebouw_key", "l.alg_district_key",
"g.alg_verdieping_key", "l.alg_locatie_key",
"g.alg_ruimte_key", "g.alg_gebouw_key",
"b.prs_bedrijf_key", "g.alg_verdieping_key",
"b.prs_afdeling_key", "g.alg_ruimte_key",
pautfunction[ii], "b.prs_bedrijf_key",
(!(mld_key || opdr_key) && disc_key_arr ? disc_key_arr.join(",") : ""), "b.prs_afdeling_key",
(add_prs_restrict ? 2 : 0) pautfunction[ii],
); (!(mld_key || opdr_key) && disc_key_arr ? disc_key_arr.join(",") : ""),
} (add_prs_restrict ? 2 : 0)
sqlAB = sqlAB + (jj > 0? " UNION " : "") + sqlB; );
}
sqlAB = sqlAB + (jj > 0? " UNION " : "") + sqlB;
}
if (pautfunction.length > 1)
{ // We hebben dan rechten van meerdere autorisatie functies. Daardoor kan door discx3d() " UNION ALL " gebruikt worden om verschillende SELECT aan elkaar te plakken.
// In dat geval krijgen we dan dubbele resultataten.
// We moeten daarom deze UNION ALL's vervangen door UNION's.
sqlAB = sqlAB.replace(/UNION ALL/g, "UNION");
}
// Voeg laatste tracking datum toe
sql = "SELECT * FROM (" + sqlAB + ") us"
+ whereUs
+ " ORDER BY" // ins_discipline_omschrijving is hier al vertaald
+ (planb? " behandelaar," : "")
+ (excel? " UPPER(ins_discipline_omschrijving), mld_typeopdr_key," : "") // Flexkenmerken verschillen per opdrachttype (mld_typeopdr_key)
+ " mld_opdr_einddatum, mld_opdr_bedrijfopdr_volgnr";
} }
if (pautfunction.length > 1)
{ // We hebben dan rechten van meerdere autorisatie functies. Daardoor kan door discx3d() " UNION ALL " gebruikt worden om verschillende SELECT aan elkaar te plakken.
// In dat geval krijgen we dan dubbele resultataten.
// We moeten daarom deze UNION ALL's vervangen door UNION's.
sqlAB = sqlAB.replace(/UNION ALL/g, "UNION");
}
// Voeg laatste tracking datum toe
sql = "SELECT * FROM (" + sqlAB + ") us"
+ whereUs
+ " ORDER BY" // ins_discipline_omschrijving is hier al vertaald
+ (planb? " behandelaar," : "")
+ (excel? " UPPER(ins_discipline_omschrijving), mld_typeopdr_key," : "") // Flexkenmerken verschillen per opdrachttype (mld_typeopdr_key)
+ " mld_opdr_einddatum, mld_opdr_bedrijfopdr_volgnr";
return sql; return sql;
} }

View File

@@ -544,10 +544,10 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
FcltMgr.resized(window); FcltMgr.resized(window);
}); });
$tbl.append($newrow) $tbl.append($newrow)
var safeanswer = $("<span>").text(data.fixed_faq[i].answer).html().replace(/\n/g, "<br>"); var safeanswer = $("<span>").text(data.fixed_faq[i].answer).text().replace(/\n/g, "<br>");
if (data.fixed_faq[i].hurl) if (data.fixed_faq[i].hurl)
safeanswer += "<br><a href={0} target='_new'>{1}</a>".format(data.fixed_faq[i].hurl, data.fixed_faq[i].hlnk); safeanswer += "<br><a href={0} target='_new'>{1}</a>".format(data.fixed_faq[i].hurl, data.fixed_faq[i].hlnk);
$tbl.append("<tr style='display:none'><td class='fixedfaqanswer'>" + safeanswer + "</td></tr>"); $tbl.append("<tr style='display:none'><td class='fixedfaqanswer'><span='fclthtml'>" + safeanswer + "</span></td></tr>");
} }
$("#mldFaq").show(); $("#mldFaq").show();
} }

View File

@@ -91,8 +91,8 @@ user.auth_required_or_abort(authparamsUSE || authparamsFOF);
%> %>
<li> <li>
<div class="faqvraag"><a name="<%=oRs("fac_faq_key").value%>"><%=safe.html(oRs("fac_faq_question").value)+L("lcl_faq_mld_klik")%></a></div> <div class="faqvraag"><a name="<%=oRs("fac_faq_key").value%>"><%=safe.html(oRs("fac_faq_question").value)+L("lcl_faq_mld_klik")%></a></div>
<div class="faqantwoord"> <div class="faqantwoord fclthtml">
<%=safe.html(oRs("fac_faq_answer").value)%><br/> <%=safe.fclthtml(oRs("fac_faq_answer").value)%><br/>
<% if (oRs("fac_faq_url").value) <% if (oRs("fac_faq_url").value)
{ {
fac_url = oRs("fac_faq_url").value; fac_url = oRs("fac_faq_url").value;
@@ -106,9 +106,9 @@ user.auth_required_or_abort(authparamsUSE || authparamsFOF);
hurl = custpath + "/" + hurl; hurl = custpath + "/" + hurl;
%> <a href="<%=safe.htmlattr(hurl)%>" target="_new"><%=safe.html(hlnk)%></a><br/> %> <a href="<%=safe.htmlattr(hurl)%>" target="_new"><%=safe.html(hlnk)%></a><br/>
<% } %> <% } %>
<div id="faqsolved" onClick="faqSolved(<%=oRs("fac_faq_key").value%>);" class="ref"><div class="button"> <div id="faqsolved" onClick="faqSolved(<%=oRs("fac_faq_key").value%>);" class="ref"><span class="button">
<i class="fa fa-fw fa-check" title="<%=L("lcl_faq_mld_3")%>"></i> <i class="fa fa-fw fa-check" title="<%=L("lcl_faq_mld_3")%>"></i>
<%=L("lcl_faq_mld_3")%></div> <%=L("lcl_faq_mld_3")%></span>
</div> </div>
</div> </div>
</li> </li>