WebMCP
WebMCP is web application framework written in Lua and C. Instead of using the classical Model-View-Controller (MVC) concept, WebMCP makes use of a so-called Model-View-Action concept. The database is accessed through the Model layer, which provides an Object-Relational Mapping (ORM). HTTP-GET requests are handled by Views, which process the request data, query the database, and render the result. HTTP-POST requests are handled by Actions, which can write to the database and redirect to a View, dependent on success or failure.
It is yet under development, so the API might change at any time. However all changes which break downward compatibility will be listed in future releases. WebMCP currently runs quite stable on several productive installations, but not all functions have been extensivly tested yet.
Documentation
Please read the Installation section of our Online Documentation for information about how to install the framework on your system.
Download
- webmcp-v1.2.5.tar.gz
- webmcp-v1.2.4.tar.gz
- webmcp-v1.2.3.tar.gz
- webmcp-v1.2.2.tar.gz
- webmcp-v1.2.1.tar.gz
- webmcp-v1.2.0.tar.gz
- webmcp-v1.1.3.tar.gz
- webmcp-v1.1.2.tar.gz
- webmcp-v1.1.1.tar.gz
- webmcp-v1.1.0.tar.gz
- webmcp-v1.0.9.tar.gz
- webmcp-v1.0.8.tar.gz
- webmcp-v1.0.7.tar.gz
- webmcp-v1.0.6.tar.gz
- webmcp-v1.0.5.tar.gz
- webmcp-v1.0.4.tar.gz
- webmcp-v1.0.3.tar.gz
- webmcp-v1.0.2.tar.gz
- webmcp-v1.0.1.tar.gz
- webmcp-v1.0.0.tar.gz
Dependencies
- The Programming Language Lua (Version 5.1)
- PostgreSQL Database Server
Changes
- 2012-10-15: Version 1.2.5
- URL parsing inside WebMCP to simplify webserver configuration (old style webserver configuration is still supported)
- Bugfixes in atom library
- Bugfix for :get_current() methods of date, time and timestamp (missing import of os functions)
- Bugfix in getters midnight and midday of date atom
- 2012-07-06: Version 1.2.4
- Disable trace system for non-cgi sessions to avoid memory leaks
- 2012-06-28: Version 1.2.3
- Anchor support in encode.url{...}, ui.link{...} and ui.paginate{...}
- New function ui.anchor{...}
- 2012-06-21: Version 1.2.2
- Allow particular records to be selected and/or disabled in ui.field.select{...}, even if they share the same key, and never select more than one record
- 2012-06-15: Version 1.2.1
- Removed wrongly included include/lib path for testing purposes from Makefile.options
- 2012-04-21: Version 1.2.0
- Compatibility with Lua 5.2, while keeping compatibility to Lua 5.1 as well
- Functions of "extos" library are now available via extos instead of os
- 2012-04-03: Version 1.1.3
- Bugfixes
- Allow creation of rows with DEFAULT VALUES in <db_object>:try_save() and <db_object>:save()
- Added return false statement to onclick event of action links with href="#"
- Bugfix regarding behaviour of <db_selector>:add_from(...) and <db_selector>:left_join(...) on first FROM entry
- Bugfix in net.send_mail(...) regarding envelope_from
- Bugfix in function encode.mime.mailbox_list_header_line(...), which caused arguments to be modified
- Added documentation
- Documentation for attr, a_attr and form_attr arguments to function ui.link{...}
- Features
- Support file upload via webforms
- Changed partialload_encodeFormData(...) to allow non-string objects implementing .toString()
- Bugfixes
- 2010-11-08: Version 1.1.2
- Changed default CFLAGS in Makefile.options
- Allow another script to include the webmcp.lua script when the current working directory is not the cgi-bin directory (the script needs to set a global WEBMCP_PATH variable)
- New functions
- trace.debug_traceback()
- execute.chunk{...}
- trace.debug_table(...)
- trace.disable() and trace.is_disabled()
- Support for disabled records in select widget
- Allow exceptions in slot.reset_all{...}
- Allow attributes of some <div>s to be set in cases, where it was not possible before
- Allow multiple arguments to trace.debug(...)
- Added method <db_selector>:add_with(...) to create queries WITH RECURSIVE
- Allow mondelefant.connect{...} to be called with an explicit "conninfo" string
- 2010-07-08: Version 1.1.1
- Changed quoting style in auth.openid.xrds_document…
- Fixed documentation for auth.openid.initiate…
- Added documentation for mondelefant
- Code-cleanup in mondelefant:
- removed unneccessary lines: rows = PQntuples(res); cols = PQnfields(res);
- avoided extra copy of first argument (self) in mondelefant_conn_query
- no rawget in meta-method __index of database result lists and objects
- removed unreachable return 0; in meta-method __newindex of database result lists and objects
- Make request.get_json_request_slots return nil, when running WebMCP shell (cgi is nil)
- Year in copyright notice changed to 2009-2010
- 2010-04-22: Version 1.1.0
- OpenID 2.0 Relying Party support
- 2010-03-25: Version 1.0.9
- New functions rocketcgi.set_cookie{...} and request.set_cookie{...} functions
- Added some missing inline documentation
- Make request.set_allowed_json_request_slots(...) work in interactive shell
- 2010-02-20: Version 1.0.8
- New function ui.filters{...}
- 2010-02-19: Version 1.0.7
- Bugfix in ui.paginate{...}: No negative offset when paginating empty result set (caused trouble in PostgreSQL 8.4)
- ui.script{...} rejects scripts containing the character sequence ]]> to avoid ambigiuities related to HTML vs XML parsing
- Partial content replacement using XMLHttpRequests
- Bugfix in CGI library: accept POST data content-types, which contain additional charset information
- Support arrays passed as params to encode.url (only for keys ending with "[]")
- Image support for ui.link
- 2010-01-22: Version 1.0.6
- Bugfix: class_prototype:add_reference{...} uses now qualified names in SQL queries to allow JOINs
- Fixes in the documentation of slot.put_into and trace.debug
- 2010-01-02: Version 1.0.5
- Changes in net.send_mail{...}
- Code cleanup
- A boolean success value is returned
- Changes in net.send_mail{...}
- 2009-12-25: Version 1.0.4
- ui.link{...} with POST target can now be parameterized with BOTH content and text to allow HTML content for JavaScript browsers and a text-only version for accessiblity
- Changes related to database selectors:
- Support for row-based locking
- New method :count(), caching and returning the number of rows, which WOULD have been returned by :exec()
- Bugfix: WHERE and HAVING expressions are now enclosed in parenthesis to avoid problems with operator precedence
- ui.script{...} now supports external .js files
- Changes in langtool.lua to cope with escaped new-line chars (\n)
- 2009-12-10: Version 1.0.3
- Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
- 2009-12-10: Version 1.0.2
- Fixed bug with explicit garbage collection (requests > 256kB caused an error)
- Views prefixed with an underscore can't be called externally
- ui.paginate now displays the last page, if the selected page number is too high.
- 2009-11-17: Version 1.0.1
- New feature: JSON requests
- Changes in ui.paginate: Current page setting is directly fetched from CGI params, instead of view params
- Changed behavior of load methods of atom library to accept nil as input
- Bugfixes in mondelefant_atom_connector timestamp(tz) loaders
- Added global constant _WEBMCP_VERSION containing a version string
- 2009-10-25: Version 1.0.0
