<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://dev.metrixstream.com/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://dev.metrixstream.com/w/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages</id>
		<title>Metrixstream - New pages [en]</title>
		<link rel="self" type="application/atom+xml" href="http://dev.metrixstream.com/w/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages"/>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Special:NewPages"/>
		<updated>2026-09-12T17:42:07Z</updated>
		<subtitle>From Metrixstream</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:UserCookieData</id>
		<title>Site:API:UserCookieData</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:UserCookieData"/>
				<updated>2012-08-30T04:31:08Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: Created page with &amp;quot;= User Cookie Data =  User cookie data is essentially what you are used to with a webbrowser, but stored server side. The benefits of storing this data server side include the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Cookie Data =&lt;br /&gt;
&lt;br /&gt;
User cookie data is essentially what you are used to with a webbrowser, but stored server side. The benefits of storing this data server side include the ability to have them persist across different computers. This means when a user logs in from home and work, the experience will be the same.&lt;br /&gt;
&lt;br /&gt;
The big difference between a user cookie and a browser cookie, is that a user cookie requires an authenticated session.... meaning no anonymous preferences are supported. Note: you are not forced to choose one or the other, so you can mix and match each solution to fit your requirements.&lt;br /&gt;
&lt;br /&gt;
== Set User Cookie ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for setting a user cookie.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
An authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=usercookie&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;verb=set&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: the name of the user cookie.&lt;br /&gt;
:: this has a maximum of 48 characters.&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: the value of the user cookie.&lt;br /&gt;
:: this has a maximum of 1000 characters.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete User Cookie ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for deleting a user cookie. The response will still succeed, if the cookie doesn't exist.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for setting a user cookie.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=usercookie&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;verb=del&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: the name of the user cookie.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Users</id>
		<title>Site:API:Users</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Users"/>
				<updated>2012-08-21T04:57:19Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Optional Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Users =&lt;br /&gt;
&lt;br /&gt;
== Add User ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for creating a user.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Administrator only.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=user&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;verb=adduser&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username of the user&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_pto_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_ppm_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_gift_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_bandwidth_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;activity_summary_duration_secs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: the id of the user&lt;br /&gt;
&lt;br /&gt;
== Edit User ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a user object.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=user&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;verb=edituser&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt;: the username of the user being updated.&lt;br /&gt;
:: this parameter is only available if the authenticated user is an Administrator.&lt;br /&gt;
* &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;newsletter&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;external_id&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fax&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dob&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dob_day&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dob_month&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dob_year&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;display_name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;display_status&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sex&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;relationship&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;interests&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;activities&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;music&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tv&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;books&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;hometown&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;change_username&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;allow_login&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price_level&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_fname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_lname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_company&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_address2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_city&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_state&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_country&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_email&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_phone&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_fax&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_fname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_lname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_company&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_address2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_city&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_state&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_country&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_email&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_phone&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;shipping_fax&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_address2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_city&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_state&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_country&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_account&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_routing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_swift&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_phone&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bank_iban&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;review&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_ppm_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_pto_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_gift_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_bandwidth_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;activity_summary_duration_secs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;banner,banner1,banner2,banner3,banner4,banner5,banner6,banner7,banner8,banner9,banner10 (multipart)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;cst_*&amp;lt;/code&amp;gt;: custom fields related to this user&lt;br /&gt;
:: replace the * with the appropriate custom field name&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;pending&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;approved&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Content</id>
		<title>Site:API:Content</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Content"/>
				<updated>2012-08-21T03:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Required Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Content =&lt;br /&gt;
&lt;br /&gt;
== Add Content ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for creating a content item.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=addcontent&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: blog,news,album,inventory,object,product,photoset,project,pledge,playlist,event&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;: the content item title; no more than 1000 characters&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: the content item description; no more than 65k characters&lt;br /&gt;
* &amp;lt;code&amp;gt;release_date&amp;lt;/code&amp;gt;: the release date of this content item&lt;br /&gt;
* &amp;lt;code&amp;gt;credits_per_minute&amp;lt;/code&amp;gt;: the current amount of credits to stream this item on a per minute basis; only applies to videos and songs.&lt;br /&gt;
* &amp;lt;code&amp;gt;credits_to_own&amp;lt;/code&amp;gt;: the current amount of credits to purchase this item.&lt;br /&gt;
* &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt;: the cash value of this item.&lt;br /&gt;
:: only available for types that are not a product or project.&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory&amp;lt;/code&amp;gt;: only available for types that are event.&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;: will be prefixed by the site's user prefix label.&lt;br /&gt;
* &amp;lt;code&amp;gt;addcategory&amp;lt;/code&amp;gt;: an array of category ids&lt;br /&gt;
* &amp;lt;code&amp;gt;addtag&amp;lt;/code&amp;gt;: an array of tags&lt;br /&gt;
* &amp;lt;code&amp;gt;featured_on_content_id&amp;lt;/code&amp;gt;: an advanced feature for featuring products during a live broadcast.&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory:stock:quantity&amp;lt;/code&amp;gt;: only available for types that are inventory; initializes stock to this value.&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory:stock:external_id&amp;lt;/code&amp;gt;: only available for types that are inventory; an optional external_id for this stock.&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory:stock:external2_id&amp;lt;/code&amp;gt;: only available for types that are inventory; an optional external_id for this stock.&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory:stock:note&amp;lt;/code&amp;gt;: only available for types that are inventory; an optional note for this stock.&lt;br /&gt;
* &amp;lt;code&amp;gt;cst_*&amp;lt;/code&amp;gt;: custom fields related to content&lt;br /&gt;
:: replace the * with the appropriate custom field name&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;contentId&amp;lt;/code&amp;gt;: the id of the newly created content item&lt;br /&gt;
** &amp;lt;code&amp;gt;canonicalId&amp;lt;/code&amp;gt;: the canonical id of the newly created content item.&lt;br /&gt;
&lt;br /&gt;
== Edit Content ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a content item.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Moderators and Comment authors.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=editcontent&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;contentId&amp;lt;/code&amp;gt;: the id of the content item&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;access&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;release_date&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;event_date&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;live_host&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;live_mode&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;preview_offset&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;preview_duration&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;external_id&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;allow_oversell&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price3&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price4&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;price_formula&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;credits_to_own&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;credits_per_minute&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_ppm_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_pto_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_gift_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;commission_bandwidth_percentage&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;review&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gift_credits&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;chat_muted&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;img:selected&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;img:title&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;img:position&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;photo_hint&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;add:relationship&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;del:relationship&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;playlist:media_id&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;image (multipart)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;banner,banner1,banner2,banner3,banner4,banner5,banner6,banner7,banner8,banner9,banner10 (multipart)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;banner,banner1,banner2,banner3,banner4,banner5,banner6,banner7,banner8,banner9,banner10&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;banner:photo,banner1:photo,banner2:photo,banner3:photo,banner4:photo,banner5:photo,banner6:photo,banner7:photo,banner8:photo,banner9:photo,banner10:photo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;banner:screenshot,banner1:screenshot,banner2:screenshot,banner3:screenshot,banner4:screenshot,banner5:screenshot,banner6:screenshot,banner7:screenshot,banner8:screenshot,banner9:screenshot,banner10:screenshot&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;inventory:stock:quantity&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;featured_on_content_id&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tags&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;addtag&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;deletetag&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;categories&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;addcategory&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;deletecategory&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label_hint&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;cst_*&amp;lt;/code&amp;gt;: custom fields related to content&lt;br /&gt;
:: replace the * with the appropriate custom field name.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;pending&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;approved&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Authentication</id>
		<title>Site:API:Authentication</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Authentication"/>
				<updated>2012-07-03T00:42:43Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Required Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Authentication =&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for logging in a user.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=login&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username of the user&lt;br /&gt;
