Pages

Monday, December 10, 2012

Content Import Manager (CIM) in Management Server 11

In Management Server 11, after importing and activating Content Import Manager (CIM) and attempting to run it from the project node, one would get error 500.

Is CIM broken in Management Server 11?  I thought so until support pointed me to "OpenText Web Site Management Content Import Manager Release Notes.pdf" in the CIM folder.

One need to go onto the Management Server environment and register a dll
regsvr32 %RDCMS%\Plugins\CIM\bin\RDCIM.dll

Friday, April 27, 2012

UploadIt

Available for Purchase in North America via asowsm@opentext.com

Screenshot

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

Description
  1. Batch image/file upload
  2. Compatible with folder authorization packages
  3. Easy installation
  4. Support sub folders
  5. Supports all browsers

Accessibility
  • SmartTree, Start -> Administer Project Settings -> Project -> Folders, Action Menu, UploadIt
  • SmartEdit, Open page, right click Plugin-ins, UploadIt

Tuesday, April 10, 2012

ASP to .NET Session Transfer

Generally, there are two ways to transfer ASP sessions to .NET sessions. Also, these methods are not limited to reddot/opentext wsm/cms, but are useful in general day to day coding. Please note that the code illustrations do not take security concerns into consideration, securing session access can be achieved via IIS configuration or addition code checking.

Push Method

session_transfer.asp
<%
Dim sActionPageURL, sContent

sActionPageURL = "http://localhost/cms/plugins/session_store.aspx"
sContent = "?"

For Each Item In Session.Contents
 sContent = sContent & Item & "=" & server.URLencode(Session.Contents(item)) & "&"
Next

'Construct POST Object
set http_obj=server.CreateObject("MSXML2.ServerXMLHTTP")
http_obj.Open "POST", sActionPageURL , false
http_obj.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
http_obj.send(sContent)

'Display Response
'Response.Write (http_obj.ResponseText)

set http_obj=nothing
%>

session_store.aspx
<%@ Page language="c#" validateRequest="false"%>
<%
    for(int i=0;i<Request.Form.Count;i++)
    {
        Session[Request.Form.GetKey(i)]=Request.Form[i].ToString();
        'Response.Write(Request.Form.GetKey(i));
        'Response.Write("=");
        'Response.Write(Session[Request.Form.GetKey(i)]);
    }
 
    Response.Write(Session.Count);
%>

Thursday, March 22, 2012

Rendertag, Project Performance, Product Support

Project performance is closely tied to rendertag usage.  Here are some rendertag usage best practices that should be taken into consideration when implementing a project.

Store:Set( key, val )
This is a rendertag that allows storage of variable, but it is unofficial and unsupported. Should projects experience performance or content output issues while using this rendertag, product support may be denied or delayed due to slow priority since it not a product issue but an implementation issue.

Additionally, upon full site publish or multiple users accessing the same Store value may experience a race condition since everyone is trying to write and read from the same variable.  For example, generated link for Page B links to Page A because the link value was read milliseconds before it was updated.

.Elements.GetElement(), .GetPathArray()
A page object get loaded into memory prior to any page info marshaling/inspection call, wide usage in project cause the server to use up memory much quicker.  Since the memory garbage collector in .NET could not keep up with the clean up, server tend to become unresponsive more often.

Another issue with rendertag and this rendertag in particular is caching.  Content retrieve via rendertag get cached, but the cache do not get update notification upon targeted content change, hence rendertag continues to display old content.  Please note, this issue do not occur if rendertag is used within navigation template.

Foreach and Store
Content retrieved within foreach rendertag will experience caching issue.  Content output within foreach rendertag via Store rendertag will experience race condition upon heavy multiple access.

Wednesday, March 21, 2012

Find Page By Guid 2

Download

Screenshot


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

Description
  1. Find page by guid

Accessibility
  • In SmartTree, Start -> Administer Project Structure -> Project, Action Menu, Find Page By Guid

Check Multiple Page Connections

Download

Screenshot



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

Description
  1. Search all page instances of a content classes for pages with multiple page connections
  2. Option to fix pages with multiple connections should the connection is not a main link and connected to an anchor

Accessibility
  • In SmartTree, Select content class, Action Menu, Check Multi Page Connection

Tuesday, March 20, 2012

Auto Order Elements 2

Download

Screenshot


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

Description
  1. Allow user to quickly reorder elements according to element order in page, making edit elements via form more user friendly
  2. Allow user to quickly inspect, find, and delete unused elements within content class

Accessibility
  • In SmartTree, Select content class, Action Menu, Auto Order Elements

