Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
What is Syndication?
Three episodes of The Simpsons every single day
Content produced by one site is shown on another
What is Syndication?
Three episodes of The Simpsons every single day
Content produced by one site is shown on another
Consumer can use data as they desire
What is Syndication?
Three episodes of The Simpsons every single day
Content produced by one site is shown on another
Consumer can use data as they desire
Producer gets more exposure for their content
Built-In SolutionsCollaboration System RSS Feed
Calendar iCalendar Feed
Syndicated Content RSS Feed
Gallery RSS Feeds
Built-In SolutionsCollaboration System RSS Feed
Calendar iCalendar Feed
Syndicated Content RSS Feed
Gallery RSS Feeds
Widget macro
The Widget Macro
Provides code to display an asset from your site on another site
^Widget( assetUrl [, width, height, templateId] );
The Widget Macro
Provides code to display an asset from your site on another site
^Widget( assetUrl [, width, height, templateId] );
If no templateId, uses www_ajaxInlineView
The Widget Macro
Provides code to display an asset from your site on another site
^Widget( assetUrl [, width, height, templateId] );
If no templateId, uses www_ajaxInlineView
Otherwise, uses www_widgetView
The Widget Macro
Not just for static content
Forms inside the Widget frame work
Collaboration System
The Widget Macro
Not just for static content
Forms inside the Widget frame work
Collaboration System
DataForm
The Widget Macro
Not just for static content
Forms inside the Widget frame work
Collaboration System
DataForm
Thingy
The Widget Macro
Not just for static content
Forms inside the Widget frame work
Collaboration System
DataForm
Thingy
Form will open in a new window
Built-In SolutionsCollaboration System RSS Feed
Calendar iCalendar Feed
Syndicated Content RSS Feed
Gallery RSS Feeds
Widget macro
Ajax Inline View
Ajax Inline View
Display just the asset content
No style
Not even a fully-formed HTML document
Useful with AJAX / YUI Connection
Ajax Inline View
Display just the asset content
No style
Not even a fully-formed HTML document
Useful with AJAX / YUI Connection
http://example.com/asset?func=ajaxInlineView
Ajax Inline View
Display just the asset content
No style
Not even a fully-formed HTML document
Useful with AJAX / YUI Connection
http://example.com/asset?func=ajaxInlineView
element.innerHTML = ajaxInlineViewContent
What is RSS?
Really Simple Syndication
The standard for syndication on the Web
An XML dialect
Just another type of markup
What is RSS?
Really Simple Syndication
The standard for syndication on the Web
An XML dialect
Just another type of markup
WebGUI is all about markup
RSS A Folder
Folder contains documents
Keep existing functionality
Add an RSS feed using Shortcuts and new templates
RSS A FolderCreate a Shortcut for the RSS Feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
XML Prologue
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
RSS declaration
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
Channel declaration
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
Each channel has a title, a link, and a description
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
Each channel has multiple items
What RSS Is... Really<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title>Example.com RSS Feed</title> <link>http://www.example.com</link> <description>RSS</description>
<item> <title>Grand Opening</title> <link>http://www.example.com/grand-opening</link> <description>A Welcome Message from Example.com</description> </item>
<item> <title>Grand Closing</title> <link>http://www.example.com/thanks-for-the-fish</link> </item>
</channel>
</rss>
Each item has a title, link, and description
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
XML Prologue
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
RSS Declaration
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Channel Declaration
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Folder Title
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Folder URL
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Company URL Macro
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Gateway Macro with Folder URL
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Folder Description
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
CDATA to Escape HTML
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><tmpl_var description escape="HTML"></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Another way to escape HTML
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
File Loop
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
File Title
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
File URL
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
File Description
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
Show the Image
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[<tmpl_var description>]]></description>
<tmpl_loop file.loop> <item> <title><tmpl_var title></title> <link>^u;^/(<tmpl_var url>);</link> <description><![CDATA[ <tmpl_if isImage><img src="^u;^/(<tmpl_var url>); /></tmpl_if> <tmpl_var synopsis> ]]></description> </item> </tmpl_loop>
</channel>
</rss>
File Description
RSS A FolderCreate a Shortcut for the RSS Feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
RSS A FolderCreate a Shortcut for the RSS Feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
Create a Snippet with the right content type
RSS A FolderCreate a Shortcut for the RSS Feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
Create a Snippet with the right content type
Tell the browser where to find the RSS
<link rel="alternate" href="/document-repository.rss" type="application/rss+xml" />
Alternate Version
<link rel="alternate" href="/document-repository.rss" type="application/rss+xml" />
Alternate Version
RSS Trouble
Test your feed outside any browser
curl or wget
Validate your feed
W3 Feed Validator: http://validator.w3.org/feed/
JSON?
JavaScript Object Notation
The JavaScript code to create a JavaScript Object
Strikingly similar to a Perl hash
JSON?
JavaScript Object Notation
The JavaScript code to create a JavaScript Object
Strikingly similar to a Perl hash
The format used in WebGUI's configuration file
JSON?
JavaScript Object Notation
The JavaScript code to create a JavaScript Object
Strikingly similar to a Perl hash
The format used in WebGUI's configuration file
Many libraries exist in multiple languages
JSON?
JavaScript Object Notation
The JavaScript code to create a JavaScript Object
Strikingly similar to a Perl hash
The format used in WebGUI's configuration file
Many libraries exist in multiple languages
The best way to get information to JavaScript
JSON A Folder
Folder contains images
Keep existing functionality
Allow users to get a JSON array of images to do with what they please
JSON A FolderCreate a Shortcut for the JSON feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
What JSON is... Really// An array[ "one", "two", "three" ]
// An object{ "one" : 1, "two" : 2, "three" : 3}
// A more complicated object{ "letters" : [ "a", "b", "c" ], "numbers" : [ 1, 2, 3 ]}
// An array of objects[ { "name" : "Doug" }, { "name" : "Frank" }]
What JSON is... Really// An array[ "one", "two", "three" ]
// An object{ "one" : 1, "two" : 2, "three" : 3}
// A more complicated object{ "letters" : [ "a", "b", "c" ], "numbers" : [ 1, 2, 3 ]}
// An array of objects[ { "name" : "Doug" }, { "name" : "Frank" }]
var obj = eval( "(" + json + ")" );
obj[0] == "one"obj[2] == "three"
What JSON is... Really// An array[ "one", "two", "three" ]
// An object{ "one" : 1, "two" : 2, "three" : 3}
// A more complicated object{ "letters" : [ "a", "b", "c" ], "numbers" : [ 1, 2, 3 ]}
// An array of objects[ { "name" : "Doug" }, { "name" : "Frank" }]
var obj = eval( "(" + json + ")" );
obj.one == 1obj[ "three" ] == 3
What JSON is... Really// An array[ "one", "two", "three" ]
// An object{ "one" : 1, "two" : 2, "three" : 3}
// A more complicated object{ "letters" : [ "a", "b", "c" ], "numbers" : [ 1, 2, 3 ]}
// An array of objects[ { "name" : "Doug" }, { "name" : "Frank" }]
var obj = eval( "(" + json + ")" );
obj.letters[0] == "a"obj[ "numbers"][ 1 ] == 2
What JSON is... Really// An array[ "one", "two", "three" ]
// An object{ "one" : 1, "two" : 2, "three" : 3}
// A more complicated object{ "letters" : [ "a", "b", "c" ], "numbers" : [ 1, 2, 3 ]}
// An array of objects[ { "name" : "Doug" }, { "name" : "Frank" }]
var obj = eval( "(" + json + ")" );
obj[0].name == "Doug"obj[1].name == "Frank"
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Folder Title
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Escape special characters
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Folder URL
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Files Loop
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Files Information
{"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);","files" : [
<tmpl_loop files.loop>{
"title" : "<tmpl_var title escape="JS">","url" : "^u;^/(<tmpl_var url escape="JS">);"
}<tmpl_unless __LAST__>,</tmpl_unless></tmpl_loop>
]}
Proper Syntax
JSON A FolderCreate a Shortcut for the JSON feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
JSON A FolderCreate a Shortcut for the JSON feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
Create a Snippet with the right content type
JSON A FolderCreate a Shortcut for the JSON feed
Edit the Shortcut to have the right properties
Make a new template for the Folder
Apply the template to a Shortcut Override
Create a Snippet with the right content type
Test the JSON feed
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Grab YUI Modules
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Photo Stream URL
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
YUI Connection Callback
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Test the JSON
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Test the JSON
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Connection Failed
<script src="^Extras(yui/build/yahoo-dom-event/yahoo-dom-event.js);"></script><script src="^Extras(yui/build/json/json-min.js);"></script><script src="^Extras(yui/build/connection/connection-min.js);"></script><script type="text/javascript">
var url = "/photo-stream.json";
var callback = {success : function (o) {
if ( YAHOO.lang.JSON.isValid( o.responseText ) ) {alert( url + " is valid JSON" );
}else {
alert( url + " is not valid JSON" );}
},failure : function (o) {
alert( url + " does not seem to exist: " + o.responseText );}
};
YAHOO.util.Connect.asyncRequest( "GET", url, callback );</script>
Do the test
For the Ambitious
TrimPath JavaScript Template System
http://code.google.com/p/trimpath/wiki/JavaScriptTemplates
Given a template string and a JSON object
Returns HTML
Beyond JSON
Build a JavaScript slideshow based on the Folder of Images
Build a complete JavaScript search interface to a Thingy
Beyond JSON
Build a JavaScript slideshow based on the Folder of Images
Build a complete JavaScript search interface to a Thingy
Allow users to take their Gallery Albums and Photos to any site they want, in any form they want
RSS From Everything
RSS feed for multiple content types
Calendar, Collaboration, Gallery all in one feed
SQLReport to assemble the data
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Asset ID
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Title
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
URL
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Description
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Description for Post assets
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Description for Event assets
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Description for Gallery Album assets
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Description for other assets
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Asset table
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Join Asset Data
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Handle versioning
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Join other tables for individual asset information
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Left Join to include non-matching rows from asset
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Limit by state and lineage
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Limit to these asset types including sub-classes
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
For Event assets, get those occurring within 1 month
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Pass if not Event asset
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
OR Pass if starts within a month
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
For non-Event assets, get those added in the last
month
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
Pass if Event asset
SELECT asset.assetId AS assetId,assetData.title AS title,assetData.url AS url,IF ( Post.assetId IS NOT NULL,
Post.content,IF ( Event.assetId IS NOT NULL,
CONCAT_WS( " - ", Event.startDate, Event.startTime, Event.location, assetData.synopsis ),IF ( GalleryAlbum.assetId IS NOT NULL,
wobject.description,assetData.synopsis
) ) ) AS descriptionFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.assetId = asset.assetId AND ad.status = "approved"
)LEFT JOIN wobject
ON asset.assetId = wobject.assetId AND assetData.revisionDate = wobject.revisionDateLEFT JOIN Post
ON asset.assetId = Post.assetId AND assetData.revisionDate = Post.revisionDateLEFT JOIN Event
ON asset.assetId = Event.assetId AND assetData.revisionDate = Event.revisionDateLEFT JOIN GalleryAlbum
ON asset.assetId = GalleryAlbum.assetId AND assetData.revisionDate = GalleryAlbum.revisionDateWHERE
asset.state = "published"AND asset.lineage LIKE "000001%"AND (
Post.assetId IS NOT NULL OR Event.assetId IS NOT NULL OR GalleryAlbum.assetId IS NOT NULL
)AND (
Event.assetId IS NULL OR Event.startDate <= DATE_ADD( CURDATE(), INTERVAL 1 MONTH )
)AND (
Event.assetId IS NOT NULL OR FROM_UNIXTIME( asset.creationDate ) > DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
)
OR Pass if asset created in the last month
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Select URL and File size
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Get a Content Type
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
JPEG Images
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Sane default
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Join tables and handle versioning
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Normal join to only get File assets
SELECTassetData.url AS url,assetData.assetSize AS length,IF ( FileAsset.filename REGEXP 'jpe?g$',
"image/jpeg", "application/octet-stream"
) AS contentTypeFROM assetJOIN assetData
ON asset.assetId = assetData.assetId AND assetData.revisionDate = (
SELECT MAX( revisionDate ) FROM assetData ad WHERE ad.status = "approved" AND ad.assetId = assetData.assetId
)JOIN FileAsset
ON asset.assetId = FileAsset.assetIdAND assetData.revisionDate = FileAsset.revisionDate
WHEREasset.parentId = ?AND asset.state = "published"
Only published assets with the right parent
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Standard Beginning
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Channel information
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Items loop
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Query 1 results loop
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Title from Query 1
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
URL from Query 1
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Description from Query 1
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
If Query 2 has a result(GalleryAlbum Files)
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Query 2 loop
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
RSS Enclosure Tag
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
File URL
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
File Size
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
File Content Type
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> <title><tmpl_var title></title> <link>^u;</link> <description><![CDATA[<tmpl_var description>]]></description> <tmpl_loop rows_loop> <item> <title><tmpl_var row.field.title.value></title> <link>^u;^/(<tmpl_var row.field.url.value>);</link> <description><![CDATA[ <tmpl_var row.field.description.value> ]]></description> <tmpl_if hasNest> <tmpl_loop query2.rows_loop> <enclosure url="^u;^/(<tmpl_var query2.row.field.url.value>);" length="<tmpl_var query2.row.field.length.value>" type="<tmpl_var query2.row.field.contentType.value>" /> </tmpl_loop> </tmpl_if> </item> </tmpl_loop></channel>
</rss>
Standard Ending
RSS From EverythingCreate the SQLReport
Make a new template for the SQLReport
Create a Snippet with the right content type
RSS From EverythingCreate the SQLReport
Make a new template for the SQLReport
Create a Snippet with the right content type
Test the RSS feed
Review
RSS From Anything
RSS is just markup
Make a new template
Shortcut and override
AssetProxy into a Snippet
Review
JSON From Anything
Flexible way to get dynamic content from static sites
Same process as RSS
Just a different template
Review
RSS From Everything
Use a SQLReport to combine multiple asset types
Use sub-queries for attachments or enclosures
Just a different template