Esempio n. 1
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));
            }
        }
        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());
            }
        }
Esempio n. 3
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());
     }
 }