Wednesday, March 14, 2012

Algorithm for Converting Old Navigation to Navigation Manager

This appears to be a frequently asked question for projects that are using the old list pull through container navigation method (the one with a connector page with a list and a container insider another container), so I am going to give out the algorithm I use.
  1. Lock down system from editors prior to running algorithm
  2. Create lst_navigation for all foundation content classes
  3. Make all foundations with lst_navigation a master page
  4. Review navigation connector page (the little page with a list that goes into a container) logic and rewrite it into navigation templates and navigation areas
  5. Foreach page instance of navigation connector, reconnect pages connected to the navigation connector list to lst_navigation of the parent page (the page with container), and delete navigation connector page instance
  6. Go into navigation manager, in the right pane, right click, click "disconnected pages" and then right click, "import pages"
  7. Depending on the size of the site, wait 30 to 45 minutes
  8. Go into navigation manager, in the right pane, right click, click "disconnected pages", find the root nood of your site, right click, "adopt page"
  9. Done
Cautionary Notes:
Old sites use the list container method so they can have separate publication package for each branch.  Also, each branch’s landing page is named index.htm.  These landing pages must be renamed or at least considered to avoid file overwrite.

Also, one must set expectation with the customer that the publishing file path for landing pages will be different since all landing pages will share the same lst_navigation and publication package.

Monday, March 12, 2012

AssignIt

Download

Screenshot


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

Description
  1. Assign a draft page from user A to user B
  2. Reassign a draft page because current owner is away
  3. Collaboration and communicate via built in email functionality (email server must be configured in server manager)
  4. Accessible in SmartTree and SmartEdit
  5. Easy to install

Accessibility
  • In SmartTree, Select Page, Action Menu, AssignIt.
  • In SmartEdit, please see readme.txt within plugin zip for easy installation instructions.

Monday, March 5, 2012

Breadcrumb: Rendertag Vs Placeholder

Generally, there are two ways to generate a breadcrumb

Method #1: Rendertag
<%!! Navigation:OutputArea(Breadcrumb) !!%>

Method #2: Placeholder
<!IoRangeBreadCrumb><%anc_breadcrumb%> &raquo; <!/IoRangeBreadCrumb> <%hdl_title%>

Instead of using rendertag, it is best practice to use native placeholder to generate the breadcrumb for the following reasons:
  1. When using rendertag to generate breadcrumb, the page must be in navigation structure.  For performance reasons, it is unwise to have a page in navigation structure for the sole purpose having a breadcrumb because this will not scale for sites with 200+ pages.  Large navigation structure = slow project.
  2. Hiding a page from breadcumb requires additional rendertag logic, which is another performance cost.  Whereas using breacrumb placeholder, simply select page, click "edit properties", and enable "Do not use for breadcrumb"

Friday, February 24, 2012

Content Class Inspector

Download

Screenshot



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

Description
  1. Displays all content class folders, content classes, and template/project variant association
  2. Opens template as read-only directly from interface
  3. Checks content class for possible unused elements, which slow down project performance
  4. Copies content class folder and content class name into clipboard via easily accessible bottom

Accessibility
  • In SmartTree, Start -> Administer Content Classes, Action Menu, Content Class Inspector.

Slow CMS Due to .NET Preexecution

If active scripting in project is configured to aspx, then a cache dll is created on the server's "Temporary ASP.NET files" folder for every SmartEdit page access, page preview and page publish.  Management Server slows down as more cache dlls are created within "Temporary ASP.NET files", eventually Management Server becomes unresponsive when accessed via SmartEdit, page preview or publishing.

The solution to delete the amounting cache dlls via an automated task, preferably nightly, schedule it so it does not clash with publishing or user access time period.

7.x to 9.x SP1 (using .NET 1.1)
Create "Clear_.NET_Temp_Cache.bat" in [MS Installation Directory]\ASP\Plugins
c:
cd "C:\Windows\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\cms"
del /S /Q *

9.x SP2 to 10.x (using .NET 3.5)
Create "Clear_.NET_Temp_Cache.bat" in [MS Installation Directory]\ASP\Plugins
c:
cd "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\cms"
del /S /Q *

Create User-defined Job
Create user-defined job that runs nightly, schedule it so it does not conflict with existing publishing time.

Configure user-defined job to "External application", and provide path to aforementioned .bat file


For Management Server Clusters
N user-defined jobs for N Management Servers in the cluster

Tuesday, February 21, 2012

Delete All Unlinked Pages 2

Download

Screenshot


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

