コード例 #1
0
    public void discussionView_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        switch (e.Item.ItemType)
        {
        case ListItemType.AlternatingItem:
        case ListItemType.Item:
        case ListItemType.SelectedItem:
        case ListItemType.EditItem:
            int  id        = int.Parse(e.Item.Cells[(int)Cells.id].Text);
            bool canedit   = bool.Parse(e.Item.Cells[(int)Cells.canedit].Text);
            bool candelete = bool.Parse(e.Item.Cells[(int)Cells.candelete].Text);

            HtmlAnchor linkEdit = (HtmlAnchor)e.Item.FindControl("linkEdit");
            linkEdit.Visible = canedit;
            linkEdit.HRef    = string.Format("DiscussionPost.aspx?did={0}&id={1}&ReturnUrl={2}",
                                             DiscussionId, id, Renderer.UrlEncode(ReturnUrl));

            LinkButton linkDelete = (LinkButton)e.Item.FindControl("linkDelete");
            linkDelete.CommandArgument = id.ToString();
            linkDelete.Attributes.Add("onclick", "return confirm('Are you sure you want to delete this post?');");
            linkDelete.Visible = candelete;

            TransitDiscussion d = SessionManager.GetPrivateInstance <TransitDiscussion, int>(
                DiscussionId, SessionManager.DiscussionService.GetDiscussionById);
            HyperLink linkMovePost = (HyperLink)e.Item.FindControl("linkMovePost");
            linkMovePost.Visible     = d.CanUpdate;
            linkMovePost.NavigateUrl = string.Format("DiscussionPostMove.aspx?id={0}", id);

            break;
        }
    }
コード例 #2
0
    public void Page_Load()
    {
        if (!IsPostBack)
        {
            SiteMapDataAttribute sitemapdata = new SiteMapDataAttribute();

            if (RequestId > 0)
            {
                TransitDiscussion td = SessionManager.GetInstance <TransitDiscussion, int>(
                    RequestId, SessionManager.DiscussionService.GetDiscussionById);

                if (td.Personal)
                {
                    sitemapdata.Add(new SiteMapDataAttributeNode(td.ParentObjectName,
                                                                 string.Format("{0}&ReturnUrl={1}", td.ParentObjectUri, Renderer.UrlEncode(Request.Url.PathAndQuery))));
                }
                else
                {
                    sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request, "DiscussionsView.aspx"));
                }

                sitemapdata.Add(new SiteMapDataAttributeNode(td.Name, Request,
                                                             string.Format("DiscussionView.aspx?id={0}", td.Id)));
            }
            else
            {
                sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request, "DiscussionsView.aspx"));
            }

            sitemapdata.Add(new SiteMapDataAttributeNode("Search", Request.Url));
            StackSiteMap(sitemapdata);
        }

        SetDefaultButton(search);
    }
コード例 #3
0
    public void Page_Load(object sender, EventArgs e)
    {
        discussionThreadView.OnGetDataSource += new EventHandler(discussionThreadView_OnGetDataSource);
        if (!IsPostBack)
        {
            linkBack.NavigateUrl = ReturnUrl;

            if (DiscussionId > 0)
            {
                TransitDiscussion d = SessionManager.GetPrivateInstance <TransitDiscussion, int>(
                    DiscussionId, SessionManager.DiscussionService.GetDiscussionById);
                discussionLabel.Text       = Renderer.Render(d.Name);
                discussionDescription.Text = Renderer.Render(d.Description);
                linkNew.NavigateUrl        = string.Format("DiscussionPost.aspx?did={0}&ReturnUrl={1}",
                                                           d.Id, Renderer.UrlEncode(ReturnUrl));
                linkNew.Visible            = !d.Personal;
                linkAllDiscussions.Visible = !d.Personal;
                linkNewPosts.Visible       = !d.Personal;
                linkMove.Visible           = d.CanUpdate;
                linkMove.NavigateUrl       = string.Format("DiscussionThreadMove.aspx?id={0}", DiscussionThreadId);
            }

            quickpost.DiscussionId       = DiscussionId;
            quickpost.DiscussionThreadId = DiscussionThreadId;

            GetData(sender, e);
        }
    }
コード例 #4
0
    public void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (RequestId == 0)
            {
                Redirect("Default.aspx");
                return;
            }

            TransitDiscussionThread t = SessionManager.GetPrivateInstance <TransitDiscussionThread, int>(
                RequestId, SessionManager.DiscussionService.GetDiscussionThreadById);

            if (t == null)
            {
                ReportWarning("Discussion has been deleted or invalid discussion thread.");
                return;
            }

            TransitDiscussion td = SessionManager.GetPrivateInstance <TransitDiscussion, int>(
                t.DiscussionId, SessionManager.DiscussionService.GetDiscussionById);

            if (td.Personal)
            {
                string uri = SessionManager.DiscussionService.GetThreadRedirectUri(
                    SessionManager.Ticket, td.Id);

                if (!string.IsNullOrEmpty(uri))
                {
                    Redirect(uri);
                    return;
                }
            }

            this.Title = Renderer.Render(td.Name);

            discussionMain.DiscussionThreadId = RequestId;
            discussionMain.DiscussionId       = t.DiscussionId;
            discussionMain.DataBind();

            SiteMapDataAttribute sitemapdata = new SiteMapDataAttribute();

            if (!string.IsNullOrEmpty(td.ParentObjectName))
            {
                sitemapdata.Add(new SiteMapDataAttributeNode(td.ParentObjectName, Request, td.ParentObjectUri));
                sitemapdata.Add(new SiteMapDataAttributeNode(td.Name, Request, string.Format("{0}#discuss", td.ParentObjectUri)));
                sitemapdata.Add(new SiteMapDataAttributeNode("Thread", Request.Url));
            }
            else
            {
                sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request, "DiscussionsView.aspx"));
                sitemapdata.Add(new SiteMapDataAttributeNode(td.Name, Request, string.Format("DiscussionView.aspx?id={0}", td.Id)));
                sitemapdata.Add(new SiteMapDataAttributeNode("Thread", Request.Url));
            }
            StackSiteMap(sitemapdata);
        }
    }
コード例 #5
0
    public void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SiteMapDataAttribute sitemapdata = new SiteMapDataAttribute();
            if (IsObjectBound)
            {
                int discussion_id = SessionManager.GetCount <TransitDiscussion, string, int>(
                    Type, ObjectId, SessionManager.DiscussionService.GetOrCreateDiscussionId);

                TransitDiscussion td = SessionManager.GetPrivateInstance <TransitDiscussion, int>(
                    discussion_id, SessionManager.DiscussionService.GetDiscussionById);

                sitemapdata.Add(new SiteMapDataAttributeNode(td.ParentObjectName, string.Format("{0}&ReturnUrl={1}",
                                                                                                td.ParentObjectUri, Renderer.UrlEncode(Request.Url.PathAndQuery))));
                sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request.Url));
            }
            else
            {
                sitemapdata.Add(new SiteMapDataAttributeNode("Me Me", Request, "AccountManage.aspx"));
                sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request, "SystemDiscussionsManage.aspx"));
            }

            DomainClass cs = SessionManager.GetDomainClass("Discussion");
            inputName.MaxLength = cs["Name"].MaxLengthInChars;

            inputDefaultView.DataSource = DiscussionViewType.DefaultTypes;
            inputDefaultView.DataBind();

            linkBack.NavigateUrl = ReturnUrl;

            int id = RequestId;

            if (id > 0)
            {
                TransitDiscussion tw = SessionManager.DiscussionService.GetDiscussionById(
                    SessionManager.Ticket, id);
                inputName.Text        = Renderer.Render(tw.Name);
                inputDescription.Text = Renderer.Render(tw.Description);
                ListItemManager.TrySelect(inputDefaultView, tw.DefaultView);
                ListItemManager.SelectAdd(inputDefaultViewRows, tw.DefaultViewRows);
                sitemapdata.Add(new SiteMapDataAttributeNode(tw.Name, Request.Url));
            }
            else
            {
                sitemapdata.Add(new SiteMapDataAttributeNode("New Discussion", Request.Url));
            }

            StackSiteMap(sitemapdata);
        }

        SetDefaultButton(manageAdd);
    }
コード例 #6
0
 public void save_Click(object sender, EventArgs e)
 {
     TransitDiscussion tw = new TransitDiscussion();
     tw.Name = inputName.Text;
     tw.Description = inputDescription.Text;
     tw.Id = RequestId;
     tw.DefaultView = inputDefaultView.SelectedValue;
     tw.DefaultViewRows = int.Parse(inputDefaultViewRows.SelectedValue);
     tw.ObjectId = ObjectId;
     tw.ParentObjectType = Type;
     tw.Personal = IsObjectBound;
     SessionManager.CreateOrUpdate<TransitDiscussion>(
         tw, SessionManager.DiscussionService.CreateOrUpdateDiscussion);
     Redirect(ReturnUrl);
 }
コード例 #7
0
        public string GetDiscussionRedirectUri(string ticket, int id)
        {
            TransitDiscussion td = GetDiscussionById(ticket, id);

            if (!td.Personal)
            {
                throw new Exception(string.Format("Discussion {0} is not Personal", td.Name));
            }
            using (SnCore.Data.Hibernate.Session.OpenConnection())
            {
                ISession session = SnCore.Data.Hibernate.Session.Current;
                ManagedDiscussionMapEntry mapentry = ManagedDiscussionMap.Find(session, td.DataObjectId);
                return(string.Format(mapentry.DiscussionUriFormat, td.ObjectId));
            }
        }
コード例 #8
0
    public void save_Click(object sender, EventArgs e)
    {
        TransitDiscussion tw = new TransitDiscussion();

        tw.Name             = inputName.Text;
        tw.Description      = inputDescription.Text;
        tw.Id               = RequestId;
        tw.DefaultView      = inputDefaultView.SelectedValue;
        tw.DefaultViewRows  = int.Parse(inputDefaultViewRows.SelectedValue);
        tw.ObjectId         = ObjectId;
        tw.ParentObjectType = Type;
        tw.Personal         = IsObjectBound;
        SessionManager.CreateOrUpdate <TransitDiscussion>(
            tw, SessionManager.DiscussionService.CreateOrUpdateDiscussion);
        Redirect(ReturnUrl);
    }
コード例 #9
0
    public void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            discussionMain.DiscussionId = RequestId;
            discussionMain.DataBind();

            TransitDiscussion td = SessionManager.GetInstance <TransitDiscussion, int>(
                RequestId, SessionManager.DiscussionService.GetDiscussionById);

            if (td == null)
            {
                Response.StatusCode = 404;
                Response.End();
                return;
            }

            if (td.Personal && ParentRedirect)
            {
                string uri = SessionManager.DiscussionService.GetDiscussionRedirectUri(
                    SessionManager.Ticket, td.Id);

                if (!string.IsNullOrEmpty(uri))
                {
                    Redirect(uri);
                    return;
                }
            }

            this.Title = Renderer.Render(td.Name);

            SiteMapDataAttribute sitemapdata = new SiteMapDataAttribute();
            if (td.Personal)
            {
                discussionMain.BackText = string.Format("&#187; Back to {0}", Renderer.Render(td.ParentObjectName));
                sitemapdata.Add(new SiteMapDataAttributeNode(td.ParentObjectName,
                                                             string.Format("{0}&ReturnUrl={1}", td.ParentObjectUri,
                                                                           Renderer.UrlEncode(string.Format("DiscussionView.aspx?id={0}", td.Id)))));
            }
            else
            {
                sitemapdata.Add(new SiteMapDataAttributeNode("Discussions", Request, "DiscussionsView.aspx"));
            }
            sitemapdata.Add(new SiteMapDataAttributeNode(td.Name, Request.Url));
            StackSiteMap(sitemapdata);
        }
    }
コード例 #10
0
    public void GetData(object sender, EventArgs e)
    {
        TransitDiscussion d = SessionManager.GetPrivateInstance <TransitDiscussion, int>(
            DiscussionId, SessionManager.DiscussionService.GetDiscussionById);

        if (string.IsNullOrEmpty(discussionLabel.Text))
        {
            discussionLabel.Text = Renderer.Render(d.Name);
        }
        discussionDescription.Text = Renderer.Render(d.Description);
        divDescription.Visible     = !string.IsNullOrEmpty(discussionDescription.Text);
        discussionView.DataSource  = SessionManager.GetPrivateCollection <TransitDiscussionPost, int>(
            DiscussionId, null, SessionManager.DiscussionService.GetDiscussionPosts);
        discussionView.DataBind();

        postNew.NavigateUrl = string.Format("DiscussionPost.aspx?did={0}&ReturnUrl={1}",
                                            DiscussionId, Renderer.UrlEncode(ReturnUrl));
    }
コード例 #11
0
    void GetDiscussionData(object sender, EventArgs e)
    {
        if (DiscussionId <= 0)
        {
            return;
        }

        TransitDiscussion d = GetDiscussion();

        discussionLabel.Text       = Renderer.Render(d.Name);
        discussionDescription.Text = Renderer.Render(d.Description);

        StringBuilder sb = new StringBuilder();

        //sb.AppendFormat(" &#187; {0} thread{1}", d.ThreadCount, d.ThreadCount == 1 ? string.Empty : "s");
        if (d.PostCount > 0)
        {
            sb.AppendFormat(" &#187; {0} post{1}", d.PostCount, d.PostCount == 1 ? string.Empty : "s");
            sb.AppendFormat(" <span class='{0}'>&#187; last post {1}</span>",
                            DateTime.UtcNow.Subtract(d.Modified).TotalDays < 3 ? "sncore_datetime_highlight" : string.Empty,
                            SessionManager.ToAdjustedString(d.Modified));
        }

        labelThreadsPosts.Text = sb.ToString();

        linkRead.Visible     = !string.IsNullOrEmpty(linkRead.Text);
        linkRead.NavigateUrl = string.Format("DiscussionView.aspx?id={0}&ReturnUrl={1}&ParentRedirect=false",
                                             d.Id, Renderer.UrlEncode(Request.Url.PathAndQuery));

        linkBack.Visible     = !string.IsNullOrEmpty(linkBack.Text);
        linkBack.NavigateUrl = d.ParentObjectUri;

        linkSearch.Visible = !string.IsNullOrEmpty(linkSearch.Text);
        postNew.Visible    = !string.IsNullOrEmpty(postNew.Text);

        if (!HasRows)
        {
            linkSearch.Text = string.Empty;
        }
    }
コード例 #12
0
ファイル: WebDiscussionService.cs プロジェクト: dblock/sncore
 public int CreateOrUpdateDiscussion(string ticket, TransitDiscussion discussion)
 {
     return WebServiceImpl<TransitDiscussion, ManagedDiscussion, Discussion>.CreateOrUpdate(
         ticket, discussion);
 }
コード例 #13
0
 public int CreateOrUpdateDiscussion(string ticket, TransitDiscussion discussion)
 {
     return(WebServiceImpl <TransitDiscussion, ManagedDiscussion, Discussion> .CreateOrUpdate(
                ticket, discussion));
 }