EntityTemplateFieldReadOnlyEditorExtension reference
This article provides reference material about EntityTemplateFieldReadOnlyEditorExtension
class. All entity template field read only editor extensions
have to be inherited from the EntityTemplateFieldReadOnlyEditorExtension
which, in turn, inherits from the core
Sana Commerce Cloud Extension
class.
There is also generic class EntityTemplateFieldReadOnlyEditorExtension<TSettings>
inherited from
EntityTemplateFieldReadOnlyEditorExtension
which provides template field read only editor extensions with possibility to use extra settings required to display field value by editor. It takes type inherited from EntityTemplateFieldEditorSettings
as a generic type
parameter.
Properties
FieldType
The field type for which the editor can be used.
public override EntityTemplateFieldType FieldType => EntityTemplateFieldType.DeliveryDate;
Name
The unique name of template field editor among other editors.
public override string Name => "MyDeliveryDateEditorReadOnly";
Title
The field editor title which will be shown in admin.
public override string Title => "My delivery date editor";
Methods
Note
All code examples may contain nonexistent methods or properties. They are used as declarations only and should be created if they fit the designed extension or deleted if they do not.
CreateDefaultSettings
Creates default field editor settings.
This method should be used to create editor settings with default values.
public override EntityTemplateFieldEditorSettings CreateDefaultSettings() =>
new ReadOnlyDeliveryDateTemplateFieldEditorSettings() { LongFormat = true };
FormatValueForDisplayAsync
Formats managed by the field editor value for display.
This method is used by Sana to format read only field value previously managed by editor.
External API calls can be made to get extra information required for value formatting, it is better to use MemoryCache
with short lifetime for results in this case to prevent extra API calls.
public override ValueTask<string> FormatValueForDisplayAsync(
object value,
TemplateFieldEditorSettings settings,
EntityTemplateFieldDisplayValueFormatContext context)
{
var date = (DateOnly)value;
return ValueTask.FromResult(date.ToLongDateString());
}
InitSettings
Initializes the field editor settings with additional data required for field value display.
Check full example with all required classes
public class ReadOnlyDeliveryDateTemplateFieldEditorExtension
: EntityTemplateFieldReadOnlyEditorExtension<ReadOnlyDeliveryDateTemplateFieldEditorSettings>
{
public override string Name => "MyDeliveryDateEditorReadOnly";
public override string Title => "My delivery date display";
public override EntityTemplateFieldType FieldType => EntityTemplateFieldType.Date;
protected override ValueTask<string> FormatValueForDisplayAsync(
object value,
ReadOnlyDeliveryDateTemplateFieldEditorSettings settings,
EntityTemplateFieldDisplayValueFormatContext context)
{
var date = (DateOnly)value;
var displayValue = settings.LongFormat ? date.ToLongDateString() : date.ToShortDateString();
return ValueTask.FromResult(displayValue);
}
}
public class ReadOnlyDeliveryDateTemplateFieldEditorSettings : EntityTemplateFieldEditorSettings
{
[Display(Name = "DeliveryDateDisplayLongFormat", Order = 10, Description = "DeliveryDateDisplayLongFormatDescription")]
public bool LongFormat { get; set; }
}