Moderowanie - przewodnik leniwego Drupalowicza

Powtarzane wciąż czynności moderacyjne nie należą do najbardziej ekscytujących obowiązków administratora drupalowej witryny. Jest ich dużo zwłaszcza wtedy, gdy prowadzimy forum. Najczęstsze problemy to:

  • zły temat wątku
  • nieprawidłowe formatowanie lub jego brak
  • niewłaściwe umieszczenie wątku lub odpowiedzi

Co zapewnia z kolei konieczność:

  • poinformowania autora o potrzebie wprowadzenia zmian
  • przeniesienia źle umieszczonej odpowiedzi w inne miejsce
  • wyedytowania segmentu
  • pozostawienia informacji o wprowadzonych przez administratora zmianach

Drupal, w swej standardowej konfiguracji, nie ułatwia żadnej z wymienionych czynności. Mam jednak zamiar to zmienić. Poniżej przedstawiam kilka sposobów. Jeśli możecie je ulepszyć, napiszcie o tym.

Szybka edycja segmentu

Czy nie byłoby łatwiej edytować segment, gdyby formularz edycji znajdował się bezpośrednio na jego stronie? Rozwiązanie jest stosunkowo proste. Należy stworzyć nowy blok i umieścić go w żądanym miejscu na stronie, a następnie w treści bloku wprowadzić co następuje:

<?php

if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nid = arg(1);
}

$node = node_load(array('nid' => $nid));
return drupal_get_form($node->type .'_node_form', $node);

?>

Dla opcji Pokazuj blok na określonych stronach ustawiamy Wyświetlaj, jeśli poniższy kod PHP zwraca prawdę i wprowadzamy kod, który umożliwi wyświetlanie formularza edycji tylko na odpowiednich stronach i tylko użytkownikom z uprawnieniami do zarządzania konfiguracją witryny. Pominięcie tej konfiguracji naraża nas na poważną lukę bezpieczeństwa.

<?php

if (arg(0) == 'node' && is_numeric(arg(1)) && user_access("administer site configuration")) {
  return TRUE;
} else {
  return FALSE;
}

?>

Proponuję również ukryć za pomocą CSS te elementy formularza, z których podczas edycji korzystamy rzadko. Sama edycja będzie wtedy na pewno przebiegać szybciej. By to zrobić, należy jednak zapewnić elementom formularza klasy lub identyfikatory CSS, których standardowo nie posiadają. W jednym z kolejnych artykułów mam zamiar podać przepis na ich dodanie.

Przenoszenie odpowiedzi

Tu tylko krótka informacja na temat modułu Comment mover. Umożliwia on właśnie przeoszenie odpowiedzi lub konwertowanie ich do pełnoprawnych segmentów. O module tym pisałem w jednym z wcześniejszych artykułów.

Informacje o dokonaniu zmian

Zamiast umieszczać komunikaty typu „Zmieniłem temat wątku” w treści wpisu, można do tego wykorzystać tajemniczą funkcję Wiadomość dziennika. Przecież, jak głosi wyjaśnienie, jest to opis zmian dokonanych we wpisie, mający pomóc innym autorom w zrozumieniu Twoich zamiarów. Zaletą takiego rozwiązania jest brak konieczności wprowadzania znaczników, które w połączeniu ze stylami CSS miałyby odróżniać komunikat od oryginalnej treści. Znaczniki będą dodawane automatycznie.

W szablonie node.tpl.php (lub innym – dla wybranego rodzaju zawartości), wprowadzić należy:

<?php if ($page) {
  $result = db_query('SELECT log FROM {node_revisions} WHERE nid = %d ORDER BY timestamp DESC', $node->nid);
  $log = db_fetch_object($result);
  if ($log->log) {
    print '<div id="log-message">' . check_plain($log->log) . '</div>';
  }
} ?>

Spowoduje to wyświetlenie wiadomości dziennika, którą dodaje się w formularzu edycji segmentu. Będzie ona objęta elementem DIV o identyfikatorze log-message. Można go wykorzystać do ostylowania komunikatu za pomocą CSS.

Wysyłanie automatycznych wiadomości autorom

Zamiast umieszczać w wątku (czy innych wpisach) notkę w stylu „proszę poprawić temat” za każdym razem, gdy zajdzie taka potrzeba, można skorzystać z przygotowanego wcześniej odnośnika „zły temat”, którego naciśnięcie spowoduje automatyczne wysłanie do autora danego wpisu e-maila o zdefiniowanej uprzednio treści.

Potrzebny jest tu moduł Workflow-ng, który pozwala budować tak zwane działania (actions), uruchamiane w określonych warunkach (conditions).

Najpierw jednak, za pomocą dołączonego modułu Workflow-ng Content Links, tworzymy odnośniki, które wyświetlane będą u dołu wpisów.

Tworzymy więc odnośnik o etykiecie „Zły temat” i etykiecie odnośnika (link label) „Poproś o zmianę tematu” oraz przypisujemy go do określonych lub wszystkich rodzajów zawartości.

Przechodzimy na stronę Workflow-ng i wybieramy Add a new configuration. Na liście Event wskazujemy Zły temat i ponownie nadajemy etykietę „Poproś o zmianę tematu”. Na stronie konfiguracji dodajemy działanie Send a mail to a user i odpowiednio je dostosowujemy. Możemy na przykład umieścić odnośnik do formularza edycji [node:site-url]/node/[node:nid]/edit, by ułatwić ją autorom. Lista dostępnych zmiennych znajduje się pod Replacement patterns.

Koniec

To już koniec ułatwień. Przynajmniej na razie. A teraz do moderacji!

Militia, © Bartłomiej Stroiński
Militia, © Bartłomiej Stroiński

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.
Portret użytkownika palik

prościej

moderator

By to zrobić, należy jednak zapewnić elementom formularza klasy lub identyfikatory CSS, których standardowo nie posiadają.

albo otoczyć php ładujące formularz warstwą z jakimś id i potem w css ukryć tylko te niepotrzebne elementy formularza które występują wewnątrz tego naszego ‚serwisowego’ id; czy nie będzie łatwiej?

ah jeszcze taka myśl – Jako alternatywy dla workflow-ng można spróbować np. modułu hidden:

http://drupal.org/project/hidden

który ma kilka ciekawych funkcji, np. ‚ukrywanie’ danego tematu/komentarza, wysłanie informacji o tym wydarzeniu, dodanie opisu z jakiego powodu treść została ukryta itd.

pzdr

--
drupal w akcji?
http://palikowski.net
http://basoofka.net

Portret użytkownika archetwist

Hidden

moderator

albo otoczyć php ładujące formularz warstwą z jakimś id i potem w css ukryć tylko te niepotrzebne elementy formularza które występują wewnątrz tego naszego ‘serwisowego’ id; czy nie będzie łatwiej?

Tak, tylko że ja chciałem mieć większą kontrolę nad elementami formularza. Zwróć na przykład uwagę, że na formularzu dodawania zawartości na drupal.org.pl listy kategorii nie znajdują się jedna za drugą, ale pod sobą, oszczędzając miejsce :) .

ah jeszcze taka myśl – Jako alternatywy dla workflow-ng można spróbować np. modułu hidden:

http://drupal.org/project/hidden

Czegoś takiego szukałem od dawna. AbuseFlag content nie spełniły moich oczekiwań. Tylko teraz trochę trudno rozstać się z Workflow-ng, a nie lubię mieć wielu modułów ;) .

P.S. Hidden niestety chyba nie wysyła e-maili do autorów, a jedynie pod z góry ustalony adres. Chociaż to może nie jest problem.

design www drupal

Informacje o dokonaniu

Informacje o dokonaniu zmian – Jak się robiło, żeby w edycji była opcja “wiadomość dziennika”, kiedyś to miałem, ale teraz gdzieś mi znikło w międzyczasie tak zwanym…

Proszę o usunięcie poprzedniej odpowiedzi, przypomniałem sobie mój login i hasło :-P

Portret użytkownika archetwist

Przede wszystkim nie jest

moderator

Przede wszystkim nie jest mi znany sposób na jej usunięcie ;-) (pomijając modyfikację Drupala). Im chyba też nie.

design www drupal

No to najwidoczniej

No to najwidoczniej znalazłem sposób, tylko nie mam pojęcia jaki :-P Na stronach edycji nie ma „wiadomości dziennika”, nie wiem już z który modułem to było związane, myślałem, że z archive, ale to nie to, chyba, że trzeba zaznaczyć w opcjach „stwórz nową wersję”, ale ta funkcja nie działa poprawnie np. tak jak na wikipedii, więc mam to wyłączone, bo tylko błędy to coś generuje…

-- Szaman

http://unitra.eu.org

Portret użytkownika archetwist

node

moderator

„To coś” nie powinno generować żadnych błędów. Masz jakiś poważny błąd w witrynie, pewnie w bazie danych. Wiadomość dziennika (w najnowszej wersji tłumaczenia Wpis do dziennika) jest jedną ze standardowych funkcji modułu node.

design www drupal

Źle to ująłem, to nie

Źle to ująłem, to nie generuje błędów php czy mySQL, tylko zwyczajnie nie działa, po utworzeniu nowej wersji chcąc cofąć edycję poprostu nic się nie dzieje, t.j. nie widać różnicy w treści artykułu on nie zachowuje starej treści tylko tworzy jakieś wirtualne wersje, bo nie wiem gdzie one sa zapisywane, ale i tak w każdej z nich jest to samo…

Co do wpisu dziennika to może to ma zw. z nową skórką, którą zainstalowałem jakiś czas temu, zauważyłem, że kilku rzeczy tam nie ma…

-- Szaman

http://unitra.eu.org