protected void UmbracoDefaultBeforeRequestInit(object sender, RequestInitEventArgs e)
        {
            try
            {
                //Domain.Core.Initialize.Init();
            }
            catch (Exception)
            {
                //throw;
            }
            try
            {
                var currentNode = Node.GetCurrent();

                if (ProductVariant.IsAlias(currentNode.NodeTypeAlias))
                {
                    var product = DomainHelper.GetProductById(currentNode.Parent.Id);
                    if (product != null)
                    {
                        HttpContext.Current.Response.RedirectPermanent(product.NiceUrl(), true);
                    }
                }
                else if (Product.IsAlias(currentNode.NodeTypeAlias))
                {
                    var product = DomainHelper.GetProductById(currentNode.Id);
                    if (product != null)
                    {
                        HttpContext.Current.Response.RedirectPermanent(product.NiceUrl(), true);
                    }
                }
                else if (Category.IsAlias(currentNode.NodeTypeAlias))
                {
                    var category = DomainHelper.GetCategoryById(currentNode.Id);
                    if (category != null)
                    {
                        HttpContext.Current.Response.RedirectPermanent(/* todo nicer */ RazorExtensions.ExtensionMethods.NiceUrl(category), true);
                    }
                }
            }
// ReSharper disable once EmptyGeneralCatchClause
            catch (Exception)
            {
                // intentionally left empty, because Umbraco will serve a 404
            }
        }
        private static void PublishedContentRequest_Prepared(object sender, EventArgs e)
        {
            var request = sender as PublishedContentRequest;

            if (request == null)
            {
                return;
            }

            var currentContent = request.PublishedContent;

            if (currentContent == null)
            {
                return;
            }

            if (ProductVariant.IsAlias(currentContent.DocumentTypeAlias) && currentContent.Parent != null)
            {
                var product = DomainHelper.GetProductById(currentContent.Parent.Id);
                if (product != null)
                {
                    UwebshopRequest.Current.Product = (IProduct)product;
                }
            }
            else if (uWebshop.Domain.Product.IsAlias(currentContent.DocumentTypeAlias))
            {
                var product = DomainHelper.GetProductById(currentContent.Id);
                if (product != null)
                {
                    UwebshopRequest.Current.Product = (IProduct)product;
                }
            }
            else if (Category.IsAlias(currentContent.DocumentTypeAlias))
            {
                var category = DomainHelper.GetCategoryById(currentContent.Id);
                if (category != null)
                {
                    UwebshopRequest.Current.Category = (ICategory)category;
                }
            }
        }
        private void ContentOnAfterUpdateDocumentCache(Document sender, DocumentCacheEventArgs documentCacheEventArgs)
        {
            //if (sender.ContentType.Alias.StartsWith("uwbs") && sender.ContentType.Alias != Order.NodeAlias)
            //todo: work with aliasses from config
            var alias = sender.ContentType.Alias;

            // todo: make a nice way for this block
            if (Product.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (ProductVariant.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (Category.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (PaymentProvider.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (PaymentProviderMethod.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (DiscountProduct.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (DiscountOrder.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (ShippingProvider.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (ShippingProviderMethod.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (Store.IsAlias(alias))
            {
                ResetAll(sender.Id, alias);
            }
            else if (alias.StartsWith("uwbs") && alias != Order.NodeAlias)
            {
                ResetAll(sender.Id, alias);
            }

            var storePickerProperty = sender.getProperty(Constants.StorePickerAlias);

            if (storePickerProperty != null)
            {
                int storeId;
                if (storePickerProperty.Value != null && int.TryParse(storePickerProperty.Value.ToString(), out storeId))
                {
                    var storeService = StoreHelper.StoreService;
                    var storeById    = storeService.GetById(storeId, null);
                    if (storeById != null)
                    {
                        storeService.TriggerStoreChangedEvent(storeById);
                    }
                }
            }

            if (alias.StartsWith(Settings.NodeAlias))
            {
                IO.Container.Resolve <ISettingsService>().TriggerSettingsChangedEvent(SettingsLoader.GetSettings());
            }

            if (alias.StartsWith(Store.NodeAlias))
            {
                //todo: naar nieuwe v6+ API omzetten
                var storeService = StoreHelper.StoreService;
                storeService.TriggerStoreChangedEvent(storeService.GetById(sender.Id, null));
                var node = new Node(sender.Id);
                if (!sender.Text.Equals(node.Name))
                {
                    StoreHelper.RenameStore(node.Name, sender.Text);
                }
            }
        }
Пример #4
0
        /// <summary>
        ///  Get node ID based on document
        /// </summary>
        /// <param name="documentTypeAlias"></param>
        /// <param name="documentName"></param>
        public static int GetNodeIdForDocument(string documentTypeAlias, string documentName)
        {
            try
            {
                if (documentTypeAlias != null && documentName != null)
                {
                    var it = library.GetXmlNodeByXPath(string.Format("//{0}[@nodeName = '{1}']", documentTypeAlias, documentName));

                    // todo: all uwebshop doctypes are now customizable, not only category/product/variant
                    //parent[starts-with(@name,'data')]
                    if (Category.IsAlias(documentTypeAlias) || Product.IsAlias(documentTypeAlias) || ProductVariant.IsAlias(documentTypeAlias))
                    {
                        // todo: IMPORTANT, incorrect logic (startwith needs to be on the first part)
                        it = library.GetXmlNodeByXPath(string.Format("//{0}[starts-with(@nodeName,'{1}') and not(starts-with(name(),'{1}Repository'))]", documentTypeAlias, documentName));
                    }

                    while (it.MoveNext())
                    {
                        if (it.Current == null)
                        {
                            continue;
                        }
                        {
                            var nodeId = Convert.ToInt32(it.Current.GetAttribute("id", it.Current.NamespaceURI));

                            return(nodeId);
                        }
                    }
                }
                return(-1);
            }
            catch
            {
                return(-1);
            }
        }
Пример #5
0
        public static bool EditNodeProperties()
        {
            var editNodeId = HttpContext.Current.Request["editNodeId"];
            var storeAlias = HttpContext.Current.Request["storeAlias"];
            var sender     = HttpContext.Current.Request["Id"];

            if (!string.IsNullOrEmpty(editNodeId))
            {
                int nodeId;
                int.TryParse(editNodeId, out nodeId);

                if (nodeId != 0)
                {
                    bool publish = false;

                    //var contentService = ApplicationContext.Current.Services.ContentService;

                    var doc = IO.Container.Resolve <ICMSChangeContentService>().GetById(nodeId);

                    //var doc = new Document(nodeId);//contentService.GetById(nodeId);

                    foreach (var key in HttpContext.Current.Request.Form.AllKeys)
                    {
                        if (key != null && !key.StartsWith("ctl00$") && !key.StartsWith("body_TabView") && !key.StartsWith("__EVENT") && !key.StartsWith("__VIEWSTATE") && !key.StartsWith("__ASYNCPOST") && doc.HasProperty(key))
                        {
                            var value = HttpContext.Current.Request.Form[key];

                            if (!key.StartsWith("stock"))
                            {
                                if (!string.IsNullOrEmpty(value))
                                {
                                    doc.SetValue(key, value);

                                    //doc.SetValue(key, value);

                                    publish = true;
                                }
                            }
                            else
                            {
                                if (Product.IsAlias(doc.ContentTypeAlias) || ProductVariant.IsAlias(doc.ContentTypeAlias))
                                {
                                    int newStockInt;

                                    int.TryParse(value, out newStockInt);

                                    UWebshopStock.UpdateStock(nodeId, newStockInt, false, storeAlias);
                                }
                            }
                        }
                    }

                    if (publish)
                    {
                        //contentService.SaveAndPublish(doc, 0, true);
                        doc.SaveAndPublish();
                        //doc.Save();
                        //doc.Publish(new User(0));
                        BasePage.Current.ClientTools.ChangeContentFrameUrl(string.Concat("editContent.aspx?id=", sender));
                        return(true);
                    }
                }
            }

            return(false);
        }