Я недавно начал использовать Umbraco и сейчас пытаюсь понять, как добавить в него свои собственные разделы.
Пока мне удалось добавить новый раздел, и я также начал добавлять собственное дерево с помощью различных сообщений в блогах, таких как: http://www.robertgray.net.au/2011/5/10/creating-a-custom-content- tree-in-umbraco и http://www.geckonewmedia.com/blog/2009/8/3/how-to-create-a-custom-section-in-umbraco-4
Цель этого нового раздела - отобразить запросы, которые я хотел бы сохранить в базе данных. Записи нужно просто просматривать, но нельзя редактировать.
Пока у меня есть корневой узел под названием "Запросы" и узел ниже под названием "Общие запросы". Я хотел бы перечислить все запросы как дочерние узлы «Общие запросы», а затем, нажав на, я хотел бы иметь возможность отображать детали запроса в основной области справа.
В первом сообщении блога, ссылка на который приведена выше, был предоставлен следующий код, демонстрирующий, как отображать дочерние узлы:
using atomicf1.domain.Repositories;
using atomicf1.persistence;
using umbraco.cms.presentation.Trees;
namespace atomicf1.cms.presentation.Trees
{
public class loadDrivers : BaseTree
{
private IDriverRepository _driverRepository;
public loadDrivers(string application) : base(application)
{
_driverRepository = new DriverRepository();
}
protected override void CreateRootNode(ref XmlTreeNode rootNode)
{
rootNode.Icon = FolderIcon;
rootNode.OpenIcon = FolderIconOpen;
rootNode.NodeType = TreeAlias;
rootNode.NodeID = "init";
}
public override void Render(ref XmlTree tree)
{
var drivers = _driverRepository.GetAll();
foreach(var driver in drivers) {
var dNode = XmlTreeNode.Create(this);
dNode.NodeID = driver.Id.ToString();
dNode.Text = driver.Name;
dNode.Icon = "user.png";
dNode.Action = "javascript:openDrivers(" + driver.Id + ")";
tree.Add(dNode);
}
}
public override void RenderJS(ref System.Text.StringBuilder Javascript)
{
Javascript.Append(
@"
function openDrivers(id)
{
parent.right.document.location.href = 'plugins/atomicf1/editDriver.aspx?id=' + id;
}
");
}
}
}
Насколько я могу понять, похоже, что «драйверы» в этом примере взяты из _driverRepository
. Однако, похоже, нет никаких примеров кода, объясняющих, что это такое и как он на самом деле извлекает данные из базы данных в первую очередь.
Любая помощь в этом была бы очень признательна.
1 ответ
Позвольте мне предварить это, сказав, что я очень мало знаю об Умбрако, так что это просто основано на наблюдениях!
Если вы посмотрите исходный код в репозитории github, ссылка на который есть в сообщении блога Роберта Грея, вы найдете реализация DriverRepository (который является просто оболочкой подкласс базового абстрактного абстрактного AbstractRepository где и происходит настоящая работа). Этот код не имеет ничего общего с Umbraco, это просто реализация шаблона репозитория в сочетании с NHibernate для доступа к данным внутри пример приложения F1, которое в данном случае находится поверх Umbraco. Этот код извлекает все драйверы из приложения, перебирает их и создает соответствующие узлы XmlTreeNodes в Umbraco.
В вашей ситуации вы просто меняете ссылки на (I) DriverRepository на любой механизм доступа к данным, который вы используете в своем приложении.
Например, если вы примените аналогичный (хотя и более простой) подход к Роберту, в вашем приложении может быть что-то вроде следующего:
public class EnquiryRepository : IEnquiryRepository {
// Methods for saving Enquiries, retrieving single Enquiries etc would go here...
public IEnumerable<Enquiry> GetAll() {
// Data access logic here - retrieve via NHibernate, Entity Framework,
// ADO.net, in-memory objects (as below) etc.
var enquiries = new List<Enquiry>
{
new Enquiry('Enquiry 1 title', 'Enquiry 1 content'),
new Enquiry('Enquiry 2 title', 'Enquiry 2 content'),
new Enquiry('Enquiry 3 title', 'Enquiry 3 content')
}
return enquiries;
}
}
Затем вы будете работать с этим в своем подклассе Umbraco BaseTree аналогично Роберту (цикл и создание XmlTreeNodes и т. Д.).
Похожие вопросы
Новые вопросы
sql-server
Microsoft SQL Server — это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков Microsoft SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. д.). Не используйте этот тег для вопросов по программному обеспечению и разработке мобильных устройств, если только он не связан напрямую с базой данных.