124 lines
4.2 KiB
Plaintext
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;
|
|
|
|
%> |