public AssemblyResultTS Sync(string assembly, string culture, string? @namespace = null) { Assembly ass = AssembliesToLocalize().Where(a => a.GetName().Name == assembly).SingleEx(() => "Assembly {0}".FormatWith(assembly)); CultureInfo targetCulture = CultureInfo.GetCultureInfo(culture); CultureInfo defaultCulture = CultureInfo.GetCultureInfo(ass.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture); var cultures = TranslationLogic.CurrentCultureInfos(defaultCulture); Dictionary <CultureInfo, LocalizedAssembly> reference = (from ci in cultures let la = DescriptionManager.GetLocalizedAssembly(ass, ci) where la != null || ci == defaultCulture || ci == targetCulture select KVP.Create(ci, la ?? LocalizedAssembly.ImportXml(ass, ci, forceCreate: ci == defaultCulture || ci == targetCulture))).ToDictionary(); var master = reference.Extract(defaultCulture); var target = reference.Extract(targetCulture); var changes = TranslationSynchronizer.GetAssemblyChanges(TranslationServer.Translator, target, master, reference.Values.ToList(), null, @namespace, out int totalTypes); return(new AssemblyResultTS { totalTypes = totalTypes, cultures = cultures.Select(c => c.ToCulturesTS()).ToDictionary(a => a.name), types = changes.Types.Select(t => t.Type.Type.ToLocalizableTypeTS().Let(localizedTypes => { localizedTypes.cultures = cultures.ToDictionary(c => c.Name, c => GetLocalizedType(t, c, c.Equals(targetCulture))); return localizedTypes; })).ToDictionary(lt => lt.type), }); }
public ActionResult Index(Lite <RoleEntity> role) { var cultures = TranslationLogic.CurrentCultureInfos(CultureInfo.GetCultureInfo("en")); var assemblies = AssembliesToLocalize().ToDictionary(a => a.FullName); var dg = DirectedGraph <Assembly> .Generate(assemblies.Values, a => a.GetReferencedAssemblies().Select(an => assemblies.TryGetC(an.FullName)).NotNull()); var dic = dg.CompilationOrderGroups().SelectMany(gr => gr.OrderBy(a => a.FullName)).ToDictionary(a => a, a => cultures.Select(ci => new TranslationFile { Assembly = a, CultureInfo = ci, IsDefault = ci.Name == a.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture, FileName = LocalizedAssembly.TranslationFileName(a, ci) }).ToDictionary(tf => tf.CultureInfo)); if (role != null) { ViewBag.Role = role.InDB().Select(e => e.ToLite()).SingleEx(); } return(base.View(TranslationClient.ViewPrefix.FormatWith("Index"), dic)); }
public ActionResult Index() { var cultures = TranslationLogic.CurrentCultureInfos(TranslatedInstanceLogic.DefaultCulture); var list = TranslatedInstanceLogic.TranslationInstancesStatus(); return(base.View(TranslationClient.ViewPrefix.FormatWith("IndexInstance"), list.AgGroupToDictionary(a => a.Type, gr => gr.ToDictionary(a => a.CultureInfo)))); }
public ActionResult Index(Translation translation) { if (translation.text == null) { return(View()); } ViewBag.translatedText = TranslationLogic.FindTranslation(translation.text); return(View()); }
public TranslatedInstanceViewTypeTS View(string type, string?culture, string filter) { Type t = TypeLogic.GetType(type); var c = culture == null ? null : CultureInfo.GetCultureInfo(culture); var master = TranslatedInstanceLogic.FromEntities(t); var support = TranslatedInstanceLogic.TranslationsForType(t, culture: c); var all = string.IsNullOrEmpty(filter); var cultures = TranslationLogic.CurrentCultureInfos(TranslatedInstanceLogic.DefaultCulture); Func <LocalizedInstanceKey, bool> filtered = li => all || li.RowId.ToString() == filter || li.Instance.Id.ToString() == filter || li.Route.PropertyString().Contains(filter, StringComparison.InvariantCultureIgnoreCase) || master.GetOrThrow(li).Contains(filter, StringComparison.InvariantCultureIgnoreCase) || cultures.Any(ci => (support.TryGetC(ci)?.TryGetC(li)?.TranslatedText ?? "").Contains(filter, StringComparison.InvariantCultureIgnoreCase)); var sd = new StringDistance(); var supportByInstance = (from kvpCult in support from kvpLocIns in kvpCult.Value where filtered(kvpLocIns.Key) let newText = master.GetOrThrow(kvpLocIns.Key) group(lockIns: kvpLocIns.Key, translatedInstance: kvpLocIns.Value, culture: kvpCult.Key, newText: newText) by kvpLocIns.Key.Instance into gInstance select KeyValuePair.Create(gInstance.Key, gInstance.AgGroupToDictionary(a => a.lockIns.RouteAndRowId(), gr => gr.ToDictionary(a => a.culture.Name, a => new TranslatedPairViewTS { OriginalText = a.translatedInstance.OriginalText, Diff = a.translatedInstance.OriginalText.Equals(a.newText) ? null : sd.DiffText(a.translatedInstance.OriginalText, a.newText), TranslatedText = a.translatedInstance.TranslatedText }) ))).ToDictionary(); return(new TranslatedInstanceViewTypeTS { TypeName = type, Routes = TranslatedInstanceLogic.TranslateableRoutes.GetOrThrow(t).ToDictionary(a => a.Key.PropertyString(), a => a.Value), MasterCulture = TranslatedInstanceLogic.DefaultCulture.Name, Instances = master.Where(kvp => filtered(kvp.Key)).GroupBy(a => a.Key.Instance).Select(gr => new TranslatedInstanceViewTS { Lite = gr.Key, Master = gr.ToDictionary( a => a.Key.RouteAndRowId(), a => a.Value ), Translations = supportByInstance.TryGetC(gr.Key) ?? new Dictionary <string, Dictionary <string, TranslatedPairViewTS> >() }).ToList() }); }
public static List <TranslatedTypeSummary> TranslationInstancesStatus() { var cultures = TranslationLogic.CurrentCultureInfos(DefaultCulture); return((from type in TranslateableRoutes.Keys from ci in cultures select new TranslatedTypeSummary { Type = type, CultureInfo = ci, State = ci.IsNeutralCulture && ci.Name != DefaultCulture.Name ? GetState(type, ci) : null, }).ToList()); }
public static TypeInstancesChanges GetTypeInstanceChangesTranslated(ITranslator[] translators, Type type, CultureInfo targetCulture, out int totalInstances) { var cultures = TranslationLogic.CurrentCultureInfos(TranslatedInstanceLogic.DefaultCulture); cultures.Remove(targetCulture); var instances = TranslatedInstanceLogic.GetInstanceChanges(type, targetCulture, cultures); totalInstances = instances.Count; if (instances.Sum(a => a.TotalOriginalLength()) > MaxTotalSyncCharacters) { instances = instances.Chunk(a => a.TotalOriginalLength(), MaxTotalSyncCharacters).First().ToList(); } return(TranslateInstances(translators, type, targetCulture, instances)); }
public List <TranslationFileStatus> GetState() { var cultures = TranslationLogic.CurrentCultureInfos(CultureInfo.GetCultureInfo("en")); var assemblies = AssembliesToLocalize().ToDictionary(a => a.FullName !); var dg = DirectedGraph <Assembly> .Generate(assemblies.Values, a => a.GetReferencedAssemblies().Select(an => assemblies.TryGetC(an.FullName !)).NotNull()); var list = (from a in dg.CompilationOrderGroups().SelectMany(gr => gr.OrderBy(a => a.FullName)) from ci in cultures select new TranslationFileStatus { assembly = a.GetName().Name !, culture = ci.Name, isDefault = ci.Name == a.GetCustomAttribute <DefaultAssemblyCultureAttribute>() !.DefaultCulture, status = CalculateStatus(a, ci) }).ToList();
public ActionResult SaveView(string assembly, string culture, string filter) { var currentAssembly = AssembliesToLocalize().Single(a => a.GetName().Name == assembly); List <TranslationRecord> list = GetTranslationRecords(); if (culture.HasText()) { LocalizedAssembly locAssembly = LocalizedAssembly.ImportXml(currentAssembly, CultureInfo.GetCultureInfo(culture), forceCreate: true); list.GroupToDictionary(a => a.Type).JoinDictionaryForeach(locAssembly.Types.Values.ToDictionary(a => a.Type.Name), (tn, tuples, lt) => { foreach (var t in tuples) { t.Apply(lt); } }); locAssembly.ExportXml(); } else { Dictionary <string, LocalizedAssembly> locAssemblies = TranslationLogic.CurrentCultureInfos(CultureInfo.GetCultureInfo("en")).ToDictionary(ci => ci.Name, ci => LocalizedAssembly.ImportXml(currentAssembly, ci, forceCreate: true)); Dictionary <string, List <TranslationRecord> > groups = list.GroupToDictionary(a => a.Lang); list.GroupToDictionary(a => a.Lang).JoinDictionaryForeach(locAssemblies, (cn, recs, la) => { recs.GroupToDictionary(a => a.Type).JoinDictionaryForeach(la.Types.Values.ToDictionary(a => a.Type.Name), (tn, tuples, lt) => { foreach (var t in tuples) { t.Apply(lt); } }); la.ExportXml(); }); } return(RedirectToAction("View", new { assembly = assembly, culture = culture, searchPressed = true, filter = filter })); }
public ActionResult View(string assembly, string culture, bool searchPressed, string filter) { Assembly ass = AssembliesToLocalize().Where(a => a.GetName().Name == assembly).SingleEx(() => "Assembly {0}".FormatWith(assembly)); CultureInfo defaultCulture = CultureInfo.GetCultureInfo(ass.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture); CultureInfo targetCulture = culture == null ? null : CultureInfo.GetCultureInfo(culture); Dictionary <CultureInfo, LocalizedAssembly> reference = !searchPressed ? null : (from ci in TranslationLogic.CurrentCultureInfos(defaultCulture) let la = DescriptionManager.GetLocalizedAssembly(ass, ci) where la != null || ci == defaultCulture || ci == targetCulture select KVP.Create(ci, la ?? LocalizedAssembly.ImportXml(ass, ci, forceCreate: true))).ToDictionary(); ViewBag.filter = filter; ViewBag.searchPressed = searchPressed; ViewBag.Assembly = ass; ViewBag.DefaultCulture = defaultCulture; ViewBag.Culture = targetCulture; return(base.View(TranslationClient.ViewPrefix.FormatWith("View"), reference)); }
public TranslatedSummaryState Status(Lite <RoleEntity> role) { if (!System.IO.File.Exists(FileName)) { return(TranslatedSummaryState.None); } var target = DescriptionManager.GetLocalizedAssembly(Assembly, CultureInfo); CultureInfo defaultCulture = CultureInfo.GetCultureInfo(Assembly.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture); var master = DescriptionManager.GetLocalizedAssembly(Assembly, defaultCulture); var result = TranslationSynchronizer.GetMergeChanges(target, master, new List <LocalizedAssembly>()); if (result.Any(r => role == null || TranslationLogic.GetCountNotLocalizedMemebers(role, CultureInfo, r.Type.Type) > 0)) { return(TranslatedSummaryState.Pending); } return(TranslatedSummaryState.Completed); }
public ActionResult Sync(string assembly, string culture, bool translatedOnly, Lite <RoleEntity> role) { Assembly ass = AssembliesToLocalize().Where(a => a.GetName().Name == assembly).SingleEx(() => "Assembly {0}".FormatWith(assembly)); CultureInfo targetCulture = CultureInfo.GetCultureInfo(culture); CultureInfo defaultCulture = CultureInfo.GetCultureInfo(ass.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture); Dictionary <CultureInfo, LocalizedAssembly> reference = (from ci in TranslationLogic.CurrentCultureInfos(defaultCulture) let la = DescriptionManager.GetLocalizedAssembly(ass, ci) where la != null || ci == defaultCulture || ci == targetCulture select KVP.Create(ci, la ?? LocalizedAssembly.ImportXml(ass, ci, forceCreate: true))).ToDictionary(); var master = reference.Extract(defaultCulture); var target = reference.Extract(targetCulture); DictionaryByTypeName(target); //To avoid finding duplicated types on save int totalTypes; var changes = TranslationSynchronizer.GetAssemblyChanges(TranslationClient.Translator, target, master, reference.Values.ToList(), role, null, out totalTypes); ViewBag.Role = role; ViewBag.TotalTypes = totalTypes; ViewBag.Culture = targetCulture; return(base.View(TranslationClient.ViewPrefix.FormatWith("Sync"), changes)); }
public AssemblyResultTS Retrieve(string assembly, string culture, string filter) { Assembly ass = AssembliesToLocalize().Where(a => a.GetName().Name == assembly).SingleEx(() => "Assembly {0}".FormatWith(assembly)); CultureInfo defaultCulture = CultureInfo.GetCultureInfo(ass.GetCustomAttribute <DefaultAssemblyCultureAttribute>().DefaultCulture); CultureInfo?targetCulture = culture == null ? null : CultureInfo.GetCultureInfo(culture); var cultures = TranslationLogic.CurrentCultureInfos(defaultCulture); Dictionary <string, LocalizableTypeTS> types = (from ci in cultures let la = DescriptionManager.GetLocalizedAssembly(ass, ci) where la != null || ci == defaultCulture || ci == targetCulture let la2 = la ?? LocalizedAssembly.ImportXml(ass, ci, forceCreate: true) from t in la2.Types.Values let lt = new LocalizedTypeTS { culture = ci.Name, typeDescription = new LocalizedDescriptionTS { gender = t.Gender?.ToString(), description = t.Description, pluralDescription = t.PluralDescription, }, members = t.Members.Select(kvp => new LocalizedMemberTS { name = kvp.Key, description = kvp.Value }).ToDictionary(a => a.name), } group lt by t.Type into g select KVP.Create(g.Key.Name, g.Key.ToLocalizableTypeTS().Let(localizedTypes => { localizedTypes.cultures = g.ToDictionary(a => a.culture); return(localizedTypes); }))) .ToDictionaryEx("types"); types.ToList().ForEach(lt => lt.Value.FixMembers(defaultCulture)); if (filter.HasText()) { var complete = types.Extract((k, v) => v.type.Contains(filter, StringComparison.InvariantCultureIgnoreCase) || v.cultures.Values.Select(a => a.typeDescription !).Any(td => td.description != null && td.description.Contains(filter, StringComparison.InvariantCultureIgnoreCase) || td.pluralDescription != null && td.pluralDescription.Contains(filter, StringComparison.InvariantCultureIgnoreCase))); var filtered = types.Extract((k, v) => { var allMembers = v.cultures.Values.SelectMany(a => a.members.Keys).Distinct().ToList(); var filteredMembers = allMembers.Where(m => m.Contains(filter, StringComparison.InvariantCultureIgnoreCase) || v.cultures.Values.Any(lt => lt.members.GetOrThrow(m).description?.Contains(filter, StringComparison.InvariantCultureIgnoreCase) ?? false)) .ToList(); if (filteredMembers.Count == 0) { return(false); } foreach (var item in v.cultures.Values) { item.members = item.members.Where(a => filteredMembers.Contains(a.Key)).ToDictionary(); } return(true); }); types = complete.Concat(filtered).ToDictionary(); } return(new AssemblyResultTS { types = types.OrderBy(a => a.Key).ToDictionary(), cultures = cultures.Select(c => c.ToCulturesTS()) .ToDictionary(a => a.name) }); }
public static void Start(string connectionString, bool isPostgres, string?azureStorageConnectionString, string?broadcastSecret, string?broadcastUrls, bool includeDynamic = true, bool detectSqlVersion = true) { AzureStorageConnectionString = azureStorageConnectionString; using (HeavyProfiler.Log("Start")) using (var initial = HeavyProfiler.Log("Initial")) { StartParameters.IgnoredDatabaseMismatches = new List <Exception>(); StartParameters.IgnoredCodeErrors = new List <Exception>(); string?logDatabase = Connector.TryExtractDatabaseNameWithPostfix(ref connectionString, "_Log"); SchemaBuilder sb = new CustomSchemaBuilder { LogDatabaseName = logDatabase, Tracer = initial }; sb.Schema.Version = typeof(Starter).Assembly.GetName().Version !; sb.Schema.ForceCultureInfo = CultureInfo.GetCultureInfo("en-US"); MixinDeclarations.Register <OperationLogEntity, DiffLogMixin>(); MixinDeclarations.Register <UserEntity, UserEmployeeMixin>(); MixinDeclarations.Register <OrderDetailEmbedded, OrderDetailMixin>(); MixinDeclarations.Register <BigStringEmbedded, BigStringMixin>(); ConfigureBigString(sb); OverrideAttributes(sb); if (!isPostgres) { var sqlVersion = detectSqlVersion ? SqlServerVersionDetector.Detect(connectionString) : SqlServerVersion.AzureSQL; Connector.Default = new SqlServerConnector(connectionString, sb.Schema, sqlVersion !.Value); } else { var postgreeVersion = detectSqlVersion ? PostgresVersionDetector.Detect(connectionString) : null; Connector.Default = new PostgreSqlConnector(connectionString, sb.Schema, postgreeVersion); } CacheLogic.Start(sb, serverBroadcast: sb.Settings.IsPostgres ? new PostgresBroadcast() : broadcastSecret != null && broadcastUrls != null ? new SimpleHttpBroadcast(broadcastSecret, broadcastUrls) : null);/*Cache*/ /* LightDynamic * DynamicLogic.Start(sb, withCodeGen: false); * LightDynamic */ DynamicLogicStarter.Start(sb); if (includeDynamic)//Dynamic { DynamicLogic.CompileDynamicCode(); DynamicLogic.RegisterMixins(); DynamicLogic.BeforeSchema(sb); }//Dynamic // Framework modules TypeLogic.Start(sb); OperationLogic.Start(sb); ExceptionLogic.Start(sb); QueryLogic.Start(sb); // Extensions modules MigrationLogic.Start(sb); CultureInfoLogic.Start(sb); FilePathEmbeddedLogic.Start(sb); BigStringLogic.Start(sb); EmailLogic.Start(sb, () => Configuration.Value.Email, (template, target, message) => Configuration.Value.EmailSender); AuthLogic.Start(sb, "System", "Anonymous"); /* null); anonymous*/ AuthLogic.Authorizer = new SouthwindAuthorizer(() => Configuration.Value.ActiveDirectory); AuthLogic.StartAllModules(sb, activeDirectoryIntegration: true); AzureADLogic.Start(sb, adGroups: true, deactivateUsersTask: true); ResetPasswordRequestLogic.Start(sb); UserTicketLogic.Start(sb); SessionLogLogic.Start(sb); TypeConditionLogic.RegisterCompile <UserEntity>(SouthwindTypeCondition.UserEntities, u => u.Is(UserEntity.Current)); ProcessLogic.Start(sb); PackageLogic.Start(sb, packages: true, packageOperations: true); SchedulerLogic.Start(sb); OmniboxLogic.Start(sb); UserQueryLogic.Start(sb); UserQueryLogic.RegisterUserTypeCondition(sb, SouthwindTypeCondition.UserEntities); UserQueryLogic.RegisterRoleTypeCondition(sb, SouthwindTypeCondition.RoleEntities); UserQueryLogic.RegisterTranslatableRoutes(); ChartLogic.Start(sb, googleMapsChartScripts: false /*requires Google Maps API key in ChartClient */); UserChartLogic.RegisterUserTypeCondition(sb, SouthwindTypeCondition.UserEntities); UserChartLogic.RegisterRoleTypeCondition(sb, SouthwindTypeCondition.RoleEntities); UserChartLogic.RegisterTranslatableRoutes(); DashboardLogic.Start(sb, GetFileTypeAlgorithm(p => p.CachedQueryFolder)); DashboardLogic.RegisterUserTypeCondition(sb, SouthwindTypeCondition.UserEntities); DashboardLogic.RegisterRoleTypeCondition(sb, SouthwindTypeCondition.RoleEntities); DashboardLogic.RegisterTranslatableRoutes(); ViewLogLogic.Start(sb, new HashSet <Type> { typeof(UserQueryEntity), typeof(UserChartEntity), typeof(DashboardEntity) }); SystemEventLogLogic.Start(sb); DiffLogLogic.Start(sb, registerAll: true); ExcelLogic.Start(sb, excelReport: true); ToolbarLogic.Start(sb); ToolbarLogic.RegisterTranslatableRoutes(); SMSLogic.Start(sb, null, () => Configuration.Value.Sms); NoteLogic.Start(sb, typeof(UserEntity), /*Note*/ typeof(OrderEntity)); AlertLogic.Start(sb, typeof(UserEntity), /*Alert*/ typeof(OrderEntity)); FileLogic.Start(sb); TranslationLogic.Start(sb, countLocalizationHits: false); TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo("en")); HelpLogic.Start(sb); WordTemplateLogic.Start(sb); MapLogic.Start(sb); PredictorLogic.Start(sb, GetFileTypeAlgorithm(p => p.PredictorModelFolder)); PredictorLogic.RegisterAlgorithm(TensorFlowPredictorAlgorithm.NeuralNetworkGraph, new TensorFlowNeuralNetworkPredictor()); PredictorLogic.RegisterPublication(ProductPredictorPublication.MonthlySales, new PublicationSettings(typeof(OrderEntity))); RestLogLogic.Start(sb); RestApiKeyLogic.Start(sb); WorkflowLogicStarter.Start(sb, () => Starter.Configuration.Value.Workflow); ProfilerLogic.Start(sb, timeTracker: true, heavyProfiler: true, overrideSessionTimeout: true); // Southwind modules EmployeeLogic.Start(sb); ProductLogic.Start(sb); CustomerLogic.Start(sb); OrderLogic.Start(sb); ShipperLogic.Start(sb); StartSouthwindConfiguration(sb); TypeConditionLogic.Register <OrderEntity>(SouthwindTypeCondition.CurrentEmployee, o => o.Employee.Is(EmployeeEntity.Current)); if (includeDynamic)//2 { DynamicLogic.StartDynamicModules(sb); }//2 SetupCache(sb); Schema.Current.OnSchemaCompleted(); if (includeDynamic)//3 { DynamicLogic.RegisterExceptionIfAny(); }//3 } }
public ActionResult Submit() { ViewBag.translatedText = TranslationLogic.FindTranslation(currentInputText); return(View()); }
public static void Start(string connectionString) { using (HeavyProfiler.Log("Start")) using (var initial = HeavyProfiler.Log("Initial")) { StartParameters.IgnoredDatabaseMismatches = new List <Exception>(); StartParameters.IgnoredCodeErrors = new List <Exception>(); string?logDatabase = Connector.TryExtractDatabaseNameWithPostfix(ref connectionString, "_Log"); SchemaBuilder sb = new CustomSchemaBuilder { LogDatabaseName = logDatabase, Tracer = initial }; sb.Schema.Version = typeof(Starter).Assembly.GetName().Version; sb.Schema.ForceCultureInfo = CultureInfo.GetCultureInfo("en-US"); MixinDeclarations.Register <OperationLogEntity, DiffLogMixin>(); MixinDeclarations.Register <UserEntity, UserEmployeeMixin>(); OverrideAttributes(sb); var detector = SqlServerVersionDetector.Detect(connectionString); Connector.Default = new SqlConnector(connectionString, sb.Schema, detector !.Value); CacheLogic.Start(sb); DynamicLogicStarter.Start(sb); DynamicLogic.CompileDynamicCode(); DynamicLogic.RegisterMixins(); DynamicLogic.BeforeSchema(sb); TypeLogic.Start(sb); OperationLogic.Start(sb); ExceptionLogic.Start(sb); MigrationLogic.Start(sb); CultureInfoLogic.Start(sb); FilePathEmbeddedLogic.Start(sb); SmtpConfigurationLogic.Start(sb); EmailLogic.Start(sb, () => Configuration.Value.Email, (et, target) => Configuration.Value.SmtpConfiguration); AuthLogic.Start(sb, "System", null); AuthLogic.StartAllModules(sb); ResetPasswordRequestLogic.Start(sb); UserTicketLogic.Start(sb); SessionLogLogic.Start(sb); ProcessLogic.Start(sb); PackageLogic.Start(sb, packages: true, packageOperations: true); SchedulerLogic.Start(sb); QueryLogic.Start(sb); UserQueryLogic.Start(sb); UserQueryLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); UserQueryLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); ChartLogic.Start(sb); UserChartLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); UserChartLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); DashboardLogic.Start(sb); DashboardLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); DashboardLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); ViewLogLogic.Start(sb, new HashSet <Type> { typeof(UserQueryEntity), typeof(UserChartEntity), typeof(DashboardEntity) }); DiffLogLogic.Start(sb, registerAll: true); ExcelLogic.Start(sb, excelReport: true); ToolbarLogic.Start(sb); SMSLogic.Start(sb, null, () => Configuration.Value.Sms); SMSLogic.RegisterPhoneNumberProvider <PersonEntity>(p => p.Phone, p => null); SMSLogic.RegisterDataObjectProvider((PersonEntity p) => new { p.FirstName, p.LastName, p.Title, p.DateOfBirth }); SMSLogic.RegisterPhoneNumberProvider <CompanyEntity>(p => p.Phone, p => null); NoteLogic.Start(sb, typeof(UserEntity), /*Note*/ typeof(OrderEntity)); AlertLogic.Start(sb, typeof(UserEntity), /*Alert*/ typeof(OrderEntity)); FileLogic.Start(sb); TranslationLogic.Start(sb, countLocalizationHits: false); TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo("en")); HelpLogic.Start(sb); WordTemplateLogic.Start(sb); MapLogic.Start(sb); PredictorLogic.Start(sb, () => new FileTypeAlgorithm(f => new PrefixPair(Starter.Configuration.Value.Folders.PredictorModelFolder))); PredictorLogic.RegisterAlgorithm(CNTKPredictorAlgorithm.NeuralNetwork, new CNTKNeuralNetworkPredictorAlgorithm()); PredictorLogic.RegisterPublication(ProductPredictorPublication.MonthlySales, new PublicationSettings(typeof(OrderEntity))); RestLogLogic.Start(sb); RestApiKeyLogic.Start(sb); WorkflowLogicStarter.Start(sb, () => Starter.Configuration.Value.Workflow); EmployeeLogic.Start(sb); ProductLogic.Start(sb); CustomerLogic.Start(sb); OrderLogic.Start(sb); ShipperLogic.Start(sb); StartSouthwindConfiguration(sb); TypeConditionLogic.Register <OrderEntity>(SouthwindGroup.UserEntities, o => o.Employee == EmployeeEntity.Current); TypeConditionLogic.Register <EmployeeEntity>(SouthwindGroup.UserEntities, e => EmployeeEntity.Current.Is(e)); TypeConditionLogic.Register <OrderEntity>(SouthwindGroup.CurrentCustomer, o => o.Customer == CustomerEntity.Current); TypeConditionLogic.Register <PersonEntity>(SouthwindGroup.CurrentCustomer, o => o == CustomerEntity.Current); TypeConditionLogic.Register <CompanyEntity>(SouthwindGroup.CurrentCustomer, o => o == CustomerEntity.Current); ProfilerLogic.Start(sb, timeTracker: true, heavyProfiler: true, overrideSessionTimeout: true); DynamicLogic.StartDynamicModules(sb); DynamicLogic.RegisterExceptionIfAny(); SetupCache(sb); Schema.Current.OnSchemaCompleted(); } }
public static void Start(string connectionString, bool isPostgres, bool includeDynamic = true, bool detectSqlVersion = true) { using (HeavyProfiler.Log("Start")) using (var initial = HeavyProfiler.Log("Initial")) { StartParameters.IgnoredDatabaseMismatches = new List <Exception>(); StartParameters.IgnoredCodeErrors = new List <Exception>(); string?logDatabase = Connector.TryExtractDatabaseNameWithPostfix(ref connectionString, "_Log"); SchemaBuilder sb = new CustomSchemaBuilder { LogDatabaseName = logDatabase, Tracer = initial }; sb.Schema.Version = typeof(Starter).Assembly.GetName().Version !; sb.Schema.ForceCultureInfo = CultureInfo.GetCultureInfo("en-US"); MixinDeclarations.Register <OperationLogEntity, DiffLogMixin>(); MixinDeclarations.Register <UserEntity, UserEmployeeMixin>(); MixinDeclarations.Register <OrderDetailEmbedded, OrderDetailMixin>(); MixinDeclarations.Register <BigStringEmbedded, BigStringMixin>(); ConfigureBigString(sb); OverrideAttributes(sb); if (!isPostgres) { var sqlVersion = detectSqlVersion ? SqlServerVersionDetector.Detect(connectionString) : SqlServerVersion.AzureSQL; Connector.Default = new SqlServerConnector(connectionString, sb.Schema, sqlVersion !.Value); } else { var postgreeVersion = detectSqlVersion ? PostgresVersionDetector.Detect(connectionString) : null; Connector.Default = new PostgreSqlConnector(connectionString, sb.Schema, postgreeVersion); } CacheLogic.Start(sb, cacheInvalidator: sb.Settings.IsPostgres ? new PostgresCacheInvalidation() : null); DynamicLogicStarter.Start(sb); if (includeDynamic)//Dynamic { DynamicLogic.CompileDynamicCode(); DynamicLogic.RegisterMixins(); DynamicLogic.BeforeSchema(sb); }//Dynamic // Framework modules TypeLogic.Start(sb); OperationLogic.Start(sb); ExceptionLogic.Start(sb); QueryLogic.Start(sb); // Extensions modules MigrationLogic.Start(sb); CultureInfoLogic.Start(sb); FilePathEmbeddedLogic.Start(sb); BigStringLogic.Start(sb); EmailLogic.Start(sb, () => Configuration.Value.Email, (template, target, message) => Configuration.Value.EmailSender); AuthLogic.Start(sb, "System", "Anonymous"); /* null); anonymous*/ AuthLogic.StartAllModules(sb); ResetPasswordRequestLogic.Start(sb); UserTicketLogic.Start(sb); SessionLogLogic.Start(sb); WebAuthnLogic.Start(sb, () => Configuration.Value.WebAuthn); ProcessLogic.Start(sb); PackageLogic.Start(sb, packages: true, packageOperations: true); SchedulerLogic.Start(sb); OmniboxLogic.Start(sb); UserQueryLogic.Start(sb); UserQueryLogic.RegisterUserTypeCondition(sb, RG2Group.UserEntities); UserQueryLogic.RegisterRoleTypeCondition(sb, RG2Group.RoleEntities); UserQueryLogic.RegisterTranslatableRoutes(); ChartLogic.Start(sb, googleMapsChartScripts: false /*requires Google Maps API key in ChartClient */); UserChartLogic.RegisterUserTypeCondition(sb, RG2Group.UserEntities); UserChartLogic.RegisterRoleTypeCondition(sb, RG2Group.RoleEntities); UserChartLogic.RegisterTranslatableRoutes(); DashboardLogic.Start(sb); DashboardLogic.RegisterUserTypeCondition(sb, RG2Group.UserEntities); DashboardLogic.RegisterRoleTypeCondition(sb, RG2Group.RoleEntities); DashboardLogic.RegisterTranslatableRoutes(); ViewLogLogic.Start(sb, new HashSet <Type> { typeof(UserQueryEntity), typeof(UserChartEntity), typeof(DashboardEntity) }); DiffLogLogic.Start(sb, registerAll: true); ExcelLogic.Start(sb, excelReport: true); ToolbarLogic.Start(sb); ToolbarLogic.RegisterTranslatableRoutes(); FileLogic.Start(sb); TranslationLogic.Start(sb, countLocalizationHits: false); TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo("en")); HelpLogic.Start(sb); WordTemplateLogic.Start(sb); MapLogic.Start(sb); RestLogLogic.Start(sb); RestApiKeyLogic.Start(sb); WorkflowLogicStarter.Start(sb, () => Starter.Configuration.Value.Workflow); ProfilerLogic.Start(sb, timeTracker: true, heavyProfiler: true, overrideSessionTimeout: true); // RG2 modules EmployeeLogic.Start(sb); ProductLogic.Start(sb); CustomerLogic.Start(sb); OrderLogic.Start(sb); ShipperLogic.Start(sb); ItemLogic.Start(sb); ItemCategoryLogic.Start(sb); StartRG2Configuration(sb); TypeConditionLogic.Register <OrderEntity>(RG2Group.UserEntities, o => o.Employee == EmployeeEntity.Current); TypeConditionLogic.Register <EmployeeEntity>(RG2Group.UserEntities, e => EmployeeEntity.Current.Is(e)); TypeConditionLogic.Register <OrderEntity>(RG2Group.CurrentCustomer, o => o.Customer == CustomerEntity.Current); TypeConditionLogic.Register <PersonEntity>(RG2Group.CurrentCustomer, o => o == CustomerEntity.Current); TypeConditionLogic.Register <CompanyEntity>(RG2Group.CurrentCustomer, o => o == CustomerEntity.Current); if (includeDynamic)//2 { DynamicLogic.StartDynamicModules(sb); }//2 SetupCache(sb); Schema.Current.OnSchemaCompleted(); if (includeDynamic)//3 { DynamicLogic.RegisterExceptionIfAny(); }//3 } }
public static void Start(string connectionString) { string logDatabase = Connector.TryExtractDatabaseNameWithPostfix(ref connectionString, "_Log"); SchemaBuilder sb = new SchemaBuilder(); sb.Schema.Version = typeof(Starter).Assembly.GetName().Version; sb.Schema.ForceCultureInfo = CultureInfo.GetCultureInfo("en-US"); MixinDeclarations.Register <OperationLogEntity, DiffLogMixin>(); MixinDeclarations.Register <UserEntity, UserEmployeeMixin>(); OverrideAttributes(sb); SetupDisconnectedStrategies(sb); DynamicQueryManager dqm = new DynamicQueryManager(); Connector.Default = new SqlConnector(connectionString, sb.Schema, dqm, SqlServerVersion.SqlServer2012); CacheLogic.Start(sb); TypeLogic.Start(sb, dqm); OperationLogic.Start(sb, dqm); MigrationLogic.Start(sb, dqm); CultureInfoLogic.Start(sb, dqm); EmbeddedFilePathLogic.Start(sb, dqm); SmtpConfigurationLogic.Start(sb, dqm); EmailLogic.Start(sb, dqm, () => Configuration.Value.Email, et => Configuration.Value.SmtpConfiguration); AuthLogic.Start(sb, dqm, "System", null); AuthLogic.StartAllModules(sb, dqm); ResetPasswordRequestLogic.Start(sb, dqm); UserTicketLogic.Start(sb, dqm); SessionLogLogic.Start(sb, dqm); ProcessLogic.Start(sb, dqm); PackageLogic.Start(sb, dqm, packages: true, packageOperations: true); MapLogic.Start(sb, dqm); SchedulerLogic.Start(sb, dqm); QueryLogic.Start(sb); UserQueryLogic.Start(sb, dqm); UserQueryLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); UserQueryLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); ChartLogic.Start(sb, dqm); UserChartLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); UserChartLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); DashboardLogic.Start(sb, dqm); DashboardLogic.RegisterUserTypeCondition(sb, SouthwindGroup.UserEntities); DashboardLogic.RegisterRoleTypeCondition(sb, SouthwindGroup.RoleEntities); ViewLogLogic.Start(sb, dqm, new HashSet <Type> { typeof(UserQueryEntity), typeof(UserChartEntity), typeof(DashboardEntity) }); DiffLogLogic.Start(sb, dqm); ExceptionLogic.Start(sb, dqm); SMSLogic.Start(sb, dqm, null, () => Configuration.Value.Sms); SMSLogic.RegisterPhoneNumberProvider <PersonEntity>(p => p.Phone, p => null); SMSLogic.RegisterDataObjectProvider((PersonEntity p) => new { p.FirstName, p.LastName, p.Title, p.DateOfBirth }); SMSLogic.RegisterPhoneNumberProvider <CompanyEntity>(p => p.Phone, p => null); NoteLogic.Start(sb, dqm, typeof(UserEntity), /*Note*/ typeof(OrderEntity)); AlertLogic.Start(sb, dqm, typeof(UserEntity), /*Alert*/ typeof(OrderEntity)); FileLogic.Start(sb, dqm); TranslationLogic.Start(sb, dqm); TranslatedInstanceLogic.Start(sb, dqm, () => CultureInfo.GetCultureInfo("en")); HelpLogic.Start(sb, dqm); WordTemplateLogic.Start(sb, dqm); EmployeeLogic.Start(sb, dqm); ProductLogic.Start(sb, dqm); CustomerLogic.Start(sb, dqm); OrderLogic.Start(sb, dqm); ShipperLogic.Start(sb, dqm); StartSouthwindConfiguration(sb, dqm); TypeConditionLogic.Register <OrderEntity>(SouthwindGroup.UserEntities, o => o.Employee.RefersTo(EmployeeEntity.Current)); TypeConditionLogic.Register <EmployeeEntity>(SouthwindGroup.UserEntities, e => e == EmployeeEntity.Current); TypeConditionLogic.Register <OrderEntity>(SouthwindGroup.CurrentCustomer, o => o.Customer == CustomerEntity.Current); TypeConditionLogic.Register <PersonEntity>(SouthwindGroup.CurrentCustomer, o => o == CustomerEntity.Current); TypeConditionLogic.Register <CompanyEntity>(SouthwindGroup.CurrentCustomer, o => o == CustomerEntity.Current); DisconnectedLogic.Start(sb, dqm); DisconnectedLogic.BackupFolder = @"D:\SouthwindTemp\Backups"; DisconnectedLogic.BackupNetworkFolder = @"D:\SouthwindTemp\Backups"; DisconnectedLogic.DatabaseFolder = @"D:\SouthwindTemp\Database"; ProfilerLogic.Start(sb, dqm, timeTracker: true, heavyProfiler: true, overrideSessionTimeout: true); SetupCache(sb); SetSchemaNames(Schema.Current); if (logDatabase.HasText()) { SetLogDatabase(sb.Schema, new DatabaseName(null, logDatabase)); } Schema.Current.OnSchemaCompleted(); }
public static void Start(string connectionString, bool includeDynamic = true) { using (HeavyProfiler.Log("Start")) using (var initial = HeavyProfiler.Log("Initial")) { string? logDatabase = Connector.TryExtractDatabaseNameWithPostfix(ref connectionString, "_Log"); SchemaBuilder sb = new CustomSchemaBuilder { LogDatabaseName = logDatabase, Tracer = initial }; sb.Schema.Version = typeof(Starter).Assembly.GetName().Version!; sb.Schema.ForceCultureInfo = CultureInfo.GetCultureInfo("en-US"); MixinDeclarations.Register<OperationLogEntity, DiffLogMixin>(); MixinDeclarations.Register<UserEntity, UserEmployeeMixin>(); OverrideAttributes(sb); var detector = SqlServerVersionDetector.Detect(connectionString); Connector.Default = new SqlConnector(connectionString, sb.Schema, detector!.Value); CacheLogic.Start(sb); } TypeLogic.Start(sb); OperationLogic.Start(sb); ExceptionLogic.Start(sb); MigrationLogic.Start(sb); CultureInfoLogic.Start(sb); FilePathEmbeddedLogic.Start(sb); EmailLogic.Start(sb, () => Configuration.Value.Email, (et, target) => Configuration.Value.EmailSender); AuthLogic.Start(sb, "System", null); AuthLogic.StartAllModules(sb); ResetPasswordRequestLogic.Start(sb); UserTicketLogic.Start(sb); ProcessLogic.Start(sb); PackageLogic.Start(sb, packages: true, packageOperations: true); SchedulerLogic.Start(sb); QueryLogic.Start(sb); UserQueryLogic.Start(sb); UserQueryLogic.RegisterUserTypeCondition(sb, AtTestGroup.UserEntities); UserQueryLogic.RegisterRoleTypeCondition(sb, AtTestGroup.RoleEntities); ChartLogic.Start(sb); UserChartLogic.RegisterUserTypeCondition(sb, AtTestGroup.UserEntities); UserChartLogic.RegisterRoleTypeCondition(sb, AtTestGroup.RoleEntities); DashboardLogic.Start(sb); DashboardLogic.RegisterUserTypeCondition(sb, AtTestGroup.UserEntities); DashboardLogic.RegisterRoleTypeCondition(sb, AtTestGroup.RoleEntities); ViewLogLogic.Start(sb, new HashSet<Type> { typeof(UserQueryEntity), typeof(UserChartEntity), typeof(DashboardEntity) }); DiffLogLogic.Start(sb, registerAll: true); ExcelLogic.Start(sb, excelReport: true); ToolbarLogic.Start(sb); FileLogic.Start(sb); TranslationLogic.Start(sb, countLocalizationHits: false); TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo("en")); WordTemplateLogic.Start(sb); MapLogic.Start(sb); PredictorLogic.Start(sb, () => new FileTypeAlgorithm(f => new PrefixPair(Starter.Configuration.Value.Folders.PredictorModelFolder))); PredictorLogic.RegisterAlgorithm(CNTKPredictorAlgorithm.NeuralNetwork, new CNTKNeuralNetworkPredictorAlgorithm()); PredictorLogic.RegisterPublication(ProductPredictorPublication.MonthlySales, new PublicationSettings(typeof(OrderEntity))); EmployeeLogic.Start(sb); ProductLogic.Start(sb); CustomerLogic.Start(sb); OrderLogic.Start(sb); ShipperLogic.Start(sb); StartAtTestConfiguration(sb); TypeConditionLogic.Register<OrderEntity>(AtTestGroup.UserEntities, o => o.Employee == EmployeeEntity.Current); TypeConditionLogic.Register<EmployeeEntity>(AtTestGroup.UserEntities, e => EmployeeEntity.Current.Is(e)); TypeConditionLogic.Register<OrderEntity>(AtTestGroup.CurrentCustomer, o => o.Customer == CustomerEntity.Current); TypeConditionLogic.Register<PersonEntity>(AtTestGroup.CurrentCustomer, o => o == CustomerEntity.Current); TypeConditionLogic.Register<CompanyEntity>(AtTestGroup.CurrentCustomer, o => o == CustomerEntity.Current); ProfilerLogic.Start(sb, timeTracker: true, heavyProfiler: true, overrideSessionTimeout: true); if (includeDynamic) { } SetupCache(sb); Schema.Current.OnSchemaCompleted(); }
public override void Execute() { #line 8 "..\..\Translation\Views\ViewInstance.cshtml" CultureInfo culture = ViewBag.Culture; Type type = ViewBag.Type; ViewBag.Title = TranslationMessage.View0In1.NiceToString().FormatWith(type.NiceName(), culture == null ? TranslationMessage.AllLanguages.NiceToString() : culture.DisplayName); Dictionary <LocalizedInstanceKey, string> master = ViewBag.Master; var cultures = TranslationLogic.CurrentCultureInfos(TranslatedInstanceLogic.DefaultCulture); Func <CultureInfo, bool> editCulture = c => culture == null || culture.Name == c.Name; var filter = (string)ViewBag.Filter; var all = string.IsNullOrEmpty(filter); Func <LocalizedInstanceKey, bool> filtered = li => all || li.RowId.ToString() == filter || li.Instance.Id.ToString() == filter || li.Route.PropertyString().Contains(filter, StringComparison.InvariantCultureIgnoreCase) || master.GetOrThrow(li).Contains(filter, StringComparison.InvariantCultureIgnoreCase) || cultures.Any(ci => (Model.TryGetC(ci)?.TryGetC(li)?.TranslatedText ?? "").Contains(filter, StringComparison.InvariantCultureIgnoreCase)); #line default #line hidden WriteLiteral("\r\n"); #line 31 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.ScriptCss("~/Translation/Content/Translation.css")); #line default #line hidden WriteLiteral("\r\n\r\n\r\n\r\n<h2>"); #line 35 "..\..\Translation\Views\ViewInstance.cshtml" Write(ViewBag.Title); #line default #line hidden WriteLiteral("</h2>\r\n\r\n<div>\r\n"); #line 38 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 38 "..\..\Translation\Views\ViewInstance.cshtml" using (Html.BeginForm("View", "TranslatedInstance", FormMethod.Get)) { #line default #line hidden #line 40 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.Hidden("type")); #line default #line hidden #line 40 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 41 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.Hidden("culture")); #line default #line hidden #line 41 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 42 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.TextBox("filter", filter)); #line default #line hidden #line 42 "..\..\Translation\Views\ViewInstance.cshtml" ; #line default #line hidden WriteLiteral(" <input"); WriteLiteral(" type=\"hidden\""); WriteLiteral(" name=\"searchPressed\""); WriteLiteral(" value=\"true\""); WriteLiteral(" />\r\n"); WriteLiteral(" <input"); WriteLiteral(" type=\"submit\""); WriteAttribute("value", Tuple.Create(" value=\"", 1786), Tuple.Create("\"", 1835) #line 45 "..\..\Translation\Views\ViewInstance.cshtml" , Tuple.Create(Tuple.Create("", 1794), Tuple.Create <System.Object, System.Int32>(TranslationMessage.Search.NiceToString() #line default #line hidden , 1794), false) ); WriteLiteral(" />\r\n"); #line 46 "..\..\Translation\Views\ViewInstance.cshtml" } #line default #line hidden WriteLiteral("</div>\r\n\r\n"); #line 49 "..\..\Translation\Views\ViewInstance.cshtml" if (Model == null) { #line default #line hidden WriteLiteral(" <em>"); #line 51 "..\..\Translation\Views\ViewInstance.cshtml" Write(TranslationMessage.PressSearchForResults.NiceToString()); #line default #line hidden WriteLiteral("</em>\r\n"); #line 52 "..\..\Translation\Views\ViewInstance.cshtml" } else if (Model.IsEmpty()) { #line default #line hidden WriteLiteral(" <strong>"); #line 55 "..\..\Translation\Views\ViewInstance.cshtml" Write(TranslationMessage.NoResultsFound.NiceToString()); #line default #line hidden WriteLiteral("</strong>\r\n"); #line 56 "..\..\Translation\Views\ViewInstance.cshtml" } else { using (Html.BeginForm((TranslatedInstanceController c) => c.SaveView(Signum.Engine.Basics.TypeLogic.GetCleanName(type), culture == null ? null : culture.Name, filter))) { #line default #line hidden WriteLiteral(" <table"); WriteLiteral(" id=\"results\""); WriteLiteral(" style=\"width: 100%; margin: 0px\""); WriteLiteral(" class=\"st\""); WriteLiteral(">\r\n"); #line 62 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 62 "..\..\Translation\Views\ViewInstance.cshtml" foreach (var instance in master.Keys.Where(li => master.GetOrThrow(li).HasText()).Where(filtered).GroupBy(a => a.Instance).OrderBy(a => a.Key.Id)) { #line default #line hidden WriteLiteral(" <thead>\r\n <tr>\r\n <th"); WriteLiteral(" class=\"leftCell\""); WriteLiteral(">"); #line 66 "..\..\Translation\Views\ViewInstance.cshtml" Write(TranslationMessage.Instance.NiceToString()); #line default #line hidden WriteLiteral("</th>\r\n <th"); WriteLiteral(" class=\"titleCell\""); WriteLiteral(">"); #line 67 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.Href(Navigator.NavigateRoute(instance.Key), instance.Key.ToString())); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n"); #line 70 "..\..\Translation\Views\ViewInstance.cshtml" foreach (LocalizedInstanceKey key in instance.OrderBy(a => a.Route.ToString())) { var propertyString = key.Route.PropertyString().Replace("/", "[" + key.RowId + "]."); #line default #line hidden WriteLiteral(" <tr>\r\n <th"); WriteLiteral(" class=\"leftCell\""); WriteLiteral(">\r\n"); WriteLiteral(" "); #line 76 "..\..\Translation\Views\ViewInstance.cshtml" Write(TranslationMessage.Property.NiceToString()); #line default #line hidden WriteLiteral("\r\n </th>\r\n <th>"); #line 78 "..\..\Translation\Views\ViewInstance.cshtml" Write(propertyString); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n"); #line 80 "..\..\Translation\Views\ViewInstance.cshtml" foreach (var ci in cultures) { var formName = ci.Name + "#" + key.Instance.Key() + "#" + propertyString; if (ci.Name == TranslatedInstanceLogic.DefaultCulture.Name) { #line default #line hidden WriteLiteral(" <tr>\r\n <td"); WriteLiteral(" class=\"leftCell\""); WriteLiteral("><em>"); #line 88 "..\..\Translation\Views\ViewInstance.cshtml" Write(TranslatedInstanceLogic.DefaultCulture); #line default #line hidden WriteLiteral("</em></td>\r\n <td"); WriteLiteral(" class=\"monospaceCell\""); WriteLiteral(">\r\n"); #line 90 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 90 "..\..\Translation\Views\ViewInstance.cshtml" if (TranslatedInstanceLogic.RouteType(key.Route).Value == TranslateableRouteType.Html) { #line default #line hidden WriteLiteral(" <pre>"); #line 92 "..\..\Translation\Views\ViewInstance.cshtml" Write(master[key]); #line default #line hidden WriteLiteral("</pre>\r\n"); #line 93 "..\..\Translation\Views\ViewInstance.cshtml" } else { #line default #line hidden #line 96 "..\..\Translation\Views\ViewInstance.cshtml" Write(master[key]); #line default #line hidden #line 96 "..\..\Translation\Views\ViewInstance.cshtml" } #line default #line hidden WriteLiteral(" "); #line 98 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.TextArea(formName, master[key], new { style = "display:none" })); #line default #line hidden WriteLiteral("\r\n </td>\r\n </tr>\r\n"); #line 101 "..\..\Translation\Views\ViewInstance.cshtml" } else { TranslatedInstanceEntity trans = Model.TryGetC(ci)?.TryGetC(key); if (trans != null && editCulture(ci)) { #line default #line hidden WriteLiteral(" <tr>\r\n <td"); WriteLiteral(" class=\"leftCell\""); WriteLiteral(">"); #line 109 "..\..\Translation\Views\ViewInstance.cshtml" Write(ci.Name); #line default #line hidden WriteLiteral(" Diff</td>\r\n <td"); WriteLiteral(" class=\"monospaceCell\""); WriteLiteral(">\r\n <pre>"); #line 111 "..\..\Translation\Views\ViewInstance.cshtml" Write(Signum.Web.Translation.TranslationClient.Diff(trans.OriginalText, trans.TranslatedText)); #line default #line hidden WriteLiteral("</pre>\r\n </td>\r\n " + " </tr>\r\n"); #line 114 "..\..\Translation\Views\ViewInstance.cshtml" } if (trans != null || editCulture(ci)) { #line default #line hidden WriteLiteral(" <tr>\r\n <td"); WriteLiteral(" class=\"leftCell\""); WriteLiteral(">"); #line 121 "..\..\Translation\Views\ViewInstance.cshtml" Write(ci.Name); #line default #line hidden WriteLiteral("</td>\r\n <td"); WriteLiteral(" class=\"monospaceCell\""); WriteLiteral(">\r\n"); #line 123 "..\..\Translation\Views\ViewInstance.cshtml" #line default #line hidden #line 123 "..\..\Translation\Views\ViewInstance.cshtml" if (editCulture(ci)) { #line default #line hidden #line 125 "..\..\Translation\Views\ViewInstance.cshtml" Write(Html.TextArea(formName, trans?.TranslatedText, new { style = "width:90%;" })); #line default #line hidden #line 125 "..\..\Translation\Views\ViewInstance.cshtml" } else if (TranslatedInstanceLogic.RouteType(key.Route).Value == TranslateableRouteType.Html) { #line default #line hidden WriteLiteral(" <pre>"); #line 129 "..\..\Translation\Views\ViewInstance.cshtml" Write(trans.TranslatedText); #line default #line hidden WriteLiteral("</pre>\r\n"); #line 130 "..\..\Translation\Views\ViewInstance.cshtml" } else { #line default #line hidden #line 133 "..\..\Translation\Views\ViewInstance.cshtml" Write(trans.TranslatedText); #line default #line hidden #line 133 "..\..\Translation\Views\ViewInstance.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r" + "\n"); #line 137 "..\..\Translation\Views\ViewInstance.cshtml" } } } } } #line default #line hidden WriteLiteral(" </table>\r\n"); WriteLiteral(" <input"); WriteLiteral(" type=\"submit\""); WriteAttribute("value", Tuple.Create(" value=\"", 6410), Tuple.Create("\"", 6457) #line 144 "..\..\Translation\Views\ViewInstance.cshtml" , Tuple.Create(Tuple.Create("", 6418), Tuple.Create <System.Object, System.Int32>(TranslationMessage.Save.NiceToString() #line default #line hidden , 6418), false) ); WriteLiteral(" />\r\n"); #line 145 "..\..\Translation\Views\ViewInstance.cshtml" } } #line default #line hidden WriteLiteral("\r\n\r\n<script>\r\n $(function () {\r\n"); WriteLiteral(" "); #line 151 "..\..\Translation\Views\ViewInstance.cshtml" Write(Signum.Web.Translation.TranslationClient.Module["fixTextAreas"]()); #line default #line hidden WriteLiteral("\r\n });\r\n</script>\r\n"); }