public MailMessage GetForgotPasswordMailTemplate()
        {
            var settingsItem       = GetSettingsItem(null);
            InternalLinkField link = settingsItem.Fields[Templates.AccountsSettings.Fields.ForgotPasswordMailTemplate];
            var mailTemplateItem   = link.TargetItem;

            if (mailTemplateItem == null)
            {
                throw new ItemNotFoundException($"Could not find mail template item with {link.TargetID} ID");
            }

            var fromMail = mailTemplateItem.Fields[Templates.MailTemplate.Fields.From];

            if (string.IsNullOrEmpty(fromMail.Value))
            {
                throw new InvalidValueException("'From' field in mail template should be set");
            }

            var body    = mailTemplateItem.Fields[Templates.MailTemplate.Fields.Body];
            var subject = mailTemplateItem.Fields[Templates.MailTemplate.Fields.Subject];

            return(new MailMessage
            {
                From = new MailAddress(fromMail.Value),
                Body = body.Value,
                Subject = subject.Value
            });
        }
        protected void MapToLinkField(Link link, InternalLinkField linkField, SitecoreFieldConfiguration config)
        {
            var item = linkField.InnerField.Item;

            if (link.TargetId == Guid.Empty)
            {
                ItemLink iLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, linkField.TargetItem.Database.Name, linkField.TargetID, linkField.TargetItem.Paths.FullPath);
                linkField.RemoveLink(iLink);
            }
            else
            {
                ID   newId  = new ID(link.TargetId);
                Item target = item.Database.GetItem(newId);

                if (target != null)
                {
                    ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath);
                    linkField.UpdateLink(nLink);
                }
                else
                {
                    throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId));
                }
            }
        }
        public virtual string GetPageLink(Item contextItem, ID fieldID)
        {
            var item = this.GetAccountsSettingsItem(contextItem);

            if (item == null)
            {
                throw new Exception("Page with accounts settings isn't specified");
            }

            InternalLinkField link = item.Fields[fieldID];

            if (link.TargetItem == null)
            {
                throw new Exception($"{link.InnerField.Name} link isn't set");
            }

            if (Sitecore.Context.Item.InFxm())
            {
                UrlOptions options = LinkManager.GetDefaultUrlOptions();
                options.SiteResolving          = true;
                options.AlwaysIncludeServerUrl = true;
                return(link.TargetItem.Url(options));
            }
            else
            {
                return(link.TargetItem.Url());
            }
        }
        protected void MapToLinkModel(Link link, InternalLinkField field, SitecoreFieldConfiguration config)
        {
            var urlOptions = _urlOptionsResolver.CreateUrlOptions(config.UrlOptions);

            link.Url      = field.TargetItem == null ? string.Empty : LinkManager.GetItemUrl(field.TargetItem, urlOptions);
            link.Type     = LinkType.Internal;
            link.TargetId = field.TargetItem == null ? Guid.Empty : field.TargetItem.ID.Guid;
            link.Text     = field.TargetItem == null ? string.Empty : field.TargetItem.DisplayName;
        }
Example #5
0
        /// <summary>
        /// Set URL for Internal Link field
        /// </summary>
        /// <param name="field">Sitecore Field</param>
        /// <param name="value">Path or ID of existing Sitecore Item</param>
        public static void SetInternalLinkvalue(Field field, object value)
        {
            InternalLinkField thisField = (InternalLinkField)field;
            Item item = field.Database.GetItemFromValue(value);

            if (item != null)
            {
                thisField.Value = item.Paths.Path;
            }
        }
Example #6
0
        private LoginInfo CreateLoginInfo(string returnUrl = null)
        {
            InternalLinkField link = Context.Site.GetSettingsItem().Fields[Templates.AccountsSettings.Fields.AfterLoginPage];

            if (link.TargetItem == null)
            {
                throw new Exception("Account Settings: After Login Page link isn't set.");
            }

            return(new LoginInfo
            {
                ReturnUrl = returnUrl ?? link.TargetItem.Url()
            });
        }
        public static Item GetInternalLinkFieldItem(this Item i, string internalLinkFieldName)
        {
            if (i == null)
            {
                return(null);
            }
            InternalLinkField ilf = i.Fields[internalLinkFieldName];

            if (ilf != null && ilf.TargetItem != null)
            {
                return(ilf.TargetItem);
            }
            return(null);
        }
