Duma Photo Gallery System (v0.99.4)

Copyright © 1998-99 Ilia Lobsanov
DPGS is a free and open-source tool for enhancing virtual communities, discussion groups and message boards with dynamically generated photographic member profiles. Together, I call them the Duma. (there is a history behind the name)

The tool is comprised of several scripts written in Perl and can be used on any server/platform supporting Perl 5.
The major advantage lies in the usage of html templates for presenting the member profile and the form to update profile. Thus, it is simple to customize the major pages returned to the client:

All dynamic data (eg. Location) is designated by placeholders (eg. %%Location%%). To add more data (fields), simply make up your own placeholders. If you can come up with a better design, feel free to contribute it to the working examples.

Additional templates include: list_sort.html, list_nav.html, list_full.html, list_dartboard.html (more about these later in Table 1 below).

Major features:

Working examples:

Download:

How does it work?

First, to make it work, you must configure some variables in the file DPGS. This is also the file that you will reference in your web page links. For example, to show user profile #1, use http://yourhost/DPGS?action=show&id=1. See table 1 for more examples.

All data is stored in plain text. Each member gets a directory under the id number within the members directory. The suggested structure is as follows:

  PG/members/id
               /data.txt -> format: key==value\n
               /photo.jpg|gif|png
               /thumb.jpg|gif|png

  PG_data -> non-public dir
         /members.idx -> index file of all the members; format: id==name==password\n 

To add a member, you need only upload the photo and thumbnail and add an entry into the members.idx file.
Currently, there is a limited administration feature, which adds the entry and sorts members.idx, but doesn't upload the photos for you. Yet.

Table 1: Available commands
Query String Result
action=show&id=1 Profile for the specified id (where "1" can be any number identifying the member profile)
action=update Updates the member profile via the POST method.
action=list&type=nav Navigation page using the template list_nav.html
action=list&type=full All-At-Once View of all member thumbnails using the template list_full.html
action=list&type=dartboard Dart Board View of all member thumbnails using the template list_dartboard.html
action=list&type=sort Sort (by most recent) View of all member thumbnails using the template list_sort.html
action=list&type=A List of thumbnails whose member names start with the specified letter. (where A is any single character)
action=search&keywords=A Searches contents of all profiles for matching keywords. "keywords" is an input field
action=admin Administration feature

To-do list/Work in progress:
  • SQL database support
  • File upload support
  • Increase photo limit
  • Complete the administration tool

Development help, donations, postcards and appreciative emails are more than welcome!

Some last minute background info:

  • In case you were wondering what "Duma" means: it refers to the Parliament of Russia. This basically implies that probably only brave members of your board/forum/community will join the Duma ;-)
  • I do not claim to be an expert in Perl. Thus, I've made this program open-source, hoping others can improve on the code and port it to PHP or TCL, etc., but maybe I'll do that myself.
  • DPGS is licensed under GNU GPL

ilia@lobsanov.com

Version History
  • 0.99.4 (June 11, 1999)
    • Added semi-private functionality.
    • Included half-working admin.dpgs
  • 0.99.3 (June 4, 1999)
    • Added search capability, sort by last update function
    • Refined All-At-Once and Dart Board views
    • Added more templates
    • Optimized scripts
  • 0.99.2 (May 5, 1999)
    • Fixed a nasty bug in list.dpgs (nonexistent variable reference $DPGS)
    • Other minor enhancements
  • 0.99.1 (May 3, 1999)
    • Architecture and execution methodology is improved. Now only the main file (DPGS) need be invoked, which "includes" the needed .dpgs file depending upon the required "action"
  • 0.99 (April 18, 1999)
    • Initial open-source release
  • 0.0 (April 22, 1998)
    • Initial release for Little Russia