public override void UpdateFiles(LocalizationDataCollector localization) { var items = new List <DataItem>(); string loc = Shell.DefaultCulture.TwoLetterISOLanguageName; foreach (var i in localization.Words) { items.Add(new DataItem { Name = i, Value = "" }); } foreach (var i in localization.Messages) { items.Add(new DataItem { Name = i, Value = "" }); } foreach (var i in localization.Columns) { items.Add(new DataItem { Name = i, Value = "" }); } foreach (var i in localization.Pages) { items.Add(new DataItem { Name = i, Value = "" }); } Import("Pages", loc, items, true); }
public TemplateDataCollector GetCollector(HttpContext context, string viewName, string layout = null) { ActionContext actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); using (var sw = new StringWriter()) { var viewResult = _razorViewEngine.FindView(actionContext, viewName, false); if (viewResult.View == null) { throw new Exception($"{viewName} does not match any available view"); } var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()); viewDictionary["CollectViewData"] = true; viewDictionary["PageControls"] = new TemplateDataCollector { EntityName = null, Controls = new List <ControlDTO>() }; viewDictionary["LocalizationDataCollector"] = new LocalizationDataCollector(); if (layout != null) { viewDictionary["PageOptions"] = new PageOptions { Layout = layout }; } var viewContext = new ViewContext( actionContext, viewResult.View, viewDictionary, new TempDataDictionary(actionContext.HttpContext, _tempDataProvider), sw, new HtmlHelperOptions() ); var t = RenderAsync(viewResult, viewContext); t.Wait(); if (t.Result.Code != 200) { throw new CodeShellHttpException(t.Result); } var data = (TemplateDataCollector)viewContext.ViewData["PageControls"]; data.Localization = ((LocalizationDataCollector)viewContext.ViewData["LocalizationDataCollector"]); data.Localization.Unify(); return(data); } }