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")); }
/// <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(); }
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")); }
/// <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); }
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); }
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); }
private async Task OnSelectedPage(PageLink pageLink) { if (pageLink.Page == MetaData.CurrentPage || !pageLink.Enabled) { return; } MetaData.CurrentPage = pageLink.Page; await SelectedPage.InvokeAsync(pageLink.Page); }
private DealerPageInformation ToDealerPageInformation( PageLink pageLink ) { return new DealerPageInformation() { PageID = pageLink.PageID, Name = pageLink.Display, URLLocation = pageLink.URLLocation }; }
private DealerPageSummary ToDealerPageSummary( PageLink pageLink ) { return new DealerPageSummary() { PageID = pageLink.PageID, Name = pageLink.Display, URLLocation = pageLink.URLLocation }; }
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"); }
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); }
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")); }
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"); }
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); }
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); }
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); }
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); } }
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); }
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)); }
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; } } }
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); } } }
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) != " >" && // Angle bracket CommonHelpers.GetTrimmedInnerText(node.InnerText) != ">>" && // Double angle bracket greater than CommonHelpers.GetTrimmedInnerText(node.InnerText) != "<<" && // Double angle bracket less than CommonHelpers.GetTrimmedInnerText(node.InnerText) != "< ") // 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(); } }
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); } } }
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(); } } }
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())); }
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); } }
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; }
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; }
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); } } }
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; } } }
public static PageLinkDto FromPageLink(PageLink link) { return new PageLinkDto(link); }