67 lines
2.2 KiB
Text
67 lines
2.2 KiB
Text
var deny = this.isDenied(session.user,req.data.memberlevel);
|
|
if (deny) {
|
|
res.message = getMessage("error",deny);
|
|
res.redirect(path.site.href());
|
|
}
|
|
|
|
if (!req.data.proto || !req.data.name ||
|
|
!this[req.data.proto] ||
|
|
!this[req.data.proto][req.data.name] ||
|
|
!app.skinfiles[req.data.proto])
|
|
{
|
|
res.writeln ("Invalid Parameters. No Diff.");
|
|
return;
|
|
}
|
|
|
|
// get the modified and original skins
|
|
var modifiedSkin = this[req.data.proto][req.data.name].skin;
|
|
var originalSkin = app.skinfiles[req.data.proto][req.data.name];
|
|
|
|
if (originalSkin == null || modifiedSkin == null) {
|
|
res.writeln ("Invalid Parameters. No Diff.");
|
|
return;
|
|
}
|
|
|
|
res.writeln ("<h3>Diffs for "+req.data.proto+"/"+req.data.name+"</h3>");
|
|
|
|
// split the strings into arrays of lines
|
|
var orig = originalSkin.split(new RegExp("\r\n|\r|\n"));
|
|
var mod = modifiedSkin.split(new RegExp("\r\n|\r|\n"));
|
|
|
|
// create the Diff object
|
|
var diff = new Packages.helma.util.Diff (orig, mod);
|
|
|
|
// get the diff.
|
|
var d = diff.diff ();
|
|
|
|
// print an short explanation of the output format
|
|
if (d) {
|
|
res.write ("<span style=\"background: #FF3333\"> </span> ");
|
|
res.writeln (" Lines removed from original skin");
|
|
res.write ("<span style=\"background: #33CC33\"> </span> ");
|
|
res.writeln (" Lines added to modified skin");
|
|
} else {
|
|
res.writeln ("No visible changes between original and modified skin.");
|
|
}
|
|
|
|
// run through the modified skin. for each line that is changed,
|
|
// print the deleted lines from the original version and the new
|
|
// lines in the modified version.
|
|
res.write ("<pre>");
|
|
for (var i=0; i<mod.length; i++) {
|
|
if (d && i == d.line1) {
|
|
if (d.deleted) {
|
|
for (var j=d.line0; j<d.line0+d.deleted; j++)
|
|
res.write ((j+1)+" DEL <span style=\"background: #FF3333\">"+encode(orig[j])+"</span>\r\n");
|
|
}
|
|
if (d.inserted) {
|
|
for (var j=d.line1; j<d.line1+d.inserted; j++)
|
|
res.write ((j+1)+" INS <span style=\"background: #33CC33\">"+encode(mod[j])+"</span>\r\n");
|
|
}
|
|
i = d.line1 + d.inserted -1;
|
|
d = d.link;
|
|
} else {
|
|
res.write ((i+1)+" <span>"+encode(mod[i])+"</span>\r\n");
|
|
}
|
|
}
|
|
res.write ("</pre>");
|