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!



prościej
palik, pon., 2007-12-03 11:59 moderatoralbo 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
Hidden
archetwist, pon., 2007-12-03 16:38 moderatorTak, 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 :) .
Czegoś takiego szukałem od dawna. i nie spełniły moich oczekiwań. Tylko teraz trochę trudno rozstać się z Workflow-ng, a nie lubię mieć wielu modułów ;) .
P.S. 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
s_z_a_m_a_n, czw., 2007-12-27 03:40Informacje 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
Przede wszystkim nie jest
archetwist, czw., 2007-12-27 04:40 moderatorPrzede 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
s_z_a_m_a_n, czw., 2007-12-27 15:51No 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
node
archetwist, czw., 2007-12-27 18:09 moderator„To coś” nie powinno generować żadnych błędów. Masz jakiś poważny błąd w witrynie, pewnie w bazie danych. (w najnowszej wersji tłumaczenia ) jest jedną ze standardowych funkcji modułu .
design www drupal
Źle to ująłem, to nie
s_z_a_m_a_n, czw., 2007-12-27 23:50Ź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