Exemple #1
0
 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
     });
 }
Exemple #2
0
        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()));
        }
Exemple #3
0
        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();
            }
        }