Exemplo n.º 1
0
        protected string GetMoveUrl(object dataItem, object dataItemId)
        {
            CatalogNodeType nodeType      = (CatalogNodeType)dataItem;
            int             catalogNodeId = (int)dataItemId;
            string          url           = "~/Admin/Catalog/MoveCatalogObjects.aspx";

            url = Page.ResolveUrl(url);
            switch (nodeType)
            {
            case CatalogNodeType.Category:
                url += "?CategoryId=" + this.CurrentCategoryId.ToString() + string.Format("&Objects={0}:{1}", catalogNodeId, (byte)CatalogNodeType.Category);
                break;

            case CatalogNodeType.Product:
                url += "?CategoryId=" + this.CurrentCategoryId.ToString() + string.Format("&Objects={0}:{1}", catalogNodeId, (byte)CatalogNodeType.Product);
                break;

            case CatalogNodeType.Webpage:
                url += "?CategoryId=" + this.CurrentCategoryId.ToString() + string.Format("&Objects={0}:{1}", catalogNodeId, (byte)CatalogNodeType.Webpage);
                break;

            case CatalogNodeType.Link:
                url += "?CategoryId=" + this.CurrentCategoryId.ToString() + string.Format("&Objects={0}:{1}", catalogNodeId, (byte)CatalogNodeType.Link);
                break;

            default:
                url = "~/Admin/Catalog/Browse.aspx";
                break;
            }
            return(url);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Parses the display page comment header.
        /// </summary>
        /// <param name="filePath">The full path to the file to parse.</param>
        /// <param name="virtualPath">The virtual path of the file to register with the DisplayPage instance.</param>
        /// <returns>If the display page comment header is found, returns the DisplayPage instance.  Returns null if the comment header is not found or the file does not exist.</returns>
        public static DisplayPage ParseFromFile(string filePath, string virtualFilePath)
        {
            DisplayPage displayPage = null;

            if (File.Exists(filePath))
            {
                try
                {
                    string fileContent = File.ReadAllText(filePath);
                    Match  headerMatch = Regex.Match(fileContent, "<DisplayPage>[^\x00]*?</DisplayPage>");
                    if (headerMatch.Success)
                    {
                        XmlDocument header = new XmlDocument();
                        header.LoadXml(headerMatch.Value);


                        string          name        = XmlUtility.GetElementValue(header.DocumentElement, "Name");
                        CatalogNodeType nodeType    = (CatalogNodeType)Enum.Parse(typeof(CatalogNodeType), XmlUtility.GetElementValue(header.DocumentElement, "NodeType"));
                        string          description = XmlUtility.GetElementValue(header.DocumentElement, "Description");
                        displayPage = new DisplayPage(virtualFilePath, name, nodeType, description);
                    }
                }
                catch (Exception ex)
                {
                    displayPage = null;
                    Logger.Warn("Error while parsing file '" + filePath + "' for display page. ", ex);
                }
            }
            return(displayPage);
        }
Exemplo n.º 3
0
        protected string GetEditUrl(object dataItem, object dataItemId)
        {
            CatalogNodeType nodeType      = (CatalogNodeType)dataItem;
            int             catalogNodeId = (int)dataItemId;
            string          url;

            switch (nodeType)
            {
            case CatalogNodeType.Category:
                url = "~/Admin/Catalog/EditCategory.aspx?CategoryId=" + catalogNodeId.ToString();
                break;

            case CatalogNodeType.Product:
                url = "~/Admin/products/EditProduct.aspx?ProductId=" + catalogNodeId.ToString() + "&CategoryId=" + this.CurrentCategoryId.ToString();
                break;

            case CatalogNodeType.Webpage:
                url = "~/Admin/Catalog/EditWebpage.aspx?WebpageId=" + catalogNodeId.ToString() + "&CategoryId=" + this.CurrentCategoryId.ToString();
                break;

            case CatalogNodeType.Link:
                url = "~/Admin/Catalog/EditLink.aspx?LinkId=" + catalogNodeId.ToString() + "&CategoryId=" + this.CurrentCategoryId.ToString();
                break;

            default:
                url = "~/Admin/Catalog/Browse.aspx";
                break;
            }
            return(Page.ResolveUrl(url));
        }
Exemplo n.º 4
0
 public DisplayPage(string displayPageFile, string name, CatalogNodeType nodeType, string description)
 {
     _DisplayPageFile = displayPageFile;
     _Name            = name;
     _NodeType        = nodeType;
     _Description     = description;
 }
Exemplo n.º 5
0
        /// <summary>
        /// Registers the catalog node that is primarily associated with this request
        /// </summary>
        /// <param name="nodeId">ID of the catalog node</param>
        /// <param name="nodeType">Type of the catalog node</param>
        /// <remarks>This is intended for use with page tracking</remarks>
        public static void RegisterCatalogNode(int nodeId, CatalogNodeType nodeType)
        {
            HttpContext context = HttpContext.Current;

            context.Items["PageTracking_CatalogNodeId"]     = nodeId;
            context.Items["PageTracking_CatalogNodeTypeId"] = (Int16)nodeType;
        }
Exemplo n.º 6
0
        private static List <int> GetNonOrphanedCustomUrlIds(CatalogNodeType catalogNodeType)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(" SELECT CU.CustomUrlId ");
            sb.Append(" FROM ac_CustomUrls AS CU ");
            switch (catalogNodeType)
            {
            case CatalogNodeType.Product:
                sb.Append(" JOIN ac_Products AS P ON CU.CatalogNodeId = P.ProductId ");
                break;

            case CatalogNodeType.Category:
                sb.Append(" JOIN ac_Categories AS C ON CU.CatalogNodeId = C.CategoryId ");
                break;

            case CatalogNodeType.Webpage:
                sb.Append(" JOIN ac_Webpages AS WP ON CU.CatalogNodeId = WP.WebpageId ");
                break;

            case CatalogNodeType.Link:
                sb.Append(" JOIN ac_Links AS L ON CU.CatalogNodeId = L.LinkId ");
                break;
            }
            sb.Append(string.Format("WHERE CU.StoreId= {0} AND CatalogNodeTypeId = {1} ", Token.Instance.StoreId, (byte)catalogNodeType));
            return(GetIdList(sb.ToString()));
        }
Exemplo n.º 7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="nodeId">Id of the node</param>
 /// <param name="nodeType">node type</param>
 /// <param name="url">Url of the node</param>
 /// <param name="title">Node title</param>
 /// <param name="description">Description of the node</param>
 public CmsPathNode(int nodeId, CatalogNodeType nodeType, string url, string title, string description)
 {
     this._NodeId      = nodeId;
     this._NodeType    = nodeType;
     this._Url         = url;
     this._Title       = title;
     this._Description = description;
 }
Exemplo n.º 8
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="categoryId">Category Id of this catalog node</param>
 /// <param name="catalogNodeId">Catalog node Id of this catalog node</param>
 /// <param name="catalogNodeType">Type of this catalog node</param>
 /// <param name="orderBy">The value of OrderBy field</param>
 /// <param name="isDirty">Does this catalog node need to be saved to database or not</param>
 public CatalogNode(int categoryId, int catalogNodeId, CatalogNodeType catalogNodeType, Int16 orderBy, bool isDirty)
     : base()
 {
     this.CategoryId      = categoryId;
     this.CatalogNodeId   = catalogNodeId;
     this.CatalogNodeType = catalogNodeType;
     this.OrderBy         = orderBy;
     this.IsDirty         = isDirty;
 }
Exemplo n.º 9
0
        protected string GetPreviewUrl(object dataItem, object dataItemId, object dataItemName)
        {
            CatalogNodeType nodeType      = (CatalogNodeType)dataItem;
            int             catalogNodeId = (int)dataItemId;
            string          nodeName      = (string)dataItemName;
            string          url           = UrlGenerator.GetBrowseUrl(catalogNodeId, nodeType, nodeName);

            return(Page.ResolveUrl(url));
        }
Exemplo n.º 10
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="categoryId">Category Id of this catalog node</param>
 /// <param name="catalogNodeId">Catalog node Id of this catalog node</param>
 /// <param name="catalogNodeType">Type of this catalog node</param>
 /// <param name="orderBy">The value of OrderBy field</param>
 /// <param name="isDirty">Does this catalog node need to be saved to database or not</param>
 /// <param name="visibility">The visibility of this catalog node</param>
 /// <param name="name">The name of this catalog node</param>
 /// <param name="summary">The summary field of this catalog node</param>
 /// <param name="thumbnailUrl">The thumbnail url of this catalog node</param>
 /// <param name="thumbnailAltText">The alt text for the thumbnail of this catalog node</param>
 public CatalogNode(int categoryId, int catalogNodeId, CatalogNodeType catalogNodeType, Int16 orderBy, bool isDirty, CatalogVisibility visibility, string name, string summary, string thumbnailUrl, string thumbnailAltText)
     : this(categoryId, catalogNodeId, catalogNodeType, orderBy, isDirty)
 {
     this.Visibility                = visibility;
     this.Name                      = name;
     this.Summary                   = summary;
     this.ThumbnailUrl              = thumbnailUrl;
     this.ThumbnailAltText          = thumbnailAltText;
     this.m_ICatalogableInitialized = true;
 }
Exemplo n.º 11
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="categoryId">Category Id for this path node</param>
 /// <param name="catalogNodeId">CatalogNode Id for this path node</param>
 /// <param name="catalogNodeType">CatalogNode type for this path node</param>
 /// <param name="visibility">Visibility setting for this path node</param>
 /// <param name="name">Name of this path node</param>
 /// <param name="summary">Summary of this path node</param>
 /// <param name="thumbnailUrl">Thumbnail URL for this path node</param>
 /// <param name="thumbnailAltText">Alternate text for the thumbnail for this path node</param>
 /// <param name="theme">The theme applied to this path node</param>
 public CatalogPathNode(int categoryId, int catalogNodeId, CatalogNodeType catalogNodeType, CatalogVisibility visibility, string name, string summary, string thumbnailUrl, string thumbnailAltText, string theme)
 {
     this.CategoryId       = categoryId;
     this.CatalogNodeId    = catalogNodeId;
     this.CatalogNodeType  = catalogNodeType;
     this.Visibility       = visibility;
     this.Name             = name;
     this.Summary          = summary;
     this.ThumbnailUrl     = thumbnailUrl;
     this.ThumbnailAltText = thumbnailAltText;
     this.Theme            = theme;
 }
Exemplo n.º 12
0
        public static void FindCatalogable(out ICatalogable catalogable, out CatalogNodeType catalogableType)
        {
            HttpContext context = HttpContext.Current;

            if (context != null)
            {
                //CHECK FOR LINK
                int  linkId = AbleCommerce.Code.PageHelper.GetLinkId();
                Link link   = LinkDataSource.Load(linkId);
                if (link != null)
                {
                    catalogable     = link;
                    catalogableType = CatalogNodeType.Link;
                    return;
                }
                //CHECK FOR WEBPAGE
                int     webpageId = AbleCommerce.Code.PageHelper.GetWebpageId();
                Webpage webpage   = WebpageDataSource.Load(webpageId);
                if (webpage != null)
                {
                    catalogable     = webpage;
                    catalogableType = CatalogNodeType.Webpage;
                    return;
                }
                //CHECK FOR PRODUCT
                int     productId = AbleCommerce.Code.PageHelper.GetProductId();
                Product product   = ProductDataSource.Load(productId);
                if (product != null)
                {
                    catalogable     = product;
                    catalogableType = CatalogNodeType.Product;
                    return;
                }
                //CHECK FOR CATEGORY
                int      categoryId = AlwaysConvert.ToInt(context.Request.QueryString["CategoryId"]);
                Category category   = CategoryDataSource.Load(categoryId);
                if (category != null)
                {
                    catalogable     = category;
                    catalogableType = CatalogNodeType.Category;
                    return;
                }
            }
            catalogable     = null;
            catalogableType = CatalogNodeType.Category;
            return;
        }
Exemplo n.º 13
0
        /// <summary>
        /// Registers the catalog page visit
        /// </summary>
        /// <param name="nodeId">ID of the catalog node</param>
        /// <param name="nodeType">Type of the catalog node</param>
        /// <param name="pageTitle">Title of the page</param>
        /// <remarks>This is intended for use with page tracking</remarks>
        public static void RegisterPageVisit(int nodeId, CatalogNodeType nodeType, string pageTitle)
        {
            //REGISTER THE PAGEVIEW FOR PERSISTENT PAGE TRACKING
            CommerceBuilder.Reporting.PageView.RegisterCatalogNode(nodeId, nodeType);

            HttpContext context  = HttpContext.Current;
            string      uriStem  = context.Request.Url.AbsolutePath;
            string      uriQuery = context.Request.Url.Query.TrimStart("?".ToCharArray());

            // CHECK IF ITS ALREADY IN LIST
            IList <PageVisit> pageVisits = GetUserPageVisits();
            PageVisit         pageVisit  = pageVisits.FirstOrDefault(p => (p.UriStem == uriStem && p.UriQuery == uriQuery));

            if (pageVisit != null)
            {
                pageVisit.ActivityDate = LocaleHelper.LocalNow;
                pageVisit.VisitCount++;
                pageVisits.Sort();
            }
            else
            {
                // ADD THE NEW PAGE VISIT
                pageVisit = new PageVisit();
                pageVisit.ActivityDate    = LocaleHelper.LocalNow;
                pageVisit.CatalogNodeId   = nodeId;
                pageVisit.CatalogNodeType = nodeType;
                pageVisit.PageTitle       = pageTitle;
                pageVisit.UriStem         = uriStem;
                pageVisit.UriQuery        = uriQuery;
                pageVisit.VisitCount      = 1;
                pageVisits.Sort();

                // ADD IT TO COLLECTION
                pageVisits.Add(pageVisit);

                // ENSURE MAXIMUM SIZE, REMOVE FROM END IF IT EXCEEDS THE SIZE
                if (pageVisits.Count > _cacheSize)
                {
                    for (int i = _cacheSize; i < pageVisits.Count; i++)
                    {
                        pageVisits.RemoveAt(i);
                    }
                }
            }
        }
