Dokumente absteigend sortieren?

Hast du Vorschläge, was wir an Admidio noch verbessern könnten ? Hier kannst du uns deine Vorstellung an neuen Funktionen mitteilen.
Antworten
eiseli
Beiträge: 42
Registriert: 21. Nov 2011, 11:08

Dokumente absteigend sortieren?

Beitrag von eiseli »

Hallo,

Benutze die Version 2.3 und bin soweit sehr zufrieden damit. Im Vorstand wurde die Frage gestellt, ob die Vorstandsprotokolle (wir treffen uns alle 2 Wochen, daher gibt es eine Menge davon), nicht etwa nach Datum absteigend angezeigt werden könnten.

Als Alternative könnte man sich vorstellen, ältere Protokolle in ein Unterverzeichnis zu verschieben (s. http://admidio.org/forum/viewtopic.php? ... =dokumente )

Ich werde versuchen, das sortieren bei uns zu implementieren, falls andere Interesse haben daran, bitte melden.
eiseli
Beiträge: 42
Registriert: 21. Nov 2011, 11:08

Code

Beitrag von eiseli »

Hallo Leute,

adm_program/modules/downloads/downloads.php, ab ca. Zeile 144 habe ich am Anfang des else-Blocks folgenden Code hinzugefügt. Die Variable $mysortkeys könnte sogar in der Config gespeichert werden, oder noch besser, man könnte die Sortierung auf der Tabellenüberschrift zulassen, so dass zwar eine Standardsortierung vorgegeben wird, der Benutzer aber beliebig nach Name, Datum, Anz. Downloads usw... sortieren könnte.

Falls ihr Kommentare zum Programmierstil habt, das eine oder andere einfacher gelöst hätte werden können, nehme ich eure Anregungen gerne entgegen, habe schon lange nicht mehr PHP programmiert, so waren meine Kenntnisse etwas eingerostet...

Code: Alles auswählen

    echo'<tr>
       <td colspan="'.$colspan.'">'.$gL10n->get('DOW_FOLDER_NO_FILES').'</td>
    </tr>';
}
else
{
	$folderContent1 = array();
	foreach(array('fol'=>'folders','fil'=>'files') as $i=>$j)
	{
		$m = $folderContent[$j];
		$mysortkeys = array(array('key'=>'timestamp', 'order'=>SORT_DESC),array('key'=>'name', 'order'=>SORT_ASC));
		//$mysortkeys = array(array('key'=>'name', 'order'=>SORT_DESC));
		if ($m)
		{
			foreach($m as $c=>$k)
			{
				// die 3 nächsten Codezeilen müssen noch verallgemeinert werden
				$sort_fil_timestamp[] = $k[$i . '_' . $mysortkeys[0]['key']];
				$sort_fil_name[] = $k[$i . '_' . $mysortkeys[1]['key']];
			}
			array_multisort($sort_fil_timestamp, $mysortkeys[0]['order'], $sort_fil_name, $mysortkeys[0]['order'], $m);
		}
		$folderContent1 = array_merge($folderContent1, array($j=>$m));
	}
	$folderContent=$folderContent1;
	unset($m);
	unset($folderContent1);

    //Ordnerinhalt ausgeben
    if (isset($folderContent['folders'])) {
        //als erstes die Unterordner
        for($i=0; $i<count($folderContent['folders']); $i++) {
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Eiseli,

die Sortierung über die Überschriften zu ermöglichen wäre sicher die Beste Lösung für Admidio im Standard. So wie ich deinen Code jetzt verstanden habe, hast du bei dir die Standardsortierung auf das Datum abgeändert. Das würde ich jetzt nicht so gerne in den Standard übernehmen, da eine Sortierung nach Name erst einmal für Außenstehende am transparentesten ist.

Viele Grüße
Fasse
eiseli
Beiträge: 42
Registriert: 21. Nov 2011, 11:08

Beitrag von eiseli »

Hallo Fasse,
fasse hat geschrieben: So wie ich deinen Code jetzt verstanden habe, hast du bei dir die Standardsortierung auf das Datum abgeändert. Das würde ich jetzt nicht so gerne in den Standard übernehmen, da eine Sortierung nach Name erst einmal für Außenstehende am transparentesten ist.
Nicht ganz. Ich möchte die Sortierung ermöglichen. Standard kann man nach wie vor nach Name lassen, aber per Konfiguration stattdessen nach Datum absteigend oder nach "Popularität", sprich Anzahl Downloads oder oder oder ermöglichen.
fasse hat geschrieben: die Sortierung über die Überschriften zu ermöglichen wäre sicher die Beste Lösung für Admidio im Standard.
Genau, und ich denke auch, dass die Sortierung im Backend stehen muss (also etwas in der Art wie ich es hier gezeigt habe), damit das Klicken auf die Spaltenüberschriften funktioniert. Oder würdest du eher eine Javascript-Sortierung machen?
Antworten