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:
{ /* load wysiwyg */ } else { /* load standard */ }
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):
if( admit( 'WYSIWYG') ) { /* load wysiwyg */ } else { /* load standard */ }
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:
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:
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:
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:
Widać? Musiałbym zmieniać zasadę działania uprawnień. Łatwiej wybrać inny sposób wyboru edytora.
// (FALSE lub TRUE) i TRUE { $output->addScript('editor/loader.js'); } else { $output->addScript('lib/editor.js'); }