249 lines
10 KiB
C++
249 lines
10 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mobile.inc
|
|
Description: Generieke functies die door elke mobile pagina gebruikt (kunnen) worden.
|
|
Parameters:
|
|
Context: In ELK mobile asp bestand
|
|
Note: Dus gebruik met mate
|
|
|
|
*/ %>
|
|
<!--#include file="../Shared/status.inc"-->
|
|
<%
|
|
if (S("mobile_enabled") != 1)
|
|
shared.simpel_page("Mobile module not enabled."); // Wel betalen he!
|
|
|
|
if (S("mobile_guest_user") > -1 && (typeof Session("user_key") == "undefined" || Session("user_key") == "-1"))
|
|
tryLogin(S("mobile_guest_user"), null, { noPassword: true });
|
|
|
|
// Uses S("mobile_alg_level"); // L, G of V
|
|
|
|
// Het idee is dat ik heel gedetailleerd kan vastleggen waar ik ben (achter deze PC)
|
|
// maar soms ook wat globaler (in dit gebouw). Het is aan de betreffende functionaliteit
|
|
// om te bepalen tot welk niveau ik deze kennis gebruik. Dus:
|
|
// Als ik op een werkplek zit moeten toch niet de meldingen in mijn ovz worden beperkt tot 1
|
|
// Verdieping is een goed defaultniveau, maar er is te configureren dat dat hoger ligt.
|
|
|
|
if (S("mobile_alg_level") == 'V' && user.alg_verdieping_key({withcurrent:true}) > -1)
|
|
{
|
|
var CurrentPosition = new Gebouw(user.alg_gebouw_key({withcurrent:true})).alg_gebouw_omschrijving()+"/"+new Verdieping(user.alg_verdieping_key({withcurrent:true})).naam();
|
|
var CurrentPositionMinus1 = new Gebouw(user.alg_gebouw_key({withcurrent:true})).alg_gebouw_omschrijving();
|
|
}
|
|
else if (S("mobile_alg_level") == 'G' && user.alg_gebouw_key({withcurrent:true}) > -1)
|
|
{
|
|
var CurrentPosition = new Gebouw(user.alg_gebouw_key({withcurrent:true})).alg_gebouw_omschrijving();
|
|
var CurrentPositionMinus1 = new Locatie(user.alg_locatie_key({withcurrent:true})).locatie_string()||"";
|
|
}
|
|
else
|
|
{
|
|
var CurrentPosition = new Locatie(user.alg_locatie_key({withcurrent:true})).locatie_string()||"";
|
|
var CurrentPositionMinus1 = "";
|
|
}
|
|
|
|
var mobile = {
|
|
iamhere:
|
|
function (plevel, pkey)
|
|
{ // level is L,G,V,R
|
|
var sql = "UPDATE prs_perslid "
|
|
+ " SET alg_onroerendgoed_keys = " + pkey
|
|
+ " , alg_onroerendgoed_type = "+safe.quoted_sql(plevel)
|
|
+ " , prs_perslid_bezetdatum = SYSDATE"
|
|
+ " WHERE prs_perslid_key = " + user_key;
|
|
|
|
Oracle.Execute(sql);
|
|
},
|
|
|
|
// Toon het nieuws specifiek voor deze locatie
|
|
locationnews:
|
|
function ()
|
|
{
|
|
// Nieuwsberichten die plaats gebonden zijn
|
|
if (user.alg_locatie_key({withcurrent: true}) > -1)
|
|
{ // Alleen als ik weet waar we zijn
|
|
var sqln = "SELECT DISTINCT " + lcl.xsqla('fac_nieuws_titel', 'fac_nieuws_key')
|
|
+ " ," + lcl.xsqla('fac_nieuws_omschrijving', 'fac_nieuws_key')
|
|
+ " , fac_nieuws_key"
|
|
+ " FROM fac_nieuws n"
|
|
+ " WHERE n.fac_nieuws_onrgoed_niveau = 'L'"
|
|
+ " AND n.fac_nieuws_onrgoed_key = " + user.alg_locatie_key({withcurrent: true})
|
|
+ " AND (n.fac_nieuws_van IS NULL OR SYSDATE >= n.fac_nieuws_van)"
|
|
+ " AND (n.fac_nieuws_tot IS NULL OR SYSDATE < n.fac_nieuws_tot)";
|
|
|
|
if (user.alg_gebouw_key({withcurrent: true}) > -1) { // Als ik het gebouw weet, doe ik het gebouwnieuws er ook bij
|
|
sqln += " UNION "
|
|
+ "SELECT DISTINCT " + lcl.xsqla('fac_nieuws_titel', 'fac_nieuws_key')
|
|
+ " , " + lcl.xsqla('fac_nieuws_omschrijving', 'fac_nieuws_key')
|
|
+ " , fac_nieuws_key"
|
|
+ " FROM fac_nieuws n "
|
|
+ " WHERE n.fac_nieuws_onrgoed_niveau = 'G'"
|
|
+ " AND n.fac_nieuws_onrgoed_key = " + user.alg_gebouw_key({withcurrent: true})
|
|
+ " AND (n.fac_nieuws_van IS NULL OR SYSDATE >= n.fac_nieuws_van)"
|
|
+ " AND (n.fac_nieuws_tot IS NULL OR SYSDATE < n.fac_nieuws_tot)";
|
|
}
|
|
sqln += " ORDER BY fac_nieuws_key DESC";
|
|
var oRs = Oracle.Execute(sqln);
|
|
|
|
var i = 0;
|
|
if (!oRs.eof)
|
|
{
|
|
%><ul data-role='listview' data-inset='true' data-theme='b' data-dividertheme='b'><%
|
|
}
|
|
while (!oRs.eof && i < S("portalmsgmax"))
|
|
{ // bewust geen safe.html gebruik hier, sta html toe??
|
|
%><li><span class="n1"><%=oRs("fac_nieuws_titel").Value%></span><span class="n2"><br><%=oRs("fac_nieuws_omschrijving").Value%></span></li><%
|
|
i++;
|
|
oRs.moveNext();
|
|
}
|
|
if (i > 0)
|
|
{
|
|
%></ul><%
|
|
}
|
|
oRs.close();
|
|
}
|
|
},
|
|
|
|
hasflexkenmerken:
|
|
function (pnode, pkey)
|
|
{
|
|
return true; // TODO placeholder function, to be defined
|
|
},
|
|
|
|
hastrackingpage:
|
|
function (pnode, pkey)
|
|
{
|
|
// goedkopere versie van de trackingpage query, alleen maar om te checken
|
|
// of er wel geen tracking is. Levert het aantal trackingregels op
|
|
var res;
|
|
var sql = "SELECT COUNT(*)"
|
|
+ " FROM fac_tracking tr, fac_srtnotificatie str"
|
|
+ " WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key"
|
|
+ " AND tr.fac_tracking_refkey = " + pkey
|
|
+ " AND str.fac_srtnotificatie_xmlnode = "+safe.quoted_sql(pnode)
|
|
+ " AND tr.fac_tracking_datum > (SYSDATE - 365)";
|
|
var oRs = Oracle.Execute(sql);
|
|
res = oRs(0).Value;
|
|
oRs.close();
|
|
return res;
|
|
},
|
|
|
|
// Deze vereist wel de resultset: moet de aanroeper nu geinclude hebben, wat niet zo goed is
|
|
trackingpage:
|
|
function (pnode, pkey, psubject)
|
|
{
|
|
HEADER({title: L("lcl_history")+" "+psubject, back: false, nohome: true}) ;
|
|
CONTENT_START();
|
|
|
|
function fnTrackText (oRs)
|
|
{
|
|
var tekst = safe.html(oRs("fac_tracking_oms").Value);
|
|
if (!tekst)
|
|
tekst = status.getsrtnotificatietext(oRs("fac_srtnotificatie_code").Value);
|
|
return "<div class='listbodytext'>" + tekst + "</div>";
|
|
}
|
|
|
|
var sql = "SELECT tr.fac_tracking_datum"
|
|
+ " , tr.fac_tracking_key"
|
|
+ " , str.fac_srtnotificatie_code"
|
|
+ " , COALESCE(pf.prs_perslid_naam_friendly, '-') prs_perslid_naam_friendly"
|
|
+ " , tr.fac_tracking_oms"
|
|
+ " 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 tr.fac_tracking_refkey = " + pkey
|
|
+ " AND str.fac_srtnotificatie_xmlnode = "+safe.quoted_sql(pnode)
|
|
+ " AND tr.fac_tracking_datum > (SYSDATE - 365)"
|
|
+ " ORDER BY tr.fac_tracking_datum DESC, tr.fac_tracking_key DESC ";
|
|
|
|
|
|
var rst = new ResultsetTable({ sql: sql,
|
|
keyColumn: "fac_tracking_key",
|
|
ID: "trackingtable",
|
|
headerColumn: "fac_tracking_datum",
|
|
detailColumn: "prs_perslid_naam_friendly",
|
|
subheaderColumn: fnTrackText,
|
|
noPrint: true,
|
|
noSearch: true,
|
|
mobile: true,
|
|
showAll: true,
|
|
mfilter: false //not yet supported
|
|
});
|
|
|
|
var cnt = rst.processResultset();
|
|
|
|
CONTENT_END();
|
|
},
|
|
|
|
hasnotespage:
|
|
function (pnode, pkey)
|
|
{
|
|
return true; // TODO placeholder function, to be defined
|
|
},
|
|
|
|
notespage:
|
|
function (pnode, pkey, psubject)
|
|
{
|
|
|
|
HEADER({title: L("lcl_mobile_notes")+" " + psubject, nohome: true});
|
|
CONTENT_START();
|
|
|
|
function fnNoteText (oRs)
|
|
{
|
|
return "<div class='listbodytext'>" + safe.html(oRs("note_omschrijving").Value) + "</div>";
|
|
}
|
|
|
|
switch (pnode)
|
|
{
|
|
case 'melding': sql = "SELECT n.mld_melding_note_aanmaak note_aanmaak"
|
|
+ " , n.mld_melding_note_key note_key"
|
|
+ " , pf.prs_perslid_key"
|
|
+ " , pf.prs_perslid_naam_friendly"
|
|
+ " , n.mld_melding_note_omschrijving note_omschrijving"
|
|
+ " 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 = " + pkey
|
|
// + (mfe.haveOnlyFErights? " AND mld_melding_note_flag = 1" : "")
|
|
+ " ORDER BY n.mld_melding_note_aanmaak DESC";
|
|
break;
|
|
}
|
|
|
|
|
|
var rst = new ResultsetTable({ sql: sql,
|
|
keyColumn: "note_key",
|
|
ID: "notetable",
|
|
headerColumn: "note_aanmaak",
|
|
detailColumn: "prs_perslid_naam_friendly",
|
|
subheaderColumn: fnNoteText,
|
|
noPrint: true,
|
|
noSearch: true,
|
|
mobile: true,
|
|
showAll: true
|
|
});
|
|
|
|
var cnt = rst.processResultset();
|
|
|
|
CONTENT_END();
|
|
},
|
|
|
|
simpel_page:
|
|
function(bodyhtml)
|
|
{
|
|
var showbuttons = (getQParamInt("qrc", 0) != 1 && getQParamInt("modal", 0) != 1)
|
|
Response.Clear();
|
|
Response.Write("<html><head>");
|
|
FCLTMHeader.Generate({title: "simpelpage" });
|
|
Response.Write("</head>");
|
|
Response.Write("<body class='simpelpage'>");
|
|
PAGE_START({id: "simpelpage"});
|
|
CONTENT_START();
|
|
HEADER({title: "", back: showbuttons, home: showbuttons });
|
|
Response.Write(bodyhtml);
|
|
CONTENT_END();
|
|
|
|
Response.Write("</body></html>");
|
|
Response.End;
|
|
}
|
|
};
|
|
|
|
%>
|