Nano Hash - криптовалюты, майнинг, программирование

Как выбрать элемент в редакторе контента Sitecore

У меня есть мастер пользовательского интерфейса Sheer, который собирает информацию от пользователя, а затем создает элемент контента в sitecore. Мастер запускается с помощью шаблона команды.

Я бы хотел, чтобы мастер сделал вновь созданный элемент содержимого текущим выбранным элементом в редакторе содержимого, но я не могу понять, как это сделать. Кто-нибудь знает, как это делается?

Обновить

Совет Трейека продвинул меня немного дальше. Теперь у меня есть следующий код в команде, которую я использую для запуска мастера:

[Serializable]
public class MyNewContentCommand : Command
{

    public override void Execute(CommandContext context)
    {
        ClientPipelineArgs args = new ClientPipelineArgs();
        args.Parameters["id"] = context.Parameters["id"];
        Context.ClientPage.Start(this, "Run", args);
    }

    protected void Run(ClientPipelineArgs args)
    {
        if (!args.IsPostBack)
        {
            // This runs when the users clicks to add the item
            // in the content editor. 

            // Launches a modal wizard to collect user data

            string id = args.Parameters["id"];

            string controlUrl = Sitecore.UIUtil.GetUri("control:MyNewItemWizard");
            UrlString urlStr = new UrlString(controlUrl);
            urlStr.Append("id", id);

            SheerResponse.ShowModalDialog(urlStr.ToString(), true);
            args.WaitForPostBack();

        }
        else if (args.HasResult)
        {
            // This runs once the wizard has finished

            // Wizard passes ID of created item in its result
            // This is used to find the newly created item.
            Item created = Client.GetItemNotNull(ID.Parse(args.Result));

            // Sending these messages result in refreshing the child items
            // of the parent. And they work.
            Context.ClientPage.SendMessage(this, string.Format("item:updated(id={0})", created.Parent.ID));
            Context.ClientPage.SendMessage(this, string.Format("item:refreshchildren(id={0})", created.Parent.ID));

            // This message should select the new item in content editor, but
            // it doesn't have the desired effect.
            Context.ClientPage.SendMessage(this, string.Format("item:load(id={0})", (object)created.ID));
        }
    }
}
13.03.2013

Ответы:


1

Прочтите это ссылка на сайт. Это дает вам 3 варианта:

  • Создайте URL и ссылку на него
  • Откройте его из приложения XAML
  • Откройте его из JavaScript
13.03.2013
  • Благодаря вашему совету я немного продвинулся вперед: дерево содержимого теперь обновлено, чтобы показать новый элемент, но я все еще не могу заставить редактор содержимого выбрать мой новый элемент. Любые идеи? 13.03.2013
  • Sitecore использует Context.ClientPage.SendMessage(this, item:loadid= + args.Result +)); Вы пробовали? Мне интересно, почему вы используете created.ID для объекта? Не будет ли работать created.ID или created.ID.ToString()? 13.03.2013
  • Код отправки сообщения был основан на декомпиляции некоторых существующих команд sitecore; вот откуда взялся бросок объекта. Смотрите мой ответ о причине проблемы. 14.03.2013

  • 2

    Извините, что отвечаю на мой собственный вопрос. Проблема вызвана тем, что между командой «Обновить элементы в дереве содержимого» и командой «Выбрать элемент в дереве содержимого» возникает состояние гонки. Мне приходится задерживать команду select на несколько миллисекунд, чтобы она заработала.

    Context.ClientPage.SendMessage(this, 
        string.Format("item:updated(id={0})", created.Parent.ID));
    Context.ClientPage.SendMessage(this, 
        string.Format("item:refreshchildren(id={0})", created.Parent.ID));
    Context.ClientPage.ClientResponse.Timer(
        string.Format("item:load(id={0})", created.ID), 100);
    
    14.03.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..