Exemplo n.º 14
0
        protected string GetCatalogIconUrl(object dataItem)
        {
            CatalogNodeType nodeType = ((CustomUrl)dataItem).CatalogNodeType;

            switch (nodeType)
            {
            case CatalogNodeType.Category:
                return(_IconPath + "Category.gif");

            case CatalogNodeType.Product:
                return(_IconPath + "Product.gif");

            case CatalogNodeType.Webpage:
                return(_IconPath + "Webpage.gif");

            case CatalogNodeType.Link:
                return(_IconPath + "Link.gif");
            }
            return(string.Empty);
        }
Exemplo n.º 15
0
        protected CatalogNode CreateSubNode(CatalogNodeType type, string nodePath, string nodeName, bool hasSubNodes)
        {
            switch (type)
            {
            case CatalogNodeType.DocTypeSynonymGroup:
                return(new DocTypeSynonymGroupNode(nodePath, nodeName, hasSubNodes));

            case CatalogNodeType.DocType:
                return(new DocTypeNode(nodePath, nodeName, hasSubNodes));

            case CatalogNodeType.Company:
                return(new CompanyNode(nodePath, nodeName, hasSubNodes));

            case CatalogNodeType.Person:
                return(new PersonNode(nodePath, nodeName, hasSubNodes));

            case CatalogNodeType.NoPerson:
                return(new NoPersonNode(nodePath, nodeName, hasSubNodes));
            }
            return(null);
        }
