Pages

Tuesday, June 3, 2014

Template won't save, especially CSS

The template editor is written in ASP. "Maximum Requesting Entity Body Limit" is the mechanism used to transit and save the code in the template editor.  By default, ASP setting in IIS is configured to accept a maximum of 200KB.

Solution: increase your "Maximum Requesting Entity Body Limit" setting under ASP under your CMS web application.  http://stackoverflow.com/questions/9466081/how-to-increase-request-accept-limit-for-asp-classic

Thursday, May 8, 2014

Getting Current Management Server RedDot CMS Project Name via JavaScript

This is the easiest way to get current project name without complicated rendertag or preexecution. Just make sure you are already use the JQuery.js library.
<script type="text/javascript">
 var TheRealUIContainerPage;
 var ProjectLabelText;
 if(window.opener){
  if(window.opener.name == 'ioActionMenu'){
   // smarttree
   TheRealUIContainerPage = top.opener.parent.parent.parent.parent.document;
   ProjectLabelText = $(TheRealUIContainerPage).find('body #ctl00_ctl00__bodyPlaceHolder__infoMenu_2 .ca_tb_txt').text();
  }
 }else{
  // smartedit
  TheRealUIContainerPage = window.parent.document;
  ProjectLabelText = $(TheRealUIContainerPage).find('body #ctl00_ctl00_ctl00__bodyPlaceHolder__infoMenu_2 .ca_tb_txt').text();
 }

 alert(ProjectLabelText);
</script>

Rendertag to Escape Double Quote and Single Quote

This is a solution posted by Tim Davis on https://groups.google.com/forum/#!topic/reddot-cms-users/ImqWdAN4XIY

You want to assign text placeholder content class a server side preexecution variable, but the text placeholder contains double quote, single quote and carriage return, which will cause preexecution error because the resulting code will be like this

Dim MyVar

MyVar = "<%txt_body%>"

'resulting code
'this cause syntax error, cannot have unescape quote inside quote
MyVar = "he says,"hello""

'this cause syntax error, cannot unclosed second line
MyVar = "first line
               second line"

What you can do is to use rendertag to escape the text. This method handles, &, ", ', accented character like (á, é, í, ó, ú, ü, ñ, ¿, ¡), and new line carriage return

Dim MyVar

MyVar = "<%!! Escape:HtmlEncode(<%txt_body%>) !!%>"

Tuesday, November 26, 2013

Clear Page Cache

Download

Screenshot

Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Clear cache for specific page instead of entire project.

Accessibility
  • In SmartTree, select page, Action Menu, Clear Page Cache
  • In SmartEdit, open page, right click, plugins in context menu, Clear Page Cache

MoveIt

Download

Screenshot



Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Allow users in SmartEdit to move pages easily from current location to predefined locations without the hassle of getting page into clipboard, disconnect from current location, navigate to destination and connect page.
  2. Use the button "Add Current Page as Target" to predefined a list of destination pages
  3. Click the button "Move" to bring up a choice dialog for move target location on destination page

Accessibility
  • In SmartEdit, open page, right click, plugins in context menu, MoveIt

Set Element Display In Project Structure

Download

Screenshot

Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Allow SmartTree user to set whether a structure element is visible in SmartTree.

Accessibility
  • In SmartTree, navigate to a content class, expand and select a structural element, in Action Menu, click SetElementDisplayInProjectStructure.

Wednesday, October 23, 2013

Using #include in a project

Why

The most common need to use an include directive is to include/reuse a common piece of component of the site, such as header, footer and advertisement.

Common Pitfalls

When using a media or image element in place of actual file name, the generated path contains ., which is invalid pathing by default unless enabled in IIS. The other issue with leading . in pathing is one cannot use that in #include virtual.

' Code in CMS template
<!--#include virtual="<%med_transformer_asp%>"-->

' Generated code in SmartEdit or Page Preview.  Invalid code
<!--#include virtual="../ImageCache/521E5D7461214F71889B2A99C6CAD3F4/514EAAB6BEBB4F86B85AF45DB2A09374/TR/transformer.asp"-->
' Code in CMS template
<!--#include virtual="<%anc_transformer_asp%>"-->

' Generated code in SmartEdit or Page Preview.  Invalid code
<!--#include virtual="./PreviewHandler.ashx?Action=Preview&Mode=0&blahblahblahblah"-->

When using #include file directive, the pathing uses \, CMS publish pathing as /. Though this is a minor issue since both syntax are acceptable.

' desired syntax
<!-- #include file="common\header.htm" -->

' generated syntax
<!-- #include file="common/header.htm" -->

The biggest issue with #include file in CMS is that the path returned is incorrect

' Code in CMS template
<!--#include file="<%med_transformer_asp%>"-->

' Generated code in SmartEdit or Page Preview.
<!--#include file="../ImageCache/521E5D7461214F71889B2A99C6CAD3F4/514EAAB6BEBB4F86B85AF45DB2A09374/TR/transformer.asp"-->
' This maps to
' ASP\ReddotTemp\ImageCache\521E5D7461214F71889B2A99C6CAD3F4\514EAAB6BEBB4F86B85AF45DB2A09374\TR\transformer.asp 
' Instead of
' ASP\ImageCache\521E5D7461214F71889B2A99C6CAD3F4\514EAAB6BEBB4F86B85AF45DB2A09374\TR\transformer.asp 
' Code in CMS template
<!--#include file="<%anc_transformer_asp%>"-->

' Generated code in SmartEdit or Page Preview.
<!--#include file="./PreviewHandler.ashx?Action=Preview&Mode=0&blahblahblahblah"-->
' This maps to
' ASP\ReddotTemp\BC498EE1113D41F7AC877F3D5BD0738E\PreviewHandler.ashx?Action=Preview&Mode=0&blahblahblahblah
' The path is correct, but the file gets deleted as soon as it is generated and displayed.

One can work around the pathing issue with manual path correction

<!IoRangePreExecute>
' Code in CMS template
<!--#include file="../<%med_transformer_asp%>"-->
<!/IoRangePreExecute>

' Generated code during publication mode, invalid code, the file is published
' to the asp folder on the web server.  The asp folder is not on the CMS
' server, so preexecution is trying to use a file that doesn't exist
<!--#include file="../asp/transformer.asp"-->

 

Solution

If you simply want to use include to include a static file, like header. In publishing mode, use #include, which uses a anchor placeholder to reference the header page. When not publishing, use the header container placeholder, which references the header page.

<reddot:cms>
<if>
    <query valuea="Context:CurrentRenderMode" operator="==" valueb="Int:2">
        <htmltext>
   <!--#include file="<%anc_header%>"-->
        </htmltext>
    </query>
    <query type="else">
        <htmltext>
            <%con_header%>
        </htmltext>
    </query>
</if>
</reddot:cms>

If you want to include an asp library and use the library during SmartEdit, Page Preview, and Publishing, reference the absolute path via #include virtual directive

<!IoRangePreExecute>
' Code in CMS template
<!--#include virtual="/cms/plugins/asplib/transform.asp"-->
<!/IoRangePreExecute>