To Do (for HYMNS v0.5: Elga's Maintainer Interface): - done tasks prefixed by * (star) - - >>>> <<<< mark improvments for speed/ease-of-use: TBI in next version(s) - * -check why stat.pl won't be read in; reformat it as hymnsu.pl; > UNIX rights; -find out a way to get to the www.aubg.edu logs; >Ani? Ivo? * -error routine: takes string and outputs; "Sorry: string... Go back"; > in custom.pl * -routine to check the existence of a directory; > -d perl operator; * -routine to format a directory; > in hymnsm.pl; * -routine to display pictures; > in hymnsm.pl; * >>>>-utility to modify the gob separator;<<<< >>>>-make Manager-oriented and Designer-oriented documentation (different presentation order -- and arguments);<<<< >>>>-utility to import already-existing sites;<<<< * >>>>-figure out a way to automatize #-type links; > in hymnsm&ver<<<< >>>>-make the whole thing fool-proof (check ALL data entry, including syntax for template input and HTML (JavaScript?) for data and template input)<<<< >>>>-think about binary file saving (make it an option or the norm?)<<<< >>>>-beautify somehow the whole thing!<<<< >>>>-for shareware delivery, garble the whole thing, place the common subs in the mains & remove the comments; then take out the \ns :)<<<< $gtf is the Query string single letters (f,d,...) are $Form{'letter'} „maintainer's page <maint.shtml> * - link to file manager * - link to scheduler >>>>-add/delete version; additions should be paralelled in trash<<<< >>>>-view/empty trash (a little trash icon shown with the size of the data in it)<<<< * -link to user statistics * -link to site generation >>>>-make controls for all the variables in the custom.pl<<<< „statistics makes: <hymnsu.pl> * -generates index page and reads data from log (plain) >>>>-increments data on a one-page&user basis ($gtf='w=inc&f=<file>')<<<< >>>>-should keep track of time... monthly?<<<< >>>>-which pages open by what user?<<<< >>>>-hits/day? IPs/day? hits/home vs hits/rest? hits/no.users?<<<< >>>> <<<< „manager makes: <hymnsm.pl> * -FM index page (default) -> (prev)(tbox) -(prev frame) „innitial list of given directory ($gtf="lst<path>") >>>>-figure out add and delete directory; they should be parallelled in trash and in every version<<<< * -> a click on directory fills (main) with „manager(folder) * -> select action („choose, „edit, „add, „delete) from pop-up menu (a) * -> a click on a file fills (input) with chosen action * -> file size gets displayed -> if file is a directory or a UNIX link, it becomes a button to open it * -> if file is a picture, it gets displayed * -> if file is a template, its description gets displayed -> if file is a document, its title gets displayed >>>>-> add checkbox for "directories first"<<<< * -(tbox frame) „innitial instructions to use the File Manager ($gtf="inst") -(tbox frame) action ($gtf='in&<action>&<file name>') * -> „choose: fills the 'choose' input field in (tbox) with the file name, abs to area root * -> „edit: click on <file/name> link fills (_top) with the „editor index -> „add: -> „delete: asks for filename to replace the deleted one in references -> „reference: fills (tbox) with a list of all files pointing to the one you click >>>>-> „duplicate: asks for filename; makes a new file with the same templates and data values<<<< -(tbox frame) „delete reply ($gtf="delf<file name>") -> click on update button fills (prev) with list of files which had links to the deleted one >>>>-> checkbox for 'completely delete' (delete the file and any reference to it)<<<< >>>>-> checkbox for 'deal with each file individually'<<<< >>>>-> make sure the files replaced are not remote (warn the user in documentation (and in toolbox) "You'll have to modify/delete manually the links leading to the mirror site(s)")<<<< -(tbox frame) „reference reply ($gtf="reff<file name>") >>>>-figure out undelete options<<<< >>>> <<<< „generator does: <hymnsg.pl> -preview of page using files ($gtf='prev&<data file name>') -preview of page using template form($gtf='pret&<data file name>') -preview of page using data form($gtf='pred&<data file name>') -preview of page using chunk form($gtf='prec&<data file name>') >>>>-make temporary files and recover from them in case of crash<<<< >>>>-filter out garbage (non-$hye files)<<<< -one page, all versions ($gtf='bake<data file name>') -> find all variables in a template -all pages using one template/chunk ($gtf='bake<template file name>') -recursively, whole area, all versions (default) >>>>-think about mirroring (remote locations in @hymult?)<<<< >>>>-routine to add version<<<< >>>>-think about repeating layout element (r# <chunk/name>)<<<< „editor makes: <hymnse.pl> -„data index page ($gtf='ind') -> (templ)(prev)(tbox) -„template index page ($gtf='indt') -> (templ)(prev)(tbox) -(templ frame) „template edit page ($gtf='inst&<template file name>') -> enter template in textarea -> click on 'preview' button (s?) fills (prev) with „generator >>>>-> if necessary, record sizes for textareas<<<< -(templ frame) „list of data values ($gtf='inst&<data file name>') -> edit the data in textareas -> 'preview' buttons fill (prev frame) with „generator -(tbox frame) „data toolbox ($gtf='tbx') -> 'choose' input field gets data from „manager, „color composition -> 'clip' textarea gets formated data from buttons below -> click on 'get file' button fills (prev frame) with „manager -> click on 'make link' button converts 'choose' to a link in 'clip' -> click on 'make image' button converts 'choose' to a image in 'clip' -> click on 'make chunk' button imports in 'clip' the template from 'choose' -> click on 'get color' button fills (prev frame) with „color composition -> click on 'preview' button fills (prev frame) with „generator -> click on 'generate' button just calls „generator for 'one page' -> click on 'edit template' button fills (_top) with „template index -> click on 'cancel' button fills (_top) with „manager >>>>-> load automatic hints<<<< -(tbox frame) „template toolbox ($gtf='tbxt') -> 'choose' input field gets data from „manager, „color composition -> 'clip' textarea gets formated data from buttons below -> click on 'get file' button fills (prev frame) with „manager -> click on 'make link' button converts 'choose' to a link in 'clip' -> click on 'make image' button converts 'choose' to a image in 'clip' -> click on 'make chunk' button imports in 'clip' the template from 'choose' -> click on 'get color' button fills (prev frame) with „color composition -> click on 'edit template' button fills (templ) with „template edit on the file in 'choose' -> click on 'preview' button fills (prev frame) with „generator for 'one page' -> click on 'generate' button fills (prev frame) with „generator for 'one template' -> click on 'cancel' button fills (_top) with „data index >>>>-> load automatic hints<<<< >>>>-> add HTML and JavaScript pop-up, take out make link, make image<<<< -(prev frame) „color composition page ($gtf='cols<bg pict filename>') -> takes the whole tag from 'clip' or background image from 'choose' -> imagemap and/or RGB controlls -> text, link, vlink, alink radio buttons to select where the color you choose should go -> text, link, vlink, alink text fields to store a complete scheme -> pick text color formats a <font> tag in 'clip' -> font pop-up for most commonly-used fonts -> pick color scheme formats a <body> tag in 'clip' >>>>-> up/down buttons to slightly modify RGB values for the colors that are dynamically processed<<<< >>>> <<<< „todo makes: <hymnsd.pl> -TD index page ($gtf='ind') -> (prev)(tbox) -(main frame) „to-do list ($gtf='do' or w='do' a=<item to add> d=<no. of item to delete> c=<delete choice>) -> a click on 'manager' link fills (_top) with index of „manager -(input frame) „to-do options (w='in' a='do') -> >>>>check 'add' box and<<<< type new item in (a)textarea -> check 'delete' or 'done' (c) and choose from pop-up number of item to delete (d) -> a click on 'do' button fills (main) with „to-do >>>>-sort by date due, task<<<< >>>>-purge list of done items<<<< >>>>-view backup lists<<<< >>>> <<<< >>>>„mailer makes: <hymnsa.pl><<<< >>>> <<<< >>>>„mudder makes: <hymnsn.pl><<<< >>>> <<<< >>>>„ip manager makes: <mons.pl><<<< >>>> <<<< „chunks >>>>-HTML mnemonics<<<< >>>>-JavaScript mnemonics<<<< -search: >>>>->make it flexible and write its documentation<<<< ->input text filled with keywords ->boolean pop-up (AND,OR) >>>>->sort by something... :)<<<< >>>>->radio buttons: data only / data and context<<<< >>>>->find a way (better parser? subsequent searches?) to allow for more complicate expressions like (and or)<<<< >>>> <<<< „data files: (<> replaced with text, <#> replaced with number, [] is an optional element, []n optional repeating n times) -statistics ->area (one line) <FirstReadDate>:<TotalCorrectlyReadPages>:<TotalPages>:<LastReadDate> ->users (<#TotalUsers>) <userIP>:<#total correct reads>\n ->pages (<#TotalCorrectPages>) <filename>:<#total correct reads>\n -to do -><full name>„„[<date recorded>:<date due>:<manager>:<importance[1-3]>:<user>:<task>:[d]:<item>„„]<#items> -data ->>>>index of pages linked to this<<<< plain \n list of pages, relative to the data root ->data file <template name>„„[<data name>„„<value>„„]<#data fields> -template ->>>>index of pages using this<<<< (<no. of pages> lines) plain \n list of pages, relative to the template root ->template file (<description>„„ ([p[<related data>] <piece>„„] | [d<variable name> [<default>]„„] | [c<postfix> <chunk|template f-name>„„])<#layout pieces> ) „HYMNS Hints (<> are links to further explanations) - protect the hymns directory <against external access> - before composing colors, choose a background image with the file manager - Don't name any of your subareas as you name the version areas - Make sure that a template you use for a data file has the <html></html> in its extreme pieces - Make the first words of your template description one of {page layout,layout element,mnemonic piece} - Keep track of all variable names that you use in a template - Add a part of the name of the template to the name of each variable on that template (e.g. AdTel - the telephone number variable in the adress chunk) „assume that: - browser used is Netscape v>=3.0.1 (a release, not a preview!) - OS runs perl v>=5 - OS has commands named 'ls','cp','mv','rm' which behave like on UNIX - ls -R <path> produces something like: ==========example========== cc:/u/radu/cgi/hymns> ls -R /u/radu cgi p public_html /u/radu/cgi: hymns tests /u/radu/cgi/hymns: chsep.pl hymnse.pl hymnsm.pl t.txt custom.pl hymnsg.pl hymnsu.pl tst.pl /u/radu/cgi/tests: date.pl date1.pl date2.pl date3.pl dump-env.pl fin =======endof example======= - ls -l <path> produces something like: ==========example========== total 96 -rwxr-x--x 1 radu staff 884 Jun 6 02:06 chsep.pl -rwxr-x--x 1 radu staff 2484 Jun 5 23:53 custom.pl -rwxr-x--x 1 radu staff 8843 Jun 4 03:01 hymnse.pl -rwxr-x--x 1 radu staff 2424 Jun 4 01:24 hymnsg.pl -rwxr-x--x 1 radu staff 6303 Jun 3 22:51 hymnsm.pl -rwxr-x--x 1 radu staff 4359 Jun 2 16:09 hymnsu.pl =======endof example======= - the only '.' in pathname to every file in the area is the one before the extension (that is, no hidden files or directories!) - in links there's no space after the " in <a href="/path" „Credits (in order of their direct or indirect contribution to HYMNS): -Rich Beilock (for challenging me to create 'the best tool out there') -the Mellon Foundation and the Pew Charitable Trust (for indirectly (but effectively :) providing the money that funded the development of this tool) -Elga Nikolova (for a manager's requirements) -Mark Stefanovich (for the use of his kool Macs, managerial guidance and 'focusing' my development efforts) -Ani Milanova (for suggesting -- and even coding! -- enhancements, and constantly asking for simplification of the interface) -the American University in Bulgaria (for server space -- and teaching me!!, and working environment, and many more) -Mark Andersen and his Netscape team (for the most woderful information tool since the modern press) -Larry Wall (for a kool P[er...]L) -the University of Missouri (for their short'n effective course on perl) -the BG-BIO team at AUBG (for extensive beta-testing) -countless of web designers from whose work I learned