Exemple #1
0
 public ViewComponentInvoker(
     IViewComponentHelper viewComponentHelper,
     ILogger <ViewComponentInvoker> logger)
 {
     _viewComponentHelper = viewComponentHelper;
     _logger = logger;
 }
 public QueryTagHelperInLine(IHtmlHelper html,
                             IHttpContextAccessor httpAccessor, IViewComponentHelper component,
                             IUrlHelperFactory urlHelperFactory,
                             IStringLocalizerFactory factory)
     : base(html, httpAccessor, component, urlHelperFactory, factory)
 {
 }
Exemple #3
0
        public async Task <IHtmlContent> RenderAsync(IViewComponentHelper component, string mywidget)
        {
            var componentType = _widgetOptions.Widgets.Single(w => w.Name.Equals(mywidget)).ViewComponentType;
            var args          = new object();

            return(await component.InvokeAsync(componentType, args));
        }
Exemple #4
0
        /// <summary>
        /// Render component to string
        /// </summary>
        /// <param name="componentName">Component name</param>
        /// <param name="arguments">Arguments</param>
        /// <returns>Result</returns>
        protected virtual string RenderViewComponentToString(string componentName, object arguments = null)
        {
            //original implementation: https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Internal/ViewComponentResultExecutor.cs
            //we customized it to allow running from controllers

            //TODO add support for parameters (pass ViewComponent as input parameter)
            if (string.IsNullOrEmpty(componentName))
            {
                throw new ArgumentNullException(nameof(componentName));
            }

            IActionContextAccessor actionContextAccessor = HttpContext.RequestServices.GetService(typeof(IActionContextAccessor)) as IActionContextAccessor;

            if (actionContextAccessor == null)
            {
                throw new Exception("IActionContextAccessor cannot be resolved");
            }

            ActionContext context = actionContextAccessor.ActionContext;

            ViewComponentResult viewComponentResult = ViewComponent(componentName, arguments);

            ViewDataDictionary viewData = this.ViewData;

            if (viewData == null)
            {
                throw new NotImplementedException();
                //TODO viewData = new ViewDataDictionary(_modelMetadataProvider, context.ModelState);
            }

            ITempDataDictionary tempData = this.TempData;

            if (tempData == null)
            {
                throw new NotImplementedException();
                //TODO tempData = _tempDataDictionaryFactory.GetTempData(context.HttpContext);
            }

            using (StringWriter writer = new StringWriter())
            {
                ViewContext viewContext = new ViewContext(
                    context,
                    NullView.Instance,
                    viewData,
                    tempData,
                    writer,
                    new HtmlHelperOptions());

                // IViewComponentHelper is stateful, we want to make sure to retrieve it every time we need it.
                IViewComponentHelper viewComponentHelper = context.HttpContext.RequestServices.GetRequiredService <IViewComponentHelper>();
                (viewComponentHelper as IViewContextAware)?.Contextualize(viewContext);

                System.Threading.Tasks.Task <Microsoft.AspNetCore.Html.IHtmlContent> result = viewComponentResult.ViewComponentType == null?
                                                                                              viewComponentHelper.InvokeAsync(viewComponentResult.ViewComponentName, viewComponentResult.Arguments) :
                                                                                                  viewComponentHelper.InvokeAsync(viewComponentResult.ViewComponentType, viewComponentResult.Arguments);

                result.Result.WriteTo(writer, HtmlEncoder.Default);
                return(writer.ToString());
            }
        }
        public async Task <IHtmlContent> ContentAsync(IViewComponentHelper helper)
        {
            var actionContext     = _actionContextAccessor.ActionContext;
            var viewComponentName = actionContext.RouteData.DataTokens["ViewComponent"] as string;

            var compositeValueProvider = await CompositeValueProvider.CreateAsync(actionContext, _optionsAccessor.Value.ValueProviderFactories);

            var pluginViewComponent = _viewComponentSelector.SelectComponent(viewComponentName);
            var parameterBinder     = ActivatorUtilities.CreateInstance <ParameterBinder>(_serviceProvider);

            var parameterBag = new Dictionary <string, object>();

            foreach (var parameter in pluginViewComponent.Parameters)
            {
                var parameterDescriptor = new ParameterDescriptor {
                    BindingInfo   = BindingInfo.GetBindingInfo(parameter.GetCustomAttributes()),
                    Name          = parameter.Name,
                    ParameterType = parameter.ParameterType,
                };

                var result = await parameterBinder.BindModelAsync(
                    actionContext,
                    compositeValueProvider,
                    parameterDescriptor);

                parameterBag[parameter.Name] = result.IsModelSet ? result.Model : null;
            }
            return(await helper.InvokeAsync(viewComponentName, parameterBag));
        }
