Beispiel #1
0
 /// <summary>
 /// needed to initialize data - must always happen a bit later because the show-draft info isn't available when creating the first App-object.
 /// todo: later this should be moved to initialization of this object
 /// </summary>
 /// <param name="showDrafts"></param>
 /// <param name="versioningEnabled"></param>
 /// <param name="configurationValues">this is needed for providing parameters to the data-query-system</param>
 internal void InitData(bool showDrafts, bool versioningEnabled, IValueCollectionProvider configurationValues)
 {
     Log.Add($"init data drafts:{showDrafts}, vers:{versioningEnabled}, hasConf:{configurationValues != null}");
     ConfigurationProvider = configurationValues;
     ShowDraftsInData      = showDrafts;
     VersioningEnabled     = versioningEnabled;
 }
        /// <summary>
        /// Constructs a new App DataSource
        /// </summary>
        public DeferredPipelineQuery(int zoneId, int appId, IEntity queryDef, IValueCollectionProvider config)
        {
            ZoneId = zoneId;
            AppId = appId;
            QueryDefinition = queryDef;
            ConfigurationProvider = config;

            // this one is unusual, so don't pre-attach a default data stream
            //Out.Add(Constants.DefaultStreamName, new DataStream(this, Constants.DefaultStreamName, GetEntities));
        }
Beispiel #3
0
        /// <summary>
        /// Assembles a list of all queries / pipelines configured for this app. 
        /// The queries internally are not assembled yet for performance reasons...
        /// ...but will be auto-assembled the moment they are accessed
        /// </summary>
        /// <param name="zoneId"></param>
        /// <param name="appId"></param>
        /// <param name="valuesCollectionProvider"></param>
        /// <returns></returns>
        public static Dictionary<string, IDataSource> AllPipelines(int zoneId, int appId, IValueCollectionProvider valuesCollectionProvider)
        {
            var source = DataSource.GetInitialDataSource(appId: appId);
            var typeFilter = DataSource.GetDataSource<EntityTypeFilter>(appId: appId, upstream: source);
            typeFilter.TypeName = Constants.DataPipelineStaticName;

            var dict = new Dictionary<string, IDataSource>(StringComparer.OrdinalIgnoreCase);
            foreach (var entQuery in typeFilter.List)
            {
                var delayedQuery = new DeferredPipelineQuery(zoneId, appId, entQuery.Value, valuesCollectionProvider);
                dict.Add(entQuery.Value.Title[0].ToString(), delayedQuery);
            }
            return dict;
        }
Beispiel #4
0
        /// <summary>
        /// Create a data-source in code of the expected type
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="inSource"></param>
        /// <param name="configurationProvider"></param>
        /// <returns></returns>
        public T CreateSource <T>(IDataSource inSource = null, IValueCollectionProvider configurationProvider = null)
        {
            if (configurationProvider == null)
            {
                configurationProvider = ConfigurationProvider;
            }

            if (inSource != null)
            {
                return(DataSource.GetDataSource <T>(inSource.ZoneId, inSource.AppId, inSource, configurationProvider, Log));
            }

            var initialSource = DataSource.GetInitialDataSource(_sxcInstance.Environment.ZoneMapper.GetZoneId(Dnn.Portal.PortalId), App.AppId, _sxcInstance.Environment.Permissions.UserMayEditContent, ConfigurationProvider as ValueCollectionProvider);

            return(DataSource.GetDataSource <T>(initialSource.ZoneId, initialSource.AppId, initialSource, configurationProvider, Log));
        }
