コード例 #1
0
 protected void ImportLinksToCommentTable(IList<App.Models.Questions.Questions> questions)
 {
     CommentManager commentManager = new CommentManager();
     IList<Comment> comments = commentManager.GetList();
     LinkManager linkManager = new LinkManager();
     foreach (App.Models.Questions.Questions question in questions)
     {
         IList<Link> links = linkManager.GetLinksForQuestion(question.QuestionID);
         if(links != null && links.Count > 0)
             AddLinksToTheCommentTable(links, comments, question.QuestionID);
     }
 }
コード例 #2
0
        public override void Process(HttpRequestArgs args)
        {
            var site = Sitecore.Context.Site.GetSiteSettings <IPWhiteListSiteSettings>();

            if (site == null)
            {
                return;
            }

            if (site.WhiteListingEnabled && (Context.Item == null || !Context.Item.ID.Guid.Equals(site.RestrictedAccessPageId)))
            {
                IPAddress clientIP = null;
                if (IPAddress.TryParse(args.Context.Request.UserHostAddress, out clientIP))
                {
                    var globalFolder = Context.Database.GetItem(new Sitecore.Data.ID(GlobalRulesFolderID));
                    var siteFolder   = Context.Database.GetItem(new Sitecore.Data.ID(site.SiteConfigurationId)).Children.Where(a => a.DisplayName == "IP White List").FirstOrDefault();;

                    foreach (var ip in GetIPs(globalFolder, "GlobalWhiteListedIPs"))
                    {
                        if (clientIP.Equals(ip))
                        {
                            return;
                        }
                    }

                    foreach (var range in GetRanges(globalFolder, "GlobalWhiteListedRanges"))
                    {
                        if (range.IsInRange(clientIP))
                        {
                            return;
                        }
                    }

                    if (siteFolder != null)
                    {
                        foreach (var ip in GetIPs(siteFolder, site.SiteConfigurationId + "WhiteListedIPs"))
                        {
                            if (clientIP.Equals(ip))
                            {
                                return;
                            }
                        }

                        foreach (var range in GetRanges(siteFolder, site.SiteConfigurationId + "WhiteListedRanges"))
                        {
                            if (range.IsInRange(clientIP))
                            {
                                return;
                            }
                        }
                    }

                    //We're not White Listed, try custom page with 302 redirect
                    try
                    {
                        var restricedPageUrl = LinkManager.GetItemUrl(Context.Database.GetItem(new Sitecore.Data.ID(site.RestrictedAccessPageId)));
                        args.Context.Response.Status     = "302 Moved Temporarily";
                        args.Context.Response.StatusCode = (int)System.Net.HttpStatusCode.Moved;
                        args.Context.Response.AddHeader("Location", restricedPageUrl);
                        args.Context.Response.End();
                    }
                    catch
                    {
                        //use default IIS 403 instead
                        args.Context.Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
                        args.Context.Response.End();
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Sets the field.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <param name="value">The value.</param>
        /// <param name="config">The config.</param>
        /// <param name="context">The context.</param>
        /// <exception cref="Glass.Mapper.MapperException">
        /// No item with ID {0}. Can not update Link linkField.Formatted(newId)
        /// or
        /// No item with ID {0}. Can not update Link linkField.Formatted(newId)
        /// </exception>
        public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context)
        {
            Link link = value as Link;


            if (field == null)
            {
                return;
            }

            var item = field.Item;

            LinkField linkField = new LinkField(field);

            if (link == null || link.Type == LinkType.NotSet)
            {
                linkField.Clear();
                return;
            }


            switch (link.Type)
            {
            case LinkType.Internal:
                linkField.LinkType = "internal";
                if (linkField.TargetID.Guid != link.TargetId)
                {
                    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)
                        {
                            linkField.TargetID = newId;
                            ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath);
                            linkField.UpdateLink(nLink);
                            linkField.Url = LinkManager.GetItemUrl(target);
                        }
                        else
                        {
                            throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId));
                        }
                    }
                }
                break;

            case LinkType.Media:
                linkField.LinkType = "media";
                if (linkField.TargetID.Guid != link.TargetId)
                {
                    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)
                        {
                            global::Sitecore.Data.Items.MediaItem media = new global::Sitecore.Data.Items.MediaItem(target);

                            linkField.TargetID = newId;
                            ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath);
                            linkField.UpdateLink(nLink);
                            linkField.Url = global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media);
                        }
                        else
                        {
                            throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId));
                        }
                    }
                }
                break;

            case LinkType.External:
                linkField.LinkType = "external";
                linkField.Url      = link.Url;
                break;

            case LinkType.Anchor:
                linkField.LinkType = "anchor";
                linkField.Url      = link.Anchor;
                break;

            case LinkType.MailTo:
                linkField.LinkType = "mailto";
                linkField.Url      = link.Url;
                break;

            case LinkType.JavaScript:
                linkField.LinkType = "javascript";
                linkField.Url      = link.Url;
                break;
            }



            if (!link.Anchor.IsNullOrEmpty())
            {
                linkField.Anchor = link.Anchor;
            }
            if (!link.Class.IsNullOrEmpty())
            {
                linkField.Class = link.Class;
            }
            if (!link.Text.IsNullOrEmpty())
            {
                linkField.Text = link.Text;
            }
            if (!link.Title.IsNullOrEmpty())
            {
                linkField.Title = link.Title;
            }
            if (!link.Query.IsNullOrEmpty())
            {
                linkField.QueryString = link.Query;
            }
            if (!link.Target.IsNullOrEmpty())
            {
                linkField.Target = link.Target;
            }
        }
コード例 #4
0
        private void CreateRedirectItem(Item item, Item oldParent)
        {
            // we only want a redirect on pages and media assets
            if (oldParent.Paths.IsContentItem || oldParent.Paths.IsMediaItem)
            {
                string   oldPath = LinkManager.GetItemUrl(oldParent).Replace("/sitecore/shell", "") + "/" + LinkManager.GetItemUrl(item).Split('/').Last();
                Database db      = Sitecore.Configuration.Factory.GetDatabase("master");
                // Get the generated folder underneath the redirects folder.  It is a bucketed item.
                Item parentItem = db.GetItem(new ID("{46CE2092-FF8D-454E-B826-A2ADDB7E0BA3}"));

                if (parentItem != null)
                {
                    //Now we need to get the template from which the item is created (Redirect Url)
                    TemplateItem template = db.GetTemplate(new ID("{B5967A68-7F70-42D3-9874-0E4D001DBC20}"));

                    if (template != null)
                    {
                        // Create the item
                        Item newItem = parentItem.Add(ItemUtil.ProposeValidItemName(oldPath.Replace('/', ' ')), template);

                        newItem.Editing.BeginEdit();
                        try
                        {
                            // Assign values to the fields of the new item
                            newItem.Fields["Requested Url"].Value        = oldPath;
                            newItem.Fields["Response Status Code"].Value = "{3184B308-C050-4A16-9F82-D77190A28F0F}";  // 301
                            newItem.Fields["Redirect To Item"].Value     = item.ID.ToString();
                            newItem.Editing.EndEdit();
                        }
                        catch (System.Exception ex)
                        {
                            // The update failed, write a message to the log
                            Sitecore.Diagnostics.Log.Error("Could not update item " + newItem.Paths.FullPath + ": " + ex.Message, this);
                            newItem.Editing.CancelEdit();
                        }
                    }
                }
            }
        }
コード例 #5
0
 public static string ItemUrl(this SitecoreHelper sitecoreHelper, Item item)
 {
     return(LinkManager.GetItemUrl(item));
 }
コード例 #6
0
        /// <summary>
        /// Maps data from the CMS value to the .Net property value
        /// </summary>
        /// <param name="mappingContext">The mapping context.</param>
        /// <returns>System.Object.</returns>
        /// <exception cref="Glass.Mapper.MapperException">SitecoreInfoType {0} not supported.Formatted(scConfig.Type)</exception>
        public override object MapToProperty(AbstractDataMappingContext mappingContext)
        {
            var context = mappingContext as SitecoreDataMappingContext;

            if (context == null)
            {
                throw new NullReferenceException("Mapping Context has not been set.");
            }

            var item     = context.Item;
            var scConfig = Configuration as SitecoreInfoConfiguration;

            if (scConfig == null)
            {
                throw new NullReferenceException("Configuration has not been set.");
            }
            //TODO: move this to the config?
            var urlOptions = Utilities.CreateUrlOptions(scConfig.UrlOptions);

            switch (scConfig.Type)
            {
            case SitecoreInfoType.ContentPath:
                return(item.Paths.ContentPath);

            case SitecoreInfoType.DisplayName:
                return(item[Global.Fields.DisplayName]);

            case SitecoreInfoType.FullPath:
                return(item.Paths.FullPath);

            case SitecoreInfoType.Name:
                return(item.Name);

            case SitecoreInfoType.Key:
                return(item.Key);

            case SitecoreInfoType.MediaUrl:
                var media = new MediaItem(item);
                return(MediaManager.GetMediaUrl(media));

            case SitecoreInfoType.Path:
                return(item.Paths.Path);

            case SitecoreInfoType.TemplateId:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(ID))
                {
                    return(item.TemplateID);
                }
                return(item.TemplateID.Guid);

            case SitecoreInfoType.TemplateName:
                return(item.TemplateName);

            case SitecoreInfoType.Url:
                urlOptions.Language = null;
                return(LinkManager.GetItemUrl(item, urlOptions));

            case SitecoreInfoType.Version:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string))
                {
                    return(item.Version.Number.ToString());
                }
                return(item.Version.Number);

            case SitecoreInfoType.Language:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string))
                {
                    return(item.Language.Name);
                }
                return(item.Language);

            case SitecoreInfoType.BaseTemplateIds:
                Template template = TemplateManager.GetTemplate(item.TemplateID, item.Database);
                if (scConfig.PropertyInfo != null &&
                    scConfig.PropertyInfo.PropertyType == typeof(IEnumerable <ID>))
                {
                    return(template.GetBaseTemplates().Select(x => x.ID));
                }
                return(template.GetBaseTemplates().Select(x => x.ID.Guid));

            case SitecoreInfoType.ItemUri:
                return(new ItemUri(item.ID, item.Language, item.Version, item.Database));

#if SC81
            case SitecoreInfoType.OriginalLanguage:
                return(item.OriginalLanguage);

            case SitecoreInfoType.OriginatorId:
                return(item.OriginatorId);
#endif
            default:
                throw new MapperException("SitecoreInfoType {0} not supported".Formatted(scConfig.Type));
            }
        }
コード例 #7
0
 /// <summary>
 /// Page unload - remove eventhandler for LinkManager.EnsureQueries
 /// </summary>
 protected void Page_Unload(object sender, EventArgs e)
 {
     LinkManager.UnregisterEnsureQueries(LinkManager_EnsureQueries);
 }