* &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;: the password of the user&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signup ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for signing up a user.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=signup&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username of the user; this must adhere to the site restrictions for username requirements&lt;br /&gt;
* &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;: the password of the user; this must adhere to the site restrictions for password requirements&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;: the email address of the user; this must be a valid email address and not already claimed by another user&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;password2&amp;lt;/code&amp;gt;: this can be used to verify the user didn't make a typo mistake with their password choice&lt;br /&gt;
* &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt;: the primary phone number for this user&lt;br /&gt;
* &amp;lt;code&amp;gt;fax&amp;lt;/code&amp;gt;: the primary fax number for this user&lt;br /&gt;
* &amp;lt;code&amp;gt;dob&amp;lt;/code&amp;gt;: the user's date of birth; this is&lt;br /&gt;
* &amp;lt;code&amp;gt;sex&amp;lt;/code&amp;gt;: the sex of the user&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: the bio of the user&lt;br /&gt;
* &amp;lt;code&amp;gt;display_name&amp;lt;/code&amp;gt;: the display name of the user; this is a non-unique field and is used for display only&lt;br /&gt;
* &amp;lt;code&amp;gt;display_status&amp;lt;/code&amp;gt;: the display status of the user; this is common for social websites&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_first_name&amp;lt;/code&amp;gt;: the first name of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_last_name&amp;lt;/code&amp;gt;: the last name of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_company&amp;lt;/code&amp;gt;: the company name of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_address&amp;lt;/code&amp;gt;: the address of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_address2&amp;lt;/code&amp;gt;: an optional 2nd line for the address of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_city&amp;lt;/code&amp;gt;: the city of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_state&amp;lt;/code&amp;gt;: the state of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_zip&amp;lt;/code&amp;gt;: the zip code of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_country&amp;lt;/code&amp;gt;: the country of the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_phone&amp;lt;/code&amp;gt;: an optional phone number related to the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_fax&amp;lt;/code&amp;gt;: an optional fax number related to the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;billing_email&amp;lt;/code&amp;gt;: an optional email related to the billing contact&lt;br /&gt;
* &amp;lt;code&amp;gt;attr:user:$name&amp;lt;/code&amp;gt;: $name should be replaced by the name of any custom fields that have been created for all user objects; make sure to set the permission of &amp;quot;editable&amp;quot; on each custom field you want the user to be able to specify themselves&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logout ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for logging out a user.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=logout&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forgot Password ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for sending a forgot password email to a successful match of a username or email address.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;action=forgotpassword&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username of the user; an email address can also be passed to this same field as a convenience&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;status=ok&amp;lt;/code&amp;gt;: this response is returned regardless if the param:username field actually matches a user's username or email address; the reason for this is so that someone can't run a  brute force attack and discover all the email addresses that belong to your users&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:SEOFriendlyURLS</id>
		<title>Site:Frontend:SEOFriendlyURLS</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:SEOFriendlyURLS"/>
				<updated>2012-07-01T23:33:10Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The format of your URLs actually matter. Depending on how you structure your URLs, your site may or may not be SEO friendly. SEO friendly URLs are important because it allows your website to be properly indexed by various search engines.&lt;br /&gt;