Beispiel #5
0
        public T CreateSource <T>(IDataSource inSource = null, IValueCollectionProvider configurationProvider = null)
        {
            if (configurationProvider == null)
            {
                configurationProvider = ConfigurationProvider;
            }

            if (inSource != null)
            {
                return(DataSource.GetDataSource <T>(inSource.ZoneId, inSource.AppId, inSource, configurationProvider));
            }

            var initialSource = DataSource.GetInitialDataSource(ZoneHelpers.GetZoneID(Dnn.Portal.PortalId).Value, App.AppId, _sxcInstance.Environment.Permissions.UserMayEditContent /*SecurityHelpers.HasEditPermission(Dnn.Module)*/);

            return(DataSource.GetDataSource <T>(initialSource.ZoneId, initialSource.AppId, initialSource, configurationProvider));
        }
        /// <summary>
        /// Create a data-source in code of the expected type
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="inSource"></param>
        /// <param name="configurationProvider"></param>
        /// <returns></returns>
        public T CreateSource <T>(IDataSource inSource = null, IValueCollectionProvider configurationProvider = null)
        {
            if (configurationProvider == null)
            {
                configurationProvider = ConfigurationProvider;
            }

            if (inSource != null)
            {
                return(DataSource.GetDataSource <T>(inSource.ZoneId, inSource.AppId, inSource, configurationProvider, Log));
            }

            var userMayEdit = SxcInstance.UserMayEdit;

            var initialSource = DataSource.GetInitialDataSource(SxcInstance.Environment.ZoneMapper.GetZoneId(_tenant.Id), App.AppId,
                                                                userMayEdit, ConfigurationProvider as ValueCollectionProvider);

            return(DataSource.GetDataSource <T>(initialSource.ZoneId, initialSource.AppId, initialSource, configurationProvider, Log));
        }
Beispiel #7
0
        public void InitAppAndPortalSettings(App app, int moduleId, PortalSettings portalSettings, IValueCollectionProvider provider)
        {
            foreach (var valueProvider in provider.Sources)
                ValueSources.Add(valueProvider.Key, valueProvider.Value);

            //// only add these in running inside an http-context. Otherwise leave them away!
            //if (HttpContext.Current != null)
            //{
            //    var request = HttpContext.Current.Request;
            //    ValueSources.Add("querystring", new FilteredNameValueCollectionPropertyAccess(request.QueryString));
            //    ValueSources.Add("server", new FilteredNameValueCollectionPropertyAccess(request.ServerVariables));
            //    ValueSources.Add("form", new FilteredNameValueCollectionPropertyAccess(request.Form));
            //}

            //ValueSources.Add("app", new AppPropertyAccess("app", app));
            ////if (app.Settings != null)
            ////    ValueSources.Add("appsettings", new DynamicEntityPropertyAccess("appsettings", app.Settings));
            ////if (app.Resources != null)
            ////    ValueSources.Add("appresources", new DynamicEntityPropertyAccess("appresources", app.Resources));

            ModuleId = moduleId;
            PortalSettings = portalSettings;  
        }
Beispiel #8
0
 /// <summary>
 /// needed to initialize data - must always happen a bit later because the show-draft info isn't available when creating the first App-object.
 /// todo: later this should be moved to initialization of this object
 /// </summary>
 /// <param name="showDrafts"></param>
 /// <param name="configurationValues">this is needed for providing parameters to the data-query-system</param>
 internal void InitData(bool showDrafts, IValueCollectionProvider configurationValues)
 {
     ConfigurationProvider = configurationValues;
     ShowDraftsInData      = showDrafts;
 }
Beispiel #9
0
 public T CreateSource <T>(IDataSource inSource = null, IValueCollectionProvider configurationProvider = null)
 => AppAndDataHelpers.CreateSource <T>(inSource, configurationProvider);
Beispiel #10
0
 public IDataSource CreateSource(string typeName = "", IDataSource inSource = null,
                                 IValueCollectionProvider configurationProvider = null)
 => AppAndDataHelpers.CreateSource(typeName, inSource, configurationProvider);
 /// <summary>
 /// Generate a delegate which will be used to build the configuration based existing stuff
 /// </summary>
 internal static Func <Eav.Apps.App, IAppDataConfiguration> Build(bool userMayEdit, bool publishEnabled, IValueCollectionProvider config)
 => appToUse => new AppDataConfiguration(userMayEdit, publishEnabled, config);
Beispiel #12
0
        //public PortalSettings PortalSettings;

        public TokenReplaceEav(App app, int instanceId, /*PortalSettings portalSettings,*/ IValueCollectionProvider provider)
        {
            InitAppAndPortalSettings(app, instanceId, /*portalSettings,*/ provider);
        }
Beispiel #13
0
Datei: App.cs Projekt: 2sic/2sxc
 /// <summary>
 /// needed to initialize data - must always happen a bit later because the show-draft info isn't available when creating the first App-object.
 /// todo: later this should be moved to initialization of this object
 /// </summary>
 /// <param name="showDrafts"></param>
 /// <param name="configurationValues">this is needed for providing parameters to the data-query-system</param>
 internal void InitData(bool showDrafts, IValueCollectionProvider configurationValues)
 {
     ConfigurationProvider = configurationValues;
     ShowDraftsInData = showDrafts;
 }
Beispiel #14
0
 public TokenReplaceEav(App app, int moduleId, PortalSettings portalSettings, IValueCollectionProvider provider) : base()
 {
     InitAppAndPortalSettings(app, moduleId, portalSettings, provider);
 }
Beispiel #15
0
        public IDataSource CreateSource(string typeName = "", IDataSource inSource = null, IValueCollectionProvider configurationProvider = null)
        {
            if (configurationProvider == null)
            {
                configurationProvider = ConfigurationProvider;
            }

            if (inSource != null)
            {
                return(DataSource.GetDataSource(typeName, inSource.ZoneId, inSource.AppId, inSource, configurationProvider));
            }

            var initialSource = DataSource.GetInitialDataSource(_sxcInstance.Environment.ZoneMapper.GetZoneId(Dnn.Portal.PortalId) /* ZoneHelpers.GetZoneId(Dnn.Portal.PortalId).Value*/, App.AppId, _sxcInstance.Environment.Permissions.UserMayEditContent, ConfigurationProvider as ValueCollectionProvider);

            return(typeName != "" ? DataSource.GetDataSource(typeName, initialSource.ZoneId, initialSource.AppId, initialSource, configurationProvider) : initialSource);
        }
Beispiel #16
0
        internal static ViewDataSource ForContentGroupInSxc(SxcInstance sxc, Template overrideTemplate, IValueCollectionProvider configurationProvider, Log parentLog, int instanceId = 0)
        {
            var log        = new Log("DS.CreateV", parentLog, "will create view data source");
            var showDrafts = sxc.UserMayEdit;// Factory.Resolve<IPermissions>().UserMayEditContent(sxc.InstanceInfo);

            log.Add($"mid#{instanceId}, draft:{showDrafts}, template:{overrideTemplate?.Name}");
            // Get ModuleDataSource
            var initialSource    = DataSource.GetInitialDataSource(sxc.ZoneId, sxc.AppId, showDrafts, configurationProvider, parentLog);
            var moduleDataSource = DataSource.GetDataSource <ModuleDataSource>(sxc.ZoneId, sxc.AppId, initialSource, configurationProvider, parentLog);

            moduleDataSource.InstanceId = instanceId;

            moduleDataSource.OverrideTemplate           = overrideTemplate; // new
            moduleDataSource.UseSxcInstanceContentGroup = true;             // new

            // If the Template has a Data-Pipeline, use an empty upstream, else use the ModuleDataSource created above
            var viewDataSourceUpstream = overrideTemplate?.Query == null
                ? moduleDataSource
                : null;

            log.Add($"use pipeline upstream:{viewDataSourceUpstream != null}");

            var viewDataSource = DataSource.GetDataSource <ViewDataSource>(sxc.ZoneId, sxc.AppId, viewDataSourceUpstream, configurationProvider, parentLog);

            // Take Publish-Properties from the View-Template
            if (overrideTemplate != null)
            {
                viewDataSource.Publish.Enabled = overrideTemplate.PublishData;
                viewDataSource.Publish.Streams = overrideTemplate.StreamsToPublish;

                log.Add($"override template, & pipe#{overrideTemplate.Query?.EntityId}");
                // Append Streams of the Data-Pipeline (this doesn't require a change of the viewDataSource itself)
                if (overrideTemplate.Query != null)
                {
                    new QueryFactory(parentLog).GetAsDataSource(sxc.AppId ?? -999, overrideTemplate.Query,
                                                                configurationProvider, viewDataSource, showDrafts: showDrafts);
                }
            }
            else
            {
                log.Add("no template override");
            }

            return(viewDataSource);
        }
