Linkverzeichnis ab_linklist

Auch die Links auf die verwiesen wird sollten irgendwie verwaltet werden. Mit der Verwendung von ab_linklist und dessen Möglichkeiten war ich zu Beginn mit meinen Typo3 Kenttnissen allerdings etwas überfordert.

Aus diesem Grund habe ich im ersten Anlauf nur einzelne Listenansichten mit Links realisiert.

Da mir diese Konfiguration etwas zu unflexibel erschien, habe ich mich in ein paar schlaflosen Nächten mit der Materie auseinandergesetzt und das Ganze auf Katalogansicht umgestellt.

Dabei bin ich jedoch auf ein Problem im Zusammenhang mit CoolURI gestolpert. Das Problem war im Bereich der Funktion „Link als nicht funktionierend melden“ oder „Link bewerten“. Auf Grund der Art und Zusammensetzung der übergebenen Parameter wurde mit CoolURI nicht mehr die Katalogansicht aufgebaut.

Das Problem

Beim Verlassen der Masken für „Nicht funktionierenden Link melden“ und „Link bewerten“ wurden neben den Parametern für die Kategorieansicht auch die Parameter für das Starten der Masken beibehalten.

Für diese Kombination war ich nicht in der Lage CoolURI richtig zu konfigurieren.

Änderungen zum Original

Ich habe an mehreren Stellen im originalen Code von ab_linklist Änderungen vorgenommen:

  • Beim Aufruf einer Linkfunktion wird der „Rücksprunglink“ gebildet.
  • Einsetzen dieses Links anstelle der JS-Funktionen history.back()
  • Redirekt auf den Link wenn Funktion mit Cancel abgebrochen wird

Bildung des Links

Den Link habe ich über folgende php-Anweisungen gebildet:

Code

// Build Link for redirects after postback or at cancel of forms
// added for cool_uri support - begin
$redirParams = Array();
 
switch($this->linkMode){
    case 'TREE':
        $redirParams['cid'] = $this->cObj->data['uid'];
    break;
 
    case 'CATALOG':
        $redirParams['action'] = 'getviewcatalog';
        $redirParams['category_uid'] = $categoryUID;
        $redirParams['cid'] = $this->cObj->data['uid'];
    break;
 
    case 'CATEGORY':
        $redirParams['action'] = 'getviewcategory';
        $redirParams['category_uid'] = $categoryUID;
        $redirParams['cid'] = $this->cObj->data['uid'];
    break;
}
 
// create link for redirect and back link
 
$this->redirLink = $this->pi_LinkTP_keepPIvars_url($redirParams, 1, 1, 0);
$this->redirLink = t3lib_div::locationHeaderUrl($this->redirLink);

Ausführung Redirect

Wird bei einer der zuvor erwähnten Funktionen diese mit Cancel abgebrochen, führe ich anstelle des originalen Codes einen Redirekt aus.

Im Folgenden Ausschnitt habe ich den Originalcode auskommentiert.

Code

case 'getviewreportbrokenlink':
    if( htmlspecialchars( trim( $this->piVars['submit_button'] ) ) != null ) {
        $content = $this->getViewReportBrokenLinkResult( $uid, $categoryUID );
    } elseif( htmlspecialchars( trim( $this->piVars['cancel_button'] ) ) != null ) {
 
        // added for cool_uri support - begin
        header('Location: ' . $this->redirLink);
        exit();
 
        // if( $this->linkMode == 'TREE' ) {
        //
        // FIXME: startCategoryID not taken into account
        //  $content = $this->displayTree();
        // } elseif( $this->linkMode == 'CATALOG' ) {
        //  $content = $this->displayCatalog( $categoryUID );
        // } else {
        //  $content = $this->displayCategory( $categoryUID );
        // }
        // added for cool_uri support - end
    } else {
        $content = $this->getViewReportBrokenLink( $uid, $categoryUID );
    }
break;

Cooluri

Nachfolgend die für ab_linklist erforderliche CoolURI Konfiguration

CoolUriConf.xml

<uriparts>
 
    <part>
      <parameter>tx_ablinklist_pi1[category_uid]</parameter>
      <lookindb>
        <to>SELECT label FROM tx_ablinklist_category WHERE uid=$1</to>
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
        <urlize>1</urlize>
     </lookindb>
    </part>
    <part>
      <parameter>tx_ablinklist_pi1[uid]</parameter>
      <lookindb>
        <to>SELECT label FROM tx_ablinklist_link WHERE uid=$1</to>
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
        <urlize>1</urlize>
      </lookindb>
    </part>
 
  </uriparts>
 
  <predefinedparts>
 
    <part>
      <parameter>tx_ablinklist_pi1[pointer]</parameter>
    </part>
    <part>
      <parameter>tx_ablinklist_pi1[cid]</parameter>
    </part>
 
    <part>
      <parameter>cHash</parameter>
    </part>
    <part>
      <parameter>no_cache</parameter>
    </part>
 
  </predefinedparts>
 
  <valuemaps>
 
    <valuemap>
      <parameter>tx_ablinklist_pi1[action]</parameter>
      <value key="show-category">getviewcatalog</value>
      <value key="propose-a-new-link">getviewaddnewlink</value>
      <value key="open-link">getviewclickedlink</value>
      <value key="show-details-for-link">getviewdetailsforlink</value>
      <value key="report-broken-link">getviewreportbrokenlink</value>
      <value key="rate-link">getviewratelink</value>
    </valuemap>
 
  </valuemaps>

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen