CodersCommunity / forum.pasja-informatyki.local

Środowisko deweloperskie forum
https://forum.pasja-informatyki.pl
25 stars 7 forks source link

Log aktywności użytkowników #294

Closed wizarddos closed 2 years ago

wizarddos commented 2 years ago

Feature z #287

Dodałem dodatkową podstronę w panelu administracyjnym pozwalającą na wyszukiwanie aktywności użytkowników

Filtrować możemy po nazwie użytkownika, typie aktywności oraz po Adresie IP (od moderatora w górę) Zaimplementowałem też (opcjonalny) filtr dat oraz możliwość wyboru ilości wyników, których chcemy uzyskać

Dodatkowo jedynie administratorzy widzą kto głosował lub zgłosił pytanie/komentarz/odpowiedź

Funkcja jest dostępna od redaktora w górę

demo:

admin

https://user-images.githubusercontent.com/69435721/154421980-391b8204-b9a0-423e-b6d1-c7484463bdfb.mp4

redaktor

https://user-images.githubusercontent.com/69435721/154422523-9b400709-e51d-49d0-b482-87900ff4b3bb.mp4

awaluk commented 2 years ago

Ogólnie fajnie to działa.

Z takich sugestii funkcjonalnych ode mnie:

Wiem że sporo wypisałem, więc jak dla mnie nie musimy robić tego wszystkiego od razu albo w ogóle. Można teraz przyklepać jakąś wersję, którą uznamy za kompletną na ten moment, a później rozbudowywać, więc ewentualnie pytanie czy coś byś chciał jeszcze zrobić.

wizarddos commented 2 years ago
  • Wydaje mi się, że chyba wpisanie szukanego elementu nie powinno być konieczne? Może ktoś po prostu chce zobaczyć cały log jak leci

  • Dałbym jakąś domyślnie wpisaną liczbę w "maksymalna liczba wyników" np. nie wiem 25, 50 czy coś takiego i z opcją zmiany, aby nie trzeba było wpisywać za każdym razem.

  • Szukanie po typie zdarzenia działa jak rozumiem po wartości jaka jest trzymana w bazie? Jak dla mnie spoko, nie trzeba tego komplikować, ale w takiej sytuacji wypadałoby wypisać gdzieś listę eventów - może po najechaniu na coś, po kliknięciu żeby się pokazał jakiś modal z podpowiedzią czy cokolwiek. Pomimo że już długo tu siedzę to sam nie pamiętam dokładnie zapisu eventów wszystkich akcji ;)

To wszystko dodałem w tych kilku commitach.

Domyślną wartością dla wyników jest 45

Dodałem na dole dodatkowe okienko otwierane po naciśnięciu przycisku. Pokazuje kilka podstawowych eventów + jest na dole link z pełnymi opisami (Do docsów q2a)

  • Dla aktywności edycji odpowiedzi coś jest nie tak z opisem - pokazuje się "[user-activity-log/a_edit]" w kolumnie "Rodzaj aktywności" zamiast tłumaczenia.

Poprawione

  • Zastanowiłbym się czy nie lepiej zawsze pokazywać formularz wyszukiwania, a pod nim dawać listę wyników? To dlatego, że obecnie on znika, a po szukaniu czegoś jednego mogę chcieć zmienić jakieś kryterium albo po prostu przypomnieć sobie jakie kryteria ustawiłem i nie jest to możliwe, trzeba robić przeglądarkowe wstecz, bo nie ma nawet dedykowanego guzika powrotu na formularz z zapamiętanymi ustawieniami.

Wpisane dane zapisane są w zmiennych sesyjnych. Kiedy wrócimy do strony poprzez link w navie, przeglądarkowe wstecz, lub kliknięcie w tytuł, wpisane przez nas wartości są zachowane

  • Fajnie byłoby dodać sortowanie, w zasadzie to chyba tylko po dacie jest istotne - czasem jest potrzeba aby wyszukać coś, co działo się np. na początku historii danego użytkownika, tu byłoby to trudne.

Dodałem. Możemy wybrać czy szukamy od najstarszych, czy najnowszych (tak ten podpunkt zrozumiałem)

To wszystko co mi się do teraz udało zrobić.