Description
  1. Deletes unlinked pages in bulk
  2. Fast, averaging 2 pages per second
  3. Minimal server load, will not affect other users during operation
  4. Deletes oldest page first
  5. Provides status update

Accessibility
  • In SmartTree, Start -> Administer Project Structure -> Edit Special Pages -> Unlinked Pages, Action Menu, Delete All Unlinked Pages 2.

Monday, February 20, 2012

File Renamer

Download

Screenshot

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

Description
  1. View and edit all page file names of a content class
  2. Helpful one click functionalities like use headline as file name, lower case all letters, replace invalid characters with SEO friendly characters, one click save

Accessibility
  • In SmartTree, Start -> Administer Content classes -> Content Class Folder -> Content Class, Action Menu, FileRenamer.

Auto File Name

Download

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

Description
  1. Automatically assign SEO friendly page file name using page headline

Accessibility
  • Please see readme.txt within plugin zip for easy installation instructions.

Job Report Manager

Download

Screenshot


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

Description
  1. Allows the user to view all publishing job reports with ease
  2. Light and fast to load (100 entries, 0.3 seconds)
  3. Sortable (sorts publishing time in dsc order by default)
  4. Support multi sort
  5. Support multi job report deletion

Accessibility
  • In SmartTree, start->administer publication->job reports, Action Menu, Job Report Manager.

Friday, February 17, 2012

Retroactive References 3

Download

Screenshot


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

Description
  1. Allows user to retroactively apply link or page references to anchor, list, and containers for all page instances of a content class
  2. Allows user to retroactively apply image, standard field, and text element references to image, standard field, and text element for all page instances of a content class
  3. Can process unlimited references without server timeout
  4. No run away processing upon closing window, which is common in most asp plugins
  5. Multi-threaded for faster processing

Accessibility
  • In SmartTree, navigate to a content class, expand and select a structural element, ensure target link/page is selected in clipboard, in Action Menu, click Retroactive References 2 to bring up final confirmation screen.

Thursday, February 16, 2012

TagIt

Download

Screenshot

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

Description
  1. Lists all categories and keywords at once, so user can assign categories and keywords more efficiently
  2. Highlights assigned category and keywords for better usability and faster content review
  3. Categories and keywords fit to window size automatically

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

RQLConsole

Download

Screenshot



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

Description
  1. Send a RQL message via console and view RQL response
  2. See all available server sessions for debugging and RQL development.

Accessibility
  • In SmartTree, Start -> Administer Project Structure -> Project, Action Menu, RQLConsole

FindIt 2

Download

Screenshot


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

Description
  1. Ability to search for code within all content classes or content classes within specific content class folder
  2. Supports regex syntax
  3. User can open template as read only directly from search results

Accessibility
  • In SmartTree, Start -> Administer Content Classes, Action Menu, FindIt 2

Wednesday, February 15, 2012

Management Server 10.1 with MSSQL 2008 Installation Checklist

Here is a simple checklist for Management Server 10.1 installation with MSSQL 2005/2008.

Note that this checklist prepares the system for Management Server installation using local MSSQL accounts.


Download Doc

Tuesday, January 31, 2012

Publishing Following Pages

Often, users would experience the issue of following page won't publish. This issue is actually template code related. Management Server will not publish pages that it cannot get to via link.

For example, pages are connected to lst_navigation but do not publish when "publish all following pages" option is selected.


That is because the following code is missing in the template code and Management Server cannot crawl to following pages.
<!--
<!IoRangeList>
<%lst_navigation%>
<!/IoRangeList>
-->

Friday, January 6, 2012

Duplicate Pages

Most publication issues can be caused by pages connected to multiple locations. The most common symptom is having duplicate pages on the site.

For example:  Both page 1 and page 2 are connected to multiple locations with different publication package at each location, so the pages will get published twice, each time to a different location.


Obsolete Solution (Not working in 9 or 10)
Edit the content class of "RSS Listing", use preexecution to replace islink=2 with islink=10 to trick CMS into thinking the following pages are references, hence not to crawl and publish following pages. 

All Version Compatible Solution
Use the list to pull info_page_guid from the connected page.
<!IoRangeList>
<!IoRangeNoRedDotMode><!IoRangeRedDotMode><!--<%lst_pages%>--><!/IoRangeRedDotMode><!/IoRangeNoRedDotMode>
<li><%!! Context:Pages.GetPage(Guid:<%inf_page_guid%>).GetUrl(Bool:True) !!%></li>
<!/IoRangeList>

Page 1 and page 2 still get published according to different publication packages, but links generated always point to the pages' main link