commit 905d252dc71b64d1df651cc9d20908151b535050
Author: Aaron J. Graves <>
Date: Fri Apr 26 12:30:08 2013 -0500

  • InitVars: $NavBar is now an <ul> instead of bare links
  • THEME: Add CSS for .navbar ul, .navbar li

commit d365638bdd292c692bdb51cc10b88e579ddbfe91
Author: Aaron J. Graves <>
Date: Tue Apr 23 16:00:20 2013 -0500

  • DoAdminListVisitors: Allow limit to be something other than just an IP (why?), add "revert" to list of special cases

commit bd2e75ae431fb53ba494a65b3b52b5add46a9805
Author: Aaron J. Graves <>
Date: Tue Apr 23 15:54:32 2013 -0500

  • Added vars $SearchBox, $TemplateDir, $Template
  • Regular pages now make use of $ShortDir too
  • Created sub InitScript: Determine $ShortUrl, $Url, $ScriptName and $ShortScriptName earlier in the Init process
  • Removed a WHOLE bunch of commented out code
  • InitVars: Add definition for $Template, move script name/url determination to InitScript, make sure all extra text gets into $ArgList (not just first chunk), return SearchForm() to $SearchBox, added 'revert' to %Commands that points to DoRevert()
  • InitTemplate: Change code to use $Template
  • Markup: Multi-level lists are now possible
  • InitDirs: Set $TemplateDir, mkdir if not exist
  • AppendFile: If $user is not sent, use $UserIP
  • DoAdminListVisitors: Allow a user to limit by IP's, using 'limit=' in $ArgList
  • DoRecentChanges: Change <h3> to <strong> for date headers, remove "diff" link
  • SearchForm: Change form action to $ShortUrl
  • DoHistory: Change <h3> to <strong> for date headers, build table, display radio buttons for comparing versions, added revert button
  • DoDiff: Change handling of $ArgList to expect 'v1=VERSION1;v2=VERSION2" format
  • Wrote sub DoRevert: Revert a page back to a previous state
  • DoRequest: Don't add SearchForm() to $MTime anymore, it has its own place
  • TEMPLATE: Add form.searchform to CSS, add $SearchBox to footer portion

commit 307fc4ff42e30ce7f0f0efce9e02e48512b4e243
Author: Aaron J. Graves <>
Date: Tue Apr 16 14:35:54 2013 -0500

  • Added $SearchPage to list of variables
  • InitVars: Moved conversion from hex to ascii down a few lines, added code to convert any pagename with spaces (which are not part of a command) to underscores and redirect.
  • InitVars: If command = 'search', $ArgList is now $Page instead of $PageName (done so searches including spaces work)
  • DoEdit: Add chomp() call to the text that's read in, to remove the ending \n
  • WriteFile: Add chomp() call to remove excess \n's, then add a \n to the end. This is necessary so that if a user merely appends data, it shows up in a diff as an add rather than a change.
  • DoSearch: If nothing is found in the search, display "Nothing found!";
  • SearchForm: Add 'enctype="multipart/form-data"' to the form. Not sure it's needed, but hey why not?
  • DoVisit: Replace spaces in $Page with +'s so it doesn't break DoAdminListVisits
  • PageExists: Made the else line a bit more readable.
  • DoRequest: Build the $SearchPage variable here, since InitDirs() has already been called.
  • TEMPLATE: The search link now points at $SearchPage rather than $Page