コード例 #8
0
        protected void RenderToScreen(SavedQuery query, PXModel model, string defaultLayout, string page, bool safe)
        {
            if (query.Sources.Count < 1)
            {
                throw new Exception("No source specified");                          //TODO fix message
            }
            var src = query.Sources[0];

            if (string.Compare(src.SourceIdType, "path") != 0)
            {
                throw new Exception("Incompatible source type");                                                //TODO fix
            }
            string layout;

            if (query.Output.Params.ContainsKey("layout"))
            {
                layout = query.Output.Params["layout"] ?? defaultLayout;
            }
            else
            {
                layout = defaultLayout;
            }


            string path      = src.Source;
            var    tableName = GetTableName(src);

            path = path.Substring(0, path.Length - (tableName.Length + 1));

            if (string.Compare(query.Sources[0].Type, "CNMM") == 0)
            {
                if (!path.StartsWith("START"))
                {
                    path = "START__" + path;
                }
            }

            path = path.Replace(@"/", PxPathHandler.NODE_DIVIDER);

            string url = null;

            if (RouteInstance.RouteExtender == null)
            {
                List <LinkManager.LinkItem> linkItems = new List <LinkManager.LinkItem>();

                linkItems.Add(new LinkManager.LinkItem(PxUrl.TABLE_KEY, tableName));
                linkItems.Add(new LinkManager.LinkItem(PxUrl.PATH_KEY, path.ToString()));
                linkItems.Add(new LinkManager.LinkItem(PxUrl.DB_KEY, src.DatabaseId));
                linkItems.Add(new LinkManager.LinkItem(PxUrl.LANGUAGE_KEY, model.Meta.CurrentLanguage));
                linkItems.Add(new LinkManager.LinkItem(PxUrl.LAYOUT_KEY, layout));

                url = LinkManager.CreateLink(page, false, linkItems.ToArray());
            }
            else
            {
                string tableId = RouteInstance.RouteExtender.GetTableIdByName(tableName);
                url = RouteInstance.RouteExtender.GetPresentationRedirectUrl(tableId, layout);
            }

            //info about loaded saved query in query string
            if (Settings.Current.Features.SavedQuery.ShowPeriodAndId)
            {
                var tvar = model.Meta.Variables.FirstOrDefault(v => v.IsTime);

                if (tvar != null)
                {
                    if (!string.IsNullOrEmpty(query.LoadedQueryName))
                    {
                        url += "?loadedQueryId=" + System.IO.Path.GetFileNameWithoutExtension(query.LoadedQueryName);
                    }

                    string timeType      = "item"; //default
                    string timeValue     = null;
                    var    timeQueryItem = query.Sources[0].Quieries.FirstOrDefault(x => x.Code == tvar.Code);

                    if (timeQueryItem != null)
                    {
                        if (timeQueryItem.Selection.Filter == "top")
                        {
                            timeType  = "top";
                            timeValue = timeQueryItem.Selection.Values[0];
                        }
                        else if (timeQueryItem.Selection.Filter == "from")
                        {
                            timeType  = "from";
                            timeValue = timeQueryItem.Selection.Values[0];
                        }

                        url += "&timeType=" + timeType;

                        if (timeValue != null)
                        {
                            url += "&timeValue=" + timeValue;
                        }
                    }
                }
            }

            PCAxis.Web.Core.Management.LocalizationManager.ChangeLanguage(model.Meta.CurrentLanguage);
            PCAxis.Web.Core.Management.PaxiomManager.PaxiomModel = model;

            PaxiomManager.OperationsTracker = new OperationsTracker(query.Workflow.ToArray());
            if (!safe)
            {
                PaxiomManager.OperationsTracker.IsUnsafe = true;
            }
            PaxiomManager.OperationsTracker.IsTimeDependent = query.TimeDependent;


            HttpContext.Current.Response.Redirect(url);
        }
コード例 #9
0
ファイル: PxContext.cs プロジェクト: trygu/PxWeb
        /// <summary>
        /// Get the Paxiom model built for selection (only metadata)
        /// </summary>
        /// <param name="db">Database id</param>
        /// <param name="path">Path to PX-file or datatable</param>
        /// <param name="table">Table name (PX-file or CNMM datatable)</param>
        /// <param name="prefLang">Preferred language</param>
        /// <returns>The Paxiom model built for selection</returns>
        public static PCAxis.Paxiom.PXModel GetPaxiomForSelection(string db, string path, string table, string prefLang)
        {
            //Verify that user is authorized to view the table
            if (!AuthorizationUtil.IsAuthorized(db, path, table)) //TODO: Should be dbid, menu and selection. Only works for SCB right now... (2018-11-14)
            {
                HttpContext.Current.Response.Redirect(LinkManager.CreateLink("~/Menu.aspx", new LinkManager.LinkItem()
                {
                    Key = "msg", Value = "UnauthorizedTable"
                }));
            }

            string tablePath;

            //path = ItemSelectionHelper.CreateFromString(path).Selection;

            PCAxis.Paxiom.IPXModelBuilder builder;
            DatabaseInfo dbi = PXWeb.Settings.Current.General.Databases.GetDatabase(db);

            PCAxis.Web.Controls.PathHandler pHandler;

            pHandler  = PCAxis.Web.Controls.PathHandlerFactory.Create(dbi.Type);
            tablePath = pHandler.CombineTable(db, path, table);

            if (PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder == null)
            {
                builder = CreatePaxiomBuilder(db, tablePath);
                PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder = builder;
            }
            else
            {
                string newpath;

                if (dbi.Type == PCAxis.Web.Core.Enums.DatabaseType.PX)
                {
                    // PX
                    newpath = System.IO.Path.Combine(
                        System.Web.HttpContext.Current.Server.MapPath(Settings.Current.General.Paths.PxDatabasesPath),
                        tablePath);
                }
                else
                {
                    // CNMM
                    newpath = tablePath;
                }

                if (PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder.Path.Equals(newpath))
                {
                    // Existing builder is built against the wanted table
                    builder = PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder;
                }
                else
                {
                    // Existing builder is built against a differnt builder - Create new builder!!!
                    builder = CreatePaxiomBuilder(db, tablePath);
                    PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder = builder;
                }
            }

            if (builder.BuilderState < PCAxis.Paxiom.ModelBuilderStateType.BuildForSelection)
            {
                string lang;

                if (!string.IsNullOrEmpty(prefLang))
                {
                    lang = prefLang;
                }
                else if (!string.IsNullOrEmpty(PXWeb.Settings.Current.General.Language.DefaultLanguage))
                {
                    lang = PXWeb.Settings.Current.General.Language.DefaultLanguage;
                }
                else
                {
                    lang = "en";
                }

                if (dbi.Type == PCAxis.Web.Core.Enums.DatabaseType.CNMM)
                {
                    // Check if the language exist in the CNMM database, if not use the default language of the database
                    string dbid = PxContext.GetDbId(tablePath);
                    lang = PxContext.GetCnmmDbLanguage(dbid, lang);
                }

                builder.SetPreferredLanguage(lang);
                builder.BuildForSelection();
            }

            return(builder.Model);
        }
コード例 #10
0
ファイル: PxContext.cs プロジェクト: trygu/PxWeb
        /// <summary>
        /// Gets the menu object for the specified database
        /// </summary>
        /// <remarks></remarks>
        /// <returns>A menu object</returns>
        public static PxMenuBase GetMenu(string db, string nodeId, string lang)
        {
            //Verifies that the user is authorized to view the database
            var dbcfg = Settings.Current.Database[db];

            if (dbcfg != null)
            {
                if (dbcfg.Protection.IsProtected)
                {
                    if (log.IsDebugEnabled)
                    {
                        log.Debug("Check if authenticated");
                    }
                    if (!HttpContext.Current.User.Identity.IsAuthenticated)
                    {
                        //TODO Auth
                        //PXWeb.Security.IAuthentication auth = GetAuthentication(dbcfg.Protection.AuthenticationMethod);
                        //auth.Autenticate();
                    }
                    else
                    {
                        if (log.IsDebugEnabled)
                        {
                            log.Debug("Loged on user: "******"~/Default.aspx", new LinkManager.LinkItem()
                        {
                            Key = "msg", Value = "UnauthorizedDatabase"
                        }));
                    }
                }
            }

            DatabaseInfo dbi = PXWeb.Settings.Current.General.Databases.GetDatabase(db);

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

            try
            {
                if (dbi.Type == PCAxis.Web.Core.Enums.DatabaseType.PX)
                {
                    return(GetPxMenu(db, nodeId, lang));
                }
                else if (dbi.Type == PCAxis.Web.Core.Enums.DatabaseType.CNMM)
                {
                    return(GetCnmmMenu(db, nodeId, lang));
                }
                return(null);
            }
            catch (Exception e)
            {
                log.Error("Something went wrong when trying to getMenu", e);
                return(null);
            }
        }
コード例 #11
0
 public virtual void SetLink(string productId)
 {
     this.ProductUrl = productId.Equals(this.StorefrontContext.CurrentStorefront.GiftCardProductId, StringComparison.OrdinalIgnoreCase) ? this.StorefrontContext.CurrentStorefront.GiftCardPageLink : LinkManager.GetDynamicUrl(this.SearchManager.GetProduct(productId, this.StorefrontContext.CurrentStorefront.Catalog));
 }
