Приложенията за добавки се изграждат от класове, които наследяват интерфейса ITfApplicationAddon
. Tefter.bg сканира за тези класове при стартиране и ги прави достъпни за потребителите.
Приложенията за добавки също изискват типизирани компоненти за техния жизнен цикъл. Обикновено приложенията за добавки създават свои собствени таблици в базата данни за съхранение и управление на своите данни.
Стандартният процес за създаване и разпространение на приложение за Tefter.bg включва разработване на Razor библиотечен проект и след това разпространение на резултата като NuGet пакет. За практически примери можете да прегледате проектите на съществуващи доставчици, създадени от нас, като:
Seed Project | GitHub |
Talk Application | GitHub |
Asset Application | GitHub |
Обичайната структура на проектите е следната:
Това е обичайната структура на метода и неговите свойства и методи за обратно извикване.
namespace WebVella.Tefter.Seeds.SampleApplication;
public class SampleApp : ITfApplicationAddon
{
public const string ID = "1492d19b-c8b2-4abb-9e88-2b645ba518ff";
public const string NAME = "Sample Application";
public const string DESCRIPTION = "Sample Application Description";
public const string FLUENT_ICON_NAME = "Album";
public Guid Id { get; init;} = new Guid(ID);
public string Name { get; init;} = NAME;
public string Description { get; init;} = DESCRIPTION;
public string FluentIconName { get; init;} = FLUENT_ICON_NAME;
public void OnStart()
{
}
public void OnRegisterDependencyInjections(IServiceCollection services)
{
services.AddSingleton<ISampleAppService, SampleAppService>();
}
}
Тъй като приложенията за добавки могат да имат свои собствени таблици с данни, миграциите се използват за създаване и управление на тези таблици в различни версии.
Типичен клас за миграция трябва да наследи интерфейса ITfApplicationMigration
и да има атрибут на клас TfApplicationMigration
.
Тези класове се откриват и изпълняват по време на фазата на стартиране на програмата, във възходящ ред въз основа на низа на версията, дефиниран в атрибута.
Ето пример за такава миграция:
using Microsoft.Extensions.DependencyInjection;
namespace WebVella.Tefter.Seeds.SampleApplication.Migrations;
[TfApplicationMigration(SampleApp.ID, "2025.04.04.01")]
public class SampleAppMigration2025040401 : ITfApplicationMigration
{
public Task MigrateDataAsync(ITfApplicationAddon app, IServiceProvider serviceProvider, ITfDatabaseService dbService)
{
ISampleAppService sampleAppService = serviceProvider.GetService<ISampleAppService>();
sampleAppService.AddNote("Test note 1");
sampleAppService.AddNote("Test note 2");
sampleAppService.AddNote("Test note 3");
return Task.CompletedTask;
}
public Task MigrateStructureAsync(ITfApplicationAddon app, TfDatabaseBuilder dbBuilder)
{
dbBuilder
.NewTableBuilder(Guid.NewGuid(), "sample_app_notes")
.WithColumns(columns =>
{
columns
.AddGuidColumn("id", c => { c.WithAutoDefaultValue().NotNullable(); })
.AddShortTextColumn("note_text", c => { c.NotNullable().WithDefaultValue(""); })
.AddDateTimeColumn("created_on", c => { c.WithDefaultValue(DateTime.UtcNow); });
})
.WithConstraints(constraints =>
{
constraints
.AddPrimaryKeyConstraint("pk_sample_app_note_id", c => { c.WithColumns("id"); });
});
return Task.CompletedTask;
}
}
Този компонент позволява приложение да бъде интегрирано в страници на пространство, като позволява на приложението да има собствен тип страница в навигацията на пространството. Той трябва да наследи интерфейса ITfSpacePageAddon
. Прочети повече.
Този компонент позволява на приложение да инжектира собствена административна или обща страница на таблото за управление. За страница на административен панел той трябва да наследи интерфейса ITfScreenRegionComponent<TfAdminPageComponentContext>
, а за публична страница на таблото за управление интерфейсът е ITfScreenRegionComponent<TfPageComponentContext>
. Прочети повече.
Ако имате нужда от конкретна селекция на данни в изгледа на пространството, това е начинът. Прочети повече
Ако имате нужда от специфично представяне на данни в изгледа на пространството, това е начинът.Прочети повече