Как я могу сделать так, чтобы страница редактирования N2CMS по умолчанию отображалась в интерфейсе администратора?

Когда я нахожусь в интерфейсе управления/администрирования N2, если я нажимаю на узел в дереве, по умолчанию он показывает вывод этой страницы. Я могу показать экран редактирования для этого узла, щелкнув узел правой кнопкой мыши и выбрав «Изменить». Могу ли я заставить его отображать экран редактирования для этого узла, просто щелкнув узел? Есть ли какие-то настройки, которые я могу изменить в web.config?


person Tom Bull    schedule 25.01.2013    source источник
comment
Просмотрев код N2, похоже, что для этого нет возможности. Однако, если вы не используете маршрутизацию страниц N2 для своего сайта (как и мы), вы можете переопределить TemplateUrl для своих ContentItems следующим образом: public override string TemplateUrl { get { return String.Format("/N2/Content/Edit.aspx?selected={0}", HttpUtility.UrlEncode(AncestralTrail)); } }   -  person Tom Bull    schedule 25.01.2013
comment
Возможно, вы также могли бы расширить этот код, чтобы проверить, аутентифицирован ли пользователь, а затем вернуть либо ссылку на редактирование, либо стандартный TemplateUrl   -  person Dejan Milicic    schedule 26.01.2013


Ответы (1)


Таким образом, комментарий, который я оставил по вопросу выше, на самом деле не отвечает на вопрос (он работает только для корневого узла). Однако почти все в N2 является подключаемым, поэтому вы можете использовать структуру внедрения зависимостей, чтобы заменить код, генерирующий URL-адреса в интерфейсе редактирования, своим собственным кодом следующим образом:

using N2.Configuration;
using N2.Edit;
using N2.Engine;
using N2.Web;

namespace MyWebsite
{
    [Service(typeof(IEditUrlManager), Replaces = typeof(EditUrlManager))]
    public class MyEditUrlManager : EditUrlManager
    {
        public MyEditUrlManager(IUrlParser parser, EditSection config)
            : base(parser, config)
        {

        }

        public override string GetPreviewUrl(N2.ContentItem selectedItem)
        {
            return GetEditExistingItemUrl(selectedItem);
        }
    }
}
person Tom Bull    schedule 28.01.2013