コード例 #12
0
    /// <summary>
    /// 加载通用标签
    /// </summary>
    protected void LoadDefault()
    {
        #region 全局

        th.Put(TagFields.SITE_NAME, SettingManager.GetSetting().SiteName);
        th.Put(TagFields.SITE_DESCRIPTION, SettingManager.GetSetting().SiteDescription);
        th.Put(TagFields.META_KEYWORDS, SettingManager.GetSetting().MetaKeywords);
        th.Put(TagFields.META_DESCRIPTION, SettingManager.GetSetting().MetaDescription);

        th.Put(TagFields.FOOTER_HTML, SettingManager.GetSetting().FooterHtml);

        th.Put(TagFields.VERSION, SettingManager.GetSetting().Version);

        th.Put(TagFields.PAGE_TITLE, "首页");

        th.Put(TagFields.SITE_PATH, ConfigHelper.SitePath);
        th.Put(TagFields.SITE_URL, ConfigHelper.SiteUrl);

        th.Put(TagFields.THEME_PATH, ConfigHelper.SitePath + "themes/" + themeName + "/");
        th.Put(TagFields.THEME_URL, ConfigHelper.SiteUrl + "themes/" + themeName + "/");

        th.Put(TagFields.IS_DEFAULT, "0");
        th.Put(TagFields.IS_POST, "0");

        //th.Put(TagFields.FEED_URL, ConfigHelper.SiteUrl + "feed/post" + SettingManager.GetSetting().RewriteExtension);
        //th.Put(TagFields.FEED_COMMENT_URL, ConfigHelper.SiteUrl + "feed/comment" + SettingManager.GetSetting().RewriteExtension);

        th.Put(TagFields.FEED_URL, ConfigHelper.SiteUrl + "feed/post.aspx");
        th.Put(TagFields.FEED_COMMENT_URL, ConfigHelper.SiteUrl + "feed/comment.aspx");

        th.Put(TagFields.PAGER, string.Empty);
        th.Put(TagFields.PAGER_INDEX, RequestHelper.QueryInt("page", 1));

        th.Put(TagFields.URL, RequestHelper.CurrentUrl);
        th.Put(TagFields.DATE, DateTime.Now);

        th.Put(TagFields.ARCHIVES, ArchiveManager.GetArchive());

        th.Put(TagFields.SEARCH_KEYWORD, string.Empty);

        th.Put(TagFields.QUERY_COUNT, 0);
        th.Put(TagFields.PROCESS_TIME, 0);

        th.Put(TagFields.ENABLE_VERIFYCODE, SettingManager.GetSetting().EnableVerifyCode);

        string headhtml = string.Empty;

        headhtml += string.Format("<meta name=\"generator\" content=\"Loachs {0}\" />\n", SettingManager.GetSetting().Version);
        headhtml += "<meta name=\"author\" content=\"Loachs Team\" />\n";
        headhtml += string.Format("<meta name=\"copyright\" content=\"2008-{0} Loachs Team.\" />\n", DateTime.Now.Year);
        headhtml += string.Format("<link rel=\"alternate\" type=\"application/rss+xml\" title=\"{0}\"  href=\"{1}\"  />\n", SettingManager.GetSetting().SiteName, ConfigHelper.SiteUrl + "feed/post" + SettingManager.GetSetting().RewriteExtension);
        headhtml += string.Format("<link rel=\"EditURI\" type=\"application/rsd+xml\" title=\"RSD\" href=\"{0}xmlrpc/rsd.aspx\" />\n", ConfigHelper.SiteUrl);
        headhtml += string.Format("<link rel=\"wlwmanifest\" type=\"application/wlwmanifest+xml\" href=\"{0}xmlrpc/wlwmanifest.aspx\" />", ConfigHelper.SiteUrl);

        th.Put(TagFields.HEAD, headhtml);

        //if (Utils.IsSupportUrlRewriter == false)
        //{
        //    th.Put(TagFields.SEARCH_URL, ConfigHelper.SiteUrl + "default.aspx?type=search&keyword=");
        //}
        //else
        //{
        //      th.Put(TagFields.SEARCH_URL, ConfigHelper.SiteUrl + "search");
        //   }

        #endregion

        #region 文章

        //th.Put(TagFields.POST, null);
        //th.Put(TagFields.POST_MESSAGE, null);
        //th.Put(TagFields.POSTS, null);

        th.Put(TagFields.RECENT_POSTS, PostManager.GetPostList(SettingManager.GetSetting().SidebarPostCount, -1, -1, -1, 1, -1, 0));
        th.Put(TagFields.RECOMMEND_POSTS, PostManager.GetPostList(SettingManager.GetSetting().SidebarPostCount, -1, -1, 1, 1, -1, 0));
        th.Put(TagFields.TOP_POSTS, PostManager.GetPostList(Int32.MaxValue, -1, -1, -1, 1, 1, 0));

        //th.Put(TagFields.FEED_POSTS, null);

        #endregion

        #region 评论

        //th.Put(TagFields.COMMENTS, null);

        th.Put(TagFields.RECENT_COMMENTS, CommentManager.GetCommentListByRecent(SettingManager.GetSetting().SidebarCommentCount));

        if (PageUtils.IsLogin)
        {
            UserInfo user = UserManager.GetUser(PageUtils.CurrentUserId);
            if (user != null)
            {
                th.Put(TagFields.COMMENT_AUTHOR, user.Name);
                th.Put(TagFields.COMMENT_EMAIL, user.Email);
                th.Put(TagFields.COMMENT_SITEURL, user.SiteUrl);
            }
        }
        else
        {
            th.Put(TagFields.COMMENT_AUTHOR, Server.UrlDecode(PageUtils.GetCookie(TagFields.COMMENT_AUTHOR)));
            th.Put(TagFields.COMMENT_EMAIL, Server.UrlDecode(PageUtils.GetCookie(TagFields.COMMENT_EMAIL)));
            th.Put(TagFields.COMMENT_SITEURL, Server.UrlDecode(PageUtils.GetCookie(TagFields.COMMENT_SITEURL)));
        }
        th.Put(TagFields.COMMENT_CONTENT, string.Empty);
        th.Put(TagFields.COMMENT_MESSAGE, string.Empty);

        #endregion

        #region 作者,分类,标签

        th.Put(TagFields.AUTHORS, UserManager.GetUserList().FindAll(delegate(UserInfo user) { return(user.Status == 1); }));
        th.Put(TagFields.CATEGORIES, CategoryManager.GetCategoryList());
        th.Put(TagFields.RECENT_TAGS, TagManager.GetTagList(SettingManager.GetSetting().SidebarTagCount));

        #endregion

        #region 连接
        List <LinkInfo> a = LinkManager.GetLinkList(-1, 1);
        th.Put(TagFields.LINKS, LinkManager.GetLinkList(-1, 1));
        th.Put(TagFields.NAV_LINKS, LinkManager.GetLinkList((int)LinkPosition.Navigation, 1));
        th.Put(TagFields.GENERAL_LINKS, LinkManager.GetLinkList((int)LinkPosition.General, 1));

        #endregion

        #region 统计

        th.Put(TagFields.POST_COUNT, StatisticsManager.GetStatistics().PostCount);
        th.Put(TagFields.COMMENT_COUNT, StatisticsManager.GetStatistics().CommentCount);
        th.Put(TagFields.VIEW_COUNT, StatisticsManager.GetStatistics().VisitCount);
        th.Put(TagFields.AUTHOR_COUNT, UserManager.GetUserList().FindAll(delegate(UserInfo user) { return(user.Status == 1); }).Count);

        #endregion
    }
コード例 #13
0
 public static string GetItemUrl(this Item item)
 {
     return(LinkManager.GetItemUrl(item));
 }
コード例 #14
0
        /// <summary>
        /// Maps data from the CMS value to the .Net property value
        /// </summary>
        /// <param name="mappingContext">The mapping context.</param>
        /// <returns>System.Object.</returns>
        /// <exception cref="Glass.Mapper.MapperException">SitecoreInfoType {0} not supported.Formatted(scConfig.Type)</exception>
        public override object MapToProperty(AbstractDataMappingContext mappingContext)
        {
            var context  = mappingContext as SitecoreDataMappingContext;
            var item     = context.Item;
            var scConfig = Configuration as SitecoreInfoConfiguration;

            //TODO: move this to the config?
            var urlOptions = Utilities.CreateUrlOptions(scConfig.UrlOptions);

            switch (scConfig.Type)
            {
            case SitecoreInfoType.ContentPath:
                return(item.Paths.ContentPath);

            case SitecoreInfoType.DisplayName:
                return(item.DisplayName);

            case SitecoreInfoType.FullPath:
                return(item.Paths.FullPath);

            case SitecoreInfoType.Name:
                return(item.Name);

            case SitecoreInfoType.Key:
                return(item.Key);

            case SitecoreInfoType.MediaUrl:
                var media = new global::Sitecore.Data.Items.MediaItem(item);
                return(global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));

            case SitecoreInfoType.Path:
                return(item.Paths.Path);

            case SitecoreInfoType.TemplateId:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(Sitecore.Data.ID))
                {
                    return(item.TemplateID);
                }
                return(item.TemplateID.Guid);

            case SitecoreInfoType.TemplateName:
                return(item.TemplateName);

            case SitecoreInfoType.Url:
                urlOptions.Language = null;
                return(LinkManager.GetItemUrl(item, urlOptions));

            case SitecoreInfoType.Version:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string))
                {
                    return(item.Version.Number.ToString());
                }
                return(item.Version.Number);

            case SitecoreInfoType.Language:
                if (scConfig.PropertyInfo != null && scConfig.PropertyInfo.PropertyType == typeof(string))
                {
                    return(item.Language.Name);
                }
                return(item.Language);

            case SitecoreInfoType.BaseTemplateIds:
                Template template = TemplateManager.GetTemplate(item.TemplateID, item.Database);
                if (scConfig.PropertyInfo != null &&
                    scConfig.PropertyInfo.PropertyType == typeof(IEnumerable <Sitecore.Data.ID>))
                {
                    return(template.GetBaseTemplates().Select(x => x.ID));
                }
                return(template.GetBaseTemplates().Select(x => x.ID.Guid));

            default:
                throw new MapperException("SitecoreInfoType {0} not supported".Formatted(scConfig.Type));
            }
        }
コード例 #15
0
ファイル: SceneHandler.cs プロジェクト: WASP3D/Soccer-App
        /// <summary>
        /// 
        /// </summary>
        public void Initialize()
        {
            IsInitialized = false;
            m_serverurl = string.Format(m_surlformat, ConfigurationManager.AppSettings["stingserverip"], ConfigurationManager.AppSettings["stingserverport"]);
            if (File.Exists(ConfigurationManager.AppSettings["scorebugscenepath"]))
            {
                m_scorebugscenepath = ConfigurationManager.AppSettings["scorebugscenepath"];
            }
            else if (File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "ScoreBug.w3d")))
            {
                m_scorebugscenepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "ScoreBug.w3d");
            }

            if (!string.IsNullOrEmpty(m_scorebugscenepath) && ConfigurationManager.AppSettings["stingserverip"] != null)
            {
                string sLinkID = string.Empty;
                LinkManager objLinkManager = new LinkManager();
                AppLink = objLinkManager.GetLink(LINKTYPE.TCP, out sLinkID);
                AppLink.OnEngineConnected += new EventHandler<EngineArgs>(objLink_OnEngineConnected);
                AppLink.Connect(m_serverurl);
                objLinkManager.OnEngineDisConnected += objLinkManager_OnEngineDisConnected;
            }
        }
