Custom Gutter für die Anzeige von fehlenden Item Sprach-Versionen

„Gutters“ sind wohl eines der versteckteren Features des Sitecore Content Editors – bieten jedoch eine schnelle optische Erfassungsmöglichkeit über die ganze Sitecore-Item-Hierarchie für eine bestimmte Anforderung. Standardmässig sind folgende Gutters im System vorhanden:

  • Clones
  • My Locked Items
  • WorkflowState
  • Broken Links
  • Missing Versions
  • Publishing Warnings
  • Validation Rules
  • Presentation Overriden

Nach der Aktivierung eines oder mehreren Gutters, erscheint – und darum der Name – in der linken „Rinne“ des Content-Editors ein Symbol, welches zusätzliche Informationen visuell, aber auch textuell über einen Tooltip präsentiert. Die vorhandenen Gutters decken bereits eine gewisse Anzahl an Bedürfnissen ab, je nach Projekt können aber natürlich weitere hinzukommen. Die Grundarchitektur von Sitecore ermöglicht einem hierbei, eigene Gutters zu erstellen. Selbstverständlich auf einfache Art und Weise.

Ein Beispiel

Als häufige Kundenanforderung wird oft eine Übersichtsmöglichkeit gewünscht, bei der man sehen kann, ob ein Item in der aktuell aktivierten Sprache vorhanden ist, oder nicht. Out of the Box bietet Sitecore den Gutter „Missing Versions“ an, welcher sich jedoch darauf spezialisiert hat alle Items hervorzuheben, welche irgend eine Lücke in einer Sprache besitzen – unabhängig von der gewählten Sprach-Version. Dies ist zwar sehr nützlich, jedoch nicht für jede Situation brauchbar.

Aus diesem Grund erstellen wir nun einen eigenen Gutter mit der gewünschten Funktionalität. Da wir in einigen Projekten den Language Fallback von Alex Shyba im Einsatz haben, werden wir dieses Modul ebenfalls mitberücksichtigen.

 

1. Erstellung der Klasse, welcher innerhalb der Web-Applikation zur Verfügung steht:

namespace Project.Core.Gutters
{
using System;
using Sitecore.Data.Items;
using Sitecore.Data.Managers;
using Sitecore.Diagnostics;
using Sitecore.Globalization;
using Sitecore.Shell.Applications.ContentEditor.Gutters;

///
/// Represents a LockedItems.
///

public class MissingCurrentVersion : GutterRenderer
{
///
/// The language fallback field name
///

private const string FIELD_FALLBACK = „Fallback“;

#region Methods

///
/// Gets the icon.
///

////// The item.
/// ///
/// The icon.
///
protected override GutterIconDescriptor GetIconDescriptor(Item pItem)
{
Assert.ArgumentNotNull(pItem, „pItem“);

if (pItem.Versions.Count > 0)
{
return null;
}

try
{
var language = LanguageManager.GetLanguage(pItem.Language.CultureInfo.Name);
var langItem = language.GetItem(pItem.Database);
if (langItem != null && !string.IsNullOrEmpty(langItem[FIELD_FALLBACK]))
{
var fallbackLangItem = LanguageManager.GetLanguage(langItem[FIELD_FALLBACK]);
if (fallbackLangItem != null)
{
var fallbackItem = pItem.Database.GetItem(pItem.ID, fallbackLangItem);
if (fallbackItem != null)
{
if (fallbackItem.Versions.Count > 0)
{
string fallBackMessage = string.Format(„{0} {1} | {2} {3}“, Translate.Text(„Missing versions in: „), pItem.Language.CultureInfo.EnglishName, Translate.Text(„Use Fallback-Language: „), fallbackLangItem.CultureInfo.EnglishName);
GutterIconDescriptor fallbackGutterIconDescriptor = new GutterIconDescriptor { Icon = „Applications/32×32/nav_undo_red.png“, Tooltip = fallBackMessage };
return fallbackGutterIconDescriptor;
}
}
}
}
}
catch (Exception ex)
{
Log.Warn(string.Format(„Gets an Error to check the Language-Versions with message: {0}“, ex.Message), this);
}

string str = string.Format(„{0} {1}“, Translate.Text(„Missing versions in: „), pItem.Language.CultureInfo.EnglishName);
GutterIconDescriptor gutterIconDescriptor = new GutterIconDescriptor { Icon = „Applications/32×32/warning.png“, Tooltip = str };
return gutterIconDescriptor;
}

#endregion
}
}

 

2. Anschliessend müssen wir nur noch unsere Klasse in der Sitecore-Core-Datenbank registrieren.

Pfad: /sitecore/content/Applications/Content Editor/Gutters/

 

That’s it! Nun haben wir alle Entwicklungsarbeiten erledigt & können unseren neuen Gutter im Content Editor aktivieren:

 

Anschliessend erhalten wir von Sitecore  eine Warnung, wenn ein Item in unserer aktiven Sprache nicht gepflegt wurde:

Zusätzlich wird eine andere Anzeige aktiviert, wenn es zwar keine Version in meiner aktiven Sprache gibt, aber die definierte Fallback-Sprache hier greifen würde. Dieses Icon ist nur dann ersichtlich, wenn das Modul auch installiert wurde. Ohne Fallback-Modul würde hier ebenfalls das „Warn“-Icon angezeigt werden.

Fazit
Zusammenfassend kann man behaupten, dass man über Gutters sehr schnell, mit sehr wenig Aufwand solche Anzeige-Hilfen in Sitecore erstellen lassen kann.
Daraus resultiert eine Qualitäts- und Produktivitätssteigerung für die Backend-Authoren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>