Web Oriented Object Framework

APN 20161127 Woof! 0.5b4 has been released. Bug fixes only.

  1. Programming Guide: [L1 ]
  2. Reference Manual: [L2 ]
  3. SourceForge project: [L3 ]

What it is

A Web framework for lazy dogs! Woof! is an open-source, platform and server-independent web application framework. It is intended to be simple to understand and customize, easy to install and deploy, and embeddable into other applications.

  • Platform and web server agnostic (Apache, IIS and Lighttpd tested)
  • Templates with configurable layouts, inheritance and pluggable engines
  • Support for responsive web design
  • Skinnable with Pure CSS skin builder
  • Web support libraries for controls, session and cookie handling etc.
  • Flexible routing with URL generation
  • Localization support with inheritance
  • Built-in web server for development
  • Scaffolding tool
  • Documentation generator
  • Interactive debugging console
  • Comprehensive documentation (well, getting there :-)

Woof! includes the Ruff! documentation generator.

Not to be confused with Woof, used to build a Puppy Linux distribution: http://puppylinux.org/wikka/Woof

MSA I am trying woof! with xampp for Windows... It seems there is a misprint in online manual. Apache httpd.conf (or .htaccess) must have string

   RewriteRule ^(.*)$ cgi_server.tcl/$1 [QSA,L]

instead of

   RewriteRule ^(.*)$ cgi_server.tcl [QSA,L] or RewriteRule ^(.*)$ cgi_server.tcl$1 [QSA,L]

APN I will take a look when I get a chance but I think the rewrite rule might depend on whether the application URL root is / or something below /. What error did you get with the configuration as documented ?

MSA For SharedCGI (first) I viewed only first page. Links didn't work. For dedicated CGI (second) I got error

    Application error
    Woof application failed to start properly

In apache log I found

     [error] [client] Request exceeded the limit of 10 internal redirects due to probable configuration
     error.    Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

AEC I have been working on an app using bowwow/woof. I have most of the app working as I wish. I would like to add a function which requires file upload. My results seem to suggest that wibble or woof don't handle enctype='multipart/form-data' correctly. Is this correct?

AMG: At the moment this is true, although I am working on adding this feature to Wibble. For the last few weeks I haven't had time to touch Wibble, and the next few weeks aren't looking good either. But I promise that I do have lots of code already completed that take Wibble in the direction of supporting file uploads.

CMcC notes, en passant, that Wub has a Woof domain, and Wub does support multipart/form-data (thoroughly and properly.)

AEC It appears the Woof domain supplied with Wub is based on an older version of Woof. According to the installation script for the new version of Woof, it is no longer compatible with Wub. Also when I go to the documentation for Woof, there isn't any documentation for using Woof with tclhttpd or Wub. It seems one should want to maintain Woof's compatibility with its Tcl siblings.

APN Regarding Woof compatibility with Wub, the incompatibility is only because they are both under development (well Woof is dormant while I work on TWAPI) and have not "synced" up again. The other reason for not stressing Woof working with tclhttpd or Wub is that the primary reason for Woof's existence is having a Tcl based framework that can be used with multiple web servers. If you already have a Tcl based webserver like Wub or tclhttpd which include application frameworks, why would you want to use Woof? I would imagine that subset of people being very small, hence did not bother testing the latest Woof/Wub combination. Limited number of hours in the day and all that.

APN Regarding the original question about file uploads, that is near the top of the list to do when I get back to working on Woof. Woof relies on the webserver to do query and forms processing. When the webserver does not directly implement it, Woof uses ncgi from tcllib. I believe that does have multipart/form-data but will have to go back and check. In any case, it is not properly integrated into the rest of Woof as yet.

If this is really important to you, I can take a look at getting in working this weekend. Let me know your webserver of choice and how large the files are likely to be. With Wub, I would probably have to just get the interface reworked a bit. In other cases, I would need to possibly do the parsing myself.

AEC Bowwow is enough for my current needs. Ncgi, in fact, does do multipart forms. I have another application which I wrote using an earlier version of bowwow (0.1) which did file uploads using ncgi. That code doesn't work with the bowwow 0.4. I will be uploading excel files. They may be 60k, possibly larger in size.

APN Woof 0.4 (obsolete) note: Tcl 8.6 safe interpreters have introduced an incompatibility with respect to earlier Tcl releases in how safe interpreters expose file ensemble commands. This causes woof 0.4 to break with a package load error. To fix this, please get the latest version of the file master.tcl from http://woof.hg.sourceforge.net/hgweb/woof/woof/file/4535cfcaa827/lib/woof/master.tcl and replace the one in the lib/woof subdirectory.