public IActionResult GetEditItem(int item_language_id)
        {
            using (var db = CMSContextFactory.Create(Settings.MySqlConnectionString))
            {
                Item_Language itemLanguage = db.Item_Language
                                             .Include(_itemLanguage => _itemLanguage.Item)
                                             .ThenInclude(item => item.Category)
                                             .Include(_itemLanguage => _itemLanguage.Item)
                                             .ThenInclude(item => item.Role)
                                             .SingleOrDefault(_itemLanguage => _itemLanguage.Id == item_language_id);

                ViewBag.itemLanguage = itemLanguage;

                if (itemLanguage.Item.Category.CustomFields != null)
                {
                    ViewBag.catCustomFields = JsonConvert.DeserializeObject <List <CustomField> >(itemLanguage.Item.Category.CustomFields);
                    ViewBag.itemCustomValue = JsonConvert.DeserializeObject <dynamic>(itemLanguage.Item.CustomValues) as JObject;
                }
                else
                {
                    ViewBag.catCustomFields = new List <CustomField>();
                }

                ViewBag.cats = db.Category_Language.Where(cat_lang => cat_lang.LanguageId == itemLanguage.LanguageId).ToList();

                ViewBag.roles = db.Roles.ToList();

                return(View("~/Components/Main/Item/Views/Backend/edit.cshtml"));
            }
        }
        public IActionResult CreateItem(Item item, Item_Language item_language)
        {
            using (var db = CMSContextFactory.Create(Settings.MySqlConnectionString))
            {
                //get chosen category, to parse custom fields if existed...
                var category = db.Categories.SingleOrDefault(cat => cat.Id == item.CategoryId);

                string customValuesBuilder = null;

                if (category.CustomFields != null)
                {
                    var customFields = JsonConvert.DeserializeObject <List <CustomField> >(category.CustomFields);

                    customValuesBuilder = "{";
                    foreach (var customField in customFields)
                    {
                        var nameOfField  = customField.Name;
                        var valueOfField = this.Request.Form[nameOfField];
                        customValuesBuilder += "\"" + nameOfField + "\":" + valueOfField;
                    }

                    customValuesBuilder += "}";
                }

                item.CustomValues = customValuesBuilder;
                db.Add(item);

                item_language.LanguageId = 1;//default language
                item_language.Item       = item;
                db.Add(item_language);

                db.SaveChanges();
            }
            return(Redirect("/backend/items"));
        }
 public IActionResult AddItem(Item_Language item_language)
 {
     //TODO: authorize, validate...
     using (var db = CMSContextFactory.Create(Settings.MySqlConnectionString))
     {
         db.Add(item_language);
         db.SaveChanges();
     }
     return(Redirect("/backend/items"));
 }
        public IActionResult EditItem(Item item, Item_Language itemLanguage)
        {
            using (var db = CMSContextFactory.Create(Settings.MySqlConnectionString))
            {
                //get ids
                item.Id         = int.Parse(this.Request.Form["ItemId"]);
                itemLanguage.Id = int.Parse(this.Request.Form["Item_LanguageId"]);

                //get chosen category
                var category = db.Categories.SingleOrDefault(cat => cat.Id == item.CategoryId);

                string customValuesBuilder = "";
                if (category.CustomFields != null)
                {
                    var customFields = JsonConvert.DeserializeObject <List <CustomField> >(category.CustomFields);

                    customValuesBuilder = "{";
                    foreach (var customField in customFields)
                    {
                        var nameOfField  = customField.Name;
                        var valueOfField = this.Request.Form[nameOfField];
                        customValuesBuilder += "\"" + nameOfField + "\":" + valueOfField;
                    }

                    customValuesBuilder += "}";

                    item.CustomValues = customValuesBuilder;
                }

                db.Entry(item).State = EntityState.Modified;

                itemLanguage.Item            = item;
                db.Entry(itemLanguage).State = EntityState.Modified;

                db.SaveChanges();
                return(Redirect("/backend/items"));
            }
        }
示例#5
0
        public void Bootstrap(string connectionString)
        {
            using (var db = CMSContextFactory.Create(connectionString))
            {
                //init extendsion
                var extension = db.Extensions.SingleOrDefault(ext => ext.Namespace == "Components.SingleArticle.SingleArticleComponentController");
                if (extension == null)
                {
                    extension = new Extension()
                    {
                        Id        = 1,
                        Namespace = "Components.SingleArticle.SingleArticleComponentController"
                    };
                    db.Add(extension);
                }


                //init 'Single Article' menu type
                var menuItemType = db.MenuItemTypes.SingleOrDefault(type => type.Id == 1);
                if (menuItemType == null)
                {
                    menuItemType = new MenuItemType()
                    {
                        Id          = 1,
                        Name        = "Single Article",
                        ExtensionId = 1
                    };
                    db.Add(menuItemType);
                }

                //init menu-item
                var menuItem = db.MenuItems.SingleOrDefault(item => item.Id == 1);
                if (menuItem == null)
                {
                    menuItem = new MenuItem()
                    {
                        Id             = 1,
                        Link           = "home",
                        MenuItemTypeId = 1,
                        Params         = "{ItemId : 1}", // item will be initialized next
                        IsMenu         = false,
                        ChildMenuId    = 1,              //TODO: this should be zero
                        MenuId         = 1,
                        IsIndexPage    = true,
                        Role           = db.Roles.SingleOrDefault(role => role.Name.Equals("Public"))
                    };
                    db.Add(menuItem);

                    MenuItem_Language menuItem_laguage = new MenuItem_Language()
                    {
                        Id         = 1,
                        LanguageId = 1,
                        Label      = "Home",
                        MenuItemId = 1
                    };
                    db.Add(menuItem_laguage);

                    menuItem_laguage = new MenuItem_Language()
                    {
                        Id         = 2,
                        LanguageId = 2,
                        Label      = "الرئيسية",
                        MenuItemId = 1
                    };
                    db.Add(menuItem_laguage);
                }

                //init an item
                var _item = db.Items.SingleOrDefault(item => item.Id == 1);
                if (_item == null)
                {
                    _item = new Item()
                    {
                        Id         = 1,
                        CategoryId = 1,
                        Role       = db.Roles.SingleOrDefault(role => role.Name.Equals("Public"))
                    };
                    db.Add(_item);

                    Item_Language _item_language = new Item_Language()
                    {
                        ItemId       = 1,
                        LanguageId   = 1,
                        Title        = "Welcome To LightCMS",
                        ShortContent = "Welcome to LightCMS",
                        FullContent  = @"Thank you for using LightCMS, you can access the <strong>Admin Panel</strong> by navigating to <strong>/admin</admin><br>.
                                       This is a sample page which was generated automatically by LightCMS."
                    };
                    db.Add(_item_language);
                    _item_language = new Item_Language()
                    {
                        ItemId       = 1,
                        LanguageId   = 2,
                        Title        = "LightCMS أهلاً بك في ",
                        ShortContent = "LightCMS أهلاً بك في",
                        FullContent  = @"نشكر ثقتك بنا.. يمكنك إضافة المزيد  باستخدام admin"
                    };
                    db.Add(_item_language);
                }

                db.SaveChanges();
            }
        }