public JsonResult DeleteParameters(string key)
        {
            bool   success = false;
            string message = "";

            try
            {
                var metas = repo.GetPuckMeta().Where(x => x.Name == DBNames.EditorSettings && x.Key == key).ToList();
                var meta  = metas.FirstOrDefault();
                metas.ForEach(x => repo.DeleteMeta(x));

                //clear cached values
                var cachePrefix = "editor_settings_";
                var cacheKey    = cachePrefix + key;
                cache.Remove(cacheKey);
                cache.Remove("null_" + cacheKey);

                var instruction = new PuckInstruction()
                {
                    Count             = 2,
                    ServerName        = ApiHelper.ServerName(),
                    InstructionDetail = $"{cacheKey},{"null_" + cacheKey}",
                    InstructionKey    = InstructionKeys.RemoveFromCache
                };
                repo.AddPuckInstruction(instruction);

                repo.SaveChanges();
                if (meta != null)
                {
                    var    keyParts     = key.Split(new char[] { ':' });
                    var    typeSettings = ApiHelper.EditorSettingTypes().FirstOrDefault(x => x.FullName == keyParts[0]);
                    object model        = JsonConvert.DeserializeObject(meta.Value, typeSettings);
                    ApiHelper.OnAfterSettingsDelete(this, new puck.core.Events.AfterEditorSettingsDeleteEventArgs
                    {
                        Setting = (I_Puck_Editor_Settings)model
                        , SettingsTypeFullName = keyParts[0]
                        , ModelTypeName        = keyParts[1]
                        , PropertyName         = keyParts[2]
                    });
                }
                success = true;
            }
            catch (Exception ex)
            {
                success = false;
                message = ex.Message;
                log.Log(ex);
            }
            return(Json(new { success = success, message = message }));
        }
Exemple #2
0
        public JsonResult DeleteParameters(string key)
        {
            bool   success = false;
            string message = "";

            try
            {
                repo.GetPuckMeta().Where(x => x.Name == DBNames.EditorSettings && x.Key == key).ToList().ForEach(x => repo.DeleteMeta(x));
                repo.SaveChanges();
                success = true;
            }
            catch (Exception ex)
            {
                success = false;
                message = ex.Message;
                log.Log(ex);
            }
            return(Json(new { success = success, message = message }));
        }
Exemple #3
0
        public async Task <ActionResult> ForgotPassword(ForgottenPassword model)
        {
            if (ModelState.IsValid)
            {
                var user = await userManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    //ModelState.AddModelError("", "Email doesn't exist");
                    ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records";
                    return(View(model));
                }

                var token = Guid.NewGuid().ToString();

                var meta = new PuckMeta {
                    Name    = DBNames.PasswordResetToken
                    , Key   = token
                    , Value = model.Email
                };
                repo.AddMeta(meta);
                repo.SaveChanges();

                var uri      = HttpContext.Request.GetUri() ?? PuckCache.FirstRequestUrl;
                var resetUrl = uri.Scheme + "://"
                               + uri.Host
                               + (uri.Port != 80 ? (":" + uri.Port) : "")
                               + $"/puck/admin/resetpassword?token={token}";

                puck.core.Helpers.ApiHelper.Email(
                    model.Email
                    , "Reset your password - Puck CMS"
                    , $"click <a href=\"{resetUrl}\">here</a> to reset your password."
                    );

                ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records";

                return(View(model));
            }
            return(View(model));
        }
        public async Task <ActionResult> EditAttribute(int pid, int aid, string optionType, IFormCollection fc)
        {
            var success = false;
            var message = string.Empty;
            var _id     = -1;

            try
            {
                if (aid < 1)
                {
                    var prop = repo.GetGeneratedProperty().Where(x => x.ID == pid).FirstOrDefault();
                    var att  = new GeneratedAttribute {
                        Type = optionType
                    };
                    var model = ApiHelper.CreateInstance(ApiHelper.GetType(optionType));
                    await TryUpdateModelAsync(model, model.GetType(), "");

                    var value = JsonConvert.SerializeObject(model);
                    att.Value = value;
                    prop.Attributes.Add(att);
                    repo.SaveChanges();
                    _id = att.ID;
                }
                else
                {
                    var att   = repo.GetGeneratedAttribute().Where(x => x.ID == aid).FirstOrDefault();
                    var model = ApiHelper.CreateInstance(ApiHelper.GetType(optionType));
                    await TryUpdateModelAsync(model, model.GetType(), "");

                    var value = JsonConvert.SerializeObject(model);
                    att.Value = value;
                    repo.SaveChanges();
                    _id = att.ID;
                }
            }
            catch (Exception ex) {
                message = ex.Message;
            }

            return(Json(new { success = true, message = message, id = _id }));
        }
        public async Task <IActionResult> Create(PuckWorkflowItem model)
        {
            var success                = false;
            var message                = "";
            PuckWorkflowItem wfi       = null;
            bool             lockTaken = false;

            try
            {
                if (model != null)
                {
                    model.AddedBy = User.Identity.Name;
                }
                if (ModelState.ContainsKey("AddedBy"))
                {
                    ModelState["AddedBy"].Errors.Clear();
                    ModelState["AddedBy"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid;
                }
                if (!ModelState.IsValid)
                {
                    message = string.Join(",", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage));
                    return(Json(new { success = success, message = message }));
                }
                //await slock1.WaitAsync();
                lockTaken = true;

                var existingItems = repo.GetPuckWorkflowItem().Where(x => x.ContentId == model.ContentId && x.Variant == model.Variant && !x.Complete).ToList();
                existingItems.ForEach(x => { x.Complete = true; x.CompleteDate = DateTime.Now; });

                repo.AddPuckWorkflowItem(model);
                repo.SaveChanges();

                wfi = model;

                success = true;
            }
            catch (Exception ex)
            {
                message = ex.Message;
                log.Log(ex);
            }
            finally {
                //if(lockTaken)
                //    slock1.Release();
            }

            return(Json(new { success = success, message = message, workflowItem = wfi }));
        }