<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1376861610011595152</id><updated>2012-02-02T05:42:46.524+11:00</updated><category term='rendition'/><category term='rules'/><category term='replicator'/><category term='javascript'/><category term='fck'/><category term='java'/><category term='headers'/><category term='workflow'/><category term='archiver'/><category term='ephox'/><category term='schema'/><category term='locale'/><category term='ImageAlchemy'/><category term='DAM'/><category term='date'/><category term='Contribution Folders'/><category term='layout/template'/><category term='cookie'/><category term='cmu'/><category term='filters'/><category term='ssp/sspu'/><category term='SSUrlFieldName'/><category term='contributor'/><category term='timezone'/><category term='download'/><category term='accessibility'/><category term='multilingual'/><category term='dynamic list'/><category term='IBR'/><category term='stellent'/><category term='search'/><category term='link'/><category term='sitestudio'/><title type='text'>WebMonkeyMagic</title><subtitle type='html'>Ideas, tips, rants and other observations about web development &amp;amp; Oracle&amp;#39;s WebCenter Content.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-72043709432803277</id><published>2012-02-01T14:02:00.001+11:00</published><updated>2012-02-01T14:05:41.778+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><category scheme='http://www.blogger.com/atom/ns#' term='ssp/sspu'/><title type='text'>SSP Exclude and other quirks</title><content type='html'>SSP (Site Studio Publisher) is a welcome replacement to the awkward SSPU. Like its predecessor, it is a tool for publishing a dynamic website as a bunch of simple HTML files. But it&amp;#39;s got a few quirks you should know about if you want to get it working (and the manuals don&amp;#39;t mention this stuff!)&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2012/02/ssp-exclude-and-other-quirks.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-72043709432803277?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/72043709432803277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2012/02/ssp-exclude-and-other-quirks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/72043709432803277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/72043709432803277'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2012/02/ssp-exclude-and-other-quirks.html' title='SSP Exclude and other quirks'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-1648647114888615994</id><published>2011-12-13T14:30:00.000+11:00</published><updated>2011-12-13T14:30:33.417+11:00</updated><title type='text'>More on OracleTextSearch deficiencies</title><content type='html'>I was so focussed on exploring multiple sort criteria with OracleTextSearch that it was pointed out to me afterwards that even a single sort criteria fails. Shonky stuff!&lt;br /&gt;&lt;br /&gt;The MultiSort component was "fixed" in late 2009 to identify optimised fields and ignore the rest. That means it provides sorting on 5 fields only - date, title, ID, security and type. Considering there are typically just a few security groups and content types it's hardly worth using. Installing URM gives one more field. Whoopdie doo.&lt;br /&gt;&lt;br /&gt;I'm sticking with &lt;code&gt;Database.Fulltext&lt;/code&gt; search. Sure it's slower to rebuild and doesn't have fancy drilldown features - but it works the way it is supposed to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-1648647114888615994?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/1648647114888615994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/12/more-on-oracletextsearch-deficiencies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1648647114888615994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1648647114888615994'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/12/more-on-oracletextsearch-deficiencies.html' title='More on OracleTextSearch deficiencies'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-9184694499333437258</id><published>2011-12-05T14:55:00.001+11:00</published><updated>2011-12-09T11:57:28.479+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>OracleTextSearch: sorting by multiple fields = multiple problems</title><content type='html'>OracleTextSearch mangles the multi-sorting functionality of UCM search results. The MultiSort or SearchSortOptions components won&amp;#39;t work, I don&amp;#39;t know if there are newer versions that will. But the ability to sort on multiple fields is still possible, read on to figure out how to do it.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2011/12/oracletextsearch-sorting-by-multiple.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-9184694499333437258?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/9184694499333437258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/12/oracletextsearch-sorting-by-multiple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/9184694499333437258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/9184694499333437258'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/12/oracletextsearch-sorting-by-multiple.html' title='OracleTextSearch: sorting by multiple fields = multiple problems'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3514302038377654451</id><published>2011-11-08T12:30:00.002+11:00</published><updated>2011-11-15T14:11:56.976+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>Tinkering with the search query</title><content type='html'>Sometimes the search query isn&amp;#39;t enough. Sometimes the administrator needs to add a few restrictive clauses or maybe inject some SQL to tweak the results. Content Server is very careful about tidying up search strings which means that modifying search behaviour is not something that can be done with Idoc. But access points do exist that provide a safe way to unobtrusively alter the query.&lt;a href="http://webmonkeymagic.blogspot.com/2011/11/tinkering-with-search-query.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3514302038377654451?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3514302038377654451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/11/tinkering-with-search-query.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3514302038377654451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3514302038377654451'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/11/tinkering-with-search-query.html' title='Tinkering with the search query'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7482034747071508673</id><published>2011-09-29T12:35:00.001+10:00</published><updated>2011-09-29T14:38:19.896+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multilingual'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='locale'/><title type='text'>Multilingual Websites</title><content type='html'>A few years ago I wrote a system that produced multilingual websites in UCM. I was asked about it recently so I thought I&amp;#39;d talk about the solution here.&lt;a href="http://webmonkeymagic.blogspot.com/2011/09/multilingual-websites.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7482034747071508673?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7482034747071508673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/09/multilingual-websites.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7482034747071508673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7482034747071508673'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/09/multilingual-websites.html' title='Multilingual Websites'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-107835435626274626</id><published>2011-08-30T14:36:00.000+10:00</published><updated>2012-02-01T13:01:42.709+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic list'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='link'/><category scheme='http://www.blogger.com/atom/ns#' term='ssp/sspu'/><title type='text'>Static Publish of Query String URLs &amp; Dynamic Pages</title><content type='html'>The Site Studio Publisher (SSP) and the pre-11g versions (SSPU) are tools that take your virtual dynamic SiteStudio website and convert it into a bunch of fair-dinkum files. This does mean that all &amp;quot;dynamic&amp;quot; functionality is lost, including any query string variables in the URL. But there actually is a way for SSP to produce multiple pages from a URL query string.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2011/08/static-publish-of-query-string-urls.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-107835435626274626?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/107835435626274626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/08/static-publish-of-query-string-urls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/107835435626274626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/107835435626274626'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/08/static-publish-of-query-string-urls.html' title='Static Publish of Query String URLs &amp; Dynamic Pages'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3818309283322427097</id><published>2011-08-03T16:04:00.000+10:00</published><updated>2011-08-03T16:04:21.173+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic list'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>The Secret to Unlimited Search Results</title><content type='html'>The Content Server search results can&amp;#39;t go past the first 200 items. This frustrates users and developers. By comparison, Google reports millions of results. Why does UCM, with potentially millions of content items, stop at 200? The answer is that just because the interface stops, you don&amp;#39;t have to as well.&lt;a href="http://webmonkeymagic.blogspot.com/2011/08/secret-to-unlimited-search-results.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3818309283322427097?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3818309283322427097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/08/secret-to-unlimited-search-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3818309283322427097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3818309283322427097'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/08/secret-to-unlimited-search-results.html' title='The Secret to Unlimited Search Results'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-5355843738827726687</id><published>2011-07-14T15:33:00.000+10:00</published><updated>2011-07-14T15:33:17.492+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><title type='text'>Is SiteStudio dead?</title><content type='html'>Oracle have restructured their products and acquired Fatwire. Somewhere along the line they&amp;#39;ve decided to rename (or absorb?) the ECM suite into something called &amp;quot;WebCenter Content.&amp;quot; Not sure where all this is heading but my guess is that it is probably the end of SiteStudio websites.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2011/07/is-sitestudio-dead.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-5355843738827726687?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/5355843738827726687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/07/is-sitestudio-dead.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5355843738827726687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5355843738827726687'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/07/is-sitestudio-dead.html' title='Is SiteStudio dead?'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6209219925704270497</id><published>2011-06-20T12:36:00.000+10:00</published><updated>2011-06-20T12:36:42.540+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='replicator'/><title type='text'>How to avoid "not so Ready to Replicate" conundrums</title><content type='html'>Chatting with Brett on the yahoo forums has turned up a solution to the &lt;a href="http://webmonkeymagic.blogspot.com/2010/09/not-so-ready-to-replicate.html"&gt;not so Ready-to-Replicate&lt;/a&gt; problem I posted about previously. It turns out an undocumented setting can disable the R2R feature and allow you to selectively sync back to development servers.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2011/06/how-to-avoid-not-so-ready-to-replicate.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6209219925704270497?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6209219925704270497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/06/how-to-avoid-not-so-ready-to-replicate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6209219925704270497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6209219925704270497'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/06/how-to-avoid-not-so-ready-to-replicate.html' title='How to avoid &quot;not so Ready to Replicate&quot; conundrums'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-769925386905072415</id><published>2011-05-17T12:12:00.004+10:00</published><updated>2011-06-10T10:45:28.065+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contribution Folders'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Avoiding the workflow "contribution step" trap</title><content type='html'>Ever had a rejected content item you couldn&amp;#39;t do anything with? Or maybe it was something you put in a contribution folder and then realised it was stuck there? UCM workflow has a &amp;quot;contribution step&amp;quot; trap you need to avoid.&lt;a href="http://webmonkeymagic.blogspot.com/2011/05/avoiding-workflow-contribution-step.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-769925386905072415?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/769925386905072415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/05/avoiding-workflow-contribution-step.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/769925386905072415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/769925386905072415'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/05/avoiding-workflow-contribution-step.html' title='Avoiding the workflow &quot;contribution step&quot; trap'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-935027004164481202</id><published>2011-03-03T18:06:00.009+11:00</published><updated>2011-06-10T10:39:51.717+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Empty a metadata field at revision checkin</title><content type='html'>An issue that dogged me for ages was that metadata fields can&amp;#39;t be reset to empty for a revision checkin if they already have something in them. For example, if a content item at revision one has some comments then the checkin form for revision two will display the same comments. There&amp;#39;s no way to clear the field for the user. Even if they delete the comments and then submit, the comments reappear! The only way to get rid of them is to type something else. But there is a better way.&lt;a href="http://webmonkeymagic.blogspot.com/2011/03/empty-metadata-field-at-revision.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-935027004164481202?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/935027004164481202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/03/empty-metadata-field-at-revision.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/935027004164481202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/935027004164481202'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/03/empty-metadata-field-at-revision.html' title='Empty a metadata field at revision checkin'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-103879417792199390</id><published>2011-01-24T17:00:00.000+11:00</published><updated>2011-01-24T17:00:44.826+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>Thumbnail search in Content Server #2</title><content type='html'>Just a quick update to an older post &lt;q&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2010/10/thumbnail-search-in-content-server.html"&gt;Thumbnail search in Content Server&lt;/a&gt;&lt;/q&gt; where I talked about forcing the search template to show thumbnails. My tip was to add a parameter to the URL but this is a bit clumsy, the contributor will probably never do it. Let's do it for them!&lt;br /&gt;&lt;br /&gt;Go to Configuration Manager and create a rule that is only activated on a "search" condition. Click on the Side Effects tab and enter the key=value pair. Now add the rule to your Profiles for images and presto! everyone's image search uses the thumbnail view.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-103879417792199390?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/103879417792199390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/01/thumbnail-search-in-content-server-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/103879417792199390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/103879417792199390'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2011/01/thumbnail-search-in-content-server-2.html' title='Thumbnail search in Content Server #2'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6200036791094494212</id><published>2010-11-10T14:38:00.002+11:00</published><updated>2011-06-10T10:39:14.850+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Add a "future release" icon to contribution mode</title><content type='html'>Ken posed &lt;a href="http://tech.groups.yahoo.com/group/intradoc_users/message/24181"&gt;a good question on the intradoc forums&lt;/a&gt;. He wrote: &lt;br&gt;&lt;blockquote&gt;Our editors have requested that we add a &amp;quot;Future Release&amp;quot; indicator to the Site Studio contribution mode screen, similar to the workflow icon that can appear... Does anyone know what the syntax for accessing the metadata of the content is?&lt;/blockquote&gt;I thought it was a great idea, so I looked into it.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2010/11/add-future-release-icon-to-contribution.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6200036791094494212?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6200036791094494212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/11/add-future-release-icon-to-contribution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6200036791094494212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6200036791094494212'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/11/add-future-release-icon-to-contribution.html' title='Add a &quot;future release&quot; icon to contribution mode'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6170494860927504234</id><published>2010-11-10T11:06:00.004+11:00</published><updated>2011-06-10T10:38:29.465+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>Hiding primaryFile for SiteStudio</title><content type='html'>&lt;a href="http://blogs.oracle.com/kyle/2010/11/hiding_the_primary_file_field.html"&gt;Kyle has a great article&lt;/a&gt; on hiding the primaryFile field from Content Server checkin pages. I just wanted to augment the solution by mentioning a way to hide the field only from SiteStudio checkin pages.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2010/11/hiding-primaryfile-for-sitestudio.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6170494860927504234?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6170494860927504234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/11/hiding-primaryfile-for-sitestudio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6170494860927504234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6170494860927504234'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/11/hiding-primaryfile-for-sitestudio.html' title='Hiding primaryFile for SiteStudio'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-1683574312991961374</id><published>2010-10-24T11:08:00.001+11:00</published><updated>2011-08-24T09:55:35.174+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DAM'/><category scheme='http://www.blogger.com/atom/ns#' term='rendition'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='IBR'/><category scheme='http://www.blogger.com/atom/ns#' term='ImageAlchemy'/><title type='text'>Thumbnail search in Content Server</title><content type='html'>I received an email from Stijn about displaying image thumbnails in UCM. Content Server comes with a search results template called "thumbnail view." Stijn commented that the thumbnail view was useless because all the content items used the same thumbnail, even if they were an image. This doesn't seem very useful... fortunately UCM doesn't have to work like that. Images and PDF documents can display a graphic thumbnail, here's how...&lt;br /&gt;&lt;br /&gt;Thumbnails come from three places. The first place is an icon matched from the &lt;b&gt;dDocType &lt;/b&gt;metadata field on the content item. The icon is useful for helping users to quickly identify content by type, but as Stijn pointed out, it is useless for searching for a specific image. (The icons can be updated from the &lt;b&gt;Configuration Manager&lt;/b&gt;'s "Options" menu, choose "Content Types.") This is the image you see only if no other thumbnail is defined.&lt;br /&gt;&lt;br /&gt;The second place is from &lt;b&gt;IBR &lt;/b&gt;(InBound Refinery.) IBR is used to process and convert content to different formats and this can include the generation of thumbnail images. The thumbnail is generated at check-in so each content revision gets one thumbnail. Go to the &lt;b&gt;Configuration Manager&lt;/b&gt;'s "Options" menu and choose "File Formats" to add or set the jpeg and gif extensions to use the &lt;b&gt;ImageThumbnail&lt;/b&gt; conversion. Then tick the "Create thumbnail only for select graphics" option on the "File Formats Wizard" page (from the Content Server "Administration" menu under "Refinery Administration".) Finally, tell IBR how to generate the thumbnails on its "Additional Renditions" page. To change the thumbnail size, go to the &lt;b&gt;Admin Server&lt;/b&gt;'s General Configuration and add &lt;b&gt;ThumbnailHeight=80&lt;/b&gt; and &lt;b&gt;ThumbnailWidth=80&lt;/b&gt; (but it only applies to new checkins - use Archiver to apply retrospectively.) IBR is required for any content processing so it is worth installing, even if just for thumbnails.&lt;br /&gt;&lt;br /&gt;The third place is from &lt;b&gt;DAM&lt;/b&gt; (Digital Asset Management.) DAM is an extension to UCM that can create multiple renditions of an image, including a thumbnail rendition. DAM is installed on both Content Server and IBR and it requires some third-party software to perform the conversion, such as &lt;b&gt;ImageMagick&lt;/b&gt; and &lt;b&gt;ImageAlchemy&lt;/b&gt; (more info &lt;a href="http://webmonkeymagic.blogspot.com/2009/06/how-to-get-digital-asset-management-to.html"&gt;here&lt;/a&gt;.) DAM is probably overkill if all you want is thumbnails.&lt;br /&gt;&lt;br /&gt;One final tip - you can force any search results page to display thumbnails by adding &lt;b&gt;&amp;amp;listTemplateId=SearchResultsThumbnail&lt;/b&gt; to the URL. This is useful in the contribution editor for when the user is trying to insert an image because it overrides whatever view they have configured.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-1683574312991961374?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/1683574312991961374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/10/thumbnail-search-in-content-server.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1683574312991961374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1683574312991961374'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/10/thumbnail-search-in-content-server.html' title='Thumbnail search in Content Server'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7343674931389279810</id><published>2010-09-10T10:59:00.002+10:00</published><updated>2011-06-20T12:37:40.962+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='replicator'/><title type='text'>Not so ready-to-replicate</title><content type='html'>One of the fab new features introduced in SiteStudio 10gR4 was the &amp;quot;Ready to Replicate&amp;quot; flag   (let&amp;#39;s call it R2R.) As discussed in &lt;a href="http://webmonkeymagic.blogspot.com/search/label/replicator"&gt;some of my other posts&lt;/a&gt;, sections that are not marked as R2R are ignored by Archiver during the &amp;quot;Manage Site Replication&amp;quot; process - which finally makes site management a breeze. However an oddity has crept into subsequent versions of the SiteStudio component that I&amp;#39;d like to mention.&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2010/09/not-so-ready-to-replicate.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7343674931389279810?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7343674931389279810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/09/not-so-ready-to-replicate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7343674931389279810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7343674931389279810'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/09/not-so-ready-to-replicate.html' title='Not so ready-to-replicate'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-8788957661870456119</id><published>2010-09-03T16:19:00.001+10:00</published><updated>2011-08-24T09:58:29.106+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic list'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Dynamic Lists &amp; the Mystery of the Missing New Item</title><content type='html'>A common misunderstanding/complaint about Dynamic Lists on SiteStudio websites is the mystery of the missing new item. An author creates a new item using the nifty "Create New Item" wizard and at the end of the wizard the author is prompted to edit or exit, and save. Once saved, the new item disappears into the ether, never to be seen again! Huh? What is going on here? Try again... same result! Meanwhile some sub-editor somewhere is getting deluged with Workflow notifications for duplicate items... help!&lt;br /&gt;&lt;br /&gt;This situation is commonplace on systems that are using Workflow. The newly created item is whisked away to the appropriate Workflow where it cannot be searched for or accessed until it meets approval. To the author, it looks like their item has vanished into thin air because it doesn't turn up in the Dynamic List that they are trying to update. This is an unfortunate but correct behaviour of Dynamic Lists!&lt;br /&gt;&lt;br /&gt;Dynamic Lists simply return a list of content items that match a search criteria. The trick here is that Workflow revisions are never included in search results. Most of the time users don't notice because the search service will find the &lt;i&gt;latest approved&lt;/i&gt; revision of an item, so if their item is in Workflow but has an older approved revision, the search will find that older revision as the latest approved. The situation faced here is that there is no older approved revision - the new item is trapped in workflow at revision 1, there is no latest approved revision! It cannot be searched for and it will not show up in any Dynamic List. But the item does exist and it can be found - it is parked safely on the Workflow page.&lt;br /&gt;&lt;br /&gt;Mystery solved? Yes. Makes the system usable? No! How do we solve this conundrum?&lt;br /&gt;&lt;br /&gt;The first revision needs to skip Workflow so that it can turn up in search results. Sounds simple enough, except now every new content item in the system is getting released without approval! Fortunately SiteStudio has an ace up its sleeve. It uses the "DontShowInListsForWebsites" metadata field to prevent a released content item from showing up on a website.&lt;br /&gt;&lt;br /&gt;So, the solution is to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Update the Dynamic List elements so that new items are created with their metadata preset to exclude them from the website; &lt;/li&gt;&lt;li&gt;Update the Workflow so that the first revision of any item is immediately released only if it is excluded from a website. &lt;/li&gt;&lt;/ul&gt;Done! The new item can now be found in the Dynamic List as an "excluded" item and it doesn't show up on the website. All an author has to do is turn off the "exclude" rule and their item is instantly visible on the website. They can do so directly from the Dynamic List (there are buttons in the list element toolbar that toggle excluded items) or they can update the item's metadata as they save their changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-8788957661870456119?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/8788957661870456119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/09/dynamic-lists-mystery-of-missing-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8788957661870456119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8788957661870456119'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/09/dynamic-lists-mystery-of-missing-new.html' title='Dynamic Lists &amp; the Mystery of the Missing New Item'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-4276158384409491653</id><published>2010-08-26T12:40:00.001+10:00</published><updated>2010-11-10T09:57:35.907+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contribution Folders'/><title type='text'>Contribution Folders explained - in portuguese!</title><content type='html'>Andre has written a post similar to mine that explains how Contribution Folders work. Funny how people still seem to misunderstand the concept. Oh yeah, his post is in Portuguese (use the Google translate thingy.)&lt;br /&gt;&lt;br /&gt;His post: &lt;a href="http://andrealmar.wordpress.com/2010/08/24/contribution-folders-use-com-moderacao/"&gt;http://andrealmar.wordpress.com/2010/08/24/contribution-folders-use-com-moderacao/&lt;/a&gt;&lt;br /&gt;My post: &lt;a href="http://webmonkeymagic.blogspot.com/2010/01/contribution-folders-same-same-but.html"&gt;http://webmonkeymagic.blogspot.com/2010/01/contribution-folders-same-same-but.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's important to note that they are virtual folders, so they may look like folders on your desktop but they work a bit differently. Also you are crazy to use them on a consumption website... lol I can say that because I worked on a site that did just that (it probably still does) and it made sense at the time but I wouldn't do it like that again.&lt;br /&gt;&lt;br /&gt;I was recently asked in a series of emails to figure out how to display the user's folders as a site map. I tried valiantly to explain that a site map on a website is unrelated to contribution folders... they insisted they understood but wanted the solution anyway. Funny stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-4276158384409491653?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/4276158384409491653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/08/contribution-folders-explained-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/4276158384409491653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/4276158384409491653'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/08/contribution-folders-explained-in.html' title='Contribution Folders explained - in portuguese!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6274204419190632555</id><published>2010-06-14T22:23:00.002+10:00</published><updated>2011-06-20T12:39:48.305+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='layout/template'/><title type='text'>Secrets of wcmFragment</title><content type='html'>The wcmFragment tag that came with SiteStudio10gR4 was a great new way to reference fragments. The big improvement with this tag is that the fragment no longer needs to leave any XML code in your pages. Here&amp;#39;s an example of how to use it:&lt;br&gt;&lt;code&gt;[!--$wcmFragment(&amp;quot;myID&amp;quot;,&amp;quot;myContentId&amp;quot;,&amp;quot;myFragment&amp;quot;,&lt;/code&gt;&lt;br&gt;&lt;code&gt;     &amp;quot;mySnippet&amp;quot;&lt;/code&gt;&lt;code&gt;,&amp;quot;myParameter=value&amp;quot;&lt;/code&gt;&lt;code&gt;)--]&lt;/code&gt;&lt;br&gt;However I&amp;#39;ve noticed a few documentation oddities regarding wcmFragment that were worth clarifying...&lt;br&gt;&lt;a href="http://webmonkeymagic.blogspot.com/2010/06/secrets-of-wcmfragment.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6274204419190632555?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6274204419190632555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/06/secrets-of-wcmfragment.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6274204419190632555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6274204419190632555'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/06/secrets-of-wcmfragment.html' title='Secrets of wcmFragment'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-5053970223522531566</id><published>2010-06-09T11:05:00.002+10:00</published><updated>2010-06-09T12:30:16.634+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><title type='text'>UCM 11g - out now!</title><content type='html'>Oracle finally released the new and improved UCM 11g! Yeah, I'm a bit slow on the announcement but that's because Australia was in bed last night when it was released. You can &lt;a href="http://www.oracle.com/technology/software/products/content-management/index.html"&gt;download it here &lt;/a&gt;but crikey, it's a big download! Looks like the WCM and just about everything else is bundled inside. Full &lt;a href="http://download.oracle.com/docs/cd/E14571_01/ecm.htm"&gt;documentation  here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From what I've seen there's no new killer features, all the work is under the hood. Faster checkins, better performance, login/logout authentication, integration with WebLogic. The downside is that all the performance improvements mean more grunt is needed from your hardware, but it hardly used much anyway.&lt;br /&gt;&lt;br /&gt;I've already commented on the &lt;a href="http://webmonkeymagic.blogspot.com/2010/05/sitestudio-11g-preview.html"&gt;WCM improvements in my previous post&lt;/a&gt; but apparently the ability to drop SiteStudio editbale content into any  non-SiteStudio website is a big ticket item (they're touting JDeveloper as their IDE of  choice.) Also, DAM functionality is improved to better support flash objects, PSD files and selecting image renditions (previously renditions required a custom component to select them, I guess it's been rolled into the system.) The Desktop Integration Suite features are upgraded, good for users who rely on Contribution Folders.&lt;br /&gt;&lt;br /&gt;Fortunately they've provided some info on &lt;a href="http://download.oracle.com/docs/cd/E14571_01/doc.1111/e16451/toc.htm"&gt;how to upgrade&lt;/a&gt; from 10g so the question is, how long before we're all using 11g?&lt;br /&gt;&lt;br /&gt;*** UPDATE: There does not appear to be a way to use UCM 11g without using WebLogic. This contradicts pre-release reports that said WebLogic was not compulsory. You should &lt;a href="http://bexhuff.com/2010/04/the-top-10-things-oracle-ucm-users-need-to-know-about-weblogic"&gt;read this&lt;/a&gt; to understand it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-5053970223522531566?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/5053970223522531566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/06/ucm-11g-out-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5053970223522531566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5053970223522531566'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/06/ucm-11g-out-now.html' title='UCM 11g - out now!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-641545211498068729</id><published>2010-05-24T10:29:00.004+10:00</published><updated>2012-02-01T13:01:42.728+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='ssp/sspu'/><title type='text'>SiteStudio 11g preview</title><content type='html'>I've stumbled across the documentation for SiteStudio 11g on the Oracle website.&lt;br /&gt;&lt;br /&gt;The documentation is more extensive than previous versions. It includes previously undocumented configuration flags, idoc script extensions and services, and custom element form APIs. Some nice gems in there.&lt;br /&gt;&lt;br /&gt;It looks like the 10gR4 format for region definitions has become the  standard, the 10gR3 and earlier versions are considered "legacy" format. Unfortunately 11g does not look like it will support other scripting languages, rumoured to include PHP, and the pre-existing support of ASP &amp;amp; JSP is still restricted to legacy sites.&lt;br /&gt;&lt;br /&gt;In fact, it just looks like the very latest 10gR4 rebranded. But is this a good thing or bad thing? Content Server 11g will require WebLogic and other new infrastructure bits so maybe minimal tinkering to websites is a good idea for now. My favourite gripe, the LinkWizard has not been touched but at least the Contribution Window has dumped the tiny floppy disk icon for a big "Save" button.&lt;br /&gt;&lt;br /&gt;The big change is the improved SSPU. Now called "Site Studio Publisher" it is a Content Server component and it can be accessed directly from the Content Server menus. It finally provides the ability to crawl and publish a specific page on demand, rather than the whole site - which contributors can do themselves, right from the page! It has a typical Content Server interface and can support specified custom querystrings in page URLs. It still supports post-crawl filters and post-publish triggers, but best of all, it appears to be compatible with 10gR3.&lt;br /&gt;&lt;br /&gt;The SiteStudio documentation can be accessed here:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E14571_01/doc.1111/e10615/toc.htm"&gt;http://download.oracle.com/docs/cd/E14571_01/doc.1111/e10615/toc.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-641545211498068729?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/641545211498068729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/05/sitestudio-11g-preview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/641545211498068729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/641545211498068729'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/05/sitestudio-11g-preview.html' title='SiteStudio 11g preview'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-469730968762666107</id><published>2010-02-20T15:32:00.013+11:00</published><updated>2011-09-29T12:36:21.216+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timezone'/><category scheme='http://www.blogger.com/atom/ns#' term='locale'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Comparing Dates and Time Zones</title><content type='html'>Date and time calculations are a bit tricky in UCM. Unlike regular numbers, dates and times cannot be calculated or compared to one another directly.&lt;br /&gt;&lt;br /&gt;Comparing numbers is easy, consider this example:&lt;br /&gt;&lt;pre&gt;&lt;$if 6 gt 5$&gt;&lt;br /&gt;This code is always true!&lt;br /&gt;&lt;$endif$&gt;&lt;/pre&gt;Dates and times cannot be compared this way unless they are converted to numbers, using toInteger(). Unfortunately there is no way to turn that number back into a date, so it's not too useful. A better way to manipulate timestamps without converting them is to simply "parse" them, using the &lt;span style="font-weight: bold;"&gt;parseDate()&lt;/span&gt; function.&lt;br /&gt;&lt;pre&gt;&lt;$myBirthday = "5/3/77"$&gt;&lt;br /&gt;&lt;$if parseDate(myBirthday) gt parseDate("18/09/1970")$&gt;&lt;br /&gt;I was born after Hendrix died, on &lt;$myBirthday$&gt;!&lt;br /&gt;&lt;$endif$&gt;&lt;/pre&gt;Parsing a date depends on the format of the timestamp. There are many different formats for timestamps so you'll need to  figure out which ones are used by your UCM installation. The system &lt;span style="font-weight: bold;"&gt;locale&lt;/span&gt; decides how to format and recognise timestamps. For example, the UK locale uses dates in d/M/yy format, whereas the  US locale is M/d/y. The system  locale&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;and timezone are chosen when UCM is first installed. Users can choose to use their own locale and change the way dates and languages are displayed just for them. UCM will recalculate timestamps  and present the correct timezone for the user's locale whenever they  look at a date, but continue to store dates according to the system  locale. Any dates that are entered need to follow the  (user) locale's recognised date formats, which may or may not include seconds,  military hours and so on. The system locale can be changed on reboot using the  &lt;span style="font-weight: bold;"&gt;SystemProperties&lt;/span&gt; utility; the user local is easily switched from the Content Server "&lt;span style="font-weight: bold;"&gt;My Profile&lt;/span&gt;" page.&lt;br /&gt;&lt;br /&gt;Apart from simple date/time comparisions, UCM can also do a great job at converting a given timestamp to the current timezone, adding daylight saving as required for us. You will need to tell it what timezone you are converting from by manually adding the timezone and then explaining the format of the timestamp. Use &lt;span style="font-weight: bold;"&gt;zz&lt;/span&gt; to indicate a timezone code. For example, let's convert the new year's countdown in New York to my local time (Sydney) and see when they'll join in on our party.&lt;br /&gt;&lt;pre&gt;&lt;$parseDateWithPattern("1/1/11 America/New_York",&lt;br /&gt;"d/M/y zz")$&gt;&lt;/pre&gt;Unfortunately there doesn't seem to be a built-in way of converting the local timestamp to a specified timezone. I get around this by calculating the difference between a date in local time and the same date specified as another timezone, then adding that difference to my local time. For example, when we're doing the new year's countdown in Australia, how far behind will the UK be?&lt;br /&gt;&lt;pre&gt;&lt;$newYearUK = parseDate("1/1/2011")&lt;br /&gt;+ toInteger(parseDate("1/1/2011"))&lt;br /&gt;- toInteger(parseDateWithPattern("1/1/2011 Europe/London",&lt;br /&gt;"d/M/yy zz"))$&gt;&lt;/pre&gt;One of the quirks I've observed with handling date objects is that errors are not reported in the server output log. Your code simply keeps going like nothing happened! This makes problems difficult to trace and you'll get unexpected results. It's a good idea to print out your timestamps as you manipulate them so you can see where any problems are.&lt;br /&gt;&lt;br /&gt;**** UPDATE ****&lt;br /&gt;Alec Kloss sent me an email with the following tip:&lt;br /&gt;"...you should be able to go to any Content Server generated page and append&lt;br /&gt;&lt;pre&gt;&amp;amp;UserTimeZone=America/Chicago&lt;/pre&gt;to the end of the URL and... that will change the timezone of all displayed times accordingly."&lt;br /&gt;Nice one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-469730968762666107?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/469730968762666107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/comparing-dates-and-time-zones.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/469730968762666107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/469730968762666107'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/comparing-dates-and-time-zones.html' title='Comparing Dates and Time Zones'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3505049572414401555</id><published>2010-02-10T15:06:00.009+11:00</published><updated>2010-03-03T13:41:18.675+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='ephox'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='replicator'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>Copy a SiteStudio site? Even easier!</title><content type='html'>SiteStudio 10gR4 (546) is chock full of awesome new features, one of which is a new way to replicate your site. Yes, the previous article I just wrote about replication is already obsolete. Ha!&lt;br /&gt;&lt;br /&gt;The new feature is &lt;span style="font-weight: bold;"&gt;section level replication&lt;/span&gt; and it's pretty nifty. It is enabled via the Designer application and it adds a new section property, called "Ready to replicate." If you switch region content anywhere on a webpage, the property automatically changes to false. You can see this on your webpage in the contribution mode banner as a "replicate" or "don't replicate" button. Now I have to confess... I haven't got a system set up to test this new replication functionality but I assume it is all part of the &lt;span style="font-weight: bold;"&gt;Manage Site Replication&lt;/span&gt; page*. Archiver should rebuild the project file on import and ignore the sections where "Ready to replicate" is false. Why did I say Archiver "should" rebuild? I haven't found a shred of documentation to explain any of this stuff, I'm just guessing (it only got a mention in the release notes textfile.)&lt;br /&gt;&lt;br /&gt;Some other awesome features in recent SiteStudio releases include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Compare renditions - any renditions, not just the latest! On the Content Information page, in the revision history table, a new column is appended that allows you to compare the current revision to any other revision, future or past.&lt;/li&gt;&lt;li&gt;Setting a default page name (instead of manually changing index.htm)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSDefaultUrlPageName=default.html&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Downloading images and documents from a friendly URL (the current directory) not the WebLocation (buried in the /groups/public/documents directories.)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSEnableDirectDelivery=true&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Oh and those stubbornly clinging to the Ephox editor, don't forget the "ondemand" editors option that was included a few releases prior. It lets you say how many elements get loaded automatically and how many must be clicked on to load. If your page has more than three or four elements then Ephox (Java) is likely to hang your machine, so this setting is a godsend.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSUseOnDemandEditors=true&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There's more great features too, so do yourself a favour and upgrade.&lt;br /&gt;&lt;br /&gt;* UPDATE&lt;br /&gt;Section Level Replication works great! I was right, it works via the "Manage Site Replication" page with Archiver. Note that the project file's native file is modified to exclude sections but not the weblayout file. Strange but true.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3505049572414401555?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3505049572414401555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/copy-sitestudio-site-even-easier.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3505049572414401555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3505049572414401555'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/copy-sitestudio-site-even-easier.html' title='Copy a SiteStudio site? Even easier!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-173571860336455107</id><published>2010-02-08T15:25:00.009+11:00</published><updated>2010-02-09T14:29:24.122+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='replicator'/><category scheme='http://www.blogger.com/atom/ns#' term='archiver'/><title type='text'>How to copy a SiteStudio site</title><content type='html'>A question that pops up quite often how to copy a SiteStudio website, or maybe just a part of it. UCM is a content management system so by definition it tries to reuse content and prevent duplication! But there are situations where it is desirable to duplicate or replicate your site, like for a training demo or for backup purposes. There are a number of techniques to do this but surprisingly few people know how, or how do it &lt;span style="font-style: italic;"&gt;really easily&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The best method for replicating site sections to another UCM instance is to use the &lt;span style="font-weight: bold;"&gt;SiteStudio Replicator&lt;/span&gt; application. This application can select individual website sections to replicate (or the whole lot.) It can also overwrite or retain the region content assignments on the target server, along with other section properties including custom section properties. A few simple clicks and the site structure is replicated. You don't need any firewall exceptions or UCM providers to connect the servers, you don't need to check in any content. Easy! It is already installed on your local machine alongside the SiteStudio Designer application, look for it in your Windows Start menu.&lt;br /&gt;&lt;br /&gt;But we're still stuck on website duplication. There is an inherent problem here - website sections rely on unique section IDs - you can't simply duplicate a website, because you'll get duplicate website sections! If you really really need to duplicate a site or some site sections, download the project file xml and manually copy + change ALL the section IDs (append a letter to them all.) This is fraught with danger; the simplest mistake will cripple the entire website.&lt;br /&gt;&lt;br /&gt;Other site replication methods include:&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;Backup and Restore&lt;/span&gt; page basically downloads an entire site and all its config and bits and pieces and wraps it all up in a zip file. I suppose this is the cleanest way to backup a site but it doesn't &lt;span style="font-style: italic;"&gt;duplicate&lt;/span&gt; a site. It has to be run manually and it creates a nasty big zip file. Not really useful unless you're doing a training demo and want to obliterate any changes when you import. It's in Content Server under the menu Administration &gt; Site Studio Administration &gt; Backup and restore.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;Manage Site Replication&lt;/span&gt; page uses the power of Archiver to replicate a site to another UCM instance with the benefit of running automatically as content changes. It can be configured to include the website content and/or the website structure (the project file which describes all the site sections.) The problem here is that it will replicate the &lt;span style="font-style: italic;"&gt;entire&lt;/span&gt; site structure, which is typically not ideal. Most websites are constantly under development and require a planned launch, not an automatic deployment! It's best for synchronising content only, keep the project file out of it. It's in Content Server under the menu Administration &gt; Site Studio Administration &gt; Manage Site Replication.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-173571860336455107?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/173571860336455107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/how-to-copy-sitestudio-site.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/173571860336455107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/173571860336455107'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/02/how-to-copy-sitestudio-site.html' title='How to copy a SiteStudio site'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3434744707853926755</id><published>2010-01-22T09:51:00.006+11:00</published><updated>2010-01-22T10:03:46.923+11:00</updated><title type='text'>Custom UCM pages - without components!</title><content type='html'>Check out this fabulous tip on Kyle's blog - provided by my old Stellent mentor and all-round nice guy Ed Bryant.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.oracle.com/kyle/2010/01/using_rules_profiles_to_drive.html"&gt;Using Rules &amp;amp; Profiles To Drive Custom Pages &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I'm gonna go replace my UCM search pages right now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3434744707853926755?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3434744707853926755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/01/custom-ucm-pages-without-components.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3434744707853926755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3434744707853926755'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/01/custom-ucm-pages-without-components.html' title='Custom UCM pages - without components!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-344941914622531318</id><published>2010-01-04T14:51:00.004+11:00</published><updated>2010-01-04T16:45:51.556+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contribution Folders'/><title type='text'>Contribution Folders: Same Same But Different</title><content type='html'>There seems to be a lot of people who misunderstand the Contribution Folders feature of UCM. Crikey, half the features seem to be misunderstood. Things like UCM security Accounts being mistaken for Microsoft Active Directory accounts, or SiteStudio website Sections being confused with directories in a website. Like a popular t-shirt in Cambodia says, they are "Same Same But Different."&lt;br /&gt;&lt;br /&gt;Contribution Folders may look like regular directories or folders on your desktop but they are definitely not the same thing and definitely should not be used the same way. So what is a Contribution Folder anyway? Glad you asked.&lt;br /&gt;&lt;br /&gt;A Contribution Folder is a fancy name for a webDAV access point. It allows you to drag-n-drop files from your machine right into the Content Server. How cool is that? However, the Content Server is not a filesystem like your computer, it's a content management system organised by metadata. The Contribution Folders are just virtual folders - they don't physically exist; there are no corresponding directories in the filesystem. A Contribution Folder is just a metadata value attached to a content item.&lt;br /&gt;&lt;br /&gt;Think of them more like the "labels" feature in Gmail. A bunch of emails with the same label can all be displayed together or modified together, regardless of where they are located in your mailbox. Contribution Folders work in a similar way. There is a slight difference though; you can't have more than one folder assigned to an item. This makes folders unsuitable for organising your content, so only use folders for the easy drag-n-drop experience.&lt;br /&gt;&lt;br /&gt;Now here's the tricky part. Content management requires all content to have metadata assigned. So it's easy to drag-n-drop your files into the system, but what metadata will it get? What security group is applied? This is where the Contribution Folder takes over. The folder itself can be preset with metadata that gets automatically applied to all files dragged inside it. So if you drop 15 images into the folder, all 15 get the same security group applied. Pretty neat, eh? No more pesky checkin forms. But what happens when you need to apply a different security group? Well, just create a different folder and drag into it. But now things start to get tricky. Which folder do you drag into? What happens if you use the wrong one? How deep do your folders go? Who is assigning the correct metadata to the folders? How much does a Cambodian t-shirt cost anyway? Folder management is tricky for the sysadmin and easily abused by contributors, so keep their use to a minimum.&lt;br /&gt;&lt;br /&gt;Here's a few pointers about using folders:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Items inside a folder must have unique file names. If you try to drag into a folder a new file with the same filename as an existing item in that folder, it will become a new revision of the existing item.&lt;/li&gt;&lt;li&gt;Items can be "deleted" from folders. This means they get moved to the "trash" folder. However those items still turn up in search results and appear in websites! You'll need to delete from the trash folder to destroy the item.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Contribution Folders should only be present on your contribution instance. They should definitely not be used in consumption and there's little to no reason for using them on dev or testing environments.&lt;/li&gt;&lt;li&gt;Should you require folders installed on two or more connected environments, keeping them in sync is problematic. There is no way to control the creation of folder IDs (it is sequential only) so you must use the replication procedure, which is a tricky thing to set up. Never create folders on the other environments or you'll break your replication.&lt;/li&gt;&lt;li&gt;Each folder slows down your system. There is a default limit of 1000 folders. If you reach that limit... well, you're not using them properly. Read this post again!&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-344941914622531318?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/344941914622531318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/01/contribution-folders-same-same-but.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/344941914622531318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/344941914622531318'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2010/01/contribution-folders-same-same-but.html' title='Contribution Folders: Same Same But Different'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-1269354165882923049</id><published>2009-11-21T11:47:00.005+11:00</published><updated>2009-12-01T16:26:22.495+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='headers'/><category scheme='http://www.blogger.com/atom/ns#' term='cookie'/><title type='text'>Cookie monster</title><content type='html'>Something I've never bothered to do until recently was make cookies. I prefer eating them! But it came up the other day at work when the website needed to read and write some cookies.&lt;br /&gt;&lt;br /&gt;UCM provides simple idoc functions to read and write cookies, using getCookie(name) and setCookie(name,value,expires.) The problem we had was that the setCookie command would only create a simple, non-secure cookie that was tied to the current sub-domain. We needed more flavour in our cookies!&lt;br /&gt;&lt;br /&gt;So, instead of using setCookie I sent my own HTTP headers to do the job with more precision with setHttpHeaders(type,details.) Using this little baby meant I could include whatever cookie ingredients we needed. Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;$setHttpHeader("Set-Cookie","myCookieName=myValue; path=/myPath/here/; domain=.topLevelDomain.com; secure=true; httponly=true; expires=0")$&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The cookie can be read back in as normal using the getCookie command... provided the cookie is available, of course. I may have eaten it already. Mmmmmm cookies...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-1269354165882923049?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/1269354165882923049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/11/cookie-monster.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1269354165882923049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1269354165882923049'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/11/cookie-monster.html' title='Cookie monster'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-5867664516558050305</id><published>2009-06-25T20:48:00.003+10:00</published><updated>2009-12-01T16:26:22.496+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DAM'/><category scheme='http://www.blogger.com/atom/ns#' term='rendition'/><category scheme='http://www.blogger.com/atom/ns#' term='IBR'/><category scheme='http://www.blogger.com/atom/ns#' term='ImageAlchemy'/><title type='text'>How to get Digital Asset Management to report image details</title><content type='html'>The Digital Asset Management (DAM) capabilities of UCM are powerful and kick-arse, but often misunderstood. Unfortunately it has a non-Oracle dependency that limits its effectiveness and could cause your management to shy away from implementing it. DAM is supposedly able to plug into any image conversion software but it turns out that it has a dependency on the &lt;a href="http://www.handmadesw.com/index.html"&gt;ImageAlchemy&lt;/a&gt; converter. After converting an image, it asks ImageAlchemy to do a report on each image rendition - the size, filetype, dimensions etc - that cannot be reconfigured. Without ImageAlchemy that useful information is lost.&lt;br /&gt;&lt;br /&gt;ImageAlchemy is not free - it costs thousands of dollars to purchase. If, like me, you are unable to convince the boss to purchase this non-Oracle add-on you'll find yourself relying on alternative software for conversions. Anything should work just fine - but you have no image information.&lt;br /&gt;&lt;br /&gt;ImageAlchemy does offer a free demo version but it is crippled to only convert small images so it cannot be used. It turns out that although the ImageAlchemy demo won't convert images, it can still perform the reports; it just appends a "buy now" disclaimer to the output. If you try to use the demo with UCM, just for reporting, it works fine - except the extra disclaimer message at the end causes UCM to fail the conversion. &lt;br /&gt;&lt;br /&gt;The solution is quite simple. Configure DAM to use whatever conversion software to generate images, but set the &lt;$ImageAlchemy$&gt; variable to point at a shell script. Tell the script to accept two parameters - the image filename and a report flag. The script should accept the parameters and execute the ImageAlchemy demo, but instead of just printing the output to the console, pipe the output to a file. Then get the script to output the file to the console but stop at the disclaimer. Eureka! The reporting is complete and the conversion is successful. There is one little hiccup - ImageAlchemy can't read filenames over 80 chars, so make sure your script changes the image path.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-5867664516558050305?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/5867664516558050305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/06/how-to-get-digital-asset-management-to.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5867664516558050305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5867664516558050305'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/06/how-to-get-digital-asset-management-to.html' title='How to get Digital Asset Management to report image details'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-5818706954771018051</id><published>2009-04-21T17:39:00.004+10:00</published><updated>2009-12-01T16:26:22.497+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSUrlFieldName'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><title type='text'>Friendly file names component</title><content type='html'>I was poking around the interwebs when I noticed a useful update over on David Roe's ContentOnContentManagement blog. I mentioned previously in my blog that SiteStudio was capable of friendly filenames and offered a few config tweaks to auto-generate them. Well, David went one better an wrote a component that does all the work. Grab yourself a copy.&lt;br /&gt;&lt;a href="http://contentoncontentmanagement.com/2009/03/02/auto-fill-that-friendly-name/"&gt;http://contentoncontentmanagement.com/2009/03/02/auto-fill-that-friendly-name/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note that you still need to configure your server for friendly file names. The component has an advantage in that it can detect previously used filenames and increment the name with a number if necessary (1,2,3), whereas my method always appended the contentID (we can't execute any search services).  His component doesn't use hyphens to produce SEO friendly filenames though... but if he reads this he'll probably update it to do so ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-5818706954771018051?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://contentoncontentmanagement.com/2009/03/02/auto-fill-that-friendly-name/' title='Friendly file names component'/><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/5818706954771018051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/04/friendly-file-names-component.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5818706954771018051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5818706954771018051'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/04/friendly-file-names-component.html' title='Friendly file names component'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-8935087925964541801</id><published>2009-01-30T11:14:00.007+11:00</published><updated>2010-06-04T12:12:15.328+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='layout/template'/><title type='text'>Better SiteStudio "Best Practices" - Generating Navigation</title><content type='html'>Continuing my theme of scalable best-practice for SiteStudio, it's time to turn our attention to the elephant in the room - generating navigation. SiteStudio comes with dozens of "navigation" fragments that harness the power of dynamically assembling navigation from the site sections. There's plenty of fragments to choose from, they do nifty stuff... but the question nobody seems to ask is "why the hell would you build navigation out of your site sections?"&lt;br /&gt;&lt;br /&gt;Building site navigation from site sections might make sense to a content-management developer or even a clueless contributor, but as a web developer it smacks me as fair dinkum madness. Nesting sections (directories) just for a drop-down nav? Thinks of all the redundant jumbled-up URLs, yuck. If you wanna change your nav, you gotta move around site sections, mucking up external links to your site... I could go on, but you know the issues, right? &lt;br /&gt;&lt;br /&gt;But you were thinking "dynamically assemble nav, that sounds hi-tech and easier to manager, right?" Wrong. To add a link to your navigation, you need to create a new section with a URL, assign a layout, assign content to the regions, set the section as "include in navigation" plus any other custom section properties. Phew... not so dynamic now, eh? The dynamic bit is the fact that every time someone visits the page it needs to recalculate and reassemble the navigation based on the site hierarchy. Strewth. The nav probably changes once a blue moon yet you're wasting valuable processing power regenerating it on every single page visit. On a site with thousands of sections that's gonna be a significant slowdown! The Oracle dudes will tell you to cache it but that means whenever you do change your nav you won't see nuthin' until the cache expires. Site hierarchy as navigation is horribly impractical.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Generate navigation from a content item, not from site sections.&lt;/b&gt;&lt;br /&gt;Why bother "generating" navigation when we can just use a content item? It's a CMS, remember! Create a region in your layout for navigation content. The contributor simply edits the assigned content and adds a list of links, links to whatever content or sections or URLs they feel like. Easy! Use a staticlist fragment to offer tighter control over the items, the new 10gR4 SiteStudio uses region templates to finitely control the appearance further. Standard workflow &amp; security can be used to control the nav, it's fast and reusable, and it doesn't expose the project file (site structure) to non-designers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Auto-reuse your navigation content across multiple sections.&lt;/b&gt;&lt;br /&gt;Worried about the arduous task of assigning the nav content item to each section's layout? Simply hard-code into your layout that the nav region uses a specific content item. Better still, use a Custom Section Property (CSP) to define a starting section. Then code the layout so that all child sections use the same nav content item as the CSP parent. A site footer is also an ideal use for this approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-8935087925964541801?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/8935087925964541801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/01/better-sitestudio-best-practices_30.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8935087925964541801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8935087925964541801'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/01/better-sitestudio-best-practices_30.html' title='Better SiteStudio &quot;Best Practices&quot; - Generating Navigation'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-9106019225021317378</id><published>2009-01-02T09:33:00.014+11:00</published><updated>2010-06-04T12:12:15.329+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSUrlFieldName'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='layout/template'/><title type='text'>Better SiteStudio "Best Practices" - Secondary Pages</title><content type='html'>I've read a few blogs, webcasts and discussions about "best practice" for SiteStudio. They all seem to talk about the same obvious ideas. What I've been thinking about are some real-world issues and solutions, especially for scalability. Here's two I'm playing with now regarding secondary pages.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Use Primary Pages sparingly - rely on Secondary Pages&lt;/b&gt;&lt;br /&gt;Forgive me for starting with a simple one... but I'm seeing websites where every page is generated from a primary layout. Yuck. This means every new page will need a new section. Every section in the entire site is stored in a single project file which quickly becomes stupidly massive. Only designers can edit sections. Sections need all sorts of settings done right or your site could become corrupted, even vanish. The content workflow processes are useless because sections can't be workflowed, you'll get a site full of sections with blank pages. Avoid this mess by using secondary pages.&lt;br /&gt;&lt;br /&gt;What's the difference between primary and secondary? Well, let's start by understanding website sections. A section is the equivalent of a directory on a filesystem. The section however is a "virtual" directory - it's not a physical directory on any filesystem, it doesn't actually exist anywhere, the section is "generated" on demand. Anyway, if I go to a real directory in a normal website, I'll see a directory listing. Actually most websites are set up so that instead of seeing the listing, I'll see a default page, usually called index.htm - sounds familiar? In UCM terms this "default" page is your primary page, assembled using your primary layout. (Example: http://www.mydomian.com/mysite/mysection/index.htm)&lt;br /&gt;&lt;br /&gt;But just as a directory can contain any number of files, a section can display any number of web pages. The primary layout can only display the one assigned content item as index.htm - so the secondary layout is used to display any other content item requested as a web page. The region in the secondary layout is not assigned to a particular content item, it is assigned as "replaceable." To see any content item in this section, simply append the ContentID to the section's URL and presto! there it is. Any item whatsoever can appear as a web page in this section (depending on security, conversion settings and so on) so you'll never need to modify any sections ever again! Woohoo! (Example: http://www.mydomian.com/mysite/mysection/ID000001) One final tip on this issue - you can (and usually should) use the same layout as the primary and the secondary, no probs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Generate SEO-friendly filenames using SSUrlFieldName&lt;/b&gt;&lt;br /&gt;The problem with secondary layouts is that the filename is just the ContentID, typically just a number with no file extension. Yuck! That's going to ruin your Google ranking and cause all sorts of confusement.  (Example: http://www.mydomian.com/mysite/mysection/ID000001)&lt;br /&gt;&lt;br /&gt;Give yourself real file names with the config value SSUrlFieldName. Create a metadata field (let's call it Bob) and then append your config.cfg file with SSUrlFieldName=Bob and presto! your web pages now use whatever filename Bob says. There is a catch - old mate Bob must know a unique filename for every content item, regardless of where it gets used. Bob can't talk about two items called about.htm (he gets confused) and expecting your contributors to give Bob the unique filename is delusional. The solution is to auto-generate it using the ContentTitle, the ContentID and a file extension. Replace spaces with dashes, truncate and then remove the leading zeros. (Example: http://www.mydomian.com/mysite/mysection/about-1.htm) Set this up as a global rule (newcheckin onsubmit) on your contribution instance - or as a archiver import rule on your consumption instance.&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;I'll write a few more of these...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-9106019225021317378?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/9106019225021317378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/01/better-sitestudio-best-practices.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/9106019225021317378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/9106019225021317378'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2009/01/better-sitestudio-best-practices.html' title='Better SiteStudio &quot;Best Practices&quot; - Secondary Pages'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-1234955789695349373</id><published>2008-12-11T04:00:00.005+11:00</published><updated>2009-12-01T16:26:22.500+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fck'/><category scheme='http://www.blogger.com/atom/ns#' term='ephox'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>SiteStudio10gR4 - Region Definitions &amp; Region Templates</title><content type='html'>Forgive me for back-dating this post but I wanted to mention my excitement over the upcoming release of SiteStudio 10gR4. There was a webcast/webinar/webthingy where Oracle announced a new version (hopefully due in Jan09) where the main new features are region templates and region definitions.&lt;br /&gt;&lt;br /&gt;Currently all layouts contains content regions that are defined and styled by settings in the layout. Editable elements in the region are also controlled in the layout. It leaves heaps of non-web code on the page and it is awkward to customise the display of content items. My real-world example is trying to maintain identical element settings in over 40 separate layouts, phew. &lt;br /&gt;&lt;br /&gt;The definition of a region is now a separate "Region Definition" xml file. It has all the usual options (edit, info, approve, view differences) plus it now has the element definitions. Element definitions have been expanded, like allowing people to insert Flash as easily as inserting an image. It's separate to layouts, so in my 40-layout example all I would need to do is update the one definition file, instead of each of the 40 layouts. The region definition also controls the assigning of selected region templates. &lt;br /&gt;&lt;br /&gt;The "Region Template" is also a separate xml file. It controls the presentation of content inside the region. An example they gave was a template that took a static list content item and displayed it as tabbed panels. Applying a different template changed the list into a flat page of heading &amp; paragraphs. Hmmm... this looks ideal for creating navigation that is not section-based. Yay! They had another example that loaded a dynamic list query of images into a flash object. All the contributor had to do was change the query. Neat.&lt;br /&gt;&lt;br /&gt;Other points of interest:&lt;br /&gt;* Easy choice of FCK or Ephox editors&lt;br /&gt;* Override the chosen editor's config or css, per element&lt;br /&gt;* More element types (querys, dropdowns etc)&lt;br /&gt;&lt;br /&gt;This brings some real power to contributors and yet it gives tighter control to designers. Impressive! I can't wait.&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;UPDATE - Oooh oooh the new docco is now available on the Oracle site... it says they updated the LinkWizard! Yay! I can't find a picture... but it seems to work the same? Bah!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-1234955789695349373?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/1234955789695349373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/sitestudio10gr4-region-definitions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1234955789695349373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/1234955789695349373'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/sitestudio10gr4-region-definitions.html' title='SiteStudio10gR4 - Region Definitions &amp; Region Templates'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6831096859782791928</id><published>2008-12-09T17:15:00.001+11:00</published><updated>2011-09-29T12:39:17.932+10:00</updated><title type='text'>Let's play "Component Demo!"</title><content type='html'>I spent today figuring out why our Excel to PDF conversion was rounding all numbers to two decimal places (it was StarOffice) and trying out some interesting components - PDF Watermark and ContentCategorizer. &lt;br /&gt;&lt;br /&gt;PDF Watermark allows you to chuck a watermark on our PDFs either statically or dynamically. Static means that when a document gets checked in, the watermark is added to the PDF and the result is stored permanently as the web-viewable. Dynamic means that the web-viewable PDF is untouched, but whenever someone tries to see it the watermark is magically added. I found static worked great but the dynamic was a total hit-and-miss.&lt;br /&gt;&lt;br /&gt;I was excited by ContentCategorizer and the prospect of tags, automatic metadata assignment and maybe even reading values out of the content itself, like recording the camera used to take a photo. Unfortunately I couldn't figure out how to get it to work. None of that stuff happens out-of-the-box anyway, you need to configure it all, and in true UCM style I mean it does nothing out-of-the-box. The manuals were no help either, this needs a consultant to demo.&lt;br /&gt;&lt;br /&gt;Anyway, I was booked in for the "Advanced Site Studio" Oracle course next week but the instructor had his visa rejected. Bugger. I was going to get him/her to write me an "Insert Multimedia" widget for Ephox... now I have to do it myself. After all, the system supports inserting multimedia but, in true UCM style... yeah you know the rest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6831096859782791928?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6831096859782791928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/lets-play-component-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6831096859782791928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6831096859782791928'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/lets-play-component-demo.html' title='Let&apos;s play &quot;Component Demo!&quot;'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-5088965510772421047</id><published>2008-12-09T17:14:00.012+11:00</published><updated>2008-12-11T11:26:50.380+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ephox'/><title type='text'>Latest Upgrades (the joy of)</title><content type='html'>I've been busy patching, testing and tweaking our UCM. We're finally on the latest, latest* release and I'm pretty happy about how it's performing. &lt;br /&gt;&lt;br /&gt;Ephox got an upgrade too and by switching to the "sun" connection method it can actually display images now, yay. I still haven't figured out how to style the editor to look like each of our layouts (each layout has a fixed width) and darned if I know why our Intranet stylesheets aren't reaching Ephox. Wysiwyg editing? Not quite. And the LinkWizard is still as crappy as ever, total fail in Firefox3.&lt;br /&gt;&lt;br /&gt;I also noticed that the size of our fonts are different now when launched from IE compared to FireFox. I'm not sure if it's Oracle UCM or Ephox doing it... looking at the Java Console Logs I can see the stylesheet information is loaded, parsed and rewritten according to rules my "launching browser" might understand. For example, here's what happens to my BODY style...&lt;br /&gt;&lt;br /&gt;Actual stylesheet reference:&lt;br /&gt;body { color:#000000; font-size: 70%; }&lt;br /&gt;&lt;br /&gt;Launching the editor from Firefox:&lt;br /&gt;body {ephox-visible: false;color: rgb(0, 0, 0); font-size: 70%;}&lt;br /&gt;&lt;br /&gt;Launching the editor from IE:&lt;br /&gt;BODY {ephox-visible: false;FONT-FAMILY: Verdana, Helvetica, Arial, sans-serif}&lt;br /&gt;&lt;br /&gt;"I mean, I'm on a webpage, I'm editing a webpage, it's rendering a webpage - why force it through Java?" - and now it is trying to emulate the current browser? Wow. Is that ultra-smart or epic-dumb... I'm not sure! However if it's not Ephox doing the css emulation then I do apologise to the folks at Ephox. (I should point out that  Ephox is a pretty decent editor with more features than others.)&lt;br /&gt;&lt;br /&gt;* Update - I've been advised by metalink support that we're not on the latest release of DynamicConverter. There is a newer one not listed on metalink but available via eDelivery. How are we supposed to find this stuff out?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-5088965510772421047?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/5088965510772421047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/miscellaneous-debris.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5088965510772421047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/5088965510772421047'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/12/miscellaneous-debris.html' title='Latest Upgrades (the joy of)'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7221998478455302482</id><published>2008-10-15T19:15:00.004+11:00</published><updated>2009-12-01T16:26:22.501+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='link'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>correcting links with a validation script</title><content type='html'>Ok, my personal war on dodgy UCM links continues... had a win when our Oracle consultant visited last week (I know he's reading this :)) and showed me some new tricks with validation scripts.&lt;br /&gt;&lt;br /&gt;A validation script is just a bit of JavaScript that can be executed when a contributor tries to save their changes. There is no documentation on validation scripts so I never tried to use them myself... but all they do is run a defined function and throw an alert if the function does not return true. Well our mate suggested we just implement a script that silently rewrites dodgy UCM links and return true.&lt;br /&gt;&lt;br /&gt;It's so simple and yet so liberating! Thankyou James.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7221998478455302482?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7221998478455302482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/10/correcting-links-with-validation-script.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7221998478455302482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7221998478455302482'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/10/correcting-links-with-validation-script.html' title='correcting links with a validation script'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-8303152164351174726</id><published>2008-09-05T13:48:00.012+10:00</published><updated>2009-12-01T16:29:40.408+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Surprise! ssWeblayoutUrl</title><content type='html'>I put a bit of inline javascript in a content item to do an image rollover. After it published though the script was mangled - my mixed use of single and double quotes were all replaced with double quotes.&lt;br /&gt;&lt;br /&gt;My code looked fine in Ephox. I tried a few edit+saves and realised my mixed use of quotes was sometimes failing. I complained to the Ephox folks who quickly checked &amp;amp; assured me it was not their product causing the issue. So I went to Content Server and viewed the content item's XML. Sure enough I found the problem - my image references were rewritten as a new Idoc URL format that inserts its own single quotes.&lt;br /&gt;&lt;br /&gt;Observe my original code...&lt;br /&gt;&amp;lt;img src="/serverroot/somepath/contentID1.gif" onmouseover="this.src='/serverroot/somepath/contentID2.gif';" onmouseout="this.src='/serverroot/somepath/contentID1.gif';" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Now see what XML (unencoded) is stored in my content item...&lt;br /&gt;&amp;lt;img src="[!--$ssWeblayoutUrl('somepath/contentID1.gif')--]" onmouseover="this.src='[!--$ssWeblayoutUrl('somepath/contentID2.gif')--]';" onmouseout="this.src='[!--$ssWeblayoutUrl('somepath/contentID1.gif')--]';" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Hey wow! My URLs are magically replaced with some new Idoc link format... that screws up my quote groups! Gee, thanks guys.&lt;br /&gt;&lt;br /&gt;Anyway I got around the problem by making my javascript first use an empty string and then appending the URL. Here's how it gets stored now..&lt;br /&gt;&amp;lt;img src="[!--$ssWeblayoutUrl('somepath/contentID1.gif')--]" onmouseover="this.src=''+'/serverroot/somepath/contentID2.gif';" onmouseout="this.src=''+'/serverroot/somepath/contentID1.gif';" /&amp;gt;&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;I was fumbling around metalink when I discovered this gem: ssWeblauoutUrl can be configured to only use dDocName - no path required! Yay! Now we can fiddle with our image security without fear of broken links (except in javascript, of course :)) just put this in your config:&lt;br /&gt;&lt;br /&gt;SSWeblayoutUrlUsesDocNames=true&lt;br /&gt;&lt;br /&gt;Refer to metalink article 579457.1&lt;br /&gt;&lt;br /&gt;UPDATE #2:&lt;br /&gt;I'm playing with the new format, here are my findings... &lt;br /&gt;* apparently it is only used on img tags - not links. Bummer...&lt;br /&gt;* it will redirect to the latest available revision - contributor mode links to revisions in workflow, non-contributor mode gives you the latest released instead. Nice!&lt;br /&gt;&lt;br /&gt;here's how it looks:&lt;br /&gt;&amp;lt;img src="[!--$ssWeblayoutUrl('contentID')--]" /&amp;gt;&lt;br /&gt;&lt;br /&gt;UPDATE #3:&lt;br /&gt;The bad news is that if the contentID is invalid or does not exist, it throws an error... more importantly, the editor will fail to load any content at all! Youch! &lt;br /&gt;&lt;br /&gt;The good news is that the latest release of sitestudio(build298) is supposed to resolve the bug and also uses the new URL format on link tags.&lt;br /&gt;&lt;br /&gt;UPDATE #4:&lt;br /&gt;Finally got authority to upgrade and yes, ssWebLayoutUrl is a total kickarse auto-replacement for image src URLs but no, it doesn't seem to replace other weblayout links automatically. Maybe I should update my validation script to do it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-8303152164351174726?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/8303152164351174726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/09/surprise-ssweblayouturl.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8303152164351174726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/8303152164351174726'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/09/surprise-ssweblayouturl.html' title='Surprise! ssWeblayoutUrl'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7415805141701666806</id><published>2008-07-30T17:42:00.003+10:00</published><updated>2009-12-01T16:26:22.503+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='link'/><title type='text'>No new LinkWizard, just recommendations</title><content type='html'>Good new and bad news, folks.&lt;br /&gt;&lt;br /&gt;The bad news is my employer refused to let me write a LinkWizard replacement. The good news is that I sent Oracle a reasonably comprehensive report about link management - what the problems are and what the solutions might be.&lt;br /&gt;&lt;br /&gt;Naturally my first recommendation was to replace the LinkWizard. A new version should take any URL entered by the user and convert it into a SiteStudio link. This kind of pre-processing would eliminate common mistakes, like entering a SSPU-published URL. I even supplied a new interface that does away with the "wizard" style of annoying steps and offers an intuitive "properties" style interface. I also recommended they junk AJAX and just use a simple (fast) IDOC/JavaScript combination.&lt;br /&gt;&lt;br /&gt;I then suggested that ssLINK tokens should be enhanced to include the file format of the target. This would allow a contributor to link to a content item and choose the web page version, PDF version or the native file version, without having to be trained in copying URLs from the Content Information page.&lt;br /&gt;&lt;br /&gt;Next I proposed a "friendly" URL solution where horrible Content Server URLs like /content/groups/public/documents/doc/contentID.pdf could be replaced with intelligent URLs like /about/link-management.pdf. Wouldn't you love that!&lt;br /&gt;&lt;br /&gt;I had a couple more suggestions including upgrades to the LinkManager component. I have no idea what will come of the report but here's hoping that they will do something about links.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7415805141701666806?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7415805141701666806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/07/no-new-linkwizard-just-recommendations.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7415805141701666806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7415805141701666806'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/07/no-new-linkwizard-just-recommendations.html' title='No new LinkWizard, just recommendations'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6262568007310109887</id><published>2008-06-08T11:40:00.007+10:00</published><updated>2012-02-01T13:01:42.717+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssp/sspu'/><title type='text'>Useful SSPU logging</title><content type='html'>Well I haven't started rewriting the hyperlink wizard, my apologies. I've been wrestling with SSPU which has failed to publish our site repeatedly over the last two weeks. In an effort to work out what the hell was going on we turned on all the logging, right up to "debug for all". It was too much to be helpful... so after reviewing the logs I was able to come up with some meaningful logging levels.&lt;br /&gt;&lt;br /&gt;PRIMARY LOG (FILE)&lt;br /&gt;default: ERROR&lt;br /&gt;syndicator: INFO&lt;br /&gt;date-time: CRITICAL&lt;br /&gt;analyser: CRITICAL&lt;br /&gt;replicator: INFO&lt;br /&gt;packagemanager: INFO&lt;br /&gt;ice.cache: VERBOSE&lt;br /&gt;delivery: INFO&lt;br /&gt;delivery.ice: VERBOSE&lt;br /&gt;&lt;br /&gt;SECONDARY LOG (DATABASE)&lt;br /&gt;default: ERROR &lt;br /&gt;&lt;br /&gt;Ok let's start with the database log. I know it sounds counter-intuitive but database logging slows down the software tremendously - it needs to read the entire database to display the SSPU status page (so make sure you purge often!) When you're viewing the SSPU website the only thing you care about is errors. Ignore everything else.&lt;br /&gt;&lt;br /&gt;The primary log file is what you turn to when there is a problem. Set Syndicator to INFO to report the overall status of SSPU. It also includes info about database purges. Set Analyzer to CRITICAL to ignore messages about malformed links (they won't affect the publish anyway.) Set Replicator to INFO - this reports which files are actually being processed. It also includes final summaries and error counts. Set Delivery to INFO to report when a job is pushed to the subscription client/FTP (subagent). Set Delivery.ice to VERBOSE in order to report the status of the subagent's delivery and see an actual confirmation message that the publish succeeded. Finally there is a meaningless bug in the interface so I set date-time to CRITICAL so it won't get reported.&lt;br /&gt;&lt;br /&gt;There are two additional settings you might consider. Set Packagemanager to INFO in order to see exactly which files have been selected (or skipped) for update. Set Ice.cache to VERBOSE in case there are some undelivered files floating around - it reports what items are waiting to be delivered.&lt;br /&gt;&lt;br /&gt;One final important tip - Delivery.ice may report warnings about ice 501 errors. These can safely be ignored. They simply mean that SSPU was asking for confirmation that the job was finished but the subscription client (subagent) was too busy processing the job to respond. SSPU will keep resending the job until it receives a 200 confirmation - but subagent will only process the first push and ignore the rest. Once subagent finishes it sends confirmation, SSPU stops pushing and subagent discards all the repeated pushes. This is the intended behaviour.&lt;br /&gt;&lt;br /&gt;Oh and the problem with our publish? Too many broken links!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6262568007310109887?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6262568007310109887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/06/useful-sspu-logging.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6262568007310109887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6262568007310109887'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/06/useful-sspu-logging.html' title='Useful SSPU logging'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-2285082606499797340</id><published>2008-06-03T18:49:00.006+10:00</published><updated>2009-12-01T16:26:22.505+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='link'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>The achilles heel of Oracle UCM - hyperlinks</title><content type='html'>UCM is a great document management system but its websites are sure awkward. The most obvious blunder was the editor so thank god that's been fixed! This leaves us with the biggest weakness in the system - hyperlinks.&lt;br /&gt;&lt;br /&gt;Let's look at exhibit A - the Hyperlink Wizard. The new UCM spots a brand new fully AJAX interface for creating links. There's an amazing amount of code and effort put into it - just to make it work exactly like the old one! Fair dinkim guys, it took a pHD* to understand the old one so why replicate its horrible functionality? Did you expect your users to be so fully engrossed in the old way that they would be incapable of doing it any more simply? Why did you waste your time reinventing the wheel when it is just as square as the old one? I wonder if they have ever tried to create a link... &lt;br /&gt;&lt;br /&gt;The first thing it does is ask "do you want to link to a section, file or URL?" What? Why do I have to choose? What's the difference? I want to link to another web page... who knows? Click on file. "Do you want the current item, existing file from server, upload a file, new file, or new word doc?" Hmmm, I'm editing this link so I don't want the current item (duh). Why would I create a word doc? I'm trying to make a link to a web page! I guess I'll have to choose existing, good thing I already know the content id. Once the initial search results finally load, i have to search again using my content id. Ok, I have selected my content item. Now it asks "use default web section metadata, choose a section or just link to URL?" Do i care? What does a section mean anyway? I think i want a URL but I know my page is already used in website x, so I'll drill down into that website until i find a "section" that sounds like my page. Click click click click click. Click next and it displays some ugly code and calls it my "link URL" (i thought i chose a section!) asking to me confirm. Hmm that looks nothing like the link i expected to see. Click finish and hope for the best. &lt;br /&gt;&lt;br /&gt;Wow, what a pointlessly verbose experience (and i even removed a step!) Steve Krug says, "DON'T MAKE ME THINK!" so my contributors skip all that by simply pasting the published URL into the first "URL" field. The system however does not recognise published URLs, decides there are no links to that page, and deletes it from the published site. D'oh!&lt;br /&gt;&lt;br /&gt;And take a look at the URLs it publishes. Every one ends in some seemingly random number! Why? Because the system must give every page a unique id. C'mon guys, most free CMS software generates human-sounding URLs even before Web2.0 happened. Is it really that hard?&lt;br /&gt;&lt;br /&gt;And so ends another rant. Hopefully my next post will be about a replacement Hyperlink Wizard that I have written for you to download and enjoy.&lt;br /&gt;&lt;br /&gt;* I work at a uni, my contributors are academics and they screw up the links all the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-2285082606499797340?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/2285082606499797340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/06/achilles-heel-of-ucm-hyperlinks.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/2285082606499797340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/2285082606499797340'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/06/achilles-heel-of-ucm-hyperlinks.html' title='The achilles heel of Oracle UCM - hyperlinks'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7290885840783747096</id><published>2008-05-27T11:47:00.004+10:00</published><updated>2009-12-01T16:28:50.813+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ephox'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>Unlocking the power of Ephox</title><content type='html'>The geniuses at Oracle have added Ephox as the new Contribution editor - but crippled it to make it look like their old editor. Newsflash to Oracle - the old editor sucked, why are you making the new one pretend to work the same as the old one?&lt;br /&gt;&lt;br /&gt;Ephox comes with a WordCount feature, Find/replace, forms editing and even multimedia support. It has a menubar and can be configured for multiple toolbars. Why did Oracle remove these features?&lt;br /&gt;&lt;br /&gt;Anyway, to turn that stuff back on you just need to edit the XML config file. Naturally the Oracle guys thought that was too simple so they generate the XML "on the fly" from a Javascript file. To edit the config for the wysiwyg element, hack this file:&lt;br /&gt;/weblayout/resources/wcm/sitestudio/elements/wysiwyg/wysiwyg.config.js&lt;br /&gt;&lt;br /&gt;The XML syntax you need can be found in the Developer guide at the Ephox website.&lt;br /&gt;&lt;a href="http://www.ephox.com/developers/editliveforjava/v60/DeveloperHTML/index.html"&gt;http://www.ephox.com/developers/editliveforjava/v60/DeveloperHTML/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Overall I'm pretty happy with the Ephox editor. My big gripe is that it uses a Java applet - Ephox seem to have abandoned any non-Java versions. Applets are horrible on websites - all your contributors will need Java on their machines. I've seem some weird repainting from the applet and it can be unstable, it's slow to load, who knows which Java version to trust. I mean, I'm on a webpage, I'm editing a webpage, it's rendering a webpage - why force it through Java? Hmmm I appear to be ranting, let me start again...&lt;br /&gt;&lt;br /&gt;Overall I'm pretty happy with the Ephox editor. Apart from relying on a silly applet :) the code it produces is clean and well structured. Ephox have some nifty features like Accessibility reports, thesaurus and WordCount. I've upgraded to SiteStudio260 and the Ephox java is quite stable. The only hiccup I've had was that it couldn't tell the difference between a print and a screen stylesheet. I put a few support requests through to the Ephox people and they responded promptly and helpfully. If you're considering an upgrade, go for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7290885840783747096?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7290885840783747096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/05/unlocking-power-of-ephox.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7290885840783747096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7290885840783747096'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/05/unlocking-power-of-ephox.html' title='Unlocking the power of Ephox'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7648570322226969686</id><published>2008-02-01T13:27:00.006+11:00</published><updated>2009-12-01T16:26:22.506+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ephox'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><title type='text'>Finally - the new Contributor Editor!</title><content type='html'>After much pleading and praying Oracle are finally ready to release the upgrade to the Contribution Editor. It has not yet been released but I got a pre-release to play with. &lt;br /&gt;&lt;br /&gt;It uses Ephox (java-based) to provide a wysiwyg editor that works on any computer. It required two or three CS upgrade/patches to get running but that wasn't a big drama.&lt;br /&gt;&lt;br /&gt;Highlights include the ability to write headings (yay!) easy switch-to-code view, enhanced table &amp; image formatting options (includes deleting cells &amp; rows) and overall the generated code is nicer. It also features an Accessibility Report. I like the way that the metadata screen is now available as a tab instead of popping up before every save.&lt;br /&gt;&lt;br /&gt;So far I've found the java-based ephox to be a bit flaky - no word on the preferred java version (I'm using v6.5). Hopefully I can dump it for the javascript-based ephox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7648570322226969686?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7648570322226969686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/02/finally-new-contributor-editor.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7648570322226969686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7648570322226969686'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2008/02/finally-new-contributor-editor.html' title='Finally - the new Contributor Editor!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3278846325798651315</id><published>2007-12-14T10:40:00.001+11:00</published><updated>2011-08-24T09:45:09.397+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><category scheme='http://www.blogger.com/atom/ns#' term='stellent'/><title type='text'>Get Enhanced Contributor Editing!</title><content type='html'>My contributors can add headings, delete rows and auto-insert image ALT text. Can yours? No? Ha! &lt;br /&gt;&lt;br /&gt;Well, now they can too, using these &lt;a href="http://www.uow.edu.au/~michaelc/ss-properties.zip"&gt;replacement HTML Object Properties forms&lt;/a&gt;. I have rewritten the standard forms and bundled them together for you to download.&lt;br /&gt;&lt;br /&gt;List of new functionality:&lt;ul&gt;&lt;li&gt;Apply "auto-styles" (CSS class) to text, paragraphs &amp;amp; tables&lt;/li&gt;&lt;li&gt;Convert or remove text formatting (FONT, SPAN, BOLD etc) &lt;/li&gt;&lt;li&gt;Convert paragraphs from/to headings (H1 to H6, P, DIV etc) &lt;/li&gt;&lt;li&gt;Convert table cells from/to table header cells (TD or TH) &lt;/li&gt;&lt;li&gt;Edit or delete table rows &lt;/li&gt;&lt;li&gt;Calculate image download size &amp;amp; time (popup alert for oversized images) &lt;/li&gt;&lt;li&gt;ALT text for image auto-inserted from the image's "Title" metadata &lt;/li&gt;&lt;li&gt;Set image dimensions &amp;amp; keep aspect ratio &lt;/li&gt;&lt;li&gt;Set type of numbered list &amp;amp; starting number&lt;/li&gt;&lt;/ul&gt;Note that no core CS or SS code is modified.&lt;br /&gt;&lt;br /&gt;I included a readme.txt file with instructions, disclaimers and other fancy words. Enjoy!&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.uow.edu.au/~michaelc/ss-properties.zip"&gt;Download Replacement HTML Object Properties forms (ZIP, 19kb)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3278846325798651315?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3278846325798651315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/12/get-enhanced-contributor-editing.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3278846325798651315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3278846325798651315'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/12/get-enhanced-contributor-editing.html' title='Get Enhanced Contributor Editing!'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-3768772020659729854</id><published>2007-12-06T18:34:00.001+11:00</published><updated>2011-08-24T09:43:56.866+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitestudio'/><category scheme='http://www.blogger.com/atom/ns#' term='contributor'/><category scheme='http://www.blogger.com/atom/ns#' term='stellent'/><title type='text'>How I got H1 Headings into Site Studio pages</title><content type='html'>&lt;p&gt;One of the biggest frustrations of our users in the inability to insert a standard HTML heading.&lt;/p&gt;&lt;p&gt;"I beg your pardon" you say, "no headings?"&lt;/p&gt;&lt;p&gt;Yep, the Site Studio Contributor application window allows you to only write paragraphs. You can insert tables, horizontal rules, bold text and even classes*, but not headings. &lt;/p&gt;&lt;p&gt;To get around this deficiency, I started by modifying the &lt;b&gt;HTML Object Properties&lt;/b&gt; Forms. Being the logical programmer that I am, I tried to create a function that allowed me to replace a &amp;lt;p&amp;gt; tag with a &amp;lt;h1&amp;gt; tag, using the standard HTML replaceChild() method. Unfortunately this throws an error.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It turns out that any attempt to insert a new node in the HTML DOM will be rejected... oddly enough it didn't mind me deleting nodes though. After a while I gave up and forgot about it.&lt;/p&gt;&lt;p&gt;Then the other night as I was trying to sleep I thought "instead of being a nice boy and respecting the DOM, why not just treat code as dirty text and do a simple string replace?" and vola! it works.&lt;/p&gt;&lt;p&gt;I simply grab the node I want to work with and replace its outerHTML with its innerHTML , wrapped in my heading tags. Like this:&lt;/p&gt;&lt;pre&gt;g_obj.outerHTML='&amp;lt;h1&amp;gt;'+g_obj.innerHTML+'&amp;lt;/h1&amp;gt;';&lt;/pre&gt;&lt;p&gt;Now if only I'd thought of that last year... &lt;/p&gt;&lt;p&gt;Oh there's one final twist... you can't use outerHTML on table cells, which sucks when you need to change a TD into TH. To get around this problem you need to replace the entire table!&lt;/p&gt;&lt;p&gt;&lt;small&gt;* When applying a class it uses a FONT tag!? Crazy.&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-3768772020659729854?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/3768772020659729854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/12/how-to-put-h1-headings-into-site-studio.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3768772020659729854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/3768772020659729854'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/12/how-to-put-h1-headings-into-site-studio.html' title='How I got H1 Headings into Site Studio pages'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-6479028152597925787</id><published>2007-11-21T18:13:00.000+11:00</published><updated>2009-12-01T16:26:22.509+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmu'/><category scheme='http://www.blogger.com/atom/ns#' term='schema'/><category scheme='http://www.blogger.com/atom/ns#' term='archiver'/><title type='text'>Exporting schema values</title><content type='html'>We have been preparing our CMS installations for upgrading and basically replicating our production environment for testing purposes. One of the stumbling blocks we hit was exporting schema.&lt;br /&gt;&lt;br /&gt;The CMS has two powerful applications for migrating schema... but which does what? Archiver is used primarily to export content while the Configuration Migration Utility (CMU) is a component that exports all sorts of configuration settings. Between the two you can fuddle your way through migration... but we hit a snag. How do we export schema?&lt;br /&gt;&lt;br /&gt;Well, we started with CMU. It bundled up all our schema Tables and schema Views quite nicely... until we discovered they were empty of values!&lt;br /&gt;&lt;br /&gt;It turns out CMU can't export values in a schema.&lt;br /&gt;&lt;br /&gt;So we went back to Archiver and sure enough, it exports schema too, as tables. We found plenty of documentation about exporting table &lt;em&gt;structures&lt;/em&gt;... but nothing about values! Anyway we dutifully added all our tables using the default Archiver settings and ran the export/import. Sure enough, all our tables were recreated... and empty!&lt;br /&gt;&lt;br /&gt;Obviously this was extremely frustrating... but eventually we worked it out.&lt;br /&gt;&lt;br /&gt;Archiver's default settings for exporting tables were the problem. Each time you select a table that contains timestamps, &lt;em&gt;Archiver automatically selects the timestamps as criteria for deciding what values to export&lt;/em&gt;. This results in... no values! Make sure you deselect these criteria - they should all be empty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-6479028152597925787?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/6479028152597925787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/11/exporting-schema.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6479028152597925787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/6479028152597925787'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/11/exporting-schema.html' title='Exporting schema values'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1376861610011595152.post-7314288917318181582</id><published>2007-11-03T17:15:00.000+11:00</published><updated>2009-12-01T16:31:30.481+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Metadata Muddling</title><content type='html'>Ever since we installed our Stellent (now Oracle) &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CMS&lt;/span&gt; I have been anxious about our &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;metadata&lt;/span&gt; structure. What is the best way to organise and catalogue our stuff?&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Stellent&lt;/span&gt; guys were very pleased with themselves about the fact that we could design any structure we wanted - but frankly we had no idea what to do, we needed some pointers, if not some "best practice" at least some common practice. In the end I believe I composed a decent &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;metadata&lt;/span&gt; structure but there are holes in its functionality and, more importantly, in the way people use it.&lt;br /&gt;&lt;br /&gt;Here's a rundown on my successes and failures:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Don't bother with Security Groups and Content Types.&lt;/strong&gt; These &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;metadata&lt;/span&gt; items actually appear in document URLs and changing them invalidates your links. Accounts do too but they are more useful in controlling access. Note that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;workflows&lt;/span&gt; are restricted to a single Security Group which means multiple Security Groups = duplicated workflows.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Don't use abstract definitions for Profiles.&lt;/strong&gt; We use a number of profiles but our users are confused by them. For example, a user wants to put a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PDF&lt;/span&gt; on our website. Is this "Web Content" or "Documentation" or a "Publication"? Who cares? Unfortunately I was unable to figure out a better approach and we're stuck with it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Don't rely on "Release Date."&lt;/strong&gt; Using it for news items and other time-sensitive archives is a bad idea. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;CheckOutAndOpen&lt;/span&gt; replaces the date and release dates can't be changed at all except by checking in a new revision. Make sure you have a "Creation Date" or equivalent &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;metadata&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Keep a record of the Original Author.&lt;/strong&gt; Anyone could edit the item and you won't know who really is responsible for it. Make sure you have a "Creator" or equivalent metadata.&lt;br /&gt;&lt;br /&gt;Remember that there are only two ways to change &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;metadata&lt;/span&gt; on multiple items - using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Archiver&lt;/span&gt; or &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;propagating&lt;/span&gt; folders - neither of which is simple. Make sure you get it right from the start!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1376861610011595152-7314288917318181582?l=webmonkeymagic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webmonkeymagic.blogspot.com/feeds/7314288917318181582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/11/metadata-muddling.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7314288917318181582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1376861610011595152/posts/default/7314288917318181582'/><link rel='alternate' type='text/html' href='http://webmonkeymagic.blogspot.com/2007/11/metadata-muddling.html' title='Metadata Muddling'/><author><name>webmonkeymagic</name><uri>http://www.blogger.com/profile/12903353125963500476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_WrbjiCf4Ypw/TBbNrg6t-JI/AAAAAAAAAHs/j-QO_iGcdjg/S220/1262830931182_d0529.jpg'/></author><thr:total>2</thr:total></entry></feed>
