Files
Facilitor/APPL/PRS/prs_flexkenmerk.inc
Erik Groener e08fa3fe5c AAIT#30303 Mobiel instellen van je persoonlijke gegevens
svn path=/Website/trunk/; revision=24682
2015-04-03 09:08:14 +00:00

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
}
);
} %>