コード例 #16
0
        private async void GenerateEvents(MessageItem email, Funnel funnelDefinition, List <ContactData> contactsForThisEmail)
        {
            if (funnelDefinition == null)
            {
                return;
            }

            var contactIndex = 1;

            foreach (var contactId in contactsForThisEmail)
            {
                _specification.Job.Status = $"Generating events for contact {contactIndex++} of {contactsForThisEmail.Count}";

                var contact = _contactService.GetContact(contactId.ContactId);
                if (contact == null)
                {
                    continue;
                }

                if (_random.NextDouble() < funnelDefinition.Bounced / 100d)
                {
                    ExmEventsGenerator.GenerateBounce(_managerRoot.Settings.BaseURL, contact.ContactId.ToID(),
                                                      email.MessageId.ToID(), email.StartTime.AddMinutes(1));
                }
                else
                {
                    var userAgent = _userAgent();
                    var geoData   = _geoData();
                    var eventDay  = _eventDay();
                    var seconds   = _random.Next(60, 86400);
                    var eventDate = email.StartTime.AddDays(eventDay).AddSeconds(seconds);

                    var spamPercentage = funnelDefinition.SpamComplaints / 100d;

                    if (_random.NextDouble() < funnelDefinition.OpenRate / 100d)
                    {
                        if (_random.NextDouble() < funnelDefinition.ClickRate / 100d)
                        {
                            spamPercentage = Math.Min(spamPercentage, 0.01);

                            var link = "/";
                            if (_goalId != null)
                            {
                                var goal = _goalId();
                                ID  goalId;
                                if (ID.TryParse(goal, out goalId) && !ID.IsNullOrEmpty(goalId))
                                {
                                    var goalItem = _db.GetItem(goalId);
                                    if (goalItem != null)
                                    {
                                        link = LinkManager.GetItemUrl(goalItem);
                                    }
                                }
                            }

                            ExmEventsGenerator.GenerateHandlerEvent(_managerRoot.Settings.BaseURL, contact.ContactId, email,
                                                                    ExmEvents.Click, eventDate, userAgent, geoData, link);
                            eventDate = eventDate.AddSeconds(_random.Next(10, 300));
                        }
                        else
                        {
                            ExmEventsGenerator.GenerateHandlerEvent(_managerRoot.Settings.BaseURL, contact.ContactId, email,
                                                                    ExmEvents.Open, eventDate, userAgent, geoData);

                            eventDate = eventDate.AddSeconds(_random.Next(10, 300));
                        }
                    }

                    if (_random.NextDouble() < spamPercentage)
                    {
                        await ExmEventsGenerator.GenerateSpamComplaint(_managerRoot.Settings.BaseURL, contact.ContactId.ToID(), email.MessageId.ToID(), "email", eventDate);

                        eventDate = eventDate.AddSeconds(_random.Next(10, 300));
                    }

                    var unsubscribePercentage = funnelDefinition.Unsubscribed / 100d;
                    if (_random.NextDouble() < unsubscribePercentage)
                    {
                        //TODO - Warning: UnsubscribeFromAll not supported
                        var       unsubscribeFromAllPercentage = 0.5;
                        ExmEvents unsubscribeEvent;

                        if (_random.NextDouble() < unsubscribeFromAllPercentage)
                        {
                            unsubscribeEvent = ExmEvents.UnsubscribeFromAll;
                            _unsubscribeFromAllContacts.Add(contact.ContactId);
                        }
                        else
                        {
                            unsubscribeEvent = ExmEvents.Unsubscribe;
                        }

                        ExmEventsGenerator.GenerateHandlerEvent(_managerRoot.Settings.BaseURL, contact.ContactId, email,
                                                                unsubscribeEvent, eventDate, userAgent, geoData);
                    }
                }
                _specification.Job.CompletedEvents++;
            }
        }
コード例 #17
0
 /// <summary>
 /// Gets the social sharing service friendly URL for the provided content page
 /// </summary>
 /// <param name="pageItem"></param>
 /// <returns></returns>
 private static string GetContentPageSharingUrl(Item pageItem)
 {
     return(LinkManager.GetItemUrl(pageItem, new UrlOptions {
         AlwaysIncludeServerUrl = true
     }));
 }
コード例 #18
0
ファイル: Default.aspx.cs プロジェクト: fallenfate1982/MyGPS
        protected string GetLimersAround(int distance, LimeRCellTracker tracker)
        {
            string _serialedMessages = JsonConvert.SerializeObject(LinkManager.GetTrackersinDistance(distance, tracker.LastLon, tracker.LastLat, tracker.TrackerId, tracker.Vibe));

            return("{\"Trackers\":" + _serialedMessages + "}");
        }
コード例 #19
0
 protected void Page_Load(object sender, EventArgs e)
 {
     btnUnderstoodBlog.HRef = LinkManager.GetItemUrl(Sitecore.Context.Database.GetItem("{401A4297-3D08-4BB5-8F19-EC32A38C82C6}"));
 }
コード例 #20
0
        protected void Page_Init(object sender, EventArgs e)
        {
            if (!PXWeb.Settings.Current.Selection.StandardApplicationHeadTitle)
            {
                HeadTitle = Server.HtmlEncode(GetLocalizedString("PxWebApplicationTitle"));
            }

            if (DoNotUseBreadCrumb())
            {
                Page.Controls.Remove(this.breadcrumb1);
            }

            //Add eventhandlers
            LinkManager.RegisterEnsureQueries(new EnsureQueriesEventHandler(LinkManager_EnsureQueries));

            if (PxUrlObj.Language != null)
            {
                if (!(LocalizationManager.CurrentCulture.Name == PxUrlObj.Language))
                {
                    if (PxUrlObj.Database != null)
                    {
                        DatabaseInfo dbi = null;
                        dbi = PXWeb.Settings.Current.General.Databases.GetDatabase(PxUrlObj.Database);

                        if (dbi.Type == DatabaseType.CNMM)
                        {
                            PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder = null;
                            PCAxis.Web.Core.Management.PaxiomManager.PaxiomModel        = null;
                        }
                    }
                    LocalizationManager.ChangeLanguage(PxUrlObj.Language);
                }
            }
            else
            {
                string lang = PXWeb.Settings.Current.General.Language.DefaultLanguage;
                LocalizationManager.ChangeLanguage(lang);

                List <LinkManager.LinkItem> linkItems = new List <LinkManager.LinkItem>();
                linkItems.Add(new LinkManager.LinkItem(PxUrl.LANGUAGE_KEY, lang));

                //Replaced Request.Url.AbsolutePath with Request.AppRelativeCurrentExecutionFilePath
                //so that the links will be right even if the site is running without UserFriendlyURL
                string url = PCAxis.Web.Core.Management.LinkManager.CreateLink(Request.AppRelativeCurrentExecutionFilePath, linkItems.ToArray());
                Response.Redirect(url);
            }

            ////Add eventhandlers
            //LinkManager.EnsureQueries += new LinkManager.EnsureQueriesEventHandler(LinkManager_EnsureQueries);
            _imagesPath = PXWeb.Settings.Current.General.Paths.ImagesPath;
            _logoPath   = PXWeb.Settings.Current.General.Site.LogoPath;
            LoadPageContent();

            if (!IsPostBack)
            {
                if (!DoNotUseBreadCrumb())
                {
                    InitializeBreadcrumb();
                }


                if (PXWeb.Settings.Current.Navigation.ShowNavigationFlow)
                {
                    InitializeNavigationFlow();
                }
            }

            if (!DoNotUseBreadCrumb())
            {
                breadcrumb1.GetMenu = GetMenu;
            }

            //navigationFlowControl.GetMenu = GetMenu;
        }
コード例 #21
0
        public override void Process(PublishItemContext context)
        {
            Database sourceDB = context.PublishOptions.SourceDatabase;

            Item item = context.PublishOptions.TargetDatabase.GetItem(context.ItemId);

            if (item == null)
            {
                return;
            }

            foreach (SiteInfo current in Settings.Sites)
            {
                if (!Config.IgnoredSites.Contains(current.Name, StringComparer.OrdinalIgnoreCase) && item.Paths.ContentPath.StartsWith(current.StartItem, StringComparison.OrdinalIgnoreCase))
                {
                    SiteContext siteContext  = SiteContextFactory.GetSiteContext(current.Name);
                    string      homeItemPath = siteContext.StartPath.ToString();
                    Item        startItem    = sourceDB.GetItem(homeItemPath);

                    ID homeItemID      = startItem.ID;
                    ID publishedItemID = item.ID;

                    string text = "";

                    if (publishedItemID != homeItemID)
                    {
                        text = LinkManager.GetItemUrl(context.PublishOptions.TargetDatabase.GetItem(context.ItemId), GetItemUrlOptions(siteContext));
                    }
                    else
                    {
                        text = LinkManager.GetItemUrl(context.PublishOptions.TargetDatabase.GetItem(context.ItemId), GetHomeUrlOptions(siteContext));
                    }

                    if (text.StartsWith("://"))
                    {
                        text = "http" + text;
                    }

                    string localPath;

                    try
                    {
                        Uri uri = new Uri(text);
                        localPath = uri.LocalPath;
                    }
                    catch (UriFormatException innerException)
                    {
                        throw new ApplicationException(string.Format("Redirect Manager failed parsing item url generated by linkmanager. Url : {0} ItemId : {1}, ", text, context.ItemId), innerException);
                    }

                    if (!Redirector.Provider.Exists(localPath))
                    {
                        Redirector.Provider.CreateRedirect(localPath, context.ItemId.ToString(), true);
                    }
                    else
                    {
                        Redirector.Provider.DeleteRedirect(localPath);
                        Redirector.Provider.CreateRedirect(localPath, context.ItemId.ToString(), true);
                    }
                }
            }
        }