Exemple #6
0
        public WidgetProvider(
            IRazorViewEngine viewEngine,
            IRazorPageActivator pageActivator,
            ITempDataProvider tempDataProvider,
            IServiceProvider serviceProvider,
            IModelMetadataProvider modelMetadataProvider,
            IHttpContextAccessor httpContextAccessor,
            IViewComponentHelper componentHelper,
            IEnumerable <IWidgetNamedModelProvider> namedModelProviders,
            IContextAccessor <SiteContext> siteContextAccessor,
            IContextAccessor <UserContext> userContextAccessor,
            PluginContext pluginContext
            )
        {
            _viewEngine            = viewEngine;
            _pageActivator         = pageActivator;
            _tempDataProvider      = tempDataProvider;
            _serviceProvider       = serviceProvider;
            _modelMetadataProvider = modelMetadataProvider;
            _componentHelper       = componentHelper as DefaultViewComponentHelper;
            _httpContextAccessor   = httpContextAccessor;
            _siteContextAccessor   = siteContextAccessor;
            _userContextAccessor   = userContextAccessor;
            _pluginContext         = pluginContext;

            _namedModelProviders = namedModelProviders;

            Widgets = pluginContext.GetData <WidgetConfig>();
        }
 public PlaceholderRenderer(ICompositeViewEngine viewEngine, IViewComponentHelper viewComponentHelper, ISitecoreService sitecoreService, IOptions <ApiSettings> apiSettings)
 {
     _viewEngine          = viewEngine;
     _viewComponentHelper = viewComponentHelper;
     _sitecoreService     = sitecoreService;
     _baseAddress         = new Uri(new Uri(apiSettings.Value.BaseUrl), apiSettings.Value.PageDataApiPath);
 }
Exemple #8
0
        public SimpleLinkGrid(IContainer container)
        {
            container.Add(this);

            viewComponentHelper = new ViewComponentHelper(this);
            InitializeComponent();
        }
 public static Task <IHtmlContent> Breadcrumb(this IViewComponentHelper componentHelper, string title, Dictionary <string, string> hrefAndName = null)
 {
     if (hrefAndName == null)
     {
         hrefAndName = new Dictionary <string, string>();
     }
     return(componentHelper.InvokeAsync("Breadcrumb", new BreadcumbModel(title, hrefAndName)));
 }
Exemple #10
0
        public HtmlString RenderForKeyAsHtmlString(IViewComponentHelper component, string host, string key, string title = "", bool loadondemand = false)
        {
            StringBuilder sb     = new StringBuilder();
            StringWriter  writer = new StringWriter(sb);

            component.InvokeAsync("HelpInstruction", new { apirooturl = _apirooturl, hostkey = host, datakey = key, label = title, ondemand = loadondemand }).Result.WriteTo(writer, HtmlEncoder.Default);
            return(new HtmlString(writer.ToString()));
        }
Exemple #11
0
 public ContentPageTagHelper
 (
     IViewComponentHelper componentHelper,
     ContentManager contentManager
 )
 {
     _componentHelper = componentHelper as DefaultViewComponentHelper;
     _contentManager  = contentManager;
 }
