Open ScriptyChris opened 3 years ago
Stwórz nową podstronę na forum i przyjmuj kod/tytuł_strony jako parametr w urlu
A w jaki sposób kod/tytuł_strony pomoże odnieść się do konkretnego bloczka z konkretnego posta?
Kod - w sensie kod z bloczka, tak samo możesz przekazać jego id, jak i id posta
Czyli na forum ma być sobie serwowana jakaś podstrona z boilerplate'm bloczka i już podpiętym JS-em i CSS-em do jego obsługi, lecz dopiero uruchomienie/odwiedzenie tej podstrony z odpowiednim parametrem w URL-u - którym jest kod (zawartość) bloczka - ma ten boilerplate zapełniać wyświetlając bloczek w pełnej formie? Brzmi ciekawie, tylko obawiam się, że przy bloczkach z dużą ilością kodu, limit znaków w URL-u może zostać przekroczony. Byłbym bardziej za tym, żeby słać treść bloczka w payloadzie POST-a - ale to już raczej szczegóły implementacyjne.
Niemniej, podoba mi się rozwiązanie z window.open( ... )
ze względu na prostotę - brak konieczności dłubania w backendzie. Choć nie wiem, czy byłoby ono poprawne samo w sobie.
Poza tym, pojawiła się też propozycja - którą można potraktować zarówno jako inną formę realizacji tego ficzera, jak i dodatkową - żeby bloczek z kodem był przesuwalny na stronie. Wtedy, można czytać post i obok widzieć załączony do niego bloczek; albo pisać swój post i obok zerkać na bloczek.
Można zastosować dictionary encoder żeby znacząco zmniejszyć payload (czy to w get czy post)
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ępnySyntaxHighlighter
. 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 skryptuinit.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 skryptuinit.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ć.