commit aeff644f37f36ebb7414401744bd4fafb9b658b2
Author: Aaron J. Graves <>
Date: Tue Apr 16 09:41:24 2013 -0500

  • Added 'use Fcntl qw(:flock :seek)' call (for file locking)
  • InitVars: Changed $PurgeArchives to default to -1
  • InitVars: Commented out code that viewed pages that ended in ".nnn" as revisions
  • ALL: Removed any use of $ShortPage, and replaced it with $Page
  • InitVars: If $command is 'admin', do not clear $Page variable anymore
  • InitVars: Add 'revision' to %Commands, points to DoRevision()
  • InitVars: Add 'trimvisit' to %MaintActions, points to DoMaintTrimVisit()
  • DoAdminListVisitors: Call FileToArray to read $VisitorLog instead of manually opening
  • DoAdminListVisitors: Change the way that the command string is checked and interpreted, also to account for revisions (and remove parentesis)
  • DoHistory: Sort archive files by file mod time rather than name (otherwise 10, 11, etc would come before 2, which is NOT accurate)
  • DoHistory: Link to archive file now follows command structure 'revision' rather than "Page.nnn" format.
  • DoVisit: For page revisions, do command = "revisionNN"
  • DoVisit: Removed large block of commented code, get exclusive lock and seek to end before writing log file.
  • Wrote sub DoMaintPurgeOldRevs to purge old archive files based on $PurgeArchives
  • Wrote sub DoMaintTrimVisit - trim visitor log file if over $MaxVisitorLog
  • StringToFile: Get an exclusive lock and seek to beginning of file before writing
  • Wrote sub DoRevision which handles the 'revision' command
  • DoRequest: Before printing anything, check if command = 'revision', and if so, see if the revision exists first (that way we can throw error 404 if the revision does not exist) FIXME: Maybe instead of printing things directly, we should add all the data to a variable and print it out only after everything has run. Just a thought...
  • DoRequest: Remove all the code that checked for $PageRevision and did revision handling stuff

commit a117094d8cd1de22434de625aec04ffec58b9a9c
Author: Aaron J. Graves <>
Date: Tue Apr 16 09:25:44 2013 -0500

  • Changed $PurgeArchives to be '-1' by default (keeping all revisions) and changing the note.

commit 97085085e8b625ffd961756c240a1d80dead575a
Author: Aaron J. Graves <>
Date: Tue Apr 9 15:53:31 2013 -0500

  • RefreshLock: Call FileToArray instead of manually opening and reading the file.
  • SetLock: Call FileToArray instead of manually opening and reading the file. Check if the lock is in fact held by the current user, and if so, refresh it, otherwise give them an error message.

commit 7647c96a73dedcec8282a01c89ea216d091b04bb
Author: Aaron J. Graves <>
Date: Tue Apr 9 14:50:15 2013 -0500

  • LogRecent: For "remove any old entry", changed the way the regex operated due to a problem whereby pages were being matched improperly.
  • DoHistory: Remove <strong> tages around the summary comments (page way too bold)

commit 8ebb7a2ff7aaeaee66a6fe7617e53ffecd9c7d01
Author: Aaron J. Graves <>
Date: Tue Apr 9 14:14:14 2013 -0500

  • Added $PurgeArchives and explanation

commit c8fc1acb7e3635a269cfad51c89683c3fe56dd94
Author: Aaron J. Graves <>
Date: Tue Apr 9 14:13:31 2013 -0500

  • Added variable $PurgeArchives
  • InitVars: Initialize $PurgeArchives
  • DoEdit: Add link to delete the page to the edit form
  • DoAdminReIndex: Change the output a bit
  • DoAdminListVisitors: Add check for the 'delete' action
  • DoHistory: Author name is auto-linked to a page by the same name as the author
  • Added sub PageExists - Check if a page exists
  • Added sub DoDelete - Action for deleting page

commit bf094c9b4864e246cd3fb481fa3bdd84596a3325
Author: Aaron J. Graves <>
Date: Fri Apr 5 14:31:04 2013 -0500

  • DoRecentChanges: If top line is blank or count = 0, display "No recent changes." and exit
  • DoMaintPurgeRC: Call chomp() on reading the exiting rc.log
  • DoMaintPurgeRC: Only write out changes to rc.log if there were actually changes

commit 85f2cbae6d8c2aadeed5916383f4ab51fb235011
Author: Aaron J. Graves <>
Date: Fri Apr 5 12:02:09 2013 -0500

  • DoMaintPurgeRC: Forgot to add extra \n when writing out new RC file, fixed.

