public static void Show(object sender, ShowPPageEventArgs e) { PostForm poster = new PostForm(e.Core, e.Page); e.Template.SetTemplate("Forum", "post"); VariableCollection javaScriptVariableCollection = e.Template.CreateChild("javascript_list"); javaScriptVariableCollection.Parse("URI", @"/scripts/jquery.sceditor.bbcode.min.js"); VariableCollection styleSheetVariableCollection = e.Template.CreateChild("style_sheet_list"); styleSheetVariableCollection.Parse("URI", @"/styles/jquery.sceditor.theme.default.min.css"); ForumSettings.ShowForumHeader(e.Core, e.Page); e.Template.Parse("PAGE_TITLE", e.Core.Prose.GetString("POST")); if (e.Core.Http.Form["save"] != null) // DRAFT { poster.ShowPostingScreen("draft", e); } else if (e.Core.Http.Form["preview"] != null) // PREVIEW { poster.ShowPostingScreen("preview", e); } else if (e.Core.Http.Form["submit"] != null) // POST { poster.ShowPostingScreen("post", e); } else { poster.ShowPostingScreen("none", e); } }
public static void Show(object sender, ShowPPageEventArgs e) { UploadForm uploader = new UploadForm(e.Core, e.Page); e.Template.SetTemplate("Gallery", "gallery_upload"); e.Template.Parse("PAGE_TITLE", e.Core.Prose.GetString("UPLOAD_PHOTO")); e.Template.Parse("S_UPLOAD", e.Core.Hyperlink.AppendSid(e.Page.Owner.UriStub + "gallery/upload", true)); uploader.AccountGalleriesUpload_Show(sender, e); }
public static void Show(object sender, ShowPPageEventArgs e) { string pageName = e.Slug; char[] trimStartChars = { '.', '/' }; if (pageName != null) { pageName = pageName.TrimEnd('/').TrimStart(trimStartChars); } try { Page thePage = new Page(e.Core, e.Page.Owner, pageName); Show(e.Core, e.Page.Owner, thePage); } catch (PageNotFoundException) { e.Core.Functions.Generate404(); } }
public static void ShowHelp(object sender, ShowPPageEventArgs e) { ForumSettings settings; try { settings = new ForumSettings(e.Core, e.Page.Owner); } catch (InvalidForumSettingsException) { ForumSettings.Create(e.Core, e.Page.Owner); settings = new ForumSettings(e.Core, e.Page.Owner); } e.Template.SetTemplate("Forum", "help"); ForumSettings.ShowForumHeader(e.Core, e.Page); e.Template.Parse("PAGE_TITLE", e.Core.Prose.GetString("FORUM_HELP")); List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "forum", e.Core.Prose.GetString("FORUM") }); breadCrumbParts.Add(new string[] { "help", e.Core.Prose.GetString("HELP") }); e.Page.Owner.ParseBreadCrumbs(breadCrumbParts); }
private void ShowPostingScreen(string submitMode, ShowPPageEventArgs e) { long forumId = core.Functions.FormLong("f", core.Functions.RequestLong("f", 0)); long topicId = core.Functions.FormLong("t", core.Functions.RequestLong("t", 0)); long postId = core.Functions.FormLong("p", core.Functions.RequestLong("p", 0)); string subject = core.Http.Form["subject"]; string text = core.Http.Form["post"]; string mode = core.Http.Query["mode"]; string topicState = core.Http.Form["topic-state"]; List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "forum", core.Prose.GetString("FORUM") }); if (string.IsNullOrEmpty(mode)) { mode = core.Http.Form["mode"]; } if (string.IsNullOrEmpty(topicState)) { topicState = ((byte)TopicStates.Normal).ToString(); } List<SelectBoxItem> sbis = new List<SelectBoxItem>(); sbis.Add(new SelectBoxItem(((byte)TopicStates.Normal).ToString(), "Topic")); if (page is GPage) { core.Template.Parse("S_POST", core.Hyperlink.AppendSid(string.Format("{0}forum/post", ((GPage)page).Group.UriStub), true)); if (((GPage)page).Group.IsGroupOperator(core.Session.LoggedInMember.ItemKey) && topicId == 0) { // TODO: Global, remember to update columns to 4 } } if (topicId > 0) { ForumTopic thisTopic = new ForumTopic(core, topicId); List<TopicPost> posts = thisTopic.GetLastPosts(10); if (posts.Count > 0) { core.Template.Parse("PREVIEW_TOPIC", "TRUE"); } foreach (TopicPost post in posts) { VariableCollection postVariableCollection = core.Template.CreateChild("post_list"); postVariableCollection.Parse("SUBJECT", post.Title); postVariableCollection.Parse("POST_TIME", core.Tz.DateTimeToString(post.GetCreatedDate(core.Tz))); //postVariableCollection.Parse("POST_MODIFIED", core.tz.DateTimeToString(post.GetModifiedDate(core.tz))); postVariableCollection.Parse("ID", post.Id.ToString()); core.Display.ParseBbcode(postVariableCollection, "TEXT", post.Text); postVariableCollection.Parse("U_USER", post.Poster.Uri); postVariableCollection.Parse("USER_DISPLAY_NAME", post.Poster.UserInfo.DisplayName); postVariableCollection.Parse("USER_TILE", post.Poster.Tile); postVariableCollection.Parse("USER_ICON", post.Poster.Icon); postVariableCollection.Parse("USER_JOINED", core.Tz.DateTimeToString(post.Poster.UserInfo.GetRegistrationDate(core.Tz))); postVariableCollection.Parse("USER_COUNTRY", post.Poster.Profile.Country); if (thisTopic.ReadStatus == null) { postVariableCollection.Parse("IS_READ", "FALSE"); } else { if (thisTopic.ReadStatus.ReadTimeRaw < post.TimeCreatedRaw) { postVariableCollection.Parse("IS_READ", "FALSE"); } else { postVariableCollection.Parse("IS_READ", "TRUE"); } } } if (thisTopic.Forum.Access.Can("CREATE_STICKY")) { sbis.Add(new SelectBoxItem(((byte)TopicStates.Sticky).ToString(), "Sticky")); } if (thisTopic.Forum.Access.Can("CREATE_ANNOUNCEMENTS")) { sbis.Add(new SelectBoxItem(((byte)TopicStates.Announcement).ToString(), "Announcement")); } if (thisTopic.Forum.Parents != null) { foreach (ParentTreeNode ptn in thisTopic.Forum.Parents.Nodes) { breadCrumbParts.Add(new string[] { "*" + ptn.ParentId.ToString(), ptn.ParentTitle }); } } if (thisTopic.Forum.Id > 0) { breadCrumbParts.Add(new string[] { thisTopic.Forum.Id.ToString(), thisTopic.Forum.Title }); } breadCrumbParts.Add(new string[] { "topic-" + thisTopic.Id.ToString(), thisTopic.Title }); breadCrumbParts.Add(new string[] { "*forum/post/?t=" + thisTopic.Id.ToString() + "&mode=reply", core.Prose.GetString("POST_REPLY") }); } else if (forumId > 0) { Forum forum = new Forum(core, forumId); if (!forum.Access.Can("CREATE_TOPICS")) { core.Display.ShowMessage("Cannot create new topic", "Not authorised to create a new topic"); return; } if (forum.Access.Can("CREATE_STICKY")) { sbis.Add(new SelectBoxItem(((byte)TopicStates.Sticky).ToString(), "Sticky")); } if (forum.Access.Can("CREATE_ANNOUNCEMENTS")) { sbis.Add(new SelectBoxItem(((byte)TopicStates.Announcement).ToString(), "Announcement")); } if (forum.Parents != null) { foreach (ParentTreeNode ptn in forum.Parents.Nodes) { breadCrumbParts.Add(new string[] { "*" + ptn.ParentId.ToString(), ptn.ParentTitle }); } } if (forum.Id > 0) { breadCrumbParts.Add(new string[] { forum.Id.ToString(), forum.Title }); } breadCrumbParts.Add(new string[] { "*forum/post/?f=" + forum.Id.ToString() + "&mode=post", core.Prose.GetString("NEW_TOPIC") }); } core.Template.Parse("S_MODE", mode); if (forumId > 0) { core.Template.Parse("S_FORUM", forumId.ToString()); } if (topicId > 0) { core.Template.Parse("S_TOPIC", topicId.ToString()); } if (postId > 0) { core.Template.Parse("S_ID", postId.ToString()); } if (!string.IsNullOrEmpty(subject)) { core.Template.Parse("S_SUBJECT", subject); } else { if (topicId > 0) { ForumTopic topic = new ForumTopic(core, topicId); core.Template.Parse("S_SUBJECT", "RE: " + topic.Title); } } if (!string.IsNullOrEmpty(text)) { core.Template.Parse("S_POST_TEXT", text); } if (sbis.Count > 1 && (mode == "post" || mode == "edit")) { core.Display.ParseRadioArray("S_TOPIC_STATE", "topic-state", sbis.Count, sbis, topicState); } if (submitMode != "none") { if (topicId == 0 && (string.IsNullOrEmpty(subject) || subject.Length < 3)) { core.Template.Parse("ERROR", "New topic must have a subject"); return; } if (string.IsNullOrEmpty(text) || text.Length < 3) { core.Template.Parse("ERROR", "Post too short, must be at least three characters long"); return; } } if (submitMode == "preview") { core.Display.ParseBbcode("PREVIEW", text); core.Display.ParseBbcode("SUBJECT", subject); try { ForumMember member = new ForumMember(core, page.Owner, page.loggedInMember); core.Display.ParseBbcode("SIGNATURE", member.ForumSignature); } catch (InvalidForumMemberException) { } } foreach (Emoticon emoticon in core.Emoticons) { if (emoticon.Category == "modifier") continue; if (emoticon.Category == "people" && emoticon.Code.Length < 3) { VariableCollection emoticonVariableCollection = e.Template.CreateChild("emoticon_list"); emoticonVariableCollection.Parse("CODE", emoticon.Code); emoticonVariableCollection.Parse("URI", emoticon.File); } else { VariableCollection emoticonVariableCollection = e.Template.CreateChild("emoticon_hidden_list"); emoticonVariableCollection.Parse("CODE", emoticon.Code); emoticonVariableCollection.Parse("URI", emoticon.File); } } if (submitMode == "draft" || submitMode == "post") { SavePost(mode, subject, text); } page.Owner.ParseBreadCrumbs(breadCrumbParts); }
//public static void ShowLists(Core core, UPage page) public static void ShowLists(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Pages", "viewlist"); Page page = new Page(e.Core, e.Page.Owner, "lists"); e.Core.Display.ParsePageList(e.Page.Owner, true, page); e.Template.Parse("USER_THUMB", e.Page.Owner.Thumbnail); e.Template.Parse("USER_COVER_PHOTO", e.Page.Owner.CoverPhoto); e.Template.Parse("USER_MOBILE_COVER_PHOTO", e.Page.Owner.MobileCoverPhoto); e.Template.Parse("LIST_TITLE", string.Format("{0} Lists", e.Page.Owner.DisplayNameOwnership)); e.Template.Parse("LIST_ABSTRACT", "FALSE"); List<List> lists = List.GetLists(e.Core, (User)e.Page.Owner); if (lists.Count > 0) { e.Template.Parse("NOT_EMPTY", "TRUE"); } foreach (List list in lists) { VariableCollection listVariableCollection = e.Template.CreateChild("list_list"); listVariableCollection.Parse("TITLE", list.Title); listVariableCollection.Parse("URI", List.BuildListUri(e.Core, list)); } List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "lists", "Lists" }); page.Owner.ParseBreadCrumbs(breadCrumbParts); }
public static void Show(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Pages", "viewlist"); try { List list = new List(e.Core, (User)e.Page.Owner, e.Slug); Page page = new Page(e.Core, e.Page.Owner, "lists/" + e.Slug); if (!list.Access.Can("VIEW")) { e.Core.Functions.Generate403(); return; } e.Core.Display.ParsePageList(e.Page.Owner, true, page); e.Template.Parse("PAGE_TITLE", list.Title); e.Template.Parse("LIST_TITLE", list.title); e.Template.Parse("LIST_ID", list.ListId.ToString()); e.Template.Parse("LIST_LIST", "TRUE"); if (!string.IsNullOrEmpty(list.Abstract)) { e.Core.Display.ParseBbcode("LIST_ABSTRACT", list.Abstract); } else { e.Template.Parse("LIST_ABSTRACT", "FALSE"); } List<ListItem> listItems = list.GetListItems(); if (listItems.Count > 0) { e.Template.Parse("NOT_EMPTY", "TRUE"); } foreach (ListItem listItem in listItems) { VariableCollection listVariableCollection = e.Template.CreateChild("list_list"); listVariableCollection.Parse("TITLE", listItem.Text); listVariableCollection.Parse("URI", "FALSE"); if (list.Owner.Id == e.Core.LoggedInMemberId) { listVariableCollection.Parse("U_DELETE", e.Core.Hyperlink.BuildRemoveFromListUri(listItem.ListItemId)); } } List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "lists", "Lists" }); breadCrumbParts.Add(new string[] { list.Path, list.Title }); page.Owner.ParseBreadCrumbs(breadCrumbParts); } catch (InvalidListException) { e.Core.Functions.Generate404(); } catch (PageNotFoundException) { e.Core.Functions.Generate404(); } }
public static void ShowAll(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Calendar", "viewcalendarevents"); /* pages */ e.Core.Display.ParsePageList(e.Page.Owner, true); e.Template.Parse("PAGE_TITLE", e.Core.Prose.GetString("EVENTS")); long startTime = e.Core.Tz.GetUnixTimeStamp(new DateTime(e.Core.Tz.Now.Year, e.Core.Tz.Now.Month, e.Core.Tz.Now.Day, 0, 0, 0)); long endTime = startTime + 60 * 60 * 24 * 30; // skip ahead one month into the future Calendar cal = null; try { cal = new Calendar(e.Core, e.Page.Owner); } catch (InvalidCalendarException) { cal = Calendar.Create(e.Core, e.Page.Owner); } List<Event> events = cal.GetEvents(e.Core, e.Page.Owner, startTime, endTime); VariableCollection appointmentDaysVariableCollection = null; DateTime lastDay = e.Core.Tz.Now; e.Template.Parse("U_NEW_EVENT", e.Core.Hyperlink.AppendSid(string.Format("{0}calendar/new-event", e.Page.Owner.AccountUriStub))); if (events.Count > 0) { e.Template.Parse("HAS_EVENTS", "TRUE"); } foreach (Event calendarEvent in events) { DateTime eventDay = calendarEvent.GetStartTime(e.Core.Tz); DateTime eventEnd = calendarEvent.GetEndTime(e.Core.Tz); if (appointmentDaysVariableCollection == null || lastDay.Day != eventDay.Day) { lastDay = eventDay; appointmentDaysVariableCollection = e.Template.CreateChild("appointment_days_list"); appointmentDaysVariableCollection.Parse("DAY", e.Core.Tz.DateTimeToDateString(eventDay, true)); } VariableCollection appointmentVariableCollection = appointmentDaysVariableCollection.CreateChild("appointments_list"); appointmentVariableCollection.Parse("TIME", eventDay.ToShortTimeString() + " - " + eventEnd.ToShortTimeString()); appointmentVariableCollection.Parse("SUBJECT", calendarEvent.Subject); appointmentVariableCollection.Parse("LOCATION", calendarEvent.Location); appointmentVariableCollection.Parse("URI", Event.BuildEventUri(e.Core, calendarEvent)); } }
public static void Show(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Calendar", "viewcalendarevent"); /* pages */ e.Core.Display.ParsePageList(e.Page.Owner, true); Event calendarEvent = null; if (e.ItemId <= 0) { User pageUser = null; if (e.Page.Owner is User) { pageUser = (User)e.Page.Owner; e.Core.LoadUserProfile(~e.ItemId); User birthdayUser = e.Core.PrimitiveCache[~e.ItemId]; calendarEvent = new BirthdayEvent(e.Core, pageUser, birthdayUser, e.Core.Tz.Now.Year); } else { e.Core.Functions.Generate404(); return; } } else { try { calendarEvent = new Event(e.Core, e.ItemId); } catch (InvalidEventException) { e.Core.Functions.Generate404(); return; } } if (e.Core.LoggedInMemberId == e.Page.Owner.Id && e.Page.Owner.GetType() == typeof(User)) { e.Template.Parse("U_NEW_EVENT", e.Core.Hyperlink.BuildAccountSubModuleUri("calendar", "new-event", true, string.Format("year={0}", e.Core.Tz.Now.Year), string.Format("month={0}", e.Core.Tz.Now.Month), string.Format("day={0}", e.Core.Tz.Now.Day))); if (!(calendarEvent is BirthdayEvent)) { e.Template.Parse("U_EDIT_EVENT", e.Core.Hyperlink.BuildAccountSubModuleUri("calendar", "new-event", "edit", e.ItemId, true)); e.Template.Parse("U_DELETE_EVENT", e.Core.Hyperlink.BuildAccountSubModuleUri("calendar", "delete-event", e.ItemId, true)); e.Template.Parse("U_EDIT_PERMISSIONS", Access.BuildAclUri(e.Core, calendarEvent)); } } if (calendarEvent is BirthdayEvent) { } else { if ((!calendarEvent.Access.Can("VIEW")) && ((!e.Core.Session.IsLoggedIn) || (!calendarEvent.IsInvitee(e.Core.Session.LoggedInMember.ItemKey)))) { e.Core.Functions.Generate403(); return; } } e.Template.Parse("PAGE_TITLE", calendarEvent.Subject); e.Template.Parse("SUBJECT", calendarEvent.Subject); e.Template.Parse("LOCATION", calendarEvent.Location); e.Template.Parse("DESCRIPTION", calendarEvent.Description); e.Template.Parse("START_TIME", calendarEvent.GetStartTime(e.Core.Tz).ToString()); e.Template.Parse("END_TIME", calendarEvent.GetEndTime(e.Core.Tz).ToString()); List<string[]> calendarPath = new List<string[]>(); calendarPath.Add(new string[] { "calendar", e.Core.Prose.GetString("CALENDAR") }); //calendarPath.Add(new string[] { "events", "Events" }); calendarPath.Add(new string[] { "event/" + calendarEvent.EventId.ToString(), calendarEvent.Subject }); e.Page.Owner.ParseBreadCrumbs(calendarPath); if (!(calendarEvent is BirthdayEvent)) { if (calendarEvent.Access.Can("COMMENT") || (e.Core.Session.IsLoggedIn && calendarEvent.IsInvitee(e.Core.Session.LoggedInMember.ItemKey))) { e.Template.Parse("CAN_COMMENT", "TRUE"); } e.Core.Display.DisplayComments(e.Template, calendarEvent.owner, calendarEvent); List<EventInvite> invitees = calendarEvent.GetInvites(); List<long> invitedIds = new List<long>(); /* Users to be displayed on the page */ long attendingCount = 0; long invitedCount = 0; long notAttendingCount = 0; long mightAttendCount = 0; long notRespondedCount = 0; int i = 0, j = 0, k = 0, l = 0; foreach (EventInvite ei in invitees) { if (ei.Invited.TypeId == ItemType.GetTypeId(e.Core, typeof(User))) { invitedCount++; switch (ei.InviteStatus) { case EventAttendance.Yes: if (i < 4) { invitedIds.Add(ei.Invited.Id); i++; } attendingCount++; break; case EventAttendance.Maybe: if (j < 4) { invitedIds.Add(ei.Invited.Id); j++; } mightAttendCount++; break; case EventAttendance.No: if (k < 4) { invitedIds.Add(ei.Invited.Id); k++; } notAttendingCount++; break; case EventAttendance.Unknown: if (l < 4) { invitedIds.Add(ei.Invited.Id); l++; } notRespondedCount++; break; } } } e.Core.LoadUserProfiles(invitedIds); e.Template.Parse("ATTENDEES", attendingCount.ToString()); e.Template.Parse("INVITEES", invitedCount.ToString()); e.Template.Parse("NOT_ATTENDING", notAttendingCount.ToString()); e.Template.Parse("MAYBE_ATTENDING", mightAttendCount.ToString()); e.Template.Parse("NOT_RESPONDED", notRespondedCount.ToString()); if (attendingCount > 1) { e.Template.Parse("L_IS_ARE", "is"); e.Template.Parse("L_ATTENDEES", "attendees"); } else { e.Template.Parse("L_IS_ARE", "are"); e.Template.Parse("L_ATTENDEES", "attendee"); } i = j = k = l = 0; foreach (EventInvite ei in invitees) { if (ei.Invited.TypeId == ItemType.GetTypeId(e.Core, typeof(User))) { VariableCollection listVariableCollection = null; switch (ei.InviteStatus) { case EventAttendance.Yes: i++; if (i > 4) { continue; } listVariableCollection = e.Template.CreateChild("attendee_list"); break; case EventAttendance.No: j++; if (j > 4) { continue; } listVariableCollection = e.Template.CreateChild("not_attending_list"); break; case EventAttendance.Maybe: k++; if (k > 4) { continue; } listVariableCollection = e.Template.CreateChild("maybe_attending_list"); break; case EventAttendance.Unknown: l++; if (l > 4) { continue; } listVariableCollection = e.Template.CreateChild("unresponded_list"); break; } User user = e.Core.PrimitiveCache[ei.Invited.Id]; listVariableCollection.Parse("U_PROFILE", user.Uri); listVariableCollection.Parse("USER_DISPLAY_NAME", user.DisplayName); listVariableCollection.Parse("ICON", user.Icon); listVariableCollection.Parse("TILE", user.Tile); } } } }
public static void ShowUCP(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Forum", "ucp"); ForumSettings.ShowForumHeader(e.Core, e.Page); e.Template.Parse("PAGE_TITLE", e.Core.Prose.GetString("USER_CONTROL_PANEL")); if (e.Core.Session.IsLoggedIn && e.Core.Session.LoggedInMember != null) { e.Template.Parse("S_POST", e.Core.Hyperlink.AppendSid(string.Format("{0}forum/ucp", e.Page.Owner.UriStub), true)); try { ForumMember member = new ForumMember(e.Core, e.Page.Owner, e.Core.Session.LoggedInMember); e.Template.Parse("S_SIGNATURE", member.forumSignature); } catch (InvalidForumMemberException) { // create on submit } } else { e.Core.Functions.Generate403(); return; } List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "forum", e.Core.Prose.GetString("FORUM") }); breadCrumbParts.Add(new string[] { "ucp", e.Core.Prose.GetString("USER_CONTROL_PANEL") }); e.Page.Owner.ParseBreadCrumbs(breadCrumbParts); if (!string.IsNullOrEmpty(e.Core.Http.Form["submit"])) { Save(e.Core, e.Page); } }
/// <summary> /// Shows an image /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Event arguments</param> public static void ShowImage(object sender, ShowPPageEventArgs e) { Stopwatch timer; timer = new Stopwatch(); timer.Start(); string photoName = e.Slug; string cdnDomain = e.Core.Settings.CdnStorageBucketDomain; // Square bool iconRequest = false; // 50 bool tileRequest = false; // 100 bool squareRequest = false; // 200 bool highRequest = false; // 400 // Ratio bool tinyRequest = false; // 80 bool thumbnailRequest = false; // 160 bool mobileRequest = false; // 320 bool displayRequest = false; // 640 bool fullRequest = false; // 1280 bool ultraRequest = false; // 2560 // Cover bool coverRequest = false; // 960 bool mobileCoverRequest = false; // 480 bool originalRequest = false; bool retinaModifier = false; string storagePrefix = string.Empty; PictureScale scale = PictureScale.Original; int extensionIndex = photoName.LastIndexOf('.'); //HttpContext.Current.Response.Write("Here " + photoName.Substring(extensionIndex - 3, 3)); //HttpContext.Current.Response.End(); if (photoName.Substring(extensionIndex - 3, 3).Equals("@2x")) { retinaModifier = true; photoName = photoName.Remove(extensionIndex - 3, 3); } //photoName. if (photoName.StartsWith(IconPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 6); if (!retinaModifier) { iconRequest = true; storagePrefix = IconPrefix; scale = PictureScale.Icon; } else { tileRequest = true; storagePrefix = TilePrefix; scale = PictureScale.Tile; } } else if (photoName.StartsWith(TilePrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 6); if (!retinaModifier) { tileRequest = true; storagePrefix = TilePrefix; scale = PictureScale.Tile; } else { squareRequest = true; storagePrefix = SquarePrefix; scale = PictureScale.Square; } } else if (photoName.StartsWith(SquarePrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 8); if (!retinaModifier) { squareRequest = true; storagePrefix = SquarePrefix; scale = PictureScale.Square; } else { highRequest = true; storagePrefix = HighPrefix; scale = PictureScale.High; } } else if (photoName.StartsWith(HighPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 6); highRequest = true; storagePrefix = HighPrefix; scale = PictureScale.High; // There is no retina version of high, it is the retina version } else if (photoName.StartsWith(TinyPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 6); if (!retinaModifier) { tinyRequest = true; storagePrefix = TinyPrefix; scale = PictureScale.Tiny; } else { thumbnailRequest = true; storagePrefix = ThumbnailPrefix; scale = PictureScale.Thumbnail; } } else if (photoName.StartsWith(ThumbnailPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 7); if (!retinaModifier) { thumbnailRequest = true; storagePrefix = ThumbnailPrefix; scale = PictureScale.Thumbnail; } else { mobileRequest = true; storagePrefix = MobilePrefix; scale = PictureScale.Mobile; } } else if (photoName.StartsWith(MobilePrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 8); if (!retinaModifier) { mobileRequest = true; storagePrefix = MobilePrefix; scale = PictureScale.Mobile; } else { displayRequest = true; storagePrefix = DisplayPrefix; scale = PictureScale.Display; } } else if (photoName.StartsWith(DisplayPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 9); if (!retinaModifier) { displayRequest = true; storagePrefix = DisplayPrefix; scale = PictureScale.Display; } else { fullRequest = true; storagePrefix = FullPrefix; scale = PictureScale.Full; } } else if (photoName.StartsWith(FullPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 6); if (!retinaModifier) { fullRequest = true; storagePrefix = FullPrefix; scale = PictureScale.Full; } else { ultraRequest = true; storagePrefix = UltraPrefix; scale = PictureScale.Ultra; } } else if (photoName.StartsWith(UltraPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 7); ultraRequest = true; storagePrefix = UltraPrefix; scale = PictureScale.Ultra; } else if (photoName.StartsWith(CoverPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 7); coverRequest = true; storagePrefix = CoverPrefix; scale = PictureScale.Cover; } else if (photoName.StartsWith(MobileCoverPrefix, StringComparison.Ordinal)) { photoName = photoName.Remove(0, 8); if (!retinaModifier) { mobileCoverRequest = true; storagePrefix = MobileCoverPrefix; scale = PictureScale.MobileCover; } else { coverRequest = true; storagePrefix = CoverPrefix; scale = PictureScale.Cover; } } else { originalRequest = true; scale = PictureScale.Original; } string[] paths = photoName.Split('/'); try { GalleryItem galleryItem; if (Gallery.GetNameFromPath(photoName) == "_" + e.Page.Owner.Key + ".png" && e.Page.Owner is User) { galleryItem = new GalleryItem(e.Core, e.Page.Owner, ((User)e.Page.Owner).UserInfo.DisplayPictureId); } else if (Gallery.GetNameFromPath(photoName) == "_" + e.Page.Owner.Key + ".png" && e.Page.Owner is UserGroup) { galleryItem = new GalleryItem(e.Core, e.Page.Owner, ((UserGroup)e.Page.Owner).GroupInfo.DisplayPictureId); } else if (Gallery.GetNameFromPath(photoName) == "_" + e.Page.Owner.Key + ".png" && e.Page.Owner is ApplicationEntry) { galleryItem = new GalleryItem(e.Core, e.Page.Owner, ((ApplicationEntry)e.Page.Owner).GalleryIcon); } else { galleryItem = new GalleryItem(e.Core, e.Page.Owner, photoName); } Gallery gallery = null; if (galleryItem.ParentId > 0) { gallery = new Gallery(e.Core, e.Page.Owner, galleryItem.ParentId); } else { gallery = new Gallery(e.Core, e.Page.Owner); } // Do not bother with extra queries when it's a public CDN request if ((!e.Core.Settings.UseCdn) || originalRequest) { if (!gallery.Access.Can("VIEW_ITEMS")) { e.Core.Functions.Generate403(); return; } if (originalRequest) { if (!gallery.Access.Can("DOWNLOAD_ORIGINAL")) { e.Core.Functions.Generate403(); return; } } } e.Core.Http.SetToImageResponse(galleryItem.ContentType, galleryItem.GetCreatedDate(new UnixTime(e.Core, UnixTime.UTC_CODE))); /* we assume exists */ /* process */ if (!e.Core.Storage.IsCloudStorage) { FileInfo fi = new FileInfo(e.Core.Storage.RetrieveFilePath(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, "_storage"), galleryItem.StoragePath)); e.Core.Http.SetToImageResponse(galleryItem.ContentType, fi.LastWriteTimeUtc); } bool scaleExists = false; if (scale != PictureScale.Original) { switch (scale) { case PictureScale.Icon: scaleExists = galleryItem.IconExists; cdnDomain = e.Core.Settings.CdnIconBucketDomain; break; case PictureScale.Tile: scaleExists = galleryItem.TileExists; cdnDomain = e.Core.Settings.CdnTileBucketDomain; break; case PictureScale.Square: scaleExists = galleryItem.SquareExists; cdnDomain = e.Core.Settings.CdnSquareBucketDomain; break; case PictureScale.High: scaleExists = galleryItem.HighExists; cdnDomain = e.Core.Settings.CdnHighBucketDomain; break; case PictureScale.Tiny: scaleExists = galleryItem.TinyExists; cdnDomain = e.Core.Settings.CdnTinyBucketDomain; break; case PictureScale.Thumbnail: scaleExists = galleryItem.ThumbnailExists; cdnDomain = e.Core.Settings.CdnThumbBucketDomain; break; case PictureScale.Mobile: scaleExists = galleryItem.MobileExists; cdnDomain = e.Core.Settings.CdnMobileBucketDomain; break; case PictureScale.Display: scaleExists = galleryItem.DisplayExists; cdnDomain = e.Core.Settings.CdnDisplayBucketDomain; break; case PictureScale.Full: scaleExists = galleryItem.FullExists; cdnDomain = e.Core.Settings.CdnFullBucketDomain; break; case PictureScale.Ultra: scaleExists = galleryItem.UltraExists; cdnDomain = e.Core.Settings.CdnUltraBucketDomain; break; case PictureScale.Cover: scaleExists = galleryItem.CoverExists; cdnDomain = e.Core.Settings.CdnCoverBucketDomain; break; case PictureScale.MobileCover: scaleExists = galleryItem.MobileCoverExists; cdnDomain = e.Core.Settings.CdnMobileCoverBucketDomain; break; } if (!scaleExists) { if (scale == PictureScale.MobileCover && e.Core.Storage.IsCloudStorage && !e.Core.Settings.UseCdn) { //HttpContext.Current.Response.Write("Checking for scale: " + timer.ElapsedMilliseconds.ToString() + "\n"); } scaleExists = e.Core.Storage.FileExists(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, storagePrefix), galleryItem.StoragePath); if (scaleExists) { switch (scale) { case PictureScale.Icon: galleryItem.IconExists = true; break; case PictureScale.Tile: galleryItem.TileExists = true; break; case PictureScale.Square: galleryItem.SquareExists = true; break; case PictureScale.High: galleryItem.HighExists = true; break; case PictureScale.Tiny: galleryItem.TinyExists = true; break; case PictureScale.Thumbnail: galleryItem.ThumbnailExists = true; break; case PictureScale.Mobile: galleryItem.MobileExists = true; break; case PictureScale.Display: galleryItem.DisplayExists = true; break; case PictureScale.Full: galleryItem.FullExists = true; break; case PictureScale.Ultra: galleryItem.UltraExists = true; break; case PictureScale.Cover: galleryItem.CoverExists = true; break; case PictureScale.MobileCover: galleryItem.MobileCoverExists = true; break; } galleryItem.Update(); } } if (!scaleExists) { bool flag; if (scale == PictureScale.MobileCover && e.Core.Storage.IsCloudStorage && !e.Core.Settings.UseCdn) { //HttpContext.Current.Response.Write("Scale not found: " + timer.ElapsedMilliseconds.ToString() + "\n"); } switch (scale) { case PictureScale.Icon: case PictureScale.Tile: case PictureScale.Square: case PictureScale.High: flag = CreateScaleWithSquareRatio(e.Core, galleryItem, galleryItem.StoragePath, storagePrefix, (int)scale, (int)scale); if (flag) { switch (scale) { case PictureScale.Icon: galleryItem.IconExists = true; break; case PictureScale.Tile: galleryItem.TileExists = true; break; case PictureScale.Square: galleryItem.SquareExists = true; break; case PictureScale.High: galleryItem.HighExists = true; break; } } break; case PictureScale.Tiny: case PictureScale.Thumbnail: case PictureScale.Mobile: case PictureScale.Display: case PictureScale.Full: case PictureScale.Ultra: flag = CreateScaleWithRatioPreserved(e.Core, galleryItem, galleryItem.StoragePath, storagePrefix, (int)scale, (int)scale); if (flag) { switch (scale) { case PictureScale.Tiny: galleryItem.TinyExists = true; break; case PictureScale.Thumbnail: galleryItem.ThumbnailExists = true; break; case PictureScale.Mobile: galleryItem.MobileExists = true; break; case PictureScale.Display: galleryItem.DisplayExists = true; break; case PictureScale.Full: galleryItem.FullExists = true; break; case PictureScale.Ultra: galleryItem.UltraExists = true; break; } } break; case PictureScale.Cover: CreateCoverPhoto(e.Core, galleryItem, galleryItem.StoragePath, false); galleryItem.CoverExists = true; break; case PictureScale.MobileCover: if (e.Core.Storage.IsCloudStorage && !e.Core.Settings.UseCdn) { //HttpContext.Current.Response.Write("About to create cover photo: " + timer.ElapsedMilliseconds.ToString() + "\n"); } CreateCoverPhoto(e.Core, galleryItem, galleryItem.StoragePath, true); galleryItem.MobileCoverExists = true; break; } galleryItem.Update(); } if (e.Core.Storage.IsCloudStorage) { if (e.Core.Settings.UseCdn) { string imageUri = e.Core.Http.DefaultProtocol + cdnDomain + "/" + galleryItem.StoragePath; e.Core.Http.Redirect(imageUri); } else { if (scale == PictureScale.MobileCover) { //HttpContext.Current.Response.Write("About to get file uri: " + timer.ElapsedMilliseconds.ToString() + "\n"); } string imageUri = e.Core.Storage.RetrieveFileUri(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, storagePrefix), galleryItem.storagePath, galleryItem.ContentType, "picture" + GetFileExtension(galleryItem.ContentType)); //if (scale != PictureScale.MobileCover) { e.Core.Http.Redirect(imageUri); } /*else { HttpContext.Current.Response.ContentType = "text/plain"; HttpContext.Current.Response.Write("End: " + timer.ElapsedMilliseconds.ToString() + "\n"); HttpContext.Current.Response.Write("I made it here\n"); }*/ } } else { if (galleryItem.ContentType == "image/png") { MemoryStream newStream = new MemoryStream(); Stream image = e.Core.Storage.RetrieveFile(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, storagePrefix), galleryItem.StoragePath); Image hoi = Image.FromStream(image); hoi.Save(newStream, hoi.RawFormat); e.Core.Http.WriteStream(newStream); } else { string imagePath = e.Core.Storage.RetrieveFilePath(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, storagePrefix), galleryItem.storagePath); e.Core.Http.TransmitFile(imagePath); } } } else { if (e.Core.Storage.IsCloudStorage) { /*if (e.Core.Settings.UseCdn) { string imageUri = "http://" + e.Core.Settings.CdnStorageBucketDomain + "/" + galleryItem.StoragePath; e.Core.Http.Redirect(imageUri); } else {*/ string imageUri = e.Core.Storage.RetrieveFileUri(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, "_storage"), galleryItem.storagePath, galleryItem.ContentType, "picture" + GetFileExtension(galleryItem.ContentType)); e.Core.Http.Redirect(imageUri); //} } else { if (galleryItem.ContentType == "image/png") { MemoryStream newStream = new MemoryStream(); Stream image = e.Core.Storage.RetrieveFile(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, "_storage"), galleryItem.StoragePath); Image hoi = Image.FromStream(image); hoi.Save(newStream, hoi.RawFormat); e.Core.Http.WriteStream(newStream); } else { string imagePath = e.Core.Storage.RetrieveFilePath(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, "_storage"), galleryItem.storagePath); e.Core.Http.TransmitFile(imagePath); } } } } catch (GalleryItemNotFoundException) { e.Core.Functions.Generate404(); return; } if (e.Db != null) { e.Db.CloseConnection(); } e.Core.Http.End(); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void Show(object sender, ShowPPageEventArgs e) { e.Template.SetTemplate("Gallery", "viewphoto"); char[] trimStartChars = { '.', '/' }; try { GalleryItem galleryItem = new GalleryItem(e.Core, e.Page.Owner, e.Slug); Gallery gallery = null; if (galleryItem.parentId > 0) { gallery = new Gallery(e.Core, galleryItem.parentId); } else { gallery = new Gallery(e.Core, e.Page.Owner); } if (!gallery.Access.Can("VIEW_ITEMS")) { e.Core.Functions.Generate403(); return; } if (gallery.Access.Can("EDIT_ITEMS")) { e.Template.Parse("S_CAN_EDIT", "TRUE"); } if (gallery.Access.Can("DELETE_ITEMS")) { e.Template.Parse("S_CAN_DELETE", "TRUE"); } /* pages */ e.Core.Display.ParsePageList(e.Page.Owner, true); galleryItem.Viewed(e.Core.Session.LoggedInMember); ItemView.LogView(e.Core, galleryItem); /* check gallery item has width and height information saved */ if (galleryItem.ItemWidth <= 0 || galleryItem.ItemHeight <= 0) { Stream fs = e.Core.Storage.RetrieveFile(e.Core.Storage.PathCombine(e.Core.Settings.StorageBinUserFilesPrefix, "_storage"), galleryItem.StoragePath); Image image = Image.FromStream(fs); int width = image.Width; int height = image.Height; galleryItem.ItemWidth = width; galleryItem.ItemHeight = height; galleryItem.Update(); } Size hdSize = galleryItem.GetSize(new Size(1920, 1080)); e.Core.Meta.Add("og:site_name", e.Core.Settings.SiteTitle); e.Core.Meta.Add("twitter:card", "photo"); if (!string.IsNullOrEmpty(e.Core.Settings.TwitterName)) { e.Core.Meta.Add("twitter:site", e.Core.Settings.TwitterName); } if (galleryItem.Owner is User && !string.IsNullOrEmpty(((User)galleryItem.Owner).UserInfo.TwitterUserName)) { e.Core.Meta.Add("twitter:creator", ((User)galleryItem.Owner).UserInfo.TwitterUserName); } e.Core.Meta.Add("twitter:image:src", e.Core.Hyperlink.StripSid(e.Core.Hyperlink.AppendCurrentSid(galleryItem.DisplayUri))); if (!string.IsNullOrEmpty(galleryItem.ItemTitle)) { e.Core.Meta.Add("twitter:title", galleryItem.ItemTitle); e.Core.Meta.Add("og:title", galleryItem.ItemTitle); } else { e.Core.Meta.Add("og:title", galleryItem.Path); } e.Core.Meta.Add("og:type", "boxsocialapp:photo"); e.Core.Meta.Add("og:url", e.Core.Hyperlink.StripSid(e.Core.Hyperlink.AppendCurrentSid(galleryItem.Uri))); e.Core.Meta.Add("og:image", e.Core.Hyperlink.StripSid(e.Core.Hyperlink.AppendCurrentSid(galleryItem.DisplayUri))); e.Page.CanonicalUri = galleryItem.Uri; e.Template.Parse("PAGE_TITLE", galleryItem.ItemTitle); e.Template.Parse("PHOTO_TITLE", galleryItem.ItemTitle); e.Template.Parse("PHOTO_ID", galleryItem.ItemId.ToString()); e.Core.Display.ParseBbcode("PHOTO_DESCRIPTION", e.Core.Bbcode.FromStatusCode(galleryItem.ItemAbstract)); e.Template.Parse("HD_WIDTH", hdSize.Width); e.Template.Parse("HD_HEIGHT", hdSize.Height); e.Template.Parse("PHOTO_COMMENTS", e.Core.Functions.LargeIntegerToString(galleryItem.Comments)); e.Template.Parse("U_MARK_DISPLAY_PIC", galleryItem.MakeDisplayPicUri); e.Template.Parse("U_MARK_GALLERY_COVER", galleryItem.SetGalleryCoverUri); e.Template.Parse("U_ROTATE_LEFT", galleryItem.RotateLeftUri); e.Template.Parse("U_ROTATE_RIGHT", galleryItem.RotateRightUri); e.Template.Parse("U_TAG", galleryItem.TagUri); e.Template.Parse("PHOTO_MOBILE", galleryItem.MobileUri); e.Template.Parse("PHOTO_DISPLAY", galleryItem.DisplayUri); e.Template.Parse("PHOTO_FULL", galleryItem.FullUri); e.Template.Parse("PHOTO_ULTRA", galleryItem.UltraUri); if (gallery.Access.Can("EDIT_ITEMS")) { e.Template.Parse("U_EDIT", galleryItem.EditUri); } if (gallery.Access.Can("DELETE_ITEMS")) { e.Template.Parse("U_DELETE", galleryItem.DeleteUri); } if (gallery.Access.Can("CREATE_ITEMS")) { e.Template.Parse("U_UPLOAD_PHOTO", gallery.PhotoUploadUri); } if (gallery.Access.Can("DOWNLOAD_ORIGINAL")) { e.Template.Parse("U_VIEW_FULL", galleryItem.OriginalUri); } switch (galleryItem.Classification) { case Classifications.Everyone: e.Template.Parse("PAGE_CLASSIFICATION", "Suitable for Everyone"); e.Template.Parse("I_PAGE_CLASSIFICATION", "rating_e.png"); break; case Classifications.Mature: e.Template.Parse("PAGE_CLASSIFICATION", "Suitable for Mature Audiences 15+"); e.Template.Parse("I_PAGE_CLASSIFICATION", "rating_15.png"); break; case Classifications.Restricted: e.Template.Parse("PAGE_CLASSIFICATION", "Retricted to Audiences 18+"); e.Template.Parse("I_PAGE_CLASSIFICATION", "rating_18.png"); break; } if (galleryItem.License != null) { if (!string.IsNullOrEmpty(galleryItem.License.Title)) { e.Template.Parse("PAGE_LICENSE", galleryItem.License.Title); } if (!string.IsNullOrEmpty(galleryItem.License.Icon)) { e.Template.Parse("I_PAGE_LICENSE", galleryItem.License.Icon); } if (!string.IsNullOrEmpty(galleryItem.License.Link)) { e.Template.Parse("U_PAGE_LICENSE", galleryItem.License.Link); } } Display.RatingBlock(galleryItem.ItemRating, e.Template, galleryItem.ItemKey); e.Template.Parse("ID", galleryItem.ItemId.ToString()); e.Template.Parse("TYPEID", galleryItem.ItemKey.TypeId.ToString()); //template.Parse("U_EDIT", ZzUri.BuildPhotoEditUri((long)photoTable.Rows[0]["gallery_item_id"]))); if (gallery.Access.IsPublic()) { e.Template.Parse("IS_PUBLIC", "TRUE"); if (galleryItem.Info.SharedTimes > 0) { e.Template.Parse("SHARES", string.Format(" {0:d}", galleryItem.Info.SharedTimes)); } } else { e.Template.Parse("IS_PUBLIC", "FALSE"); } if (gallery.Access.Can("COMMENT_ITEMS")) { e.Template.Parse("CAN_COMMENT", "TRUE"); } e.Core.Display.DisplayComments(e.Template, e.Page.Owner, galleryItem); string pageUri = string.Format("{0}gallery/{1}", HttpUtility.HtmlEncode(e.Page.Owner.UriStub), e.Slug); e.Core.Display.ParsePagination("COMMENT_PAGINATION", pageUri, 10, galleryItem.Comments); List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "gallery", e.Core.Prose.GetString("GALLERY") }); if (gallery.Parents != null) { foreach (ParentTreeNode node in gallery.Parents.Nodes) { breadCrumbParts.Add(new string[] { node.ParentSlug, node.ParentTitle }); } } breadCrumbParts.Add(new string[] { gallery.Path, gallery.GalleryTitle }); if (!string.IsNullOrEmpty(galleryItem.ItemTitle)) { breadCrumbParts.Add(new string[] { galleryItem.Path, galleryItem.ItemTitle }); } else { breadCrumbParts.Add(new string[] { galleryItem.Path, galleryItem.Path }); } e.Page.Owner.ParseBreadCrumbs(breadCrumbParts); List<UserTag> tags = UserTag.GetTags(e.Core, galleryItem); if (tags.Count > 0) { e.Template.Parse("HAS_USER_TAGS", "TRUE"); } e.Template.Parse("TAG_COUNT", tags.Count.ToString()); int i = 0; foreach (UserTag tag in tags) { VariableCollection tagsVariableCollection = e.Template.CreateChild("user_tags"); tagsVariableCollection.Parse("INDEX", i.ToString()); tagsVariableCollection.Parse("TAG_ID", tag.TagId); tagsVariableCollection.Parse("TAG_X", (tag.TagLocation.X / 1000 - 50).ToString()); tagsVariableCollection.Parse("TAG_Y", (tag.TagLocation.Y / 1000 - 50).ToString()); tagsVariableCollection.Parse("DISPLAY_NAME", tag.TaggedMember.DisplayName); tagsVariableCollection.Parse("U_MEMBER", tag.TaggedMember.Uri); tagsVariableCollection.Parse("TAG_USER_ID", tag.TaggedMember.Id.ToString()); } if (galleryItem.NextItem != null) { e.Template.Parse("U_NEXT_PHOTO", galleryItem.NextItem.Uri); } if (galleryItem.PreviousItem != null) { e.Template.Parse("U_PREVIOUS_PHOTO", galleryItem.PreviousItem.Uri); } /*string path1 = TPage.GetStorageFilePath(galleryItem.StoragePath); string path2 = e.Core.Storage.RetrieveFilePath(string.Empty, galleryItem.StoragePath); string path3 = e.Core.Storage.RetrieveFilePath("_thumb", galleryItem.StoragePath); HttpContext.Current.Response.Write(path1 + "<br />" + path2 + "<br />" + path3);*/ } catch (GalleryItemNotFoundException) { e.Core.Functions.Generate404(); return; } }
public static void ShowMore(object sender, ShowPPageEventArgs e) { char[] trimStartChars = { '.', '/' }; string galleryPath = e.Slug; if (galleryPath != null) { galleryPath = galleryPath.TrimEnd('/').TrimStart(trimStartChars); } else { galleryPath = ""; } Gallery gallery; if (galleryPath != "") { try { gallery = new Gallery(e.Core, e.Page.Owner, galleryPath); if (!gallery.Access.Can("VIEW")) { e.Core.Functions.Generate403(); return; } } catch (InvalidGalleryException) { return; } } else { gallery = new Gallery(e.Core, e.Page.Owner); } Template template = new Template(Assembly.GetExecutingAssembly(), "pane_photo"); template.Medium = e.Core.Template.Medium; template.SetProse(e.Core.Prose); bool moreContent = false; long lastId = 0; List<GalleryItem> galleryItems = gallery.GetItems(e.Core, e.Page.TopLevelPageNumber, 12, e.Page.TopLevelPageOffset); int i = 0; foreach (GalleryItem galleryItem in galleryItems) { VariableCollection galleryVariableCollection = template.CreateChild("photo_list"); galleryVariableCollection.Parse("TITLE", galleryItem.ItemTitle); galleryVariableCollection.Parse("PHOTO_URI", Gallery.BuildPhotoUri(e.Core, e.Page.Owner, galleryItem.ParentPath, galleryItem.Path)); galleryVariableCollection.Parse("COMMENTS", e.Core.Functions.LargeIntegerToString(galleryItem.Comments)); galleryVariableCollection.Parse("VIEWS", e.Core.Functions.LargeIntegerToString(galleryItem.ItemViews)); galleryVariableCollection.Parse("INDEX", i.ToString()); galleryVariableCollection.Parse("ID", galleryItem.Id.ToString()); galleryVariableCollection.Parse("TYPE_ID", galleryItem.ItemKey.TypeId.ToString()); galleryVariableCollection.Parse("ICON", galleryItem.IconUri); galleryVariableCollection.Parse("TILE", galleryItem.TileUri); galleryVariableCollection.Parse("SQUARE", galleryItem.SquareUri); galleryVariableCollection.Parse("TINY", galleryItem.TinyUri); galleryVariableCollection.Parse("THUMBNAIL", galleryItem.ThumbnailUri); Display.RatingBlock(galleryItem.ItemRating, galleryVariableCollection, galleryItem.ItemKey); if (galleryItem.Info.Likes > 0) { galleryVariableCollection.Parse("LIKES", string.Format(" {0:d}", galleryItem.Info.Likes)); galleryVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", galleryItem.Info.Dislikes)); } switch (i % 3) { case 0: galleryVariableCollection.Parse("ABC", "a"); break; case 1: galleryVariableCollection.Parse("ABC", "b"); break; case 2: galleryVariableCollection.Parse("ABC", "c"); break; } switch (i % 4) { case 0: galleryVariableCollection.Parse("ABCD", "a"); break; case 1: galleryVariableCollection.Parse("ABCD", "b"); break; case 2: galleryVariableCollection.Parse("ABCD", "c"); break; case 3: galleryVariableCollection.Parse("ABCD", "d"); break; } lastId = galleryItem.Id; i++; } if (e.Core.TopLevelPageNumber * 12 < gallery.Items) { moreContent = true; } string loadMoreUri = Gallery.BuildGalleryUri(e.Core, e.Page.Owner, galleryPath) + "?p=" + (e.Core.TopLevelPageNumber + 1) + "&o=" + lastId; e.Core.Response.SendRawText(moreContent ? loadMoreUri : "noMoreContent", template.ToString()); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void Show(object sender, ShowPPageEventArgs e) { if (e.Core.ResponseFormat == ResponseFormats.Xml) { ShowMore(sender, e); return; } e.Template.SetTemplate("Gallery", "viewgallery"); /*GallerySettings settings; try { settings = new GallerySettings(e.Core, e.Page.Owner); } catch (InvalidGallerySettingsException) { GallerySettings.Create(e.Core, e.Page.Owner); settings = new GallerySettings(e.Core, e.Page.Owner); }*/ char[] trimStartChars = { '.', '/' }; string galleryPath = e.Slug; if (galleryPath != null) { galleryPath = galleryPath.TrimEnd('/').TrimStart(trimStartChars); } else { galleryPath = ""; } Gallery gallery; if (galleryPath != "") { try { gallery = new Gallery(e.Core, e.Page.Owner, galleryPath); try { if (!gallery.Access.Can("VIEW")) { e.Core.Functions.Generate403(); return; } } catch (InvalidAccessControlPermissionException) { } try { if (gallery.Access.Can("CREATE_ITEMS")) { e.Template.Parse("U_UPLOAD_PHOTO", gallery.PhotoUploadUri); } if (gallery.Access.Can("CREATE_CHILD")) { e.Template.Parse("U_NEW_GALLERY", gallery.NewGalleryUri); } } catch (InvalidAccessControlPermissionException) { } } catch (InvalidGalleryException) { e.Core.Functions.Generate404(); return; } } else { gallery = new Gallery(e.Core, e.Page.Owner); try { if (gallery.Settings.AllowItemsAtRoot && gallery.access.Can("CREATE_ITEMS")) { e.Template.Parse("U_UPLOAD_PHOTO", gallery.PhotoUploadUri); } if (gallery.Access.Can("CREATE_CHILD")) { e.Template.Parse("U_NEW_GALLERY", gallery.NewGalleryUri); } } catch (InvalidAccessControlPermissionException) { } } /* pages */ e.Core.Display.ParsePageList(e.Page.Owner, true); if (gallery.Id == 0) { e.Template.Parse("PAGE_TITLE", gallery.owner.DisplayNameOwnership + " Gallery"); e.Template.Parse("GALLERY_TITLE", gallery.owner.DisplayNameOwnership + " Gallery"); } else { e.Template.Parse("PAGE_TITLE", gallery.GalleryTitle); e.Template.Parse("GALLERY_TITLE", gallery.GalleryTitle); } List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "gallery", e.Core.Prose.GetString("GALLERY") }); if (gallery.Parents != null) { foreach (ParentTreeNode ptn in gallery.Parents.Nodes) { breadCrumbParts.Add(new string[] { ptn.ParentSlug.ToString(), ptn.ParentTitle }); } } if (gallery.Id > 0) { breadCrumbParts.Add(new string[] { gallery.Path, gallery.GalleryTitle }); } e.Page.Owner.ParseBreadCrumbs(breadCrumbParts); List<Gallery> galleries = gallery.GetGalleries(); List<IPermissibleItem> iPermissibleItems = new List<IPermissibleItem>(); if (galleries.Count > 0) { foreach (Gallery galleryGallery in galleries) { iPermissibleItems.Add(galleryGallery); } e.Core.AcessControlCache.CacheGrants(iPermissibleItems); e.Template.Parse("GALLERIES", galleries.Count.ToString()); foreach (Gallery galleryGallery in galleries) { if (!galleryGallery.Access.Can("VIEW")) { continue; } VariableCollection galleryVariableCollection = e.Template.CreateChild("gallery_list"); galleryVariableCollection.Parse("TITLE", galleryGallery.GalleryTitle); galleryVariableCollection.Parse("URI", Gallery.BuildGalleryUri(e.Core, e.Page.Owner, galleryGallery.FullPath)); galleryVariableCollection.Parse("ID", galleryGallery.Id.ToString()); galleryVariableCollection.Parse("TYPE_ID", galleryGallery.ItemKey.TypeId.ToString()); galleryVariableCollection.Parse("ICON", galleryGallery.IconUri); galleryVariableCollection.Parse("TILE", galleryGallery.TileUri); galleryVariableCollection.Parse("SQUARE", galleryGallery.SquareUri); galleryVariableCollection.Parse("TINY", galleryGallery.TinyUri); galleryVariableCollection.Parse("THUMBNAIL", galleryGallery.ThumbnailUri); //galleryVariableCollection.Parse("U_EDIT", ); //e.Core.Display.ParseBbcode(galleryVariableCollection, "ABSTRACT", galleryGallery.GalleryAbstract); if (galleryGallery.Info.Likes > 0) { galleryVariableCollection.Parse("LIKES", string.Format(" {0:d}", galleryGallery.Info.Likes)); galleryVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", galleryGallery.Info.Dislikes)); } long items = galleryGallery.Items; if (items == 1) { galleryVariableCollection.Parse("ITEMS", string.Format(e.Core.Prose.GetString("_ITEM"), e.Core.Functions.LargeIntegerToString(items))); } else { galleryVariableCollection.Parse("ITEMS", string.Format(e.Core.Prose.GetString("_ITEMS"), e.Core.Functions.LargeIntegerToString(items))); } } } bool moreContent = false; long lastId = 0; bool first = true; long galleryComments = 0; if (gallery.Items > 0) { List<GalleryItem> galleryItems = gallery.GetItems(e.Core, e.Page.TopLevelPageNumber, 12, e.Page.TopLevelPageOffset); e.Template.Parse("PHOTOS", galleryItems.Count.ToString()); int i = 0; foreach (GalleryItem galleryItem in galleryItems) { if (first) { first = false; e.Template.Parse("NEWEST_ID", galleryItem.Id.ToString()); } VariableCollection galleryVariableCollection = e.Template.CreateChild("photo_list"); galleryVariableCollection.Parse("TITLE", galleryItem.ItemTitle); galleryVariableCollection.Parse("PHOTO_URI", Gallery.BuildPhotoUri(e.Core, e.Page.Owner, galleryItem.ParentPath, galleryItem.Path)); galleryVariableCollection.Parse("COMMENTS", e.Core.Functions.LargeIntegerToString(galleryItem.Comments)); galleryVariableCollection.Parse("VIEWS", e.Core.Functions.LargeIntegerToString(galleryItem.ItemViews)); galleryVariableCollection.Parse("INDEX", i.ToString()); galleryVariableCollection.Parse("ID", galleryItem.Id.ToString()); galleryVariableCollection.Parse("TYPE_ID", galleryItem.ItemKey.TypeId.ToString()); galleryVariableCollection.Parse("ICON", galleryItem.IconUri); galleryVariableCollection.Parse("TILE", galleryItem.TileUri); galleryVariableCollection.Parse("SQUARE", galleryItem.SquareUri); galleryVariableCollection.Parse("TINY", galleryItem.TinyUri); galleryVariableCollection.Parse("THUMBNAIL", galleryItem.ThumbnailUri); Display.RatingBlock(galleryItem.ItemRating, galleryVariableCollection, galleryItem.ItemKey); if (galleryItem.Info.Likes > 0) { galleryVariableCollection.Parse("LIKES", string.Format(" {0:d}", galleryItem.Info.Likes)); galleryVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", galleryItem.Info.Dislikes)); } switch (i % 3) { case 0: galleryVariableCollection.Parse("ABC", "a"); break; case 1: galleryVariableCollection.Parse("ABC", "b"); break; case 2: galleryVariableCollection.Parse("ABC", "c"); break; } switch (i % 4) { case 0: galleryVariableCollection.Parse("ABCD", "a"); break; case 1: galleryVariableCollection.Parse("ABCD", "b"); break; case 2: galleryVariableCollection.Parse("ABCD", "c"); break; case 3: galleryVariableCollection.Parse("ABCD", "d"); break; } lastId = galleryItem.Id; galleryComments += galleryItem.Comments; i++; } if (galleryItems.Count > 0) { e.Template.Parse("S_RATEBAR", "TRUE"); } e.Core.Display.ParsePagination(Gallery.BuildGalleryUri(e.Core, e.Page.Owner, galleryPath), 0, 12, gallery.Items); if (e.Core.TopLevelPageNumber * 12 < gallery.Items) { moreContent = true; } e.Template.Parse("U_NEXT_PAGE", Gallery.BuildGalleryUri(e.Core, e.Page.Owner, galleryPath) + "?p=" + (e.Core.TopLevelPageNumber + 1) + "&o=" + lastId); } if (gallery.Id > 0) { e.Template.Parse("ALBUM_COMMENTS", "TRUE"); if (gallery.Access.Can("COMMENT")) { e.Template.Parse("CAN_COMMENT", "TRUE"); } e.Core.Display.DisplayComments(e.Template, e.Page.Owner, e.Page.CommentPageNumber, gallery); e.Core.Display.ParsePagination("COMMENT_PAGINATION", Gallery.BuildGalleryUri(e.Core, e.Page.Owner, galleryPath), 1, 10, gallery.Info.Comments); } e.Template.Parse("COMMENTS", gallery.Comments.ToString()); e.Template.Parse("L_COMMENTS", string.Format("{0} Comments in gallery", galleryComments)); e.Template.Parse("U_COMMENTS", e.Core.Hyperlink.BuildGalleryCommentsUri(e.Page.Owner, galleryPath)); }
public static void Show(object sender, ShowPPageEventArgs e) { e.SetTemplate("viewproject"); Project project = null; try { project = new Project(e.Core, e.Page.Owner, e.Slug); } catch (InvalidProjectException) { e.Core.Functions.Generate404(); } e.Template.Parse("PROJECT_TITLE", project.Title); }