Filebase: Dateien wieder nach Namen sortierbar machen? Seit 5.3 nicht mehr möglich.

  • Betroffene Version
    WoltLab Suite 5.3

    Ich habe heute das Upgrade auf das WSC 5.3 und damit auch auf die Filebase 5.3 vorgenommen. Bis heute war es mir möglich, per Template- und Dateiänderung eine Sortierung nach "Name" des Downloads zu ermöglichen, die direkt auch als Standard definiert war.

    Im Template fileList.tpl habe ich das als Zeile 116 hinzugefügt.

    Smarty: fileList.tpl
    <li{if $sortField == 'subject'} class="active"{/if}><a href="{link application='filebase' controller=$controllerName object=$controllerObject}pageNo={@$pageNo}&sortField=subject&sortOrder=ASC{@$additionalLinkParameters}{/link}">{lang}wcf.global.name{/lang}</a></li>

    Damit erhalte ich zwar die Spalte "Name", aber sobald ich danach sortieren möchte, passiert nichts.

    Weiterhin habe ich bisher immer die PHP-Datei FileListPage.class.php wie folgt angepasst.

    PHP: FileListPage.class.php
        /**
         * @inheritDoc
         */
        public $defaultSortField = 'subject';
        
        /**
         * @inheritDoc
         */
        public $defaultSortOrder = 'ASC';

    Tue ich das nun und tausche die Datei auf dem Server aus, erhalte ich diesen Fehler, sobald ich mir die Downloads anschauen möchte.

    Aufgerufene URL
    GET /downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Referrer
    https://www.compiware-forum.de/downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    WoltLab Suite
    5.3.1
    PHP
    7.2.34-8+ubuntu18.04.1+deb.sury.org+1
    Fehlermeldung
    Could not prepare statement 'SELECT file.fileID AS objectID FROM filebase1_file file WHERE file.categoryID IN (?,?,?,?,?,?) ORDER BY file.subject ASC, file.fileID ASC LIMIT 14'
    Art
    wcf\system\database\exception\DatabaseQueryException
    Datei (Zeile)
    /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (284)
    Stacktrace
    1. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/data/DatabaseObjectList.class.php (164): wcf\system\database\Database->prepareStatement(…)
    2. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/data/file/AccessibleFileList.class.php (45): wcf\data\DatabaseObjectList->readObjectIDs(…)
    3. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (163): filebase\data\file\AccessibleFileList->readObjects(…)
    4. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (220): wcf\page\MultipleLinkPage->readObjects(…)
    5. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (131): filebase\page\FileListPage->readObjects(…)
    6. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/SortablePage.class.php (52): wcf\page\MultipleLinkPage->readData(…)
    7. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (194): wcf\page\SortablePage->readData(…)
    8. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (291): filebase\page\FileListPage->readData(…)
    9. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    10. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    11. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    12. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/index.php (9): wcf\system\request\RequestHandler->handle(…)
    Fehlermeldung
    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'file.subject' in 'order clause'
    Art
    PDOException
    Datei (Zeile)
    /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (279)
    Stacktrace
    1. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (279): PDO->prepare(…)
    2. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/data/DatabaseObjectList.class.php (164): wcf\system\database\Database->prepareStatement(…)
    3. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/data/file/AccessibleFileList.class.php (45): wcf\data\DatabaseObjectList->readObjectIDs(…)
    4. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (163): filebase\data\file\AccessibleFileList->readObjects(…)
    5. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (220): wcf\page\MultipleLinkPage->readObjects(…)
    6. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (131): filebase\page\FileListPage->readObjects(…)
    7. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/SortablePage.class.php (52): wcf\page\MultipleLinkPage->readData(…)
    8. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (194): wcf\page\SortablePage->readData(…)
    9. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (291): filebase\page\FileListPage->readData(…)
    10. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    11. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    12. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    13. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/index.php (9): wcf\system\request\RequestHandler->handle(…)

    Schaue ich mir die PHP-Datei in Zeile 50 an, scheint es das Feld "subject" nun wohl nicht mehr zu geben. Es wird mir dort jedenfalls nicht als Sortiermöglichkeit angeboten.

    PHP: FileListPage.class.php
    public $validSortFields = ['username', 'time', 'lastChangeTime', 'downloads', 'cumulativeLikes', 'comments', 'purchases', 'totalRevenue'];

    Gibt es seit Version 5.3 dieses Feld tatsächlich nicht mehr, sodass ich dieses nicht mehr für eine Sortierung nutzen kann? Wie bekomme ich eine Sortierung nach "Name" des Downloads wieder hin?

  • Hi Pooomukkel,

    probier es mal statt mit subject mit title

    Dein Template anpassen zu

    Smarty: fileList.tpl
    <li{if $sortField == 'title'} class="active"{/if}><a href="{link application='filebase' controller=$controllerName object=$controllerObject}pageNo={@$pageNo}&sortField=title&sortOrder=ASC{@$additionalLinkParameters}{/link}">{lang}wcf.global.name{/lang}</a></li>


    Code: FileListPage.class.php
     /**
         * @inheritDoc
         */
        public $defaultSortField = 'time';
        
        /**
         * @inheritDoc
         */
        public $defaultSortOrder = 'ASC';
    Code: FileListPage.class.php
    public $validSortFields = ['username', 'title', 'time', 'lastChangeTime', 'downloads', 'cumulativeLikes', 'comments', 'purchases', 'totalRevenue'];

    Hab es jetzt nicht getestet. ;)

    Greetz

    Dark

    Mit dem Ende naht der Anfang mit etwas Neuen, um dann wieder zu sagen „Nach dem Update ist vor dem Update“. :S

    2 Mal editiert, zuletzt von Darklord (4. Januar 2021 um 23:14)

  • Das wird nicht funktionieren.

    Als Standard Einstellung nicht, das ist richtig, aber beim Auswählen nach Namen sortieren, ja. Zumindest was ich jetzt eben in den letzten 5 Min getestet habe.

    Muss sicherlich noch einiges mehr angepasst werden, was es als Fix uninteressant machen würde.

    Nach Namen

    Greetz

    Dark

    Mit dem Ende naht der Anfang mit etwas Neuen, um dann wieder zu sagen „Nach dem Update ist vor dem Update“. :S

  • Dein Template anpassen zu

    Ich habe mal nur das probiert und lande beim selben Ergebnis, wie ich es vorher hatte. "Name" wird zwar als Option zum Sortieren angeboten, aber sortiert wird nicht so wirklich... :/

    Ändere ich dazu dann noch die PHP-Datei, erscheint die Fehlermeldung.

    Aufgerufene URL
    GET /downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Referrer
    https://www.compiware-forum.de/downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    WoltLab Suite
    5.3.1
    PHP
    7.2.34-8+ubuntu18.04.1+deb.sury.org+1
    Fehlermeldung
    Could not prepare statement 'SELECT file.fileID AS objectID FROM filebase1_file file WHERE file.categoryID IN (?,?,?,?,?,?) ORDER BY file.title ASC, file.fileID ASC LIMIT 14'
    Art
    wcf\system\database\exception\DatabaseQueryException
    Datei (Zeile)
    /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (284)
    Stacktrace
    1. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/data/DatabaseObjectList.class.php (164): wcf\system\database\Database->prepareStatement(…)
    2. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/data/file/AccessibleFileList.class.php (45): wcf\data\DatabaseObjectList->readObjectIDs(…)
    3. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (163): filebase\data\file\AccessibleFileList->readObjects(…)
    4. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (220): wcf\page\MultipleLinkPage->readObjects(…)
    5. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (131): filebase\page\FileListPage->readObjects(…)
    6. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/SortablePage.class.php (52): wcf\page\MultipleLinkPage->readData(…)
    7. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (194): wcf\page\SortablePage->readData(…)
    8. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (291): filebase\page\FileListPage->readData(…)
    9. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    10. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    11. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    12. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/index.php (9): wcf\system\request\RequestHandler->handle(…)
    Fehlermeldung
    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'file.title' in 'order clause'
    Art
    PDOException
    Datei (Zeile)
    /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (279)
    Stacktrace
    1. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/database/Database.class.php (279): PDO->prepare(…)
    2. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/data/DatabaseObjectList.class.php (164): wcf\system\database\Database->prepareStatement(…)
    3. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/data/file/AccessibleFileList.class.php (45): wcf\data\DatabaseObjectList->readObjectIDs(…)
    4. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (163): filebase\data\file\AccessibleFileList->readObjects(…)
    5. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (220): wcf\page\MultipleLinkPage->readObjects(…)
    6. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/MultipleLinkPage.class.php (131): filebase\page\FileListPage->readObjects(…)
    7. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/SortablePage.class.php (52): wcf\page\MultipleLinkPage->readData(…)
    8. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/lib/page/FileListPage.class.php (194): wcf\page\SortablePage->readData(…)
    9. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (291): filebase\page\FileListPage->readData(…)
    10. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    11. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    12. /var/www/compiware-forum.de/htdocs/compiware-forum.de/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    13. /var/www/compiware-forum.de/htdocs/compiware-forum.de/downloads/index.php (9): wcf\system\request\RequestHandler->handle(…)

    Allerdings hatte ich in der PHP-Datei als Default "title" ausgewählt, was ich ja auch gern möchte. :(

    Übrigens haben sich die Benutzer bei mir schon gemeldet, weil sie die Downloads nun nicht mehr nach "Name" sortieren können. :(

  • Das Template allein bringt auch keine Wirkung.

    Denke aber, das hier zu vieles angepasst werden müsste.

    Greetz

    Dark

    Mit dem Ende naht der Anfang mit etwas Neuen, um dann wieder zu sagen „Nach dem Update ist vor dem Update“. :S

    Einmal editiert, zuletzt von Darklord (4. Januar 2021 um 23:17)

    • Offizieller Beitrag

    Das ist so nicht möglich, die Inhalte von Dateien werden seit 5.3 in filebaseN_file_content gespeichert, analog zum Artikel-System. Es handelt sich dabei um eine 1:n-Zuordnung mit den jeweiligen Sprachversionen bzw. languageID = null bei deaktivierter Mehrsprachigkeit.

  • Ich verstehe leider nur Bahnhof... :(

    Meine Benutzer und ich hätten nur gern wieder die Möglichkeit zurück, die Downloads nach "Namen" sortieren zu lassen. Wie kann ich das wieder umsetzen?

    Ich weiß, dass ich damals dazu mal einen Wunsch geäußert hatte. Oder ich hatte mich an einen Wunsch angehangen. Leider finde ich diesen Wunsch nicht mehr. Er wurde leider abgelehnt und deshalb half mir jemand mit dem Workaround, der über Jahre hinweg funktionierte. :/

  • Schade... Da benutzt man etwas Jahre lang und dann ist es weg. :(

    Da diese Funktion für mein Projekt wichtig ist, werde ich jemanden suchen, der mir ein Plugin bastelt. Falls ich niemanden finde, muss ich mir wohl die Alternative(n) genauer anschauen. :/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!