Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Report reason plugin #163

Closed
wants to merge 65 commits into from
Closed

Report reason plugin #163

wants to merge 65 commits into from

Conversation

Mariusz08
Copy link
Member

Cześć,

To przerobiony plugin od q2apro i przystosowany pod nasze realia, wydaje się działać dobrze.
Był już jeden PR od tego pluginu ale zrobił się strasznie długi przez moje nieudolne próby naprawiania go, więc tworzę nowy żeby nie robić syfu i każdy mógł się połapać.

@CodersCommunity/forum

@awaluk
Copy link
Member

awaluk commented Mar 3, 2020

  • Nie mogę przygotować bazy, po uruchomieniu kodu na tej gałęzi strona ładuje się tak:
    Zrzut ekranu z 2020-03-03 21-57-21
    Co powiedzmy jest słabe, ale ogólnie nie jest jakimś strasznym problemem, jednak klikanie przycisku inicjalizacji bazy nic nie daje, strona jakby się odświeżała i nie ma żadnego efektu... Na potrzeby testów ręcznie wykonałem sobie zapytanie z q2apro-flag-reasons-admin.php w bazie i błąd przestał wyskakiwać.
  • W momencie zgłoszenia i wybrania powodu jako "inne" informacja o wybranym typie nie wyświetla się w widoku zgłoszenia dla administracji. Pomyślałem, że może to celowy zabieg (nieco mylący, bo ten jeden typ wygląda inaczej niż wszystkie), no ale nawet jeśli to gdy wpisze się coś w pole notatki i wybierze typ inny to też nic się to nie wyświetla oprócz samej liczby zgłoszeń, to już rozumiem jako błąd, bo gubimy treści notatek.
  • Dodałem do pytania odpowiedź, do odpowiedzi dwa komentarze. Próbuję zgłosić drugi komentarz, ale nic się nie dzieje, w responsie widać błędy "( ! ) Warning: Illegal string offset 'postid' in /vagrant/forum/qa-include/app/votes.php on line 224" i "( ! ) Warning: Illegal string offset 'title' in /vagrant/forum/qa-include/plugins/qa-event-notify.php on line 210", ale zgłoszenie wydaje się, że zapisało się poprawnie, bo po odświeżeniu jest widoczne.
  • Każde zgłoszenie/wycofanie powoduje odświeżenie całej strony, na pewno musimy to robić? Myślę, że nie jest to straszny problem, ale jednak z tego co widzę obecnie działa to bez odświeżania całości, może udałoby się tak to zrobić.
  • Na liście wszystkich zgłoszeń (http://forum.pasja-informatyki.local/admin/flagged) nie widać osoby która zgłosiła ani powodu, ta lista jest bez zmian. To zamierzone? Nie pamiętam, jakie były ustalenia wcześniej. Wydaje się, że nie jest to niezbędne na tej podstronie, ale gdyby było i nie jest to problem to też na pewno by nie zaszkodziło.
  • Poza tym na tej gałęzi widać konflikt do mastera, też wypadałoby ją zaktualizować, aby nie było problemu przy ewentualnym mergowaniu.

@Mariusz08
Copy link
Member Author

Nie mogę przygotować bazy, po uruchomieniu kodu na tej gałęzi strona ładuje się tak:

Rzeczywiście, teraz widzę, ze problem występuje również u mnie. Rozwiązaniem wydaje się wejście pod install albo do panelu admina i zakładki Wtyczki (tam pojawi się okienko o potrzebie aktualizacji bazy danych które działa)

W momencie zgłoszenia i wybrania powodu jako "inne" informacja o wybranym typie nie wyświetla się w widoku zgłoszenia dla administracji.

Rzeczywiście, teraz powinno już działać (głupi błąd 😟 )

Każde zgłoszenie/wycofanie powoduje odświeżenie całej strony, na pewno musimy to robić?

Niebardzo przychodzi mi teraz inne rozwiązanie do głowy, generalnie chodzi o to żeby zamienić przyciski unflag/flag ze sobą oraz pokazać info o zgłoszeniu. Teoretycznie można kombinować z AJAXem żeby pobrał całą stronę z silnika i tylko podmienił daną zawartość, ewentualnie jakoś jsem podmienić te ikonki, tylko potem może się zrobić mały problem z ustawianiem odpowiednich wartości w data-.

Na liście wszystkich zgłoszeń (http://forum.pasja-informatyki.local/admin/flagged) nie widać osoby która zgłosiła ani powodu, ta lista jest bez zmian.

Dziwne, u mnie działa (http://prntscr.com/rbkdg1), mógłbyś jakoś podesłać SS tej sytuacji?

Poza tym na tej gałęzi widać konflikt do mastera, też wypadałoby ją zaktualizować, aby nie było problemu przy ewentualnym mergowaniu.

Próbowałem to zrobić, lecz cały konflikt polega na błędzie w CSS od ciemnego theme. Niestety został on zmniejszony i cały CSS jest w całej linijce. Porównywanie tego znak po znaku trochę mnei przerosło :(

@awaluk
Copy link
Member

awaluk commented Mar 5, 2020

Rzeczywiście, teraz widzę, ze problem występuje również u mnie. Rozwiązaniem wydaje się wejście pod install albo do panelu admina i zakładki Wtyczki (tam pojawi się okienko o potrzebie aktualizacji bazy danych które działa)

Prawda, po ręcznym wejściu do wtyczek w panelu admina działa. Wydaje mi się jednak, że inne pluginy nie mają takiego problemu, czy źle pamiętam? Jakby udało się to jakoś szybko rozwiązać to byłoby fajnie, jak się nie da i wynika to z Q2A to trudno, szkoda czasu.

Rzeczywiście, teraz powinno już działać (głupi błąd worried )

Tak, teraz już działa. Niestety pojawił się jednocześnie inny problem: okienko z wyborem powodu zgłoszenia nie zamyka mi się nigdy. Wybieram powód, klikam "wyślij", w devtoolsach widzę że się poprawnie zapisało i zgłoszenie jest widoczne po odświeżeniu, ale tak to ani strona się nie odświeża, ani okienko samo nie znika, przeciętny user nie będzie miał pojęcia czy sie wysłało czy nie.

Dodałem do pytania odpowiedź, do odpowiedzi dwa komentarze. Próbuję zgłosić drugi komentarz, ale nic się nie dzieje, w responsie widać błędy "( ! ) Warning: Illegal string offset 'postid' in /vagrant/forum/qa-include/app/votes.php on line 224" i "( ! ) Warning: Illegal string offset 'title' in /vagrant/forum/qa-include/plugins/qa-event-notify.php on line 210", ale zgłoszenie wydaje się, że zapisało się poprawnie, bo po odświeżeniu jest widoczne.

To nadal zachowuje się tak samo

Niebardzo przychodzi mi teraz inne rozwiązanie do głowy, generalnie chodzi o to żeby zamienić przyciski unflag/flag ze sobą oraz pokazać info o zgłoszeniu. Teoretycznie można kombinować z AJAXem żeby pobrał całą stronę z silnika i tylko podmienił daną zawartość, ewentualnie jakoś jsem podmienić te ikonki, tylko potem może się zrobić mały problem z ustawianiem odpowiednich wartości w data-.

Z tego co na szybko sprawdziłem bez powodów to przecież tak właśnie działało, nie było przeładowań strony. Dla widoku użytkownika teraz nic się nie zmieniło, nadal widzi tylko liczbę zgłoszeń. Zmieniło się tylko dla administracji, która dodatkowo widzi powody i sama może zgłaszać z powodami, ale to tak naprawdę też można zwrócić Ajaxem (nawet gotowy fragment HTMLa) i podstawić. No ale to też jest powiedzmy rzecz fajnie jakby była, ale nie obowiązkowa.

Dziwne, u mnie działa (http://prntscr.com/rbkdg1), mógłbyś jakoś podesłać SS tej sytuacji?

Zrzut ekranu z 2020-03-05 19-36-08
Zrzut ekranu z 2020-03-05 19-36-29

Próbowałem to zrobić, lecz cały konflikt polega na błędzie w CSS od ciemnego theme. Niestety został on zmniejszony i cały CSS jest w całej linijce. Porównywanie tego znak po znaku trochę mnei przerosło :(

Rozumiem, ale jakoś ten konflikt i tak będzie trzeba rozwiązać przy mergowaniu. Najlepiej jakby takiego pliku builda nie było w repo, no ale tu dla uproszczenia został wrzucony kiedyś tam. Jak rozumiem potrzebne zmiany są w normalnych plikach (nie tylko wynikowym buildzie)? Wtedy najwyżej można będzie przy rozwiązaniu konfliktu wybrać cokolwiek i później już po połączeniu zbudować właściwą wersję.

@Mariusz08
Copy link
Member Author

Prawda, po ręcznym wejściu do wtyczek w panelu admina działa. Wydaje mi się jednak, że inne pluginy nie mają takiego problemu, czy źle pamiętam? Jakby udało się to jakoś szybko rozwiązać to byłoby fajnie, jak się nie da i wynika to z Q2A to trudno, szkoda czasu.

No trudno mi trochę powiedzieć co to powoduje i od czego to zależy

ale tak to ani strona się nie odświeża, ani okienko samo nie znika, przeciętny user nie będzie miał pojęcia czy sie wysłało czy nie.

Solved

To nadal zachowuje się tak samo

Solved

mógłbyś jakoś podesłać SS tej sytuacji?

Solved

Rozumiem, ale jakoś ten konflikt i tak będzie trzeba rozwiązać przy mergowaniu. Najlepiej jakby takiego pliku builda nie było w repo, no ale tu dla uproszczenia został wrzucony kiedyś tam. Jak rozumiem potrzebne zmiany są w normalnych plikach (nie tylko wynikowym buildzie)? Wtedy najwyżej można będzie przy rozwiązaniu konfliktu wybrać cokolwiek i później już po połączeniu zbudować właściwą wersję.

No szczerze... nie wiem. Ten PR ma niecałe dwa lata, kod mógł się zmienić i pewnie stąd te konflikty. Jak dobrze pamiętam to cały styl od powodów zgłoszeń jest w qa-plugin/report-reason/style.css, więc teoretycznie można po prostu wrzucić nowszy build i powinno działać, ale też ręki nie dam sobie o to uciąć. Prawdopodobnie będzie po prostu trzeba najpierw wrzucić stary plik, potestować, potem nowy i też przetestować czy wszystko trzyma się kupy i nic dziwnie nie wygląda, innej metody nie widzę.

@awaluk
Copy link
Member

awaluk commented Mar 15, 2020

Ze względu na zmianę wersji PHP z 5.6 na 7.1 (#166) prośba o rebase zmian z mastera na tę gałąź, tu jest sporo rzeczy, więc trzeba mieć pewność że będą działały też na najnowszej.

Wydaje mi się, że po aktualizacji nadal wszystko działa. Tylko nie wyświetla nazwy pluginu w panelu admina na zakładce wtyczki - jest jako "wtyczka bez nazwy". Rozwiązaniem jest dodanie pliku metadata.json w katalogu pluginu z danymi jakie są w qa-plugin.php i powinno być ok.

Prawda, po ręcznym wejściu do wtyczek w panelu admina działa. Wydaje mi się jednak, że inne pluginy nie mają takiego problemu, czy źle pamiętam? Jakby udało się to jakoś szybko rozwiązać to byłoby fajnie, jak się nie da i wynika to z Q2A to trudno, szkoda czasu.

No trudno mi trochę powiedzieć co to powoduje i od czego to zależy

Ok, to zostawmy, myślę że to nie jest straszny problem, szkoda czasu.

No szczerze... nie wiem. Ten PR ma niecałe dwa lata, kod mógł się zmienić i pewnie stąd te konflikty. Jak dobrze pamiętam to cały styl od powodów zgłoszeń jest w qa-plugin/report-reason/style.css, więc teoretycznie można po prostu wrzucić nowszy build i powinno działać, ale też ręki nie dam sobie o to uciąć. Prawdopodobnie będzie po prostu trzeba najpierw wrzucić stary plik, potestować, potem nowy i też przetestować czy wszystko trzyma się kupy i nic dziwnie nie wygląda, innej metody nie widzę.

Czyli jak rozumiem wszystkie zmiany są w plikach źródłowych SCSS, więc moglibyśmy zmergować wybierając którąkolwiek wersję zbudowaną, a później gdy zmiany w SCSS będą już razem połączone to zrobić po prostu builda z tego wszystkiego. Jednak jeśli będziesz robił rebase całości to i wszystkie nowe zmiany w SCSS powinny się pojawić na tej gałęzi. Wtedy mógłbyś zrobić od razu builda i rozwiązując konflikty można byłoby wziąć tego z Twojej gałęzi, bo byłoby pewne że zawiera wszystko.

Poza tym wydaje mi się, że wszystko działa jak należy. Pozostanie przed mergem kwestia przemyślenia jakie mają być te gotowe powody (możemy to obgadać w jakimś większym gronie czy rzucić konkretną propozycja i zebrać uwagi), bo to też jest w kodzie i będzie gotowe.

Comment on lines 9 to 22
if (in_array($event, $flagEvents, true)) {
$postId = $params['postid'];

qa_db_query_sub('
DELETE FROM `^flagreasons`
WHERE userid = #
AND postid = #
', $userId, $postId);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to prowinna być osobna prywatna metoda

Comment on lines 21 to 35
if (in_array($event, $flagEvents2, true)) {
$userLevel = qa_get_logged_in_level();

if ($userLevel >= QA_USER_LEVEL_EDITOR) {
$postId = $params['postid'];
}

qa_db_query_sub('
DELETE FROM `^flagreasons`
WHERE postid = #
', $postId);
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to powinna być osobna prywatna metoda


public function head_script()
{
qa_html_theme_base::head_script();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lepszym jest chyba użycie parent::

Comment on lines 13 to 23
$this->output(
'
<script>
const flagAjaxURL = "' . qa_path('ajaxflagger') . '";
const flagQuestionid = ' . $this->content['q_view']['raw']['postid'] . ';
</script>
'
);
$this->output(
'
<script type="text/javascript" src="' . QA_HTML_THEME_LAYER_URLTOROOT . 'script.js"></script>
<link rel="stylesheet" href="' . QA_HTML_THEME_LAYER_URLTOROOT . 'styles.css">
'
);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

można to połączyć przecież w jeden output

$q_view['form']['buttons']['flag']['tags'] =
'data-postid="' . $q_view['raw']['postid'] . '" data-posttype="q" ';
}
qa_html_theme_base::q_view_buttons($q_view);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lepiej użyć parent::


public function process_request($request)
{

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

niepotrzebny enter


$logged = qa_is_logged_in();
if (!$logged) {
exit();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bez żadnego komunikatu?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To jest endpoint pod który idzie request od frontu, nie ma więc sensu generować cały front z pomocą qa_prepare_content(), chyba ze chodzi o jakiegos prostego JSONa w stylu {"message": "You must be logged in to perform this action"}

}
}
} elseif ('a' === $postType) {
$answerId = $postId;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sugarcode $postId w takim razie powinien się inaczej nazywać - może $objectId?

'
INSERT INTO `^flagreasons` (`userid`, `postid`, `reasonid`, `notice`)
VALUES (#, #, #, $)
', $userId, $answer['postid'], $reasonId, $notice
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

skad pewnosc ze w answer bedzie postid? A jak nie zwróci nic?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No zakładam że jeśli jest triggerowany event o jakimś ID to prawdopodobnie jest on w bazie, ale fakt, sprawdzę to.

@@ -2312,6 +2312,7 @@ input[type="submit"], button {
background-image: url('images/icons/edit-white.png');
}
.qa-form-light-button-flag {
cursor: pointer;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

czy nie da się zrobić tych zmian nienadpisując istniejącego qa-styles? Nie wiem - przy pomocy pluginu? :)

Copy link
Member

@event15 event15 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chciałbym uniknąć edycji qa-styles.css

@@ -933,11 +933,11 @@ blockquote p {
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

czy da się te zmiany wydzielić do osobnego pliku css, który jest w pluginie?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Teoretycznie wszystkie zmiany które są potrzebne do działania pluginu są w osobnym pliku, tutaj w większości są tylko zmiany formatowania. Mimo zrobionego checkouta nadal pokazuje jakieś zmiany w tym pliku, nie mam zielonego pojęcia dlaczego 🤔

const body = document.body;
const closer = document.querySelector(".close-preview-btn");
const sendButton = document.querySelector(".qa-go-flag-send-button");
const errorMessage = "Błąd serwera. Proszę spróbować za jakiś czas";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dla czytelności osobno zgrupowałbym zmienne, które trzymają elementy DOM i osobno zmienne, które trzymają inne dane (jak w tym przypadku komunikaty).

const commentSubmitButton = document.querySelector('.qa-form-tall-button-comment')

function showPopup() {
flagboxPopup.classList.remove("hide");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy pokazanie popupa koniecznie wymaga usunięcia jednej klasy i dodanie drugiej? Jeśli popup jest na starcie ukryty, to niech ma najpierw nadaną klasę "hide", a jej usunięcie go pokaże (albo w CSS ustawione display: none, który "zdejmie" nadanie klasy "show"). Nie widzę potrzeby, aby manipulować dwiema klasami w tym przypadku..

flagboxPopup.classList.add("show");
}
function hidePopup() {
flagboxPopup.classList.remove("show");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Analogiczna sytuacja jak w funkcji showPopup() - nie ma potrzeby manipulacji dwoma klasami, aby schować popup.

paragraph.textContent = errorText;

removeAllChildFromErrorPopup();
errorPopup.appendChild(paragraph);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dodanie nowego elementu do DOM lepiej robić po wszystkich jego manipulacjach w danym czasie - przesuń to linię niżej.

location.reload();
});

body.addEventListener("click", (event) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tak długą funkcję anonimową lepiej wydzielić do osobnej funkcji - będzie się to lepiej czytać.

if (event.target.matches(".qa-form-light-button-unflag")) {
location.reload();
}
if (event.target.matches(".qa-form-light-button-clearflags")) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ten przypadek można dodać jako OR do if wyżej, a nawet wrzucić .qa-form-light-button-clearflags po przecinku do selektora w if w 45 linii.

showPopup();

flagboxPopup.addEventListener("click", () => {
hidePopup();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Referencję do hidePopup można umieścić bezpośrednio jako drugi parametr do event listenera. Nie ma potrzeby zawijać tego w funkcję anonimową


closer.addEventListener("click", () => {
hidePopup();
return false;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy tutaj nie wystarczy wywołać event.preventDefault, uprzednio przekazując event jako parametr?


sendButton.addEventListener("click", () => {

const flagReason = document.querySelector("input.qa-spam-reason-radio:checked");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy referencja do tego elementu nie może być pobrana na górze skryptu?

sendButton.addEventListener("click", () => {

const flagReason = document.querySelector("input.qa-spam-reason-radio:checked");
const flagNotice = document.querySelector(".qa-spam-reason-text").value;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j.w.


if (!flagReason) {
showError(reportReasonEmptyError);
return false;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy nie wystarczy wywołać event.preventDefault?

return false;
}

const { postid: postId, posttype: postType, parentid: parentId } = flagButton.dataset;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nie pamiętam jak stare przeglądarki wspieramy, ale destrukturyzacja nie jest obsługiwana w IE11.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nie widzę, żeby property parentId było gdzieś używana w kodzie - czy jest sens to rozpakowywać?

}

const { postid: postId, posttype: postType, parentid: parentId } = flagButton.dataset;
const dataArray = {questionid: flagQuestionid, postid: postId, posttype: postType, reasonid: flagReason.value, notice: flagNotice};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nazwa zmiennej dataArray sugeruje, że jest to tablica, a to przecież obiekt.

let isError = false;

if(flagReason) {
sendButton.value = "Wysyłanie...";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zmiana tekstu na przycisku i jego blokowanie można zamknąć w osobnej funkcji.

$.ajax({
type: "POST",
url: flagAjaxURL,
data: { ajaxdata: sendData },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy backend wymaga, żeby przesyłane dane były obiektem zawierającym property ajaxdata? Nie wystarczy tutaj po prostu przypisać zmienną sendData?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy backend wymaga [...]

Tak

cache: false,
success: function(data) {
if(data.error) {
if (data.error.includes("Zbyt wiele zgłoszeń. Spróbuj ponownie za godzinę")) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czy nie można bardziej precyzyjnie wykryć, że mamy do czynienia z konkretnym błędem (np. jakiś kod), tylko trzeba sprawdzać tekst, który najpewniej widzi użytkownik?

if(data.error) {
if (data.error.includes("Zbyt wiele zgłoszeń. Spróbuj ponownie za godzinę")) {
showError(tooManyReportError);
return false;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

W jakim celu jest to return false? Czy ma jakiś wpływ na działanie metody success w jQuery?

@Mariusz08
Copy link
Member Author

Ciesze się, że temat ficzera do zgłaszania postów odżył. Może dało by się zintegrować formularz do zgłaszania postów z tego PR?

Prawdopodobnie dałoby się to zrobić, ale jestem bardziej backendowcem, i na widok narzędzi budujących od frontu mam gorączkę. Nie dam rady tego zaadoptować do obecnego skryptu, więc chyba musi tak zostać :(

@ScriptyChris
Copy link
Member

Na początek utwórz nowego brancha z tego, na którym jesteś i na nim zrób git pull origin feature/report-reason-plugin_frontend (żeby na nim mieć swoje zmiany i te z podlinkowanego PR). Spróbuj sam to zintegrować, a jeśli będziesz mieć problemy, to daj znać - pomogę (od czwartku będę mieć więcej czasu).

W tamtym PR jest obsługa zgłoszeń od strony użytkownika - nie ma implementacji dla Administracji - planowałem to dorobić, ale backendu za bardzo nie było. Skoro jednak Ty coś rzeźbisz w tym temacie, to jest (kolejna) szansa na dowiezienie tego. :)

@Mariusz08
Copy link
Member Author

#199

@Mariusz08 Mariusz08 closed this Jun 25, 2020
@Mariusz08 Mariusz08 deleted the report-reason-plugin branch June 25, 2020 11:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants