示例#1
0
        public static string Delete(SiteSettings ss, long wikiId)
        {
            var wikiModel = new WikiModel(ss, wikiId);
            var invalid   = WikiValidators.OnDeleting(ss, wikiModel);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            var error = wikiModel.Delete(ss, notice: true);

            if (error.Has())
            {
                return(error.MessageJson());
            }
            else
            {
                Sessions.Set("Message", Messages.Deleted(wikiModel.Title.Value).Html);
                var res = new WikisResponseCollection(wikiModel);
                res
                .SetMemory("formChanged", false)
                .Href(Locations.ItemIndex(Rds.ExecuteScalar_long(statements:
                                                                 Rds.SelectSites(
                                                                     tableType: Sqls.TableTypes.Deleted,
                                                                     column: Rds.SitesColumn().ParentId(),
                                                                     where : Rds.SitesWhere()
                                                                     .TenantId(Sessions.TenantId())
                                                                     .SiteId(wikiModel.SiteId)))));
                return(res.ToJson());
            }
        }
示例#2
0
 private static ResponseCollection ResponseByUpdate(
     WikisResponseCollection res,
     SiteSettings ss,
     WikiModel wikiModel)
 {
     return(res
            .Ver()
            .Timestamp()
            .Val("#VerUp", false)
            .FieldResponse(ss, wikiModel)
            .Disabled("#VerUp", false)
            .Html("#HeaderTitle", wikiModel.Title.DisplayValue)
            .Html("#RecordInfo", new HtmlBuilder().RecordInfo(
                      baseModel: wikiModel, tableName: "Wikis"))
            .Html("#Links", new HtmlBuilder().Links(
                      ss: ss, id: wikiModel.WikiId))
            .SetMemory("formChanged", false)
            .Message(Messages.Updated(wikiModel.Title.DisplayValue))
            .Comment(
                ss,
                ss.GetColumn("Comments"),
                wikiModel.Comments,
                wikiModel.DeleteCommentId)
            .ClearFormData());
 }
示例#3
0
        public static string Update(IContext context, SiteSettings ss, long wikiId)
        {
            var wikiModel = new WikiModel(
                context: context, ss: ss, wikiId: wikiId, setByForm: true);
            var invalid = WikiValidators.OnUpdating(
                context: context,
                ss: ss,
                wikiModel: wikiModel);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            if (wikiModel.AccessStatus != Databases.AccessStatuses.Selected)
            {
                return(Messages.ResponseDeleteConflicts(context: context).ToJson());
            }
            var error = wikiModel.Update(
                context: context,
                ss: ss,
                notice: true,
                permissions: context.Forms.List("CurrentPermissionsAll"),
                permissionChanged: context.Forms.Exists("CurrentPermissionsAll"));

            switch (error)
            {
            case Error.Types.None:
                var res = new WikisResponseCollection(wikiModel);
                res.ReplaceAll("#Breadcrumb", new HtmlBuilder()
                               .Breadcrumb(context: context, ss: ss));
                return(ResponseByUpdate(res, context, ss, wikiModel)
                       .PrependComment(
                           context: context,
                           ss: ss,
                           column: ss.GetColumn(context: context, columnName: "Comments"),
                           comments: wikiModel.Comments,
                           verType: wikiModel.VerType)
                       .ToJson());

            case Error.Types.UpdateConflicts:
                return(Messages.ResponseUpdateConflicts(
                           context: context,
                           data: wikiModel.Updator.Name)
                       .ToJson());

            default:
                return(error.MessageJson(context: context));
            }
        }
