Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: własny parser wiadomości vs gotowce
Forum PHP.pl > Forum > PHP
Aztech
W forach typu punBB, czy phpBB2 (oraz innych biggrin.gif) podczas pisania wiadomości pojawia się podczas dodawania postu panel, który umożliwia wstawianie pogrubień, linków, cytowań itp.

Pytania:
1) gdzie można w sieci znaleźć tego typu gotowce, które możnaby dołączyć do własnego forum, lub przerobić je na własne potrzeby, pod jakimi hasłami szukać tego typu elementów.
2) czy warto pisać taki własny moduł jeśli miałby on mieć następującą funkcjonalność (to funkcje najbardziej potrzebne, by nie zagłębiać się w szczegóły):
- podświetlać odpowiednio linki
- linkować obrazki
- możliwość podglądu
- wspomagać tworzenie testów (coś na kształt możliwości dodawania ankiet do wątków ale dużo bardziej rozbudowane)
czy istnieją takie rozwiązania, pod jakimi hasłami je szukać, a może istnieją już rozwiązania posiadające w/w funkcjonalność, które można podpasować pod własne potrzeby

Za wyrozumiałość i odpowiedz mogące mnie pokierować w dobrą stronę, z góry dzięki

[EDIT]
Czyli w skrócie, które kreatory BBCode polecacie winksmiley.jpg
Kayne
Osobiście polecam TinyMCe - szybka i bezproblemowa instalacja! (Kopiujesz pliki, fragment kodu i działa).
LBO
fckeditor
Aztech
Nie do końca chodziło mi o tego typu edytory. Powyższe edytory generują bezpośrednio kod HTML. bardziej chodziło mi o narzędzia, które dają działają w ten sposób (wcześniej nie napisałem tego wyraźnie - mój błąd)
- zapisują wiadomość w postaci BBCode, ale użytkownikowi wyświetlają ją od razu sformatowaną (tak jak to robi np TinyMCe)
- dają możliwość przekształcenia zapisanego BBCode do HTML-u (tak jak to robi: BBCode Script Generator)
Dlaczego? Jak już wspomniałem narzędzie ma również posłużyć do kontrukcji testów, kod wpisany przez uzytkownika wyglądałby nastepująco (tutaj podaję go w BBCode):
Kod
[questionbox type=multiselect] //oznacza że odpowiedzi może być kilka i możan wybierać kilka opcji
[question]Która z poniższych operacji jest możliwa[/question] //treść pytania
[answer] //lista odpowiedzi
[*][yes] 2 + 2 = 4 //piertwsza możliwość, odpowiedź jest poprawna
[*][no] 2 + 2 = 5 //itp
[*][yes] 2 + 2 = 2 * 2 /itd
[/answer]
[/questionbox]

Na podstawie tego program wygeneruje mi kod HTML widoczny dla użytkownika, ale w bazie zapisany wciąż w postaci BBCode
  1. <p>Która z poniższych operacji jest możliwa?</p>
  2. <input type="checkbox" name="question1" value="1">2 + 2 = 4<br>
  3. <input type="checkbox" name="question1" value="1">2 + 2 = 5<br>
  4. <input type="checkbox" name="question1" value="1">2 + 2 = 2 * 2<br>
  5. <input type="submit" name="accept" value="zatwierdź">
  6. <input type="submit" name="skip" value="pomiń">

W tak widocznym tekście użytkownik będzie mógł udzielić odpowiedzi, jego odpowiedzi sprawdzi odpowiedni skrypt, któy prawidłowe odpowiedzi właśnie będzie pobierał z zapisanego w bazie BBCode (patrz wklejony przeze mnie kod)

Z rozwiązań które znalazłem, a które odpowiadałyby moim wymaganiom i pozwalały na zbudowanie takiego testu to: http://www.christian-seiler.de/projekte/ph...e/index_en.html (Class that parses BBCodes for php)
Pozwala on na własne definiowanie reguł, zagłebień, co pozwalałoby na np nie wystepowanie znacznika [answer] poza [questionbox] itp. niestety w tym rozwiązaniu należałoby dobudować własny interfejs.

Jak myslicie, czy można w/w funkcjonalność uzyskać za pomocą pluginów w podanych przez was edytorach? Nigdy ich nie używałem a po przeczytaniu dokumentacji do TinyMCe nie mam pomysłu jak to zrobić. Jeśli się mylę, oświećcie i naprowadzcie na drogę i pomysł (póki co zaczynam się przekonywać do włąsnej klasy opartej na Class that parses BBCodes for php.

Zdrawim
Turgon
Proponowałbym własną klasę to według mnie niezbyt trudne ;] . Wystarczy trochę pokombinować z str_replace.
slash12345
str_replace nic tutaj nie da, ponieważ użytkownik może sobie wpisać:
Kod
[b]Pogrubiony tekst[/b]
i będzie o.k.
Ale jeśli nagle najdzie kogoś potrzeba wpisania:
Kod
[b]Pogrubiony tekst buhuuahahahhaaa

