コード例 #1
0
 public MailingElementListItemViewModel(Translator translator, MailingElement mailingElement)
 {
     Id    = mailingElement.Id.Value.ToString();
     Owner = mailingElement.Owner.Value.Name.Value[translator.Language].EscapeHtml();
     Name  = mailingElement.Name.Value.EscapeHtml();
     Type  = mailingElement.Type.Value.Translate(translator).EscapeHtml();
     PhraseDeleteConfirmationQuestion = translator.Get("MailingElement.List.Delete.Confirm.Question", "Delete mailing element confirmation question", "Do you really wish to delete mailing element {0}?", mailingElement.GetText(translator)).EscapeHtml();
 }
コード例 #2
0
 public MailingElementEditViewModel(Translator translator, IDatabase db, Session session, MailingElement mailingElement)
     : this(translator, session)
 {
     Method = "edit";
     Id     = mailingElement.Id.ToString();
     Owner  = string.Empty;
     Name   = mailingElement.Name.Value.EscapeHtml();
     Type   = ((int)mailingElement.Type.Value).ToString();
     Types  = new List <NamedIntViewModel>();
     Types.Add(new NamedIntViewModel(translator, MailingElementType.Header, mailingElement.Type.Value == MailingElementType.Header));
     Types.Add(new NamedIntViewModel(translator, MailingElementType.Footer, mailingElement.Type.Value == MailingElementType.Footer));
     HtmlText     = mailingElement.HtmlText.Value;
     HtmlEditorId = Guid.NewGuid().ToString();
     Owners       = new List <NamedIdViewModel>(db
                                                .Query <Feed>()
                                                .Where(o => session.HasAccess(o, PartAccess.Mailings, AccessRight.Write))
                                                .Select(o => new NamedIdViewModel(translator, o, mailingElement.Owner.Value == o))
                                                .OrderBy(o => o.Name));
 }
コード例 #3
0
        public MailingElementEdit()
        {
            this.RequiresAuthentication();

            Get["/mailingelement"] = parameters =>
            {
                if (HasSystemWideAccess(PartAccess.Mailings, AccessRight.Read))
                {
                    return(View["View/mailingelement.sshtml",
                                new MailingElementViewModel(Translator, CurrentSession)]);
                }
                return(AccessDenied());
            };
            Get["/mailingelement/list"] = parameters =>
            {
                if (HasSystemWideAccess(PartAccess.Mailings, AccessRight.Read))
                {
                    return(View["View/mailingelementlist.sshtml",
                                new MailingElementListViewModel(Translator, Database)]);
                }
                return(null);
            };
            Get["/mailingelement/edit/{id}"] = parameters =>
            {
                if (HasSystemWideAccess(PartAccess.Mailings, AccessRight.Write))
                {
                    string idString       = parameters.id;
                    var    mailingElement = Database.Query <MailingElement>(idString);

                    if (mailingElement != null)
                    {
                        return(View["View/mailingelementedit.sshtml",
                                    new MailingElementEditViewModel(Translator, Database, CurrentSession, mailingElement)]);
                    }
                }

                return(null);
            };
            Post["/mailingelement/edit/{id}"] = parameters =>
            {
                var    status         = CreateStatus();
                string idString       = parameters.id;
                var    model          = JsonConvert.DeserializeObject <MailingElementEditViewModel>(ReadBody());
                var    mailingElement = Database.Query <MailingElement>(idString);

                if (status.ObjectNotNull(mailingElement))
                {
                    if (status.HasAccess(mailingElement.Owner.Value, PartAccess.Mailings, AccessRight.Write))
                    {
                        status.AssignObjectIdString("Owner", mailingElement.Owner, model.Owner);
                        status.AssignStringRequired("Name", mailingElement.Name, model.Name);
                        status.AssignEnumIntString("Type", mailingElement.Type, model.Type);
                        var worker = new HtmlWorker(model.HtmlText);
                        mailingElement.HtmlText.Value  = worker.CleanHtml;
                        mailingElement.PlainText.Value = worker.PlainText;

                        if (status.IsSuccess)
                        {
                            Database.Save(mailingElement);
                            Notice("{0} changed mailing element {1}", CurrentSession.User.UserName.Value, mailingElement);
                        }
                    }
                }

                return(status.CreateJsonData());
            };
            Get["/mailingelement/add"] = parameters =>
            {
                if (HasAnyFeedAccess(PartAccess.Mailings, AccessRight.Write))
                {
                    return(View["View/mailingelementedit.sshtml",
                                new MailingElementEditViewModel(Translator, Database, CurrentSession)]);
                }
                return(AccessDenied());
            };
            Post["/mailingelement/add/new"] = parameters =>
            {
                var model          = JsonConvert.DeserializeObject <MailingElementEditViewModel>(ReadBody());
                var status         = CreateStatus();
                var mailingElement = new MailingElement(Guid.NewGuid());
                status.AssignObjectIdString("Owner", mailingElement.Owner, model.Owner);
                status.AssignStringRequired("Name", mailingElement.Name, model.Name);
                status.AssignEnumIntString("Type", mailingElement.Type, model.Type);
                var worker = new HtmlWorker(model.HtmlText);
                mailingElement.HtmlText.Value  = worker.CleanHtml;
                mailingElement.PlainText.Value = worker.PlainText;

                if (status.HasAccess(mailingElement.Owner.Value, PartAccess.Mailings, AccessRight.Write))
                {
                    if (status.IsSuccess)
                    {
                        Database.Save(mailingElement);
                        Notice("{0} added mailing element {1}", CurrentSession.User.UserName.Value, mailingElement);
                    }
                }

                return(status.CreateJsonData());
            };
            Get["/mailingelement/delete/{id}"] = parameters =>
            {
                var    status         = CreateStatus();
                string idString       = parameters.id;
                var    mailingElement = Database.Query <MailingElement>(idString);

                if (status.ObjectNotNull(mailingElement))
                {
                    if (status.HasAccess(mailingElement.Owner.Value, PartAccess.Mailings, AccessRight.Write))
                    {
                        mailingElement.Delete(Database);
                        Notice("{0} deleted mailing element {1}", CurrentSession.User.UserName.Value, mailingElement);
                    }
                }
                return(status.CreateJsonData());
            };
        }
コード例 #4
0
 public NamedIdViewModel(MailingElement element, bool selected)
 {
     Id       = element.Id.ToString();
     Name     = element.Name.Value.EscapeHtml();
     Selected = selected;
 }