Exemple #12
0
        //public Dictionary<int, string> ImageKeysOnUpdate
        //{
        //    get { return imageKeysOnUpdate; }
        //    set { imageKeysOnUpdate = value; }
        //}

        public AssessmentDBCheckBox()
            : base()
        {
            myHelper = new ViewComponentHelper(this);
            this.CheckBoxes = true;
            this.MultiSelect = false;
            this.View = View.Details;
            this.ItemCheck += new ItemCheckEventHandler(AssessmentCheckBox_ItemCheck);
        }
Exemple #13
0
 public ViewInvoker(
     IViewComponentHelper viewComponentHelper,
     IPartialInvoker partialInvoker,
     ILogger <ViewInvoker> logger)
 {
     _viewComponentHelper = viewComponentHelper;
     _partialInvoker      = partialInvoker;
     _logger = logger;
 }
Exemple #14
0
 public ViewComponentManager(IViewComponentSelector viewComponentSelector, IViewComponentHelper viewComponentHelper, IActionContextAccessor actionContextAccessor, IViewAccountant viewAccountant, ITempDataProvider tempDataProvider, ILocalFileProvider localFileProvider)
 {
     _viewComponentSelector = viewComponentSelector;
     _viewComponentHelper   = viewComponentHelper;
     _actionContextAccessor = actionContextAccessor;
     _viewAccountant        = viewAccountant;
     _tempDataProvider      = tempDataProvider;
     _localFileProvider     = localFileProvider;
 }
        /// <summary>
        /// Invokes a view component of type <typeparamref name="TComponent"/>.
        /// </summary>
        /// <param name="helper">The <see cref="IViewComponentHelper"/>.</param>
        /// <typeparam name="TComponent">The <see cref="Type"/> of the view component.</typeparam>
        /// <returns>A <see cref="Task"/> that on completion returns the rendered <see cref="IHtmlContent" />.
        /// </returns>
        public static Task <IHtmlContent> InvokeAsync <TComponent>(this IViewComponentHelper helper)
        {
            if (helper == null)
            {
                throw new ArgumentNullException(nameof(helper));
            }

            return(helper.InvokeAsync(typeof(TComponent), arguments: null));
        }
Exemple #16
0
        public static Task RenderInvokeAsync <TComponent>(this IViewComponentHelper helper,
                                                          params object[] args)
        {
            if (helper == null)
            {
                throw new ArgumentNullException(nameof(helper));
            }

            return(helper.RenderInvokeAsync(typeof(TComponent), args));
        }
 public ContentEmbeddedTagHelper(
     IViewComponentHelper componentHelper,
     SiteContext siteContext,
     ConnectDbContext connectDb
     )
 {
     _componentHelper = componentHelper as DefaultViewComponentHelper;
     _siteContext     = siteContext;
     _connectDb       = connectDb;
 }
Exemple #18
0
 public async Task <IHtmlContent> InvokeAsync(IViewComponentHelper helper, string name, object arguments = null)
 {
     if (Disabled() != null && Disabled().Contains(name))
     {
         return(await Task.FromResult(new HtmlString("")));
     }
     return(Exists(name)
         ? await helper.InvokeAsync(name, arguments)
         : await Task.FromResult(GetContent(name)));
 }
 public ContextualizedHelpers(ViewContext context, IHtmlHelper html, IHttpContextAccessor httpAccessor, IViewComponentHelper component, IUrlHelperFactory urlHelperFactory, IStringLocalizerFactory localizerFactory = null)
 {
     _html                 = html;
     _component            = component;
     this._context         = context;
     this.urlHelperFactory = urlHelperFactory;
     _httpContext          = httpAccessor.HttpContext;
     _user                 = _httpContext.User;
     LocalizerFactory      = localizerFactory;
 }
Exemple #20
0
        public static HtmlString Invoke <TComponent>(this IViewComponentHelper helper,
                                                     params object[] args)
        {
            if (helper == null)
            {
                throw new ArgumentNullException(nameof(helper));
            }

            return(helper.Invoke(typeof(TComponent), args));
        }
