Revision history for Perl extension PApp

0.122 Mon Dec  3 19:32:50 CET 2001
	- fixed hashing of long strings in PApp::I18n. This invalidates
          all translation tables.
        - fixed i18n tables. wrote 4 perlbug reports. flamed with jhi, who
          is such a nice person...
        - "fixed" import/export i18n tables with respect to various perl versions.
        - PApp::Lock always timed out if the lock was down.

0.121 Fri Nov 30 10:53:24 CET 2001
	- fixed apps/poedit.papp.

0.12  Sat Oct 27 16:55:26 CEST 2001
	- INCOMPATIBLE CHANGE: $ppkg->insert and embed no longer do the
          dereferencing for you, i.e. change
          $ppkg->embed('name') to $ppkg->{pkg}{name}->embed.
	- INCOMPATIBLE CHANGE: changed the syntax of all SURL_-cookies
          into functions. This is more natural and gives me more freedom.
	- added DataRef::invalidate.
	- changed to using new Compress::LZF::sfreeze functionality.
	- fixed user/group entry for reconfig AGAIN. how many times did
          I tell Paul this until I did it myself??
	- added papp-httpd, a simplistic httpd that mounts an app and
          starts a webbroser on it.
	- surl and find_keysv now check wether the ref => xxx assignment
          really is valid, i.e. ref really is a scalar reference.
	- PApp::DataRef read in the whole table with mysql + preload=1.
	- macro/editform: no longer truncate the last two bytes of files.
	- SIGQUIT can now be used to kill a papp process and get
          a usable calltrace.
	- dependencies for stylesheets work again. dumb bug, uh.
	- ssl.papp now needs "SSLOptions +StdEnvVars +ExportCertData"
          Table ssluser changed, completely broken.
	- dbedit now forces utf8 on all fields. have fun.
        - ef_ functions now return the html instead of outputting it. use
          something like the following command to convert most uses:

          perl -pi -0777 -e 's%<:(\s*ef_)%<?$1%g' */*.papp

	- fix obscure security glitch with nosession. If your
          module was secure before it still is ;)
	- some renames in macro/ssl.papp.
	- fixed I18n's scan support :( nobody noticed :(:(:(
	- use Location ~ instead of LocationMatch since mod_perl
          forgets the "Match" after handling the first entry :(
	- diehandler no longer tocuhes non-scalar exceptions.
	- PApp::DataRef now tests autoincrement ids with !! instead of with
          defined().
        - apps are now (by default) matched with LocationMatch ^/appname(/|$)
          which gives them a more directory-like appearance.
	- exists now works on DataRef::DB_row objects, given they were created
          using "preload => 1".
	- translation domain is now inherited by subpackages, fixes the
          "embedded packages don't get translated"-bug.
	- PApp::Exception now "optimizes" some exception cases that often lead
          to perl instability problems.
	- URI 1.12 is required form now on. 1.09 cost JanMan a day debugging
          (or fucking, or...).
	- default module can be set in insert/embed, module might be empty.
        - implemented http://www.w3.org/TR/xinclude/ in form of
          PApp::XML::xml_include() that will soon be used throughout papp.
	- ported PApp/Recode.xs to DEVEL9916, hopefully older versions are
          still also supported.
	- PApp.pm: new function setlocale.
	- SURL_SET_LANG is now SURL_SET_LOCALE.
	- renamed keys: papp_charset => papp_lcs, papp_lang => papp_locale.
	- added (parts of) http://iso.plan9.de locale table to I18n/I18n.pm.
        - removed unnecessary columns from I18n/I18n.pm data section. This
          saved a lot of space and made it faster.
	- the module named "*" is called when no other module name matches
          (wildcard/default module).
	- allow ".encoding" in language id's.
	- fix generation bug, some races and unnecessary recompile problem.
	- PApp::DataRef now dumps destruction errors to stderr (but does not
          touch $@ in any way).
	- renamed PApp::DataRef parameter force_utf8 to utf8.
	- the xs part (surl & friends) did not always honour magic.
	- ef_submit did not like the value argument.
	- bugworkaround in escape_uri actually had a neccessary side-effect.
	- poedit now allows editing of the current display charset.
	- ef_checkbox now sets the ref correctly to undef or 1.
	- SURL_POP etc. now work on references again.
	- implemented ef_radio.
	- updated PApp::User for the new lazy-uid-allocation scheme.
	- renamed PApp::userid to getuid, exported PApp::User::userid.
	- PApp::Application::run did not properly call load_prefs.
	- properly downgrade to (fake) "iso-8859-1" when sending binary data.
	- some modifications to allow for lazy allocation of userid
          and sessionid, as well as hashed stateid allocation.
	- minor cleanups in PApp/HTML, implemented selectbox, documented tag.
	- fixed nosession handling (& more), removed some dead cows.
	- fixing Config.pm.PL for users who use gid 0 with papp.
	- removing prefix.psql from kis.papp.
	- <language> now deprecated.
	- renamed grp.longdesc to grp.comment.
	- implemented <nosession> element. should be rewritten using namespaces
	  and xslt ;).
	- multiline MIME headers in mutlipart/form-data are now supported,
	  although I've not yet seen a browser use it.
	- one of the countless bugs in opera actually was useful in finding
	  a bug in PApp's form-data handling.
	- marked & moved Pconv && Recode into it's own subdir.
	- fixed buggy flush logic AGAIN.
	- enhanced make test a bit. should now do basic sanity checks.
	- vastly improved PApp::Pconv (therefore renamed from iconv).
          should be outsourced.
	- allowed both #elsif and #elif.
	- documented and maybe fixed sub/ret functionality.
	- fix escape_uri description and code.
	- new functions for group management in PApp::User.
	- mime headers that contain the letter "r" are not longer ignored.
	- deuglified macro/admin/loginbox.
	- moved papp statedb management into PApp::Config.
	- papp-env can now evaluate perl expressions when setting vars.
	- renamed $sessid to sessionid, sessionid is now part of
          the surl (which is redundant and could be used for
          additional sanity-checks).
	- new module: PApp::User, use it instead of macro/admin.
	- <import> can now import perl modules (experimental feature).
	- adedd PApp::abort_with_file (and PApp::CGI::send_fd).
	- added abort_with, design inspred by oesi, implemented against
          his wishes ;)
	- added sessid to state db. The session id will be available in
          $sessid.

0.11 <no release>
	- reserved %T for transaction variables.
	- I18n no longer opens translation tables RDWR or in other
          invalid modes.
	- new configure option: errorlog.
	- totally redid the PApp::CGI interface. See eg/admin.cgi for
          changes.
        - did you know that you need to localize $@ at the right place
          when you overload exceptions? uh-hu.
	- elmex found & fixed a DoS in macro/tinychat.papp.
	- fixed papp-admin --user.
	- more ssl-stuff from oesiman.
	- added eg/ directory with example stuff.
	- finalized PApp::CGI. Works surprisingly fast. With SpeedyCGI
          it rocks.
	- tweaked error handling. perl is just too unstable.
	- i18n dpo tables are now written by papp-install.
        - the uid/gid settings now don't get lost on reconfig.
        - increased the default size of msgid/msgstr/env AND state. For
          env/msgstr etc.. it's not speed-relevant in the general case.
          for state it might be a small problem, but I just hit the page
          where 64k wasn't enough (sablotron generation time: 2min,
          netscape rendering time >>30min and then out of memory).
	- greatly enhanced and fixed macro/admin.papp.
        - added completely transparent sslauth->user mapping.
	- implemented and use macro/tinychat ;) If our oesi finds it cool
          it *must* be cool.
	- PApp::Env now uses mysql-shared-locks instead of lock tables.
	- rename SURL_FILENAME to SURL_SUFFIX; SURL_STYLE_EMPTY to
          SURL_STYLE_STATIC.
	- changed serialized modpath representation, chop off '-' signs
          at the end since we can syntehsize them if we know the length.
	- seperated PApp::SQL from the main sources, renamed ::database to
          ::Database.
	- fixed selectbox to be conform with the other functions.
        - streamlined editform.
	- fixed important security bug (testing for nonexistant access rights
          always returned true).
	- added PApp::Admin.
	- additional language translation now get auto-detected.
        - papp-install is now less disturbing.
        - lots of i18n fixes, language ids get normalized now
          (you must run i18n-normalize after upgrade!).
        - first try on an generalized top-level exception mechanism.
	- implemented surl-styles (see PApp::surlstyle, surl and the
          new surlstyle attribute for the package element).
	- --export-po and --import-po for papp-admin.
	- elaborate microsoft-can't-mime workaround for msie ;(
	- fixed a bug that kept surl from accepting references
          as destination "path".
	- work around bug in mod_perl's $r->args && $r->content. As a side
          effect, query string with ";" as separator are now supported.
        - added flush function for outputing partial
          pages. As a side effect, data is no longer being copied on output
          (unless a conversion is necssary, of course).
	- multiple field submits are now supported (see desc. of %P).
          macro/editform transparently supports this.
	- ef_button hinzugefügt (== marco is too dumb to write english).
        - objectbox in selectbox umbenannt.
	- fixed method discard, new method dirty for PApp::DataRef.
	- added bin/papp-admin.
	- apps/admin improved.
        - app.config is now used directly in the new PApp::Application call,
          so things like database can be set via the config mechanism.
	- %state is now no longer destroyed but rather freed, so
          DESTROY will not be called for objects in %state, if they
          are saved into the satet database. This is expected, I think.
	- PApp::XSLT now supports dynamic scheme handlers.
	- moved from Compress::LZV1 to Compress::LZF, please do:
          update user set prefs=""; delete from state;
          or edit PApp.pm and replace LZF by LZV1.
	- fixed PApp::HTML::radio/checkbox.
	- fixed ef_relation to support where arguments again.
	- 5.5-ified SQL/SQL.xs.
	- argl, form-headers are now treated as bytes.
	- greatly improved (and fixed) ef_file [untested ;-].
	- charset conversion done for ef_sbegin/ef_cbegin.
        - some utf8-support for DataRef::DB_row, for dumb databases.
	- PApp::HTML::textarea now outputs additional \n before and
          after the text (for normalization).
	- macro/editform normalizes text data now (\r\n => \n!)
	- move from georgian-char-hack to corporate use zone.
	- documentation enhancements.
        - new function macro/editform/ef_field.
        - module name "." == current module in surl.
	- enhanced macro/editform to parse "normal" GET and POST requests,
          ef_hidden, better ef_submit.
        - surl now supports multiple module targets.

0.10 <Unreleased: missing license. Write to marco@toytest.com for complaints>
	- input/output charset conversion is automatically done for %P and
          all text/plain fields in macro/editform.
	- papp now stores the character set the last page was submitted in.
	- added PApp::Recode, which in turn uses PApp::Iconv (which in turn
          uses iconv*) to add character-set-conversion.
	- added macro/ssl.
        - rewrite of PApp::HTML and extended functionality for
          macro/editform, for the benefit of ecmascriptloosers.
	- modulepath from url parsing enabled again.
	- fixed import state key processing.
	- fix PApp::Apache to supprot mount_config.
	- replaced <module src> by <include src>.
	- <pxml> now supported on a basic level.
	- String::Similarity 0.02 required (who would have thought...).
	- added PApp::Lock.
	- capture {} works again, stderr is no longer redirected
	- implemeted catch/try (experimental).
	- reload_p fixed to work correctly.
	- more robust && correct sql_*-functions.
	- added PApp::Application, the base class for each
          application.
        - removed the concept of nested modules (use nested packages). NYI.
        - added PApp::Util and PApp::Parser, moving lots of
          functions from PApp::Parser there.
        - changed config&mount-mechanism substantially. mounting
          is now done dynamically.
	- improved XHTML compliance.
	- xslt stylesheets can be specified using perl expressions.
        - more utf8-fixes (translation database + poedit is now in utf8, use
          i18n-upgradeutf8 to update your translation tables).
	- mount now properly anchors the url at the serverroot.
	- reloading works again.
	- workaround a perl bug with respect to weakrefs in PApp::I18n.
	- added PApp::XSLT.
	- Storable-0.7.2 is finally sufficient for PApp without any patches.
	- first round of stylesheet support inside papp.
	- renamed pappxml: namespace to simply papp:.
        - replaced phtml2perl by a more versatile function family (PApp::PCode).
        - simplified internal rep. of PApp::Callback::Function::'s.
	- new surl modifiers: SURL_PUSH/UNSHIFT/EXEC/SAVE_PREFS.
	- PApp::DataRef now fetches and stores the value, not a reference.
        - new PApp::DataRef::Scalar.
        - new functions if macro/editform (+ better docs).
        - MAJOR REWRITE OF THE INNER ENGINE:
          - nested submodules
          - embeddable applications
	- added editable comment and type forms to apps/dbedit.
        - PApp::Exception->as_string now wraps text better.
        - %S is now available within newuser and newsession callbacks.
        - added first try at an PApp::Log module.
        - papp now caches config information (and the app itself!)
          in the database (whew, room to improvement).
        - nfreeze is used everywhere except in the state database.
        - changed internal %state format, old states are no longer
          compatible.
        - nested modules are no longer allowed (to allow for further
          enhancements!)
        - fixed PApp::weaken.
        - backtrace now contains arguments.
        - wrote, uploaded and required Convert::Scalar module.
        - improved and fixed a lot of things in PApp::Exception.
        - PApp::SQL now tries to reconnect two times.

0.08  Sun Jun 18 23:53:50 CEST 2000
	- PApp now overwrites $SIG{__DIE__}, be careful!
	- PApp::Exception has a compatibility mode now.
        - fixed the preferences system to actually make *sense*.
        - fixed memory corruption bug in SQL.xs that happens
          because mod_perl BOOT:'s the same object twice :(
        - fixed documentation of PApp::I18n, PApp::FormBuffer.
        - PApp::Env and PApp::SQL should be more resistent to restarts.
        - removed gen-db.sql.
        - added PApp::DataRef.
        - added <description> tag to papp, maybe soon followed
          by <copyright> and <version>.
        - workaround for mod_perl or perl bug that causes the 'bool'ean
          value of error messages to be shown instead of their string
          value. Funny, might be the same bug as with Storable, but
          for totally different reasons ;)
        - DataRef'ied macro/editform and the apps that were using it.
        - PApp::SQL::*fetch methods call finish on the statement handle,
          as does sql_exec in void context.
        - load_prefs allows empty prefs settings and doesn't log you
          out if the preferences field is empty.
        - fixed PApp::Callback::create_callback.
        - added experimental preferences field for acedit.
        - surl now uses "use bytes" because otherwise.. strange things happen.
        - implemented ref-to-coderef special in PApp::XML.
        - _really_ commented out #?? in PApp/Parser.
        - added more compliation facilities to PApp::XML.
        - implemented "delayed" option which is handy for debugging
          (improves server restart speed at the expense of more memory).
        - DataRef/use base: worked around an overload bug in perl.
        - now flushing translation cache on childinit.
        - apps/poedit now allows finer-grained access rights "poedit_*" = all
          apps, "poedit_<app>" = application app etc...
        - various other small enhancements to apps/poedit, and i18n in general,
          much more to come!
        - added life-saving(!!!) index on papp.msgid.id, better execute
          "alter table papp.msgid add index (id(64))" on your existing
          installation(s).
        - fixed apps/dbedit error-reporting (what was it supposed to do?).
        - improved apps/acedit to also work on groups.

0.07  Fri Jun  9 22:14:36 CEST 2000
	- fixed dumb typoe in macro/util.papp :(
        - added PApp::Env module.
        - dbedit now assumes primary keys are strings that
          do not need quoting.
        - added PApp::Callback module.

0.06  Wed Jun  7 21:52:15 CEST 2000
	- poedit now uses the statedb.
        - admin now included poedit access right by default.
        - document PApp::Config rudimentarily.
        - PApp.pm makes use of PApp::Config now.
        - PApp::Config now by default uses a 256 bit key.
        - new env table for future "papp global environment".
        - added a LONG WIZARD EXAMPLE to PApp::XML's manpage.

0.05  Sat May 27 22:25:51 CEST 2000
	- added PApp::XML. Boring, but together with XML::XSLT it rocks!
	- implemented N_($).
        - addedd attrs to papp's macro element (specify subroutine
          attributes).
        - #endif and #else now allow whitespace on the same line
        - translate styel can be specified "plain" - full text,
          "code" - scan for __ substrings or "auto" for autodetect.

0.04  Thu May 11 03:24:07 CEST 2000
	- too many things to remember.
        - a first try at an installation script and a config mechanism.
        - PApp::I18n now uses it's own format. With the
          (not-yet-implemented) pre-sorting it should require less random
          accesses then gettext. Also supports binary formats (i.e. you
          could gettextize images) and allows tagging info to be added to
          the string.

0.03  ???

0.02  ???
	- added multipart-parsing functions.
        - added %arg hash, and "one-shot arguments" (see surl).
        - modularization: many modules were split off into their
          own packages, this package was divided into many modules.
          The goal is still far away.

0.01  Thu Jan 13 06:02:04 CET 2000
	- original version; created by cp -rp