commit bd48fd892b415edc333bd005d544c1089c91151f
Author: Aaron J. Graves <>
Date: Fri Apr 5 11:54:02 2013 -0500

  • Added $PurgeRC and %MaintActions
  • InitVars: Initialize $PurgeRC and %MaintActions
  • Markup: Change LI (both OL and UL) to match multi-line, even though it does nothing the way Markup works right now.
  • Markup: Added condition for strikethough that there cannot be whitespace before the closing '--'
  • CanDiscuss: Modified so that if IsAdmin, return true regardless of $SiteMode
  • DoSearch: Removed /x from regex, as it was messing up searches with spaces.
  • DoVisit: Change the way visit is logged (lock the file). Get rid of code to trim (move to %MaintActions?)
  • Added subs DoMaintPurgeTemp, DoMaintPurgeRC, and started DoMaintPurgeOldRevs.
  • DoRequest: Modified code that determines if discussion page to allow the discussion form to be displayed if IsAdmin, regardless of $SiteMode setting.

commit c816bf48e394d2116cba75abcd2a2b29c4274d6a
Author: Aaron J. Graves <>
Date: Fri Apr 5 11:46:57 2013 -0500

  • Added $PurgeRC and explanation.

commit 0a0052898396661d3a416b9c830cb257010072bc
Author: Aaron J. Graves <>
Date: Wed Jan 30 12:22:53 2013 -0600

  • DoRandom: If no pages exist, simply redirect to the $DefaultPage (FIX FOR ISSUE 8)

commit ef0ccbd4874a20faf64025e4232d7579fe39340e
Author: Aaron J. Graves <>
Date: Wed Jan 30 12:18:10 2013 -0600

  • InitVars: Check for trailing slash; if found, remove and 301 redirect (FIX FOR ISSUE 9)

commit 0c3a15b86ab3f29b69956419ae73edd735443f93
Author: Aaron J. Graves <>
Date: Tue Jan 29 15:36:30 2013 -0600

  • DoRecentChanges: Change output to link to user name page
  • THEME: Change <title> element from $SiteName: $PageName to $PageName - $SiteName (more SEO friendly)

commit 8f6d60e00a0b5b493b0d923ef1ad9c7757537028
Author: Aaron J. Graves <>
Date: Fri Jan 25 12:16:56 2013 -0600

  • Updated copyright date (MINOR)

commit 86469801c4f574196de47a6e3c3177936bb1ae4a
Author: Aaron J. Graves <>
Date: Fri Jan 25 11:07:45 2013 -0600

  • Added global var $HTTPStatus
  • DoAdminListVisitors: Added check for error code (should only be 404 or 403)
  • DoVisit: Be sure to log error code (if one exists) in the visitor log
  • DoRequest: Work with $HTTPStatus is 403 Forbidden or 404 Not Found

commit f37a09635e1b89831c6abdf95d7ec1169640e16e
Author: Aaron J. Graves <>
Date: Fri Jan 25 10:18:56 2013 -0600

  • Added vars $BlockedList and %PostingActions
  • Updated $VERSION
  • InitConfig: Added 'block' and ''clearvisits' to %AdminActions and %AdminList
  • InitConfig: Added definitions for %PostingActions
  • Markup: Changed forced line break to globally search (g modifier to s///)
  • InitDirs: Set $BlockedList
  • Index: Added close statement
  • AppendFile: If file exists already, get it, otherwise initialize 'revision' and 'text'
  • DoAdminIndex: Populate @indx using FileToArray()
  • DoAdminReIndex: Call StringToFile() instead of directly modify file
  • Wrote sub DoAdminClearVisits (clears visitor log file)
  • Wrote sub DoAdminBlock (handle blocklists)
  • Wrote sub ReDirect (redirect to a location)
  • Wrote sub DoPostingLogin (sets cookie and redirect to a file)
  • DoPostingEditing: Check if CanEdit, changed way redirect is done
  • Wrote sub DoPostingDiscuss (handle discussion pages)
  • Wrote sub DoPostingBlockList (save block list)
  • DoPosting: Re-wrote to handle extensible posting methods
  • FileToString: Remove '\r' from all strings
  • FileToArray: Remove '\r' from all strings
  • Wrote sub IsBlocked (checks if requestor is on block list)
  • DoRequest: Check first if IsBlocked(), return HTTP 403 status if true
  • DATA block: Change default theme to show site name in 0.9em size font.

commit 4c340b87360e2fa46bcd06ff942188e9e5f505f4
Author: Aaron J. Graves <>
Date: Mon Dec 17 13:17:03 2012 -0600

  • Added $PostFooter w/documentation