Beispiel #17
0
        /// <summary>
        /// needed to initialize data - must always happen a bit later because the show-draft info isn't available when creating the first App-object.
        /// todo: later this should be moved to initialization of this object
        /// </summary>
        /// <param name="showDrafts"></param>
        internal void InitData(bool showDrafts, IValueCollectionProvider configurationValues)
        {
            ConfigurationProvider = configurationValues;

            // ToDo: Remove this as soon as App.Data getter on App class is fixed #1 and #2
            if (_data == null)
            {
                // ModulePermissionController does not work when indexing, return false for search
                var initialSource = SexyContent.GetInitialDataSource(ZoneId, AppId, showDrafts);

                // todo: probably use th efull configuration provider from function params, not from initial source?
                _data = DataSource.GetDataSource<DataSources.App>(initialSource.ZoneId,
                    initialSource.AppId, initialSource, initialSource.ConfigurationProvider);
                var defaultLanguage = "";
                var languagesActive = SexyContent.GetCulturesWithActiveState(OwnerPS.PortalId, ZoneId).Any(c => c.Active);
                if (languagesActive)
                    defaultLanguage = OwnerPS.DefaultLanguage;
                Data.DefaultLanguage = defaultLanguage;
                Data.CurrentUserName = OwnerPS.UserInfo.Username;
            }
        }
Beispiel #18
0
        public void InitAppAndPortalSettings(App app, int moduleId, /*PortalSettings portalSettings,*/ IValueCollectionProvider provider)
        {
            foreach (var valueProvider in provider.Sources)
            {
                ValueSources.Add(valueProvider.Key, valueProvider.Value);
            }

            ModuleId = moduleId;
            //PortalSettings = portalSettings;
        }
Beispiel #19
0
        public void InitAppAndPortalSettings(App app, int moduleId, PortalSettings portalSettings, IValueCollectionProvider provider)
        {
            foreach (var valueProvider in provider.Sources)
            {
                ValueSources.Add(valueProvider.Key, valueProvider.Value);
            }

            //// only add these in running inside an http-context. Otherwise leave them away!
            //if (HttpContext.Current != null)
            //{
            //    var request = HttpContext.Current.Request;
            //    ValueSources.Add("querystring", new FilteredNameValueCollectionPropertyAccess(request.QueryString));
            //    ValueSources.Add("server", new FilteredNameValueCollectionPropertyAccess(request.ServerVariables));
            //    ValueSources.Add("form", new FilteredNameValueCollectionPropertyAccess(request.Form));
            //}

            //ValueSources.Add("app", new AppPropertyAccess("app", app));
            ////if (app.Settings != null)
            ////    ValueSources.Add("appsettings", new DynamicEntityPropertyAccess("appsettings", app.Settings));
            ////if (app.Resources != null)
            ////    ValueSources.Add("appresources", new DynamicEntityPropertyAccess("appresources", app.Resources));

            ModuleId       = moduleId;
            PortalSettings = portalSettings;
        }
Beispiel #20
0
 public TokenReplaceEav(App app, int moduleId, PortalSettings portalSettings, IValueCollectionProvider provider) : base()
 {
     InitAppAndPortalSettings(app, moduleId, portalSettings, provider);
 }