Blog Search
Blog Latest Comments
nice!
by Hunter Eskew on Tuesday, August 16, 2011
Hahaha, not blogging from the iPad. This time it was me trying to do 8 things at once :) But I've since corrected. An...
by TJ Muehleman on Wednesday, May 11, 2011
Blogging from your iPad again, I see :). Great stuff, TJ! It's always so intriguing to hear where our architecture is ...
by kcoleman on Wednesday, May 11, 2011
Interesting stuff TJ! Please immediately come up with a clever acronym for cloud based OEM before Gartner or Forrester ...
by Kevin Fielding on Wednesday, May 11, 2011
Ho ADACarolyn, To further elaborate: any email generated from the community platform (invites, report abuse notificat...
by kcoleman on Thursday, May 05, 2011
Page  of  Total Items: 28

firstprevnextlast

ThePort's Product and Technology blog. We'll share helpful tips about the platform, talk about upcoming releases, and maybe on occasion share a story or two on how awesome the team is here.
Archive for March 2010
TJ Muehleman
Posted by TJ Muehleman
Friday, March 19, 2010
Comments (0)
We just published a few new helpful debug commands for use by XSL authors.

tp_info=1

Need to know the unique identifier for a given group or user? Or the XSLT that's rendering that page? Or any other info that's passed in the querystring? Pass this in via querystring (http://community.theport.com/?tp_info=1), view source, and search for "URL::". You'll see the raw URL.

tp_script=1

Another querystring param, this will highlight all of the modules on the page and tell you their name. Very handy if you're looking at a page with a collection of modules and aren't sure of their name.

Hope this is helpful to all the template authors out there!


Denise Como
Posted by Denise Como
Wednesday, March 17, 2010
Comments (0)
In order to stay competitive, our business is under tremendous pressure to continuously release new products and enhancements. Ensuring our testing processes are efficient and reliable can be a great challenge; it’s definitely a balancing act and one we take very seriously.

Quality is the number one requirement for any product or service. At ThePort Network, we believe if you’re out of quality, you’re out of business.

Our Quality Assurance team focuses on testing three main areas:

1) New Customer websites

2) New Products

3) Enhancements to our current platform

In all areas of testing, we provide comprehensive functional and regression testing using several methods. In the past, we have been a “manual” test shop, which has been incredibly time consuming. Adding tools, like Selenium IDE has given us the ability to streamline our regression testing processes, which will save us time and continue to ensure quality of our platform. Some of the advantages of automating our regression testing is it 1) gives us the ability to save time by reusing test cases and test scripts; 2) eliminates redundancy in the test process; 3) allows QA to focus more heavily on new product testing and our new customer sites.

Along with Selenium IDE, we use Trac for defect tracking. Our quality and development teams work closely so defects are identified and resolved as quickly as possible. Utilizing Trac has been extremely beneficial with tracking defects as well as providing complete ease of use in entering defect tickets. Since we are a relatively small business, having the ability to use ‘open source’ tools like Selenium and Trac is crucial. As we mature with automation, we will continue to look for new and innovative tools to help maximize our time and the quality of our products.

I recently read that “Superior quality is never an accident and achieving it takes the concerted efforts of creative, competent and dedicated professionals in both the development and testing arenas”. I agree whole-heartedly with that statement because that is exactly what you get at ThePort.

Denise Beachum/QA Manager
TJ Muehleman
Posted by TJ Muehleman
Saturday, March 13, 2010
Comments (0)

One of the most recent additions to our platform is our announcement blocks. Announcement blocks are an easy to use part of our content management system that allow community admins to quickly and easily target messages at various portions of the system.

Out-of-the-box

Announcement blocks come pre-loaded in three areas of the site:

Community landing page – By default, this will only be shown to logged in users of your site. Use this announcement block to announce new features, talk about an upcoming promotion or campaign, or inform users of event

User dashboard – The dashboard block is a great place to encourage users to fill out their profile or upload a profile picture

Group dashboard – The group dashboard block has a similar purpose as the user dashboard. But instead of user features, this is great to inform groups about group functionality or inform group admins of best practices to growing their groups.

Custom

If you require more than the three standard announcement blocks, we can create more blocks for you to use.

For template authors

The code snippet below will pull a content block onto your page:

<xsl:value-of select="iPageInformation:ResetDictionary('dict_ContentBlock')"/>

<xsl:value-of select="iPageInformation:PutDictionaryKey('dict_ContentBlock','sName','CommunityContentBlock')"/>

<xsl:value-of select="iPageInformation:PutDictionaryKey('dict_ContentBlock','sParentID',$sControlID1)"/>

<!—This is one of the most important lines here: this tells which content block you’re using à

<xsl:value-of select="iPageInformation:PutDictionaryKey('dict_ContentBlock','sContentName','COMMUNITY')"/>

<xsl:value-of select="iPageInformation:PutDictionaryKey('dict_ContentBlock','sXslFileName','ContentBlock.xslt')"/>

<xsl:value-of select="iSMProcessor:ProcessGenericModule(iPageInformation:GetDictionaryCSV('dict_ContentBlock'))" disable-output-escaping="yes"/>

Webservices

Our REST APIs also implement announcement blocks for read-only use. This is an effective way to utilize the same content block from your community site anywhere else on the web. The call to pull the content blocks out is pretty straight forward:

/Community/ContentBlocks?devkey={DevKey}

Note that this pulls ALL of your content blocks. Since your content block is not likely to change often, you’ll want to cache this content in your system for a longer period of time to make sure you’re being as efficient as possible.

Also take note that all of our REST APIs can be returned as XML or JSON.

FAQs

I’m not seeing the content blocks appear on any of the pages you mention above? If this is the case, you will need to contact your account manager to have the content blocks retrofitted into your community template set

Do I need to know HTML to manage announcement blocks? No, our announcement blocks management area come with a lightweight WYSIWIG built on the popular CKEditor projectCKEditor project

Can I embed Videos in content blocks? Yes, use the “add a video” button.

How about cut and paste from Word? Yes, you can do that too. Use the “Paste from Word” option in the editor



TJ Muehleman
Posted by TJ Muehleman
Monday, March 01, 2010
Comments (0)
One nifty trick that one of our customers showed me recently is how to control looping in XSLT. Previously, I didn't think it was possible to "break" out of a loop. That is, once you've reached 8 or 9 records, exit the loop. While the correct practice for exiting a loop is still to only ask for what you need, its still important to be able to control the ability to exit whenever you need / want to. So, without further ado, here's how you do it:

Let's assume you have an XSLT variable that contains your collection:

$SOCategories

This collection contains some number of group categories. If we only wanted to display the first two, we could do something like:

<xsl:for-each select="$SOCategories/SocialObjectCategories/SocialObjectCategoryCollection/SocialObjectCategory[position() &lt; 3]">

</xsl:for-each>

The [position() &lt; 3] XPath at the end tells the loop to only loop through the first two. Any subsequent items in the collection will be ignored.

You can use this to only display even numbered rows (using mod) or any such algorithm you wanted to craft.

Thanks to our user community for this helpful tip!