FriendsOfREDAXO/tricks

Neuer Trick: Artikel-Metadaten aus YForm-Tabelle per Ajax im Artikel hinzufügen

danspringer opened this issue · 14 comments

Bin leider an nem korrekten PR vor einiger Zeit an den Branches gescheitert, deshalb jetzt hier als Issue:

Manchmal möchte man REDAXO-Artikeln Artikel-Metadaten per Checkbox hinzufügen (z.B. für Tags, Farben, etc.). Im Beispiel möchten wir REDAXO-Artikeln verschiedene, in einer YForm-Tabelle vorgehaltene, Tags hinzufügen. Damit ein Redakteuer nun zur Ergänzung von neuen Tags seinen Workflow bei der Bearbeitung eines Artikels nicht unterbrechen muss, um neue Tags in der YForm-Tabelle anzulegen eignet sich dieser Trick. Er zeigt, wie man im Bearbeiten-Modus des REDAXO-Artikels neue Tags "on-the-fly" per Ajax anlegen kann.

be_yform_meta_ajax

be_yform_meta_ajax.md

Ich machs rein. Danke

Hab das einmal getestet und scheinbar ist da noch ein Fehler enthalten. Sobald man mehrere Tabs vom Backend (angenommen 3) offen hat, wird beim Anlegen eines neuen Tags die Checkbox dann entsprechend 3 mal angezeigt. Nach einem Reload des Browser erscheint die Checkbox dann nur einmal.

Browser: Safari 14.1.1
Redaxo: 5.12.0

Scheint an diesem fehlerhaften HTML zu liegen.

Alt

$('.metainfo-sidebar label[for="rex-metainfo-art_tags"]').append('<br><a href="#" class="btn btn-save" id="btn-open-tag-modal">Neues Tag anlegen</button>');

Neu

$('.metainfo-sidebar label[for="rex-metainfo-art_tags"]').append('<br><button class="btn btn-save" id="btn-open-tag-modal">Neues Tag anlegen</button>');

Ah, super. Danke dir fürs Testen.
Ich passe es heute Nachmittag an.

@danspringer Wenn du bei dir in einem Artikel auf den Tab "Editiermodus" klickst, wird dann auch der Button "Neues Tag anlegen" mehrfach hinzugefügt?

Ja, tatsächlich. Kann ich bestätigen.
Bei einem normalen Reload passiert das nicht.
Scheint mit pjax zusammenzuhängen.

Ich habe hier die zweite Zeile hinzugefügt und alles andere darin gekapselt.

$(document).on('rex:ready', function (event, container) {
    container.find('#rex-js-main-sidebar').each(function () {
        ...
    });
});

Was jetzt noch schön wäre, wenn es gleich ein Beispiel für die SQL-Abfrage mit bringt. Ggf. sogar mit Gewichtung.

Was meinst du mit Gewichtung, bzw. mit Beispiel für eine SQL-Abfrage?

Was meinst du mit Gewichtung, bzw. mit Beispiel für eine SQL-Abfrage?

Ich nutze das derzeit um "ähnliche Artikel" zu finden. Diese werden dann unterhalb des angezeigten Artikels angeteasert.

Ungefähr so: Nimm die Tags vom angezeigten Artikel und suche nach Artikeln die auch diese Tags besitzen. Hat ein Artikel 3 Tags, wie der angezeigte Artikel, wird dieser höher gewichtet als der Artikel, der eventuell nur ein Tag hat.

Achso, du meinst dann für die tatsächliche Nutzung/Ausgabe der Tags im Frontend?
Ist das für so nen Trick nicht schon wieder ein bisschen zu speziell? Zumal es sich hier ja jetzt erstmal aufs BE beschränkt.

Ist das für so nen Trick nicht schon wieder ein bisschen zu speziell?

Warum nicht auch Beispiel-Lösungen für das Frontend anbieten? Ich finde das macht diesen Trick dann noch etwas runder :)

@danspringer sorry .. dass ich erst jetzt dazu komme. Ist das MD im ersten Posting schon das finale?

ah ne, das ist ja schon drin 👍🏻https://friendsofredaxo.github.io/tricks/addons/structure/be_yform_meta_ajax , dann Close ich mal