Exemplo n.º 16
0
        private bool MatchTypes(CatalogNodeType catalogNodeType, ICatalogable catalogItem)
        {
            Type catalogItemType = catalogItem.GetType();

            if (catalogItemType == typeof(Category) && catalogNodeType == CatalogNodeType.Category)
            {
                return(true);
            }
            else if (catalogItemType == typeof(Product) && catalogNodeType == CatalogNodeType.Product)
            {
                return(true);
            }
            else if (catalogItemType == typeof(Webpage) && catalogNodeType == CatalogNodeType.Webpage)
            {
                return(true);
            }
            else if (catalogItemType == typeof(Link) && catalogNodeType == CatalogNodeType.Link)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 17
0
        protected void DoDelete(CatalogNodeType catalogNodeType, int catalogNodeId)
        {
            switch (catalogNodeType)
            {
            case CatalogNodeType.Category:
                Category category = CategoryDataSource.Load(catalogNodeId);
                if (category != null)
                {
                    category.Delete();
                }
                break;

            case CatalogNodeType.Product:
                Product product = ProductDataSource.Load(catalogNodeId);
                if (product != null)
                {
                    product.Delete();
                }
                break;

            case CatalogNodeType.Webpage:
                Webpage webpage = WebpageDataSource.Load(catalogNodeId);
                if ((webpage != null) && (webpage.Categories.Count < 2))
                {
                    webpage.Delete();
                }
                break;

            case CatalogNodeType.Link:
                Link link = LinkDataSource.Load(catalogNodeId);
                if ((link != null) && (link.Categories.Count < 2))
                {
                    link.Delete();
                }
                break;
            }
            CGrid.DataBind();
        }
Exemplo n.º 18
0
        /// <summary>
        /// Gets a browsing URL for the given node
        /// </summary>
        /// <param name="categoryId">The category to which the node belongs</param>
        /// <param name="nodeId">The Id of the node for which to get the browse URL</param>
        /// <param name="nodeType">The type of node</param>
        /// <param name="name">The name to use in the link</param>
        /// <returns>A browsing URL for the given node</returns>
        public string GetBrowseUrl(int categoryId, int nodeId, CatalogNodeType nodeType, string name)
        {
            switch (nodeType)
            {
            case CatalogNodeType.Category:
                return(string.Format("~/{1}-C{0}.aspx", nodeId, SanitizeName(name)));

            case CatalogNodeType.Product:
                return(string.Format("~/{1}-P{0}C{2}.aspx", nodeId, SanitizeName(name), categoryId));

            case CatalogNodeType.Webpage:
                return(string.Format("~/{1}-W{0}C{2}.aspx", nodeId, SanitizeName(name), categoryId));

            case CatalogNodeType.Link:
                Link link = LinkDataSource.Load(nodeId);
                if (link.DisplayPage.Length == 0)
                {
                    return(link.TargetUrl);
                }
                return(string.Format("~/{1}-L{0}C{2}.aspx", nodeId, SanitizeName(name), categoryId));
            }
            return(String.Empty);
        }
Exemplo n.º 19
0
        protected void DoDelete(CatalogNodeType catalogNodeType, int catalogNodeId)
        {
            switch (catalogNodeType)
            {
            case CatalogNodeType.Category:
                Category category = CategoryDataSource.Load(catalogNodeId);
                if (category != null)
                {
                    category.Delete();
                }
                break;

            case CatalogNodeType.Product:
                Product product = ProductDataSource.Load(catalogNodeId);
                if (product != null)
                {
                    if (product.Categories.Count > 1)
                    {
                        product.Categories.Remove(CurrentCategory.Id);
                        product.Categories.Save();
                    }
                    else
                    {
                        product.Delete();
                    }
                }
                break;

            case CatalogNodeType.Webpage:
                Webpage webpage = WebpageDataSource.Load(catalogNodeId);
                if (webpage != null)
                {
                    if (webpage.Categories.Count > 1)
                    {
                        webpage.Categories.Remove(CurrentCategory.Id);
                        webpage.Categories.Save();
                    }
                    else
                    {
                        webpage.Delete();
                    }
                }
                break;

            case CatalogNodeType.Link:
                Link link = LinkDataSource.Load(catalogNodeId);
                if (link != null)
                {
                    if (link.Categories.Count > 1)
                    {
                        link.Categories.Remove(CurrentCategory.Id);
                        link.Categories.Save();
                    }
                    else
                    {
                        link.Delete();
                    }
                }
                break;
            }
        }
Exemplo n.º 20
0
        protected void CGrid_DataBound(object sender, EventArgs e)
        {
            List <string> categories = new List <string>();
            List <string> products   = new List <string>();
            List <string> links      = new List <string>();
            List <string> webpages   = new List <string>();

            for (int i = 0; i < CGrid.Rows.Count; i++)
            {
                GridViewRow gvr = CGrid.Rows[i];
                CheckBox    cb  = (CheckBox)gvr.FindControl("Selected");

                DataKey         dataKey         = ((GridView)sender).DataKeys[gvr.DataItemIndex];
                int             catalogNodeId   = (int)dataKey.Values[0];
                CatalogNodeType catalogNodeType = (CatalogNodeType)dataKey.Values[1];
                switch (catalogNodeType)
                {
                case CatalogNodeType.Category:
                    categories.Add(cb.ClientID);
                    break;

                case CatalogNodeType.Product:
                    products.Add(cb.ClientID);
                    break;

                case CatalogNodeType.Link:
                    links.Add(cb.ClientID);
                    break;

                case CatalogNodeType.Webpage:
                    webpages.Add(cb.ClientID);
                    break;
                }
            }
            if (categories.Count > 0)
            {
                string catsArray = "new Array('" + String.Join("','", categories.ToArray()) + "')";
                SelectCategories.OnClientClick = "selectCatalogItems(" + catsArray + ");return false;";
            }
            else
            {
                SelectCategories.OnClientClick = "return false;";
            }

            if (products.Count > 0)
            {
                string productsArray = "new Array('" + String.Join("','", products.ToArray()) + "')";
                SelectProducts.OnClientClick = "selectCatalogItems(" + productsArray + ");return false;";
            }
            else
            {
                SelectProducts.OnClientClick = "return false;";
            }

            if (links.Count > 0)
            {
                string linksArray = "new Array('" + String.Join("','", links.ToArray()) + "')";
                SelectLinks.OnClientClick = "selectCatalogItems(" + linksArray + ");return false;";
            }
            else
            {
                SelectLinks.OnClientClick = "return false;";
            }

            if (webpages.Count > 0)
            {
                string catsArray = "new Array('" + String.Join("','", webpages.ToArray()) + "')";
                SelectWebpages.OnClientClick = "selectCatalogItems(" + catsArray + ");return false;";
            }
            else
            {
                SelectWebpages.OnClientClick = "return false;";
            }
        }
Exemplo n.º 21
0
        protected void CGrid_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            if (e.CommandName.StartsWith("Do_"))
            {
                string[]        args            = e.CommandArgument.ToString().Split("|".ToCharArray());
                CatalogNodeType catalogNodeType = (CatalogNodeType)AlwaysConvert.ToInt(args[0]);
                int             catalogNodeId   = AlwaysConvert.ToInt(args[1]);
                switch (e.CommandName)
                {
                case "Do_Open":
                    //IF CATEGORY, REBIND CURRENT PAGE,
                    //OTHERWISE REDIRECT TO CORRECT EDIT PAGE
                    switch (catalogNodeType)
                    {
                    case CatalogNodeType.Category:
                        //REBIND CURRENT CATEGORY
                        CurrentCategoryId = catalogNodeId;
                        //RESET PAGE INDEX
                        CGrid.PageIndex = 0;
                        break;

                    case CatalogNodeType.Product:
                        Response.Redirect("~/Admin/Products/EditProduct.aspx?CategoryId=" + CurrentCategoryId.ToString() + "&ProductId=" + catalogNodeId.ToString());
                        break;

                    case CatalogNodeType.Webpage:
                        Response.Redirect("~/Admin/Catalog/EditWebpage.aspx?CategoryId=" + CurrentCategoryId.ToString() + "&WebpageId=" + catalogNodeId.ToString());
                        break;

                    case CatalogNodeType.Link:
                        Response.Redirect("~/Admin/Catalog/EditLink.aspx?CategoryId=" + CurrentCategoryId.ToString() + "&LinkId=" + catalogNodeId.ToString());
                        break;
                    }
                    break;

                case "Do_Copy":
                    // THIS WILL COPY THE PRODUCTS WITH THE ORIGNAL CATEGORY INFORMATION PRESERVED
                    CatalogDataSource.Copy(catalogNodeId, catalogNodeType, 0);
                    break;

                case "Do_Delete":
                    DoDelete(catalogNodeType, catalogNodeId);
                    break;

                case "Do_Pub":
                    ICatalogable pubNode = CatalogDataSource.Load(catalogNodeId, catalogNodeType);
                    if (pubNode != null)
                    {
                        //FOR CATEGORIES, WE MUST FIND OUT MORE INFORMATION
                        if (pubNode is Category)
                        {
                            Response.Redirect("ChangeVisibility.aspx?CategoryId=" + ((Category)pubNode).ParentId.ToString() + String.Format("&Objects={0}:{1}", ((Category)pubNode).Id, (byte)(CatalogNodeType.Category)));
                        }
                        //FOR OTHER OBJECTS, WE CAN ADJUST
                        switch (pubNode.Visibility)
                        {
                        case CatalogVisibility.Public:
                            pubNode.Visibility = CatalogVisibility.Hidden;
                            break;

                        case CatalogVisibility.Hidden:
                            pubNode.Visibility = CatalogVisibility.Private;
                            break;

                        default:
                            pubNode.Visibility = CatalogVisibility.Public;
                            break;
                        }
                        if (pubNode is Product)
                        {
                            ((Product)pubNode).Save();
                        }
                        else if (pubNode is Webpage)
                        {
                            ((Webpage)pubNode).Save();
                        }
                        else if (pubNode is Link)
                        {
                            ((Link)pubNode).Save();
                        }
                    }
                    break;
                }
            }
            CGrid.DataBind();
        }
