FSN#31698 Scaffolding fixes

svn path=/Website/trunk/; revision=24385
This commit is contained in:
Jos Groot Lipman
2015-03-10 08:13:07 +00:00
parent 6c196e952d
commit c26682885e
9 changed files with 89 additions and 70 deletions

View File

@@ -336,12 +336,13 @@ api2 = {
continue;
// We kijken of dit model-veld in de filterparameters voorkomt. Voor ranges kunnen prefixes in gebruik zijn
var filterval = null;
if (fld in params.filter || "start_" + fld in params.filter || "end_" + fld in params.filter)
{
// filterval is de meegegeven filterwaarde voor dit veld
if (fld in params.filter)
{
var filterval = params.filter[fld];
filterval = params.filter[fld];
if (filterval === "" || filterval === null)
continue;
if (filterval < 0 && field.typ == "key")
@@ -1319,12 +1320,12 @@ api2 = {
// LET OP: Een (new Date) gemaakt binnen een plugin is vreemd genoeg geen (instanceof Date)
// Waarschijnlijk gebruikt een wsc een ander Date object als (ASP)JScript?
if (dt !== null && typeof dt == "object")
newval = new Date(newval);
dt = new Date(dt);
if (typeof dt == 'string')
{
if (dt.match(/^[0-9]+$/))
return new Date(parseInt(dt, 10));
var dt = myJSON.internal_parsedate(null, strval);
var dt = myJSON.internal_parsedate(null, dt);
if (dt && dt instanceof Date)
return dt;
}

View File

@@ -4,26 +4,25 @@
File: model_issueobjects.inc
Description: Meldingobjecten model. Dit bestand heeft niets met interfacing te maken
maar werkt uitsluitend op JSON-data
Description: Meldingobjecten model
Parameters:
Context:
Notes:
*/
%>
<%
model_issueobjects =
{
table: "mld_melding_object",
primary: "mld_melding_object_key",
records_name: "issueobjects",
record_name: "issueobject",
fields: [{ name: "id", dbs: "mld_melding_object_key", typ: "key", filter: "exact" },
//{ name: "issue", dbs: "mld_melding_key", typ: "key", xforeign: "mld_melding" }, // niet teruglinken // mld_melding zit niet in save2db.foreignKeyTable()
{ name: "object", dbs: "ins_deel_key", typ: "key", foreign: "ins_deel" }
],
fields: {"id" : { dbs: "mld_melding_object_key", typ: "key", filter: "exact" },
//"issue": { dbs: "mld_melding_key", typ: "key", xforeign: "mld_melding" }, // niet teruglinken // mld_melding zit niet in save2db.foreignKeyTable()
"object": { dbs: "ins_deel_key", typ: "key", foreign: "ins_deel" }
},
parent_key: "MLD_MELDING_KEY",
list: { columns: ["object"] },
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
{
@@ -39,7 +38,7 @@ model_issueobjects =
+ " FROM mld_melding_object"
+ " WHERE mld_melding_object_verwijder IS NULL"
+ " AND mld_melding_key = " + params.filter.id
+ " AND ins_deel_key = " + fields[0].val;
+ " AND ins_deel_key = " + fields[0].val; // TODO: unsafe?
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{

View File

@@ -4,8 +4,7 @@
File: model_issues.inc
Description: Melding model. Dit bestand heeft niets met interfacing te maken
maar werkt uitsluitend op JSON-data
Description: Melding model
Parameters:
Context:
@@ -29,25 +28,25 @@ model_issues =
primary: "mld_melding_key",
records_name: "issues",
record_name: "issue",
fields: [{ name: "id", dbs: "mld_melding_key", typ: "key", filter: "exact" },
{ name: "name", dbs: "mld_melding_id", typ: "varchar", sql: "ins_srtdiscipline.ins_srtdiscipline_prefix||mld_melding.mld_melding_key", filter: "exact" },
{ name: "contact", dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_name"), filter: "exact" },
{ name: "requestor", dbs: "prs_perslid_key_voor", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_call_for"), filter: "exact" },
{ name: "issuedate", dbs: "mld_melding_datum", typ: "datetime", track: L("lcl_mld_date_time"), filter: "range" },
{ name: "enddate", dbs: "mld_melding_einddatum", typ: "datetime", track: L("lcl_mld_enddate")},
{ name: "issuetype", dbs: "mld_stdmelding_key", typ: "key", foreign: "mld_stdmelding", track: L("lcl_complain"), filter: "exact" },
{ name: "description", dbs: "mld_melding_omschrijving", typ: "varchar", track: L("lcl_descr"), filter: "like" },
{ name: "remark", dbs: "mld_melding_opmerking", typ: "varchar", track: L("lcl_remark")},
{ name: "status", dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, track: L("lcl_status"), filter: "exact" },
{ name: "flag", dbs: "mld_melding_flag", typ: "key", /* geen echte key, wel key-gedrag */ track: L("lcl_mld_flags"), filter: "exact" },
{ name: "account", dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", track: L("lcl_account"), filter: "exact" },
{ name: "handler", dbs: "mld_melding_behandelaar_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_behandelaar"), filter: "exact" },
{ name: "location", dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", track: L("lcl_location"), filter: "exact" },
{ name: "building", dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", track: L("lcl_building"), filter: "exact" },
{ name: "floor", dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", track: L("lcl_floor"), filter: "exact" },
{ name: "room", dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", track: L("lcl_room"), filter: "exact" },
{ name: "terrain", dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", track: L("lcl_room"), filter: "exact" }
],
fields: {"id" : { dbs: "mld_melding_key", typ: "key", filter: "exact" },
"name" : { dbs: "mld_melding_id", typ: "varchar", sql: "ins_srtdiscipline.ins_srtdiscipline_prefix||mld_melding.mld_melding_key", filter: "exact" },
"contact" : { dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_name"), track: true, filter: "exact" },
"requestor" : { dbs: "prs_perslid_key_voor", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_call_for"), track: true, filter: "exact" },
"issuedate" : { dbs: "mld_melding_datum", typ: "datetime", label: L("lcl_mld_date_time"), track: true, filter: "range" },
"enddate" : { dbs: "mld_melding_einddatum", typ: "datetime", label: L("lcl_mld_enddate"), track: true},
"issuetype" : { dbs: "mld_stdmelding_key", typ: "key", foreign: "mld_stdmelding", label: L("lcl_complain"), track: true, filter: "exact" },
"description": { dbs: "mld_melding_omschrijving", typ: "varchar", label: L("lcl_descr"), track: true, filter: "like" },
"remark" : { dbs: "mld_melding_opmerking", typ: "varchar", label: L("lcl_remark"), track: true},
"status" : { dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, label: L("lcl_status"), track: true, filter: "exact" },
"flag" : { dbs: "mld_melding_flag", typ: "key", /* geen echte key, wel key-gedrag */ label: L("lcl_mld_flags"), track: true, filter: "exact" },
"account" : { dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", label: L("lcl_account"), track: true, filter: "exact" },
"handler" : { dbs: "mld_melding_behandelaar_key", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_behandelaar"),track: true, filter: "exact" },
"location" : { dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", label: L("lcl_location"), track: true, filter: "exact" },
"building" : { dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", label: L("lcl_building"), track: true, filter: "exact" },
"floor" : { dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", label: L("lcl_floor"), track: true, filter: "exact" },
"room" : { dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", label: L("lcl_room"), track: true, filter: "exact" },
"terrain" : { dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", label: L("lcl_room"), track: true, filter: "exact" }
},
includes: {
"issueobjects": {
model: model_issueobjects,

View File

@@ -4,8 +4,7 @@
File: model_orders.inc
Description: Opdrachten model. Dit bestand heeft niets met interfacing te maken
maar werkt uitsluitend op JSON-data
Description: Opdrachten model
Parameters:
Context:
@@ -33,32 +32,32 @@ model_orders =
records_name: "orders",
record_name: "order",
// Dit zijn voorlopige namen!
fields: [{ name: "id", dbs: "mld_opdr_key", typ: "key", filter: "exact" },
{ name: "name", dbs: "mld_opdr_id", /* moet alias worden */ typ: "varchar", filter: "exact",
fields: {"id" : { dbs: "mld_opdr_key", typ: "key", filter: "exact" },
"name" : { dbs: "mld_opdr_id", /* moet alias worden */ typ: "varchar", filter: "exact",
sql: "COALESCE(mld_opdr_id, ins_srtdiscipline.ins_srtdiscipline_prefix||mld_opdr.mld_melding_key||'/'||mld_opdr_bedrijfopdr_volgnr)" },
{ name: "contact", dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_behandelaar"), filter: "exact" },
{ name: "supplier", dbs: "mld_uitvoerende_keys", typ: "key", foreign: "mld_uitvoerende", track: L("lcl_ord_company_uit"), filter: "exact" },
{ name: "suppliercontact", dbs: "prs_contactpersoon_key", typ: "key", foreign: "prs_contactpersoon", track: L("lcl_contact_pers"), filter: "exact" },
{ name: "ordertype", dbs: "mld_typeopdr_key", typ: "key", foreign: "mld_typeopdr", track: L("lcl_descr")},
{ name: "description", dbs: "mld_opdr_omschrijving", typ: "varchar", track: L("lcl_mld_opdr_description"), filter: "like" },
{ name: "remark", dbs: "mld_opdr_opmerking", typ: "varchar", track: L("lcl_mld_inf_Opmerking"), filter: "like" },
{ name: "account", dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", track: L("lcl_mld_inf_Kostenplaats"), filter: "exact" },
{ name: "hours", dbs: "mld_opdr_uren", typ: "float", track: L("lcl_mld_hours") },
{ name: "hourrate", dbs: "mld_opdr_uurloon", typ: "float", track: L("lcl_hour_rate") },
{ name: "materialcost", dbs: "mld_opdr_materiaal", typ: "float", track: L("lcl_mater_cost") },
{ name: "costs", dbs: "mld_opdr_kosten", typ: "float", track: L("lcl_total_cost")},
{ name: "status", dbs: "mld_statusopdr_key", typ: "key", foreign: status.getopdrstatustext, track: L("lcl_status"), filter: "exact" },
{ name: "ordernr", dbs: "mld_opdr_ordernr", typ: "varchar", track: L("lcl_mld_inf_Ordernr") },
{ name: "orderdate", dbs: "mld_opdr_datumbegin", typ: "datetime", track: L("lcl_orderdate"), filter:"range" },
{ name: "enddate", dbs: "mld_opdr_einddatum", typ: "datetime", track: L("lcl_opdr_enddate"), filter:"range" },
{ name: "plandate", dbs: "mld_opdr_plandatum", typ: "datetime", track: L("lcl_opdr_plandate"), filter:"range" },
{ name: "location", dbs: "alg_v_allonroerendgoed.alg_locatie_key", typ: "key", foreign: "alg_locatie", track: L("lcl_location"), filter: "exact" },
{ name: "building", dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", track: L("lcl_building"), filter: "exact" },
{ name: "floor", dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", track: L("lcl_floor"), filter: "exact" },
{ name: "room", dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", track: L("lcl_room"), filter: "exact" },
{ name: "terrain", dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", track: L("lcl_room"), filter: "exact" },
{ name: "contract", dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract", track: L("lcl_contract"), filter: "exact" }
],
"contact" : { dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_behandelaar"), track: true, filter: "exact" },
"supplier" : { dbs: "mld_uitvoerende_keys", typ: "key", foreign: "mld_uitvoerende", label: L("lcl_ord_company_uit"), track: true, filter: "exact" },
"suppliercontact": { dbs: "prs_contactpersoon_key", typ: "key", foreign: "prs_contactpersoon", label: L("lcl_contact_pers"), track: true, filter: "exact" },
"ordertype" : { dbs: "mld_typeopdr_key", typ: "key", foreign: "mld_typeopdr", label: L("lcl_descr"), track: true },
"description" : { dbs: "mld_opdr_omschrijving", typ: "varchar", label: L("lcl_mld_opdr_description"), track: true, filter: "like" },
"remark" : { dbs: "mld_opdr_opmerking", typ: "varchar", label: L("lcl_mld_inf_Opmerking"), track: true, filter: "like" },
"account" : { dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", label: L("lcl_mld_inf_Kostenplaats"), track: true, filter: "exact" },
"hours" : { dbs: "mld_opdr_uren", typ: "float", label: L("lcl_mld_hours"), track: true },
"hourrate" : { dbs: "mld_opdr_uurloon", typ: "float", label: L("lcl_hour_rate"), track: true },
"materialcost" : { dbs: "mld_opdr_materiaal", typ: "float", label: L("lcl_mater_cost"), track: true },
"costs" : { dbs: "mld_opdr_kosten", typ: "float", label: L("lcl_total_cost"), track: true },
"status" : { dbs: "mld_statusopdr_key", typ: "key", foreign: status.getopdrstatustext, label: L("lcl_status"), track: true, filter: "exact" },
"ordernr" : { dbs: "mld_opdr_ordernr", typ: "varchar", label: L("lcl_mld_inf_Ordernr"), track: true },
"orderdate" : { dbs: "mld_opdr_datumbegin", typ: "datetime", label: L("lcl_orderdate"), track: true, filter:"range" },
"enddate" : { dbs: "mld_opdr_einddatum", typ: "datetime", label: L("lcl_opdr_enddate"), track: true, filter:"range" },
"plandate" : { dbs: "mld_opdr_plandatum", typ: "datetime", label: L("lcl_opdr_plandate"), track: true, filter:"range" },
"location" : { dbs: "alg_v_allonroerendgoed.alg_locatie_key", typ: "key", foreign: "alg_locatie", label: L("lcl_location"), track: true, filter: "exact" },
"building" : { dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", label: L("lcl_building"), track: true, filter: "exact" },
"floor" : { dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", label: L("lcl_floor"), track: true, filter: "exact" },
"room" : { dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", label: L("lcl_room"), track: true, filter: "exact" },
"terrain" : { dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", label: L("lcl_room"), track: true, filter: "exact" },
"contract" : { dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract", label: L("lcl_contract"), track: true, filter: "exact" }
},
includes: {
"notes": {
model: model_notes,

View File

@@ -15,9 +15,11 @@ RewriteBase ON
# /api2/buildings/1234.xml?apikey=apikey123 /default.asp?api2=buildings&format=xml&id=1234&apikey=apikey123
RewriteRule ^/api2/([a-z0-9\_]+)/(\d+)\.(xml|json|html|api|scf)/? /default.asp?api2=$1&format=$3&id=$2 [U,QSA]
RewriteRule ^/api2/([a-z0-9\_]+)/(\d+)/? /default.asp?api2=$1&format=scf&id=$2 [U,QSA]
# /api2/buildings.xml?apikey=apikey123 /default.asp?api2=buildings&format=xml&apikey=apikey123
RewriteRule ^/api2/([a-z0-9\_]+)\.(xml|json|html|api|scf)/? /default.asp?api2=$1&format=$2 [U,QSA]
RewriteRule ^/api2/([a-z0-9\_]+)/? /default.asp?api2=$1&format=scf [U,QSA]
# /melding/1234 /appl/mld/mld_melding.asp?mld_key=1234
# Geeft relatieve pad problemen

View File

@@ -9,7 +9,7 @@
Context:
*/
var mode = getQParamSafe("mode", "search");
var mode = getQParamSafe("mode", getQParam("id","")!=""?"wrap":"search");
if (mode == "save")
var JSON_Result = true;
%>
@@ -137,7 +137,7 @@ function scf_ROFIELDTR(field, fld, val, key)
}
function scf_RWFIELDTR(field, fld, val)
{
if (field.foreign)
if (field.foreign && typeof field.foreign == 'string') // TODO: foreign functie en foreignsql ondersteunen
{
var foreign = foreignKeyTable(field.foreign);
@@ -168,7 +168,7 @@ function scf_RWFIELDTR(field, fld, val)
departmentKey: val?val.id:null
});
}
else if (fupper == "ALG_RUIMTE" || fupper == "RES_RSV_RUIMTE" || !foreign)
else if (fupper.match(/ALG_RUIMTE|ALG_VERDIEPING|RES_RSV_RUIMTE|MLD_UITVOERENDE|CNT_CONTRACT/) || !foreign)
{
ROFIELDTR("fldtxt", field.label, "TODO: suggest met " + field.foreign);
}

View File

@@ -4,8 +4,8 @@
File: scaffolding_search.asp
Description: Toont db-upgrade tracking
Parameters: ??
Description: Generiek zoekscherm
Parameters:
Context:
Note:
@@ -19,7 +19,9 @@ function scaffolding_search(model, scf_params)
if (!scf_params.search.title && "search" in model)
scf_params.search.title = model.search.title;
FCLTHeader.Requires({plugins:[], js: []});
FCLTHeader.Requires({plugins:[],
js: ["jquery-ui.js", "jquery.timepicker-table.js"],
css: ["timePicker-table.css"]});
if (model.autfunction)
var authparams = user.checkAutorisation(model.autfunction);

View File

@@ -64,13 +64,22 @@ if (String(Request.ServerVariables("HTTP_ACCEPT")).match(/application\/json/) !=
};
if (Application("otap_environment") == "O" || Session("logging") > 0)
data.error.internal = ASPErrorJson();
if (Request.QueryString("format") == "xml")
var format = Request.QueryString("format");
if (format == "xml")
{
Response.ContentType = "text/xml";
var xml_antwoord = api2.json2xml([data.error], "errors", "error", true);
// TODO: Output XSL transform ondersteunen?
Response.Write(xml_antwoord.xml);
}
else if (format == "scf" || format == 'html')
{
Response.ContentType = "text/html";
var str_antwoord = "<!DOCTYPE html><html><head></head><body><pre>"
+ Server.HTMLEncode(JSON.stringify(data, null, 2))
+ "</pre></body></html>";
Response.Write(str_antwoord);
}
else
{
Response.ContentType = "application/json";

View File

@@ -733,13 +733,21 @@ function abort_with_warning(warning, code)
message: warning
}
};
if (Request.QueryString("format") == "xml")
var format = Request.QueryString("format");
if (format == "xml")
{
Response.ContentType = "text/xml";
var xml_antwoord = api2.json2xml([data.error], "errors", "error", true);
// TODO: Output XSL transform ondersteunen?
Response.Write(xml_antwoord.xml);
}
else if (format == "scf" || format == "html")
{
Response.ContentType = "text/html";
var str_antwoord = "<!DOCTYPE html><html><head></head><body><pre>"
+ Server.HTMLEncode(JSON.stringify(data, null, 2))
+ "</pre></body></html>";
Response.Write(str_antwoord);
}
else
{
Response.ContentType = "application/json";