Files
Facilitor/APPL/FAC/fac_edit_xsl_save.asp
Jos Groot Lipman 9e11332d82 Versie 5.4.3 Gold A patches
svn path=/Website/trunk/; revision=23291
2014-11-10 13:25:20 +00:00

124 lines
4.2 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$ $Id$
File: fac_edit_xsl_save.asp
Description: Opslaan na bewerken van een xsl
Parameters:
xmlnode "reservering" o.i.d.
xmltekst de nieuwe tekst
preview Geen (fout)melding als probleemloos opgeslagen
promote Maak de concept versie definitief.
revert Draai alle wijzigingen terug (effectief: verwijder reservering_concept.xsl)
Context:
Note: PRSSYS nodig
We slaan altijd op onder <xmlnode>_concept.
*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/xml_converter.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
var autfunction = "WEB_PRSSYS"; // TODO: Misschien een aparte? Of WEB_LCLSYS?
var authparams = user.checkAutorisation(autfunction);
var xmlnode = getFParam("xmlnode");
var xmltekst = getFParam("xsldata");
var preview = getQParamInt("preview", 0) == 1;
var promote = getQParamInt("promote", 0) == 1;
var revert = getQParamInt("revert", 0) == 1;
var sql = "SELECT 1"
+ " FROM fac_srtnotificatie"
+ " WHERE fac_srtnotificatie_xmlnode = " + safe.quoted_sql(xmlnode);
var oRs = Oracle.Execute(sql);
user.auth_required_or_abort(!oRs.Eof); // hij moet bestaan als srtnotificatie
oRs.Close()
var conceptName = Server.MapPath(custpath + "\\xsl\\" + xmlnode + "_concept.xsl");
var actualName = Server.MapPath(custpath + "\\xsl\\" + xmlnode + ".xsl");
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (revert)
{
result = { success: true, message: "Done!" };
try
{
fso.deleteFile(conceptName);
}
catch (e)
{
result = { success: false, message: e.description };
}
Response.Write(JSON.stringify(result));
Response.End;
}
result = { success: true, message: preview?"":"Ok!" };
// Load the XML
var source = Server.CreateObject("MSXML2.DOMDocument.6.0");
source.async = false;
if( ! source.loadXML(xmltekst) )
{
result = { success: false,
message: "XML Error:\n" + source.parseError.reason +"\nLine "+source.parseError.line+" char "+source.parseError.linepos
}
}
if (result.success)
{
// Veiligheids controle. Als er een upgrade (door SGF) is geweest van de xsl
// willen we voorkomen dat iemand een ouder concept promoveert waarmee de update
// ongedaan zou zijn geworden.
if (fso.FileExists(conceptName) && fso.GetFile(conceptName).DateLastModified < fso.GetFile(actualName).DateLastModified )
{
result = { success: false,
message: "Concept bestand is *ouder* dan actuele bestand.\nOpslaan niet mogelijk."
}
}
}
if (result.success)
{
try
{
var streamResult = new ActiveXObject("ADODB.Stream")
streamResult.Type = 2; // Text
streamResult.Open();
//streamResult.CharSet = "Windows-1252";
streamResult.CharSet = "utf-8"
streamResult.WriteText(xmltekst);
streamResult.SaveToFile(conceptName, 2); // 2=overwrite
streamResult.Close();
// We zijn erg pessimisisch. Bij promoveren bewaren we een volledige historie
// van vorige versies. Let wel: de gebruiker weet dat niet en kan ze ook
// niet zelf terughalen. Dat moet SGF doen (net als af en toe opruimen)
if (promote)
{
var jsDate = new Date;
var backupTime = String(jsDate.getFullYear()) + padout(jsDate.getMonth() + 1) + padout(jsDate.getDate()) + "_"
+ padout(jsDate.getHours()) + padout(jsDate.getMinutes())+ padout(jsDate.getSeconds());
var backupName = Server.MapPath(custpath + "\\xsl\\" + xmlnode + "_" + backupTime + ".xsl");
__DoLog("backupName: " + backupName);
fso.MoveFile(actualName, backupName);
fso.MoveFile(conceptName, actualName);
result.message = L("lcl_xsl_doorvoeren_done").format(xmlnode);
}
}
catch (e)
{
result = { success: false, message: e.description };
}
}
Response.Write(JSON.stringify(result));
Response.End;
%>