Skip to content

Dodanie możliwości otwarcia bloczka z kodem w nowym oknie #282

Open
@ScriptyChris

Description

@ScriptyChris

Padła propozycja, aby do bloczka dodać możliwość otwierania go w nowym oknie.

Teoretycznie taki ficzer wymaga backendu, żeby każdy bloczek miał swój unikalny URL tworzony na podstawie id posta, w którym znajduje się bloczek i numeru bloczka w tymże poście. Natomiast coś takiego da się też zrobić bez udziału backendu. Przetestowałem na szybko takie rozwiązanie (ogólnie działa) i o ile z podpięciem CSS-a nie było by problemu, to już podpięcie skryptu obsługującego ficzery bloczka jest problematyczne, gdyż /qa-plugin/ckeditor4/plugins/syntaxhighlight/init.js sprawdza, czy na stronie jest dostępny SyntaxHighlighter. W tym konkretnym przypadku nie ma jednak potrzeby samego kolorowania składni w bloczku, bo można pokazać jego wyjściową formę na podstawie sparsowanego kodu HTML bloczka wprost z konkretnego posta na forum. Problem natomiast leży w dość monolitycznym charakterze skryptu init.js, który uruchamia się w momencie ładowania strony i jest odpowiedzialny nie tylko za obsługę samego bloczka, ale też uprzednio koloruje składnię i normalizuje nieobsługiwane języki w bloczkach. Zatem, trzeba by najpierw wydzielić ze skryptu init.js część odpowiedzialną za samą obsługę już sparsowanych bloczków do osobnego pliku (optymalnie - modułu) i taki skrypt podpiąć do strony otwartej w nowym oknie oraz - oczywiście - na stronie tematu forum (to była by już refaktoryzacja obecnego kodu).

Nie wiem natomiast czy użycie window.open do tego ficzera jest dobrym pomysłem, ale wydaje mi się, że jest to prostszy sposób niż dodanie na backendzie obsługi generowania kodu HTML dla wybranego bloczka w konkretnym poście na podstawie metadanych i zwracanie URL'a, pod którym taki bloczek można pobrać.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions