public static LinkList ToModel(this linklist row) { return(new LinkList() { handle = row.permalink, id = row.id, links = row.links.ToModel(), permanent = row.permanent, title = row.title }); }
public ActionResult Save(string liquid_linklists) { // we need to use this serializer as we use enum strings var serializer = new JavaScriptSerializer(); LinkList[] lists; try { lists = serializer.Deserialize <LinkList[]>(liquid_linklists); } catch (Exception ex) { return(SendJsonErrorResponse(ex)); } foreach (var entry in lists) { // new entry var list = new linklist(); if (entry.id == 0) { list.permanent = false; MASTERdomain.linklists.Add(list); } else { list = MASTERdomain.linklists.Where(x => x.id == entry.id).SingleOrDefault(); if (list == null) { return(SendJsonErrorResponse("Unable to find link list: " + entry.id)); } } string perma = entry.handle; if (string.IsNullOrEmpty(perma)) { // this is a new entry or someone deleted the perma perma = entry.title.ToPerma(); } string perma1 = perma; var _linklistid = entry.id; if (db.linklists.Where(x => x.permalink == perma1 && x.subdomainid == subdomainid.Value && x.id != _linklistid).Count() != 0) { perma = string.Format("{0}-{1}", db.linklists.Max(x => x.id) + 1, perma); } list.permalink = perma.ToMaxLength(100); list.title = entry.title; foreach (var entryLink in entry.links) { var link = new link(); if (string.IsNullOrEmpty(entryLink.id)) { list.links.Add(link); } else { link = list.links.Where(x => x.id.ToString() == entryLink.id).SingleOrDefault(); if (link == null) { return(SendJsonErrorResponse("Unable to find link:" + entryLink.id)); } } link.title = entryLink.title; link.type = (short)entryLink.link_type; switch (entryLink.link_type) { case LinkType.BLOG: var blog = MASTERdomain.blogs.Where(x => x.id.ToString() == entryLink.url_selected).SingleOrDefault(); if (blog != null) { link.url = "/blogs/" + blog.permalink; } break; case LinkType.FRONTPAGE: link.url = Link.DEFAULT_FRONTPAGE; break; case LinkType.COLLECTION: var collection = MASTERdomain.product_collections.Where(x => x.id.ToString() == entryLink.url_selected). SingleOrDefault(); if (collection != null) { link.url = "/collections/" + collection.permalink; if (!string.IsNullOrEmpty(entryLink.url_filter)) { link.url += ("/" + entryLink.url_filter.Replace(",", "+")); } } break; case LinkType.PAGE: var page = MASTERdomain.pages.Where(x => x.id.ToString() == entryLink.url_selected).SingleOrDefault(); if (page != null) { link.url = "/pages/" + page.permalink; } break; case LinkType.PRODUCT: var product = MASTERdomain.products.Where(x => x.id.ToString() == entryLink.url_selected).SingleOrDefault(); if (product != null) { link.url = product.ToLiquidProductUrl(); } break; case LinkType.SEARCHPAGE: link.url = Link.DEFAULT_SEARCHPAGE; break; case LinkType.WEB: if (!string.IsNullOrEmpty(entryLink.url_raw)) { link.url = entryLink.url_raw; } break; default: throw new ArgumentOutOfRangeException(); } } } repository.Save(); return(Json("Link lists saved successfully".ToJsonOKMessage())); }
public static void GenerateDefaultStructures(long subdomainid) { using (var repository = new TradelrRepository()) { var mastersubdomain = repository.GetSubDomain(subdomainid); if (mastersubdomain == null) { Syslog.Write("Can't generate liquid structures for domainid: " + subdomainid); return; } if (mastersubdomain.theme != null) { // already initialise, return return; } // init default theme (SOLO) mastersubdomain.theme = new DBML.theme() { created = DateTime.UtcNow, title = "Solo", preset = "", url = "/Content/templates/store/themes/solo/thumb.jpg" }; // do liquid stuff var page_about = new page() { name = "About Us", permalink = "about-us", creator = mastersubdomain.organisation.users.First().id, updated = DateTime.UtcNow, settings = (int)PageSettings.VISIBLE }; using (var reader = File.OpenText(GeneralConstants.APP_ROOT_DIR + "Content/templates/store/aboutus.txt")) { page_about.content = reader.ReadToEnd(); } mastersubdomain.pages.Add(page_about); var linklist_mainmenu = new linklist() { permalink = "main-menu", permanent = true, title = "Main Menu" }; mastersubdomain.linklists.Add(linklist_mainmenu); var link_home = new link { title = "Home", type = (int)LinkType.FRONTPAGE, url = "/" }; var link_catalog = new link() { title = "Catalog", type = (int)LinkType.WEB, url = "/collections/all" }; var link_about = new link() { title = "About Us", type = (int)LinkType.PAGE, url = "/pages/about-us" }; linklist_mainmenu.links.Add(link_home); linklist_mainmenu.links.Add(link_catalog); linklist_mainmenu.links.Add(link_about); var linklist_footer = new linklist() { permalink = "footer", permanent = true, title = "Footer" }; mastersubdomain.linklists.Add(linklist_footer); var link_search = new link { title = "Search", type = (int)LinkType.SEARCHPAGE, url = "/search" }; linklist_footer.links.Add(link_search); linklist_footer.links.Add(link_about); // create default collection var collection = new product_collection() { name = "Frontpage", permalink = "frontpage", settings = (int)(CollectionSettings.VISIBLE | CollectionSettings.PERMANENT) }; mastersubdomain.product_collections.Add(collection); // finally save repository.Save(); // copy theme files var handler = new ThemeHandler(mastersubdomain, false); new Thread(() => { var source = new DirectoryInfo(GeneralConstants.APP_ROOT_DIR + "Content/templates/store/themes/solo"); handler.CopyThemeToUserThemeDirectory(source); }).Start(); // copy mobile theme files var handler_mobile = new ThemeHandler(mastersubdomain, true); new Thread(() => { var source = handler.GetMobileThemeRepositorySourceDir(); handler_mobile.CopyThemeToUserThemeDirectory(source); }).Start(); } }