Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przełączanie edytorów - implementacja w PHP
Forum PHP.pl > Forum > PHP
WebCM
Edytory w JavaScript bardzo ułatwiają edycję treści. Dawno, dawno temu napisałem standardowy edytor, który pomaga wstawiać znaczniki HTML/BBCode, emotki i znaki specjalne. Nie wszystkim to pasuje. Chcę zintegrować WYSIWYG.

Zadanie: uaktywnić edytor standardowy ALBO graficzny na podstawie ustawień
Problem: co ma mieć wpływ na to, który edytor załadować?

Jest kilka rozwiązań:

1. Zależy tylko od ustawień głównych:
  1. if(isset($cfg['enable_wysiwyg']))
  2. {
  3. /* load wysiwyg */
  4. }
  5. else
  6. {
  7. /* load standard */
  8. }

Zalety: brak dodatkowych zależności
Wady: admin narzuca ustawienie wszystkim redaktorom (nie wszyscy lubią WYSIWYG i na odwrót)

2. Zależy od uprawnień użytkownika (funkcja admit sprawdza uprawnienia proste):
  1. if( admit( 'WYSIWYG') )
  2. {
  3. /* load wysiwyg */
  4. }
  5. else
  6. {
  7. /* load standard */
  8. }

Zalety: każdemu można włączyć lub wyłączyć wysiwyg z poziomu panelu admina
Wady: redaktor nie może sam sobie go włączyć, mogą wystąpić komplikacje (czytaj dalej)

3. Zależy zarówno od ustawień i od uprawnień:

3a. Relacja AND, czyli TO i TO:
  1. if( isset($cfg['enable_wysiwyg']) && admit('WYSIWYG') )
Czyli włączamy wysiwyg tylko wtedy, gdy opcja "uaktywnij wysiwyg" w ustawieniach jest włączona ORAZ nadamy wybranym redaktorom uprawnienie, że mogą z tego edytora korzystać.

3b. Relacja OR, czyli TO albo TO:
  1. if( isset($cfg['enable_wysiwyg']) || admit('WYSIWYG') )
Możemy nadać tylko wybranym redaktorom uprawnienie, że może używać edytora WYSIWYG. Jeżeli jednak uaktywnimy opcję "włącz edytor wysiwyg wszystkim" w ustawieniach, edytor włączy się u wszystkich (niezależnie od uprawnień).

Zalety: większa kontrola nad uaktywnianiem edytora (można włączyć lub wyłączyć wszystkim na raz)
Wady: jak w punkcie 2, więcej zależności (ktoś może się pogubić)

4. Redaktor sam może uaktywnić edytor WYSIWYG w profilu:
  1. if( isset($cfg['enable_wysiwyg']) && $user['opt'] & 16 )

Zalety: redaktor ma wolną wolę
Wady: praktycznie brak możliwości zablokowania dostępu do edytora wybranym osobom

5. Redaktor może przełączyć się za pomocą przycisku w edytorze

Zalety: redaktor przełącza się, gdy chce
Wady: nie wiem, czy to takie praktyczne, poza tym może coś się posypać przy przełączaniu

Która z powyższych opcji jest najlepsza i dlaczego?

Próbowałem zastosować 3b. O ile sposób działa bardzo dobrze dla rangi "redaktor", nie działa dla rangi "super admin", bo funkcja admit() wtedy zwraca zawsze TRUE. Sprawdźmy to w praktyce:
  1. // (FALSE lub TRUE) i TRUE
  2. if(isset($cfg['enable_wysiwyg']) || admit('WYSIWYG') and is_dir('editor'))
  3. {
  4. $output->addScript('editor/loader.js');
  5. }
  6. else
  7. {
  8. $output->addScript('lib/editor.js');
  9. }
Widać? Musiałbym zmieniać zasadę działania uprawnień. Łatwiej wybrać inny sposób wyboru edytora.
CuteOne
A nie lepiej stworzyć tabele z zapisem praw "co kto może" dla każdego z rodzajów profili ?
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.