Exemple #21
0
        public static void RenderInvoke <TComponent>(this IViewComponentHelper helper,
                                                     params object[] args)
        {
            if (helper == null)
            {
                throw new ArgumentNullException(nameof(helper));
            }

            helper.RenderInvoke(typeof(TComponent), args);
        }
 public SearchModalTagHelper(
     IStringLocalizer <SharedResource> localizer,
     IViewComponentHelper viewComponentHelper,
     IHtmlGenerator generator
     )
 {
     _localizer           = localizer;
     _viewComponentHelper = viewComponentHelper;
     Generator            = generator;
 }
 public QueryTagHelperBase(IHtmlHelper html,
                           IHttpContextAccessor httpAccessor, IViewComponentHelper component,
                           IUrlHelperFactory urlHelperFactory,
                           IStringLocalizerFactory factory)
 {
     this.httpAccessor     = httpAccessor;
     this.html             = html;
     this.component        = component;
     this.urlHelperFactory = urlHelperFactory;
     this.factory          = factory;
 }
Exemple #24
0
 public static async Task <IHtmlContent> Component(this IViewComponentHelper viewComponentHelper, string moduleName, string viewComponentName)
 {
     if (InvocationHub.IsModuleInDebugMode())
     {
         return(await viewComponentHelper.InvokeAsync(viewComponentName));
     }
     else
     {
         return(await viewComponentHelper.InvokeAsync("Renderer", new { moduleName, viewComponentName }));
     }
 }
 public ContextualizedHelpers(ViewContext context, IHtmlHelper html, IPrincipal user, IViewComponentHelper component, IUrlHelper urlHelper, IStringLocalizerFactory localizerFactory)
 {
     _html                      = html;
     _component                 = component;
     this._context              = context;
     _htmlIsContextualized      = true;
     _componentIsContextualized = true;
     _user                      = user;
     _httpContext               = context.HttpContext;
     _urlHelper                 = urlHelper;
     LocalizerFactory           = localizerFactory;
 }
 public DetailTagHelper(Microsoft.Extensions.Options.IOptions <MvcViewOptions> optionsAccessor,
                        IHtmlHelper html,
                        IHttpContextAccessor httpAccessor, IViewComponentHelper component,
                        IUrlHelperFactory urlHelperFactory,
                        IStringLocalizerFactory factory) : base(factory)
 {
     IdAttributeDotReplacement = optionsAccessor.Value.HtmlHelperOptions.IdAttributeDotReplacement;
     this.html             = html;
     this.httpAccessor     = httpAccessor;
     this.component        = component;
     this.urlHelperFactory = urlHelperFactory;
     this.factory          = factory;
 }
Exemple #27
0
 public static Task <IHtmlContent> InvokeLayoutHookAsync(
     this IViewComponentHelper componentHelper,
     string name,
     string layout)
 {
     return(componentHelper.InvokeAsync(
                typeof(LayoutHookViewComponent),
                new {
         name = name,
         layout = layout
     }
                ));
 }
 public GridTagHelper(IOptions<MvcViewOptions> optionsAccessor,
     IHtmlHelper html, 
     IHttpContextAccessor httpAccessor, IViewComponentHelper component, 
     IUrlHelperFactory urlHelperFactory,
     IStringLocalizerFactory factory)
 {
     IdAttributeDotReplacement = optionsAccessor.Value.HtmlHelperOptions.IdAttributeDotReplacement;
     this.html = html;
     this.httpAccessor = httpAccessor;
     this.component = component;
     this.urlHelperFactory = urlHelperFactory;
     this.factory = factory;
 }
        /// <summary>
        /// Рендеринг текста с зонами, объявленных в контенте в виде [[zone=имя_зоны]]
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="componentHelper"></param>
        /// <param name="text"></param>
        /// <param name="arguments"></param>
        /// <returns></returns>
        public static async Task <IHtmlContent> RenderZonesInText(this IViewComponentHelper componentHelper,
                                                                  IHtmlHelper helper, string text, IDictionary <string, object> arguments = null)
        {
            if (!zonesInTextRegex.IsMatch(text))
            {
                return(new HtmlString(text));
            }

            var matches = zonesInTextRegex.Matches(text);
            //наполним словарь для замены зон в тексте на их содержимое
            var dictionary = new Dictionary <string, string>();

            foreach (Match match in matches)
            {
                if (match.Groups.Count > 1)
                {
                    var group = match.Groups[1];
                    if (group.Success)
                    {
                        var zoneName = group.Value;

                        if (!string.IsNullOrEmpty(zoneName) && !dictionary.ContainsKey(match.Value))
                        {
                            var widgetContent = await componentHelper.WidgetZone(helper, zoneName, arguments);

                            using (var sw = new StringWriter())
                            {
                                widgetContent.WriteTo(sw, HtmlEncoder.Default);
                                dictionary[match.Value] = sw.ToString();
                            }
                        }
                    }
                }
            }

            //делаем замены
            var result = zonesInTextRegex.Replace(text, (match =>
            {
                if (match.Groups.Count > 1)
                {
                    var group = match.Groups[1];
                    if (group.Success)
                    {
                        return(dictionary[match.Value]);
                    }
                }
                return(string.Empty);
            }));

            return(new HtmlString(result));
        }