示例#4
0
        public static string Delete(IContext context, SiteSettings ss, long wikiId)
        {
            var wikiModel = new WikiModel(context, ss, wikiId);
            var invalid   = WikiValidators.OnDeleting(
                context: context,
                ss: ss,
                wikiModel: wikiModel);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            var error = wikiModel.Delete(context: context, ss: ss, notice: true);

            switch (error)
            {
            case Error.Types.None:
                SessionUtilities.Set(
                    context: context,
                    message: Messages.Deleted(
                        context: context,
                        data: wikiModel.Title.Value));
                var res = new WikisResponseCollection(wikiModel);
                res
                .SetMemory("formChanged", false)
                .Href(Locations.ItemIndex(
                          context: context,
                          id: Rds.ExecuteScalar_long(
                              context: context,
                              statements: Rds.SelectSites(
                                  tableType: Sqls.TableTypes.Deleted,
                                  column: Rds.SitesColumn().ParentId(),
                                  where : Rds.SitesWhere()
                                  .TenantId(context.TenantId)
                                  .SiteId(wikiModel.SiteId)))));
                return(res.ToJson());

            default:
                return(error.MessageJson(context: context));
            }
        }
        public static string Update(SiteSettings ss, long wikiId)
        {
            var wikiModel = new WikiModel(ss, wikiId, setByForm: true);
            var invalid   = WikiValidators.OnUpdating(ss, wikiModel);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            if (wikiModel.AccessStatus != Databases.AccessStatuses.Selected)
            {
                return(Messages.ResponseDeleteConflicts().ToJson());
            }
            var error = wikiModel.Update(
                ss: ss,
                notice: true,
                permissions: Forms.List("CurrentPermissionsAll"),
                permissionChanged: Forms.Exists("CurrentPermissionsAll"));

            if (error.Has())
            {
                return(error == Error.Types.UpdateConflicts
                    ? Messages.ResponseUpdateConflicts(wikiModel.Updator.Name).ToJson()
                    : new ResponseCollection().Message(error.Message()).ToJson());
            }
            else
            {
                var res = new WikisResponseCollection(wikiModel);
                res.ReplaceAll("#Breadcrumb", new HtmlBuilder().Breadcrumb(ss.SiteId));
                return(ResponseByUpdate(res, ss, wikiModel)
                       .PrependComment(
                           ss,
                           ss.GetColumn("Comments"),
                           wikiModel.Comments,
                           wikiModel.VerType)
                       .ToJson());
            }
        }
示例#6
0
        public static ResponseCollection FieldResponse(
            this WikisResponseCollection res,
            IContext context,
            SiteSettings ss,
            WikiModel wikiModel)
        {
            var mine = wikiModel.Mine(context: context);

            ss.EditorColumns
            .Select(columnName => ss.GetColumn(context: context, columnName: columnName))
            .Where(column => column != null)
            .ForEach(column =>
            {
                switch (column.Name)
                {
                case "WikiId":
                    res.Val(
                        "#Wikis_WikiId",
                        wikiModel.WikiId.ToResponse(context: context, ss: ss, column: column));
                    break;

                case "Title":
                    res.Val(
                        "#Wikis_Title",
                        wikiModel.Title.ToResponse(context: context, ss: ss, column: column));
                    break;

                case "Body":
                    res.Val(
                        "#Wikis_Body",
                        wikiModel.Body.ToResponse(context: context, ss: ss, column: column));
                    break;

                default: break;
                }
            });
            return(res);
        }
示例#7
0
        public static string Restore(SiteSettings ss, long wikiId)
        {
            var wikiModel = new WikiModel();
            var invalid   = WikiValidators.OnRestoring();

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            var error = wikiModel.Restore(ss, wikiId);

            if (error.Has())
            {
                return(error.MessageJson());
            }
            else
            {
                var res = new WikisResponseCollection(wikiModel);
                return(res.ToJson());
            }
        }
示例#8
0
 private static ResponseCollection ResponseByUpdate(
     WikisResponseCollection res,
     IContext context,
     SiteSettings ss,
     WikiModel wikiModel)
 {
     if (context.Forms.Bool("IsDialogEditorForm"))
     {
         var view = Views.GetBySession(
             context: context,
             ss: ss,
             setSession: false);
         var gridData = new GridData(
             context: context,
             ss: ss,
             view: view,
             where : Rds.WikisWhere().WikiId(wikiModel.WikiId));
         var columns = ss.GetGridColumns(
             context: context,
             checkPermission: true);
         return(res
                .ReplaceAll(
                    $"[data-id=\"{wikiModel.WikiId}\"]",
                    gridData.TBody(
                        hb: new HtmlBuilder(),
                        context: context,
                        ss: ss,
                        columns: columns,
                        checkAll: false))
                .CloseDialog()
                .Message(Messages.Updated(
                             context: context,
                             data: wikiModel.Title.DisplayValue)));
     }
     else
     {
         return(res
                .Ver(context: context, ss: ss)
                .Timestamp(context: context, ss: ss)
                .FieldResponse(context: context, ss: ss, wikiModel: wikiModel)
                .Val("#VerUp", false)
                .Disabled("#VerUp", false)
                .Html("#HeaderTitle", wikiModel.Title.DisplayValue)
                .Html("#RecordInfo", new HtmlBuilder().RecordInfo(
                          context: context,
                          baseModel: wikiModel,
                          tableName: "Wikis"))
                .Html("#Links", new HtmlBuilder().Links(
                          context: context,
                          ss: ss,
                          id: wikiModel.WikiId))
                .SetMemory("formChanged", false)
                .Message(Messages.Updated(
                             context: context,
                             data: wikiModel.Title.DisplayValue))
                .Comment(
                    context: context,
                    ss: ss,
                    column: ss.GetColumn(context: context, columnName: "Comments"),
                    comments: wikiModel.Comments,
                    deleteCommentId: wikiModel.DeleteCommentId)
                .ClearFormData());
     }
 }