Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Wrong sorting in module listview with sort by type #8402

Closed
Aybee opened this issue Jul 8, 2016 · 14 comments
Closed

Wrong sorting in module listview with sort by type #8402

Aybee opened this issue Jul 8, 2016 · 14 comments
Assignees
Labels
Milestone

Comments

@Aybee
Copy link
Contributor

Aybee commented Jul 8, 2016

Wie auf dem Screenshot zu sehen ist, stimmt die Sortierung nicht.
sort-modules-by-type
Das liegt daran, dass nach dem Feldinhalt von tl_module.type und nicht nach dem Sprachbaustein sortiert wird. Beispiel: logout => Automatic Logout.

Mit BE in DE und dann noch eigenen Erweiterungen, sieht das teilweise sehr schlimm aus. Zum Teil fehlt die Überschrift dabei auch komplett.

Wenn man diese Zeile
https://github.com/contao/core/blob/master/system/modules/core/dca/tl_module.php#L185
testweise auskommentiert

#'reference'               => &$GLOBALS['TL_LANG']['FMD'],

sieht man zwar nur den Feldinhalt als Headline (Beispiel: Article list => articleList), aber das sieht schon besser aus, die Sortierung stimmt (in allen Sprachen) und es gibt keine leeren Überschriften.

Man müsste also entweder aufwendig die Sortierung nach den Sprachbausteinen aufbereiten anstatt nach den Feldinhalten, oder für Felder, welche durch Sprachbausteine übersetzt werden, in den Headlines den Feldinhalt anstatt des Sprachbausteins anzeigen.

@leofeyer leofeyer modified the milestones: 3.5.15, 3.5.16 Jul 10, 2016
@leofeyer leofeyer removed this from the 3.5.16 milestone Aug 25, 2016
@leofeyer
Copy link
Member

Ich sehe das Problem, wüsste aber nicht, wie wir das sinnvoll lösen könnten. Die Sortierung erfolgt auf DB-Ebene und die Übersetzung erst anschließend, daher müssten wir theoretisch alles buffern und vor der Ausgabe neu sortieren. Sehr performant ist das bestimmt nicht.

@Aybee
Copy link
Contributor Author

Aybee commented Aug 25, 2016

Ich finde, wenn nach einer Tabellenspalte sortiert wird (ich denke das ist immer der Fall) und der Wert dann übersetzt wird, dann müsste der Wert aus den Feldern in der Überschrift stehen. Die Übersetzung kann dann ja in eckigen Klammern dahinter erfolgen. Wobei die Übersetzung ja sowieso schon hinter jedem Modul steht.

Vielleicht könnte man diese Zeile https://github.com/contao/core/blob/3.5.15/system/modules/core/drivers/DC_Table.php#L4232

$remoteNew = $this->formatCurrentValue($firstOrderBy, $row[$i][$firstOrderBy], $sortingMode);

ergänzen mit

$remoteNew = $this->formatCurrentValue($firstOrderBy, $row[$i][$firstOrderBy], $sortingMode);

if($GLOBALS['TL_DCA'][$this->strTable]['fields'][$firstOrderBy]['reference'])
{
    $remoteNew = $row[$i][$firstOrderBy] . ' <span style="color:#b3b3b3; font-weight:normal;">[' . $remoteNew . ']</span>';
}

Ich habe in meiner Testinstallation (mit vielen Erweiterungen) mal alle Seiten mit Sortieroptionen durchprobiert, und mir ist erstmal nichts Ungewöhnliches aufgefallen.

Von mir aus kann man dieses

 . ' <span style="color:#b3b3b3; font-weight:normal;">[' . $remoteNew . ']</span>'

auch ganz weglassen, weil es ja sowieso schon hinter den einzelnen Modulen steht.

@leofeyer
Copy link
Member

Das ist noch nicht die optimale Lösung IMHO. Da fällt uns sicherlich beim nächsten Call noch etwas besseres ein @contao/developers.

@Toflar
Copy link
Member

Toflar commented Nov 16, 2016

Options laden, sortieren gem. Sprache und dann FIND_IN_SET(). Was anderes fällt mir da spontan auch nicht ein.

@Aybee
Copy link
Contributor Author

Aybee commented Nov 17, 2016

Hier nochmal der Vergleich, wie ich meine, dass es aussehen könnte und wie es jetzt aussieht.
IST:
themes_ contao_official_demo frontend-module-contao_open_source_cms_3 5-_2016-11-18_00 54 20
SOLL (könnte):
themes_ contao_official_demo frontend-module-contao_open_source_cms_3 5-_2016-11-18_00 52 00

@leofeyer
Copy link
Member

Warum gibt es bei Dir eine Gruppe "HTML-Code"? Sollte da nicht "html" stehen?

@Aybee
Copy link
Contributor Author

Aybee commented Nov 18, 2016

Ja, stimmt. Kommt vielleicht daher, weil es ein Feld in tl_module gibt, welches den gleichen Namen hat wie ein Modultyp. ?
modules\core\languages\de\tl_module.xlf

<trans-unit id="tl_module.html.0">
  <source>HTML code</source>
  <target>HTML-Code</target>
</trans-unit>

Von einer Erweiterung kommt es nicht, habe alle Erweiterungen durchsucht.

@leofeyer
Copy link
Member

Deswegen sage ich ja, dass das noch nicht die optimale Lösung ist. 😄

Außerdem funktioniert das zwar für diesen einen Fall, aber macht es auch in anderen Fällen Sinn? Wenn Mitglieder z.B. nach Land gruppiert sind, stünde da nur "de" und "fr" etc. Das wäre keineswegs aussagekräftig, wenn man nicht zufällig die ISO-Länderkürzel kennt.

@Aybee
Copy link
Contributor Author

Aybee commented Nov 18, 2016

Ja, stimmt, dann dürfte die Sortierung nach Land für Mitglieder momentan auch nicht wirklich sortiert sein. Wir müssten also tatsächlich zuerst die Übersetzung holen und dann danach sortieren, für den Fall, dass referenz für das Feld gesetzt ist.

@leofeyer
Copy link
Member

leofeyer commented Sep 7, 2017

Das wäre auch noch eine Option:

'label' => array
(
	'group_callback' => function ($group, $mode, $field, $row)
	{
		return $row['type'];
	}
),

@Aybee
Copy link
Contributor Author

Aybee commented Sep 7, 2017

Fände ich in Ordnung so. Ach, ist ja wie in meinem Beispiel oben unter SOLL (könnte). Oder?

@leofeyer
Copy link
Member

leofeyer commented Sep 7, 2017

Stimmt. 😄

@leofeyer
Copy link
Member

Geändert in 9675369.

@Aybee
Copy link
Contributor Author

Aybee commented Sep 25, 2017

Thank you 💯

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants