示例#1
0
        public void PageLink_With_Index_And_Items_Per_Pages_Equals_10_GetUrl_Should_Return_With_The_Url_Formated_By_Specified_Func()
        {
            var pageLink = new PageLink(1, (pages,index) => string.Format("/Controller/Action/{0}/{1}",pages,index), 10);
            var text = pageLink.GetUrl();

            Assert.That(text, Is.EqualTo("/Controller/Action/10/1"));
        }
示例#2
0
        /// <summary>
        /// Called by the main form when the page number of the image is changed
        /// </summary>
        public void SetCurrentPageNumber(int pageNumber, RasterImage pageImage)
        {
            _currentPageNumber = pageNumber;

            ImageViewerAutoResetOptions savedOptions = _rasterImageViewer.AutoResetOptions;

            _rasterImageViewer.AutoResetOptions = ImageViewerAutoResetOptions.None;
            _rasterImageViewer.Image            = pageImage;
            _rasterImageViewer.AutoResetOptions = savedOptions;

            if (_isNewDocument)
            {
                // Fit page when new document is set
                _isNewDocument = false;
                FitPage(false);
            }

            // Build the page internal links
            _pageLinks = new List <PageLink>();

            // Loop through the document internal links
            if (_document != null)
            {
                // Get the page
                PDFDocumentPage page = _document.Pages[_currentPageNumber - 1];

                if (_document.InternalLinks != null)
                {
                    for (int i = 0; i < _document.InternalLinks.Count; i++)
                    {
                        if (_document.InternalLinks[i].SourcePageNumber == pageNumber)
                        {
                            // Our page
                            PageLink link = new PageLink();
                            link.InternalLinkIndex = i;
                            link.HyperLinkIndex    = -1;
                            // The internal links bounds are in PDF page coordinates, not objects
                            link.ImageBounds = ToLeadRect(page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, _document.InternalLinks[i].SourceBounds));
                            _pageLinks.Add(link);
                        }
                    }
                }

                // Now add all hyperlinks
                if (page.Hyperlinks != null)
                {
                    for (int i = 0; i < page.Hyperlinks.Count; i++)
                    {
                        PageLink link = new PageLink();
                        link.HyperLinkIndex    = i;
                        link.InternalLinkIndex = -1;
                        link.ImageBounds       = ToLeadRect(page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, page.Hyperlinks[i].Bounds));
                        _pageLinks.Add(link);
                    }
                }
            }

            UpdatePageInfo();
            UpdateUIState();
        }
示例#3
0
        public void PageLink_With_Index_And_Items_Per_Pages_Equals_10_GetText_Should_Return_1()
        {
            var pageLink = new PageLink(1,null,10);
            var text = pageLink.GetText();

            Assert.That(text, Is.EqualTo("1"));
        }
示例#4
0
        /// <summary>
        /// Called whent he cursor changes.
        /// </summary>
        /// <param name="e">The event args.</param>
        protected override void OnSetCursor(SetCursorEventArgs e)
        {
            _cachedLink = null;

            if (_pageCacheValid)
            {
                var offset = GetScrollOffset();

                var location = new Point(
                    e.Location.X - offset.Width,
                    e.Location.Y - offset.Height
                    );

                for (int page = _visiblePageStart; page <= _visiblePageEnd; page++)
                {
                    foreach (var link in GetPageLinks(page))
                    {
                        if (link.Bounds.Contains(location))
                        {
                            _cachedLink = link;
                            e.Cursor    = Cursors.Hand;
                            return;
                        }
                    }
                }
            }

            base.OnSetCursor(e);
        }
        private void HookManager_MouseDown(object sender, MouseEventArgs e)
        {
            if (!this.MouseInPage(this.pageViewControl1.PointToClient(e.Location)) || e.Button != MouseButtons.Left)
            {
                return;
            }
            PageLink pageLink = this.SearchLink(e.Location);

            if (pageLink != null)
            {
                switch (pageLink.Action.Kind)
                {
                case LinkActionKind.actionGoTo:
                    PageLinkGoTo action1 = pageLink.Action as PageLinkGoTo;
                    if (action1.Destination != null)
                    {
                        this._pdfDoc.CurrentPage = action1.Destination.Page;
                        PointF dev = this._pdfDoc.PointUserToDev(new PointF((float)action1.Destination.Left, (float)action1.Destination.Top));
                        if (action1.Destination.ChangeTop)
                        {
                            this.ScrolltoTop((int)dev.Y);
                        }
                        else
                        {
                            this.ScrolltoTop(0);
                        }
                        this._pdfDoc.RenderPage(this.pageViewControl1.Handle);
                        this.Render();
                        break;
                    }
                    if (action1.DestinationName != null)
                    {
                        break;
                    }
                    break;

                case LinkActionKind.actionURI:
                    PageLinkURI action2 = pageLink.Action as PageLinkURI;
                    if (MessageBox.Show("Launching external application" + Environment.NewLine + action2.URL, this.Text, MessageBoxButtons.OKCancel) != DialogResult.OK)
                    {
                        break;
                    }
                    new Process()
                    {
                        StartInfo =
                        {
                            FileName  = PDFViewer1С.GetDefaultBrowserPath(),
                            Arguments = action2.URL
                        }
                    }.Start();
                    break;
                }
            }
            else
            {
                this._pointCurrent   = e.Location;
                this._pointStart     = e.Location;
                this._bMouseCaptured = true;
            }
        }
        private static string ResolvePageLink(Tridion.ContentManager.TcmUri tcmUri, Localization localization)
        {
            PageLink linker = new PageLink(GetPublicationUri(tcmUri, localization));
            Link     link   = linker.GetLink(tcmUri.ItemId);

            return(link.IsResolved ? link.Url : null);
        }
示例#7
0
 private static void AddALink(ListOfLinksControl ll, string text, string url, enumPageLinkType plt)
 {
     PageLink pl = new PageLink();
     pl.LinkType = plt;
     pl.NavigateUrl = url;
     pl.Text = text;
     ll.AddLink(pl);
 }
        private static string ResolvePageLink(TcmUri tcmUri, int localizationId = 0)
        {
            int      publicationId = localizationId == 0 ? tcmUri.PublicationId : localizationId;
            PageLink linker        = new PageLink(publicationId);
            Link     link          = linker.GetLink(tcmUri.ItemId);

            return(link.IsResolved ? link.Url : null);
        }
示例#9
0
    private void AddALink(ListOfLinksControl ll, string text, string url, enumPageLinkType plt)
    {
        PageLink pl = new PageLink();

        pl.LinkType    = plt;
        pl.NavigateUrl = url;
        pl.Text        = text;
        ll.AddLink(pl);
    }
示例#10
0
 private async Task OnSelectedPage(PageLink pageLink)
 {
     if (pageLink.Page == MetaData.CurrentPage || !pageLink.Enabled)
     {
         return;
     }
     MetaData.CurrentPage = pageLink.Page;
     await SelectedPage.InvokeAsync(pageLink.Page);
 }
示例#11
0
		private DealerPageInformation ToDealerPageInformation( PageLink pageLink )
		{
			return new DealerPageInformation()
			{
				PageID = pageLink.PageID,
				Name = pageLink.Display,
				URLLocation = pageLink.URLLocation
			};
		}
示例#12
0
		private DealerPageSummary ToDealerPageSummary( PageLink pageLink )
		{
			return new DealerPageSummary()
			{
				PageID = pageLink.PageID,
				Name = pageLink.Display,
				URLLocation = pageLink.URLLocation
			};
		}
示例#13
0
		public bool AddDealerPage( DealerPageInformation vInfo )
		{
			PageLink newPage = new PageLink();
			newPage.Display = vInfo.Name;
			newPage.URLLocation = vInfo.URLLocation;

			database.PageLinks.Add( newPage );

			return database.SaveChanges() > 0;
		}
        public void UrlNavigator_Construct_LastPage()
        {
            // arrange / act
            UrlNavigator nav  = UrlNavigatorBuilder.Build(url, 4, 10, null);
            PageLink     page = nav.Last;

            // assert
            Assert.Equal(10, page.Number);
            Assert.Equal(page.Url, url + "?pageNumber=10");
        }
示例#15
0
        public void SerializePageLink()
        {
            var    link = new PageLink("next", "http://api.com/next");
            string json = OpenStackNet.Serialize(link);

            var result = OpenStackNet.Deserialize <PageLink>(json);

            Assert.NotNull(result);
            Assert.True(result.IsNextPage);
        }
示例#16
0
        public void SerializePageLink()
        {
            var    link = new PageLink("next", "http://api.com/next");
            string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(link);

            var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize <PageLink>(json);

            Assert.NotNull(result);
            Assert.True(result.IsNextPage);
        }
        public void UrlNavigator_Construct_PreviousPage()
        {
            // arrange / act
            UrlNavigator nav  = UrlNavigatorBuilder.Build(url, 4, 10, null);
            PageLink     page = nav.Previous;

            // assert
            Assert.Equal(3, page.Number);
            Assert.Equal(page.Url, url + "?pageNumber=3");
        }
        public override async Task <TestRedirectionListResponseItem[]> ExecuteAsync(TestRedirectionListQuery message)
        {
            var redirections = (await repository.Query <TestPageRedirection>()
                                .Where(x => x.TestName == message.TestName &&
                                       x.ScenarioNames == "")
                                .ToArrayAsync())
                               .Select(x => new WithIndex(x.IndexInTest, x));

            var emailsRead = (await repository.Query <TestEmailRead>()
                              .Where(x => x.TestName == message.TestName &&
                                     x.ScenarioNames == "")
                              .ToArrayAsync())
                             .Select(x => new WithIndex(x.IndexInTest, x));

            var items     = redirections.Concat(emailsRead).OrderBy(x => x.Index).Select(x => x.Object).ToArray();
            var pathItems = new List <TestRedirectionListResponseItem>();

            foreach (var item in items)
            {
                if (item is TestPageRedirection redirection)
                {
                    PageLink pageFrom = null;
                    if (redirection.FromPageName != null)
                    {
                        pageFrom = new PageLink(
                            new PagePageQuery()
                        {
                            PageName = redirection.FromPageName
                        },
                            redirection.FromPageName
                            );
                    }
                    var pageTo = new PageLink(
                        new PagePageQuery()
                    {
                        PageName = redirection.ToPageName
                    },
                        redirection.ToPageName
                        );

                    pathItems.Add(
                        new TestRedirectionListResponseItem
                    {
                        IndexInTest        = redirection.IndexInTest,
                        PageFromMemberName = redirection.MemberName,
                        PageFrom           = pageFrom,
                        PageTo             = pageTo,
                        PageToHasAssert    = redirection.ToPageHasAssert
                    }
                        );
                }
            }
            return(pathItems.ToArray());
        }
        public ActionResult CreateLinks(PageLink model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            _db.PageLinks.Add(model);
            _db.SaveChanges();

            return(RedirectToAction("PageLink"));
        }
示例#20
0
        public void UrlNavigator_Construct_LastPage()
        {
            // cria navegador de url
            UrlNavigator nav = new UrlNavigator(url, 4, 10, null);

            // Obtem a página
            PageLink page = nav.last;

            // Verifica se está na página 10, nao é atual e a url
            Assert.AreEqual(page.number, 10);
            Assert.AreEqual(page.url, url + "?pageNumber=10");
        }
示例#21
0
        public void PageLink_Constructor_GenerateURLWithQueryString()
        {
            // arrange
            string url       = "?test=123";
            string urlreturn = "?test=123&pageNumber=3";

            // act
            PageLink link = PageLinkBuilder.Build(url, 3);

            // assert
            Assert.Equal(urlreturn, link.Url);
        }
示例#22
0
        public void PageLink_Constructor_GenerateURLWithBaseUrl()
        {
            // arrange
            string url       = "http://www.google.com";
            string urlreturn = "http://www.google.com?pageNumber=3";

            // act
            PageLink link = PageLinkBuilder.Build(url, 3);

            // assert
            Assert.Equal(urlreturn, link.Url);
        }
示例#23
0
        public void PageLink_Constructor_GenerateURLWithQueryString()
        {
            // URL a ser passada
            string url = "?teste=123";
            // URL a ser passada
            string urlreturn = "?teste=123&pageNumber=3";

            // Cria objeto
            PageLink link = new PageLink(url, 3);

            // Verifica a url recebida
            Assert.AreEqual(urlreturn, link.url);
        }
示例#24
0
        public Module()
        {
            this.Http     = HttpContext.Current;
            this.Request  = this.Http.Request;
            this.Response = this.Http.Response;
            this.Server   = this.Http.Server;

            this.Themes   = new ThemeLink(this);
            this.Settings = new SettingsLink(this);
            this.Modules  = new ModuleLink(this);
            this.Pages    = new PageLink(this);
            this.System   = new SystemLink(this);
        }
 private bool CheckPageClickable(IPaginationSection paginationSection, PageLink page)
 {
     paginationSection.OpenPage(page.Number);
     try
     {
         var value = page.Number;
         return(false);
     }
     catch (StaleElementReferenceException)
     {
         return(true);
     }
 }
示例#26
0
        public void PageLink_Constructor_GenerateURLWithFullUrl()
        {
            // URL a ser passada
            string url = "http://www.google.com/xxx?teste=123";
            // URL a ser passada
            string urlreturn = "http://www.google.com/xxx?teste=123&pageNumber=3";

            // Cria objeto
            PageLink link = new PageLink(url, 3);

            // Verifica a url recebida
            Assert.AreEqual(urlreturn, link.url);
        }
示例#27
0
        public PageLinkDto(PageLink pageLink)
        {
            var href = pageLink.Exists ? VirtualPathUtility.ToAbsolute(pageLink.VirtualPath) : null;

            pageID = pageLink.PageID;
            title = pageLink.Title;
            previewText = pageLink.PreviewText;
            previewImageID = pageLink.PreviewImageID == null ? null : pageLink.PreviewImageID.ToString();
            previewImageSrc = previewImageID == null ? null : FileUrls.GetUrl(previewImageID, null, null, FileResolution.Low);
            tileDisplay = pageLink.TileDisplay;
            tileClassName = pageLink.TileDisplay == "wide" ? "tile tile-wide" : "tile";
            link = href;
            exists = pageLink.Exists;
            hasPreviewImage = pageLink.HasPreviewImage;
        }
        public IActionResult Paging([FromQuery] PagingParams pagingParams)
        {
            var persons = _personAppService.FindWithPageSearch(pagingParams);

            Response.Headers.Add("X-Pagination", persons.GetHeader().ToJson());

            var personPageModel = new PersonPageModel
            {
                Paging = persons.GetHeader(),
                Links  = PageLink <PersonModel> .GetLinks(_urlHelper, "paging", persons),
                Items  = persons.List
            };

            return(Ok(personPageModel));
        }
示例#29
0
 public string ResolvePageLink(string tcmUri)
 {
     TcmUri pageUri = new TcmUri(tcmUri);
     using (var pageLink = new PageLink(pageUri.PublicationId))
     {
         var link = pageLink.GetLink(pageUri.ItemId);
         if (link != null)
         {
             return link.Url;
         }
         else
         {
             return String.Empty;
         }
     }
 }
示例#30
0
        public string ResolvePageLink(string tcmUri)
        {
            TcmUri pageUri = new TcmUri(tcmUri);

            using (var pageLink = new PageLink(pageUri.PublicationId))
            {
                var link = pageLink.GetLink(pageUri.ItemId);
                if (link != null)
                {
                    return(link.Url);
                }
                else
                {
                    return(String.Empty);
                }
            }
        }
示例#31
0
        protected void ItemCommand(object o, GridCommandEventArgs e)
        {
            switch (e.CommandName)
            {
            case RadGrid.EditCommandName:
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "SetEditMode", "isEditMode = true;", true);
                break;

            case RadGrid.InitInsertCommandName:
                e.Canceled = true;
                var i = new PageLink();
                i.Title     = "";
                i.ImagePath = "";
                i.ID        = 0;
                e.Item.OwnerTableView.InsertItem(new PageLink());
                break;

            case RadGrid.UpdateCommandName:
                var img = new PageLinkServices().GetByID(Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"].ToString()));
                GridEditFormItem insertItem = e.Item as GridEditFormItem;
                img.Title  = (insertItem["Title"].FindControl("tbTitle") as RadTextBox).Text;
                img.PageID = this.CurrentPage.ID;
                img.URL    = (insertItem["URL"].FindControl("tbURL") as RadTextBox).Text;
                new PageLinkServices().Save(img);
                LoadLinks(true);
                break;

            case RadGrid.PerformInsertCommandName:
                insertItem = e.Item as GridEditFormInsertItem;
                img        = new PageLink();
                img.Title  = (insertItem["Title"].FindControl("tbTitle") as RadTextBox).Text;
                img.PageID = this.CurrentPage.ID;
                img.URL    = (insertItem["URL"].FindControl("tbURL") as RadTextBox).Text;
                new PageLinkServices().Save(img);
                LoadLinks(true);

                break;

            case RadGrid.DeleteCommandName:
                img = new PageLinkServices().GetByID(Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"].ToString()));
                new PageLinkServices().Delete(img);
                LoadLinks(true);
                break;
            }
        }
        public static void ExtractLinkInfoAtLevel(HtmlNode node, int levelToPrint, List<PageLink> pageLinks)
        {
            if (VisitedNodes.Contains(node))
                return;

            VisitedNodes.Add(node);

            if (levelToPrint == 0)
            {
                if (node.Name.Trim() == "a" &&
                    CommonHelpers.GetTrimmedInnerText(node.InnerText) != "&nbsp;&gt;" &&    // Angle bracket
                    CommonHelpers.GetTrimmedInnerText(node.InnerText) != "&gt;&gt;" &&      // Double angle bracket greater than
                    CommonHelpers.GetTrimmedInnerText(node.InnerText) != "&lt;&lt;" &&      // Double angle bracket less than
                    CommonHelpers.GetTrimmedInnerText(node.InnerText) != "&lt;&nbsp;")       // Angle bracket less than
                {
                    int pageNumber;
                    var pageLink = new PageLink();
                    if (TryGetPageNumberText(node, out pageNumber))
                    {
                        pageLink.PageNumber = pageNumber;
                    }
                    else
                    {
                        Debug.Assert(false, "Failed to find page number, when we expect it to be there");
                    }

                    var relativeUrl = HtmlNodeHelpers.GetAttributeValue(node, "href");
                    var completeUri = new Uri(new Uri(CommonHelpers.BaseUrl), relativeUrl);
                    pageLink.Url = completeUri.AbsoluteUri;
                    pageLinks.Add(pageLink);
                }
                else if (node.NextSibling != null)
                {
                    ExtractLinkInfoAtLevel(node.NextSibling, levelToPrint, pageLinks);
                }
            }

            // Drill down into each child branch to find the label and the value
            foreach (HtmlNode child in node.ChildNodes)
            {
                // If child node has "Card Name:" text
                ExtractLinkInfoAtLevel(child, levelToPrint - 1, pageLinks);
            }
        }
        protected override void RunCore()
        {
            this.PopulateRedirections();

            using (var writer = XmlTextWriter.Create(this.outPath, new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true }))
            {
                writer.WriteStartDocument();

                writer.WriteStartElement("index");
                foreach (var page in this.Pages)
                {
                    var link = new PageLink(page);
                    if (!this.Redirections.ContainsKey(link))
                    {
                        writer.WriteStartElement("page");
                        writer.WriteAttributeString("ref", link.ToString());

                        var content = page.GetContent();
                        writer.WriteAttributeString("title", content.Title);

                        var categories = page.Categories;
                        if (categories.Length > 0)
                        {
                            writer.WriteStartElement("categories");

                            foreach (var category in categories)
                            {
                                writer.WriteStartElement("category");
                                writer.WriteAttributeString("name", NameTools.GetLocalName(category.FullName));
                                writer.WriteEndElement();
                            }

                            writer.WriteEndElement();
                        }

                        writer.WriteEndElement();
                    }
                }

                writer.WriteEndElement();

                writer.WriteEndDocument();
            }
        }
示例#34
0
 protected void Page_Load(object sender, EventArgs e)
 {
     WebPortalPage p = Page as WebPortalPage;
     if (p != null)
     {
         if (!p.ClientContextService.CurrentContext.ContainsKey(WebHelpUrlFmtKey))
         {
             PageLink linkCtrl = new PageLink
                                     {
                                         LinkType = enumPageLinkType.HelpFileName,
                                         NavigateUrl = "bogustopic",
                                         Target = "help"
                                     };
             var webHelpLink = linkCtrl.GetWebHelpLink();
             p.ClientContextService.CurrentContext.Add(WebHelpUrlFmtKey, webHelpLink.Url.Replace("bogustopic", "{0}"));
             p.ClientContextService.CurrentContext.Add(WebHelpUrlTargetKey, webHelpLink.Target);
         }
     }
 }
示例#35
0
        public void TryRedirect(Object s, EventArgs e)
        {
            HttpContext context = HttpContext.Current;

            int    publicationId = int.Parse(ConfigurationManager.AppSettings["GlobalPubId"]);
            string redirectField = ConfigurationManager.AppSettings["RedirectUrlField"];

            string url = context.Request.Url.PathAndQuery;
            int    pos = url.IndexOf("?");

            if (pos > 0)
            {
                url = url.Substring(0, pos);
            }

            PublicationCriteria     publicationCriteria = new PublicationCriteria(publicationId);
            ItemTypeCriteria        itemCriteria        = new ItemTypeCriteria(64);
            CustomMetaValueCriteria cmvCriteria         = new CustomMetaValueCriteria(new CustomMetaKeyCriteria(redirectField), url);
            AndCriteria             andCriteria         = new AndCriteria(new Criteria[] { publicationCriteria, itemCriteria, cmvCriteria });

            Query query = new Query(andCriteria);

            string[] results = query.ExecuteQuery();

            if (results.Length > 0)
            {
                PageLink pageLink = new PageLink(publicationId);
                Link     link     = pageLink.GetLink(results[0]);

                if (link.IsResolved)
                {
                    // Redirect
                    HttpResponse response = context.Response;
                    response.Clear();
                    response.RedirectLocation  = link.Url;
                    response.StatusCode        = 301;
                    response.StatusDescription = "301 Moved Permanently";
                    response.Write("Page has moved to " + link.Url);
                    response.End();
                }
            }
        }
示例#36
0
    protected void Page_Load(object sender, EventArgs e)
    {
        WebPortalPage p = Page as WebPortalPage;

        if (p != null)
        {
            if (!p.ClientContextService.CurrentContext.ContainsKey(WebHelpUrlFmtKey))
            {
                PageLink linkCtrl = new PageLink
                {
                    LinkType    = enumPageLinkType.HelpFileName,
                    NavigateUrl = "bogustopic",
                    Target      = "help"
                };
                var webHelpLink = linkCtrl.GetWebHelpLink();
                p.ClientContextService.CurrentContext.Add(WebHelpUrlFmtKey, webHelpLink.Url.Replace("bogustopic", "{0}"));
                p.ClientContextService.CurrentContext.Add(WebHelpUrlTargetKey, webHelpLink.Target);
            }
        }
    }
示例#37
0
        public static MvcHtmlString LinksPage(this HtmlHelper helper, PageLink pageLink, Func <int, string> url)
        {
            var result = new StringBuilder();

            for (int i = 1; i <= pageLink.NumberPages; i++)
            {
                var builder = new TagBuilder("a");
                builder.MergeAttribute("href", url(i));
                builder.InnerHtml = i.ToString();

                if (i == pageLink.SelectedPage)
                {
                    builder.AddCssClass("btn btn-outline-secondary active");
                }
                builder.AddCssClass("btn btn-outline-secondary");

                result.Append(builder.ToString());
            }
            return(MvcHtmlString.Create(result.ToString()));
        }
示例#38
0
    static void Main(string[] args)
    {
        Console.WriteLine("Use example? (Y)");
        string input = Console.ReadLine();

        if (input[0] == 'Y')
        {
            PageLink g = new PageLink(4);
            g.Show();
            int[,] temp;
            temp = new int[4, 4]
            {
                { 0, 1, 0, 0 },
                { 1, 0, 1, 1 },
                { 0, 0, 0, 0 },
                { 1, 0, 0, 0 }
            };
            g.PagePreSet(temp);
            Console.Clear();

            Console.WriteLine("Enter positive integer of iterations to make:");
            int iterations = Convert.ToInt32(Console.ReadLine());

            g.Show();
            g.Summary(iterations, 0.85f);
        }
        else
        {
            Console.WriteLine("Enter positive integer (<=63) for number of pages:");
            string   size = Console.ReadLine();
            PageLink g    = new PageLink(Convert.ToInt32(size));
            g.PagesSetUp();
            Console.Clear();

            Console.WriteLine("Enter positive integer of iterations to make:");
            int iterations = Convert.ToInt32(Console.ReadLine());

            g.Show();
            g.Summary(iterations, 0.85f);
        }
    }
示例#39
0
        public void TryRedirect(Object s, EventArgs e)
        {
            HttpContext context = HttpContext.Current;

            int publicationId = int.Parse(ConfigurationManager.AppSettings["GlobalPubId"]);
            string redirectField = ConfigurationManager.AppSettings["RedirectUrlField"];

            string url = context.Request.Url.PathAndQuery;
            int pos = url.IndexOf("?");
            if (pos > 0) url = url.Substring(0, pos);

            PublicationCriteria publicationCriteria = new PublicationCriteria(publicationId);
            ItemTypeCriteria itemCriteria = new ItemTypeCriteria(64);
            CustomMetaValueCriteria cmvCriteria = new CustomMetaValueCriteria(new CustomMetaKeyCriteria(redirectField), url);
            AndCriteria andCriteria = new AndCriteria(new Criteria[] { publicationCriteria, itemCriteria, cmvCriteria });

            Query query = new Query(andCriteria);

            string[] results = query.ExecuteQuery();

            if (results.Length > 0)
            {
                PageLink pageLink = new PageLink(publicationId);
                Link link = pageLink.GetLink(results[0]);

                if (link.IsResolved)
                {
                    // Redirect
                    HttpResponse response = context.Response;
                    response.Clear();
                    response.RedirectLocation = link.Url;
                    response.StatusCode = 301;
                    response.StatusDescription = "301 Moved Permanently";
                    response.Write("Page has moved to " + link.Url);
                    response.End();
                }
            }
        }
        private string ReplaceLinks(Match match)
        {
            var link = new PageLink(match);

            var pageLink = new PageLink(link.Namespace ?? this.currentPageLink.Namespace, link.Name, null);

            PageLink redirect;

            var currentNs = NameTools.GetNamespace(this.currentPage.FullName);
            if (this.Redirections.TryGetValue(pageLink, out redirect))
            {
                return redirect.ToStaticHref(currentNs);
            }
            else
            {
                return link.ToStaticHref(currentNs);
            }
        }
        private void BuildPageLinks(WikiPage page)
        {
            //this.Log.Write("Construction liens page {0}", page.FullName);

            this.currentPageLink = new PageLink(page);

            if (this.Redirections.ContainsKey(this.currentPageLink))
            {
                // Cette page est une redirection, on l'ignore
                this.Log.Info("Construction liens page {0} ignorée, redirection", page.FullName);
                return;
            }

            this.currentPage = page;

            var pageContent = page.GetContent();

            if (pageContent == null)
            {
                this.Log.Info("Construction liens page {0} ignorée, vide", page.FullName);
                return;
            }

            var formatter = new Formatter();
            var formatted = string.Empty;
            try
            {
                formatted = page.FormatWithPhase1And2(formatter);
            }
            catch (Exception ex)
            {
                this.Log.Error("Erreur durant la mise en forme de la page {0}, extraction annulée. Détail : {1}", page.FullName, ex);
            }

            // We create a list with all links in this page
            var pageLinks = new List<PageLink>(page.Links.Length);
            foreach (var link in page.Links)
            {
                // We create a PageLink for this link
                string linkNS, linkName;
                NameTools.ExpandFullName(link, out linkNS, out linkName);

                if (!this.trackCrossNamespaceLinks && linkNS != this.currentPageLink.Namespace)
                {
                    // Link with another namespace, we do not track them
                    continue;
                }

                int index = linkName.IndexOf('#');
                if (index > -1)
                {
                    linkName = linkName.Substring(0, index);
                }

                var pageLink = new PageLink(linkNS, linkName, null);

                // Pas sur que cela ait un intérêt : les liens dans la page envoient toujours vers la page qui n'existe plus, donc
                // peu d'intérêt de modifier les liens dans les métadonnées de la page.
                // Il faudrait peut-être à terme générer aussi les pages de redirection sous forme de fichiers, afin de permettre de les reconstruire ensuite.
                //// We eventually replace the link with the real redirected page
                ////PageLink redirectedLink;
                ////if (this.Redirections.TryGetValue(pageLink, out redirectedLink))
                ////{
                ////    pageLink = new PageLink(redirectedLink.Namespace, redirectedLink.Name, redirectedLink.Anchor);
                ////}

                ////if (!pageLinks.Contains(pageLink))
                ////{
                ////    pageLinks.Add(pageLink);
                ////}
                pageLinks.Add(pageLink);

                PageLinkStatus linkStatus;

                if (!this.PageLinks.TryGetValue(pageLink, out linkStatus))
                {
                    // The linked page is not yet registered (existing or not),
                    // we create then register it
                    var linkedPage = this.FindPage(pageLink.FullName);
                    linkStatus = new PageLinkStatus(pageLink, linkedPage);
                    this.PageLinks.Add(pageLink, linkStatus);
                }

                // We add this page as an incoming link
                linkStatus.EnteringLinks.Add(this.currentPageLink);
            }

            // We check the current page status
            PageLinkStatus pageStatus;
            if (!this.PageLinks.TryGetValue(this.currentPageLink, out pageStatus))
            {
                // This page is not yet registered (not yet linked),
                // we create then register it
                var linkedPage = this.FindPage(this.currentPageLink.FullName);
                pageStatus = new PageLinkStatus(this.currentPageLink, linkedPage);
                this.PageLinks.Add(this.currentPageLink, pageStatus);
            }

            // The page now exists
            pageStatus.Exists = true;

            // We set all outgoing links
            pageStatus.Links = pageLinks;
        }
示例#42
0
        private void DetectPageRedirection(WikiPage page)
        {
            if (page == null)
            {
                return;
            }

            var content = page.GetContent();

            if (content == null)
            {
                return;
            }

            // Détection via snippet
            var match = Regex.Match(content.Content, RedirectionSnippetPattern, RegexOptions.ExplicitCapture);

            if (!match.Success)
            {
                // Détection url standard
                match = Regex.Match(content.Content, RedirectionPattern, RegexOptions.ExplicitCapture);
            }

            if (match.Success)
            {
                // La page est une redirection
                var sourceLink = new PageLink(page);
                var targetLink = new PageLink(match);
                this.redirections.TryAdd(sourceLink, targetLink);

                PageLinkStatus pageStatus = this.pageLinks.GetOrAdd(sourceLink, x => new PageLinkStatus(x, page));

                if (pageStatus.Links == null)
                {
                    pageStatus.Links = new List<PageLink>(1);
                }

                pageStatus.Exists = true;
                pageStatus.Links.Add(targetLink);

                var linkStatus = this.pageLinks.GetOrAdd(targetLink, x =>
                {
                    // La page destination n'existe pas encore, on la créée
                    var targetPage = this.FindPage(NameTools.GetFullName(x.Namespace, x.Name));
                    return new PageLinkStatus(new PageLink(x.Namespace, x.Name, null), targetPage);
                });

                linkStatus.EnteringLinks.Add(sourceLink);

                this.log.Info(string.Format("Redirection détectée : {0} => {1}", sourceLink, targetLink));
            }
        }
 private static string ResolvePageLink(TcmUri tcmUri, int localizationId = 0)
 {
     int publicationId = localizationId == 0 ? tcmUri.PublicationId : localizationId;
     PageLink linker = new PageLink(publicationId);
     Link link = linker.GetLink(tcmUri.ItemId);
     return link.IsResolved ? link.Url : null;
 }
示例#44
0
 private static string ResolvePageLink(string uri, int localizationId = 0)
 {
     //TODO should we have a single (static) link object?
     var linker = new PageLink(localizationId == 0 ? GetPublicationIdFromUri(uri) : localizationId);
     var link = linker.GetLink(GetItemIdFromUri(uri));
     return link.IsResolved ? link.Url : null;
 }
        private void ExtractPage(WikiPage page)
        {
            this.currentPageLink = new PageLink(page);
            this.currentPage = page;

            if (this.Redirections.ContainsKey(this.currentPageLink))
            {
                // Cette page est une redirection, on l'ignore
                this.Log.Info("Extraction page {0} ignorée, redirection", page.FullName);

                return;
            }

            var pageContent = page.GetContent();

            if (pageContent == null)
            {
                this.Log.Info("Extraction page {0} ignorée, vide", page.FullName);
                return;
            }

            List<string> warnings = new List<string>();

            var formatter = new Formatter();
            string formatted = string.Empty;
            try
            {
                formatted = page.FormatWithPhase3(formatter);
            }
            catch (Exception ex)
            {
                this.Log.Error("Erreur durant la mise en forme de la page {0}, extraction annulée. Détail : {1}", page.FullName, ex);
                warnings.Add("Erreur lors de la mise en page, opération annulée");
            }

            // Traitements personnalisés
            formatted = Regex.Replace(formatted, AnchorHrefPattern, ReplaceLinks);

            var matches = Regex.Matches(formatted, AshxHrefPattern);
            if (matches.Count > 0)
            {
                foreach (Match match in matches)
                {
                    warnings.Add(string.Format("Lien en dur : [url=http://www.pathfinder-fr.org/Wiki/{0}]{0}[/url]", match.Groups["Href"].Value));
                }
            }

            var ns = NameTools.GetNamespace(page.FullName);

            if (string.IsNullOrEmpty(ns))
            {
                ns = ".";
            }

            var fullPath = Path.Combine(outDir, string.Format(@"{0}\{1}.{2}", ns, PageLink.SanitizeName(NameTools.GetLocalName(page.FullName)), this.Extension));
            var dir = Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            string newContent;

            if (!string.IsNullOrEmpty(Template))
            {
                // Catégories
                var categoryBuilder = new StringBuilder();
                foreach (var category in page.Categories)
                {
                    if (category != null)
                    {
                        categoryBuilder.AppendFormat("<category>{0}</category>", category.FullName);
                    }
                }

                var categories = categoryBuilder.ToString();

                var currentPageLinks = this.PageLinks[currentPageLink];

                // Liens entrants
                string inLinks = string.Empty;
                foreach (var link in currentPageLinks.EnteringLinks)
                {
                    inLinks += "<link>" + link.FullName + "</link>";
                }

                // Liens sortants
                string outLinks = string.Empty;
                foreach (var link in currentPageLinks.Links)
                {
                    outLinks += "<link>" + link.FullName + "</link>";
                }

                newContent = string.Format(
                    templateContent,
                    formatted, // 0
                    pageContent.Title,
                    categories,
                    inLinks,
                    outLinks,
                    pageContent.LastModified.ToString("u"), // 5
                    page.ProviderGetBackups().Max<int, int?>(i => i) ?? 0,
                    System.Net.WebUtility.HtmlEncode(formatted),
                    pageContent.Content, // 8
                    page.FullName // 9
                );
            }
            else
            {
                newContent = formatted;
            }

            if (File.Exists(fullPath))
            {
                var bytes = Encoding.Default.GetBytes(newContent);

                string newHash = string.Empty;
                string oldHash = string.Empty;

                using (Crc32 crc = new Crc32())
                {
                    foreach (var hashByte in crc.ComputeHash(bytes))
                    {
                        newHash += hashByte.ToString("x2");
                    }

                    using (var fs = File.OpenRead(fullPath))
                    {
                        foreach (var hashByte in crc.ComputeHash(fs))
                        {
                            oldHash += hashByte.ToString("x2");
                        }
                    }
                }

                if (oldHash.Equals(newHash, StringComparison.Ordinal))
                {
                    this.Log.Verbose("Extraction page {0} ignorée, non modifiée", page.FullName);
                    return;
                }
            }

            using (var writer = new StreamWriter(fullPath, false))
            {
                writer.Write(newContent);
            }

            if (warnings.Count == 0)
            {
                this.Log.Verbose("Extraction page {0} terminée", page.FullName);
            }
            else
            {
                this.Log.Warning("Extraction page {0} terminée avec avertissements :", page.FullName);

                foreach (var line in warnings)
                {
                    this.Log.Warning("- {0}", line);
                }
            }
        }
示例#46
0
    private void LoadActivities()
    {
        if (TodaysActivities != null)
        {
            IContextService context = Sage.Platform.Application.ApplicationContext.Current.Services.Get<IContextService>(true);
            SLXUserService userService = ApplicationContext.Current.Services.Get<IUserService>() as SLXUserService;
            if ((userService != null) && (userService.UserId != null))
            {
                /// To change LoadActivities to a different time period, change startDt to midnight for the day you want
                /// and change NumberOfDays to the correct value.  To show the next rolling week's activities, change
                /// NumberOfDays to 7, for example.
                const int NumberOfDays = 1;
                if (context.GetContext("WelcomeSearchCriteria") == null)
                {
                    ActivitySearchOptions aso = new ActivitySearchOptions();
                    aso.UserIds.Add(userService.UserId.Trim());
                    aso.StartDate = DateTime.Today.ToUniversalTime();
                    aso.EndDate = DateTime.Today.AddDays(NumberOfDays).ToUniversalTime();
                    aso.SortOrder = ActivitySortOrder.soWelcome;
                    aso.SortDirection = ListSortDirection.Ascending;
                    aso.TheType = ActivityType.atInternal;
                    context.SetContext("WelcomeSearchCriteria", aso);
                }
                if (context.GetContext("WelcomeSearchTimeframe") == null)
                {
                    context.SetContext("WelcomeSearchTimeframe", "liToday");
                }

                ///

                string userId = userService.UserId;
                ISession session = SessionFactoryHolder.HolderInstance.CreateSession();
                try
                {

                    ActivitySearchOptions aso = (ActivitySearchOptions)context.GetContext("WelcomeSearchCriteria");
                    aso.TheType = ActivityType.atInternal;
                    IList results = (List<Activity>)Activity.GetActivitiesFor(aso);

                    const string ActivityUrlFormat = "javascript:Link.editActivity('{0}');";
                    const string ActivityDescriptionFormat = "{0}   {1} ({2})";
                    const string ActivityDescriptionFormatNoContact = "{0}    {1}";
                    const string TimeRangeFormat = "{0} - {1}";
                    foreach (IActivity act in results)
                    {
                        string desc;
                        string url;
                        string timerange;
                        if (!act.Timeless)
                        {
                            timerange = string.Format(TimeRangeFormat, PrettyDateTime(act.StartDate),
                                                              PrettyDateTime(act.StartDate.AddMinutes(act.Duration)));
                        }
                        else
                        {
                            timerange = GetLocalResourceObject("Timeless.Text").ToString();
                        }
                        if (string.IsNullOrEmpty(act.ContactName))
                        {
                            desc = string.Format(ActivityDescriptionFormatNoContact, timerange, act.Description);
                        }
                        else
                        {
                            desc = string.Format(ActivityDescriptionFormat, timerange, act.Description, act.ContactName);
                        }
                        url = string.Format(ActivityUrlFormat, act.Id);
                        AddALink(TodaysActivities, desc, url, enumPageLinkType.RelativePath);
                    }
                }
                finally
                {
                    SessionFactoryHolder.HolderInstance.ReleaseSession(session);
                }
                PageLink allActivities = new PageLink();
                int numActivities = (TodaysActivities.ListOfLinks == null) ? 0 : TodaysActivities.ListOfLinks.Count;
                allActivities.Text = String.Format(GetLocalResourceObject("AllActivities.Text").ToString(), numActivities);
                allActivities.NavigateUrl = "ActivityManager.aspx?useWelcomeCriteria=T";
                allActivities.LinkType = enumPageLinkType.RelativePath;
                TodaysActivities.Footer = allActivities;
            }
        }
    }
示例#47
0
 public static PageLinkDto FromPageLink(PageLink link)
 {
     return new PageLinkDto(link);
 }