
- Make small images (i) and (t) for info and toc.
- Improve xsl_transform/explode/pre-process.xsl which transforms
  a document before it is being exploded and imported.

- Make a Debian package. (Jeremy)

- Install a copy of DocBookWiki at a public webserver.

- Instead of generating the format html1 using custom xslt tranformers,
  try to customize the XSL DocBook transformers that are used by `xmlto`.
- Try to integrate DocBookWiki with RefDB (http://refdb.sourceforge.net/).
- Add support for OpenDocument (http://open.comsultia.com/docbook2odf/)
- Improve the generation of the other formats that is done by SGML tools.

- Make a new release of DocBookWiki.

- Add a section in docbookwiki_guide to explain the problem of
  upload_max_filesize and its solutions 
  (see http://www.radinks.com/upload/config.php)

Improvments:
------------

- Think about making DocBookWiki more easy to extend/customize.
  For example some important XSL files can be called through 
  a customization file.

- Think about adding table support in DocBookWiki.

- Think about using AJAX in DocBookWiki and in phpWebApp.
- Think about how to make the table of contents more dynamic, so that
  the chapters and sections can collapse and expand on click.

- Write some wizards, so that DocBookWiki can be
  installed/configured/maintained entirely from the web.

- Although the CVS was replaced by SVN, the functionality is 
  almost the same as before. However this functionality was
  designed having in mind the constraints imposed by the
  limitations of the CVS. Now that SVN is used and some of
  these limitations do not exist anymore, it may be possible to
  improve the functionality. However I have to think first
  what can be improved.

    + Is it possible to do copy/paste and cut/paste with the
      branches (a node and all its subnodes) of a document?
    + Currently, only an admin can change the structure of the
      book (add subnodes, delete nodes, change node id, change
      node order, etc.). Is it possible to allow a user that
      has edit or approve rights, to add subnodes, change node
      order, change node id etc.

- Try to implement the security of the application in SELinux.

- See whether the certificates (https) can be used for authenticating
  editors, admins, etc., instead of (username,password).

- Make UML Diagrams that document the design of the application.

- See whether makeinfo program can be used for the texi editing mode.
- Implement the edit mode latex.
- Add a wysiwyg editing mode.

//- Replace '_' by '-' in the names of files and ids.

 
Bugs to be fixed:
-----------------

- Generation of html1 has some problems with tags inside --code--
  (see for example DocBookWiki_Guide-->Edit Modes/HTML/Images/)
  The problem is with '<' and '>' inside CDATA. Maybe it can be
  solved by pre-processing and post-processing.

- In TextWiki mode:
  + there is a small bug with nested lists
  + the tag </xmp> inside --code is not displayed in html (because
    it is inside an <xmp> element); it should be written < /xmp> 
    or </ xmp>
  + the closing tag \</tagname\> has problems; it should be writen
    \</ tagname\> or \< /tagname\>

Done:
-----

- The wiki syntax for the images was [<filename<description]
  It was improved to include also the width, like this:
  [<file.png<200<alt - description] or [<file.png<<alt - description]

- Fixed: In approve, sometimes the difference lines were long and they
  made the buttons Commit and Revert to go out of view (out of
  window).

- Fixed: When a node is deleted, make sure first that it is not
  referenced by other sections, otherwise these sections will become
  invalid.

- In the approve interface, when commiting, a log (message) can be
  added as well.

- Fixed: When the title of a section is changed, it is not reflected in
  the public copy even after approval.

- Created the file ChangeLog.txt with all the modifications of the
  application since the beginning.

- The user that has approve rights can see a list of nodes that he can
  approve (the modified ones). Each admin should be able to see a list
  of the modified nodes that he can approve.

- Fixed and improved 'webnotes'.

- Generated the code documentation (with doxygen and phpDocumentor).

- Fixed: When a new book is added in the system, it is added in SVN
  as well. When a book is removed, it is removed from SVN as well.

- Improved: When a new book/article is imported in the system (from the
  admin web interface) it is also checked for validity.

- Improved: scripts in content/SVN/; importing a document in the system
  can take media files as a parameter as well (content/import.sh)

- Installation is done by the script 'install.sh'. Makefile is removed.

- The superuser interface 'Add a New Book' is improved to import
  media files as well.

- Added a help module, which can display in a popup window the section
  of a book.

- Updated docbookwiki_guide.

- Fixed: Book id and language attributes (@id and @lang) get lost 
  on explode/implode.

- The default book can be different from docbookwiki_guide.

- Improvment: Eliminated 'chown'.

  The program 'chown' (with the help of the scripts 'chown.sh' and
  'chown_norec.sh') was used for setting the ownership of some files to
  the data owner and the group to apache (the data owner is the shell
  user that installs and maintains docbookwiki). This was done so that
  docbookwiki could be managed both from the web interface and from the
  command-line (shell).

  Usually, when a file is modified from the web interface its
  ownership is set to apache. This would not allow the data owner to
  touch it (unless it is the root). To solve this, whenever a file (or
  directory) was modified, chown was called as well to set its ownership
  to the data owner and its group to apache, so that both of them could
  modify it.

  The problems with 'chown' were these:
  1. Due to some bugs that I couldn't fix 'chown' did not have a correct
     implementation. It would allow any php script to make writable any
     file in the system. This was a big security hole.
  2. It introduced some difficulties in the process of creating a debian
     package (it had to be compiled during installation etc.)
  3. It had to be called whenever something was modified or created, thus
     making the code of the application heavier and sometimes even not
     efficient.
  4. It was not sufficient to solve all the problems that it was supposed
     to solve, 'sudo' had to be used as well.

  'chown' was replaced by 'sudo'.

  The configuration of sudo is modified to allow apache to run any
  commands with the permissions of the data owner (let's say dbwiki),
  without a password. The config line "Defaults requiretty" is
  commented and this line is appended to '/etc/sudoers': 
    apache     ALL = (dbwiki) NOPASSWD: ALL
  Then, every modification that is done in the filesystem from the
  application code, is done by calling a shell command like this
  "sudo -u dbwiki $shell_command".
  As a result, all the files that belong to dbwiki can be modified
  by apache and after they are modified they still belong to dbwiki.
  So, the application content can be maintained both from the command
  line and from the web interface.

  This is simpler and cleaner than the solution with 'chown'. However,
  apache can do in the system anything that can be done by the user
  'dbwiki'; it can also modify the application files (besides the
  content files), and this may be a security problem (threatening
  the security and integrity of DocBookWiki, not the system).
  Maybe this can be solved by SELinux, allowing apache to be able to
  touch only the content files and not the application files.
  However I don't know yet how this can be done.

  Another solution (instead of 'sudo') could have been to make writable
  by everyone the files that need to be accessed by both the data owner
  and apache. This still may have some security problems and other
  problems as well.


- The books menu (the hierarchical menu on the left) is made optional.
  If the variable USE_MENU in books.conf is 'true', it is displayed.
  Otherwise, only a listbox of the books in the system is displayed.
  Further, if there is only one book in the system (besides 
  docbookwiki_guide), the list is not displayed at all.

- Added support for the tags <preface> and <appendix>.

- Separated the info page (<bookinfo> and <articleinfo>)
  from the table of contents.

- Fixed some upload bugs.

- When the title was changed, it was not shown in the diff (approve).

- Factorized the stylesheets of 'docbook/view/' (move them to the top
  directory 'css/').
