Seite 2 von 2 ErsteErste 12
Ergebnis 41 bis 63 von 63

Thema: Isotope und Contao 5

  1. #41
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    das komplette Routing von Isotope muss umgebaut werden. Ich habe da schon etwas begonnen, wenn du das vorerst ignorieren kannst (einfach die Hooks auskommentieren) dann wär das vielleicht zielführender
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  2. #42
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard Haste\Units\Mass

    Warum enthält Haste 5 diese Klassen nicht mehr?

    Gibt es mittlerweile im Contao oder Isotope Core entsprechende features? (Wenn ja, bitte einen Tipp, wo ich die finden könnte).

    Oder ist es einfach deswegen:

    90% of the code was dropped because Haste predates the world of Composer. Now we have Packagist and acccess to a wonderful world of libraries that are way better, well tested and used by millions of projects.
    Geändert von Ernestopheles (29.10.2023 um 21:02 Uhr)

  3. #43
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ich denke Hintergrund war, dass nur Isotope diese Klassen genutzt hat. Und wir das entweder direkt in Isotope integrieren, oder noch besser ein öffentliches Paket finden dass sich um Gewichtsberechnung kümmert. Auf die Schnelle konnte ich nichts finden, vielleicht wäre es auch sinnvoll dieses Paket auszulagern. Vielleicht braucht ja jemand anderes mal eine Gewichtsberechnung. Allerdings müsste man den Code sicherlich modernisieren. Ist \Isotope\Units\Mass das einzige mit diesem Bezug?
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  4. #44
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    https://github.com/jordanbrauer/unit-converter wäre zum Beispiel eine Library. Getestet habe ich sie aber nicht.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  5. #45
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    https://github.com/jordanbrauer/unit-converter wäre zum Beispiel eine Library. Getestet habe ich sie aber nicht.
    Ja, die würde ja auch von Haste benannt. allerdings irritiert mich, dass in in github ein "not maintained" flag gesetzt ist .

  6. #46
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Multimedia UnitConverter service

    Habe nach weiterem Nachforschen auf das PHP Attribut verzichtet - das wird nicht benötigt. Die services.yaml und die Weight::createFromTimePeriod() korrigiert.

    Könnte das so stimmen und ist es ein sinniger Weg?




    Ich nehme den UnitConverter von jordanbrauer. Der soll Haste\Unit\Mass ersetzen (es werden nur Mass Units verwendet in Isotope).

    Bitte gebt mir ein Feedback, ob ich mit dieser Konstruktion richtig (und auf der Höhe der Zeit) liege:

    1. Die Weight Klasse (und das Interface Weighable) aus Haste ersetze ich durch eine Isotope Klasse (und Interface) gleichen Namens und wende DI an, um den UnitConverterProvider Service zu injecten:

    PHP-Code:
    <?php

    namespace Isotope;

    use 
    Contao\StringUtil;
    use 
    Isotope\Interfaces\IsotopeWeighable;
    use 
    Isotope\UnitConverterProvider;
    use 
    UnitConverter\UnitConverter;

    class 
    Weight implements IsotopeWeighable
    {
        protected 
    UnitConverterProvider $unitConverterProvider;
        protected 
    UnitConverter $unitConverter;

        protected 
    float $fltValue;
        protected 
    float $strUnit;

        public function 
    __construct($fltValue$strUnit)
        {
            
    $this->fltValue $fltValue;
            
    $this->strUnit = (string) $strUnit;
        }

        public function 
    getWeightValue()
        {
            return 
    $this->fltValue;
        }

        public function 
    getWeightUnit()
        {
            return 
    $this->strUnit;
        }

        
    /**
         * Create weight object from timePeriod widget value
         * @param   mixed $arrData
         * @return  Weight|null
         */
        
    public static function createFromTimePeriod($unitConverterProvider$arrData)
        {
            
    $unitConverter $unitConverterProvider->create();

            
    $arrData StringUtil::deserialize($arrData);

            if (
                empty(
    $arrData)
                || !
    is_array($arrData)
                || 
    $arrData['value'] === ''
                
    || $arrData['unit'] === ''
                
    || !in_array($arrData['unit'], $unitConverter->getRegistry()->listUnits('Mass'))
            ) {
                return 
    null;
            }

            return new static(
    $arrData['value'], $arrData['unit']);
        }
    }



    2. Services.yaml

    Code:
        isotope.unit_converter:
            class: UnitConverter\UnitConverter
            arguments:
                - '@isotope.unit_registry'
                - '@isotope.binary_calculator'
    
        isotope.unit_registry:
            class: UnitConverter\Registry\UnitRegistry
    
        isotope.binary_calculator:
            class: UnitConverter\Calculator\BinaryCalculator
    
        isotope.unit_converter_provider:
            class: Isotope\UnitConverterProvider


    4. Der UnitConverter ServiceProvider:

    PHP-Code:
    <?php

    declare(strict_types=1);

    namespace 
    Isotope;

    use 
    UnitConverter\Calculator\BinaryCalculator;
    use 
    UnitConverter\Calculator\CalculatorInterface;
    // use UnitConverter\Unit\Mass\Carat;
    // use UnitConverter\Unit\Mass\Grain;
    use UnitConverter\Unit\Mass\Gram;
    use 
    UnitConverter\Unit\Mass\Kilogram;
    // use UnitConverter\Unit\Mass\Metricton;
    use UnitConverter\Unit\Mass\Milligram;
    use 
    UnitConverter\Unit\Mass\Ounce;
    use 
    UnitConverter\Unit\Mass\Pound;
    use 
    UnitConverter\Unit\Mass\Stone;
    use 
    UnitConverter\Registry\UnitRegistry;
    use 
    UnitConverter\UnitConverter;

    class 
    UnitConverterProvider
    {
        public function 
    create(): UnitConverter
        
    {
            
    /**
             * @var CalculatorInterface $binaryCalculator
             */
            
    $binaryCalculator = new BinaryCalculator(52);
            
    // TODO: Set precision and rounding mode

            
    $units = [
                new 
    Milligram(),
                new 
    Gram(),
                new 
    Kilogram(),
                
    // new Metricton(),
                // new Carat(),
                
    new Ounce(),
                new 
    Pound(),
                new 
    Stone(),
                
    // new Grain(),
                // Add more units if needed
            
    ];

            
    $unitRegistry = new UnitRegistry($units);

            
    $unitConverter = new UnitConverter($unitRegistry$binaryCalculator);

            return 
    $unitConverter;
        }
    }
    (Die in Haste aber nicht in jordanbrauer vorhandenen Units muss ich noch implementieren)


    Das erstmal als Idee, um zu sehen, ob ich auf dem richtigen Dampfer bin.
    Geändert von Ernestopheles (04.11.2023 um 22:14 Uhr) Grund: Korrekturen, die sich aus weiterem Nachforschen ergaben

  7. #47
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard Habe korrigiert

    Habe den letzten Post bearbeitet, so könnte es gehen, oder?

  8. #48
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    brauchen wir eine eigene Weight-Klasse? Kann das nicht direkt an den entsprechenden Stellen angepasst werde? (ohne dass ich mir den Code im Detail angesehen hätte).
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  9. #49
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    brauchen wir eine eigene Weight-Klasse? Kann das nicht direkt an den entsprechenden Stellen angepasst werde? (ohne dass ich mir den Code im Detail angesehen hätte).
    PHP-Code:
        /**
         * Get the weight of the product (as object)
         *
         * @return Weight
         */
        
    public function getWeight() 
    Diese Methode aus Standard.php benötigt sie! Bisher wurde sie von Haste bereitgestellt. Ich ersetze sie nun durch eine eigene.

  10. #50
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard DI

    Ich kriege DI einfach nicht zum Laufen; bei Constructor Injection wird der Service nicht von Symfony übergeben.

    Nach "alter" Art geht es wohl:


    PHP-Code:
    <?php

    namespace Isotope;

    use 
    Contao\StringUtil;
    use 
    Contao\System;
    use 
    Isotope\Interfaces\IsotopeWeighable;
    use 
    UnitConverter\UnitConverter;

    class 
    Weight implements IsotopeWeighable
    {
        private static 
    UnitConverter $unitConverter;

        public function 
    __construct(
            private 
    float $fltValue,
            private 
    string $strUnit
        
    ) {
        }

        public function 
    getWeightValue()
        {
            return 
    $this->fltValue;
        }

        public function 
    getWeightUnit()
        {
            return 
    $this->strUnit;
        }

        
    /**
         * Create weight object from timePeriod widget value
         * @param   mixed $arrData
         * @return  Weight|null
         */
        
    public static function createFromTimePeriod($arrData)
        {
            
    $container System::getContainer();
            
    self::$unitConverter $container->get('isotope.unit_converter');

            
    $arrData StringUtil::deserialize($arrData);

            if (
                empty(
    $arrData)
                || !
    is_array($arrData)
                || 
    $arrData['value'] === ''
                
    || $arrData['unit'] === ''
                
    || !in_array($arrData['unit'], self::$unitConverter->getRegistry()->listUnits('Mass'))
            ) {
                return 
    null;
            }

            return new static(
    $arrData['value'], $arrData['unit']);
        }
    }

    services.yaml:
    PHP-Code:
        isotope.unit_converter:
            class: 
    UnitConverter\UnitConverter
            arguments
    :
                - 
    '@isotope.unit_registry'
                
    '@isotope.binary_calculator'
            
    public: true

        isotope
    .unit_registry:
            class: 
    UnitConverter\Registry\UnitRegistry
            arguments
    :
                - [
    '@unit.milligram''@unit.gram''@unit.kilogram''@unit.ounce''@unit.pound''@unit.stone']

        
    unit.milligram:
            class: 
    UnitConverter\Unit\Mass\Milligram
        unit
    .gram:
            class: 
    UnitConverter\Unit\Mass\Gram
        unit
    .kilogram:
            class: 
    UnitConverter\Unit\Mass\Kilogram
        unit
    .ounce:
            class: 
    UnitConverter\Unit\Mass\Ounce
        unit
    .pound:
            class: 
    UnitConverter\Unit\Mass\Pound
        unit
    .stone:
            class: 
    UnitConverter\Unit\Mass\Stone

        isotope
    .binary_calculator:
            class: 
    UnitConverter\Calculator\BinaryCalculator
            arguments
    :
                - 
    # Precision
                
    # PHP_ROUND_HALF_UP - Rounding mode

        
    Isotope\Weight:
            
    arguments:
                - 
    '@isotope.unit_converter'
            
    public: true 

    Unveränderte Methode in Standard.php:
    PHP-Code:
        /**
         * Get the weight of the product (as object)
         *
         * @return Weight
         */
        
    public function getWeight()
        {
            if (!isset(
    $this->arrData['shipping_weight'])) {
                return 
    null;
            }

            return 
    Weight::createFromTimePeriod($this->arrData['shipping_weight']);
        } 

    Eigentlich sollte beim Erzeugen eines Weight Objektes der UnitConverter service von Symfony übergeben werden, jedoch passiert das nicht:

    PHP-Code:
    class Weight implements IsotopeWeighable
    {
        public function 
    __construct(
            private 
    UnitConverter $unitConverter,
            private 
    float $fltValue,
            private 
    string $strUnit
        
    ) {
        }
    ...

    Hier wird der Service als expliziter Parameter erwartet:
    PHP-Code:
    new Weight(1"kg"


    Gehe auf PHP ^8.0 in der composer.json, ok?
    Geändert von Ernestopheles (06.11.2023 um 22:24 Uhr)

  11. #51
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard Entwurf, bitte prüfen

    Moin,

    habe Haste\Units in Isotope ersetzt durch jordanbrauer\unitconverter. Cypress tests (Regressionstest mit einfachen usecases anhand der Isotope Demo) erfolgreich. Vor weiteren Tests (PHPUnit), die ich noch schreiben werde, prüft bitte einmal, ob die Änderungen euren Vorstellungen entsprechen (damit ich keinen unnötigen Testaufwand treibe). Danke!

    https://github.com/isotope/core/pull/2501

  12. #52
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard Haste\Utils\Debug

    Haste hats nicht mehr drin, weil "obsolet"...

    Was heisst das jetzt für Isotope? Die Methode Debug::uncompressedFile() z.B. im CompatibilityHelper ergänzen oder ist die ganze Mimik nicht mehr benötigt?

    Was es macht: "Get uncompressed version (file path) of a file if debug is enabled " - fügt file gleichen Pfades/Namens - aber .min. durch . ersetzt - zum array hinzu, z.B. hier:

    PHP-Code:
      // Load Isotope JavaScript and style sheet
            
    if (CompatibilityHelper::isFrontend()) {
                
    $GLOBALS['TL_JAVASCRIPT'][] = Debug::uncompressedFile(
                    
    'system/modules/isotope/assets/js/isotope.min.js|static'
                
    );

                
    $GLOBALS['TL_CSS'][] = Debug::uncompressedFile(
                    
    'system/modules/isotope/assets/css/isotope.min.css|screen|static'
                
    ); 

  13. #53
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Uncompressed-Varianten sind aus meiner Sicht mittlerweile obsolet.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  14. #54
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard Was heisst das dann?

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Die Uncompressed-Varianten sind aus meiner Sicht mittlerweile obsolet.
    Aktuell werden die uncompressed Dateien als einfache Kopie (mit angepasstem Dateinamen) der compressed Dateien zum Array hinzugefügt.

    Verwendet werden sie z.B. in BackendTemplate.php:
    PHP-Code:
            // JavaScripts
            
    if (!empty($GLOBALS['TL_JAVASCRIPT']) && \is_array($GLOBALS['TL_JAVASCRIPT']))
            {
                
    $strJavaScripts '';

                foreach (
    array_unique($GLOBALS['TL_JAVASCRIPT']) as $javascript)
                {
                    
    $options StringUtil::resolveFlaggedUrl($javascript);
                    
    $strJavaScripts .= Template::generateScriptTag($this->addStaticUrlTo($javascript), $options->async$options->mtime);
                }

                
    $this->javascripts .= $strJavaScripts;
            } 

    Leider kenne ich die Hintergründe nicht und denke, bevor ich mich da umständlich einarbeite, wäre eine Aussage, wie zu verfahren ist, ganz gut.
    Geändert von Ernestopheles (14.11.2023 um 13:31 Uhr)

  15. #55
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard duplicate class name

    Contao: tl_user erbt von Contao\Backend

    Isotope: tl_user erbt von Isotope\Backend das von Contao\Backend erbt

  16. #56
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Meine Arbeit an diesem Projekt ruht und ich warte auf Antworten / Bearbeitung meiner PR

  17. #57
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Ernestopheles Beitrag anzeigen
    Contao: tl_user erbt von Contao\Backend

    Isotope: tl_user erbt von Isotope\Backend das von Contao\Backend erbt
    Ergänze ich halt einen namespace...

  18. #58
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von Ernestopheles Beitrag anzeigen
    Contao: tl_user erbt von Contao\Backend

    Isotope: tl_user erbt von Isotope\Backend das von Contao\Backend erbt
    Contao "Standard" ist, dass man dann die Klasse bspw. tl_user_isotope nennt. Siehe auch https://github.com/contao/contao/blo...ontent.php#L30 bspw.

    Best-practice wäre jedoch "echte" Klassen bzw. echte Eventlistener zu nutzen.
    » sponsor me via GitHub or PayPal or Revolut

  19. #59
    Contao-Fan Avatar von Ernestopheles
    Registriert seit
    25.10.2019.
    Ort
    Hamburg
    Beiträge
    293
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich beende meine Arbeit an der Umstellung von Isotope auf Contao5. Ein wenig wurde erreicht, hätte gerne noch mehr gemacht.

  20. #60
    Contao-Nutzer Avatar von sgei
    Registriert seit
    12.12.2011.
    Beiträge
    98

    Frage Wann ist Isotope mit Contao 5.3 kompatibel?

    Hallo,

    ich habe mal eine allgemeine Frage an die Isotope-Entwickler:

    Wird aktuell an der Kompatibilität zu Contao 5.3 gearbeitet?

    Ich würde neue Projekte gern mit der aktuellen LTS machen. Im Moment lässt sich Isotope aber unter Contao 5.3 nicht installieren.

    Vielen Dank.

    Steffen

  21. #61
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    @sgei

    Einer der Isotope-Entwickler hatte im Slack folgendes gesagt:
    Isotope ist nicht mit Contao 5 kompatibel und das wird vorerst so bleiben.
    Sollte es eine Isotope-Version für Contao 5 geben, wird diese ähnlich dem Notification-Center erst auf den komplett neuesten Stand der Dinge gebracht werden müssen.
    Wir reden hier von 14 Jahre altem Code, welcher immer wieder angepasst wurde (https://github.com/isotope/core/releases/tag/0.1.0).

    Wahrscheinlich würde eine komplette Finanzierung der 100+ Arbeitsstunden für eine Contao 5 kompatible Version den Prozess beschleunigen können.

  22. #62
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.752
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich kann dazu nur auf Github verweisen https://github.com/isotope/core/issues/2450
    Mit genügend Finanzierung z.B. als Mitglied im Isotop Circle oder einmaliges Sponsoring https://www.isotopeecommerce.org/de/circle.html kann das Vorhaben sicher beschleunigt werden.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  23. #63
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Ziel dürfte sein, mit Auslaufen von Contao 4(.13) im Februar 2026 ein neues Isotope zu haben - ist die Frage, ob da genügend vorab eingezahlt wird oder man das wie bei MM über ein "EAP" macht

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 3 (Registrierte Benutzer: 0, Gäste: 3)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •