コード例 #1
0
    /// <summary>
    /// Runs the processor.
    /// </summary>
    /// <param name="args">The arguments.</param>
    public override void Process(ConfigurationPipelineArgs args)
    {
      object container = Context.Entity.Resolve(args.ConfigurationItemType, null);

      if (!(container is IEntity))
      {
        return;
      }

      Item item = args.CustomData["item"] as Item;
      if (item == null)
      {
        return;
      }

      LinkDatabase linkDatabase = Globals.LinkDatabase;
      ItemLink[] links = linkDatabase.GetReferrers(item);

      foreach (ItemLink link in links)
      {
        Item source = link.GetSourceItem();
        if (source.Parent.TemplateID != new ID(Configuration.Settings.GetSetting("Ecommerce.Settings.SettingsRootTemplateId")))
        {
          continue;
        }

        this.RegisterInstance(args, (IEntity)container, source);
        args.AbortPipeline();

        break;
      }
    }
コード例 #2
0
        /// <summary>
        /// Runs the processor.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(ConfigurationPipelineArgs args)
        {
            object container = Context.Entity.Resolve(args.ConfigurationItemType, null);

            if (!(container is IEntity))
            {
                return;
            }

            Item item = args.CustomData["item"] as Item;

            if (item == null)
            {
                return;
            }

            LinkDatabase linkDatabase = Globals.LinkDatabase;

            ItemLink[] links = linkDatabase.GetReferrers(item);

            foreach (ItemLink link in links)
            {
                Item source = link.GetSourceItem();
                if (source.Parent.TemplateID != new ID(Configuration.Settings.GetSetting("Ecommerce.Settings.SettingsRootTemplateId")))
                {
                    continue;
                }

                this.RegisterInstance(args, (IEntity)container, source);
                args.AbortPipeline();

                break;
            }
        }
コード例 #3
0
        /// <summary>
        /// Runs the processor.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process([NotNull] ConfigurationPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            object container = Context.Entity.Resolve(args.ConfigurationItemType);

            if (!(container is IEntity))
            {
                return;
            }

            if (Sitecore.Context.Site == null)
            {
                return;
            }

            if (Sitecore.Context.Database == null)
            {
                return;
            }

            string settingsPartialPath = Sitecore.Context.Site.Properties[EcommerceSiteSettingsAttribute];

            if (string.IsNullOrEmpty(settingsPartialPath))
            {
                settingsPartialPath = EcommerceSiteSettingsDefaultValue;
            }

            string settingsFullPath = FileUtil.MakePath(Sitecore.Context.Site.StartPath, settingsPartialPath);

            Item settingsItemRoot = Sitecore.Context.Database.GetItem(settingsFullPath);

            if (settingsItemRoot == null)
            {
                return;
            }

            if (settingsItemRoot.Template.ID.ToString() != SettingsRootTemplateId && settingsItemRoot.Template.BaseTemplates.Where(x => x.ID.ToString() == SettingsRootTemplateId).FirstOrDefault() == null)
            {
                return;
            }

            IEntity entity       = (IEntity)container;
            Item    settingsItem = settingsItemRoot.Axes.SelectSingleItem(string.Format(".//*[@@name='{0}']", entity.Alias));

            if (settingsItem != null)
            {
                this.RegisterInstance(args, (IEntity)container, settingsItem);
            }

            args.AbortPipeline();
        }