To cała reszta strony utonie w tłustych literach. Lepiej więc zainteresować się wyrażeniami regularnymi.
Aztech
Cytat(Turgon @ 11.07.2006, 17:14 ) *
Proponowałbym własną klasę to według mnie niezbyt trudne ;] . Wystarczy trochę pokombinować z str_replace.

Turgon i tutaj się mylisz i to bardzo, wyobraż sobie taką sytuację, gdy użytkownik przez przypadej nie zakończy jakiegos tagu albo zrobi to źle np:
Kod
[b] to jest mój pogrubiony tekst [i] który staje się pogrubioną italiką [/ii] a który teraz nie powinien nią być ale wciąż jest bo ktoś zamiast zamykającego znacznika z i dał z dwona ii[/b]

Przy zwykłym str_replace poprzez zapominalskich uzytkowników rozsypie ci się to jak domek z kart.
Jest wiele innych niuansów. Jak napisałem, system ma posłużyć do pisania testów i z zapisanego szablonu generować stronę HTML oraz służyć m.in. ma do zapisywania poprawnych odpowiedzi.
Jak widać z opisu musi być modułowy. Jak się można domyślać, test to nie tylko pytania jednokrotnego wyboru (wielokrotnego) ale również pytania które nakazują użytkownikowi wpisanie jakiejś wartości i porównania jej z odpowiedzia itp itd
Dwa to jak już pisałem, nie każdy znacznik może się znaleźć w każdym znaczniku, tak jak np masz w XHTML-u gdzie w li nie możesz umieszczać niektórych znaczników, bo są one ze względu na specyfikację zabronione.
Proszę czytaj o co ludzie się pytają a nie pisz dla samego pisania, które nic nie wnosi.
Jeśli uważasz, że to jednak da się zrobić na str_replace to chętnie zobaczę Twój pomysł.
Foxer
Oczywiście możnaby dodać również funkcjonalność dzięki której po wpisaniu wiadomości / posta z NIEdomkniętymi tagami np.:

Kod
[b]Często [i]zapominam domykać tagi...


i naciśnięciu klawisza wysłania wiadomości (Submit), nasz skrypt szybko go przeskanuje, sprawdzi które tagi zostały otworzone ale nie zostały zamknięte i doda do tekstu (na końcu wiadomości) wszelkie potrzebne zamknięcia czyli w tym przypadku:

Kod
[/i][/b]


Myślę, że to byłoby dość proste rozwiązanie.
Aztech
W prostych przypadkach może to i dobre rozwiazanie ale popatrz na to
Cytat(Foxer @ 11.07.2006, 22:23 ) *
Oczywiście możnaby dodać również funkcjonalność dzięki której po wpisaniu wiadomości / posta z NIEdomkniętymi tagami np.:

Kod
[b]Często [i]zapominam domykać tagi...


i naciśnięciu klawisza wysłania wiadomości (Submit), nasz skrypt szybko go przeskanuje, sprawdzi które tagi zostały otworzone ale nie zostały zamknięte i doda do tekstu (na końcu wiadomości) wszelkie potrzebne zamknięcia czyli w tym przypadku:
Kod
[/i][/b]


Myślę, że to byłoby dość proste rozwiązanie.


Porównaj z tym:

Cytat(Foxer @ 11.07.2006, 22:23 ) *
Oczywiście możnaby dodać również funkcjonalność dzięki której po wpisaniu wiadomości / posta z NIEdomkniętymi tagami np.:

Kod
[b]Często [i]zapominam domykać tagi...


i naciśnięciu klawisza wysłania wiadomości (Submit), nasz skrypt szybko go przeskanuje, sprawdzi które tagi zostały otworzone ale nie zostały zamknięte i doda do tekstu (na końcu wiadomości) wszelkie potrzebne zamknięcia czyli w tym przypadku:
Kod
[/i]


Myślę, że to byłoby dość proste rozwiązanie.
[/b]


I jest różnica? Jest smile.gif
Popatrz też na to. Przecież jeśli <p> będzie miało ustawione, że ma np padding-left: 100px a <li> tego nie będą miały to w 2 przypadku zostaną przesuniętę o te 100px; (chodzi mi o zasadę, że dodawanie na końcu zamykań tagów nie jest dobrą praktyką, bo uczy niestaranności w pisaniu testów)
  1. <p>jakiś tytuł</p>
  2. <ul>
  3. <li>coś tam</li>
  4. <li>coś tam 2</li>
  5. <li>coś tam 3</li>
  6. <li>coś tam 4</li>
  7. </ul>

  1. <p>jakiś tytuł
  2. <ul>
  3. <li>coś tam</li>
  4. <li>coś tam 2</li>
  5. <li>coś tam 3</li>
  6. <li>coś tam 4</li>
  7. </ul>
  8. </p>
strife
http://forum.php.pl/index.php?showtopic=13425
Przerób na swoje potrzeby, funkcja jest b. dobra smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.