Erweiterung des Seitensymbolstatus in SDL Trdidion 2009

9

Wir verwenden SDL Tridion 2009 SP1.     Wir haben eine neue Funktionalität implementiert, eine Erweiterung in unserem CMS, mit der wir eine Seite sperren konnten.     Wenn eine Seite gesperrt ist, kann sie nicht mehr veröffentlicht werden (die Information einer gesperrten Seite wird in einer Datenbank gespeichert, die für diese Erweiterung erstellt wurde).

Wir möchten ein neues Symbol hinzufügen, das den Benutzer über den neuen Status der Seite informiert.

Jetzt gibt es 4 Kombinationen von Symbolen (keine Aktion, geprüft, veröffentlicht, überprüft und veröffentlicht)

Da ich keine lange Erfahrung mit der CMS-Schnittstelle habe, möchte ich Hilfe bei der Suche nach einer Lösung, die keine Auswirkungen auf die Leistung und dass es einfach zu implementieren ist in Bezug auf nicht viele Änderungen zu tun.

Unten ist meine Untersuchung diesbezüglich:

Ich habe bemerkt, dass die Art und Weise, wie die Icons in den CMS gerendert werden, kein einfacher Mechanismus ist, der einfach aktualisiert werden kann. Jedes Mal, wenn wir auf ein Element auf der linken Seite des CMS klicken, wird, um die Liste von der rechten Seite zu rendern, ein Ajax-Aufruf (mit einer XML-Anforderung) an den WebGUIResponder.aspx durchgeführt. Seite.

Die Antwort, die wir erhalten, ist eine XML, die das Attributfeld Icon

enthält %Vor%

Ausgehend von diesem Feld Icon-Attribut (Icon="T64L0P1) beginnt der Image-Name verarbeitet zu werden.

  • T64 = bedeutet, dass es eine Seite
  • ist
  • L0 = wird nicht überprüft
  • P1 = es ist bereits veröffentlicht

Für ein solches Feld lautet das Bildname-Ergebnis = T64.16x16.List.Published.gif

Ich konnte keine Möglichkeit finden, dieses Feld über die XML-Seite zu aktualisieren, es handelt sich nicht um eine Information, die im XML-Dokument gespeichert ist, sondern in der DLL erstellt wird, wenn der XML-Anfrage (Irgendwo basierend auf anderen Feldern wie veröffentlicht und etwas anderes wird dieses Symbolfeld berechnet.)

Wenn es also nicht möglich ist, dieses Feld zu ändern, ist die Option, die wir haben können: Um unsere Änderung in das CMS zu integrieren, ohne ihre .dll zu modifizieren (dies für die Kompatibilität mit der neuen Version der SDL Trdion ist nicht gut, in der DLL zu ändern) und ohne die Logik zu sehr zu ändern, dachte ich an diesen Ansatz.

Wir können einen neuen Ajax-Aufruf an eine neue Seite WebGUICheckPageLocked.aspx machen (müssen getestet werden, was sich auf die Leistung auswirkt).  Im Code hinter dieser Seite können wir feststellen, ob die Seite gesperrt ist oder nicht (hat unsere interne Funktion verwendet, die bestimmt, ob die Seite gesperrt ist oder nicht, diese Funktionalität ist bereits erledigt). Auf der Seite werden wir das Symbolfeld in etwas T64L0P1E01 ändern (einige zusätzliche Informationen hinzufügen, die uns erlauben, den neuen Status der Seite zu bestimmen). Wir werden auch die Javascript-Funktion "GetPNGIconName" ändern. Dann können wir eine zusätzliche Überprüfung vornehmen, die die neuen Informationen berücksichtigt E01 ...)

Bitte, wenn jemand eine bessere Idee dazu hat, ist es vielleicht etwas Einfaches, das getan werden kann, vielleicht ist es eine Möglichkeit, das Icon-Feld zu aktualisieren.

Mit freundlichen Grüßen, Cristina

    
Cristina 02.05.2012, 16:37
quelle

1 Antwort

5

Ich werde meine Antwort aus den Foren hier einfügen, damit jeder sehen kann (und vielleicht Ideen bringen, wie man es anders macht?) ...

Im Jahr 2011 würde ich einen Data Extender verwenden, um das Symbol zu ändern.

Da dies 2009 ist, müssen Sie den weniger eleganten Vorgänger verwenden: die GUI Responder Extension. Im Wesentlichen müssen Sie den XML-Code bearbeiten, der für die relevanten Anforderungen zurückgegeben wird (z. B. die GetList für einen Ordner).

Ich konnte nicht sofort irgendeine Dokumentation darüber finden - was nicht überraschend ist, da es eine ältere Version ist. Aber es läuft darauf hinaus:

  1. Erstellen Sie eine .NET-Assembly, die eine Klasse mit der folgenden Methodensignatur und dem folgenden Attribut enthält:
%Vor%
  1. Bei dieser Methode können Sie das im XML-Code gesetzte Symbol basierend auf Ihrer eigenen Logik ändern.
  2. Fügen Sie in der Erweiterungskonfigurationsdatei einen Abschnitt hinzu, der in die Antwort für die Listen aufgenommen wird, die Sie interessieren (Ersetzen Sie "YourResponderExtension.dll" durch den Namen der Assembly, die Sie hinzugefügt haben):
%Vor%
  1. Fügen Sie weitere Elemente hinzu, falls vorhanden - und machen Sie die XPath-Abfrage so spezifisch wie möglich, damit Ihre Erweiterung nicht unnötig aufgerufen wird. Möglicherweise müssen Sie auch nach weiteren Fällen im .NET-Code suchen, die mit der XPath-Abfrage nicht möglich sind.
  2. Zippen Sie Ihre Erweiterung hoch und stellen Sie sie mit TcmExtensionInstaller.exe bereit.

In Ihrem Text gehe ich davon aus, dass Sie bereits 2009 herausgefunden haben, wie Sie eine Erweiterung erstellen und verpacken können. Ich hoffe, dass Sie mit diesen kleinen Schritten beginnen können.

Wenn Sie irgendwelche Probleme oder Folgefragen haben, lassen Sie es mich wissen und ich werde sehen, ob ich sie beantworten kann.

    
Peter Kjaer 03.05.2012 08:24
quelle

Tags und Links