コード例 #22
0
        public override void Process(HttpRequestArgs args)
        {
            var site = Sitecore.Context.Site.GetMultiSiteContext();

            // only do redirects if no item is found or if request parameters match the configuration settings
            if (ProcessUrl() && Context.Database != null && site != null)
            {
                // Grab the actual requested path for use in both the item and pattern match sections.
                var requestedUrl     = HttpContext.Current.Request.Url.ToString();
                var requestedUrlOnly = requestedUrl.IndexOf("?") > 0 ? requestedUrl.Substring(0, requestedUrl.IndexOf("?")) : requestedUrl;
                requestedUrl = requestedUrl.EndsWith("/") ? requestedUrl.Substring(0, requestedUrl.Length - 1) : requestedUrl;
                var requestedPath         = HttpContext.Current.Request.Url.AbsolutePath;
                var requestedPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
                var db = Context.Database;

                // In case allowed extensions are defined, only process pipeline when the extension of the request in included in the list
                // of allowed extensions.
                // If the request does not contain an extension, pipeline will always be processed
                if (allowedExtensions != null && allowedExtensions.Count() > 0)
                {
                    var extensionWithDot = Path.GetExtension(requestedPath);
                    if (string.IsNullOrEmpty(extensionWithDot) == false)
                    {
                        if (allowedExtensions.Contains(extensionWithDot.Substring(1).ToLower()) == false)
                        {
                            return;
                        }
                    }
                }

                var ruleFolder = db.GetItem(new Sitecore.Data.ID(site.SiteId)).Children.Where(a => a.DisplayName == "Redirection Rules").FirstOrDefault();

                if (ruleFolder == null)
                {
                    return;
                }

                // Loop through the exact match entries to look for a match.
                foreach (Item possibleRedirect in GetRedirects(ruleFolder, "Redirect Url"))
                {
                    if (possibleRedirect.HasField("Enabled"))
                    {
                        var enabled = ((CheckboxField)possibleRedirect.Fields["Enabled"]).Checked;
                        if (!enabled)
                        {
                            continue;
                        }
                    }

                    bool Is302    = false;
                    bool IsVanity = false;

                    if (possibleRedirect.HasField("Type"))
                    {
                        string type = possibleRedirect["Type"];
                        if (type.StartsWith("302"))
                        {
                            Is302    = true;
                            IsVanity = false;
                        }
                        if (type.ToLower().StartsWith("vanity"))
                        {
                            Is302    = false;
                            IsVanity = true;
                        }
                    }

                    if (requestedUrl.Equals(possibleRedirect["Requested Url"], StringComparison.OrdinalIgnoreCase) ||
                        requestedPath.Equals(possibleRedirect["Requested Url"], StringComparison.OrdinalIgnoreCase) ||
                        requestedUrlOnly.Equals(possibleRedirect["Requested Url"], StringComparison.OrdinalIgnoreCase))
                    {
                        var redirectToItemId = possibleRedirect.Fields["Target Item"];
                        if (redirectToItemId.HasValue && !string.IsNullOrEmpty(redirectToItemId.ToString()))
                        {
                            var redirectToItem = Context.Database.GetItem(ID.Parse(redirectToItemId));
                            var redirectToUrl  = GetRedirectToUrl(redirectToItem);

                            if (possibleRedirect.HasField("Goal") && possibleRedirect.Fields["Goal"].HasValue)
                            {
                                var goal       = ((ReferenceField)possibleRedirect.Fields["Goal"]).TargetItem;
                                var encodedUrl = HttpUtility.UrlEncode(redirectToUrl);
                                redirectToUrl = string.Format("/redirect/{0}?u={1}", goal.ID.ToGuid().ToString("N"), encodedUrl);
                            }

                            if (Is302)
                            {
                                SendTemporaryResponse(redirectToUrl, HttpContext.Current.Request.Url.Query, args);
                            }
                            else if (IsVanity)
                            {
                                SendContent(redirectToUrl, HttpContext.Current.Request.Url.Query, args);
                            }
                            else
                            {
                                //default is 301 permanent
                                SendResponse(redirectToUrl, HttpContext.Current.Request.Url.Query, args);
                            }
                        }
                    }
                }

                // Loop through the pattern match items to find a match
                foreach (Item possibleRedirectPattern in GetRedirects(ruleFolder, "Redirect Pattern"))
                {
                    if (possibleRedirectPattern.HasField("Enabled"))
                    {
                        var enabled = ((CheckboxField)possibleRedirectPattern.Fields["Enabled"]).Checked;
                        if (!enabled)
                        {
                            continue;
                        }
                    }

                    bool Is302    = false;
                    bool IsVanity = false;

                    if (possibleRedirectPattern.HasField("Type"))
                    {
                        string type = possibleRedirectPattern["Type"];
                        if (type.StartsWith("302"))
                        {
                            Is302    = true;
                            IsVanity = false;
                        }
                        if (type.ToLower().StartsWith("vanity"))
                        {
                            Is302    = false;
                            IsVanity = true;
                        }
                    }

                    var redirectPath = string.Empty;
                    if (Regex.IsMatch(requestedUrl, possibleRedirectPattern["Source Expression"], RegexOptions.IgnoreCase))
                    {
                        redirectPath = Regex.Replace(requestedUrl, possibleRedirectPattern["Source Expression"],
                                                     possibleRedirectPattern["Target Expression"], RegexOptions.IgnoreCase);
                    }
                    else if (Regex.IsMatch(requestedPathAndQuery, possibleRedirectPattern["Source Expression"], RegexOptions.IgnoreCase))
                    {
                        redirectPath = Regex.Replace(requestedPathAndQuery,
                                                     possibleRedirectPattern["Source Expression"],
                                                     possibleRedirectPattern["Target Expression"], RegexOptions.IgnoreCase);
                    }
                    if (string.IsNullOrEmpty(redirectPath))
                    {
                        continue;
                    }

                    if (redirectPath.ToLower().StartsWith("/sitecore"))
                    {
                        // Query portion gets in the way of getting the sitecore item.
                        var pathAndQuery = redirectPath.Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries);
                        var path         = pathAndQuery[0];
                        if (LinkManager.GetDefaultUrlOptions() != null &&
                            LinkManager.GetDefaultUrlOptions().EncodeNames)
                        {
                            path = MainUtil.DecodeName(path);
                        }
                        var redirectToItem = db.GetItem(path);
                        if (redirectToItem != null)
                        {
                            var redirectToUrl = GetRedirectToUrl(redirectToItem);

                            if (possibleRedirectPattern.HasField("Goal") && possibleRedirectPattern.Fields["Goal"].HasValue)
                            {
                                var goal = ((ReferenceField)possibleRedirectPattern.Fields["Goal"]).TargetItem;

                                var encodedUrl = HttpUtility.UrlEncode(redirectToUrl);
                                redirectToUrl = string.Format("/redirect/{0}?u={1}", goal.ID.ToGuid().ToString("N"), encodedUrl);
                            }

                            var query = pathAndQuery.Length > 1 ? "?" + pathAndQuery[1] : "";

                            if (Is302)
                            {
                                SendTemporaryResponse(redirectToUrl, query, args);
                            }
                            else if (IsVanity)
                            {
                                SendContent(redirectToUrl, query, args);
                            }
                            else
                            {
                                SendResponse(redirectToUrl, query, args);
                            }
                        }
                    }
                    else
                    {
                        //validate it's a URI
                        Uri outUri = null;
                        if (Uri.TryCreate(redirectPath, UriKind.Absolute, out outUri) &&
                            (outUri.Scheme == Uri.UriSchemeHttp || outUri.Scheme == Uri.UriSchemeHttps))
                        {
                            var redirectToUrl = outUri.GetLeftPart(UriPartial.Path);

                            if (possibleRedirectPattern.HasField("Goal") && possibleRedirectPattern.Fields["Goal"].HasValue)
                            {
                                var goal = ((ReferenceField)possibleRedirectPattern.Fields["Goal"]).TargetItem;

                                var encodedUrl = HttpUtility.UrlEncode(redirectToUrl);
                                redirectToUrl = string.Format("/redirect/{0}?u={1}", goal.ID.ToGuid().ToString("N"), encodedUrl);
                            }

                            var query = outUri.Query;

                            if (Is302)
                            {
                                SendTemporaryResponse(redirectToUrl, query, args);
                            }
                            else if (IsVanity)
                            {
                                SendContent(redirectToUrl, query, args);
                            }
                            else
                            {
                                SendResponse(redirectToUrl, query, args);
                            }
                        }
                    }
                }
            }
        }
コード例 #23
0
        public static object GetItemInfo(SitecoreInfoType infoType, Item item, global::Sitecore.Links.UrlOptions urlOptions)
        {
            if (urlOptions == null)
            {
                urlOptions = new UrlOptions();
            }

            if (urlOptions.Language == null)
            {
                urlOptions.Language = item.Language;
            }

            switch (infoType)
            {
            case SitecoreInfoType.ContentPath:
                return(item.Paths.ContentPath);

            case SitecoreInfoType.DisplayName:
                return(item.DisplayName);

            case SitecoreInfoType.FullPath:
                return(item.Paths.FullPath);

            case SitecoreInfoType.Name:
                return(item.Name);

            case SitecoreInfoType.Key:
                return(item.Key);

            case SitecoreInfoType.MediaUrl:
                global::Sitecore.Data.Items.MediaItem media = new global::Sitecore.Data.Items.MediaItem(item);
                return(global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));

                break;

            case SitecoreInfoType.Path:
                return(item.Paths.Path);

            case SitecoreInfoType.TemplateId:
                return(item.TemplateID.Guid);

            case SitecoreInfoType.TemplateName:
                return(item.TemplateName);

            case SitecoreInfoType.Url:
                return(LinkManager.GetItemUrl(item, urlOptions));

            case SitecoreInfoType.FullUrl:
                return(LinkManager.GetItemUrl(item, new UrlOptions()
                {
                    AlwaysIncludeServerUrl = true
                }));

            case SitecoreInfoType.Version:
                return(item.Version.Number);

            case SitecoreInfoType.Language:
                return(item.Language);

            default:
                throw new NotSupportedException("Value {0} not supported".Formatted(infoType.ToString()));
            }
        }