Czasem oprócz szukania po nazwie użytkownika mogłoby się też przydać szukanie po faktycznym użytkowniku, czyli w zapytaniu po id. Dlaczego? Bo ktoś może zmienić nick i wtedy stare logi są pod starym nickiem, nie pamiętając tego się ich tu nie znajdzie. Id userów nie są jednak publicznie dostępne, a więc samo pole szukania po id nie wystarczy. Jedyny pomysł jaki mi przychodzi do głowy to dodatkowe pole na podanie aktualnego nicku użytkownika, wtedy nastąpiłoby odszukanie go po nim, pobranie id i w samym logu już wyszukanie po id.

Myślę, że to dobry pomysł

awaluk commented 2 years ago

Dla aktywności edycji odpowiedzi coś jest nie tak z opisem - pokazuje się "[user-activity-log/a_edit]" w kolumnie "Rodzaj aktywności" zamiast tłumaczenia.

Poprawione

Chyba nadal nie? U mnie jest tak samo, brakuje tłumaczenia. Reszta zmienionych rzeczy funkcjonalnie bez zastrzeżeń - działa. Jedynie jeszcze można byłoby zwrócić uwagę na to, że zapamiętywanie wartości formularza w sesji działa tak dobrze, że pamięta je nawet jak się całkowicie wyjdzie ze strony i wróci za kilka chwil ;) Równie dobrze można to jednak uznać za jakiś tam dodatkowy feature, ewentualnie można czyścić sesję po odczytaniu z niej wartości.

wizarddos commented 2 years ago

W ostatnich commitach dodałem to o co było zawarte w propozycjach ulepszeń oraz poprawiłem kod zgodnie z propozycjami Z nowych feature'ów to:

Czasem oprócz szukania po nazwie użytkownika mogłoby się też przydać szukanie po faktycznym użytkowniku, czyli w zapytaniu po id. Dlaczego? Bo ktoś może zmienić nick i wtedy stare logi są pod starym nickiem, nie pamiętając tego się ich tu nie znajdzie. Id userów nie są jednak publicznie dostępne, a więc samo pole szukania po id nie wystarczy. Jedyny pomysł jaki mi przychodzi do głowy to dodatkowe pole na podanie aktualnego nicku użytkownika, wtedy nastąpiłoby odszukanie go po nim, pobranie id i w samym logu już wyszukanie po id.

Dodane, jest to domyślna funkcja loga

Największy wg mnie brak: brak informacji z kolumny params w tabeli. Pokaże nam się tu, że ktoś edytował odpowiedź czy zadał pytanie, ale tak naprawdę nie będziemy wiedzieli jakie. Najwygodniej jakby tam był link do elementu, którego dotyczyła akcja czy inne szczegóły tej akcji. To nie jest potrzebne wszędzie, nawet w niektórych miejscach nie powinno tego być - np. nie musimy wiedzieć do kogo kto wysyłał wiadomość, no ale wydaje się, że chociaż przy akcjach na pytaniach/odpowiedziach/komentarzach byłoby istotne.

Również dodane. Od teraz przy każdym wyniku dotyczącym komentarza, pytania albo odpowiedzi pojawia się link, który przekieruje nas do tego posta.

awaluk commented 2 years ago

Przeklikałem sobie wszystko jeszcze raz i jest ok.

Jedynie jak spojrzałem na wyświetlane eventy, to miałbym propozycję, aby to lepiej dostosować. Przede wszystkim eventów zaczynających się od in_ wg mnie nie potrzebujemy tu w ogóle obsługiwać - to nie są wpisy logu aktywności, a tylko informacje pod powiadomienia. Tym sposobem obecnie mamy duplikację typu: Zrzut ekranu z 2022-04-02 11-33-36 co jest bez sensu :) Interesuje nas w tym przykładzie to, że user dodał komentarz do pytania, przy adminie ta informacja nie ma sensu.

Zastanawiam się też czy nie ukryć w logu informacji o dodaniu pytania do ulubionych - nie powinno nas interesować to, co kto sobie tam dodaje, jego sprawa. To samo z wiadomościami prywatnymi, może jednak lepiej je tu całkowicie ukryć albo zostawić tylko dla admina - choć nie ma tu treści ani odbiorcy, to nie wiem czy ta informacja ma sens i mogłaby być przydatna.

Z drobnostki kosmetycznej: redaktor i moderator w podmenu admina widzą linka do "Pierwszy raz tutaj", co nie ma tu sensu Zrzut ekranu z 2022-04-02 11-45-15 Zdaje się, że już kiedyś gdzieś był podobny problem, ale nie pamiętam jak mógł być rozwiązany, może udałoby się to wywalić stąd.

