예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
파일: List.cs 프로젝트: smithydll/boxsocial
        //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);
        }
예제 #7
0
파일: List.cs 프로젝트: smithydll/boxsocial
        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();
            }
        }
예제 #8
0
        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));
            }
        }
예제 #9
0
        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);
                    }
                }
            }
        }
예제 #10
0
        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);
            }
        }
예제 #11
0
        /// <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();
        }
예제 #12
0
        /// <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;
            }
        }
예제 #13
0
        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());
        }
예제 #14
0
        /// <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));
        }
예제 #15
0
        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);
        }