147 lines
7.1 KiB
C++
147 lines
7.1 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: PRS/prs_flexkenmerk.inc
|
|
Description: Functie die html code genereert voor de presentatie van de flexvelden
|
|
Parameters: reado Readonly
|
|
link_key prs_key, afd_key
|
|
srt_key prs_srt_key
|
|
niveau "P",
|
|
publiconly als true dan alleen/alle kenmerken tussen 800 en 900 , ongeacht autorisatie
|
|
(phonebook gebruik)
|
|
reado false,
|
|
flexcolumns aantal kolommen voor flexkenmerken
|
|
prsauthparams (resultaat van prs.checkAutorisation voor writeman e.d., alleen personen)
|
|
Context: Functie wordt aangeroepen door
|
|
1) load_kenmerk.asp
|
|
2) prs_edit_xxx.asp die initieel serverside deze html code invoegt.
|
|
Note:
|
|
*/ %>
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<%
|
|
function generateFlexKenmerkCode(params)
|
|
{
|
|
var link_key = params.link_key; // organisatieding-key (B/A/C/P-key)
|
|
var srt_key = params.srt_key; // soort perslid
|
|
var niveau = params.niveau; // Onroerendgoed niveau (B/A/C/P)
|
|
var advanced = params.advanced; // Geavanceerd
|
|
var reqId = params.reqId; // Perslid key (!search && multiMode)
|
|
var flexcolumns= params.flexcolumns;
|
|
|
|
// Voor afdelingen, bedrijven en contactpersonen zijn we heel flexibel
|
|
if (niveau=="B" || niveau=="A" || niveau=="C")
|
|
params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: true, writeself: true }
|
|
else if (niveau =="P" && !params.prsauthparams) // flex search
|
|
{
|
|
params.prsauthparams = { readman: true, readuse: true, readself: false }
|
|
var authparamsUSE = user.checkAutorisation("WEB_PRSUSE", true)||{PRSreadlevel: 9};
|
|
var authparamsMAN = user.checkAutorisation("WEB_PRSMAN", true)||{PRSreadlevel: 10};
|
|
// Als authparamsMAN en authparamsUSE verschillen zou het heel ingewikkeld worden.
|
|
// Daarom tonen we dan voor de veiligheid geen MAN meer.
|
|
if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
|
|
params.prsauthparams.readman = false;;
|
|
if (authparamsUSE.PRSreadlevel > -1)
|
|
params.prsauthparams.readuse = false;;
|
|
}
|
|
// Van jezelf mag je vanalles zien.
|
|
if (params.prsauthparams.readself)
|
|
params.prsauthparams.readuse = true;
|
|
|
|
function isReadonly (volgnummer)
|
|
{
|
|
if ( params.reado )
|
|
return true;
|
|
|
|
if (volgnummer <= 100 && params.prsauthparams.writeman )
|
|
return false; // die mag je bewerken met PRSMAN
|
|
|
|
if (volgnummer >= 800 && params.prsauthparams.writeself )
|
|
return false; // die mag ik bewerken
|
|
|
|
if (volgnummer >= 100 && params.prsauthparams.writeuse )
|
|
return false; // die mag je bewerken met PRSUSE
|
|
|
|
return true; // blijkbaar toch niet...
|
|
}
|
|
|
|
// Merk op dat een deel ook al door de query is uitgefilterd
|
|
function isInvisible(volgnummer, ktype)
|
|
{
|
|
if (volgnummer<100 && !params.prsauthparams.readman )
|
|
return true; // Invisible
|
|
|
|
// Boven de 900 zijn de kenmerken privacy gevoelig->niet in telefoonboekje
|
|
if (params.publiconly && volgnummer > 900)
|
|
return true; // invisible in telefoonboekje
|
|
|
|
if (params.publiconly && volgnummer > 800)
|
|
return false; // sowieso wel *visible* in telefoonboekje, ongeacht autorisatie
|
|
|
|
if (volgnummer>100 && !params.prsauthparams.readuse /* incl readself */)
|
|
return true; // Invisible
|
|
|
|
return false;
|
|
}
|
|
|
|
var authparamsPHB = user.checkAutorisation("WEB_PHONEB", true);
|
|
|
|
var sql = "SELECT k.prs_kenmerk_key kenmerk_key, "
|
|
+ lcl.xsql('k.prs_kenmerk_omschrijving', 'k.prs_kenmerk_key') +" kenmerk_omschrijving, "
|
|
+ " k.prs_kenmerk_kenmerktype kenmerk_kenmerktype, "
|
|
+ " k.fac_kenmerkdomein_key kenmerkdomein_key, "
|
|
+ " k.prs_kenmerk_lengte kenmerk_lengte, "
|
|
+ " k.prs_kenmerk_dec kenmerk_dec, "
|
|
+ " k.prs_kenmerk_nmin kenmerk_nmin, "
|
|
+ " k.prs_kenmerk_nmax kenmerk_nmax, "
|
|
+ (link_key > 0
|
|
? " (SELECT v.prs_kenmerklink_waarde "
|
|
+ " FROM prs_kenmerklink v "
|
|
+ " WHERE v.prs_link_key = " + link_key
|
|
+ " AND v.prs_kenmerklink_niveau = " + safe.quoted_sql(niveau)
|
|
+ " AND v.prs_kenmerk_key = k.prs_kenmerk_key "
|
|
+ " AND v.prs_kenmerklink_verwijder IS NULL)"
|
|
: lcl.xsql('k.prs_kenmerk_default', 'k.prs_kenmerk_key')
|
|
) + " kenmerk_waarde, "
|
|
+ " k.prs_kenmerk_volgnr kenmerk_volgnr, "
|
|
+ lcl.xsql('k.prs_kenmerk_dimensie', 'k.prs_kenmerk_key') +" kenmerk_dimensie, "
|
|
+ lcl.xsql('k.prs_kenmerk_hint', 'k.prs_kenmerk_key') +" kenmerk_hint, "
|
|
+ lcl.xsql('k.prs_kenmerk_default', 'k.prs_kenmerk_key') +" kenmerk_default, "
|
|
+ " k.prs_kenmerk_verplicht kenmerk_verplicht, "
|
|
+ " k.prs_kenmerk_groep kenmerk_groep, "
|
|
+ " NULL otherpath, "
|
|
+ " k.prs_kenmerk_toonbaar kenmerk_toonbaar,"
|
|
+ " k.prs_kenmerk_uniek kenmerk_uniek,"
|
|
+ " k.prs_kenmerk_regexp kenmerk_regexp"
|
|
+ " FROM prs_kenmerk k "
|
|
+ " WHERE k.prs_kenmerk_niveau = " + safe.quoted_sql(niveau)
|
|
+ " AND k.prs_kenmerk_verwijder IS NULL "
|
|
+ " AND (k.prs_srtperslid_key IS NULL "
|
|
+ ((niveau=='P' && srt_key > 0)
|
|
? " OR k.prs_srtperslid_key = "+ srt_key +")"
|
|
: ")"
|
|
)
|
|
+ (!params.prsauthparams.readman?" AND prs_kenmerk_volgnr >= 100":"")
|
|
+ (!params.prsauthparams.readuse&&!authparamsPHB?" AND prs_kenmerk_volgnr <= 100":"")
|
|
+ (!params.prsauthparams.readuse&&authparamsPHB?" AND prs_kenmerk_volgnr BETWEEN 800 AND 900":"")
|
|
+ " ORDER BY k.prs_kenmerk_volgnr, "
|
|
+ lcl.xsql('k.prs_kenmerk_omschrijving', 'k.prs_kenmerk_key');
|
|
|
|
var trn = 0;
|
|
|
|
listKenmerk(sql,
|
|
"PRS", // Module
|
|
link_key,
|
|
{ flexcolumns: flexcolumns,
|
|
kenmerk_search: advanced,
|
|
fnIsReadonly: isReadonly,
|
|
fnIsInvisible: isInvisible,
|
|
parentKey: link_key, // PF: kan ik me niet voorstellen ??
|
|
hideVervallen: link_key<0,
|
|
niveau: niveau,
|
|
kenmerk_module: niveau,
|
|
mobile: params.mobile
|
|
}
|
|
);
|
|
} %>
|