Exemple #30
0
 public async static Task <IHtmlContent> MotleyFlash(
     this IViewComponentHelper value,
     string view = null)
 {
     if (string.IsNullOrWhiteSpace(view))
     {
         return(await value.InvokeAsync <MotleyFlashViewComponent>(new MotleyFlashViewComponentOptions()));
     }
     else
     {
         return(await value.InvokeAsync <MotleyFlashViewComponent>(new MotleyFlashViewComponentOptions()
         {
             View = view
         }));
     }
 }
Exemple #31
0
 /// <summary>
 /// Initialize a <see cref="RegisterProviderOutput"/>.
 /// </summary>
 protected RegisterProviderOutput(
     ViewDataDictionary viewData,
     IHtmlGenerator htmlGenerator,
     IModelExpressionProvider modelExpressionProvider,
     ViewContext originalViewContext,
     IJsonHelper jsonHelper,
     IViewComponentHelper viewComponentHelper,
     IUrlHelper urlHelper)
 {
     ViewData  = viewData;
     Generator = htmlGenerator;
     ModelExpressionProvider = modelExpressionProvider;
     ViewContext             = new ViewContext(originalViewContext, originalViewContext.View, viewData, originalViewContext.Writer);
     Json      = jsonHelper;
     Component = viewComponentHelper;
     Url       = urlHelper;
 }
