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 583 posts 1407 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

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies