add revhistory, big wiki edits

This commit is contained in:
david 2002-01-23 22:31:34 +00:00
parent 0138aa7db5
commit 9b99af2bb3
14 changed files with 692 additions and 96 deletions

View File

@ -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";
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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)

View File

@ -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)

View File

@ -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;
}
}
}

View File

@ -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/\</&lt;/;
}
@ -234,8 +237,9 @@ if ($docbook) {
$sgml =~ s/\>/&gt;/;
}
print $sgml;
print "</pre>\n";
print "</html>\n";
# print "</pre>\n";
# print "</html>\n";
}
if ($preview) {

View File

@ -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/&amp;/;
}
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/</&lt;/;
}
while ($wiki =~ />/) {
$wiki =~ s/>/&gt;/;
}
&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/</&lt;/;
}
while ($line =~ />/) {
$line =~ s/>/&gt;/;
}
$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/</&lt;/;
# }
# while ($sgml =~ />/) {
# $sgml =~ s/>/&gt;/;
# }
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>&nbsp;|&nbsp;";
print "<a href='/cgi-bin/document_list.pl'>Documents</a>&nbsp;|&nbsp;";
print "<a href='/cgi-bin/topic_list.pl'>Topics</a>&nbsp;|&nbsp;";
print "<a href='/cgi-bin/maintainer_list.pl'>Maintainers</a>&nbsp;|&nbsp;";
print "<a href='/cgi-bin/editor_list.pl'>Editors</a>&nbsp;|&nbsp;";
print "<a href='/cgi-bin/ldp_stats.pl'>Statistics</a>&nbsp;|&nbsp;";
print "<a href='/help/'>Help</a>&nbsp;|&nbsp;";
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 "&nbsp;|&nbsp;";
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 = "";
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}
}
}