コード例 #24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //Path for selection should always contain tableid and not table name
            if (RouteInstance.RouteExtender != null && RouteInstance.RouteExtender.DoesSelectionPathContainTableName(this))
            {
                var linkItems = new List <LinkManager.LinkItem>();
                linkItems.Add(new LinkManager.LinkItem(PXWeb.PxUrl.TABLE_KEY, PxUrl.Table));
                string redirectLink = LinkManager.CreateLinkMethod("Selection.aspx", false, linkItems.ToArray());
                Response.Redirect(redirectLink, true);
            }

            if (RouteInstance.RouteExtender != null)
            {
                var  tableId      = RouteInstance.RouteExtender.GetTableIdByName(PxUrl.Table);
                bool hasTableData = RouteInstance.RouteExtender.HasTableData(tableId);

                if (!hasTableData)
                {
                    Response.Redirect(RouteInstance.RouteExtender.GetRedirectNoDataPath(tableId), true);
                }
            }

            ((PxWeb)this.Master).FooterText = "Selection";

            string lang  = PxUrl.Language;
            string db    = PxUrl.Database;
            string path  = PxUrl.Path;
            string table = PxUrl.Table;

            string partTable = "";

            //Check if the queryStrings contains partTable
            if (QuerystringManager.GetQuerystringParameter("partTable") != null)
            {
                partTable = QuerystringManager.GetQuerystringParameter("partTable");
            }
            // Bug 273
            // If we have no builder the groupings should be reloaded
            if (PCAxis.Web.Core.Management.PaxiomManager.PaxiomModelBuilder == null)
            {
                VariableSelector1.ReloadGroupings = true;
            }

            if (PCAxis.Web.Core.Management.PaxiomManager.PaxiomModel != null)
            {
                _previousModel = PCAxis.Web.Core.Management.PaxiomManager.PaxiomModel;
                VariableSelector1.PreSelectFirstContentAndTime = false;
            }
            else
            {
                VariableSelector1.PreSelectFirstContentAndTime = PXWeb.Settings.Current.Selection.PreSelectFirstContentAndTime;
            }

            // Check if we are being called from a saved query with the ?select switch. If that is the case we should always clear the PxModel.
            bool clearModel = false;

            if (HttpContext.Current.Session["SelectionClearPxModel"] != null)
            {
                clearModel = (bool)HttpContext.Current.Session["SelectionClearPxModel"];
                HttpContext.Current.Session.Remove("SelectionClearPxModel");
            }

            PCAxis.Web.Core.Management.PaxiomManager.PaxiomModel = PXWeb.Management.PxContext.GetPaxiomForSelection(db, path, table, lang, clearModel);

            if (!IsPostBack)
            {
                Master.HeadTitle = PCAxis.Web.Core.Management.LocalizationManager.GetLocalizedString("PxWebTitleSelection");
                imgShowInformationExpander.ImageUrl = Page.ClientScript.GetWebResourceUrl(typeof(BreadcrumbCodebehind), "PCAxis.Web.Controls.spacer.gif");
                imgShowFootnotesExpander.ImageUrl   = Page.ClientScript.GetWebResourceUrl(typeof(BreadcrumbCodebehind), "PCAxis.Web.Controls.spacer.gif");
                imgShowMetadataExpander.ImageUrl    = Page.ClientScript.GetWebResourceUrl(typeof(BreadcrumbCodebehind), "PCAxis.Web.Controls.spacer.gif");
                Master.SetBreadcrumb(PCAxis.Web.Controls.Breadcrumb.BreadcrumbMode.Selection);
                Master.SetNavigationFlowMode(PCAxis.Web.Controls.NavigationFlow.NavigationFlowMode.Second);
                Master.SetNavigationFlowVisibility(PXWeb.Settings.Current.Navigation.ShowNavigationFlow);
                InitializeVariableSelector();
                InitializeTableInformation();
                InitializeMetatags();
                InitializeMetadata(path);

                //Check if the queryStrings contains partTable and the database type is CNMM
                //if so download subtable variables
                if (!string.IsNullOrEmpty(partTable))
                {
                    DatabaseInfo dbi = PXWeb.Settings.Current.General.Databases.GetDatabase(db);
                    if (dbi.Type == PCAxis.Web.Core.Enums.DatabaseType.CNMM)
                    {
                        SetValuesFromPartTable(partTable);
                    }
                }
            }

            DisplayTableMetadataLinks();
            VariableSelector1.PxActionEvent += new PCAxis.Web.Controls.PxActionEventHandler(HandlePxAction);
            VariableSelector1.MetadataInformationSelected += new VariableSelector.MetadataInformationSelectedEventHandler(HandleMetaDataInformationAction);

            if (_previousModel != null && _previousModel.IsComplete && !IsPostBack)
            {
                VariableSelector1.InitializeSelectedValuesetsAndGroupings(_previousModel);
            }
        }
コード例 #25
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load"/> event and try to resolve the raw data for the error page.
        /// At the end, outputs the raw data of the content we want to display.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // initial parameters
            Language    lang = UrlUtil.ResolveLanguage();
            SiteContext site = UrlUtil.ResolveSite(lang);
            string      url  = string.Empty;

            // Use the static error page if the site or the database is not available
            if (site == null || site.Database == null)
            {
                url = Sitecore.Web.WebUtil.GetServerUrl() + Sitecore.Configuration.Settings.GetSetting(SettingsKey + ".Static");
            }
            else
            {
                string availableLanguages = site.Properties["availableLanguages"];

                // general options for generating url
                UrlOptions options = UrlOptions.DefaultOptions;
                options.LanguageEmbedding = LanguageEmbedding.Always;
                options.LanguageLocation  = LanguageLocation.QueryString;
                options.Language          = lang;
                options.Site = site;
                options.AlwaysIncludeServerUrl = true;

                // get the error item
                string path = Settings.GetBoolSetting("ErrorManager.UseRootPath", false) ? site.RootPath : site.StartPath;
                Item   item = site.Database.GetItem(path + Sitecore.Configuration.Settings.GetSetting(SettingsKey + ".Item"));

                // resolve the url for the error page
                if (item != null && item.HasLanguageVersion(lang, availableLanguages))
                {
                    url = LinkManager.GetItemUrl(item, options);
                }
                else
                {
                    Language.TryParse(!string.IsNullOrEmpty(site.Properties["language"]) ? site.Properties["language"] : LanguageManager.DefaultLanguage.Name, out lang);
                    if (item != null && lang != null && item.HasLanguageVersion(lang, availableLanguages))
                    {
                        options.Language = lang;
                        url = LinkManager.GetItemUrl(item, options);
                    }
                    else
                    {
                        url = Sitecore.Web.WebUtil.GetServerUrl() + Sitecore.Configuration.Settings.GetSetting(SettingsKey + ".Static");
                    }
                }

                // append current raw url
                url += url.IndexOf("?") == -1 ? "?" : "&";
                url += "rawUrl=" + Server.UrlEncode(Sitecore.Web.WebUtil.GetRawUrl());
            }

            // parse the page
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            bool           ignoreInvalidSSLCertificates = Sitecore.Configuration.Settings.GetBoolSetting("ErrorManager.IgnoreInvalidSSLCertificates", false);

            // add user cookies to the request
            if (Sitecore.Configuration.Settings.GetBoolSetting("ErrorManager.SendClientCookies", false))
            {
                request.CookieContainer = new CookieContainer();
                HttpCookieCollection userCookies = Request.Cookies;
                for (int userCookieCount = 0; userCookieCount < userCookies.Count; userCookieCount++)
                {
                    HttpCookie httpCookie = userCookies.Get(userCookieCount);
                    if (httpCookie.Name != "ASP.NET_SessionId")
                    {
                        Cookie cookie = new Cookie();

                        /*  We have to add the target host because the cookie does not contain the domain information.
                         *  In this case, this behaviour is not a security issue, because the target is our own platform.
                         *  Further information: http://stackoverflow.com/a/460990
                         */
                        cookie.Domain  = request.RequestUri.Host;
                        cookie.Expires = httpCookie.Expires;
                        cookie.Name    = httpCookie.Name;
                        cookie.Path    = httpCookie.Path;
                        cookie.Secure  = httpCookie.Secure;

                        // Encode cookie value for handling commas (and other possibly unsupported chars)
                        // Furhter information: http://stackoverflow.com/q/1136405
                        cookie.Value = HttpUtility.UrlEncode(httpCookie.Value);

                        request.CookieContainer.Add(cookie);
                    }
                }
            }

            HttpWebResponse response = null;
            bool            hasAddedValidationCallback = false;

            try
            {
                int timeout = 0;
                Int32.TryParse(Sitecore.Configuration.Settings.GetSetting("ErrorManager.Timeout"), out timeout);
                if (timeout == 0)
                {
                    timeout = 60 * 1000;
                }

                int maxRedirects = 0;
                Int32.TryParse(Sitecore.Configuration.Settings.GetSetting("ErrorManager.MaxRedirects"), out maxRedirects);
                if (maxRedirects == 0)
                {
                    maxRedirects = 3;
                }

                if (ignoreInvalidSSLCertificates)
                {
                    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
                    hasAddedValidationCallback = true;
                }

                // do the request
                request.Timeout = timeout;
                request.MaximumAutomaticRedirections = maxRedirects;
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                // we need to catch this, because statuscode of the sitecore default error pages may throwing an exception in the HttpWebResponse object
                response = (HttpWebResponse)ex.Response;
            }
            finally
            {
                // Remove the custom RemoteCertificateValidationCallback due to the global nature of the ServicePointManager
                if (hasAddedValidationCallback)
                {
                    ServicePointManager.ServerCertificateValidationCallback -= new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
                }
            }

            // outputs the page
            if (response != null)
            {
                string body = new StreamReader(response.GetResponseStream()).ReadToEnd();

                // Insert image with request to the static page if Analytics is enabled.
                // This is a hotfix for a Sitecore bug, see Sitecore issue #378950
                if (Settings.GetBoolSetting("Analytics.Enabled", false) && site.EnableAnalytics)
                {
                    body = body.Replace("</body>", string.Format("<img src=\"{0}?{1}\" height=\"1\" width=\"1\" border=\"0\"></body>", Sitecore.Configuration.Settings.GetSetting(SettingsKey + ".Static"), base.Request.QueryString));
                }

                Response.Write(body);
            }
            else
            {
                Response.Write("Statuscode: " + StatusCode);
            }

            // set statuscode
            if (StatusCode > 0)
            {
                Response.StatusCode = StatusCode;
            }

            // pass through the response we create here
            Response.TrySkipIisCustomErrors = true;
        }
コード例 #26
0
        public void ListItemChildren()
        {
            Database masterDatabase = Sitecore.Configuration.Factory.GetDatabase("master");

            if (masterDatabase != null)
            {
                //Get Item nm1124
                Item nm1124Item = masterDatabase.GetItem(new ID("{91594D09-E4C0-458D-8C3E-3FD60413D352}"));

                if (nm1124Item != null)
                {
                    ChildList children = nm1124Item.GetChildren();

                    if (children != null && children.Count > 0)
                    {
                        this.Log(string.Format("Listing Item : {0}{{{1}}} \nListing Children :", nm1124Item.Name, nm1124Item.ID.ToString()));
                        foreach (Item child in children)
                        {
                            this.Log(string.Format("\t\tChild Item : {0}{{{1}}} [{2}]", child.Name, child.ID.ToString(), LinkManager.GetItemUrl(child)));
                        }
                    }
                }
            }
        }
