Migracja z DXPR Builder 1.x albo 2.x.

Learn DXPR BuilderStart hereVerhuizen vanaf een andere builder

DXPR Builder 3.x aktualizuje się w miejscu z każdego wydania 1.x albo 2.x. Composer podmienia kod, a drush updatedb uruchamia hooki aktualizacji w dxpr_builder.install, które konwertują konfigurację i treść. Ta strona wymienia, co robią te hooki, co zmieniło się dla własnego kodu i jak zweryfikować wynik. Daty wydań pochodzą z tagów git; zobacz Starsze wydania.

Historia wersji w skrócie

Seria Drupal Uwagi
7.x-1.x Drupal 7 Sprzedawany jako Glazed Builder, później przemianowany.
1.x (8.x-1.x) Drupal 8 i 9 Nazwa maszynowa modułu dxpr_builder od pierwszego wydania 1.x w maju 2020. Ostatnie wydanie 1.8.8.
2.x Drupal 9.3 do 11 CKEditor 5, wsparcie modułu Key, pierwsze funkcje AI. Ostatnie wydanie 2.8.1.
3.x Drupal 10.2 i 11 Tylko Bootstrap 5, wymagany moduł Key, migracje treści, generowanie stron i obrazów przez AI.

Nazwa maszynowa nie zmieniła się między 1.x a 3.x. Treść wciąż nosząca kod z ery Glazed musi zostać zmigrowana na 1.x albo 2.x przed aktualizacją; 3.x już nie przepisuje nazwy Glazed (zobacz poniżej).

Wymagania przed startem

  • Drupal 10.2 albo nowszy, albo Drupal 11 (core_version_requirement w dxpr_builder.info.yml).
  • Moduł Key. To twarda zależność w 3.x; dxpr_builder_update_9020() instaluje go, gdy drush updatedb stwierdzi jego brak.
  • Klucz produktu wydany dla DXPR Builder 2.0.0 albo nowszego. Klucze bez oświadczenia dxpr_tier są odrzucane przez formularz ustawień.
  • Motyw dostarczający Bootstrap 5 albo opcja sideload Bootstrap 5. Sideloadowanie Bootstrap 3 i 4 już nie istnieje.

Kroki migracji

  1. Zrób kopię zapasową bazy danych i plików:

    drush sql:dump --result-file=backup.sql
    
  2. Zaktualizuj kod Composerem. 3.x jest obecnie publikowane jako przedwydania, więc na nie zezwól:

    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies
    
  3. Uruchom hooki aktualizacji i zbuduj ponownie cache:

    drush updatedb
    drush cache:rebuild
    

    Kilka hooków 3.x przetwarza każdą wartość pola DXPR Builder partiami (zobacz poniżej). Na dużych witrynach trwają minuty, nie sekundy.

  4. Otwórz /admin/dxpr_studio/dxpr_builder/settings i sprawdź sekcję License. Po aktualizacji 9020 Storage method to Key module, a Key to DXPR Builder JWT (dxpr_builder_jwt).

  5. Sprawdź Sideload Bootstrap files na tej samej stronie. Witryny, które miały wybrany Bootstrap 3 albo 4, są teraz na Bootstrap 5.

  6. Otwórz /admin/dxpr_studio/dxpr_builder/ai_settings i zdecyduj, czy trzy przełączniki AI, domyślnie włączone, mają zostać włączone.

  7. Odwiedź strony używające DXPR Builder i potwierdź, że renderują się i edytują poprawnie.

Co robią hooki aktualizacji

Hooki o numerach 8005 do 8025 dostarczono w 1.x. Witryna 1.x uruchamia wszystko od 8026 wzwyż; witryna 2.8.0 albo 2.8.1 uruchamia 8040 i 9014 wzwyż. Nazwy funkcji to dxpr_builder_update_NNNN().

Dodane w 2.x (uruchamiane przy przyjściu z 1.x)

Hook Co robi
8026 Aktualizuje centralne przechowywanie użytkowników DXPR Builder.
8027 Dodaje blok informacji licencyjnych i kolumnę „DXPR Builder User” do widoku People.
8028 Tworzy tabelę dxpr_lock do blokowania treści.
8029 Dodaje blok licencji do panelu licencji użytkowników.
8030 Przełącza ustawienie Bootstrap po usunięciu opcji „Bootstrap 3 Light”.
8031 Włącza blok informacji licencyjnych tam, gdzie zainstalowano go wyłączony.
8032 Usuwa zablokowanych użytkowników z przechowywania licencji.
8033 Inicjuje drm_last_contact.
8034 Instaluje pole użytkownika dxpr_user_is_disavowed oraz akcje avow/disavow użytkowników.
8035 Inicjuje ustawienie hide_reminders.
8036 Migruje nazwy przycisków paska narzędzi CKEditor 4 w profilach do CKEditor 5.
8037 Dodaje domyślny styl obrazu dla szybko wczytujących się obrazów.
8038 Czyści cache, aby zarejestrować usługi integracji modułu Key.
8039 Naprawia style obrazów z niepełnymi ustawieniami image_scale_and_crop.
9007 Tworzy słowniki ai_tone_of_voice i ai_agent_commands z domyślnymi terminami.
9008 Ustawia ai_enabled na true i usuwa stary klucz ai_page_enabled.
9009 Przenosi drm_last_contact z konfiguracji do stanu.
9010 Czyści cache.
9011 Włącza przyciski AI Assistant i AI Tone of Voice w każdym profilu.
9012 Przywraca ai_page_enabled z domyślnym true.
9013 Ustawia domyślne filtrowanie wyjścia AI (ai_output_allowed_domains).
9015 Dodaje ai_image_enabled z domyślnym true.