wizarddos commented 2 years ago

Przede wszystkim eventów zaczynających się od in_ wg mnie nie potrzebujemy tu w ogóle obsługiwać - to nie są wpisy logu aktywności, a tylko informacje pod powiadomienia. Tym sposobem obecnie mamy duplikację typu:

O tym akurat nie wiedziałem, ale rzeczywiście. To niezbyt ma sens

Zastanawiam się też czy nie ukryć w logu informacji o dodaniu pytania do ulubionych - nie powinno nas interesować to, co kto sobie tam dodaje, jego sprawa. To samo z wiadomościami prywatnymi, może jednak lepiej je tu całkowicie ukryć albo zostawić tylko dla admina - choć nie ma tu treści ani odbiorcy, to nie wiem czy ta informacja ma sens i mogłaby być przydatna.

Niby racja, ale tu pojawia nam się problem podobny jak przy flagach i głosach (nawet trochę większy) np.

Można też np. dodać jakąś informacje na dole typu "Nie masz uprawnień aby wyświetlić X zdarzeń. zaloguj się na konto z wyższą rangą, albo poproś o więcej wyników".

Z drobnostki kosmetycznej: redaktor i moderator w podmenu admina widzą linka do "Pierwszy raz tutaj", co nie ma tu sensu Zrzut ekranu z 2022-04-02 11-45-15 Zdaje się, że już kiedyś gdzieś był podobny problem, ale nie pamiętam jak mógł być rozwiązany, może udałoby się to wywalić stąd.

To z tego co pamiętam wynika z tych linijek w pliku user-activity-log-overrides.php

        $nav['user-activity-log'] = [
            'label' => qa_lang_html('user-activity-log/linkLabel'),
            'url' => qa_path('user-activity-log'),
            'selected' => (qa_request_part(1) == 'user-activity-log'), 
        ];

U większości (jak nie wszystkich) elementów w panelu administracyjnym URL'e idą mniej więcej tak domena/admin/nazwa-podstrony Gdy próbowałem coś takiego napisać to za każdym razem zwracało mi to stronę jedynie dla adminów, a redaktorzy i moderatorzy nie mieli dostępu i zwracało mi to błąd "Ta strona jest dostępna tylko dla administratorów". Z tego powodu myślę pojawia się ten element

awaluk commented 2 years ago

Niby racja, ale tu pojawia nam się problem podobny jak przy flagach i głosach (nawet trochę większy) np. Redaktor prosi o 30 wyników 5 z nich to głosy i zgłoszenia, 10 to wiadomości prywatne, a 5 to dodawanie do ulubionych 5+10+5 = 20; 30-20 = 10; Redaktor prosił o 30 wyników, Dostaje 10 i nie wie co z tym zrobić dalej

Hmm, a nie możemy tego odfiltrować już na poziomie zapytania do bazy? Gdyby gdzieś tu: https://github.com/CodersCommunity/forum.pasja-informatyki.local/pull/294/files#diff-9531bb7de467c8575f3433deea220f548ede48ef80e92314ad4eefa351952b12R55 dopisać, że WHERE event != message, vote, in_... itd. to wydaje mi się, że to powinno rozwiązać problem, bo wtedy już na poziomie bazy nie wyjmie się niepotrzebnych rekordów, a więc też nie zaburzy ich ilości

To z tego co pamiętam wynika z tych linijek w pliku user-activity-log-overrides.php

Może, tylko że to powinno tylko dodać tę jedną pozycję menu, a nagle pojawia się całkiem inna, która standardowo jest w całkiem innym miejscu. Ale dobra, jak z tym będzie problem to trudno, kiedyś się poszuka z czego to wynika.

wizarddos commented 2 years ago

Hmm, a nie możemy tego odfiltrować już na poziomie zapytania do bazy? Gdyby gdzieś tu: https://github.com/CodersCommunity/forum.pasja-informatyki.local/pull/294/files#diff-9531bb7de467c8575f3433deea220f548ede48ef80e92314ad4eefa351952b12R55 dopisać, że WHERE event != message, vote, in_... itd. to wydaje mi się, że to powinno rozwiązać problem, bo wtedy już na poziomie bazy nie wyjmie się niepotrzebnych rekordów, a więc też nie zaburzy ich ilości

Możemy, napisałem coś podobnego, i przy okazji naprawiłem ten błąd z wynikami u redaktorów i moderatorów.