Exemplo n.º 22
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="categoryId">The category Id of this node</param>
 /// <param name="catalogNodeId">The catalog node id of this node</param>
 /// <param name="catalogNodeType">The type of this catalog node</param>
 /// <param name="orderBy">The value of OrderBy field</param>
 /// <param name="isDirty">Does this node need to be saved to the database?</param>
 /// <param name="visibility">The visibility setting of this node</param>
 /// <param name="name">The name of this node</param>
 /// <param name="summary">The summary field of this node</param>
 /// <param name="thumbnailUrl">The thumbnail url of this node</param>
 /// <param name="thumbnailAltText">The alt text for the thumbnail of this node</param>
 /// <param name="price">The Price of the associated product</param>
 public CatalogProductNode(int categoryId, int catalogNodeId, CatalogNodeType catalogNodeType, Int16 orderBy, bool isDirty, CatalogVisibility visibility, string name, string summary, string thumbnailUrl, string thumbnailAltText, LSDecimal price)
     : base(categoryId, catalogNodeId, catalogNodeType, orderBy, isDirty, visibility, name, summary, thumbnailUrl, thumbnailAltText)
 {
     this.Price = price;
 }
        protected void InitializeCatalogItems()
        {
            String items = Request.QueryString["Objects"];

            if (String.IsNullOrEmpty(items))
            {
                return;
            }
            String[]      itemsArray  = items.Split(',');
            List <String> categoryIds = new List <String>();
            List <String> productIds  = new List <String>();
            List <String> linkIds     = new List <String>();
            List <String> webpageIds  = new List <String>();

            // Sort out items in saperate lists
            foreach (String item in itemsArray)
            {
                String[]        itemValues      = item.Split(':');
                int             catalogNodeId   = AlwaysConvert.ToInt(itemValues[0]);
                CatalogNodeType catalogNodeType = (CatalogNodeType)AlwaysConvert.ToByte(itemValues[1]);
                switch (catalogNodeType)
                {
                case CatalogNodeType.Category:
                    categoryIds.Add(catalogNodeId.ToString());
                    break;

                case CatalogNodeType.Product:
                    productIds.Add(catalogNodeId.ToString());
                    break;

                case CatalogNodeType.Link:
                    linkIds.Add(catalogNodeId.ToString());
                    break;

                case CatalogNodeType.Webpage:
                    webpageIds.Add(catalogNodeId.ToString());
                    break;
                }
            }

            trIncludeContents.Visible = (categoryIds.Count > 0);
            if (categoryIds.Count > 0)
            {
                ICriteria criteria = CommerceBuilder.DomainModel.NHibernateHelper.CreateCriteria <Category>();
                criteria.Add(Restrictions.In("Id", categoryIds.ToArray()));
                _Categories = CategoryDataSource.LoadForCriteria(criteria);
                if (_Categories != null && _Categories.Count > 0)
                {
                    foreach (Category category in _Categories)
                    {
                        _CatalogItems.Add(category);
                    }
                }
            }

            if (productIds.Count > 0)
            {
                ICriteria criteria = CommerceBuilder.DomainModel.NHibernateHelper.CreateCriteria <Product>();
                criteria.Add(Restrictions.In("Id", productIds.ToArray()));
                _Products = ProductDataSource.LoadForCriteria(criteria);
                if (_Products != null && _Products.Count > 0)
                {
                    foreach (Product product in _Products)
                    {
                        _CatalogItems.Add(product);
                    }
                }
            }

            if (linkIds.Count > 0)
            {
                ICriteria criteria = CommerceBuilder.DomainModel.NHibernateHelper.CreateCriteria <Link>();
                criteria.Add(Restrictions.In("Id", linkIds.ToArray()));
                _Links = LinkDataSource.LoadForCriteria(criteria);
                if (_Links != null && _Links.Count > 0)
                {
                    foreach (Link link in _Links)
                    {
                        _CatalogItems.Add(link);
                    }
                }
            }

            if (webpageIds.Count > 0)
            {
                ICriteria criteria = CommerceBuilder.DomainModel.NHibernateHelper.CreateCriteria <Webpage>();
                criteria.Add(Restrictions.In("Id", webpageIds.ToArray()));
                _Webpages = WebpageDataSource.LoadForCriteria(criteria);
                if (_Webpages != null && _Webpages.Count > 0)
                {
                    foreach (Webpage webpage in _Webpages)
                    {
                        _CatalogItems.Add(webpage);
                    }
                }
            }

            if (!Page.IsPostBack)
            {
                if (_CatalogItems.Count == 1)
                {
                    ICatalogable catalogable = _CatalogItems[0];
                    switch (catalogable.Visibility)
                    {
                    case CatalogVisibility.Public:
                        VisPublic.Checked = true;
                        break;

                    case CatalogVisibility.Private:
                        VisPrivate.Checked = true;
                        break;

                    case CatalogVisibility.Hidden:
                        VisHidden.Checked = true;
                        break;

                    default:
                        VisPrivate.Checked = true;
                        break;
                    }
                }
                else if (_CatalogItems.Count > 1)
                {
                    VisPrivate.Checked = false;
                    VisPublic.Checked  = false;
                    VisHidden.Checked  = false;
                }
            }
        }