Dodane w 3.x (uruchamiane przy przyjściu z 1.x albo 2.x)

Hook Co robi
8040 Normalizuje bootstrap do bs5; wartości 1 (Bootstrap 3) i bs4 są przepisywane.
9014 Partiami: konwertuje kod Owl Carousel w treści na karuzelę Bootstrap (src/Migration/OwlCarouselMigration.php).
9016 Dodaje ai_user_model_selection z domyślnym true.
9017 Partiami: konwertuje liczniki kołowe circliful na kod postępu Bootstrap (CircleCounterMigration.php).
9018 Partiami: konwertuje starszy kod pasków postępu na strukturę postępu Bootstrap (ProgressBarMigration.php).
9020 Instaluje moduł Key, przenosi json_web_token do encji Key dxpr_builder_jwt, ustawia api_key_storage na key i czyści wartość jawnym tekstem.
9021 Uzupełnia właściwość type szablonów użytkowników z ich kodu.
9022 Partiami: dodaje data-entity-type i data-entity-uuid do wewnętrznych linków /node/N (EntityLinkMigration.php).
9023 Partiami: naprawia format tekstu, zajawkę i usunięte delty, które aktualizacja 9022 zgubiła na polach text_with_summary.
9024 Partiami: wzbogaca aliasowane linki wewnętrzne tak samo jak 9022 (AliasLinkMigration.php).
9025 Czyści tone_of_voice_vocabulary, gdy wskazuje na słownik, który już nie istnieje.
9026 Czyści jawny tekst json_web_token pozostawiony w ustawieniach, gdy klucz mieszka w encji Key.

Nie ma aktualizacji 9019.

Migracje treści

3.x uruchamia migracje treści tylko partiami; nie ma już konwersji w czasie renderowania. Strona statusu migracji (/admin/dxpr_studio/dxpr_builder/migration-status) i raport statusu wymieniają oczekującą treść. Migrują ją powyższe hooki aktualizacji, a także akcje Run now i Run all pending migrations na tej stronie. Migracje to usługi oznaczone dxpr_builder.content_migration (dxpr_builder.services.yml). Partia zapisująca błędy nie jest oznaczana jako ukończona; nieudane elementy są logowane i pozostają oczekujące.

Przepisywanie ciągów glazed_to_dxpr stosowane przez 1.x i 2.x w czasie renderowania usunięto. Nazwę Glazed porzucono w 1.0.0 w maju 2020 i zakłada się, że cała treść z ery Glazed i Carbide została zmigrowana przez te wydania. Przepisywanie było zwykłym zastąpieniem ciągu. Na witrynach, których treść jedynie wspomina Glazed (artykuły wsparcia, linki dokumentacji), przepisywałoby prozę i psuło linki zamiast migrować kod. Witryny wciąż trzymające nazwy klas Glazed w zapisanej treści powinny najpierw uruchomić wydanie 2.x.

Zmiany dla własnego kodu

Formater pól

Id formatera pól to dxpr_builder_text (etykieta „DXPR Builder”, src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php), niezmienione od 1.x. Ma jedno ustawienie, profile, które jest puste dla domyślnego opartego na rolach albo id profilu. Sprawdź, czy każde pole kreatora wciąż używa tego formatera na swoim wyświetlaniu; naprawa aktualizacji 9023 ogranicza się do pól, które go używają.

Hooki

dxpr_builder.api.php dokumentuje hooki 3.x. Zmień nazwy hooków Glazed Builder następująco:

Hook Glazed Builder Hook DXPR Builder 3.x
hook_glazed_builder_classes() hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes)
hook_glazed_builder_buttons_folders() hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders)
hook_glazed_builder_elements_folders() Usunięte; brak hooka zastępczego.
brak hook_dxpr_builder_icon_sets_alter(array &$icon_sets), nowy. Zestawy ikon deklaruje się w plikach MODULE.dxpr_icon_sets.yml.

CSS i klasy narzędziowe

Własny CSS celujący w nazwy klas Glazed musi używać nazw DXPR, na przykład dxpr-theme-util, panel-dxpr i dxpr-builder. Klasy narzędziowe eksponowane w edytorze są dostarczane przez hook_dxpr_builder_classes_alter().

Konfiguracja i wdrażanie

  • Usuń json_web_token z każdej commitowanej konfiguracji; po aktualizacji 9020 klucz mieszka w encji Key dxpr_builder_jwt. Ten klucz używa providera Configuration, więc klucz jest wciąż eksportowany jako key.key.dxpr_builder_jwt. Przełącz go na provider File albo Environment na /admin/config/system/keys, aby trzymać go poza eksportami.
  • Eksporty konfiguracji zawierają teraz oba słowniki AI i ich terminy.
  • Profile eksportują nazwy przycisków CKEditor 5 w inline_buttons i modal_buttons.

Rozwiązywanie problemów

Jeśli treść nie wyświetla się poprawnie po aktualizacji:

  1. Uruchom drush cache:rebuild.
  2. Sprawdź /admin/reports/dblog pod kątem komunikatów z kanału dxpr_builder; migracje partiami logują pomijane elementy.
  3. Potwierdź, że wyświetlanie każdego pola kreatora wciąż używa formatera DXPR Builder.
  4. Potwierdź, że motyw wczytuje Bootstrap 5, albo włącz sideload na /admin/dxpr_studio/dxpr_builder/settings.

Strona ustawień ogólnych DXPR Builder po aktualizacji

Co dalej?