/// <summary>
        /// Saves the settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <returns>Whether the save action succeeded.</returns>
        public bool SaveSettings(ClonedContentProviderSettings settings)
        {
            if (settings == null)
            {
                return(false);
            }

            try
            {
                ClonedContentProviderSettings currentSettings = this.Get(settings.Name);

                if (currentSettings == null)
                {
                    Store.Save(settings);
                }
                else
                {
                    Store.Save(settings, currentSettings.Id);
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Deletes the provider.
        /// </summary>
        /// <param name="providerName">Name of the provider.</param>
        /// <returns> <c>true</c> if [the provider was removed]; otherwise, <c>false</c>.</returns>
        /// <exception cref="System.InvalidOperationException">
        /// Provider setting not found.
        /// or
        /// </exception>
        public static bool DeleteProvider(string providerName)
        {
            IContentProviderManager providerManager = ServiceLocator.Current.GetInstance <IContentProviderManager>();
            ContentProvider         pageProvider    = providerManager.ProviderMap.GetProvider(providerName);

            try
            {
                if (pageProvider != null)
                {
                    providerManager.ProviderMap.RemoveProvider(providerName);
                }

                ClonedContentProviderSettings providerSetting = SettingsRepository.Instance.Get(providerName);

                if (providerSetting != null)
                {
                    SettingsRepository.Instance.Delete(providerSetting);
                }

                CacheManager.Clear();
            }
            catch (Exception exception)
            {
                Logger.Error(exception.Message, exception);
                throw new InvalidOperationException(exception.Message);
            }

            return(true);
        }
        /// <summary>
        /// The row data bound.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        protected void RowDataBound(object sender, ListViewItemEventArgs e)
        {
            ListViewDataItem dataItem = (ListViewDataItem)e.Item;

            if (e.Item.ItemType != ListViewItemType.DataItem)
            {
                return;
            }

            Label              labelName       = (Label)e.Item.FindControl("labelName");
            Label              labelRoot       = (Label)e.Item.FindControl("labelRoot");
            Label              labelEntryPoint = (Label)e.Item.FindControl("labelEntryPoint");
            Button             buttonDelete    = (Button)e.Item.FindControl("buttonDelete");
            HtmlGenericControl cmsButtonDelete = (HtmlGenericControl)e.Item.FindControl("cmsButtonDelete");

            ClonedContentProviderSettings pageProviderSettings = dataItem.DataItem as ClonedContentProviderSettings;

            if (pageProviderSettings == null)
            {
                return;
            }

            labelName.Text = pageProviderSettings.Name;

            if (pageProviderSettings.EntryPoint > 0)
            {
                PageData page = this.ContentRepository.Get <PageData>(new PageReference(pageProviderSettings.EntryPoint));

                if (page != null)
                {
                    labelEntryPoint.Text = string.Format(
                        CultureInfo.InvariantCulture,
                        "<strong>{0}</strong>: {1}<br/>",
                        "entryPoint",
                        string.Format(CultureInfo.InvariantCulture, "{0} ({1})", page.PageName, page.PageLink.ID));
                }
            }

            if (pageProviderSettings.Root > 0)
            {
                PageData page = this.ContentRepository.Get <PageData>(new PageReference(pageProviderSettings.Root));

                labelRoot.Text = string.Format(
                    CultureInfo.InvariantCulture,
                    "<strong>{0}</strong>: {1}<br/>",
                    "root",
                    string.Format(CultureInfo.InvariantCulture, "{0} ({1})", page.PageName, page.PageLink.ID));
            }
            else
            {
                buttonDelete.Visible    = false;
                cmsButtonDelete.Visible = false;
            }
        }
        /// <summary>
        /// Deletes the provider setting.
        /// </summary>
        /// <param name="providerSettings">The provider settings.</param>
        /// <returns>Whether the delete action succeeded.</returns>
        public bool Delete(ClonedContentProviderSettings providerSettings)
        {
            try
            {
                Store.Delete(providerSettings);
            }
            catch (InvalidOperationException)
            {
                return(false);
            }

            return(true);
        }
Beispiel #5
0
        /// <summary>
        /// Adds the provider.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <param name="entryPoint">The entry point.</param>
        /// <param name="providerName">Name of the provider.</param>
        /// <param name="categoryList">The category list.</param>
        /// <returns>
        ///   <c>true</c> if [the provider has been attached]; otherwise, <c>false</c>.
        /// </returns>
        /// <exception cref="System.InvalidOperationException">Content provider for this node already attached.
        /// or
        /// Content provider with same name already attached.</exception>
        public static bool AddProvider(int root, int entryPoint, string providerName, CategoryList categoryList)
        {
            string name = string.Format(CultureInfo.InvariantCulture, "{0}-ClonedContent-{1}-{2}", providerName, root, entryPoint);

            IQueryable <ClonedContentProviderSettings> providerCollection = SettingsRepository.Instance.GetAll().AsQueryable();

            if (providerCollection.Count(pc => pc.EntryPoint.Equals(entryPoint)) > 0)
            {
                // A provider is already attached to this node.
                throw new InvalidOperationException("Content provider for this node already attached.");
            }

            if (providerCollection.Count(pc => pc.Name.Equals(name)) > 0)
            {
                // A provider with the same name already exists.
                throw new InvalidOperationException("Content provider with same name already attached.");
            }

            CategoryList categories = categoryList ?? new CategoryList();

            ClonedContentProvider provider = new ClonedContentProvider(
                name,
                new PageReference(root),
                new PageReference(entryPoint),
                categories);

            IContentProviderManager providerManager = ServiceLocator.Current.GetInstance <IContentProviderManager>();

            ClonedContentProviderSettings contentProviderSettings = new ClonedContentProviderSettings
            {
                Name         = name,
                EntryPoint   = entryPoint,
                Root         = root,
                CategoryList =
                    string.Join(
                        ",",
                        categories)
            };

            providerManager.ProviderMap.AddProvider(provider);

            SettingsRepository.Instance.SaveSettings(contentProviderSettings);

            CacheManager.Clear();

            return(true);
        }
        /// <summary>
        ///     Binds the data.
        /// </summary>
        private void BindData()
        {
            this.providerSettings.Clear();

            this.providerSettings = SettingsRepository.Instance.GetAll();

            if (this.providerSettings.Count <= 0)
            {
                ClonedContentProviderSettings contentProviderSettings = new ClonedContentProviderSettings
                {
                    Name =
                        "No providers found",
                    Root       = 0,
                    EntryPoint = 0
                };
                this.providerSettings.Add(contentProviderSettings);
            }

            this.listView.DataSource = this.providerSettings;
            this.listView.DataBind();
        }