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

  • Affected 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.

    Requested URL
    GET /downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Referrer
    https://www.compiware-forum.de/downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Error Message
    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'
    Type
    wcf\system\database\exception\DatabaseQueryException
    File (Line)
    /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(…)
    Error Message
    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'file.subject' in 'order clause'
    Type
    PDOException
    File (Line)
    /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

    Edited 2 times, last by Darklord ().

  • Das wird nicht funktionieren.





    Gruß norse

    Zugang zu meinen Arbeiten und dem dazugehörigen Support bekommt Ihr bei Interesse hier.

  • 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.

    Requested URL
    GET /downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Referrer
    https://www.compiware-forum.de/downloads/?pageNo=1&sortField=subject&sortOrder=ASC
    Error Message
    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'
    Type
    wcf\system\database\exception\DatabaseQueryException
    File (Line)
    /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(…)
    Error Message
    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'file.title' in 'order clause'
    Type
    PDOException
    File (Line)
    /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

    Edited once, last by Darklord ().

    • Official Post

    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. :/

    • Official Post

    Nein, das wurde auch vorher nicht von uns unterstützt. Falls dies für deinen Anwendungsfall essentiell ist, bietet sich eine saubere und update-sichere Umsetzung über ein individuelles Plugin an.

  • 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. :/

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!