コード例 #27
0
        /// <summary>
        /// Gets the payment link URL.
        /// </summary>
        /// <param name="fieldName">Name of the field.</param>
        /// <returns>The payment link URL.</returns>
        protected string ExtractPaymentLinkUrl(string fieldName)
        {
            Assert.IsNotNullOrEmpty(fieldName, "fieldName");

            if (Sitecore.Web.WebUtil.IsExternalUrl(fieldName))
            {
                return(fieldName);
            }

            BusinessCatalogSettings businessCatalogSettings = Context.Entity.GetConfiguration <BusinessCatalogSettings>();
            Item paymentsItem = Sitecore.Context.Database.GetItem(businessCatalogSettings.PaymentSystemsLink);

            Assert.IsNotNull(paymentsItem, "Payments item is null");
            Assert.IsNotNull(paymentsItem.Fields[fieldName], string.Concat("Payments item does not contains field: '", fieldName, "'"));

            LinkField linkField = paymentsItem.Fields[fieldName];

            Assert.IsNotNull(linkField, string.Concat("'", fieldName, "' is not a link field"));

            // If link is not internal just return url value.
            string externalUrl = linkField.Url;

            if (!linkField.LinkType.Equals("internal"))
            {
                return(externalUrl);
            }

            // If the site doesn't contains Business Catalog/Payments item under itself, Payment pages urls are wrong.
            // E.g.: Site path is: '/sitecore/content/Examples/Home';
            // Business Catalog path is: '/sitecore/content/Examples/Business Catalog';
            // Payment item path is: '/sitecore/content/Examples/Business Catalog/Payments';
            // In this case return page url is: '/Examples/Home/checkout/paymentreturnpage.aspx';
            // But should be: '/checkout/paymentreturnpage.aspx';
            Item targetPageItem = Sitecore.Context.Database.GetItem(linkField.TargetID);

            Assert.IsNotNull(targetPageItem, string.Concat("'", fieldName, "' contains invalid target item"));

            UrlOptions urlOptions = new UrlOptions
            {
                SiteResolving     = true,
                ShortenUrls       = true,
                AddAspxExtension  = true,
                EncodeNames       = true,
                LanguageEmbedding = LanguageEmbedding.AsNeeded
            };
            string relativeTargetPageUrl = LinkManager.GetItemUrl(targetPageItem, urlOptions);

            Assert.IsNotNull(HttpContext.Current.Request, "Http request is null");

            // If non regular http ports are used with instances on different ports like in Azure local emulation, HttpContext.Current.Request.Url.Port contains incorrect port.
            // This can be removed if/when issue is fixed by Microsoft.
            string host;
            var    port = HttpContext.Current.Request.Url.Port;

            if (port == 80 || port == 443)
            {
                host = HttpContext.Current.Request.Url.Host;
            }
            else
            {
                host = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
            }

            UrlString url = new UrlString
            {
                HostName = host,
                Path     = relativeTargetPageUrl
            };

            return(url.ToString());
        }
コード例 #28
0
        /// <summary>
        /// Gets the field.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <param name="config">The config.</param>
        /// <param name="context">The context.</param>
        /// <returns>System.Object.</returns>
        public override object GetField(Sitecore.Data.Fields.Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context)
        {
            if (field == null || field.Value.Trim().IsNullOrEmpty())
            {
                return(null);
            }



            Link      link      = new Link();
            LinkField linkField = new LinkField(field);

            switch (linkField.LinkType)
            {
            case "anchor":
                link.Url  = linkField.Anchor;
                link.Type = LinkType.Anchor;
                break;

            case "external":
                link.Url  = linkField.Url;
                link.Type = LinkType.External;
                break;

            case "mailto":
                link.Url  = linkField.Url;
                link.Type = LinkType.MailTo;
                break;

            case "javascript":
                link.Url  = linkField.Url;
                link.Type = LinkType.JavaScript;
                break;

            case "media":
                if (linkField.TargetItem == null)
                {
                    link.Url = string.Empty;
                }
                else
                {
                    global::Sitecore.Data.Items.MediaItem media =
                        new global::Sitecore.Data.Items.MediaItem(linkField.TargetItem);
                    link.Url = global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media);
                }
                link.Type     = LinkType.Media;
                link.TargetId = linkField.TargetID.Guid;
                break;

            case "internal":
                if (linkField.TargetItem == null)
                {
                    link.Url = string.Empty;
                }
                else
                {
                    link.Url = LinkManager.GetItemUrl(linkField.TargetItem);
                }
                link.Type     = LinkType.Internal;
                link.TargetId = linkField.TargetID.Guid;

                break;

            default:
                return(null);
            }


            link.Anchor = linkField.Anchor;
            link.Class  = linkField.Class;
            link.Text   = linkField.Text;
            link.Title  = linkField.Title;
            link.Target = linkField.Target;
            link.Query  = linkField.QueryString;

            return(link);
        }
