private void AddEntityMenuXsl(XmlDocument doc, String EntityName, HierarchicalTableMgr m_TblMgr, XmlNode mnuItem, int ForParentEntityID, String NodeClass)
        {
            if (mnuItem == null)
            {
                return;
            }
            StringWriter         tmpS  = new StringWriter();
            XslCompiledTransform xForm = new XslCompiledTransform();
            String XslFile             = "EntityMenuList";

            xForm.Load(CommonLogic.SafeMapPath("EntityHelper/" + XslFile + ".xslt"));
            XsltArgumentList xslArgs = new XsltArgumentList();

            xslArgs.AddParam("entity", "", EntityName);
            xslArgs.AddParam("custlocale", "", Page.ThisCustomer.LocaleSetting);
            xslArgs.AddParam("deflocale", "", Localization.GetDefaultLocale());
            xslArgs.AddParam("ForParentEntityID", "", ForParentEntityID);
            xslArgs.AddParam("adminsite", "", AppLogic.IsAdminSite);
            xslArgs.AddParam("nodeclass", "", NodeClass);
            xslArgs.AddParam("suppresstoparrow", "", CommonLogic.IIF(NodeClass.Length != 0, "1", "0"));
            xForm.Transform(m_TblMgr.XmlDoc, xslArgs, tmpS);
            if (AppLogic.AppConfigBool("XmlPackage.DumpTransform"))
            {
                try // don't let logging crash the site
                {
                    StreamWriter sw = File.CreateText(CommonLogic.SafeMapPath(String.Format("{0}images/{1}_{2}_{3}.xfrm.xml", CommonLogic.IIF(AppLogic.IsAdminSite, "../", ""), XslFile, EntityName, CommonLogic.IIF(AppLogic.IsAdminSite, "admin", "store"))));
                    sw.WriteLine(XmlCommon.PrettyPrintXml(tmpS.ToString()));
                    sw.Close();
                }
                catch { }
            }
            if (tmpS.ToString().Length != 0)
            {
                if (NodeClass.Length != 0) // this means we are adding to the ROOT level, not as children!
                {
                    // Create a document fragment to contain the XML to be inserted.
                    XmlDocumentFragment docFrag = doc.CreateDocumentFragment();

                    // Set the contents of the document fragment.
                    docFrag.InnerXml = tmpS.ToString();

                    // Add the children of the document fragment to the original document.
                    mnuItem.ParentNode.InsertAfter(docFrag, mnuItem);

                    // now get rid of the parent placeholder node!
                    doc.SelectSingleNode("/SiteMap").RemoveChild(mnuItem);
                }
                else
                {
                    mnuItem.InnerXml = tmpS.ToString();
                }
            }
        }
Esempio n. 2
0
        private void AddEntityMenuXsl(XmlDocument doc, string EntityName, HierarchicalTableMgr m_TblMgr, XmlNode mnuItem, int ForParentEntityID, string NodeClass)
        {
            if (mnuItem == null)
            {
                return;
            }

            var    tmpS    = new StringWriter();
            var    xForm   = new XslCompiledTransform();
            string XslFile = "EntityMenuList";

            xForm.Load(CommonLogic.SafeMapPath("EntityHelper/" + XslFile + ".xslt"));
            XsltArgumentList xslArgs = new XsltArgumentList();

            xslArgs.AddParam("entity", "", EntityName);
            xslArgs.AddParam("custlocale", "", Page.ThisCustomer.LocaleSetting);
            xslArgs.AddParam("deflocale", "", Localization.WebConfigLocale);
            xslArgs.AddParam("ForParentEntityID", "", ForParentEntityID);
            xslArgs.AddParam("adminsite", "", false);
            xslArgs.AddParam("nodeclass", "", NodeClass);
            xslArgs.AddParam("suppresstoparrow", "", CommonLogic.IIF(NodeClass.Length != 0, "1", "0"));

            //let's call the extensions :)
            Customer thisCustomer = ((InterpriseSuiteEcommercePrincipal)HttpContext.Current.User).ThisCustomer;

            if (null != thisCustomer)
            {
                XSLTExtensionBase ext = new XSLTExtensionBase(thisCustomer, thisCustomer.SkinID);
                xslArgs.AddExtensionObject("urn:ise", ext);
            }

            xForm.Transform(m_TblMgr.XmlDoc, xslArgs, tmpS);
            if (AppLogic.AppConfigBool("XmlPackage.DumpTransform"))
            {
                try // don't let logging crash the site
                {
                    var sw = File.CreateText(CommonLogic.SafeMapPath(string.Format("images/{0}_{1}_{2}.xfrm.xml", XslFile, EntityName, "store")));
                    sw.WriteLine(XmlCommon.PrettyPrintXml(tmpS.ToString()));
                    sw.Close();
                }
                catch { }
            }

            if (tmpS.ToString().Length == 0)
            {
                return;
            }

            if (NodeClass.Length != 0) // this means we are adding to the ROOT level, not as children!
            {
                // Create a document fragment to contain the XML to be inserted.
                var docFrag = doc.CreateDocumentFragment();

                // Set the contents of the document fragment.
                docFrag.InnerXml = tmpS.ToString();

                // Add the children of the document fragment to the original document.
                mnuItem.ParentNode.InsertAfter(docFrag, mnuItem);

                // now get rid of the parent placeholder node!
                doc.SelectSingleNode("/SiteMap").RemoveChild(mnuItem);
            }
            else
            {
                mnuItem.InnerXml = tmpS.ToString();
            }
        }