func (ctrl controller) UpdateActivity(context *admin.Context) { c := context.Admin.NewContext(context.Writer, context.Request) c.ResourceID = ctrl.ActivityResource.GetPrimaryValue(context.Request) c.Resource = ctrl.ActivityResource c.Searcher = &admin.Searcher{Context: c} result, err := c.FindOne() context.AddError(err) if !context.HasError() { if context.AddError(c.Resource.Decode(c.Context, result)); !context.HasError() { context.AddError(context.Resource.CallSave(result, c.Context)) } } redirectTo := context.Request.Referer() if context.HasError() { context.Writer.WriteHeader(admin.HTTPUnprocessableEntity) responder.With("html", func() { http.Redirect(context.Writer, context.Request, redirectTo, http.StatusFound) }).With("json", func() { context.JSON("edit", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) } else { responder.With("html", func() { context.Flash(string(context.Admin.T(context.Context, "activity.successfully_updated", "Activity was successfully updated")), "success") http.Redirect(context.Writer, context.Request, redirectTo, http.StatusFound) }).With("json", func() { c.JSON("show", result) }).Respond(context.Request) } }
func (ctrl controller) CreateActivity(context *admin.Context) { result, err := context.FindOne() activityResource := ctrl.ActivityResource newActivity := &QorActivity{} if err == nil { if context.AddError(activityResource.Decode(context.Context, newActivity)); !context.HasError() { context.AddError(CreateActivity(context, newActivity, result)) } } context.AddError(err) redirectTo := context.Request.Referer() if context.HasError() { responder.With("html", func() { context.Flash(context.Error(), "error") http.Redirect(context.Writer, context.Request, redirectTo, http.StatusFound) }).With("json", func() { context.JSON("edit", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) } else { responder.With("html", func() { context.Flash(string(context.Admin.T(context.Context, "activity.successfully_created", "Activity was successfully created")), "success") http.Redirect(context.Writer, context.Request, redirectTo, http.StatusFound) }).With("json", func() { context.Resource = activityResource context.JSON("show", newActivity) }).Respond(context.Request) } }
func (ctrl controller) GetActivity(context *admin.Context) { activities, _ := GetActivities(context, "-tag") activityResource := ctrl.ActivityResource if context.HasError() { responder.With("json", func() { context.JSON("edit", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) } else { responder.With("json", func() { context.Resource = activityResource context.JSON("index", activities) }).Respond(context.Request) } }
func (ac *controller) Action(context *Context) { var err error name := strings.Split(context.Request.URL.Path, "/")[4] for _, action := range context.Resource.actions { if action.Name == name { ids := context.Request.Form.Get("ids") scope := context.GetDB().Where(fmt.Sprintf("%v IN (?)", context.Resource.PrimaryField().DBName), ids) err = action.Handle(scope, context.Context) } } responder.With("html", func() { if err == nil { http.Redirect(context.Writer, context.Request, context.Request.Referer(), http.StatusFound) } else { context.Writer.WriteHeader(HTTPUnprocessableEntity) context.Writer.Write([]byte(err.Error())) } }).With("json", func() { if err == nil { context.Writer.Write([]byte("OK")) } else { context.Writer.WriteHeader(HTTPUnprocessableEntity) context.Writer.Write([]byte(err.Error())) } }).Respond(context.Request) }
func (ac *controller) Action(context *Context) { var action = ac.action if context.Request.Method == "GET" { context.Execute("action", action) } else { var actionArgument = ActionArgument{ PrimaryValues: context.Request.Form["primary_values[]"], Context: context, } if primaryValue := context.Resource.GetPrimaryValue(context.Request); primaryValue != "" { actionArgument.PrimaryValues = append(actionArgument.PrimaryValues, primaryValue) } if action.Resource != nil { result := action.Resource.NewStruct() action.Resource.Decode(context.Context, result) actionArgument.Argument = result } if err := action.Handle(&actionArgument); err == nil { responder.With("html", func() { http.Redirect(context.Writer, context.Request, context.Request.Referer(), http.StatusFound) }).With("json", func() { context.JSON("OK", map[string]string{"redirect": context.Request.Referer(), "status": "ok"}) }).Respond(context.Request) } else { context.Writer.WriteHeader(HTTPUnprocessableEntity) context.Writer.Write([]byte(err.Error())) } } }
func (wc workerController) AddJob(context *admin.Context) { jobResource := wc.Worker.JobResource result := jobResource.NewStruct().(QorJobInterface) job := wc.Worker.GetRegisteredJob(context.Request.Form.Get("job_name")) result.SetJob(job) if !job.HasPermission(roles.Create, context.Context) { context.AddError(errors.New("don't have permission to run job")) } if context.AddError(jobResource.Decode(context.Context, result)); !context.HasError() { // ensure job name is correct result.SetJob(job) context.AddError(jobResource.CallSave(result, context.Context)) context.AddError(wc.Worker.AddJob(result)) } if context.HasError() { responder.With("html", func() { context.Writer.WriteHeader(422) context.Execute("edit", result) }).With("json", func() { context.Writer.WriteHeader(422) context.JSON("index", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) return } context.Flash(string(context.Admin.T(context.Context, "qor_worker.form.successfully_created", "{{.Name}} was successfully created", jobResource)), "success") http.Redirect(context.Writer, context.Request, context.Request.URL.Path, http.StatusFound) }
func (ac *controller) Edit(context *Context) { result, err := context.FindOne() context.AddError(err) responder.With("html", func() { context.Execute("edit", result) }).With("json", func() { context.JSON("edit", result) }).Respond(context.Request) }
func (ac *controller) Delete(context *Context) { res := context.Resource status := http.StatusOK if context.AddError(res.CallDelete(res.NewStruct(), context.Context)); context.HasError() { status = http.StatusNotFound } responder.With("html", func() { http.Redirect(context.Writer, context.Request, path.Join(ac.GetRouter().Prefix, res.ToParam()), status) }).With("json", func() { context.Writer.WriteHeader(status) }).Respond(context.Request) }
func (ac *controller) Index(context *Context) { result, err := context.FindMany() context.AddError(err) if context.HasError() { http.NotFound(context.Writer, context.Request) } else { responder.With("html", func() { context.Execute("index", result) }).With("json", func() { context.JSON("index", result) }).Respond(context.Request) } }
func (ac *controller) Create(context *Context) { res := context.Resource result := res.NewStruct() if context.AddError(res.Decode(context.Context, result)); !context.HasError() { context.AddError(res.CallSave(result, context.Context)) } if context.HasError() { responder.With("html", func() { context.Writer.WriteHeader(HTTPUnprocessableEntity) context.Execute("new", result) }).With("json", func() { context.Writer.WriteHeader(HTTPUnprocessableEntity) context.JSON("index", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) } else { responder.With("html", func() { context.Flash(string(context.dt("resource_successfully_created", "{{.Name}} was successfully created", res)), "success") http.Redirect(context.Writer, context.Request, context.UrlFor(result, res), http.StatusFound) }).With("json", func() { context.JSON("show", result) }).Respond(context.Request) } }
func (ac *controller) Update(context *Context) { var result interface{} var err error // If singleton Resource if context.Resource.Config.Singleton { result = context.Resource.NewStruct() context.Resource.CallFindMany(result, context.Context) } else { result, err = context.FindOne() context.AddError(err) } res := context.Resource if !context.HasError() { if context.AddError(res.Decode(context.Context, result)); !context.HasError() { context.AddError(res.CallSave(result, context.Context)) } } if context.HasError() { context.Writer.WriteHeader(HTTPUnprocessableEntity) responder.With("html", func() { context.Execute("edit", result) }).With("json", func() { context.JSON("edit", map[string]interface{}{"errors": context.GetErrors()}) }).Respond(context.Request) } else { responder.With("html", func() { context.FlashNow(string(context.dt("resource_successfully_updated", "{{.Name}} was successfully updated", res)), "success") context.Execute("show", result) }).With("json", func() { context.JSON("show", result) }).Respond(context.Request) } }
func (wc workerController) Index(context *admin.Context) { context = context.NewResourceContext(wc.JobResource) result, err := context.FindMany() context.AddError(err) if context.HasError() { http.NotFound(context.Writer, context.Request) } else { responder.With("html", func() { context.Execute("index", result) }).With("json", func() { context.JSON("index", result) }).Respond(context.Request) } }
func (ac *controller) Show(context *Context) { var result interface{} var err error // If singleton Resource if context.Resource.Config.Singleton { result = context.Resource.NewStruct() if err = context.Resource.CallFindMany(result, context.Context); err == gorm.RecordNotFound { context.Execute("new", result) return } } else { result, err = context.FindOne() } context.AddError(err) responder.With("html", func() { context.Execute("show", result) }).With("json", func() { context.JSON("show", result) }).Respond(context.Request) }