コード例 #29
0
        private void GenerateSiteMap()
        {
            try
            {
                SiteMapConfig siteMapConfig = new SiteMapConfig();
                if (siteMapConfig.definedSites == null || !siteMapConfig.definedSites.Any())
                {
                    return;
                }

                if (siteMapConfig.targetDatabaseName == string.Empty)
                {
                    return;
                }

                foreach (var site in siteMapConfig.definedSites)
                {
                    if (site.Fields[SiteItemFields.SiteName] == null || string.IsNullOrEmpty(site.Fields[SiteItemFields.SiteName].Value))
                    {
                        continue;
                    }

                    Sitecore.Sites.SiteContext _site = Factory.GetSite(site.Fields[SiteItemFields.SiteName].Value);
                    if (_site == null)
                    {
                        continue;
                    }

                    Item _root = GetTargetDatabase().GetItem(_site.StartPath);
                    if (_root == null)
                    {
                        continue;
                    }

                    string siteHostName;
                    if (string.IsNullOrEmpty(_site.TargetHostName))
                    {
                        var hostArray = _site.HostName.Split('|');
                        siteHostName = hostArray.FirstOrDefault();
                    }
                    else
                    {
                        siteHostName = _site.TargetHostName;
                    }

                    bool   useServerUrlOverride = site.Fields[SiteItemFields.ServerURL] != null && !string.IsNullOrEmpty(site.Fields[SiteItemFields.ServerURL].Value);
                    string serverUrlOverrideUrl = site.Fields[SiteItemFields.ServerURL].Value;

                    StringBuilder sbSiteMap = new StringBuilder();
                    sbSiteMap.Append("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'>");

                    List <Item> siteMapItems = _root.Axes.GetDescendants().Where(P => P.Fields["Show In XML SiteMap"] != null && P.Fields["Show In XML SiteMap"].Value == "1").ToList();
                    if (siteMapItems != null && siteMapItems.Any())
                    {
                        if (_root.Fields["Show In XML SiteMap"].Value == "1")
                        {
                            siteMapItems.Add(_root);
                        }

                        var options = global::Sitecore.Links.LinkManager.GetDefaultUrlOptions();
                        options.LanguageEmbedding = LanguageEmbedding.Always;
                        options.SiteResolving     = true;


                        // get langauges
                        List <Language> _availbleLangauges = null;
                        if (siteMapConfig.multilingualSiteMapXML)
                        {
                            Item _languagesRoot = GetTargetDatabase().GetItem(Guids.Items.LangaugesRootItem);
                            _availbleLangauges = _languagesRoot.Axes.GetDescendants().Where(P => P.Fields["Iso"].Value != string.Empty).Select(P => Language.Parse(P.Fields["Iso"].Value)).ToList();
                        }
                        else
                        {
                            _availbleLangauges = new List <Language>()
                            {
                                Language.Parse("en")
                            };
                        }

                        XmlDocument doc = new XmlDocument();
                        foreach (var langauge in _availbleLangauges)
                        {
                            options.Language = langauge;
                            options.EmbedLanguage(langauge);
                            options.Site = _site;

                            foreach (var item in siteMapItems)
                            {
                                options.AlwaysIncludeServerUrl = !useServerUrlOverride;

                                //to resolve issues with multisite link resolution here, set the rootPath="#" on the publisher site in web.config
                                //and also add scheme="http" to the Site Definition for your site
                                string url = LinkManager.GetItemUrl(item, options);

                                // Add URL override to url
                                if (useServerUrlOverride)
                                {
                                    url = string.Format("{0}{1}", serverUrlOverrideUrl, url);
                                }

                                //handle where scheme="http" has not been added to Site Definitions
                                if (url.StartsWith("://"))
                                {
                                    url = url.Replace("://", "");
                                }

                                if (!url.StartsWith("http://") || !url.StartsWith("https://"))
                                {
                                    url = "http://" + url;
                                }

                                string lastUpdated     = DateUtil.IsoDateToDateTime(item.Fields[Sitecore.FieldIDs.Updated].Value).ToString("yyyy-MM-ddTHH:mm:sszzz");
                                string FrequencyChange = "yearly";
                                if (item.Fields[SiteMapFields.FrequencyChange] != null)
                                {
                                    if (!string.IsNullOrEmpty(item.Fields[SiteMapFields.FrequencyChange].Value))
                                    {
                                        Item _FrequencyChange = GetTargetDatabase().GetItem(item.Fields[SiteMapFields.FrequencyChange].Value);
                                        if (_FrequencyChange != null)
                                        {
                                            FrequencyChange = _FrequencyChange.Name;
                                        }
                                    }
                                }

                                string Priority = "0.0";
                                if (item.Fields[SiteMapFields.Priority] != null)
                                {
                                    if (!string.IsNullOrEmpty(item.Fields[SiteMapFields.Priority].Value))
                                    {
                                        Item _priority = GetTargetDatabase().GetItem(item.Fields[SiteMapFields.Priority].Value);
                                        if (_priority != null && _priority.Fields["Value"] != null && !string.IsNullOrEmpty(_priority.Fields["Value"].Value))
                                        {
                                            Priority = _priority.Fields["Value"].Value;
                                        }
                                    }
                                }

                                sbSiteMap.Append("<url>");
                                sbSiteMap.Append("<loc>");
                                sbSiteMap.Append(url);
                                sbSiteMap.Append("</loc>");
                                sbSiteMap.Append("<lastmod>");
                                sbSiteMap.Append(lastUpdated);
                                sbSiteMap.Append("</lastmod>");
                                sbSiteMap.Append("<changefreq>");
                                sbSiteMap.Append(FrequencyChange);
                                sbSiteMap.Append("</changefreq>");
                                sbSiteMap.Append("<priority>");
                                sbSiteMap.Append(Priority);
                                sbSiteMap.Append("</priority>");
                                sbSiteMap.Append("</url>");
                            }
                        }
                        sbSiteMap.Append("</urlset>");

                        string fileName = "SiteMap.xml";
                        if (site.Fields[SiteItemFields.SitemMapXMLFilename] != null &&
                            !string.IsNullOrEmpty(site.Fields[SiteItemFields.SitemMapXMLFilename].Value))
                        {
                            fileName = site.Fields[SiteItemFields.SitemMapXMLFilename].Value;
                        }

                        doc.LoadXml(sbSiteMap.ToString());
                        string xmlFilePath = MainUtil.MapPath("/" + fileName);
                        doc.Save(xmlFilePath);

                        if (site.Fields[SiteItemFields.AddToRobotFile] != null)
                        {
                            // Base URL
                            var serverUrl = serverUrlOverrideUrl;

                            if (!useServerUrlOverride)
                            {
                                // handles multi site, single site with hostname defined and single site with no hostname defined
                                var item   = siteMapItems.FirstOrDefault();
                                Uri mySite = new Uri(LinkManager.GetItemUrl(item, new UrlOptions {
                                    LanguageEmbedding = LanguageEmbedding.Never, AlwaysIncludeServerUrl = true
                                }));
                                serverUrl = mySite.Scheme + Uri.SchemeDelimiter + mySite.Host;
                            }

                            serverUrl = serverUrl.EndsWith("/") ? serverUrl : serverUrl + "/"; // Ensure URL is built correctly

                            Sitecore.Data.Fields.CheckboxField _AddToRobotFile = site.Fields[SiteItemFields.AddToRobotFile];
                            if (_AddToRobotFile != null)
                            {
                                if (_AddToRobotFile.Checked)
                                {
                                    AddSitemapToRobots(string.Format("{0}{1}", serverUrl, fileName));
                                }
                            }
                        }

                        Sitecore.Web.UI.Sheer.SheerResponse.Alert("SiteMap has been generated successfully");
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error(exception.Message, "SiteMapBuilder - GenerateSiteMap method");
            }
        }
コード例 #30
0
 public static string GetUrl(this Item item)
 {
     return(!IsMedia(item) ? LinkManager.GetItemUrl(item) : MediaManager.GetMediaUrl(item));
 }
コード例 #31
0
        public void GetItem_Test1()
        {
            //Assign
            GeneralFluentFixtureNS.BasicTemplate test = null;

            //Act
            using (new SecurityDisabler())
            {
                test = _sitecore.GetItem <GeneralFluentFixtureNS.BasicTemplate>("/sitecore/content/Configuration/Fluent/GeneralFluent/GetItemTest1");
            }
            var getTestItem1 = _db.GetItem("/sitecore/content/Configuration/Fluent/GeneralFluent/GetItemTest1");

            //Assert

            #region SitecoreId

            Assert.AreEqual(getTestItem1.ID.Guid, test.Id);

            #endregion

            #region Fields
            #region SimpleTypes

            Assert.IsTrue(test.Checkbox);

            Assert.AreEqual(new DateTime(2011, 05, 01), test.Date);

            Assert.AreEqual(new DateTime(2011, 06, 01, 06, 30, 00), test.DateTime);


            var file = new File()
            {
                Id  = new Guid("{368A358E-5835-458B-AFE6-BA5F80334F5A}"),
                Src = "~/media/Files/SimpleTextFile.ashx"
            };
            Assert.AreEqual(file.Id, test.File.Id);
            Assert.AreEqual(file.Src, test.File.Src);

            var image = new Image()
            {
                Alt     = "Alternate Text  Test",
                Border  = "",
                Class   = "",
                Height  = 540,
                HSpace  = 50,
                MediaId = new Guid("{223EEAE5-DF4C-4E30-95AC-17BE2F00E2CD}"),
                Src     = "~/media/Files/Kitten1.ashx",
                VSpace  = 60,
                Width   = 720,
            };
            Assert.AreEqual(image.Alt, test.Image.Alt);
            Assert.AreEqual(image.Border, test.Image.Border);
            Assert.AreEqual(image.Class, test.Image.Class);
            Assert.AreEqual(image.Height, test.Image.Height);
            Assert.AreEqual(image.HSpace, test.Image.HSpace);
            Assert.AreEqual(image.MediaId, test.Image.MediaId);
            Assert.AreEqual(image.Src, test.Image.Src);
            Assert.AreEqual(image.VSpace, test.Image.VSpace);
            Assert.AreEqual(image.Width, test.Image.Width);

            Assert.AreEqual(456, test.Integer);

            Assert.AreEqual(456f, test.Float);

            Assert.AreEqual(456d, test.Double);

            Assert.AreEqual(456m, test.Decimal);

            Assert.AreEqual("Multi Line Text Test", test.MultiLineText);

            Assert.AreEqual(789, test.Number);

            Assert.AreEqual("Password Test", test.Password);

            Assert.AreEqual("<p>Rich Text Test</p>", test.RichText.Trim());

            Assert.AreEqual("Single Line Text Test", test.SingleLineText);

            #endregion

            #region List Types

            Assert.AreEqual(2, test.CheckList.Count());
            Assert.AreEqual(_check1.ID.Guid, test.CheckList.First().Id);
            Assert.AreEqual(_check2.ID.Guid, test.CheckList.Last().Id);

            Assert.AreEqual(TestEnum.Test1, test.DropList);

            Assert.AreEqual(_test3.ID.Guid, test.GroupedDropLink.Id);

            Assert.AreEqual(TestEnum.Test3, test.GroupedDropList);

            Assert.AreEqual(_multiList1.ID.Guid, test.MultiList.First().Id);

            Assert.AreEqual(_treeList1.ID.Guid, test.Treelist.First().Id);

            Assert.AreEqual(_treeList2.ID.Guid, test.TreeListEx.First().Id);

            #endregion
            #region Link Types

            Assert.AreEqual(_link1.ID.Guid, test.DropLink.Id);

            Assert.AreEqual(_link2.ID.Guid, test.DropTree.Id);

            var link = new Link()
            {
                Anchor   = "",
                Class    = "Style Class Test",
                Target   = "_blank",
                TargetId = Guid.Empty,
                Text     = "Link Description Test",
                Title    = "Alternate Text Test",
                Url      = "http://www.google.com"
            };
            Assert.AreEqual(link.Anchor, test.GeneralLink.Anchor);
            Assert.AreEqual(link.Class, test.GeneralLink.Class);
            Assert.AreEqual(link.Target, test.GeneralLink.Target);
            Assert.AreEqual(link.TargetId, test.GeneralLink.TargetId);
            Assert.AreEqual(link.Text, test.GeneralLink.Text);
            Assert.AreEqual(link.Title, test.GeneralLink.Title);
            Assert.AreEqual(link.Url, test.GeneralLink.Url);


            #endregion

            #region Developer Types

            Assert.AreEqual("/sitecore/shell/Themes/Standard/Applications/48x48/about.png", test.Icon);

            Assert.AreEqual(TriState.No, test.TriState);

            #endregion

            #region System Types

            Console.WriteLine("Attachment not tested");

            #endregion
            #endregion

            #region SitecoreInfo

            Assert.AreEqual(getTestItem1.Paths.ContentPath, test.ContentPath);

            Assert.AreEqual(getTestItem1.DisplayName, test.DisplayName);

            Assert.AreEqual(getTestItem1.Paths.FullPath, test.FullPath);

            Assert.AreEqual(getTestItem1.Key, test.Key);

            Console.WriteLine("Not test media URL");

            Assert.AreEqual(getTestItem1.Paths.Path, test.Path);

            Assert.AreEqual(getTestItem1.TemplateID.Guid, test.TemplateId);

            Assert.AreEqual(getTestItem1.TemplateName, test.TemplateName);

            Assert.AreEqual(LinkManager.GetItemUrl(getTestItem1), test.Url);

            Assert.AreEqual(getTestItem1.Version.Number, test.Version);

            #endregion

            #region SitecoreChildren

            Assert.AreEqual(getTestItem1.Children.Count, test.Children.Count());
            Assert.AreEqual(getTestItem1.Children.First().ID.Guid, test.Children.First().Id);

            #endregion

            #region SitecoreParent

            Assert.AreEqual(getTestItem1.ParentID.Guid, test.Parent.Id);

            #endregion

            #region SitecoreQuery

            //we have to use the security disabler because we are outside of an ASP.NET context
            //if you do this without the disabler the role manager throws an exception
            using (new SecurityDisabler())
            {
                Assert.AreEqual(3, test.Query.Count());
                Assert.AreEqual(_query1.ID.Guid, test.Query.First().Id);
                Assert.AreEqual(_query2.ID.Guid, test.Query.Skip(1).First().Id);
            }
            #endregion
        }
コード例 #32
0
        /// <summary>
        /// used to getting the link
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmOnline_Load(object sender, EventArgs e)
        {
            string sLinkID = string.Empty;
            try
            {
                txtServerIp.Text = ConfigurationManager.AppSettings["ipconfig"].ToString();
                m_sPort = ConfigurationManager.AppSettings["port"].ToString();

                m_sLinkType = ConfigurationManager.AppSettings["linktype"].ToString();
                m_objLinkManager = new LinkManager();
                if (!Equals(m_objLinkManager, null))
                {
                    if (string.Compare(m_sLinkType, "TCP", StringComparison.OrdinalIgnoreCase) == 0)
                        m_objLink = m_objLinkManager.GetLink(LINKTYPE.TCP, out sLinkID);
                    if (string.Compare(m_sLinkType, "NAMEDPIPE", StringComparison.OrdinalIgnoreCase) == 0)
                        m_objLink = m_objLinkManager.GetLink(LINKTYPE.NAMEDPIPE, out sLinkID);
                }//end (if)
                if (!Equals(m_objLink, null))
                {
                    m_objLink.OnEngineConnected += new EventHandler<EngineArgs>(objLink_OnEngineConnected);
                }//end (if)
                this.FormClosing += new FormClosingEventHandler(frmOnline_FormClosing);
            }//end (try)
            catch (Exception ex)
            {
                LogWriter.WriteLog(MODULENAME, ex);
            }//end (catch)
        }
コード例 #33
0
        private void AddItemToQueue(params Item[] items)
        {
            //For now links are always added from one site as an array
            if (!items.Any())
            {
                return;
            }

            var websiteItem  = items.First();
            var fullItemPath = websiteItem.Paths.FullPath.ToLower();
            var site         = GetSiteContext(fullItemPath);

            if (site == null)
            {
                Log.Debug($"Cludo.Push.Url can't find website for item {fullItemPath}", this);
                return;
            }

            //If there is no match for site ignore links
            using (new SiteContextSwitcher(site))
            {
                var options = LinkManager.GetDefaultUrlOptions();
                options.AlwaysIncludeServerUrl = true;
                options.ShortenUrls            = true;
                options.SiteResolving          = true;
                if (options.LanguageEmbedding != LanguageEmbedding.Always &&
                    options.LanguageEmbedding != LanguageEmbedding.Never)
                {
                    Log.Warn($"Cludo.Push.Url supports only linkManager with languageEmbedding as always or never https://sdn.sitecore.net/upload/sitecore6/sc62keywords/dynamic_links_sc62_a4.pdf", this);
                    return;
                }


                foreach (var urlGroup in items.GroupBy(i => i.Language.Name))
                {
                    var contentId = ContentSourceId(urlGroup.Key);
                    if (contentId <= 0)
                    {
                        continue;
                    }
                    using (var client = GetClient())
                    {
                        var serilizer = new JavaScriptSerializer();
                        var result    = client.PostAsync($"/api/v3/{CustomerId}/content/{contentId}/pushurls",
                                                         new StringContent(
                                                             serilizer.Serialize(
                                                                 urlGroup.Select(item => LinkManager.GetItemUrl(item, options)).ToList()),
                                                             Encoding.UTF8, "application/json")).Result;

                        if (result.IsSuccessStatusCode)
                        {
                            return;
                        }
                        var message = result.Content.ReadAsStringAsync().Result;
                        Log.Error(
                            $"Invalid request to Cludo {result.RequestMessage.RequestUri}: Status: {result.StatusCode}, Message: {message}",
                            this);
                    }
                }
            }
        }