Exemple #32
0
        public ViewComponentResultExecutor(
            IOptions <MvcViewOptions> mvcHelperOptions,
            IViewComponentHelper viewComponentHelper,
            ILoggerFactory loggerFactory,
            HtmlEncoder htmlEncoder,
            IModelMetadataProvider modelMetadataProvider,
            ITempDataDictionaryFactory tempDataDictionaryFactory)
        {
            if (mvcHelperOptions == null)
            {
                throw new ArgumentNullException(nameof(mvcHelperOptions));
            }

            if (viewComponentHelper == null)
            {
                throw new ArgumentNullException(nameof(viewComponentHelper));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            if (htmlEncoder == null)
            {
                throw new ArgumentNullException(nameof(htmlEncoder));
            }

            if (modelMetadataProvider == null)
            {
                throw new ArgumentNullException(nameof(modelMetadataProvider));
            }

            if (tempDataDictionaryFactory == null)
            {
                throw new ArgumentNullException(nameof(tempDataDictionaryFactory));
            }

            _htmlHelperOptions   = mvcHelperOptions.Value.HtmlHelperOptions;
            _viewComponentHelper = viewComponentHelper;
            _logger                    = loggerFactory.CreateLogger <ViewComponentResult>();
            _htmlEncoder               = htmlEncoder;
            _modelMetadataProvider     = modelMetadataProvider;
            _tempDataDictionaryFactory = tempDataDictionaryFactory;
        }
        public ViewComponentResultExecutor(
            IOptions<MvcViewOptions> mvcHelperOptions,
            IViewComponentHelper viewComponentHelper,
            ILoggerFactory loggerFactory,
            HtmlEncoder htmlEncoder,
            IModelMetadataProvider modelMetadataProvider,
            ITempDataDictionaryFactory tempDataDictionaryFactory)
        {
            if (mvcHelperOptions == null)
            {
                throw new ArgumentNullException(nameof(mvcHelperOptions));
            }

            if (viewComponentHelper == null)
            {
                throw new ArgumentNullException(nameof(viewComponentHelper));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            if (htmlEncoder == null)
            {
                throw new ArgumentNullException(nameof(htmlEncoder));
            }

            if (modelMetadataProvider == null)
            {
                throw new ArgumentNullException(nameof(modelMetadataProvider));
            }

            if (tempDataDictionaryFactory == null)
            {
                throw new ArgumentNullException(nameof(tempDataDictionaryFactory));
            }

            _htmlHelperOptions = mvcHelperOptions.Value.HtmlHelperOptions;
            _viewComponentHelper = viewComponentHelper;
            _logger = loggerFactory.CreateLogger<ViewComponentResult>();
            _htmlEncoder = htmlEncoder;
            _modelMetadataProvider = modelMetadataProvider;
            _tempDataDictionaryFactory = tempDataDictionaryFactory;
        }
Exemple #34
0
 public async Task <IHtmlContent> InvokeAsync(IViewComponentHelper helper, string name, object arguments = null)
 {
     if (Disabled() != null && Disabled().Contains(name))
     {
         return(await Task.FromResult(new HtmlString("")));
     }
     try
     {
         return(Exists(name)
         ? await helper.InvokeAsync(name, arguments)
         : await Task.FromResult(new HtmlString("")));
     }
     catch (System.Exception ex)
     {
         this.logger.LogError($"Error loading widget: {ex.Message}");
         return(await Task.FromResult(new HtmlString("")));
     }
 }
 public ShapeishTagHelper(IViewComponentHelper viewComponentHelper)
 {
     _viewComponentHelper = viewComponentHelper;
 }
Exemple #36
0
 public BulkHelper()
 {
     helper = new NonControlViewComponentHelper(this);
 }
Exemple #37
0
 public SimpleLinkGrid()
 {
     viewComponentHelper = new ViewComponentHelper(this);
     InitializeComponent();
 }
 private Task<IHtmlContent> GetViewComponentResult(IViewComponentHelper viewComponentHelper, ILogger logger, ViewComponentResult result)
 {
     if (result.ViewComponentType == null && result.ViewComponentName == null)
     {
         throw new InvalidOperationException(Resources.FormatViewComponentResult_NameOrTypeMustBeSet(
             nameof(ViewComponentResult.ViewComponentName),
             nameof(ViewComponentResult.ViewComponentType)));
     }
     else if (result.ViewComponentType == null)
     {
         logger.ViewComponentResultExecuting(result.ViewComponentName);
         return viewComponentHelper.InvokeAsync(result.ViewComponentName, result.Arguments);
     }
     else
     {
         logger.ViewComponentResultExecuting(result.ViewComponentType);
         return viewComponentHelper.InvokeAsync(result.ViewComponentType, result.Arguments);
     }
 }
 public StaticNumberTagHelper(IViewComponentHelper viewComponentHelper)
     : base(viewComponentHelper)
 {
 }
 public PagerTagHelper(
     IHtmlHelper html,
     IHttpContextAccessor httpAccessor, IViewComponentHelper component,
     IUrlHelperFactory urlHelperFactory,
     IStringLocalizerFactory factory)
 {
     this.html = html;
     this.httpAccessor = httpAccessor;
     this.component = component;
     this.urlHelperFactory = urlHelperFactory;
     this.factory = factory;
 }
Exemple #41
0
 public ClassificationRule(IContainer container)
 {
     container.Add(this);
     currentRules = new ClassificationDisplayRules();
     viewComponentHelper = new ViewComponentHelper(this);
     InitializeComponent();
     dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick);
 }