Wie installiere ich Docman 1.3 RC2 unter Joomla 1.5 beta?

Schritt für Schritt:

  1. Download aus dem SVN Directory: http://joomlacode.org/gf/project/docman/scmsvn/ . Hier die Version 87 aus vom 2007-05-07. Befehl zum Download: svn checkout --username anonymous http://joomlacode.org/svn/docman
  2. Man packe das Verzeichnis docman/docman/trunk zu einem ZIP-Archiv zusammen und installiere dieses als Komponente in Joomla 1.5.
  3. Beim Installationsprozess tritt folgende Fehlermeldung in zweifacher Wiederholung auf:
    * JInstaller::install: SQL error. DB function failed with error number 1136
    Column count doesn't match value count at row 1
    SQL=INSERT INTO `mansorg_modules` VALUES ('', 'Latest docs', '', 2, 'dmcpanel', 0, '0000-00-00 00:00:00', 1, 'mod_docman_latest', 0, 99, 1, '', 2, 1)

    Das entsprechende SQL-Statement steht in docman/docman/trunk/docman.xml, außerdem weitere Statements die mit »INSERT INTO `#__modules`« beginnen und wohl auch korrigiert werden müssen. Das Problem: während DOCman davon ausgeht dass die Tabelle 15 Spalten hat sind es in Joomla 1.5 16 Spalten. In Mambo 4.5.2 / Joomla 1.0 sind die 15 Spalten in Reihenfolge:

    `id`
    `title`
    `content`
    `ordering`
    `position`
    `checked_out`
    `checked_out_time`
    `published`
    `module`
    `numnews`
    `access`
    `showtitle`
    `params`
    `iscore`
    `client_id`

    In Joomla 1.5 kommt als 16. Spalte am Ende “control” hinzu. Eine Lösung die für beide Versionen funktioniert ist, vollständige INSERT-Statements zu verwenden. Diese haben die Form:

    INSERT INTO `mansorgs_modules` (
      `id`, `title`, `content`, `ordering`, `position`, `checked_out`,
      `checked_out_time`, `published`, `module`, `numnews`, `access`,
      `showtitle`, `params`, `iscore`, `client_id`)
    VALUES ([...]);

    Also muss man die oben gezeigte Klammer mit den 15 Spaltennamen in alle »INSERT INTO `#__modules`« Statements in docman/docman/trunk/docman.xml einfügen.

  4. Die Installation gelingt jetzt. Greift man dann aber auf den Menüpunkt »DOCMan -> Home« zu so erscheint die Fehlermeldung »fatal error: Call to a member function getCfg() on a non-object in [...]/administrator/components/com_docman/includes/docman.html.php on line 76«. Ein »grep -r -n -C 1 "$_DOCMAN" * | less« in docman/docman/trunk zeigt wo das betreffende »non-object« angelegt wird:
    admin.docman.php:20:$_DOCMAN = new dmMainFrame(_DM_TYPE_ADMIN);

    Das Problem liegt genau dort: man füge in der Zeile davor ein »global $_DOCMAN;«. Denn sonst ist $_DOCMAN keine globale Variable, wird doch admin.docman.php von Joomla innerhalb (!) einer Funktion inkludiert. Damit ist dann $_DOCMAN nur auf derselben Quellcodeebene erreichbar: es ist eine lokale Variable einer Funktion die in weiteren inkludierten Dateien sichtbar ist, aber nicht in darin definierten Funktionen selbst wenn diese »global $_DOCMAN« einsetzen.

  5. Der GET-Parameter »section« wird noch nicht korrekt beachtet. Es fehlt: in der Datei admin.docman.php im Abschnitt »// retrieve some expected url (or form) arguments« die Zeile »$section = mosGetParam($_REQUEST, 'section', '0');«.
  6. Die Toolbar im Backend wird nicht dargestellt. Es fehlt: »global $section;« vor
    »$section = mosGetParam($_REQUEST, 'section', '0');« in admin.docman.php. Grund wie bei $_DOCMAN. Leider wird die Toolbar so noch ganz zu Beginn der Seite dargestellt.
  7. Problem im Frontend:
    Fatal error: Call to a member function getCfg() on a non-object
    in [...]/administrator/components/com_docman/classes/DOCMAN_user.class.php
    on line 269

    Behebung: man füge in com_docman/docman.php ein »global $_DOCMAN;« und »global $_DMUSER;«.

  8. Problem im Frontend:
    Catchable fatal error: Object of class Savant2_Error
    could not be converted to string
    in [...]/components/com_docman/themes/default/templates/page_docbrowse.tpl.php
    on line 45

    Behebung: in administrator/components/com_docman/classes/DOCMAN_theme.class.php füge man vor der ersten Verwendung von $savant_path ein:

    global $savant_path; // Joomla includes this code within a function, so first use of $savant_path
    // makes it a local variable if we do not declare it global here
  9. Problem im Frontend: ein veralteter Wert des Itemid-Parameters wird als GET-Parameter verwendet
  10. Problem im Frontend: Icons werden nicht dargestellt, vermutlich ein Problem mit Pfaden das aus fehlender global-Deklaration einer Datei-globalen Variable basiert.

Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.