Błąd #8613

Zapis dokumentu bez zmian generuje zmiany

Added by Michał Marcińczuk over 5 years ago. Updated over 5 years ago.

Status:ZamkniętyStart date:17 Apr 2018
Priority:NormalnyDue date:
Assignee:Mikołaj Szewczyk% Done:

100%

Category:-
Target version:Release TBD

Description

Po otwarciu dokumentu index.php?page=report&corpus=7&id=99883 do edycji treści (Content) w trybie Full i zapisie bez zmian generuje trzy zmiany w anotacjach (a załączniku).

Trzeba się przyjrzeć skąd te różnice, skoro nie ma żadnych zmian.

Screenshot from 2018-04-17 15-30-13.png (82.6 KB) Michał Marcińczuk, 17 Apr 2018 15:28

History

#2 Updated by Mikołaj Szewczyk over 5 years ago

  • Status changed from Przypisany to Odpowiedź
  • % Done changed from 0 to 100

Wydaje mi się, że ten mechanizm działa tak jak powinien. Cała zawartość dokumentu jest przetwarzana przez klasę HtmlParser, która tworzy nowe anotacje na podstawie tych już istniejących. Dzieje się to w tym miejscu:

a_document_save.php -> linia 185:
list($annotations_new, $wrong_annotations) = HtmlParser::readInlineAnnotationsWithOverlapping($report->content)

Zwracana jest tablica z nowymi anotacjami $annotations_new, w której znajdują się stare anotacje oraz te poprawione. W dokumencie z przykładu mamy następujące zmiany:

1. w (w ) - (remove begin/end whitespaces)

Usuwane są niepotrzebne biały znaki. To na pewno jest działanie zamierzone.
linia 244:
$changes[] = array("action"=>"remove_whitespaces", "data1"=>$anb, "data2"=>$an, 'annotation_type_name' => $type);

2. z 3 czarnych budynków, zaprojektowanych (z 3 czarnych budynków , zaprojektowanych)
Tutaj też została usunięta niepotrzebna spacja przed przecinkiem.

3. architekta Ludwiga Mies van der Rohe (architekta Ludwiga)
Ten przypadek jest mi najtrudniej wytłumaczyć. Tekst oryginalnej anotacji w tabeli reports_annotations_optimized to "architekta Ludwiga". Nie jestem pewien w jaki sposób inforex zgaduje, że anotacja powinna obejmować pełne nazwisko tej osoby.

Wszystkie te zmiany zachodzą gdzieś w metodzie HtmlParser::readInlineAnnotationsWithOverlapping($content).

#3 Updated by Michał Marcińczuk over 5 years ago

  • Status changed from Odpowiedź to Zamknięty

#4 Updated by Michał Marcińczuk over 5 years ago

Faktycznie, błędy były w kolumnie text w tabeli reports_annotations_optimized. Prawdopodobnie w którymś momencie zostały zapisane w bazie błędne wartości text dla tych anotacji i teraz przy aktualizacji nie zgadza się.

Also available in: Atom PDF