mirror of https://github.com/tLDP/LDP
add revhistory, big wiki edits
This commit is contained in:
parent
0138aa7db5
commit
9b99af2bb3
|
@ -99,7 +99,7 @@ print "<input type=hidden name=doc_id value='$doc_id'>\n";
|
|||
print "<table>\n";
|
||||
print "<tr><th colspan=6>Document Details</th></tr>\n";
|
||||
print "<tr><td align=right>Title:</td><td colspan=4><input type=text name=title size=60 value='$title'></td>\n";
|
||||
print "<td><a href='document_wiki.pl?doc_id=$doc_id'>Edit (test)</a></td></tr>\n";
|
||||
print "<td><a href='document_wiki_big.pl?doc_id=$doc_id'>Wiki Editing (beta)</a></td></tr>\n";
|
||||
print "<tr><td align=right>Filename:</td><td colspan=5><input type=text name=filename size=60 value='$filename'></td></tr>\n";
|
||||
|
||||
print "<tr>";
|
||||
|
@ -185,6 +185,7 @@ if ( $format eq "XML" ) { print '<option selected>XML</option>'; } else { print
|
|||
if ( $format eq "TEXT" ) { print '<option selected>TEXT</option>'; } else { print '<option>TEXT</option>' }
|
||||
if ( $format eq "LaTeX" ) { print '<option selected>LaTeX</option>'; } else { print '<option>LaTeX</option>' }
|
||||
if ( $format eq "PDF" ) { print '<option selected>PDF</option>'; } else { print '<option>PDF</option>' }
|
||||
if ( $format eq "WIKI" ) { print '<option selected>WIKI</option>'; } else { print '<option>WIKI</option>' }
|
||||
print "</select></td>";
|
||||
|
||||
print "<td align=right>DTD:</td><td>";
|
||||
|
@ -249,6 +250,69 @@ print "</form>";
|
|||
|
||||
|
||||
|
||||
$test = 'x';
|
||||
|
||||
if ($test) {
|
||||
print "<p><hr>";
|
||||
|
||||
|
||||
|
||||
|
||||
print "<h2>Versions</h2>";
|
||||
|
||||
$rev_result = $conn->exec("SELECT rev_id, version, pub_date, initials, notes FROM document_rev WHERE doc_id=$doc_id ORDER BY pub_date, version");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $rev_result->resultStatus;
|
||||
|
||||
print "<p><table>\n";
|
||||
print "<tr><th>Version</th><th>Date</th><th>Who?</th><th>Notes</th></tr>";
|
||||
while (@row = $rev_result->fetchrow) {
|
||||
$rev_id = $row[0];
|
||||
$rev_version = $row[1];
|
||||
$rev_version =~ s/\s+$//;
|
||||
$rev_date = $row[2];
|
||||
$rev_init = $row[3];
|
||||
$rev_note = $row[4];
|
||||
print "<tr>";
|
||||
print "<form method=POST action='document_rev_save.pl'>";
|
||||
print "<input type=hidden name=caller value='document_edit.pl?doc_id=$doc_id'>";
|
||||
print "<input type=hidden name=rev_id value=$rev_id>";
|
||||
print "<input type=hidden name=doc_id value=$doc_id>";
|
||||
|
||||
print "<td valign=top><input type=text name=rev_version width=12 size=12 value='$rev_version'></input></td>\n";
|
||||
print "<td valign=top><input type=text name=rev_date width=12 size=12 value='$rev_date'></input></td>\n";
|
||||
print "<td valign=top><input type=text name=rev_init width=3 size=5 value='$rev_init'></input></td>\n";
|
||||
print "<td><textarea name=rev_note rows=3 cols=40 wrap>$rev_note</textarea>\n";
|
||||
|
||||
print "<td valign=top><input type=checkbox name=chkDel>Del</td>";
|
||||
print "<td valign=top><input type=submit value=Save></td>\n";
|
||||
print "</form>";
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
# For creating a new version
|
||||
#print "<tr><th colspan=6>New Version</th></tr>";
|
||||
print "<tr>";
|
||||
print "<form method=POST action='document_rev_add.pl'>";
|
||||
print "<input type=hidden name=caller value='document_edit.pl?doc_id=$doc_id'>";
|
||||
print "<input type=hidden name=doc_id value=$doc_id>";
|
||||
|
||||
print "<td valign=top><input type=text name=rev_version width=12 size=12></input></td>\n";
|
||||
print "<td valign=top><input type=text name=rev_date width=12 size=12></input></td>\n";
|
||||
print "<td valign=top><input type=text name=rev_init width=5 size=3></input></td>\n";
|
||||
print "<td><textarea name=rev_note rows=3 cols=40 wrap></textarea>\n";
|
||||
|
||||
print "<td valign=top></td>\n";
|
||||
print "<td valign=top><input type=submit value=Add></td>\n";
|
||||
print "</form>";
|
||||
print "</tr>\n";
|
||||
|
||||
print "</table>\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
if ($row[1] ne 't') {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -51,6 +51,15 @@ if ( $SORT3 ) { $SORT3 = ", $SORT3"; }
|
|||
|
||||
$strSTATUS = param('strSTATUS');
|
||||
|
||||
$mydocuments = param("MyDocuments");
|
||||
$reload = param('Reload');
|
||||
|
||||
# if we're not reloading, the default is to show only Active ('N') documents.
|
||||
unless (($reload eq 'Reload') or ($mydocuments eq 'MyDocuments')) {
|
||||
$strSTATUS = 'N';
|
||||
}
|
||||
|
||||
|
||||
# Clear
|
||||
$BACKGROUNDER = "";
|
||||
$HOWTO = "";
|
||||
|
@ -107,6 +116,11 @@ if ( $chkFILENAME eq "on" ) { $FILENAME = "checked "; }
|
|||
# connect to the database
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
$admin = $row[1];
|
||||
|
||||
# print the page
|
||||
print header(-expires=>'now');
|
||||
print "<html><head>\n";
|
||||
|
@ -200,7 +214,7 @@ print "</select>\n";
|
|||
print "</td>\n";
|
||||
|
||||
print "</tr></table>\n";
|
||||
print "<input type=submit value=Reload>\n";
|
||||
print "<input type=submit name=Reload value=Reload>\n";
|
||||
$username=$query->remote_user();
|
||||
$result=$conn->exec("SELECT count(*) FROM username WHERE username='$username'");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
|
@ -222,7 +236,7 @@ if ($row[0] > 0) {
|
|||
}
|
||||
$doc_id_sql .= ")";
|
||||
}
|
||||
print "<input type=submit value='My Documents' name=MyDocuments>\n";
|
||||
print "<input type=submit value='MyDocuments' name=MyDocuments>\n";
|
||||
}
|
||||
|
||||
|
||||
|
@ -260,8 +274,7 @@ $sql .= " AND document.pub_status=pub_status.pub_status";
|
|||
$sql .= " AND document.review_status = lr.review_status";
|
||||
$sql .= " AND document.tech_review_status = tr.review_status";
|
||||
if ( $strSTATUS ) { $sql = $sql . " AND document.pub_status='" . $strSTATUS . "'" };
|
||||
$MyDocuments = param("MyDocuments");
|
||||
if (($doc_id_sql) and ($MyDocuments)) { $sql .= " AND $doc_id_sql" }
|
||||
if (($doc_id_sql) and ($mydocuments)) { $sql .= " AND $doc_id_sql" }
|
||||
$sql = $sql . " ORDER BY $SORT1";
|
||||
#print "<tr><td colspan=20>$sql</td></tr>";
|
||||
|
||||
|
@ -321,64 +334,67 @@ print "</table>\n";
|
|||
|
||||
print "<p>Count: $count";
|
||||
|
||||
print "<p><hr>";
|
||||
if ($admin eq 't') {
|
||||
print "<p><hr>";
|
||||
|
||||
print "<h1>New Document</h1>\n";
|
||||
print "<h1>New Document</h1>\n";
|
||||
|
||||
print "<p><form method=POST action='document_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='document_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Title:</td><td><input type=text name=title size=60 width=60></td></tr>\n";
|
||||
print "<p><form method=POST action='document_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='document_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Title:</td><td><input type=text name=title size=60 width=60></td></tr>\n";
|
||||
|
||||
print "<tr><td align=right>Status:</td><td>";
|
||||
print "<select name=pub_status>\n";
|
||||
print "<option value='N'>Active</option>\n";
|
||||
print "<option value='?'>Unknown</option>\n";
|
||||
print "<option value='A'>Archived</option>\n";
|
||||
print "<option value='D'>Deleted</option>\n";
|
||||
print "<option value='O'>Offsite</option>\n";
|
||||
print "<option value='P'>Pending</option>\n";
|
||||
print "<option value='R'>Replaced</option>\n";
|
||||
print "<option value='W'>Wishlist</option>\n";
|
||||
print "<option value='C'>Cancelled</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
print "<tr><td align=right>Status:</td><td>";
|
||||
print "<select name=pub_status>\n";
|
||||
print "<option value='N'>Active</option>\n";
|
||||
print "<option value='?'>Unknown</option>\n";
|
||||
print "<option value='A'>Archived</option>\n";
|
||||
print "<option value='D'>Deleted</option>\n";
|
||||
print "<option value='O'>Offsite</option>\n";
|
||||
print "<option value='P'>Pending</option>\n";
|
||||
print "<option value='R'>Replaced</option>\n";
|
||||
print "<option value='W'>Wishlist</option>\n";
|
||||
print "<option value='C'>Cancelled</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print "<tr><td align=right>Class:</td><td>";
|
||||
print "<select name=class>\n";
|
||||
print "<option>BACKGROUNDER</option>\n";
|
||||
print "<option>HOWTO</option>\n";
|
||||
print "<option>MINI</option>\n";
|
||||
print "<option>FAQ</option>\n";
|
||||
print "<option>QUICK</option>\n";
|
||||
print "<option>GUIDE</option>\n";
|
||||
print "<option>TEMPLATE</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
print "<tr><td align=right>Class:</td><td>";
|
||||
print "<select name=class>\n";
|
||||
print "<option>BACKGROUNDER</option>\n";
|
||||
print "<option>HOWTO</option>\n";
|
||||
print "<option>MINI</option>\n";
|
||||
print "<option>FAQ</option>\n";
|
||||
print "<option>QUICK</option>\n";
|
||||
print "<option>GUIDE</option>\n";
|
||||
print "<option>TEMPLATE</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print "<tr><td align=right>Format:</td><td>";
|
||||
print "<select name=format>\n";
|
||||
print "<option></option>\n";
|
||||
print "<option>SGML</option>\n";
|
||||
print "<option>XML</option>\n";
|
||||
print "<option>TEXT</option>\n";
|
||||
print "<option>LaTeX</option>\n";
|
||||
print "<option>PDF</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
print "<tr><td align=right>Format:</td><td>";
|
||||
print "<select name=format>\n";
|
||||
print "<option></option>\n";
|
||||
print "<option>SGML</option>\n";
|
||||
print "<option>XML</option>\n";
|
||||
print "<option>TEXT</option>\n";
|
||||
print "<option>LaTeX</option>\n";
|
||||
print "<option>PDF</option>\n";
|
||||
print "<option>WIKI</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print "<tr><td align=right>DTD:</td><td>";
|
||||
print "<select name=dtd>\n";
|
||||
print "<option></option>\n";
|
||||
print "<option>N/A</option>\n";
|
||||
print "<option>HTML</option>\n";
|
||||
print "<option>DocBook</option>\n";
|
||||
print "<option>LinuxDoc</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print "<tr><td></td><td><input type=submit value=Add></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
print "<tr><td align=right>DTD:</td><td>";
|
||||
print "<select name=dtd>\n";
|
||||
print "<option></option>\n";
|
||||
print "<option>N/A</option>\n";
|
||||
print "<option>HTML</option>\n";
|
||||
print "<option>DocBook</option>\n";
|
||||
print "<option>LinuxDoc</option>\n";
|
||||
print "</select>\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print "<tr><td></td><td><input type=submit value=Add></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
}
|
||||
|
||||
print end_html;
|
||||
|
||||
|
|
|
@ -24,9 +24,14 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
if ($row[1] ne 't') {
|
||||
$user_maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$user_maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,9 +25,14 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
if ($row[1] ne 't') {
|
||||
$user_maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$user_maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
use CGI qw(:standard);
|
||||
use Pg;
|
||||
|
||||
$query = new CGI;
|
||||
$dbmain = "ldp";
|
||||
@row;
|
||||
|
||||
# Read parameters
|
||||
$caller = param('caller');
|
||||
$doc_id = param('doc_id');
|
||||
$rev_version = param('rev_version');
|
||||
$rev_date = param('rev_date');
|
||||
$rev_init = param('rev_init');
|
||||
$rev_note = param('rev_note');
|
||||
|
||||
while ($rev_note =~ /\'/) {
|
||||
$rev_note =~ s/\'/a1s2d3f4/;
|
||||
}
|
||||
while ($rev_note =~ /a1s2d3f4/) {
|
||||
$rev_note =~ s/a1s2d3f4/\'\'/;
|
||||
}
|
||||
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
if ($username ne $row[0]) {
|
||||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if ($row[1] ne 't') {
|
||||
$user_maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$user_maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "SELECT max(rev_id) FROM document_rev WHERE doc_id = $doc_id";
|
||||
$result=$conn->exec($sql);
|
||||
@row = $result->fetchrow;
|
||||
$rev_id = $row[0] + 1;
|
||||
|
||||
$sql = "INSERT INTO document_rev(rev_id, doc_id, version, pub_date, initials, notes) VALUES ($rev_id, $doc_id, '$rev_version', '$rev_date', '$rev_init', '$rev_note')";
|
||||
$result=$conn->exec($sql);
|
||||
|
||||
#print "Content-Type: text/plain\n\n";
|
||||
#print "$sql\n";
|
||||
|
||||
print $query->redirect($caller)
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
use CGI qw(:standard);
|
||||
use Pg;
|
||||
|
||||
$query = new CGI;
|
||||
$dbmain = "ldp";
|
||||
@row;
|
||||
|
||||
# Read parameters
|
||||
$caller = param('caller');
|
||||
$rev_id = param('rev_id');
|
||||
$doc_id = param('doc_id');
|
||||
$rev_version = param('rev_version');
|
||||
$rev_date = param('rev_date');
|
||||
$rev_init = param('rev_init');
|
||||
$rev_note = param('rev_note');
|
||||
while ($rev_note =~ /\'/) {
|
||||
$rev_note =~ s/\'/a1s2d3f4/;
|
||||
}
|
||||
while ($rev_note =~ /a1s2d3f4/) {
|
||||
$rev_note =~ s/a1s2d3f4/\'\'/;
|
||||
}
|
||||
$chkDel = param('chkDel');
|
||||
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
if ($username ne $row[0]) {
|
||||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if ($row[1] ne 't') {
|
||||
$user_maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$user_maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $chkDel eq 'on' ) {
|
||||
$sql = "DELETE FROM document_rev WHERE rev_id = $rev_id";
|
||||
$result=$conn->exec($sql);
|
||||
}
|
||||
else {
|
||||
$result=$conn->exec("UPDATE document_rev SET version = '$rev_version' WHERE rev_id = $rev_id");
|
||||
$result=$conn->exec("UPDATE document_rev SET pub_date = '$rev_date' WHERE rev_id = $rev_id");
|
||||
$result=$conn->exec("UPDATE document_rev SET initials = '$rev_init' WHERE rev_id = $rev_id");
|
||||
$result=$conn->exec("UPDATE document_rev SET notes = '$rev_note' WHERE rev_id = $rev_id");
|
||||
}
|
||||
|
||||
print $query->redirect($caller)
|
||||
|
||||
|
||||
|
|
@ -49,9 +49,14 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
if ($row[1] ne 't') {
|
||||
$maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -224,9 +224,12 @@ if ($preview or $docbook) {
|
|||
}
|
||||
|
||||
if ($docbook) {
|
||||
&printheader;
|
||||
print "<p><hr>\n";
|
||||
print "<pre>\n";
|
||||
# &printheader;
|
||||
# print "<p><hr>\n";
|
||||
# print "<pre>\n";
|
||||
|
||||
print "Content-Type: text/plain; charset=ISO-8859-1\n\n";
|
||||
|
||||
while ($sgml =~ /\</) {
|
||||
$sgml =~ s/\</</;
|
||||
}
|
||||
|
@ -234,8 +237,9 @@ if ($docbook) {
|
|||
$sgml =~ s/\>/>/;
|
||||
}
|
||||
print $sgml;
|
||||
print "</pre>\n";
|
||||
print "</html>\n";
|
||||
# print "</pre>\n";
|
||||
# print "</html>\n";
|
||||
|
||||
}
|
||||
|
||||
if ($preview) {
|
||||
|
|
|
@ -0,0 +1,355 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
$editcols = 80;
|
||||
$editrows = 25;
|
||||
|
||||
use CGI qw(:standard);
|
||||
use Pg;
|
||||
|
||||
$query = new CGI;
|
||||
$dbmain = "ldp";
|
||||
@row;
|
||||
$section_max = 25;
|
||||
|
||||
# Read parameters
|
||||
$doc_id = param('doc_id');
|
||||
$notes = param('notes');
|
||||
$revision = param('revision');
|
||||
|
||||
$section = 0;
|
||||
while ($section <= $section_max) {
|
||||
$section++;
|
||||
$wiki_section = param("wiki$section");
|
||||
if ($wiki_section) {
|
||||
if ($wiki) {
|
||||
$wiki .= "\n";
|
||||
}
|
||||
$wiki .= $wiki_section;
|
||||
}
|
||||
}
|
||||
$section = 0;
|
||||
|
||||
$save = param('Save');
|
||||
$preview = param('Preview');
|
||||
$docbook = param('DocBook');
|
||||
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status;
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
if ($username ne $row[0]) {
|
||||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if ($row[1] ne 't') {
|
||||
$maintainer_id = $row[2];
|
||||
$result=$conn->exec("SELECT count(*) FROM document_maintainer WHERE maintainer_id=$maintainer_id AND doc_id=$doc_id AND active='t'");
|
||||
@row = $result->fetchrow;
|
||||
unless ($row[0]) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($save) {
|
||||
while ($wiki =~ /\\/) {
|
||||
$wiki =~ s/\\/a1s2d3f4/;
|
||||
}
|
||||
while ($wiki =~ /a1s2d3f4/) {
|
||||
$wiki =~ s/a1s2d3f4/\\\\/;
|
||||
}
|
||||
while ($wiki =~ /&/) {
|
||||
$wiki =~ s/&/a1s2d3f4/;
|
||||
}
|
||||
while ($wiki =~ /a1s2d3f4/) {
|
||||
$wiki =~ s/a1s2d3f4/&/;
|
||||
}
|
||||
while ($wiki =~ /\'/) {
|
||||
$wiki =~ s/\'/a1s2d3f4/;
|
||||
}
|
||||
while ($wiki =~ /a1s2d3f4/) {
|
||||
$wiki =~ s/a1s2d3f4/\'\'/;
|
||||
}
|
||||
while ($notes =~ /\'/) {
|
||||
$notes =~ s/\'/a1s2d3f4/;
|
||||
}
|
||||
while ($notes =~ /a1s2d3f4/) {
|
||||
$notes =~ s/a1s2d3f4/\'\'/;
|
||||
}
|
||||
|
||||
#find out how many prior revisions there were
|
||||
$result = $conn->exec("SELECT count(*) FROM document_wiki WHERE doc_id = $doc_id");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
@row = $result->fetchrow;
|
||||
$revisions = $row[0];
|
||||
|
||||
# &printheader;
|
||||
# print $wiki;
|
||||
# print end_html;
|
||||
# exit;
|
||||
|
||||
if ($revisions >= $revision ) {
|
||||
&printheader;
|
||||
print "<p>Edit conflict!\n";
|
||||
print "<p>You were editing version $revisions, but trying to save to version $revision\n";
|
||||
print end_html;
|
||||
} elsif ($wiki eq '') {
|
||||
&printheader;
|
||||
print "<p>No content to save!\n";
|
||||
print end_html;
|
||||
} else {
|
||||
$revision = $revisions + 1;
|
||||
$sql = "INSERT INTO document_wiki(doc_id, revision, date_entered, wiki, notes, username) VALUES ($doc_id, $revision, now(), '$wiki', '$notes', '$username')";
|
||||
$result=$conn->exec($sql);
|
||||
print $query->redirect("document_edit.pl?doc_id=$doc_id");
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
#load document meta-data
|
||||
$result = $conn->exec("SELECT title, filename, class FROM document WHERE doc_id = $doc_id");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
@row = $result->fetchrow;
|
||||
$title = $row[0];
|
||||
$title =~ s/\s+$//;
|
||||
$filename = $row[1];
|
||||
$class = $row[2];
|
||||
$class =~ s/\s+$//;
|
||||
|
||||
#find out how many prior revisions there were
|
||||
$result = $conn->exec("SELECT count(*) FROM document_wiki WHERE doc_id = $doc_id");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
@row = $result->fetchrow;
|
||||
$revisions = $row[0];
|
||||
|
||||
#if we're not previewing, load data from database and determine version
|
||||
unless ($preview or $docbook) {
|
||||
$result = $conn->exec("SELECT wiki FROM document_wiki WHERE doc_id = $doc_id ORDER BY revision DESC LIMIT 1, 0");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
@row = $result->fetchrow;
|
||||
$revision = $revisions + 1;
|
||||
$wiki = $row[0];
|
||||
$wiki =~ s/\s+$//;
|
||||
while ($wiki =~ /</) {
|
||||
$wiki =~ s/</</;
|
||||
}
|
||||
while ($wiki =~ />/) {
|
||||
$wiki =~ s/>/>/;
|
||||
}
|
||||
|
||||
&printheader;
|
||||
print "<form method=POST action='document_wiki_big.pl' name='edit'>\n";
|
||||
print "<input type=hidden name=doc_id value='$doc_id'>\n";
|
||||
print "<input type=hidden name=revision value=$revision>\n";
|
||||
print "<table width='100%'>\n";
|
||||
print "<tr><th>Document Text</th></tr>\n";
|
||||
|
||||
|
||||
$tempfile = "/tmp/document_wiki_big" . rand();
|
||||
open (TMP, "> $tempfile");
|
||||
print TMP $wiki;
|
||||
close(TMP);
|
||||
|
||||
open (TMP, $tempfile);
|
||||
$wiki = "";
|
||||
$section = 0;
|
||||
while ($line = <TMP>) {
|
||||
if ($line =~ /^===/) {
|
||||
} elsif ($line =~ /^==/) {
|
||||
} elsif ($line =~ /^=/) {
|
||||
&printwiki;
|
||||
} else {
|
||||
}
|
||||
$wiki .= $line;
|
||||
}
|
||||
close TMP;
|
||||
unlink $tempfile;
|
||||
&printwiki;
|
||||
$section++;
|
||||
print "<tr><td><textarea name=wiki$section rows=$editrows cols=$editcols style='width:100%' wrap></textarea></td></tr>\n";
|
||||
print "<tr><td>Comments: <input type=text name=notes size=$editcols></input></td></tr>\n";
|
||||
if ($revisions == 0) {
|
||||
print "<tr><td>There are no previous versions of this document. Your changes will be saved as version $revision</td></tr>\n";
|
||||
} else {
|
||||
print "<tr><td>You are editing version $revisions. Your changes will be saved as version $revision</td></tr>\n";
|
||||
}
|
||||
print "</table>\n";
|
||||
print "<input type=submit value=Save name=Save>\n";
|
||||
print "<input type=submit value=Preview name=Preview>\n";
|
||||
print "<input type=submit value=DocBook name=DocBook>\n";
|
||||
print "</form>\n";
|
||||
print end_html;
|
||||
}
|
||||
|
||||
if ($preview or $docbook) {
|
||||
$txtfile = "/tmp/" . rand() . ".txt";
|
||||
$sgmlfile = $txtfile;
|
||||
$sgmlfile =~ s/\.txt/\.sgml/;
|
||||
$htmlfile = $txtfile;
|
||||
$htmlfile =~ s/\.txt/\.html/;
|
||||
$abstractfile = $txtfile;
|
||||
$abstractfile =~ s/\./abs\./;
|
||||
$abstractsgmlfile = $sgmlfile;
|
||||
$abstractsgmlfile =~ s/\./abs\./;
|
||||
system("rm $sgmlfile");
|
||||
|
||||
open(TXT, "> $txtfile");
|
||||
print TXT $wiki;
|
||||
close(TXT);
|
||||
|
||||
$cmd = "/usr/lib/cgi-bin/gldp.org/txt2db.pl -o $sgmlfile $txtfile";
|
||||
system($cmd);
|
||||
|
||||
$sgml = '<!DOCTYPE ARTICLE PUBLIC "-//OASIS//DTD DocBook V4.1//EN">' . "\n";
|
||||
if ($class eq 'FAQ') {
|
||||
$sgml .= "<article class='FAQ'>\n";
|
||||
} else {
|
||||
$sgml .= "<article>\n";
|
||||
}
|
||||
$sgml .= "<articleinfo>\n";
|
||||
|
||||
$result = $conn->exec("SELECT title, last_update, abstract FROM document WHERE doc_id = $doc_id");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
while (@row = $result->fetchrow) {
|
||||
$title = $row[0];
|
||||
$date = $row[1];
|
||||
|
||||
#insert paragraphs in the abstract where appropriate.
|
||||
$abstract = $row[2];
|
||||
open(ABSTRACT, "> $abstractfile");
|
||||
print ABSTRACT $abstract;
|
||||
close(ABSTRACT);
|
||||
|
||||
$cmd = "/usr/lib/cgi-bin/gldp.org/txt2db.pl -o $abstractsgmlfile $abstractfile";
|
||||
system($cmd);
|
||||
|
||||
$abstract = "";
|
||||
open(ABSTRACTSGML, $abstractsgmlfile);
|
||||
while (<ABSTRACTSGML>) {
|
||||
$abstract .= $_;
|
||||
}
|
||||
|
||||
#build the document header.
|
||||
$sgml .= "<title>$title</title>\n";
|
||||
$sgml .= "<date>$date</date>\n";
|
||||
$sgml .= "<pubdate>$date</pubdate>\n";
|
||||
$sgml .= "<abstract>$abstract</abstract>\n";
|
||||
}
|
||||
|
||||
$result = $conn->exec("SELECT m.maintainer_name, dm.email FROM document_maintainer dm, maintainer m WHERE doc_id = $doc_id AND dm.maintainer_id = m.maintainer_id AND active='t'");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
while (@row = $result->fetchrow) {
|
||||
$name = $row[0];
|
||||
$email = $row[1];
|
||||
$sgml .= "<author>\n";
|
||||
$sgml .= "<affiliation>\n";
|
||||
$sgml .= "<address>\n";
|
||||
$sgml .= "<firstname>$name</firstname>\n";
|
||||
$sgml .= "</address>\n";
|
||||
$sgml .= "</affiliation>\n";
|
||||
$sgml .= "</author>\n";
|
||||
}
|
||||
|
||||
$sgml .= "</articleinfo>\n";
|
||||
|
||||
open(SGML, $sgmlfile);
|
||||
while (<SGML>) {
|
||||
$line = $_;
|
||||
$sgml .= $line;
|
||||
while ($line =~ /</) {
|
||||
$line =~ s/</</;
|
||||
}
|
||||
while ($line =~ />/) {
|
||||
$line =~ s/>/>/;
|
||||
}
|
||||
$buf .= "<br>$line";
|
||||
}
|
||||
close(SGML);
|
||||
|
||||
$sgml .= "</article>\n";
|
||||
|
||||
open(SGML, "> $sgmlfile");
|
||||
print SGML $sgml;
|
||||
close(SGML);
|
||||
}
|
||||
|
||||
if ($docbook) {
|
||||
# &printheader;
|
||||
# print "<p><hr>\n";
|
||||
# print "<pre>\n";
|
||||
|
||||
print "Content-Type: text/plain; charset=ISO-8859-1\n\n";
|
||||
|
||||
# while ($sgml =~ /</) {
|
||||
# $sgml =~ s/</</;
|
||||
# }
|
||||
# while ($sgml =~ />/) {
|
||||
# $sgml =~ s/>/>/;
|
||||
# }
|
||||
print $sgml;
|
||||
# print "</pre>\n";
|
||||
# print "</html>\n";
|
||||
}
|
||||
|
||||
if ($preview) {
|
||||
$cmd = "xsltproc --docbook /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/docbook.xsl $sgmlfile > $htmlfile";
|
||||
system($cmd);
|
||||
|
||||
print header(-expires=>'now');
|
||||
open(HTML, "$htmlfile");
|
||||
$i = 0;
|
||||
while (<HTML>) {
|
||||
$line = $_;
|
||||
$i += 1;
|
||||
# if ($i > 8) {
|
||||
print $line;
|
||||
# }
|
||||
}
|
||||
close(HTML);
|
||||
|
||||
}
|
||||
|
||||
sub printheader {
|
||||
print header(-expires=>'now');
|
||||
print "<html><head><title>$title Wiki</title>";
|
||||
print "<link rel=stylesheet href='../ldp.css' type='text/css'>";
|
||||
print "</head>";
|
||||
print "<body>";
|
||||
|
||||
print "<h1>$title Wiki</h1>\n";
|
||||
|
||||
print "<p><a href='/index.html'>Index</a> | ";
|
||||
print "<a href='/cgi-bin/document_list.pl'>Documents</a> | ";
|
||||
print "<a href='/cgi-bin/topic_list.pl'>Topics</a> | ";
|
||||
print "<a href='/cgi-bin/maintainer_list.pl'>Maintainers</a> | ";
|
||||
print "<a href='/cgi-bin/editor_list.pl'>Editors</a> | ";
|
||||
print "<a href='/cgi-bin/ldp_stats.pl'>Statistics</a> | ";
|
||||
print "<a href='/help/'>Help</a> | ";
|
||||
print "<a href='/help/wiki.html'>Page Help</a>";
|
||||
|
||||
print "<p>";
|
||||
print "<a href='document_edit.pl?doc_id=$doc_id'>Meta-Data</a>\n";
|
||||
print " | ";
|
||||
print "<a href='document_wiki_list.pl?doc_id=$doc_id'>Version History</a>\n";
|
||||
}
|
||||
|
||||
sub printwiki {
|
||||
if ($wiki) {
|
||||
$section++;
|
||||
print "<tr><td align='center'>Section $section</td></tr>\n";
|
||||
print "<tr><td><textarea name=wiki$section rows=$editrows cols=$editcols style='width:100%' wrap>$wiki</textarea></td></tr>\n";
|
||||
|
||||
# print "Section: $section\n";
|
||||
# print "$wiki\n\n";
|
||||
# print "-----------------------------\n\n";
|
||||
if ($section == $section_max) {
|
||||
print "Aborting due to loop control.\n";
|
||||
last;
|
||||
}
|
||||
$wiki = "";
|
||||
}
|
||||
}
|
||||
|
|
@ -7,8 +7,16 @@ $dbmain='ldp';
|
|||
@row;
|
||||
$count = 0;
|
||||
|
||||
# Connect and load the tuples
|
||||
$query = new CGI;
|
||||
|
||||
# Connect to database
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
$admin = $row[1];
|
||||
|
||||
$result=$conn->exec("SELECT editor_id, editor_name, email FROM editor ORDER BY editor_name");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
|
||||
|
@ -46,17 +54,19 @@ print "</table>\n";
|
|||
|
||||
print "<p>Count: $count";
|
||||
|
||||
print "<p><hr>\n";
|
||||
if ($admin eq 't') {
|
||||
print "<p><hr>\n";
|
||||
|
||||
print "<h1>New Editor</h1>\n";
|
||||
print "<h1>New Editor</h1>\n";
|
||||
|
||||
print "<p><form method=POST action='editor_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='editor_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Name:</td><td><input type=text name=editor_name width=20 size=20></td></tr>\n";
|
||||
print "<tr><td align=right>Email:</td><td><input type=text name=email width=20 size=20></td></tr>\n";
|
||||
print "<tr><td></td><td><input type=submit value=Save></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
print "<p><form method=POST action='editor_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='editor_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Name:</td><td><input type=text name=editor_name width=20 size=20></td></tr>\n";
|
||||
print "<tr><td align=right>Email:</td><td><input type=text name=email width=20 size=20></td></tr>\n";
|
||||
print "<tr><td></td><td><input type=submit value=Save></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
}
|
||||
|
||||
print end_html;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
if ($row[1] ne 't') {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -7,8 +7,16 @@ $dbmain='ldp';
|
|||
@row;
|
||||
$count = 0;
|
||||
|
||||
# Connect and load the tuples
|
||||
$query = new CGI;
|
||||
|
||||
# Connect to the database
|
||||
$conn=Pg::connectdb("dbname=$dbmain");
|
||||
|
||||
$username = $query->remote_user();
|
||||
$result=$conn->exec("SELECT username, admin, maintainer_id FROM username WHERE username='$username'");
|
||||
@row = $result->fetchrow;
|
||||
$admin = $row[1];
|
||||
|
||||
$result=$conn->exec("SELECT maintainer_id, maintainer_name, email FROM maintainer ORDER BY maintainer_name");
|
||||
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
|
||||
|
||||
|
@ -48,17 +56,19 @@ print "</table>\n";
|
|||
|
||||
print "<p>Count: $count";
|
||||
|
||||
print "<p><hr>\n";
|
||||
if ($admin eq 't') {
|
||||
print "<p><hr>\n";
|
||||
|
||||
print "<h1>New Maintainer</h1>\n";
|
||||
print "<h1>New Maintainer</h1>\n";
|
||||
|
||||
print "<p><form method=POST action='maintainer_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='maintainer_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Name:</td><td><input type=text name=maintainer_name width=20 size=20></td></tr>\n";
|
||||
print "<tr><td align=right>Email:</td><td><input type=text name=email width=20 size=20></td></tr>\n";
|
||||
print "<tr><td></td><td><input type=submit value=Save></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
print "<p><form method=POST action='maintainer_add.pl'>\n";
|
||||
print "<input type=hidden name=caller value='maintainer_list.pl'>\n";
|
||||
print "<table>\n";
|
||||
print "<tr><td align=right>Name:</td><td><input type=text name=maintainer_name width=20 size=20></td></tr>\n";
|
||||
print "<tr><td align=right>Email:</td><td><input type=text name=email width=20 size=20></td></tr>\n";
|
||||
print "<tr><td></td><td><input type=submit value=Save></td></tr>\n";
|
||||
print "</table></form>\n";
|
||||
}
|
||||
|
||||
print end_html;
|
||||
|
||||
|
|
|
@ -22,9 +22,12 @@ if ($username ne $row[0]) {
|
|||
print $query->redirect("../newaccount.html");
|
||||
exit;
|
||||
} else {
|
||||
if (($row[1] ne 't') and ($row[2] != $doc_id)) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
if ($row[1] ne 't') {
|
||||
$user_maintainer_id = $row[2];
|
||||
unless ($user_maintainer_id == $maintainer_id) {
|
||||
print $query->redirect("../wrongpermission.html");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue