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"));
ROTEXTAREATR("fldtxt", L("lcl_faq_question"), question, {id: "fac_question", html: "rows='3' maxlength='4000'"});
if (isProf)
{ // Expliciet RW (met html: "readonly") om te forceren dat het een
// 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);
// PF: Aaqngepast. Zo kon je geen html formatting toepassen, dan maar niet meer die gekke kopieeroptie
ROTEXTAREATR("fldtxt fclthtml", L("lcl_faq_answer"), answer);
ROTEXTAREATR("fldtxt", L("lcl_faq_hint"), hint, { suppressEmpty: true } );
BLOCK_END();
@@ -144,7 +139,7 @@ var canChange = canWriteFAQBOF || (canWriteFAQFOF && datum == null)
BLOCK_START("mldInfo", L("lcl_faq_itemadm"));
ROFIELDTR("fld", L("lcl_faq_level"), fac.getfaqleveltext(level));
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});
FCLTpersoonselector("sgPers",
"sgPers",

View File

@@ -113,7 +113,7 @@ function fncolType(oRs)
txt = queries[srt].intern;
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);
}
return txt;

View File

@@ -994,7 +994,8 @@ mld = {setmeldingstatus:
function(pautfunction, params)
{
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 opdrstatus_arr = params.opdrstatus_arr;
var caller_key = params.caller_key;
@@ -1162,7 +1163,7 @@ mld = {setmeldingstatus:
? " 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'
// opdrachten filter je rechtstreeks
if (!toon_opdr_overz)
@@ -1182,6 +1183,9 @@ mld = {setmeldingstatus:
+ (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
: "")
+ (intopdr_key // de interne (echte) opdrachtkey
? " AND o.mld_opdr_key = " + intopdr_key
: "")
+ (opdrstatus_arr
? " AND o.mld_statusopdr_key IN (" + opdrstatus_arr.join(",") + ")"
: "")
@@ -2510,7 +2514,7 @@ mld = {setmeldingstatus:
else
{
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
};
var fac_url = oRs("fac_faq_url").value;
@@ -3058,14 +3062,14 @@ mld = {setmeldingstatus:
+ " , prs_kostenplaats k"
+ " , prs_kostenplaatsgrp kg"
+ " , 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?
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sm.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND d.ins_discipline_key = mdp.mld_ins_discipline_key"
+ " 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 sm.mld_ins_discipline_key = d.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.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 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
var moRs = Oracle.Execute(msql);
var opdr_status = moRs("mld_statusopdr_key").Value;
@@ -4396,7 +4400,9 @@ mld = {setmeldingstatus:
var showall = params.showall;
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 intopdr_key = params.intopdr_key; // de technische echte mld_opdr_key
var behandel_key = params.behandel_key;
var srtdisc_key = params.srtdisc_key;
var searchtekst = params.searchtekst;
@@ -4666,17 +4672,17 @@ mld = {setmeldingstatus:
+ " , mld_typeopdr t"
+ " , prs_v_perslid_fullnames_all pfiat"
+ " , 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 m.mld_alg_locatie_key = l.alg_locatie_key(+)"
+ " AND l.alg_district_key = di.alg_district_key(+)"
+ " AND std.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND md.ins_discipline_key = mdp.mld_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"+ (urole == 'bgt' ? '(+)' : '')
+ " AND o.fac_activiteit_key IS NULL"
+ " AND o.cnt_contract_key = c.cnt_contract_key(+)"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key"
+ " AND p.prs_perslid_key = m.prs_perslid_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND m.prs_perslid_key = p.prs_perslid_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"+ (urole == 'bgt' ? '(+)' : '')
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key";
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
}
else if (intopdr_key)
{
sql += " AND o.mld_opdr_key = " + intopdr_key; // de echte opdrachtkey
}
else
{ //
if (offerte >= 0)
@@ -4781,6 +4791,9 @@ mld = {setmeldingstatus:
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)
sql += " AND o.prs_kostenplaats_key IN"
+ " (SELECT k.prs_kostenplaats_key"
@@ -4943,50 +4956,51 @@ mld = {setmeldingstatus:
pautfunction = [pautfunction];
var sqlAB = "";
for (var jj = 0; jj < sqlA.length; jj++)
if (urole != 'bgt')
{
// pautfunction is nu altijd een Array met webfuncties
for (var ii = 0; ii < pautfunction.length; ii++)
{
// Voorwaarde sql_extern t.b.v. setting mld_typeopdr_afmelden_extern alleen toevoegen voor WEB_ORDBO2 rechten.
var sql3d = sqlA[jj] + (pautfunction[ii] == "WEB_ORDBO2"? sql_extern : "");
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
// if "disc == 0" or disc is not defined then disc should be ""
// otherwise de 3d authorization adds a "AND (1=0)" line to the query and you will have never a result
sqlB = (ii > 0? sqlB + " UNION " : "") + discx3d (sql3d,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"g.alg_gebouw_key",
"g.alg_verdieping_key",
"g.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
pautfunction[ii],
(!(mld_key || opdr_key) && disc_key_arr ? disc_key_arr.join(",") : ""),
(add_prs_restrict ? 2 : 0)
);
}
sqlAB = sqlAB + (jj > 0? " UNION " : "") + sqlB;
for (var jj = 0; jj < sqlA.length; jj++)
{
// pautfunction is nu altijd een Array met webfuncties
for (var ii = 0; ii < pautfunction.length; ii++)
{
// Voorwaarde sql_extern t.b.v. setting mld_typeopdr_afmelden_extern alleen toevoegen voor WEB_ORDBO2 rechten.
var sql3d = sqlA[jj] + (pautfunction[ii] == "WEB_ORDBO2"? sql_extern : "");
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
// if "disc == 0" or disc is not defined then disc should be ""
// otherwise de 3d authorization adds a "AND (1=0)" line to the query and you will have never a result
sqlB = (ii > 0? sqlB + " UNION " : "") + discx3d (sql3d,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"g.alg_gebouw_key",
"g.alg_verdieping_key",
"g.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
pautfunction[ii],
(!(mld_key || opdr_key) && disc_key_arr ? disc_key_arr.join(",") : ""),
(add_prs_restrict ? 2 : 0)
);
}
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;
}

View File

@@ -544,10 +544,10 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
FcltMgr.resized(window);
});
$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)
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();
}

View File

@@ -91,8 +91,8 @@ user.auth_required_or_abort(authparamsUSE || authparamsFOF);
%>
<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="faqantwoord">
<%=safe.html(oRs("fac_faq_answer").value)%><br/>
<div class="faqantwoord fclthtml">
<%=safe.fclthtml(oRs("fac_faq_answer").value)%><br/>
<% if (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;
%> <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>
<%=L("lcl_faq_mld_3")%></div>
<%=L("lcl_faq_mld_3")%></span>
</div>
</div>
</li>