Example #8
0
        public override string Value(TokenDataCollection extraData)
        {
            InternalLinkField renderingItem = TokenKeeper.CurrentKeeper.GetDatabase().GetItem(BackingId).Fields["Rendering"];
            TextWriter        tw            = new StringWriter();
            var           h  = new HtmlHelper(new ViewContext(new ControllerContext(), new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), tw), new ViewPage());
            StringBuilder sb = new StringBuilder();

            if (!string.IsNullOrWhiteSpace(extraData["Datasource for the rendering"]))
            {
                sb.Append(new SitecoreHelper(h).Rendering(renderingItem.TargetID.ToString(),
                                                          new { Datasource = extraData["Datasource for the rendering"] }));
            }
            return(sb.ToString());
        }
        internal static Item IdentificationGoal()
        {
            var configItem = GetConfigurationItem();

            if (configItem != null)
            {
                if (configItem.Fields[Templates.Configuration.Fields.IdentificationGoal] != null)
                {
                    InternalLinkField link = configItem.Fields[Templates.Configuration.Fields.IdentificationGoal];

                    return(link?.TargetItem);
                }
            }

            return(null);
        }
        protected override object ExtractTypedValueFromField()
        {
            InternalLinkField field = Field;

            var item = field.TargetItem;

            if (item != null)
            {
                var targetModel = Activator.CreateInstance(Property.PropertyType);

                ModelMapper.MapTo(item, targetModel);

                return(targetModel);
            }

            return(null);
        }
        /// <inheritdoc />
        protected override object GetValueToAssign()
        {
            InternalLinkField field = Field;

            var item = field.TargetItem;

            if (item != null)
            {
                var targetModel = Activator.CreateInstance(Property.PropertyType);

                MappingContext.Current.MapTo(item, targetModel);

                return(targetModel);
            }

            return(null);
        }
Example #12
0
        public virtual string GetPageLink(Item contextItem, ID fieldID)
        {
            var item = this.GetAccountsSettingsItem(contextItem);

            if (item == null)
            {
                throw new Exception("Page with accounts settings isn't specified");
            }

            InternalLinkField link = item.Fields[fieldID];

            if (link.TargetItem == null)
            {
                throw new Exception($"{link.InnerField.Name} link isn't set");
            }

            return(link.TargetItem.Url());
        }
        /// <summary>
        /// Attempts to get an ajax version of the supplied rendering.
        /// </summary>
        /// <param name="rendering">The original <see cref="Rendering"/> to base the search from</param>
        /// <returns>The Ajax version of the original <see cref="Rendering"/>. Null if no ajax version is found.</returns>
        private Rendering GetAjaxVersion(Rendering rendering)
        {
            if (rendering == null || string.IsNullOrWhiteSpace(rendering.RenderingItemPath))
            {
                return(null);
            }

            var renderingItem = this.Database.GetItem(rendering.RenderingItemPath);
            InternalLinkField ajaxLinkField = renderingItem.Fields["ajax rendering"];

            if (ajaxLinkField == null)
            {
                return(null);
            }

            var ajaxRenderingDatabaseItem = this.Database.GetItem(ajaxLinkField.TargetID);

            if (ajaxRenderingDatabaseItem == null)
            {
                return(null);
            }

            // Build the ajax rendering item
            var ajaxRenderingItem = new Rendering
            {
                RenderingItem     = new RenderingItem(ajaxRenderingDatabaseItem),
                Caching           = rendering.Caching,
                ChildRenderings   = rendering.ChildRenderings,
                DataSource        = rendering.DataSource,
                DeviceId          = rendering.DeviceId,
                Item              = rendering.Item,
                LayoutId          = rendering.LayoutId,
                Model             = rendering.Model,
                Parameters        = rendering.Parameters,
                Placeholder       = rendering.Placeholder,
                RenderingItemPath = ajaxRenderingDatabaseItem.ID.ToString(),
            };

            return(ajaxRenderingItem);
        }