Manuelle Sortierung in Listen

Nutzbar ab: Version

Drag and Drop Sortierung in Listen nutzen.

Die manuelle Listensortierung per Drag & Drop ermöglicht Ihnen zusätzlich zur automatischen Sortierung eine individuelle Sortierung einer Weblication® CMS Liste. Alle nicht manuell positionierten Listeneinträge bleiben dann weiterhin nach dem primären Sortierkriterium sortiert. Die manuelle Sortierung heben Sie einfach per Mausklick wieder auf.

Diese manuelle Sortierung in Listen erfordert innerhalb des verwendeten Listen Darstellungstemplates einen WSL-Aufruf (wsl:moverListEntry), siehe BASE Classic oder den Aufruf über die PHP-Framework Funktion wList::createXsltEditbuttons, siehe BASE (Mobile First). Diesen finden Sie in den meisten Listen Darstellungstemplates bereits standardmässig eingebunden (z.B. default.wFilelist.php, compact.wFilelist.php, etc.).
In einem BASE Classic Projekt müssen Sie zusätzlich im Listentemplate definieren, dass man die manuelle Sortierung aktivieren darf, was über die erweiterte Bearbeitungsmaske (editmaskExtended) des Listen Darstellungstemplates erfolgt (showInputManualOrder:yes). Die BASE Mobile First setzt dies schon im Standard über das Generieren der Editbuttons.

Beispiel: Auszug aus default.wFilelist.php der BASE Mobile First zum wList:createXsltEditbuttons Aufruf

...
  <!-- Darstellung der Schaltflächen -->
  <xsl:template name="listEntryEditbuttons">
    
    <wslPre:php><![CDATA[print wList::createXsltEditbuttons(array('context' => 'entry', 'showIfPublic' => true, 'showFilemanager' => false, 'allowObjectwizard' => true));]]></wslPre:php>

  </xsl:template>
...

Beispiel: Auszug aus default.wFilelist.php der BASE Classic zum wsl:moverListEntry

...
  <wd:editmaskExtended>
    <![CDATA[
      <!--wOptionsEditmaskExtended="showInputAllowSelf:yes;showInputOrder:yes;showInputLimits:yes;showInputLimitFrom:yes;showInputAllowOrderParam:yes;showInputAllowEntriesPageByParam:yes;showInputManualOrder:yes;showInputNoEntries:yes"-->
      ...
     ]]>
  </wd:editmaskExtended>
  ...
  <xsl:template match="/wFilelist">
  ...
    <xsl:choose> 
      <xsl:when test="files/file">    
       <ul class="listDefault listDefault_var{//data[@name = 'layout']/text()}">
  
          <!-- Schleife über alle Dateien -->
          <xsl:for-each select="files/file">
          ...
            <li class="listEntry">
            ...
              <xsl:if test="not($wIsInEditor) and php:functionString('wRequest::getParameter', 'wIsEmbeddedLanguage') != '1' and ($wUsertype = 'admin' or $wUsertype = 'standard')">
                <wsl:moverListEntry path="{@path}" manualOrderId="{/wFilelist/wData/data[@name = 'manualOrderId']/text()}" manualOrderIdEntry="{wd:extension/wd:object/wd:data[@id = 'manualOrderId']/@*[name() = concat('list-', /wFilelist/wData/data[@name = 'manualOrderId']/text())]}"/>
                ...
...
...

In eingeloggtem Zustand sieht dies bei entsprechender Berechtigung wie folgt aus:

Listensortierung per Drag&Drop
Listensortierung per Drag&Drop

Optionale Positionierung der Drag & Drop Elemente

Sofern aufgrund individueller Listen-Varianten die Steuerungselement für die manuelle Sortierung (Anfasser bzw. Zielfläche) nicht (ganz) ersichtlich sind, können Sie individuell in der entsprechenden CSS-Listen-Variante darauf eingehen.

Beispiel: Auszug aus der listDefault.scss einer BASE (Mobile First)

/* CSS-Klasse für den Anfasser zum Verschieben */
    .wglListEntryMover     {}

/* CSS-Klassen für die Zielfläche */
    .wglMarkerManualSort   {z-index:999;position:relative;top:12px;left:12px;}
    .wglMarkerManualSortMo {z-index:999;position:relative;top:12px;left:12px;}

Hinweise

Wichtige Hinweise

  • Das XSLT Template für die Liste (list.standard.wItem) muss in aktueller Version installiert sein, da sie über diese die manuelle Sortierung aktivieren können.
  • In eine Liste eingelesene Binärdateien müssen eingecheckt sein, damit hierzu ein Anfasser zum Verschieben ersichtlich wird.
    Hintergrund: In jeder eingelesenen Datei wird im Objekt eine "manualOrderId" pro Liste hinterlegt.
  • Die manuelle Sortierung funktioniert NICHT, wenn eine Liste mit "Filter für Veranstaltungen" oder eine Sortierung mit Callback-Funktion genutzt wird!