FSN#44507: (PDA) Bijlagen toevoegen herzien savepoint
svn path=/Website/branches/v2017.2/; revision=35631
This commit is contained in:
@@ -319,32 +319,42 @@ api2_rest = {
|
||||
{
|
||||
var bytes = Request.TotalBytes;
|
||||
if (bytes == 0)
|
||||
{ // TODO
|
||||
//__DoLog("api_gen_import empty body posted", "#ffff00");
|
||||
//Response.Write("Error: no data posted for API import");
|
||||
//Response.End; // Grof maar anders AiAi, dat is nog erger
|
||||
}
|
||||
api2.error(400, "Empty file");
|
||||
|
||||
var fileStream = Server.CreateObject("ADODB.Stream");
|
||||
fileStream.Type = 1; // adTypeBinary eerst nog
|
||||
fileStream.Open();
|
||||
fileStream.Write(Request.BinaryRead(bytes));
|
||||
try
|
||||
{
|
||||
fileStream.Write(Request.BinaryRead(bytes));
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
var msg = L("lcl_shared_upload_error_start") + e.description + L("lcl_shared_upload_error_end");
|
||||
api2.error(400, msg);
|
||||
}
|
||||
jsondata["custom_fields"][0]["attachments"][0].datastream = fileStream;
|
||||
if (key == 0) // new record
|
||||
{
|
||||
var token = model.includes["custom_fields"].model.REST_POST(requestparams, jsondata.custom_fields[0], -1);
|
||||
|
||||
var record = { xflexparentkey: -1, propertyid: jsondata.custom_fields[0].propertyid};
|
||||
var fileparams = { getFiles: true, api2name: null, tmpfolder: token };
|
||||
var data = model.includes["custom_fields"].model.get_file_info(requestparams, record, fileparams );
|
||||
|
||||
api2_rest.deliver(data, /* dummy model */ { record_name: "attachment" }, "json", true);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
method = "PUT"; // het moet altijd een update van een issue zijn
|
||||
}
|
||||
requestparams.custom_fields_only = true; // Voorkom bij nieuwe bijlage onnodige update vam hele issue
|
||||
model["REST_" + method](requestparams, jsondata, key); // via het hoofdmodel met authorisatie controle en alles
|
||||
var record = { xflexparentkey: key, propertyid: jsondata.custom_fields[0].propertyid};
|
||||
var fileparams = { getFiles: true, api2name: model.records_name };
|
||||
}
|
||||
var data = model.includes["custom_fields"].model.get_file_info(requestparams, record, fileparams );
|
||||
|
||||
var data = model["REST_" + method](requestparams, jsondata, key); // via het hoofdmodel met authorisatie controle en alles
|
||||
api2_rest.deliver(data, /* dummy model */ { record_name: "attachment" }, outputformat, true);
|
||||
return;
|
||||
}
|
||||
// Geen atachment dus door met de reguliere code
|
||||
var data = model["REST_" + method](requestparams, jsondata, key);
|
||||
if (method == "GET")
|
||||
{
|
||||
if (!data.length) // mogelijk not authorized op hele record
|
||||
|
||||
@@ -205,8 +205,7 @@ function model_custom_fields(formodel, flexModel, flexParams)
|
||||
}
|
||||
else
|
||||
{
|
||||
Response.Status = "422 Unprocessable Entity";
|
||||
Response.End;
|
||||
api2.error(422, L("lcl_shared_file_ext_not_allowed"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -391,30 +391,41 @@ function model_issues(mld_key, params)
|
||||
|
||||
var this_mld = mld.func_enabled_melding(mld_key);
|
||||
user.auth_required_or_abort(this_mld.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
|
||||
params = _pre_analyze_fields(params, jsondata);
|
||||
// Verwijder voor PUT wat niet gewijzigd mag worden.
|
||||
delete jsondata.name;
|
||||
delete jsondata.contact;
|
||||
delete jsondata.requestor;
|
||||
delete jsondata.issuetype;
|
||||
delete jsondata.location;
|
||||
|
||||
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
|
||||
_analyze_fields(dbfields, params, jsondata);
|
||||
_validate_fields(dbfields, params, jsondata);
|
||||
if (params.custom_fields_only)
|
||||
{
|
||||
var mldUpd = { trackarray: [] };
|
||||
}
|
||||
else
|
||||
{
|
||||
params = _pre_analyze_fields(params, jsondata);
|
||||
// Verwijder voor PUT wat niet gewijzigd mag worden.
|
||||
delete jsondata.name;
|
||||
delete jsondata.contact;
|
||||
delete jsondata.requestor;
|
||||
delete jsondata.issuetype;
|
||||
delete jsondata.location;
|
||||
|
||||
var wheres = [" mld_melding_key = " + mld_key];
|
||||
var mldUpd = buildTrackingUpdate("mld_melding", wheres.join(" AND " ), dbfields, { noValidateToken: true });
|
||||
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
|
||||
_analyze_fields(dbfields, params, jsondata);
|
||||
_validate_fields(dbfields, params, jsondata);
|
||||
|
||||
var err = Oracle.Execute(mldUpd.sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
var wheres = [" mld_melding_key = " + mld_key];
|
||||
var mldUpd = buildTrackingUpdate("mld_melding", wheres.join(" AND " ), dbfields, { noValidateToken: true });
|
||||
|
||||
var err = Oracle.Execute(mldUpd.sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
}
|
||||
|
||||
var mldtrack = api2.process_includes(params, this, jsondata, mld_key);
|
||||
|
||||
shared.trackaction("MLDUPD",
|
||||
mld_key,
|
||||
L("lcl_mld_is_mldupdtrack").format(mld_key) + (mldUpd.trackarray.length > 0? "\n" : "") + mldUpd.trackarray.join("\n"));
|
||||
if (mldUpd.trackarray.length)
|
||||
{
|
||||
shared.trackaction("MLDUPD",
|
||||
mld_key,
|
||||
L("lcl_mld_is_mldupdtrack").format(mld_key) + (mldUpd.trackarray.length > 0? "\n" : "") + mldUpd.trackarray.join("\n"));
|
||||
}
|
||||
|
||||
if (jsondata.status > 0)
|
||||
mld.setmeldingstatus(mld_key, jsondata.status, "");
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<!-- /api2/attachments/sample.doc?... /default.asp?api2=attachments&filename=sample.doc&... -->
|
||||
<rule name="attachments" stopProcessing="true">
|
||||
<match url="^api2/([a-z0-9_]+)/(\d+)/attachments/(.*)/(.*)/?" />
|
||||
<action type="Rewrite" url="default.asp?mode=attachment&api2={R:1}&id={R:2}&subfolder={R:3}&filename={UrlEncode:{R:4}}" appendQueryString="true" />
|
||||
<action type="Rewrite" url="default.asp?mode=attachment&format=auto&api2={R:1}&id={R:2}&subfolder={R:3}&filename={UrlEncode:{R:4}}" appendQueryString="true" />
|
||||
</rule>
|
||||
<!-- /api2/buildings/ /default.asp?api2=doc&format=doc -->
|
||||
<rule name="Add trailing slash" stopProcessing="true">
|
||||
|
||||
@@ -118,11 +118,15 @@ $.ajaxSetup(
|
||||
{
|
||||
if (XMLHttpRequest.status != 0)
|
||||
{
|
||||
FcltMgr.alert("JQuery Ajax Error: " + textStatus
|
||||
+ "\n" + XMLHttpRequest.status + ": " + XMLHttpRequest.statusText
|
||||
+ (errorThrown && errorThrown != XMLHttpRequest.statusText? "\n" + errorThrown:"")
|
||||
+ "\n\n" + this.type + " " + this.url
|
||||
+ "\n\n" + new Date().toLocaleString());
|
||||
if (XMLHttpRequest.responseJSON && "error" in XMLHttpRequest.responseJSON)
|
||||
var errtxt = XMLHttpRequest.responseJSON.error.message; // een api2.error(400, "Tekst");
|
||||
else
|
||||
errtxt = "JQuery Ajax Error: " + textStatus
|
||||
+ "\n" + XMLHttpRequest.status + ": " + XMLHttpRequest.statusText
|
||||
+ (errorThrown && errorThrown != XMLHttpRequest.statusText? "\n" + errorThrown:"")
|
||||
+ "\n\n" + this.type + " " + this.url;
|
||||
FcltMgr.alert(errtxt
|
||||
+ "\n\n" + new Date().toLocaleString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
/* Redmine - project management software
|
||||
Copyright (C) 2006-2017 Jean-Philippe Lang */
|
||||
/*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: attachments.js
|
||||
Description: clientside functions for attachments
|
||||
Note: Wordt nog alleen voor PDA gebruikt
|
||||
Een bestand wordt na kiezen altijd direct geupload en
|
||||
dan krijgen we een token terug welke we uiteindelijk
|
||||
submitten
|
||||
|
||||
Er zit ook drag-and-drop code in die we (nog) niet gebruiken
|
||||
Er zit ook progress-bar code in die we (nog) niet gebruiken
|
||||
*/
|
||||
|
||||
function addFile(inputEl, file, eagerUpload) {
|
||||
var attachmentsFields = $(inputEl).closest('.attachments_form').find('.attachments_fields');
|
||||
@@ -14,15 +26,10 @@ function addFile(inputEl, file, eagerUpload) {
|
||||
|
||||
fileSpan.append(
|
||||
$('<input>', { type: 'text', 'class': 'icon icon-attachment filename readonly', name: param +'[' + attachmentId + '][filename]', readonly: 'readonly'} ).val(file.name),
|
||||
$('<input>', { type: 'text', 'class': 'description', name: param + '[' + attachmentId + '][description]', maxlength: 255, placeholder: $(inputEl).data('description-placeholder') } ).toggle(!eagerUpload),
|
||||
$('<input>', { type: 'hidden', 'class': 'token', name: param + '[' + attachmentId + '][token]'} ),
|
||||
$('<a> </a>').attr({ href: "#", 'class': 'icon-only icon-del remove-upload' }).click(removeFile).toggle(!eagerUpload)
|
||||
$('<a> XX</a>').attr({ href: "#", 'class': 'icon-only icon-del remove-upload' }).click(removeFile).toggle(!eagerUpload)
|
||||
).appendTo(attachmentsFields);
|
||||
|
||||
if ($(inputEl).data('description') == 0) {
|
||||
fileSpan.find('input.description').remove();
|
||||
}
|
||||
|
||||
if(eagerUpload) {
|
||||
ajaxUpload(file, attachmentId, fileSpan, inputEl);
|
||||
}
|
||||
@@ -44,6 +51,7 @@ function ajaxUpload(file, attachmentId, fileSpan, inputEl) {
|
||||
}
|
||||
|
||||
function onProgress(e) {
|
||||
return;
|
||||
if(e.lengthComputable) {
|
||||
this.progressbar( 'value', e.loaded * 100 / e.total );
|
||||
}
|
||||
@@ -59,8 +67,8 @@ function ajaxUpload(file, attachmentId, fileSpan, inputEl) {
|
||||
})
|
||||
.done(function(result) {
|
||||
addInlineAttachmentMarkup(file);
|
||||
progressSpan.progressbar( 'value', 100 ).remove();
|
||||
fileSpan.find('input.description, a').css('display', 'inline-block');
|
||||
//progressSpan.progressbar( 'value', 100 ).remove();
|
||||
fileSpan.find('input.token').val(result.attachment.token)
|
||||
})
|
||||
.fail(function(result) {
|
||||
progressSpan.text(result.statusText);
|
||||
@@ -76,7 +84,7 @@ function ajaxUpload(file, attachmentId, fileSpan, inputEl) {
|
||||
}
|
||||
|
||||
var progressSpan = $('<div>').insertAfter(fileSpan.find('input.filename'));
|
||||
progressSpan.progressbar();
|
||||
//progressSpan.progressbar();
|
||||
fileSpan.addClass('ajax-waiting');
|
||||
|
||||
var maxSyncUpload = $(inputEl).data('max-concurrent-uploads');
|
||||
@@ -102,9 +110,8 @@ function uploadBlob(blob, uploadUrl, attachmentId, options) {
|
||||
progressEventHandler: $.noop
|
||||
}, options);
|
||||
|
||||
uploadUrl = uploadUrl + '?attachment_id=' + attachmentId;
|
||||
uploadUrl = uploadUrl + encodeURIComponent(blob.name) + '?attachment_id=' + attachmentId;
|
||||
if (blob instanceof window.File) {
|
||||
uploadUrl += '&filename=' + encodeURIComponent(blob.name);
|
||||
uploadUrl += '&content_type=' + encodeURIComponent(blob.type);
|
||||
}
|
||||
|
||||
@@ -112,7 +119,10 @@ function uploadBlob(blob, uploadUrl, attachmentId, options) {
|
||||
type: 'POST',
|
||||
contentType: 'application/octet-stream',
|
||||
beforeSend: function(jqXhr, settings) {
|
||||
jqXhr.setRequestHeader('Accept', 'application/js');
|
||||
jqXhr.setRequestHeader('Accept', 'application/json');
|
||||
|
||||
jqXhr.setRequestHeader('X-CSRF-TOKEN', RVT_token );
|
||||
|
||||
// attach proper File object
|
||||
settings.data = blob;
|
||||
},
|
||||
|
||||
@@ -37,7 +37,7 @@ var LOCKED_USER_OK = { "xmlnode": "melding", "key": mld_key };
|
||||
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
|
||||
FCLTHeader.Requires({ js: [rooturl+"/appl/pda/modernizr-3.3.0.custom.min.js", rooturl+"/appl/pda/attachments.js" ] });
|
||||
FCLTHeader.Requires({plugins: ["suggest"]});
|
||||
|
||||
var action = getQParam("action", "");
|
||||
@@ -270,6 +270,8 @@ if (addSubheader)
|
||||
subjectSubheader = L("lcl_mobile_at").format(plaats_string);
|
||||
}
|
||||
|
||||
var editKostenplaats = (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info.kpnverplicht);
|
||||
|
||||
|
||||
// TODO lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
|
||||
|
||||
@@ -277,6 +279,11 @@ if (addSubheader)
|
||||
<html>
|
||||
<head>
|
||||
<% FCLTMHeader.Generate({title: subject }); %>
|
||||
<style>
|
||||
.remove-upload {
|
||||
xdisplay: block!important;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var timerID=null;
|
||||
function delayed(delay, fn)
|
||||
@@ -291,7 +298,7 @@ if (addSubheader)
|
||||
return false;
|
||||
|
||||
// E<>rst accepteren, dan saven. Ander heb je met BOF maar zonder FOF een probleem
|
||||
$.post( "../mld/mld_accept_save.asp?mld_key=<%=mld_key%>"
|
||||
$.post( "<%=rooturl%>/appl/mld/mld_accept_save.asp?mld_key=<%=mld_key%>"
|
||||
, $("[name=meld]").serialize()
|
||||
<% if (this_mld.canChange) { %>
|
||||
, McltCallbackAndThen(function ()
|
||||
@@ -318,7 +325,7 @@ if (addSubheader)
|
||||
, $("[name=meld]").serialize()
|
||||
, FcltCallbackAndThen(function ()
|
||||
{
|
||||
$.post( "../mld/mld_close_save.asp?mld_key=<%=mld_key%>"
|
||||
$.post( "<%=rooturl%>/appl/mld/mld_close_save.asp?mld_key=<%=mld_key%>"
|
||||
, $("[name=meld]").serialize()
|
||||
, McltCallbackRefresh
|
||||
, "json");
|
||||
@@ -353,7 +360,7 @@ if (addSubheader)
|
||||
urole: "fe",
|
||||
autoorder: 1 };
|
||||
<% protectRequest.dataToken("data"); %>
|
||||
$.post("../mld/mld_edit_opdr_save.asp",
|
||||
$.post("<%=rooturl%>/appl/mld/mld_edit_opdr_save.asp",
|
||||
data,
|
||||
McltCallbackAndThenAlways(function () { mld_submit_callback({success: true, mld_key: json.mld_key }) }),
|
||||
"json");
|
||||
@@ -368,7 +375,7 @@ if (addSubheader)
|
||||
$("input[name=mld_key]").val(json.mld_key);
|
||||
<% } else if (mld_key < 0){ %>
|
||||
// Nieuwe melding aangemaakt. Altijd complete reload, we hebben nu een mld_key namelijk
|
||||
window.location.href = "melding.asp?mld_key=" + json.mld_key;
|
||||
window.location.href = "<%=rooturl%>/appl/pda/melding.asp?mld_key=" + json.mld_key;
|
||||
<% } else { %>
|
||||
// Opslaan button geklikt. Er hoeft niet gerefreshed te worden. Er kan direct weer gewijzigd worden (Afhandeling)
|
||||
<% } %>
|
||||
@@ -396,7 +403,7 @@ if (addSubheader)
|
||||
|
||||
function mld_forward()
|
||||
{
|
||||
window.location.href = "melding_new.asp?mld_key=<%=mld_key%>&action=forward";
|
||||
window.location.href = "<%=rooturl%>/appl/pda/melding_new.asp?mld_key=<%=mld_key%>&action=forward";
|
||||
}
|
||||
|
||||
function PasteFromSelectbox()
|
||||
@@ -411,7 +418,7 @@ if (addSubheader)
|
||||
|
||||
function mld_forward_cancel()
|
||||
{
|
||||
window.location.href = "../pda/melding.asp?mld_key=<%=mld_key%>";
|
||||
window.location.href = "<%=rooturl%>/appl/pda/melding.asp?mld_key=<%=mld_key%>";
|
||||
}
|
||||
|
||||
function mld_forward_submit()
|
||||
@@ -436,7 +443,7 @@ if (addSubheader)
|
||||
autoorder: 1
|
||||
};
|
||||
<% protectRequest.dataToken("data"); %>
|
||||
$.post("../mld/mld_edit_opdr_save.asp",
|
||||
$.post("<%=rooturl%>/appl/mld/mld_edit_opdr_save.asp",
|
||||
data,
|
||||
McltCallbackAndThenAlways(afsluiten),
|
||||
"json");
|
||||
@@ -447,7 +454,7 @@ if (addSubheader)
|
||||
|
||||
function afsluiten(jdata)
|
||||
{ // Sluit onszelf.
|
||||
window.location.href = "melding.asp?mld_key=<%=mld_key%>";
|
||||
window.location.href = "<%=rooturl%>/appl/pda/melding.asp?mld_key=<%=mld_key%>";
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -465,7 +472,7 @@ if (action != "forward")
|
||||
|
||||
// Altijd forcesave omdat we geen doublecheck aankunnen
|
||||
%>
|
||||
<form name="meld" id="meld" action="../mld/mld_edit_melding_save.asp" method="post">
|
||||
<form name="meld" id="meld" action="<%=rooturl%>/appl/mld/mld_edit_melding_save.asp" method="post">
|
||||
<input type="hidden" name="mld_key" value="<%=mld_key%>">
|
||||
<input type="hidden" name="forcesave" id="forcesave" value="0">
|
||||
<input type="hidden" name="parent_key" id="parent_key" value="-1">
|
||||
@@ -503,6 +510,18 @@ if (action != "forward")
|
||||
BLOCK_START({collapsed: true, title: (mld_info.mld_onderwerp == null ? L("lcl_mld_frame_algemeen") : mld_info.mld_onderwerp)});
|
||||
var prs_melder = new Perslid(mld_info.melder_key);
|
||||
ROFIELD("fld", L("lcl_caller") , prs_melder.naam(), { moreinfo: "tel:"+(prs_melder.prs_perslid_mobiel()||prs_melder.prs_perslid_telefoonnr()) });
|
||||
|
||||
if (S("mld_num_prefix_mode") == 1 && mld_info.kostenpl_key > 0 && !editKostenplaats)
|
||||
{
|
||||
var sql = "SELECT k.prs_kostenplaats_key kpkey"
|
||||
+ " , " + S("prs_kpn_string") + " kpstring"
|
||||
+ " FROM prs_kostenplaats k"
|
||||
+ " WHERE k.prs_kostenplaats_key = " + mld_info.kostenpl_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
ROFIELD("fld", L("lcl_mld_inf_Kostenplaats"), oRs("kpstring").Value);
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
ROFIELD("fld", L("lcl_mld_date_time") , toDateTimeString(mld_info.melddatum));
|
||||
ROFIELD("fld", L("lcl_vakgroup") , (mld_info.prefix ? mld_info.prefix+"-" : "") + mld_info.ins_discipline_omschrijving);
|
||||
BLOCK_END();
|
||||
@@ -515,7 +534,7 @@ if (action != "forward")
|
||||
FCLTpersoonselector("person",
|
||||
"sgPerson",
|
||||
{ perslidKey: mld_info.melder_key,
|
||||
label: L("lcl_mld_name"),
|
||||
xxlabel: L("lcl_mld_name"),
|
||||
fieldNameKey: "person",
|
||||
readonly: !personEditable,
|
||||
autlevel: this_mld.authparams(autfunction) && this_mld.authparams(autfunction).PRSwritelevel,
|
||||
@@ -561,13 +580,13 @@ if (action != "forward")
|
||||
ROFIELD("fld", L("lcl_gerelateerdeobjecten"), ins_name_arr.join("\n"), {multi: ins_name_arr.length > 1});
|
||||
}
|
||||
|
||||
if (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info.kpnverplicht) {
|
||||
if (editKostenplaats) {
|
||||
|
||||
FCLTkostenplaatsselector("account",
|
||||
"sgAccount",
|
||||
user_key,
|
||||
{ kostenplaatsKey: mld_info.kostenpl_key || -1,
|
||||
label: L("lcl_mld_inf_Kostenplaats"),
|
||||
xxxlabel: L("lcl_mld_inf_Kostenplaats"),
|
||||
extraParamField: "module",
|
||||
extracode: "M",
|
||||
filtercode: "AA",
|
||||
@@ -577,7 +596,8 @@ if (action != "forward")
|
||||
else
|
||||
{
|
||||
%> <input type="hidden" name="account" id="sgAccount" value="<%=mld_info.kostenpl_key || -1 %>">
|
||||
<%}
|
||||
<%
|
||||
}
|
||||
|
||||
if (mld_key > -1)
|
||||
{
|
||||
@@ -699,7 +719,7 @@ if (action != "forward")
|
||||
if (mld_info.parent_key) // gekoppelde melding verwijst naar de parent voor afhandeling
|
||||
{
|
||||
var sprefix = mld.mld_prefix(mld_info.parent_key);
|
||||
var params = { moreinfo: "melding.asp?mld_key=" + mld_info.parent_key, disabled: true};
|
||||
var params = { moreinfo: rooturl+"/appl/pda/melding.asp?mld_key=" + mld_info.parent_key, disabled: true};
|
||||
ROFIELD("fld", L("lcl_mld_completion_in"), sprefix + mld_info.parent_key, params);
|
||||
}
|
||||
else
|
||||
@@ -782,7 +802,7 @@ if (action != "forward")
|
||||
var this_opdr = mld.func_enabled_mld(mld_info.disc, "D"); // wat mag ik zoal op een nieuwe melding
|
||||
if ((this_opdr.canORDBOFread) && showord)
|
||||
{
|
||||
opdr_page = "./orders_list.asp?mld_key="+mld_key+"&urole=" + (this_opdr.canORDBOFread? "bo" : urole);
|
||||
opdr_page = rooturl+"/appl/pda/orders_list.asp?mld_key="+mld_key+"&urole=" + (this_opdr.canORDBOFread? "bo" : urole);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -799,10 +819,7 @@ if (action != "forward")
|
||||
BUTTON(L("lcl_close"), {click: "mld_close()", dataicon: "check"});
|
||||
}
|
||||
if (this_mld.canForward || this_mld.canFixMelding) { // bo2bo
|
||||
BUTTON( (this_mld.canForward?L("lcl_forward"):L("lcl_fixmelding")),
|
||||
{ click: "mld_forward()",
|
||||
dataicon: "forward",
|
||||
dataajax: "false"} );
|
||||
BUTTON( (this_mld.canForward ? L("lcl_forward") : L("lcl_fixmelding")), {click: "mld_forward()", dataicon: "forward"});
|
||||
}
|
||||
var tsql = "SELECT COUNT(ins_deel_key) FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key;
|
||||
toRs = Oracle.Execute(tsql);
|
||||
@@ -811,10 +828,10 @@ if (action != "forward")
|
||||
{
|
||||
tsql = "SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key;
|
||||
toRs1 = Oracle.Execute(tsql);
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_deel.asp?ins_key="+toRs1("ins_deel_key").value, dataicon: "info", dataajax: 'false'});
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: rooturl+"/appl/pda/ins_deel.asp?ins_key="+toRs1("ins_deel_key").value, dataicon: "info", dataajax: "false"});
|
||||
}
|
||||
else
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?mld_key="+mld_key, dataicon: "info", dataajax: 'false'});
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: rooturl+"/appl/pda/ins_list.asp?mld_key="+mld_key, dataicon: "info", dataajax: "false"});
|
||||
}
|
||||
trackinglines = mobile.hastrackingpage('melding', mld_key);
|
||||
if (trackinglines>0) {
|
||||
@@ -823,10 +840,10 @@ if (action != "forward")
|
||||
if (mfe.canReadNotes) { // Heb ik rechten om notities te zien
|
||||
var tsql = "SELECT COUNT(*) FROM mld_melding_note n WHERE n.mld_melding_key = " + mld_key;
|
||||
toRs = Oracle.Execute(tsql);
|
||||
BUTTON(L("lcl_mld_frame_notes")+" ("+toRs(0).value+")", {linkid: "./notitie.asp?node=melding&key="+mld_key, dataicon: "comment", dataajax: 'false'});
|
||||
BUTTON(L("lcl_mld_frame_notes")+" ("+toRs(0).value+")", {linkid: rooturl+"/appl/pda/notitie.asp?node=melding&key="+mld_key, dataicon: "comment", dataajax: "false"});
|
||||
}
|
||||
if (ruimte_key > -1 && user.checkAutorisation( "WEB_ALGUSE", true)) {
|
||||
BUTTON(L("lcl_room"), {linkid: "./ruimte.asp?ruimte_key="+ruimte_key, dataicon: "info", dataajax: 'false'});
|
||||
BUTTON(L("lcl_room"), {linkid: rooturl+"/appl/pda/ruimte.asp?ruimte_key="+ruimte_key, dataicon: "info", dataajax: "false"});
|
||||
}
|
||||
if (opdr_page != "") {
|
||||
var tsql = "SELECT COUNT(*) FROM mld_opdr o WHERE o.mld_melding_key = " + mld_key
|
||||
@@ -846,14 +863,10 @@ if (action != "forward")
|
||||
if (mld_key > -1)
|
||||
{
|
||||
if (trackinglines>0) {
|
||||
PAGE_START({id: "mld-2-"+mld_key, dialog: true})
|
||||
PAGE_START({id: "mld-2-"+mld_key})
|
||||
mobile.trackingpage('melding', mld_key, (mld_info.prefix || "")+ mld_key);
|
||||
PAGE_END();
|
||||
}
|
||||
// Deze pagina zou nog niet hoeven als er geen notes zijn, geeft niks
|
||||
PAGE_START({id: "mld-3-"+mld_key})
|
||||
mobile.notespage('melding', mld_key, (mld_info.prefix || "")+ mld_key);
|
||||
PAGE_END();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -866,7 +879,7 @@ if (action == "forward")
|
||||
HEADER({title: L("lcl_mld_forward_mld").format((mld_info.prefix || "") + mld_key), back:!qrc });
|
||||
CONTENT_START();
|
||||
%>
|
||||
<form name="meld_fwd" id="meld_fwd" action="../mld/mld_forward_save.asp?mld_key=<%=mld_key%>" method="post">
|
||||
<form name="meld_fwd" id="meld_fwd" action="<%=rooturl%>/appl/mld/mld_forward_save.asp?mld_key=<%=mld_key%>" method="post">
|
||||
<input type="hidden" name="disc" id="disc" value="<%=disc_key%>">
|
||||
<input type="hidden" name="stdm" id="stdm" value="<%=stdm_key%>">
|
||||
<%
|
||||
@@ -876,7 +889,7 @@ if (action == "forward")
|
||||
RWFIELD("opmerk", L("lcl_mld_inf_Opmerking"), "", {multi: true, pclass: ((S("mld_forward_opm_flags") & 1) == 1? " required" : "")});
|
||||
|
||||
CONTROLGROUP_START()
|
||||
BUTTON(L("lcl_forward"), {click: "mld_forward_submit()", dataicon: "check"} );
|
||||
BUTTON(this_mld.canForward ? L("lcl_forward") : L("lcl_fixmelding"), {click: "mld_forward_submit()", dataicon: "check"} );
|
||||
BUTTON(L("lcl_cancel"), {click: "mld_forward_cancel()", dataicon: "back"} );
|
||||
CONTROLGROUP_END()
|
||||
IFACE.FORM_END();
|
||||
|
||||
@@ -1121,7 +1121,10 @@ function abort_with_warning(warning, code)
|
||||
var codestr = String(code);
|
||||
if (typeof code == "number")
|
||||
{
|
||||
var codestr = { 400: "Bad request", 403: "Forbidden", 404: "Forbidden" }[code];
|
||||
var codestr = { 400: "Bad request",
|
||||
403: "Forbidden",
|
||||
404: "Not Found",
|
||||
422: "Unprocessable Entity" }[code];
|
||||
if (codestr)
|
||||
code = code + " " + codestr;
|
||||
}
|
||||
|
||||
@@ -266,6 +266,26 @@ function listKenmerk(sql, module, key, props)
|
||||
var hasfilter = props.hasfilter || false; // De kenmerken kunnen op naam gefilterd worden.
|
||||
var tmpfolder = props.tmpfolder || "";
|
||||
|
||||
if (formobile)
|
||||
{
|
||||
var api2name = { "ALG": { "L": "locations",
|
||||
"G": "buildings",
|
||||
"R": "rooms"
|
||||
},
|
||||
"MLD": "issues",
|
||||
"INS": "objects",
|
||||
"RES": "reservations"
|
||||
}[module] // niveau
|
||||
if (api2name && typeof api2name == 'object')
|
||||
api2name = api2name[props.kenmerk_module];
|
||||
if (!api2name)
|
||||
{
|
||||
__DoLog(props);
|
||||
__DoLog("What should api2name be for {0} and {1}?".format(module, props.kenmerk_module));
|
||||
INTERNAL_ERROR_UNDEFINED_API2NAME;
|
||||
}
|
||||
}
|
||||
|
||||
var predone = false;
|
||||
|
||||
var colCount = 0; // Even/oneven zodat we weten of we links of rechts zitten
|
||||
@@ -879,19 +899,54 @@ function listKenmerk(sql, module, key, props)
|
||||
}
|
||||
|
||||
// KENMERKTYPE F/E (File) ===================================================================
|
||||
var MasF = false; // M behandelen als F?
|
||||
if ((ktype == 'F' || ktype == 'E' || ktype == 'M') && formobile)
|
||||
var lijst = [];
|
||||
if (formobile & (ktype == 'F' || ktype == 'E' || ktype == 'M'))
|
||||
{
|
||||
var lijst = BijlagenList(module, niveau, key, kkey, otherPath); // die hebben we dan nodig
|
||||
var filehtmlarr = [];
|
||||
for (var i = 0; i < lijst.length; i++)
|
||||
{
|
||||
var href = HTTP.urlzelfnoroot() + protectQS.create(OpenFlexFile(module, niveau, key, kkey, lijst[i]));
|
||||
var html = '<a class="details fldflexM"'
|
||||
+ ' href=\'' + safe.jsstring(href) + '\'" target="_blank">' + safe.html(lijst[i]) + '</a>';
|
||||
filehtmlarr.push(html);
|
||||
}
|
||||
var kv = filehtmlarr.join("</br>");
|
||||
|
||||
if (!lijst.length && !readonlyfield)
|
||||
{
|
||||
kv += '<span id="attachments_form">';
|
||||
kv += ' <span class="attachments_form">';
|
||||
kv += ' <span class="attachments_fields">';
|
||||
kv += ' </span>';
|
||||
kv += ' <span class="add_attachment" style="">';
|
||||
kv += ' <label for="attachments'+kkey+'" data-role="button" data-icon="cloud">' + L("lcl_select_file") + (kdim? "(" + safe.html(kdim) + ")":"") + "</label>"
|
||||
kv += ' <input type="file"';
|
||||
kv += ' name="attachments'+kkey+'"';
|
||||
kv += ' id="attachments'+kkey+'"';
|
||||
kv += ' class="file_selector filedrop"';
|
||||
if (ktype == 'M')
|
||||
kv += ' multiple="multiple"';
|
||||
kv += ' onchange="addInputFiles(this);"';
|
||||
//kv += ' data-max-file-size="5242880"';
|
||||
//kv += ' data-max-file-size-message="This file cannot be uploaded because it exceeds the maximum allowed file size (5 MB)"';
|
||||
kv += ' data-max-concurrent-uploads="2"';
|
||||
kv += ' data-upload-path="{0}/api2/{1}/{2}/attachments/{3}/"'.format(rooturl, api2name, key<0?0:key, kkey);
|
||||
kv += ' data-role="none"'; // zorg dat jQuery er verder af blijft, hij wordt toch hidden
|
||||
kv += ' data-param="attachments"';
|
||||
kv += ' data-description="true"';
|
||||
//kv += ' data-description-placeholder="Optional description"';
|
||||
//kv += ' (Maximum size: 5 MB)';
|
||||
kv += ' />';
|
||||
kv += ' </span>';
|
||||
kv += ' </span>';
|
||||
kv += '</span>';
|
||||
kv += ' <script>$("label[data-role=button]").button()'; // waarom gaat dit niet vanzelf?
|
||||
kv += '</script>';
|
||||
}
|
||||
}
|
||||
if (ktype == 'M' && formobile && !lijst.length)
|
||||
MasF = true; // Een M zonder files doen we als F zodat je tenminste <20><>n betand kunt toevoegen
|
||||
|
||||
if (ktype == 'F' || ktype == 'E' || MasF) // single File of Encrypted
|
||||
else if (ktype == 'F' || ktype == 'E') // single File of Encrypted, reguliere GUI
|
||||
{
|
||||
if (formobile && lijst.length)
|
||||
readonlyfield = true;
|
||||
|
||||
// Bedoeling is: toon de filenaam in een inputfield.
|
||||
// In showmode/readonly kun je er op klikken als-ie bestaat, in editmode
|
||||
// moet je de change button gebruiken om te wijzigen en is niet klikbaar.
|
||||
@@ -919,16 +974,12 @@ function listKenmerk(sql, module, key, props)
|
||||
// Mobile heeft een compleet eigen BijlagenForm.asp
|
||||
if (kdim == 'xxx')
|
||||
var url = rooturl + "/appl/shared/BijlagenSignature.asp"
|
||||
else if (formobile)
|
||||
var url = rooturl + "/appl/pda/BijlagenForm.asp"
|
||||
else
|
||||
var url = rooturl + "/appl/shared/BijlagenForm.asp"
|
||||
url += "?module=" + module
|
||||
+ "&key=" + key
|
||||
+ (niveau != ""? "&niveau=" + niveau : "")
|
||||
+ "&kenmerk_key=" + kkey
|
||||
+ "&mobile=" + (formobile ? 1 : 0)
|
||||
+ (formobile ? "&multi=" + (MasF ? 1 : 0) : "")
|
||||
+ (props.kenmerk_module? "&kenmerk_module=" + props.kenmerk_module : "");
|
||||
// nooit if (pReadonly) url += "&reado=1";
|
||||
// nooit url += "&multi=1";
|
||||
@@ -956,11 +1007,7 @@ function listKenmerk(sql, module, key, props)
|
||||
saveUrl += "&kenmerk_module="+props.kenmerk_module;
|
||||
};
|
||||
|
||||
var func = "onBijlagen";
|
||||
if (formobile)
|
||||
func = "onBijlagenMobile";
|
||||
|
||||
var blg = func + "('" + safe.jsstring(protectQS.create(url)) + "'"
|
||||
var blg = "onBijlagen('" + safe.jsstring(protectQS.create(url)) + "'"
|
||||
+ ",'" + (saveUrl?safe.jsstring(protectQS.create(saveUrl)):"") + "'"
|
||||
+ ", false"
|
||||
+ ", $('#" + fld + "')[0]"
|
||||
@@ -1034,13 +1081,12 @@ function listKenmerk(sql, module, key, props)
|
||||
}
|
||||
|
||||
// KENMERKTYPE M (Map) ======================================================================
|
||||
// Mobiel hebben we hem al bij 'F' gedaan
|
||||
if (ktype == 'M' && !MasF) // Map met bestanden is altijd heel simpel
|
||||
else if (ktype == 'M') // Map met bestanden is altijd heel simpel
|
||||
{
|
||||
var requiredfield = (required ? required_class : "");
|
||||
var identify = " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val'";
|
||||
|
||||
var res = BijlagenButton(module, niveau, key, tmpfolder, kkey, readonlyfield || formobile, // Mobile altijd readonly
|
||||
var res = BijlagenButton(module, niveau, key, tmpfolder, kkey, readonlyfield,
|
||||
requiredfield, kdim, kregexp, otherPath, identify, L("lcl_appendixes_teller"), props)
|
||||
kv = res.html;
|
||||
if (res.count > 0)
|
||||
@@ -1778,7 +1824,7 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
if (params.isNew && !params.noAttachments)
|
||||
if (params.isNew && !params.noAttachments) // uploads oude stijl
|
||||
{
|
||||
var ktmpfolder = getFParam("ktmpfolder" + (params.tmpfolderNum? params.tmpfolderNum : 0), "");
|
||||
if (ktmpfolder)
|
||||
@@ -1789,7 +1835,7 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
|
||||
vAttachPath2 = S("flexFilesPath") + "/" + flexPathArray[0] + "/" + subfolderKey(bepaalNiveau(params.moduleName, flexPathArray[1]), parentKey);
|
||||
// Niet van toepassing: we doen altijd een hele folder hieronder.
|
||||
// MoveFlexfiles(vAttachPath, vAttachPath2)
|
||||
var fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||
var fso = Server.CreateObject("Scripting.FileSystemObject");
|
||||
if (fso.FolderExists(vAttachPath))
|
||||
{
|
||||
__Log("Hernoem " + vAttachPath + " naar " + vAttachPath2);
|
||||
@@ -1807,6 +1853,56 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
|
||||
fso = null;
|
||||
}
|
||||
}
|
||||
// Uploads nieuwe stijl
|
||||
if (params.isNew)
|
||||
{
|
||||
for (var i = 1; i < 100; i++)
|
||||
{
|
||||
if (getFParam("attachments[" + i + "][filename]", "")) // de originele filenaam, doen we niets mee
|
||||
{
|
||||
// elk nieuw bestand zit in een eigen flexfiles\MLD\M__NEW__81968_mG5Yj9duWAwuK16XYYbKwoS3RfJOYCL6\2961
|
||||
var ktmpfolder = getFParam("attachments[" + i + "][token]", "");
|
||||
if (ktmpfolder)
|
||||
{
|
||||
var tmp_folder = "__NEW__" + user_key + "_" + safe.filename(ktmpfolder);
|
||||
var vAttachPathSource = S("flexFilesPath") + "/" + params.flexPath + tmp_folder;
|
||||
var flexPathArray = params.flexPath.split("/"); // MLD/M => MLD (0) en M (1)
|
||||
var vAttachPathTarget = S("flexFilesPath") + "/" + flexPathArray[0] + "/" +
|
||||
subfolderKey(bepaalNiveau(params.moduleName, flexPathArray[1]), parentKey);
|
||||
var fso = Server.CreateObject("Scripting.FileSystemObject");
|
||||
if (fso.FolderExists(vAttachPathSource))
|
||||
{
|
||||
if (!fso.FolderExists(vAttachPathTarget)) // nieuwe hoofdfolder is er nog niet
|
||||
CreateFullPath(vAttachPathTarget); // het 1000-tal was er misschien ook nog niet.
|
||||
|
||||
// nu bestaat voor een melding 1021481 de folder flexfiles\MLD\M1021___\M1021481
|
||||
// Misschien bestaat flexfiles\MLD\M1021___\M1021481\2803 ook al
|
||||
try
|
||||
{
|
||||
var oFolder = fso.GetFolder(vAttachPathSource); // Doorloop de kenmerk keys (zal er *eentje* zijn)
|
||||
var fc1 = new Enumerator(oFolder.SubFolders);
|
||||
for (; !fc1.atEnd(); fc1.moveNext())
|
||||
{
|
||||
var folder = fc1.item(); // folder.Name is eigenlijk kenmerk_key
|
||||
var fromFolder = vAttachPathSource + "/" + folder.Name;
|
||||
var toFolder = vAttachPathTarget + "/" + folder.Name;
|
||||
if (!fso.FolderExists(toFolder)) // kenmerkfolder is er nog niet
|
||||
CreateFullPath(toFolder);
|
||||
__Log("Verplaats inhoud " + fromFolder + "/*.* naar " + toFolder + "/");
|
||||
fso.MoveFile (fromFolder + "/*.*", toFolder + "/");
|
||||
}
|
||||
fso.DeleteFolder(vAttachPathSource);
|
||||
}
|
||||
catch (ee)
|
||||
{
|
||||
__DoLog("MoveFlexfiles " + vAttachPathSource + " naar " + vAttachPathTarget + " mislukt: " + ee.description);
|
||||
}
|
||||
}
|
||||
fso = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var trackarray = []; // eventuele tracking
|
||||
|
||||
|
||||
Reference in New Issue
Block a user