Exemplo n.º 24
0
        private static void DeleteOrphanedCustomUrls(List <int> nonOrphanedCustomUrlIds, CatalogNodeType catalogNodeType)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(" DELETE FROM ac_CustomUrls WHERE StoreId= @storeId ");
            sb.Append(" AND CatalogNodeTypeId=@catalogNodeType ");
            if (nonOrphanedCustomUrlIds.Count > 0)
            {
                sb.Append(string.Format(" AND CustomUrlId NOT IN ({0}) ", string.Join(",", nonOrphanedCustomUrlIds.ConvertAll <string>(delegate(int i) { return(i.ToString()); }).ToArray())));
            }
            Database  database  = Token.Instance.Database;
            DbCommand dbCommand = database.GetSqlStringCommand(sb.ToString());

            database.AddInParameter(dbCommand, "@storeId", DbType.Int32, Token.Instance.StoreId);
            database.AddInParameter(dbCommand, "@catalogNodeType", DbType.Byte, (byte)catalogNodeType);
            database.ExecuteNonQuery(dbCommand);
        }
Exemplo n.º 25
0
        protected void CGrid_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            if (e.CommandName.StartsWith("Do_"))
            {
                string[]        args            = e.CommandArgument.ToString().Split("|".ToCharArray());
                CatalogNodeType catalogNodeType = (CatalogNodeType)AlwaysConvert.ToInt(args[0]);
                int             catalogNodeId   = AlwaysConvert.ToInt(args[1]);
                int             index;
                switch (e.CommandName)
                {
                case "Do_Copy":
                    CatalogDataSource.Copy(catalogNodeId, catalogNodeType, CurrentCategory.Id);
                    break;

                case "Do_Delete":
                    DoDelete(catalogNodeType, catalogNodeId);
                    break;

                case "Do_Up":
                    index = CurrentCategory.CatalogNodes.IndexOf(CurrentCategory.Id, catalogNodeId, (byte)catalogNodeType);
                    if (index > 0)
                    {
                        CatalogNode tempNode = CurrentCategory.CatalogNodes[index - 1];
                        CurrentCategory.CatalogNodes[index - 1] = CurrentCategory.CatalogNodes[index];
                        CurrentCategory.CatalogNodes[index]     = tempNode;
                        short newOrderBy = 0;
                        foreach (CatalogNode node in CurrentCategory.CatalogNodes)
                        {
                            node.OrderBy = newOrderBy;
                            node.Save();
                            newOrderBy++;
                        }

                        // recalculate orderby for impacted child products
                        RecalculateOrderBy(CurrentCategory.CatalogNodes[index - 1]);
                        RecalculateOrderBy(CurrentCategory.CatalogNodes[index]);
                    }
                    break;

                case "Do_Down":
                    index = CurrentCategory.CatalogNodes.IndexOf(CurrentCategory.Id, catalogNodeId, (byte)catalogNodeType);
                    if (index < CurrentCategory.CatalogNodes.Count - 1)
                    {
                        CatalogNode tempNode = CurrentCategory.CatalogNodes[index + 1];
                        CurrentCategory.CatalogNodes[index + 1] = CurrentCategory.CatalogNodes[index];
                        CurrentCategory.CatalogNodes[index]     = tempNode;
                        short newOrderBy = 0;
                        foreach (CatalogNode node in CurrentCategory.CatalogNodes)
                        {
                            node.OrderBy = newOrderBy;
                            node.Save();
                            newOrderBy++;
                        }

                        // recalculate orderby for impacted child products
                        RecalculateOrderBy(CurrentCategory.CatalogNodes[index + 1]);
                        RecalculateOrderBy(CurrentCategory.CatalogNodes[index]);
                    }
                    break;

                case "Do_Pub":
                    index = CurrentCategory.CatalogNodes.IndexOf(CurrentCategory.Id, catalogNodeId, (byte)catalogNodeType);
                    if (index > -1)
                    {
                        CatalogNode node = CurrentCategory.CatalogNodes[index];
                        //FOR CATEGORIES, WE MUST FIND OUT MORE INFORMATION
                        if (node.CatalogNodeType == CatalogNodeType.Category)
                        {
                            Response.Redirect("ChangeVisibility.aspx?CategoryId=" + CurrentCategory.Id.ToString() + String.Format("&Objects={0}:{1}", node.CatalogNodeId, (byte)node.CatalogNodeType));
                        }
                        //FOR OTHER OBJECTS, WE CAN ADJUST
                        switch (node.Visibility)
                        {
                        case CatalogVisibility.Public:
                            node.Visibility = CatalogVisibility.Hidden;
                            break;

                        case CatalogVisibility.Hidden:
                            node.Visibility = CatalogVisibility.Private;
                            break;

                        default:
                            node.Visibility = CatalogVisibility.Public;
                            break;
                        }
                        node.ChildObject.Visibility = node.Visibility;
                        node.Save(true);
                    }
                    break;
                }
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// Gets cms path for the given node. Only supported for Category type catalog node objects
        /// </summary>
        /// <param name="categoryId">Id of the category</param>
        /// <param name="currentNodeId">Id of the node</param>
        /// <param name="currentNodeType">Type of node</param>
        /// <returns>List of cms path nodes</returns>
        public static List <CmsPathNode> GetCmsPath(int categoryId, int currentNodeId, CatalogNodeType currentNodeType)
        {
            List <CmsPathNode> path        = new List <CmsPathNode>();
            Database           database    = Token.Instance.Database;
            StringBuilder      selectQuery = new StringBuilder();

            switch (currentNodeType)
            {
            case CatalogNodeType.Category:
                selectQuery.Append("SELECT CP.ParentId AS NodeId, 0 As NodeType, C.Name, C.Summary, CP.ParentLevel, CP.ParentNumber");
                selectQuery.Append(" FROM ac_CategoryParents AS CP INNER JOIN");
                selectQuery.Append(" ac_Categories C ON CP.ParentId = C.CategoryId");
                selectQuery.Append(" WHERE CP.CategoryId = @currentNodeId");
                selectQuery.Append(" ORDER BY CP.ParentLevel");
                break;

            default:
                throw new Exception("Not supported.");
            }
            DbCommand selectCommand = database.GetSqlStringCommand(selectQuery.ToString());

            database.AddInParameter(selectCommand, "@currentNodeId", DbType.Int32, currentNodeId);
            //EXECUTE THE COMMAND
            using (IDataReader dr = database.ExecuteReader(selectCommand))
            {
                int             nodeId;
                CatalogNodeType nodeType;
                String          url;
                String          title;
                String          description;
                while (dr.Read())
                {
                    nodeId   = dr.GetInt32(0);
                    nodeType = (CatalogNodeType)dr.GetInt32(1);
                    switch (nodeType)
                    {
                    case CatalogNodeType.Category:
                        url = "~/Admin/Catalog/Browse.aspx?CategoryId=" + nodeId.ToString();
                        break;

                    default:
                        url = string.Empty;
                        break;
                    }
                    title       = dr.GetString(2);
                    description = NullableData.GetString(dr, 3);
                    path.Add(new CmsPathNode(nodeId, nodeType, url, title, description));
                }
                dr.Close();
            }
            if (path.Count == 0)
            {
                return(null);
            }
            return(path);
        }