&lt;br /&gt;
A simple way to be in compliance with SEO friendliness is to do your best to never use URL parameters. Search engine spiders are expecting a directory type format for your URL.&lt;br /&gt;
&lt;br /&gt;
=== Not SEO Friendly ===&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/?page=content&amp;amp;contentId=This.is.my.new.bike&lt;br /&gt;
&lt;br /&gt;
=== SEO Friendly ===&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/content/This.is.my.new.bike&lt;br /&gt;
&lt;br /&gt;
== URL Patterns ==&lt;br /&gt;
&lt;br /&gt;
Each site is able to specify various URL patterns to customize how it should handle its URL structure. These patterns can be customized by clicking on the &amp;quot;URL PATTERNS&amp;quot; link under each site.&lt;br /&gt;
&lt;br /&gt;
Each URL Pattern consists of the following:&lt;br /&gt;
&lt;br /&gt;
; name&lt;br /&gt;
: this is a simple name to identify the pattern.&lt;br /&gt;
; regex pattern&lt;br /&gt;
: this is the actual regular expression used to parse the pattern.&lt;br /&gt;
; variable matches&lt;br /&gt;
: this is a list of variables that should be matched to the corresponding regular expression.&lt;br /&gt;
; defaults&lt;br /&gt;
: this is a list of variables that should be implied, if this pattern successfully matches the active URL.&lt;br /&gt;
; final&lt;br /&gt;
: whether or not to continue onto the next pattern of this pattern successfully matches the active URL.&lt;br /&gt;
; layout&lt;br /&gt;
: this allows the patterns to be organized based on priority. Sometimes it may matter which patterns get matched first.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
To match the SEO Friendly URL listed above, you would create the following URL pattern:&lt;br /&gt;
&lt;br /&gt;
; name&lt;br /&gt;
: content 1up&lt;br /&gt;
; regex pattern&lt;br /&gt;
: /([^\/]+)\/([^\/]+)\/?$/&lt;br /&gt;
; variable matches&lt;br /&gt;
: page, contentId&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:Controllers</id>
		<title>Site:Frontend:Controllers</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:Controllers"/>
				<updated>2012-06-20T17:31:42Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Using registerProfileFunctions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
A Controller is a javascript class used to organize all javascript functionality within a particular page or module. A controller can hold other controllers, so you can imagine a site controller managing all of the page controllers.&lt;br /&gt;
&lt;br /&gt;
This class is broken down by functionality and should only be instantiated when necessary.&lt;br /&gt;
&lt;br /&gt;
= Basic Site Controller =&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    function siteController(authUser, publicUser, publicContentId) {&lt;br /&gt;
      this.authUser   = authUser;&lt;br /&gt;
      this.publicUser = publicUser;&lt;br /&gt;
      this.contentId  = publicContentId;&lt;br /&gt;
      this.urls = [];&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    siteController.prototype.registerUrls = function(urls) {&lt;br /&gt;
      this.urls = urls;&lt;br /&gt;
    };&lt;br /&gt;
  &lt;br /&gt;
    siteController.prototype.registerProfileFunctions = function() {&lt;br /&gt;
      var myThis = this;&lt;br /&gt;
  &lt;br /&gt;
      $('#getUserState').click(function(e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        $.ajax({&lt;br /&gt;
          type: 'get',&lt;br /&gt;
          url:  myThis.urls['userStateUrl'],&lt;br /&gt;
          data: {&lt;br /&gt;
            'user': myThis.publicUser&lt;br /&gt;
          },&lt;br /&gt;
          success: function(data) {&lt;br /&gt;
            alert('This user is '+ data.state);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    };&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instantiating ==&lt;br /&gt;
&lt;br /&gt;
In the example controller, siteController is instantiated with the authenticated username, the public username, and the public contentId which are stored so they can be accessed throughout the class.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    var site = new siteController('Justin', 'Roy', &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;);&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
      site.registerUrls({&lt;br /&gt;
        'userStateUrl' : 'http://example.com/userstate'&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using registerProfileFunctions ==&lt;br /&gt;
&lt;br /&gt;
In the example above, we never called the registerProfileFunctions function, meaning the getUserState listener is never active.&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  site.registerProfileFunctions();&lt;br /&gt;
&lt;br /&gt;
Once its active and getUserState is clicked, the script references myThis.urls['userStateUrl'] which was set earlier in the registerUrls function.&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:BestPractices</id>
		<title>Site:Frontend:BestPractices</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:BestPractices"/>
				<updated>2012-06-18T17:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixJustin: Created page with &amp;quot;= Readability and Whitespace =  Keeping one line of clearsilver per line ends up being hard to read, as well as added markup since each line of clearsilver turns into a blank lin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Readability and Whitespace =&lt;br /&gt;
&lt;br /&gt;
Keeping one line of clearsilver per line ends up being hard to read, as well as added markup since each line of clearsilver turns into a blank line in the finalized document. To keep things neat we wrap the beginning clearsilver line with the line above it.&lt;br /&gt;
&lt;br /&gt;
This&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;h1&amp;gt;News&amp;lt;/h1&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;?cs if:News ?&amp;gt;&lt;br /&gt;
    &amp;lt;?cs call:showNews() ?&amp;gt;&lt;br /&gt;
  &amp;lt;?cs /if ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would turn into&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;h1&amp;gt;News&amp;lt;/h1&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;?cs&lt;br /&gt;
  if:News ?&amp;gt;&amp;lt;?cs&lt;br /&gt;
    call:showNews() ?&amp;gt;&amp;lt;?cs&lt;br /&gt;
  /if ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This keeps the white space away and you can easily scan the beginning of each line to clearly see what is happening in the code.&lt;br /&gt;
&lt;br /&gt;
= Site and Module Controllers =&lt;br /&gt;
&lt;br /&gt;
Each site should have a siteController.js file containing all the javascript required to run the site. Each stand-alone module will also have its own controller managing functions specific to that module.&lt;br /&gt;
&lt;br /&gt;
The controller is made up of classes that control different parts of the site/module. This allows us to only enable functions and listeners that are required on the page, instead of having them always active. This also ensures that when concatenating the javascript file that function and listeners wont overlap.&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:BestPrices</id>
		<title>Site:Frontend:BestPrices</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:BestPrices"/>
				<updated>2012-06-18T17:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixJustin: /* Readability and Whitespace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Readability and Whitespace =&lt;br /&gt;
&lt;br /&gt;
Keeping one line of clearsilver per line ends up being hard to read, as well as added markup since each line of clearsilver turns into a blank line in the finalized document. To keep things neat we wrap the beginning clearsilver line with the line above it.&lt;br /&gt;
&lt;br /&gt;
This&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;h1&amp;gt;News&amp;lt;/h1&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;?cs if:News ?&amp;gt;&lt;br /&gt;
    &amp;lt;?cs call:showNews() ?&amp;gt;&lt;br /&gt;
  &amp;lt;?cs /if ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would turn into&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;h1&amp;gt;News&amp;lt;/h1&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;?cs&lt;br /&gt;
  if:News ?&amp;gt;&amp;lt;?cs&lt;br /&gt;
    call:showNews() ?&amp;gt;&amp;lt;?cs&lt;br /&gt;
  /if ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This keeps the white space away and you can easily scan the beginning of each line to clearly see what is happening in the code.&lt;br /&gt;
&lt;br /&gt;
= Site and Module Controllers =&lt;br /&gt;
&lt;br /&gt;
Each site should have a siteController.js file containing all the javascript required to run the site. Each stand-alone module will also have its own controller managing functions specific to that module.&lt;br /&gt;
&lt;br /&gt;
The controller is made up of classes that control different parts of the site/module. This allows us to only enable functions and listeners that are required on the page, instead of having them always active. This also ensures that when concatenating the javascript file that function and listeners wont overlap.&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:Forms</id>
		<title>Site:Frontend:Forms</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:Forms"/>
				<updated>2012-06-15T19:38:48Z</updated>
		
		<summary type="html">&lt;p&gt;66.214.240.97: /* Retry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
= Parameters =&lt;br /&gt;
&lt;br /&gt;
== Mode ==&lt;br /&gt;
&lt;br /&gt;
This optional parameter sets the response type.&lt;br /&gt;
&lt;br /&gt;
Avaliable modes: xml, json&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;mode&amp;quot; value=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Continue ==&lt;br /&gt;
&lt;br /&gt;
This optional parameter is the page you will be redirected to after a successful form submit.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;continue&amp;quot; value=&amp;quot;http://example.com/?page=some-successful-page&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retry ==&lt;br /&gt;
&lt;br /&gt;
This optional parameter is the page you will be redirected to after a unsuccessful form submit. This page will also contain the MS.error HDF value with the error/reason why the form wasn't successful.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;retry&amp;quot; value=&amp;quot;http://example.com/?page=some-failed-page&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ajax Forms =&lt;br /&gt;
&lt;br /&gt;
The jQuery javascript library offers a simple function to handle your forms using Ajax. This allows you to send form data and get the response from the server without having to reload the page.&lt;br /&gt;
&lt;br /&gt;
== Basic Script ==&lt;br /&gt;
&lt;br /&gt;
The following snippet will listen for a form with the ID of &amp;quot;someFormId&amp;quot; to be submitted.&lt;br /&gt;
&lt;br /&gt;
  $('#someFormId').submit(function(e) {&lt;br /&gt;
    e.preventDefault();&lt;br /&gt;
    var form = $(this):&lt;br /&gt;
            &lt;br /&gt;
    if(form.data('disabled') == 'true') return;&lt;br /&gt;
    form.data('disabled', 'true');&lt;br /&gt;
         &lt;br /&gt;
    $.ajax({&lt;br /&gt;
      type: form.attr('method'),&lt;br /&gt;
      url:  form.attr('action'),&lt;br /&gt;
      data: form.serialize(),&lt;br /&gt;
      success: function(data) {&lt;br /&gt;
        if('ok' == $('status', data).text()) {&lt;br /&gt;
          // Form has returned successfully&lt;br /&gt;
        } else {&lt;br /&gt;
          // Form has returned with an error&lt;br /&gt;
        }&lt;br /&gt;
        form.removeData('disabled');&lt;br /&gt;
      },&lt;br /&gt;
      error: function() {&lt;br /&gt;
        // Could not get data back from the post&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
This script should be placed in the appropriate controller and instantiated only when necessary.&lt;br /&gt;
&lt;br /&gt;
= Custom Fields =&lt;br /&gt;
&lt;br /&gt;
Custom fields can be updated just like other form fields but require different naming. The custom field is prefixed with cst_ followed by the custom field name.&lt;br /&gt;
&lt;br /&gt;
Ex. If a custom field on a user object is &amp;quot;specialNote&amp;quot;, the input name would be &amp;quot;cst_specialNote&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;cst_specialNote&amp;quot; value=&amp;quot;&amp;lt;?cs var:MS.site.user.custom.specialNote.value ?&amp;gt;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:Modules</id>
		<title>Site:Frontend:Modules</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:Modules"/>
				<updated>2012-06-15T18:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixJustin: /* Listing Content */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Modules contain stand-alone code, files, pages, and page includes required to perform the tasks of the module.&lt;br /&gt;
&lt;br /&gt;
= Module Integration =&lt;br /&gt;
&lt;br /&gt;
== Adding a Module to a Page ==&lt;br /&gt;
After a module is created or imported, it will be listed under Module Integration while editing a site page.&lt;br /&gt;
&lt;br /&gt;
Selecting the module will populate MS.module.data with the contents of the module. Calling MS.module.data on the page will inject the contents onto the page.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Module Test&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;?cs var:MS.module.data ?&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accessing Module Pages ==&lt;br /&gt;
&lt;br /&gt;
Since modules are injected into a parent page, pages within a module need to be called with the '''mpage''' URL parameter.&lt;br /&gt;
&lt;br /&gt;
For example, if your parent page is &amp;quot;auth&amp;quot; and your module page is &amp;quot;login&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
  http://example.com/?page=auth&amp;amp;mpage=login&lt;br /&gt;
&lt;br /&gt;
== Module Only ==&lt;br /&gt;
&lt;br /&gt;
Some modules contain pages that serve up JSON or XML content and should ignore the included header and footer. This can be done by adding the URL parameter &amp;quot;output=moduleonly&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
   http://example.com/?page=auth&amp;amp;mpage=users.json&amp;amp;output=moduleonly&lt;br /&gt;
&lt;br /&gt;
= Creating a Module =&lt;br /&gt;
&lt;br /&gt;
== Common ==&lt;br /&gt;
&lt;br /&gt;
=== Default Page ===&lt;br /&gt;
&lt;br /&gt;
This is the default page that loads when no mpage is set.&lt;br /&gt;
&lt;br /&gt;
=== Autoload ===&lt;br /&gt;
&lt;br /&gt;
Autoloaded modules will be included on every page of the site. This is helpful for caching and including JS and CSS files throughout the site.&lt;br /&gt;
&lt;br /&gt;
=== Key / Value Pairs ===&lt;br /&gt;
&lt;br /&gt;
Key / Value pairs are module-wide variables that can easily be changed. These are often used as settings for the module.&lt;br /&gt;
&lt;br /&gt;
For example, if we have a setting called &amp;quot;show_stats&amp;quot; and want to see if its set to &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?cs if:'&amp;lt;!show_stats!&amp;gt;' == 'yes' ?&amp;gt;&lt;br /&gt;
    Showing Stats&lt;br /&gt;
  &amp;lt;?cs /if ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
&lt;br /&gt;
Initialization is the first part of the module that is loaded. If there are any required modules to be loaded before this module you will need to include them here.&lt;br /&gt;
&lt;br /&gt;
If you're using the stack module, all CSS/JS stack includes would be called here&lt;br /&gt;
&lt;br /&gt;
== Javascript Controller ==&lt;br /&gt;
&lt;br /&gt;
Each module that requires javascript should have its own controller. The controller is made up of classes that control different parts of the module. This allows us to only enable functions and listeners that are required on the page, instead of having them always active. This also ensures that when concatenating the javascript file that function and listeners wont overlap.&lt;br /&gt;
&lt;br /&gt;
== Listing Content ==&lt;br /&gt;
&lt;br /&gt;
Listing content relies on the context of module page, not the parent page. For example if the parent page has a context of &amp;quot;My Videos&amp;quot; but the module page doesn't have a context nothing will be listed on the page.&lt;br /&gt;
&lt;br /&gt;
The HDF keys/values will still remain the same, so they can be accessed the same way as a regular page.&lt;br /&gt;
&lt;br /&gt;
Example: Listing the titles of the context Content: All&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?cs each:item = MS.content.items ?&amp;gt;&lt;br /&gt;
    &amp;lt;?cs var:item.title ?&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;?cs /each ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend:Macros</id>
		<title>Site:Frontend:Macros</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend:Macros"/>
				<updated>2012-06-15T18:27:37Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Macros are the Clearsilver equivalent to functions.... almost. They only produce output to the browser rather than supplying a return value. Because of this the term macro is a more suitable name.&lt;br /&gt;
Macros let you define a block of code that can be re-used throughout the site.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Macro ===&lt;br /&gt;
&lt;br /&gt;
Macros are made by starting and ending a new clearsilver block with def.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?cs def:getUsername() ?&amp;gt;&lt;br /&gt;
   &amp;lt;?cs var:MS.site.auth.username ?&amp;gt;&lt;br /&gt;
 &amp;lt;?cs /def ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With macros there is no returning specific data, anything in the macro will be placed where its called.&lt;br /&gt;
&lt;br /&gt;
=== Macro Parameters ===&lt;br /&gt;
&lt;br /&gt;
You can pass parameters into the macro by setting them after the macro name&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?cs def:getUsername(user) ?&amp;gt;&lt;br /&gt;
   &amp;lt;?cs var:user.username ?&amp;gt;&lt;br /&gt;
 &amp;lt;?cs /def ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This macro requires the user parameter to generate the username.&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:Frontend</id>
		<title>Site:Frontend</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:Frontend"/>
				<updated>2012-06-15T17:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixJustin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Below you will find links to each particular component of the Frontend Site API. Detailed API information is available by clicking on each link.&lt;br /&gt;
&lt;br /&gt;
=== Main Sections ===&lt;br /&gt;
&lt;br /&gt;
; [[Site:Frontend:BestPractices|Best Practices]]&lt;br /&gt;
; [[Site:Frontend:Controllers|Controllers]]&lt;br /&gt;
; [[Site:Frontend:Forms|Forms]]&lt;br /&gt;
; [[Site:Frontend:Macros|Macros]]&lt;br /&gt;
; [[Site:Frontend:Modules|Modules]]&lt;/div&gt;</summary>
		<author><name>MetrixJustin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Tutorial:JavaScript</id>
		<title>Tutorial:JavaScript</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Tutorial:JavaScript"/>
				<updated>2012-06-06T20:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;66.214.240.97: /* jQuery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Logging =&lt;br /&gt;
&lt;br /&gt;
Logging is your friend. It isn't always supported, so you need to write your own wrapper around it. All logging will go to the console window which is located in the developer tools for most popular web browsers.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 function log(str) {&lt;br /&gt;
   if (window[&amp;quot;console&amp;quot;] &amp;amp;&amp;amp; window[&amp;quot;console&amp;quot;][&amp;quot;log&amp;quot;]) window[&amp;quot;console&amp;quot;][&amp;quot;log&amp;quot;](str);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
&lt;br /&gt;
Scope is important because variables go in and out of existence depending on where they are referenced from. This gets extremely important to understand when using variables of the same name.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 var value = 10;&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;A: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 if (true) {&lt;br /&gt;
   var value = 11;&lt;br /&gt;
 &lt;br /&gt;
   log(&amp;quot;B: &amp;quot; + value);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;C: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 A: 10&lt;br /&gt;
 B: 11&lt;br /&gt;
 C: 11&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 var value = 10;&lt;br /&gt;
 &lt;br /&gt;
 function test() {&lt;br /&gt;
   value = 11;&lt;br /&gt;
 &lt;br /&gt;
   log(&amp;quot;test: &amp;quot; + value);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;A: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 test();&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;B: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 A: 10&lt;br /&gt;
 test: 11&lt;br /&gt;
 B: 11&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 var value = 10;&lt;br /&gt;
 &lt;br /&gt;
 function test() {&lt;br /&gt;
   var value = 11;&lt;br /&gt;
 &lt;br /&gt;
   log(&amp;quot;test: &amp;quot; + value);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;A: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 test();&lt;br /&gt;
 &lt;br /&gt;
 log(&amp;quot;B: &amp;quot; + value);&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 A: 10&lt;br /&gt;
 test: 11&lt;br /&gt;
 B: 10&lt;br /&gt;
&lt;br /&gt;
= Anonymous Functions =&lt;br /&gt;
&lt;br /&gt;
Anonymous functions are useful because you can limit their execution to a variable... which means you can hide their execution due to scope! A good example of this is the Google Analytics javascript code. Google just wants their code to execute. They don't want anything changed.&lt;br /&gt;
&lt;br /&gt;
== Example: Static Function == &lt;br /&gt;
&lt;br /&gt;
Notice how once test() is declared, it can always be called.&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 function test() {&lt;br /&gt;
   log(&amp;quot;test&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 test();&lt;br /&gt;
 &lt;br /&gt;
 if (true) {&lt;br /&gt;
   test();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function anotherTest() {&lt;br /&gt;
   test();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 anotherTest();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 test&lt;br /&gt;
 test&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
== Example: Anonymous Function == &lt;br /&gt;
&lt;br /&gt;
In this example the function only exists within the actual execution of placeholder().&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 function placeholder() {&lt;br /&gt;
   var testFunc = function() {&lt;br /&gt;
     log(&amp;quot;test&amp;quot;);&lt;br /&gt;
   };&lt;br /&gt;
 &lt;br /&gt;
   testFunc();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 placeholder();&lt;br /&gt;
 testFunc();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 test&lt;br /&gt;
 - Uncaught ReferenceError: testFunc is not defined&lt;br /&gt;
&lt;br /&gt;
== Example: Anonymous Function within Anonymous Function == &lt;br /&gt;
&lt;br /&gt;
The above example was interesting, but seemed a little heavy because we still had to create an actual static function first. This example shows how to create an anonymous function which declares even more stuff inside it and immediately executes so nothing can get intercepted.&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 (function() {&lt;br /&gt;
   var testFunc = function() {&lt;br /&gt;
     log(&amp;quot;test&amp;quot;);&lt;br /&gt;
   };&lt;br /&gt;
   testFunc();&lt;br /&gt;
 })();&lt;br /&gt;
 &lt;br /&gt;
 testFunc();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
 test&lt;br /&gt;
 - Uncaught ReferenceError: testFunc is not defined&lt;br /&gt;
&lt;br /&gt;
= jQuery =&lt;br /&gt;
&lt;br /&gt;
jQuery is a library that makes working with javascript much easier.&lt;br /&gt;
&lt;br /&gt;
== Less Error-prone == &lt;br /&gt;
&lt;br /&gt;
=== Javascript Code ===&lt;br /&gt;
&lt;br /&gt;
Here is an example of hiding an element using JavaScript.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 var obj = document.getElementById(&amp;quot;testId&amp;quot;);&lt;br /&gt;
 obj.display.style = &amp;quot;none&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice any problem with that? What happens if the element testId doesn't exist? The code fails, which means the entire webpage stops functioning. jQuery is much more robust where you don't have to check if something exists... meaning simple problems like this don't sneak up when you least expect it (like friday night at midnight when your client is checking their website and no one is around to fix an easy error).&lt;br /&gt;
&lt;br /&gt;
=== jQuery Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;#testId&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== document.ready ==&lt;br /&gt;
&lt;br /&gt;
jQuery provides a great function document.ready which lets you execute code when the page is ready to be accessed by JavaScript. document.ready is different than onload because onload gets triggered after all static resources get loaded. In the example below, document.ready will not be used just to keep the examples shorter. It is a good rule of thumb, to always wrap any immediately executing code in a document.ready block.&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(document).ready(function() {&lt;br /&gt;
   // add your code here&lt;br /&gt;
 });&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
== Selectors ==&lt;br /&gt;
&lt;br /&gt;
jQuery is awesome at selecting HTML elements. The equivalent is very complex and error-prone to do in raw JavaScript. After selection, an action is normally performed, such as: hide(), show(), fadeIn(), fadeOut(), css(), addClass(), removeClass(), etc.&lt;br /&gt;
&lt;br /&gt;
=== Hide all Divs on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;div&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all elements of the class &amp;quot;test&amp;quot; on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;.test&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all elements of the class &amp;quot;test&amp;quot; on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;.test&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all DIV elements of the class &amp;quot;test&amp;quot; on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;div.test&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide an element of ID test on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;#id&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide an DIV element of ID test on the webpage ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;div#id&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all inputs that have a type property ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input[type]).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all inputs that have a name property that is set to myinputname ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input[name='myinputname']).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide all inputs within a form of id=myform ===&lt;br /&gt;
&lt;br /&gt;
You can refine your selection by referencing a context of another element.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input&amp;quot;, &amp;quot;#myform&amp;quot;).hide();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Chaining ==&lt;br /&gt;
&lt;br /&gt;
jQuery allows chaining of functions, so your code size can be extremely small.&lt;br /&gt;
&lt;br /&gt;
This example will unhide an input element, give it a default value, add a class on it, and then focus the input.&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;#myinput&amp;quot;).show().val(&amp;quot;This is my default value&amp;quot;).addClass(&amp;quot;myClass&amp;quot;).focus();&lt;br /&gt;
&lt;br /&gt;
== Advanced Examples == &lt;br /&gt;
&lt;br /&gt;
=== Specify Input Text that disappears once clicked ===&lt;br /&gt;
&lt;br /&gt;
==== HTML/CSS ====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;style&amp;gt;&lt;br /&gt;
 .preSelected {&lt;br /&gt;
   color: #AAA;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/style&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;input type=text name=myname value=&amp;quot;Please enter your name&amp;quot; class=&amp;quot;preSelected&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== jQuery ====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 $(document).ready(function() {&lt;br /&gt;
   $(&amp;quot;.preSelected&amp;quot;).click(function(evt) {&lt;br /&gt;
     $(this).unbind(&amp;quot;click&amp;quot;).removeClass(&amp;quot;preSelected&amp;quot;).val(&amp;quot;&amp;quot;).focus();&lt;br /&gt;
   });&lt;br /&gt;
 });&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:PCR</id>
		<title>Site:API:PCR</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:PCR"/>
				<updated>2012-05-23T22:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Property Change Requests =&lt;br /&gt;
&lt;br /&gt;
Property Change Requests are a mechanism that allows you to approve updates to metadata that your users do on their own profile or their content. PCRs get created as a user updates metadata on their own profile or their content. PCRs can be enabled per property on a per site level.&lt;br /&gt;
&lt;br /&gt;
== Edit Property Change Request ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a property change request.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Adminstrators only.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=pcr&lt;br /&gt;
;verb=edit&lt;br /&gt;
;pcrId&lt;br /&gt;
:The id of the pcr.&lt;br /&gt;
;state&lt;br /&gt;
:pending, approved, rejected, delete&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Wysiwyg</id>
		<title>Site:API:Wysiwyg</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Wysiwyg"/>
				<updated>2012-05-01T17:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Successful Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wysiwyg =&lt;br /&gt;
&lt;br /&gt;
== HTML code to inject a Wysiwyg Editor ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for generating the appropriate HTML, CSS, and JS to render a Wysiwyg Editor.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=wysiwyg&lt;br /&gt;
;field&lt;br /&gt;
:the name of the HTML input field that this editor will receive its value upon a form submit.&lt;br /&gt;
;width&lt;br /&gt;
:the width of the editor in pixels.&lt;br /&gt;
;height&lt;br /&gt;
:the height of the editor in pixels.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
;data&lt;br /&gt;
:the default data to edit in the editor&lt;br /&gt;
;default_image_size&lt;br /&gt;
:the initial cropping size for any images uploaded through the editor; the default size is 600; cropping is lossless, meaning all recrops are from the original file.&lt;br /&gt;
;buttons1&lt;br /&gt;
:the list of buttons for the 1st row of the editor&lt;br /&gt;
:the default list is: &amp;quot;bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontselect,fontsizeselect,|,forecolor,backcolor,link,unlink,image,emotions,code&amp;quot;&lt;br /&gt;
;buttons2&lt;br /&gt;
:the list of buttons for the 2nd row of the editor&lt;br /&gt;
;buttons3&lt;br /&gt;
:the list of buttons for the 3rd row of the editor&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
; status=ok&lt;br /&gt;
; item&lt;br /&gt;
::; html&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Forums</id>
		<title>Site:API:Forums</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Forums"/>
				<updated>2012-04-30T23:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: Created page with &amp;quot;= Forums =  == Add Forum ==  This API call is responsible for adding a forum to a site.  === Authentication Restrictions ===  Administrators only.  === Required Parameters ===  ;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Forums =&lt;br /&gt;
&lt;br /&gt;
== Add Forum ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for adding a forum to a site.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Administrators only.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=addforum&lt;br /&gt;
;title&lt;br /&gt;
:the forum title; this field is used to calculate the canonical_id, if not provided.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
; description&lt;br /&gt;
: the forum description.&lt;br /&gt;
;layout&lt;br /&gt;
: the position of this forum relative to other forums.&lt;br /&gt;
;label&lt;br /&gt;
: allows grouping of forums based on label.&lt;br /&gt;
;canonical_id&lt;br /&gt;
: the nice looking identifier for human readable ids; filtering will be performed to ensure proper syntax.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
;item&lt;br /&gt;
&lt;br /&gt;
:;forum&lt;br /&gt;
&lt;br /&gt;
::;id&lt;br /&gt;
::: the id of the newly created forum.&lt;br /&gt;
&lt;br /&gt;
::;canonical_id&lt;br /&gt;
::: the canonical_id of the newly created forum.&lt;br /&gt;
&lt;br /&gt;
== Edit Forum ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a forum.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Administrators only.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=editforum&lt;br /&gt;
;forumId&lt;br /&gt;
:the forum id.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
;title&lt;br /&gt;
:the forum title; this field is used to calculate the canonical_id, if not provided.&lt;br /&gt;
; description&lt;br /&gt;
: the forum description.&lt;br /&gt;
;layout&lt;br /&gt;
: the position of this forum relative to other forums.&lt;br /&gt;
;label&lt;br /&gt;
: allows grouping of forums based on label.&lt;br /&gt;
;canonical_id&lt;br /&gt;
: the nice looking identifier for human readable ids; filtering will be performed to ensure proper syntax.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
&lt;br /&gt;
== Delete Forum ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for deleting a forum and all of its threads and replies.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Administrators only.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=delforum&lt;br /&gt;
;forumId&lt;br /&gt;
:the forum id.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
&lt;br /&gt;
== Add Thread ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for adding a thread to a forum.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=addthread&lt;br /&gt;
;forumId&lt;br /&gt;
:the forum id&lt;br /&gt;
;title&lt;br /&gt;
:the thread title; this field is used to calculate the canonical_id, if no canonical_id is supplied.&lt;br /&gt;
; description&lt;br /&gt;
: the thread description.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
;canonical_id&lt;br /&gt;
: the nice looking identifier for human readable ids; filtering will be performed to ensure proper syntax.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
;item&lt;br /&gt;
&lt;br /&gt;
:;thread&lt;br /&gt;
&lt;br /&gt;
::;id&lt;br /&gt;
::: the id of the newly created thread.&lt;br /&gt;
&lt;br /&gt;
::;canonical_id&lt;br /&gt;
::: the canonical_id of the newly created thread.&lt;br /&gt;
&lt;br /&gt;
== Add Reply ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for adding a reply to a forum post.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=addreply&lt;br /&gt;
;postId&lt;br /&gt;
:the post id; this can be either a thread id or a reply id.&lt;br /&gt;
; description&lt;br /&gt;
: the reply description.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
;quote&lt;br /&gt;
:text that you want to quote in your reply; this only applies if postId is a reply id; this is limited to 255 characters.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
;item&lt;br /&gt;
&lt;br /&gt;
:;reply&lt;br /&gt;
&lt;br /&gt;
::;id&lt;br /&gt;
::: the id of the newly created reply.&lt;br /&gt;
&lt;br /&gt;
== Edit Post ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a forum post.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Superuser or user with moderator or administrator access. Post user is only able to update title and description for threads and description for replies.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=editpost&lt;br /&gt;
;postId&lt;br /&gt;
:the post id; this can be either a thread id or a reply id.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
; title&lt;br /&gt;
: the post title; only applies if postId is a thread id;&lt;br /&gt;
; description&lt;br /&gt;
: the post description.&lt;br /&gt;
;canonical_id&lt;br /&gt;
:the canonical id of the forum post; only applies if postId is a thread id.&lt;br /&gt;
;forumId&lt;br /&gt;
:the id of the forum that this post belongs to; only applies if postId is a thread id.&lt;br /&gt;
;sticky=yes|no&lt;br /&gt;
:whether or not this post is sticky; only applies if postId is a thread id.&lt;br /&gt;
;quote&lt;br /&gt;
:text that you want to quote in your reply; only applies if postId is a reply id; this is limited to 255 characters.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
&lt;br /&gt;
== Delete Post ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for deleting a forum post.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Administrators or Moderators; Post user is able to delete as long as post is not a thread with a reply count greater than 0.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=forum&lt;br /&gt;
;verb=delpost&lt;br /&gt;
;postId&lt;br /&gt;
:the post id; this can be either a thread id or a reply id.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API:Comments</id>
		<title>Site:API:Comments</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API:Comments"/>
				<updated>2012-04-30T23:06:25Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Comments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Comments =&lt;br /&gt;
&lt;br /&gt;
== Add Comment ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for adding a comment to an object.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Any authenticated user.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=comment&lt;br /&gt;
;verb=addcomment&lt;br /&gt;
;objtype&lt;br /&gt;
:content, owner, user&lt;br /&gt;
;objid&lt;br /&gt;
;msg&lt;br /&gt;
:the comment message; no more than 2048 characters.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
;item&lt;br /&gt;
&lt;br /&gt;
:;comment&lt;br /&gt;
&lt;br /&gt;
::;id&lt;br /&gt;
::: the id of the newly created comment.&lt;br /&gt;
&lt;br /&gt;
== Edit Comment ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for editing a comment.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Moderators and Comment authors.&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=comment&lt;br /&gt;
;verb=editcomment&lt;br /&gt;
;commentId&lt;br /&gt;
:The id of the comment.&lt;br /&gt;
&lt;br /&gt;
=== Optional Parameters ===&lt;br /&gt;
&lt;br /&gt;
;msg&lt;br /&gt;
:the comment message; Comment authors have a 15 minute window to edit their comment; Moderators can always edit.&lt;br /&gt;
;approved=yes|no&lt;br /&gt;
:the comment approval state; Only Moderators have access to this field.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;br /&gt;
&lt;br /&gt;
== Delete Comment ==&lt;br /&gt;
&lt;br /&gt;
This API call is responsible for deleting a comment.&lt;br /&gt;
&lt;br /&gt;
=== Authentication Restrictions ===&lt;br /&gt;
&lt;br /&gt;
Moderators; Comment owners;&lt;br /&gt;
&lt;br /&gt;
=== Required Parameters ===&lt;br /&gt;
&lt;br /&gt;
;action=comment&lt;br /&gt;
;verb=delcomment&lt;br /&gt;
;commentId&lt;br /&gt;
:The id of the comment.&lt;br /&gt;
&lt;br /&gt;
=== Successful Response ===&lt;br /&gt;
&lt;br /&gt;
;status=ok&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	<entry>
		<id>http://dev.metrixstream.com/wiki/Site:API</id>
		<title>Site:API</title>
		<link rel="alternate" type="text/html" href="http://dev.metrixstream.com/wiki/Site:API"/>
				<updated>2012-04-11T00:21:59Z</updated>
		
		<summary type="html">&lt;p&gt;MetrixAdmin: /* Main Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Below you will find links to each particular component of the Site API. Detailed API information is available by clicking on each link.&lt;br /&gt;
&lt;br /&gt;
=== Main Sections ===&lt;br /&gt;
&lt;br /&gt;
; [[Site:API:Comments|Comments]]&lt;br /&gt;
; [[Site:API:Forums|Forums]]&lt;br /&gt;
; [[Site:API:PCR|Property Change Requests]]&lt;br /&gt;
; [[Site:API:Wysiwyg|Wysiwyg Editor]]&lt;/div&gt;</summary>
		<author><name>MetrixAdmin</name></author>	</entry>

	</feed>