Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Klaus 47 posts 67 karma points
    May 16, 2011 @ 13:18
    Klaus
    0

    Umbraco 4.7 and Dynamic Nav.

    Hi,

    I have a problem implementing a dynamic navigation under my umbraco 4.7 project.

    This navigation http://packages.maliciousthinktank.com/navdemo.aspx

    The error diaplayed on page: Error reading XSLT file: \xslt\mtt_ultimateNav.xslt

    and error displayed under debug show trace:

    Error loading XSLT mtt_ultimateNav.xslt
    Could not load file or assembly 'file:///C:\Windows\TEMP\2ntrr1se.dll' or one of its dependencies. Access is denied.
      at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
      at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
      at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity)
      at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
      at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang)
      at System.Xml.Xsl.Xslt.Scripts.CompileScripts()
      at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler)
      at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
      at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
      at umbraco.macro.CreateXsltTransform(XmlTextReader xslReader, Boolean debugMode)
      at umbraco.macro.getXslt(String XsltFile)
      at umbraco.macro.loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)

     

    The site is hosted on a hosted server at Surftown.dk.

    Please give me some advis, so that I can continue...

    Best Regards

    Klaus

  • Klaus 47 posts 67 karma points
    May 16, 2011 @ 13:23
    Klaus
    0

    By the way, here is the Navigation file..

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>

    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxml="urn:schemas-microsoft-com:xslt"
      xmlns:msxsl="urn:schemas-microsoft-com:xslt"
      xmlns:umbraco.library="urn:umbraco.library"
      xmlns:netaddicts-be="urn:netaddicts-be:xslt"
      exclude-result-prefixes="msxml umbraco.library netaddicts-be">
        
      <xsl:output method="xml" omit-xml-declaration="yes"/>

      <!-- Holds the start node for the navigation. Optional -->
      <xsl:param name="startNodeId" select="/macro/startNodeId"/>
      <!-- Holds number of sublevels to generate. Macro parameter is optional. Defaults to one if not supplied -->
      <xsl:param name="maxDrilldownLevel" select="netaddicts-be:ReadMacroParameter(//macro/maxLevels,'1')"/>

      <xsl:template match="/">

        <!-- Check whether a start node has been supplied -->
        <xsl:choose>
          <xsl:when test="$startNodeId != ''">

            <!-- Start building the top navigation from the node supplied by start node id -->
            <xsl:call-template name="buildTopNavigation">
              <xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlNodeById($startNodeId)"/>
            </xsl:call-template>

          </xsl:when>
          <xsl:otherwise>

            <!-- Start building navigation from top level node -->
            <xsl:call-template name="buildTopNavigation">
              <xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlAll()"/>
            </xsl:call-template>

          </xsl:otherwise>
        </xsl:choose>

      </xsl:template>

      <!-- Start building the top navigation (first level navigation) -->
      <xsl:template name="buildTopNavigation">
        <xsl:param name="navigationNodes"/>


          <ul class="mainNav">

            <!-- Iterate child nodes -->
            <xsl:for-each select="$navigationNodes/child::node">

              <!-- Create var for easier reading/processing -->
              <xsl:variable name="currentProcessedNode" select="."/>
              <xsl:variable name="currentLevel" select="0"/>

              <!-- Check whether node should be visible in first level navigation -->
              <xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">

                <li>

                  <!-- Build the navigation link using the node currently being processed in the for-each loop -->
                  <xsl:call-template name="buildLink">
                    <xsl:with-param name="node" select="$currentProcessedNode"/>
                  </xsl:call-template>

                  <!-- Build next level navigation only if applicable -->
                  <!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0
                    this case would yield an empty ul element -->
                  <xsl:if test="(count($currentProcessedNode/node) &gt; 0)
                          and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1')
                          and ($currentLevel &lt; $maxDrilldownLevel)">
                    <xsl:call-template name="buildNavigation">
                      <xsl:with-param name="parentNode" select="$currentProcessedNode"/>
                      <xsl:with-param name="level" select="$currentLevel + 1"/>
                    </xsl:call-template>
                  </xsl:if>

                </li>

              </xsl:if>

            </xsl:for-each>
            
          </ul>

      </xsl:template>

      <!-- A template used for building the non top navigation tree -->
      <xsl:template name="buildNavigation">
        <xsl:param name="parentNode"/>
        <xsl:param name="level"/>
        
        <ul>
          <!-- Iterate over the child nodes-->
          <xsl:for-each select="$parentNode/node">

            <!-- Create var for easier reading/processing -->
            <xsl:variable name="currentProcessedNode" select="."/>

            <!-- Check whether node should be processed -->
            <xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">

              <li class="child">

                <!-- Build the navigation link -->
                <xsl:call-template name="buildLink">
                  <xsl:with-param name="node" select="$currentProcessedNode"/>
                </xsl:call-template>

                <!-- Build next level navigation only if applicable; recursive call -->
                <!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0
                    this case would yield an empty ul element -->
                <xsl:if test="
                        (count($currentProcessedNode/node) &gt; 0)
                          and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1')
                          and ($level &lt; $maxDrilldownLevel)">
                  <xsl:call-template name="buildNavigation">
                    <xsl:with-param name="parentNode" select="$currentProcessedNode"/>
                    <xsl:with-param name="level" select="$level + 1"/>
                  </xsl:call-template>
                </xsl:if>

              </li>

            </xsl:if>

          </xsl:for-each>
          
        </ul>
        
      </xsl:template>

      <!-- A template that builds our navigation link based on node properties -->
      <xsl:template name="buildLink">
        <xsl:param name="node"/>

        <xsl:choose>

          <!-- Build link to external page -->
          <xsl:when test="string($node/data [@alias = 'externalURL']) != ''">

            <xsl:call-template name="buildExternalLink">
              <xsl:with-param name="node" select="$node"/>
            </xsl:call-template>

          </xsl:when>

          <!-- Build link for redirecting to a custom supplied url -->
          <xsl:when test="string($node/data [@alias = 'umbracoRedirect']) != ''">

            <xsl:call-template name="buildRedirectLink">
              <xsl:with-param name="node" select="$node"/>
            </xsl:call-template>

          </xsl:when>

          <!-- Default link builder -->
          <xsl:otherwise>

            <xsl:call-template name="buildNormalLink">
              <xsl:with-param name="node" select="$node"/>
            </xsl:call-template>

          </xsl:otherwise>
        </xsl:choose>

      </xsl:template>

      <!-- A template that builds a link to an external page -->
      <xsl:template name="buildExternalLink">
        <xsl:param name="node"/>

        <!--
        <xsl:call-template name ="outputNode">
          <xsl:with-param name="currentNode" select="$node"/>
        </xsl:call-template>
        -->

        <a>
          <!-- Set the href attribute -->
          <xsl:attribute name="href">
            <xsl:value-of select="$node/data [@alias = 'externalURL']"/>
          </xsl:attribute>
          <!-- Set the target attribute if available from the properties -->
          <xsl:if test="string($node/data [@alias = 'externalTarget']) != ''">
            <xsl:attribute name="target">
              <xsl:value-of select="$node/data [@alias = 'externalTarget']"/>
            </xsl:attribute>
          </xsl:if>
          <!-- Set the title attribute if available from the properties -->
          <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
            <xsl:attribute name="title">
              <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
            </xsl:attribute>
          </xsl:if>
          <!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
          <xsl:choose>
            <xsl:when test="string($node/data [@alias = 'navText']) != ''">
              <xsl:value-of select="string($node/data [@alias = 'navText'])"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$node/@nodeName"/>
            </xsl:otherwise>
          </xsl:choose>
        </a>

      </xsl:template>

      <xsl:template name="buildRedirectLink">
        <xsl:param name="node"/>

        <!--
        <xsl:call-template name ="outputNode">
          <xsl:with-param name="currentNode" select="$node"/>
        </xsl:call-template>
        -->

        <a>
          <!-- Set the href attribute based on the redirect supplied -->
          <xsl:attribute name="href">
            <xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoRedirect']))"/>
          </xsl:attribute>
          <!-- Set the title attribute if available from the properties -->
          <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
            <xsl:attribute name="title">
              <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
            </xsl:attribute>
          </xsl:if>
          <!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
          <xsl:choose>
            <xsl:when test="string($node/data [@alias = 'navText']) != ''">
              <xsl:value-of select="string($node/data [@alias = 'navText'])"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$node/@nodeName"/>
            </xsl:otherwise>
          </xsl:choose>
        </a>

      </xsl:template>
      
      <xsl:template name="buildNormalLink">
        <xsl:param name="node"/>

        <!--
        <xsl:call-template name ="outputNode">
          <xsl:with-param name="currentNode" select="$node"/>
        </xsl:call-template>
        -->

        <a>
          <!-- Set the href attribute, either the alias if available, else use NiceUrl() -->
          <xsl:attribute name="href">
            <xsl:choose>
              <xsl:when test="string($node/data [@alias = 'umbracoUrlAlias']) != ''">
                <xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoUrlAlias']))"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="umbraco.library:NiceUrl($node/@id)"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:attribute>
          <!-- Set the title attribute if available from the properties -->
          <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
            <xsl:attribute name="title">
              <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
            </xsl:attribute>
          </xsl:if>
          <!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
          <xsl:choose>
            <xsl:when test="string($node/data [@alias = 'navText']) != ''">
              <xsl:value-of select="string($node/data [@alias = 'navText'])"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$node/@nodeName"/>
            </xsl:otherwise>
          </xsl:choose>
        </a>

      </xsl:template>

      <!-- For debugging purposes, writes out all relevant node properties -->
      <xsl:template name="outputNode">
        <xsl:param name="currentNode"/>
        <ul>
          <li>
            @id=<xsl:value-of select="$currentNode/@id"/>
          </li>
          <li>
            @nodeName=<xsl:value-of select="$currentNode/@nodeName"/>
          </li>
          <li>
            @umbracoNaviHide=<xsl:value-of select="$currentNode/data [@alias = 'umbracoNaviHide']"/>
          </li>
          <li>
            @umbracoHideChildren=<xsl:value-of select="$currentNode/data [@alias = 'umbracoHideChildren']"/>
          </li>
          <li>
            @navText=<xsl:value-of select="$currentNode/data [@alias = 'navText']"/>
          </li>
          <li>
            @navTooltip=<xsl:value-of select="$currentNode/data [@alias = 'navTooltip']"/>
          </li>
          <li>
            @externalURL=<xsl:value-of select="$currentNode/data [@alias = 'externalURL']"/>
          </li>
          <li>
            @externalTarget=<xsl:value-of select="$currentNode/data [@alias = 'externalTarget']"/>
          </li>
          <li>
            @umbracoRedirect=<xsl:value-of select="$currentNode/data [@alias = 'umbracoRedirect']"/>
          </li>
          <li>
            @umbracoUrlAlias=<xsl:value-of select="$currentNode/data [@alias = 'umbracoUrlAlias']"/>
          </li>
        </ul>
      </xsl:template>

      <msxsl:script language="C#" implements-prefix="netaddicts-be">
        <![CDATA[
        
        //Function is taken from XSLTSearch by Douglas Robar from Percipient Studios (http://www.percipientstudios.com/)
        public string ReadMacroParameter(string value, string defaultValue) {
          if (value == "")
            return defaultValue;
          else
            return value.Replace(" ", "");
        }
        
        //Function fixes a possible wrongly formatted link
        public string FixLink(string oldLink) {
          string newLink = string.Empty;
          
          if (!oldLink.StartsWith("/"))
            newLink += "/";
          newLink += oldLink;
          if (!oldLink.EndsWith(".aspx"))
            newLink += ".aspx";
          
          return newLink;
        }
      
      ]]>
      </msxsl:script>
      

    </xsl:stylesheet>

  • Sebastian Dammark 581 posts 1385 karma points
    May 16, 2011 @ 13:26
    Sebastian Dammark
    0

    Hi Klaus

    I don't think your XSLT is the cause of the error.

    It could look like a permission problem regarding the temporary files on the server.
    I'm sure surftown knows what to do, if you show them the error.

  • Klaus 47 posts 67 karma points
    May 16, 2011 @ 13:38
    Klaus
    0

    Hello there,

     

    Okay thanks, Before i contact them does anyone else have some saying on this issue?

     

    //Klaus

Please Sign in or register to post replies

Write your reply to:

Draft