Dateimanager einbauen in Admin Modul (neue Variante)

Thema wurde von BigRib, 8. Oktober 2021 erstellt.

  1. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    Hallöchen Zusammen,

    ich versuche aktuell vergebens den Dateimanager in ein Modul im Adminbereich einzubauen.

    Ich habe es mit diesem Tutorial probiert, dass hat aber nicht funktioniert, da das JavaScript nicht eingebunden wird. Was genau muss ich meiner Klasse einbinden, damit dies funktioniert?

    https://developers.gambio.de/docs/4.5.1.0_beta1/jsdoc/module-Admin_Widgets_filemanager.html

    Es geht um dieses Modul: https://www.gambio.de/forum/threads/probleme-beim-erstellen-einen-moduls-neue-variante.47368/

    Vielen lieben Dank!
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.660
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @BigRib Was kommt denn in der Konsole für eine Fehlermeldung? Was hast du genau in deine HTML Datei eingefügt.
    Gib bitte mal ein paar mehr Infos, so aus dem Stehgreif kann man das nicht sagen
     
  3. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    Hi Till,

    da kommt leider keine Fehlermeldung in der Console, sonst hätte ich erst versucht mich daran lang zu hangeln.

    Stand jetzt habe ich nur folgendes in die template Datei eingefügt:

    Code:
    <div data-gx-widget="filemanager"
        data-filemanager-name="categories_icon"
        data-filemanager-type="images"
        data-filemanager-content-directory="images/categories/icons"
        data-filemanager-page-active="true">
    </div>
    Ich weiß aber noch von einem anderen Modul, dass ich für den ckeditior auch noch noch was einbinden musste. Ich vermutete stark, dass ich das hier auch brauche und habe folgendes eingebaut:

    Code:
    $assets = MainFactory::create('AssetCollection');
                    $assets->add(MainFactory::create('Asset', 'html/assets/javascript/engine/widgets/filemanager.js'));
    $template     = $this->render($pageTitle, $templatePath, $templateData, $assets);
    
    Nur weiß ich nicht, ob es hier noch zeitgemäß ist. Jetzt kommt folgende Fehlermeldung im Log:

    upload_2021-10-8_16-37-26.png
     
  4. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.660
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @BigRib Es gibt die einfache Methode eine Konfigurationsseite mit einem Dateimanager zu erstellen über die GXModule.json Datei, da musst du keine eigene Admin Seite basteln, das macht der Gambio Admin dann für dich anhand der JSON Datei, siehe dazu:
    (Link nur für registrierte Nutzer sichtbar.)
    (Link nur für registrierte Nutzer sichtbar.)

    Wenn du es etwas flexibler willst aber dennoch die Widgets nutzen willst, dann musst du den JSEngineController extenden

    SampleAction.php
    PHP:
    <?php

    namespace GXModules\SampleVendor\SampleModule\Admin\HttpActions;

    use 
    Gambio\Admin\Application\Http\Controller\JSEngineController;
    use 
    Gambio\Core\Application\Http\Response;
    use 
    Gambio\Core\Application\Http\Request;

    /**
    * Class SampleAction
    * @package GXModules/<Vendor>/<Module>
    */
    class SampleAction extends JSEngineController
    {
        
    /**
         * Parses a admin template and returns it as response.
         *
         * @return Response
         */
        
    public function handle(Request $requestResponse $response): Response
        
    {
            
    $pageTitle    "Sample";
            
    $templatePath '../GXModules/SampleVendor/SampleModule/Admin/Html/Sample.html';
            
    $templateData = [
                
    // key value pairs that are accessible in the template
                
    'greeting' => 'Hello World'
            
    ];
         
            
    $template     $this->render($pageTitle$templatePath$templateData);
         
            return 
    $response->write($template);
        }
     
        public function 
    save(Request $requestResponse $response): Response
        
    {
            
    $request->getParams();
            return 
    $this->handle($request,$response);
        }
    }
    routes.php
    PHP:
    <?php

    use Gambio\Core\Application\Routing\RouteCollector;
    use 
    GXModules\SampleVendor\SampleModule\Admin\HttpActions\SampleAction;

    return static function (
    RouteCollector $routeCollector) {
        
    $routeCollector->get('/admin/my-module'SampleAction::class.':handle');
        
    $routeCollector->post('/admin/my-module/save'SampleAction::class.':save');
        
    // ... similar for PUT, PATCH, DELETE and OPTION
    };
    Sample.html
    HTML:
    {extends file="layout.html"}
    
    {block name="content"}
    
    <div>{$greeting}</div>
    
    <div class="gx-container">
        <form id="myform" action="/admin/my-module/save" method="post">
    <div data-gx-widget="filemanager"
         data-filemanager-name="categories_icon"
    data-filemanager-type="images"
    data-filemanager-content-directory="images"
    data-filemanager-previous-file=""
    data-filemanager-page="responsive_filemanager"
    data-filemanager-page-active="true">
    </div>
        </form>
    </div>
    
    {/block}
    
    {block name="bottom_save_bar"}
    
    <input class="btn btn-primary" form="myform" type="submit">
    
    {/block}
     
  5. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    @Till (Gambio)

    Vielen Dank :) So funktionierts. Das Modul wird schon etwas aufwändiger.

    Falls es Dich interessiert was ich vor habe:

    Ich muss es irgendwie wieder hinbekommen, dass der Bilderupload für die Eigenschafften wieder einfacher wird. So wie es seit Version 4.1 ist, gebe ich lieber den Shop auf, als das ich so die Eigenschaften (Kollektionen) erstelle.

    Mein Vorhaben ist, dass ich über das Modul einen Artikel wähle, dann alle Bilder auf einmal hochlade und dann nur noch auf ein Knöpfchen drücken brauche, um für jedes Bild eine Kollektion automatisiert zu erstellen. Dabei wird der Kollektions- und Bildernamen automatisch vergeben. Die Kollektionen werden dann dem ausgewählten Artikel zugewiesen, so das bei der Erstellung der Eigenschaftkombinationen nur noch die Kollektionen angezeigt werden, die auch zu diesem Produkt gehören und noch keiner Eigenschaftkombination zugewiesen sind.

    Bei unseren Produkten ist es so, dass wenn eine Eigenschaft Kombination ausverkauft ist, dann wird die nicht mehr benötigt. Bei der nächsten Lieferung muss wieder alles neu fotografiert, gewogen und farblich eingeteilt werden.