fm:MediaList


The medialist component is the most powerful component in the system, since media serves such an important role in the Newzulu Platform.
It allows you to display media from the system as either

  • a list of media (by providing criteria such as the group id that the media belong to)

NB: If you need to show the information for one particular media, then use fm:FileInfo.

The medialist component is used to display media such as:

  • images
  • videos
  • blogposts
  • a gallery
  • comments

Example 1

In order to use the media attributes (such as id, title,thumbUrl, approvedcomments) in the templates, you must pass them in the "fields" reference for the MediaList component.

<fm:MediaList fields="id,title,thumbUrl,approvedcomments"> <fm:Loop> <a href="/article/{$$media_id}"> <h2>{$$media_title}</h2> <img src="{$$media_thumbUrl}/11" /> </a> There are {$$media_approvedcomments} approved comments for this media. <br /> </fm:Loop> </fm:MediaList>

Example 2: {$$media_publicUrl}

The {$$media_publicUrl} variable is a link to the transcoded files:
To display a small thumbnail for a video, append "/11" to it.
For a direct link to a flash video file append "/21". Requests to this URL will log a hit.

<fm:MediaList fields="id,title,publicUrl"> <fm:Loop> <a href="{$$media_publicUrl}/21"> <h2>Link to the video: {$$media_title}</h2> <img src="{$$media_publicUrl}/11" /> </a> <br /> </fm:Loop> </fm:MediaList>

Example 3: countOnly

Set countOnly to 1 to return only the number of records in the media list.
NOTE: Do NOT use the loop values (ie: loop.index) when countOnly is set to 1, because there are no values returned in this instance, just the number of media in the media list.

<fm:MediaList moderationStatus="notdenied" channel="15509" countOnly="1" > The number of media in channel=15509 is {$$totalCount}. </fm:MediaList> </fm:MediaList>

Example 4: noCount

Set noCount to 1 to return only the records in the media list and NOT the totalCount.
While setting totalPages to 100 - which is incorrect, but in place to preserve backwards compatibilty on apps that may use this

<fm:MediaList moderationStatus="notdenied" channel="15509" includeChildren="1" fields="id,title,thumbUrl" noCount="1" > totalCount {$$totalCount} <BR> <fm:Loop> media_id {$$media_id} media_title {$$media_title} <BR> </fm:Loop> </fm:MediaList>

Supported attributes

NameRequiredDefaultDescription
behaviorOptionalmediaListCallers can change retrieval behaviour of MediaList. May be one of:
  • mediaList - Retrieve a list of media.
  • mediaByMetaData - Retrieve a list of media from Sphinx
cacheTimeOutOptionalN/AThis attribute allows you to cache results for x seconds. Use the fm:Cache component instead.
channelOptional0The channel to filter on. This can be specified with either a shortname, or an id.
collectionOptional0The collection to use to display media. This has to be specified by its id.
contextOptional"generic", if parentID is set then defaults to "comment" This is related to the parent and type of media.
  • generic - only normal media (no comments or notes)
  • all - all media
  • comment - only comments
  • note - only moderators' notes
  • commentnote - only comments and moderators' notes
  • genericcomment - everything but notes (comments and regular media)
  • parent - only parent media (deprecated)
  • child - only child media (deprecated)
countOnlyOptionalfalseSet to 1 to return only the number of items in the media list.
NOTE: Do NOT use the loop values (ie: loop.index) when countOnly is set to 1, because there are no values returned in this instance, just the number of media in the media list
dateFormatOptional%Y-%m-%d %H:%i:%sThis attribute allows you to change the way dates are displayed within the list. By default it will be YYYY-MM-DD HH:MM:SS. The format which should be used is the same as PHP's date() function.
endTimeOptionalN/AThis attribute filters by the upload date. No media past the endTime will be returned. Usually you should use YYYY-MM-DD format, but things like 'yesterday' will also work.
evenClassOptionalThe contents of this attribute will be placed in the 'loop.evenClass' template variable, only for even row-numbers. This allows you to give every even row a specific css class
eventIdOptional0Show media associated to an event. This has to be specified by id.
externalidOptional0 Filters based on the contents of the external ID property of media items. If set this must be one of the following:
  • 0 - Do not filter based on external ID.
  • exists - Include only media that has an external ID set.
  • mediaType={image|video|audio|text|unknown}[,...]
    - Include only media of the specified type(s) that have an external ID set, media of other types will be included regardless of their external IDs. e.g.: "mediaType=image,video" - this will only include images and videos that have an external ID set; audio, text, and unknown media types will be included even if they do not have an external ID set.
  • other - Include only media that has the exact external ID specified.
favorite_uidOptionalN/AThis attribute allows you to fetch a user's favorites. Specify the user's id.
fieldsOptionalN/AComma separated list of fields to retrieve for this query. Remove "media_" from the template variable name to find the name you must provide in the fields list. e.g.: if you'd like to use the uploader's first name then you'll use the "media_user_firstname" template variable within the media list component. To specify you want this field retrieved you must list "user_firstname" in the fields attribute.
fileTypesOptional1,2,3,4Allows you to filter by a specific filetype. 1 = image, 2 = video, 3 = audio, 4 = text. You can supply multiple values by separating them with comma's
geoBoundariesOptionalN/AFilter by latitude and longitude. Specify this as "{west longitude},{north latitude},{east longitude},{south latitude}".
groupIdOptionalN/AOnly show media from a specific group
hiddenOptionalN/AOne of "SHOWN" (default), "HIDDEN" (private), or "ALL". Usually this should only be set when a user filter is set as well to only show a specific user's hidden media.
idListOptionalN/ASetting this will enable media_idlist, which is a comma separated list of IDs that matched the query
includeChildGroupsOptional0Include media from the group/event specified with groupId/eventId as well as all their descendant groups. Must only be used when specifying a groupId/eventId filter. Valid values are "true", "false", "accepted" (or "approved"), "denied" and "notdenied".
includeChildrenOptional0Only used in conjunction with a channel filter. This allows you to specify if you'd like to get all media from the specified channel + media from underlying channels (when nested channels are used). This is specified as 0 for false, 1 for true.
moderationStatusOptionalProject settingThis filter can be used to override a vhosts moderation setting. Possible values are unmoderated, accepted, denied, notdenied, moderated, all. Please note that media Moderation Status does not equal media Status: the former has to do with how the media is moderated once it has been uploaded while the latter has to do with the status of the upload (conversion).
notuidOptionalN/AFilter by a specific user's id (provided as an integer), or list of ids (integers separated by commas), that don't match.
oddClassOptionalThe contents of this attribute will be placed in the 'loop.oddClass' template variable, only for odd row-numbers. This allows you to give every odd row a specific css class
offsetOptional0Only show media starting with this number. If for example 5 is supplied, the list with start with the 5th item in the query.
pageSizeOptional30The number of media-items per page. A maximum page size of 200 is enforced, attempting to set this to anything greater will cause the page size to revert to 200.
parentIDOptional0Only return media with the specified parentID. Note that setting this causes "context" to default to "comment"
parentUserIDOptionalN/AInclude only media whose parent's owner matches this ID. This must be used with a context filter restricting results to media with a parent (ie: context filter of "child", "comment", or "note"). Useful for showing all comments on any of a user's media in combination with the context filter
searchQueryOptionalN/AAllows users to search for media matching the query. The filename, title, description and tags will be used for the search.
shuffleOptionalN/ASetting this to true will return the returned results back in shuffled order.
sortOptionalupload DESCAllows users to sort media by various fields (shown below in bullet points).
Specifying "default" as sort method when a channel filter is specified, will use sort order set in the channel settings(eg. sort=default).
Multiple sort fields may be specified separated by commas, eg: sort="commentcount DESC, upload DESC"

Allows users to sort media using the following fields:
  • approvedcomments - The number of approved comments for the media
  • channel - The channel that the media belongs to.
  • commentcount - The number of comments for the media.
  • contenttype - The contenttype of the media.
  • conversiontime - The length of time that the media took to convert (in seconds).
  • converttime - The date and time that the media was converted.
  • date - The date and time that the media was uploaded to Media Factory.
  • duration - The duration length of the media.
  • extension - The extension of the media
  • filesize - The file-size of the media
  • filetype - The filetype of the media. ie: 1 (image), 2 (video), 3 (audio), 4 (text)
  • geo_latitude - The geo latitude of the media
  • geo_longitude - The geo longitude of the media
  • groupposition - Based on the position field for media stored within a group.
  • height - height of the media.
  • hits - The number of hits that the media has received.
  • id - The id of the media
  • injector - The injector of the media
  • lastupdatetime - The date and time that the media was last updated.
  • length - The duration length of the media.
  • message - The message of the media
  • moderationstatus - The moderationstatus of the media. ie: 0 (unmoderated), 1 (accepted), 2 (denied), 3 (notdenied), -1 (all)
  • notdeniedcomments - The number of 'notdenied' comments for the media
  • offensive - Whether the media is marked as offensive
  • ofilesize - The media's ofilesize.
  • parentid - The media id of the parent os the media.
  • rating - The rating of the media.
  • tags - The media's tags
  • title - The title of the media
  • uid - The user id for the owner of the media.
  • upload - The upload date and time of the media.
  • user_city - The city of the media's owner.
  • user_country - The country of the media's owner.
  • user_firstname - The media owner's firstname
  • user_lastname - The media owner's lastname
  • user_name - The media owner's username
  • votecount - The number of votes that the media has received.
  • width - The width of the media.
startPageOptionalN/ASpecifies the start-page. This can be used in conjuction with pageSize.
startTimeOptionalN/AThis attribute filters by the upload date. No media before the startTime will be returned. Usually you should use YYYY-MM-DD format, but things like 'yesterday' will also work.
statusOptional3This filter selects media based on their upload status. Possible values are:
  • 0 (uploading)
  • 1 (queued for conversion)
  • 2 (converting)
  • 3 (converted)
  • 4 (failed conversion)
  • 100 (trashed - any trashed status)
  • 101 (trashed while uploading)
  • 102 (trashed while queued for conversion)
  • 103 (trashed while converting)
  • 104 (trashed after successful conversion)
  • 105 (trashed after failed conversion)
Please note that media media Status does not equal media Moderation Status: the former has to do with the status of the media upload (via the conversion process) while the latter has to do with how the media is moderated once it has been uploaded.
tagOptionalN/AThis filter allows you to filter media by a specific tag. ie any alpha-numeric string
uidOptionalN/AFilter by a specific user's id (provided as an integer), or list of ids (integers separated by commas).

Deprecated Attributes

Additional Information

  • The format for the dateFormat attribute is the same as PHP's date function.
  • The accepted values for startTime and endTime are the same as PHP's strtotime function.
  • The fields should contain a comma-seperated list of template variables you would like to see for every media item. In the initial example 'id' and 'title' were specified. The fields that can be used to sort the media are: media_id, media_channel, media_channel_name, media_channel_shortname, media_contenttype, media_date, media_duration, media_notdeniedcomments, media_approvedcomments, media_commentcount, media_extension, media_filesize, media_height, media_hits, media_injector, media_length, media_message, media_metadata, media_ofilesize, media_title, media_tags, media_uid, media_upload, media_user_city, media_user_country, media_user_firstname, media_user_lastname, media_user_name, media_user_nickname, media_width, media_geo_latitude and media_geo_longitude. View examples for Sorting The Medialist.
  • In the past numeric values for moderationStatus were also accepted, but it is strongly discouraged to do so today.

Template variables

NameDescription
loop.hasResultsThe contents of this variable will be either 0 or 1, depending on if there are items in the list.
loop.oddClassThe contents of this variable will reflect the "oddClass" attribute. This will only be set for odd rownumbers.
loop.evenClassThe contents of this variable will reflect the "evenClass" attribute. This will only be set for even rownumbers.
loop.indexThe 0-based index of the item in the loop. (Will contain 0,1,2,3,4, etc.)
loop.countThe count of the current item in the loop. (Will contain 1,2,3,4,5 etc.)
loop.currentPageIf a pager is involved in this loop, this will contain the current page number (0-based index). If page information is not available, this will be 0.
loop.currentPage1This value is currentPage + 1. This number can be useful to display the current page number to use user. (people generally count from 1, not 0).
loop.totalPagesTotal number of pages avaiable in this loop. This will be 0 if the loop does not support paging.
loop.totalItemsTotal number of individual items. This will be 0 if the loop does not support paging.
loop.pageSizeTotal number of items on 1 single page. This will be 0 if the loop does not support paging.
totalCountThe total number of media in this media list.
media_approvedcommentsThe total number of approved comments for this file.
media_notdeniedcommentsThe number of comments that have not been denied for this file.
media_channelThe channel-id if the file was associated to a channel.
media_channel_nameThe name of the channel if the file was associated to a channel.
media_channel_shortnameThe 'shortname' of the channel if the file was associated to a channel.
media_contenttypeThe mimetype of the file, for example: audio/mp3.
media_conversiontimeThe time needed to transcode the file, in seconds.
media_converttimeThe date and time when the transcoding was completed for this file.
media_commentcountThe total number of comments to this file.
media_currentpageThe page number the user is currently on.
media_dateThe original creation date of the file. If we cannot detect this, this will be the same as the upload date.
media_durationThe duration of the file in a human-readable format (example: 00:01:07).
media_extensionThe original file extension, for example 'mp4'
media_filetypeThe filetype. This is specified as a number between 1 and 4. Read below for more information.
media_filenameThe original filename
media_filesizeThe size of the file, in bytes.
media_heightThe height of the original file in pixels.
media_hitsThe number of views the file got.
media_idThe unique id of the file.
media_injectorA string describing the application that created the file, for example Uploader or Recorder.
media_lengthThe duration of the file in as a floating point number in seconds. (example: 187.33, for 3 minutes, 7 seconds)
media_messageThe description of the file.
media_metadataUser-defined or developer-defined meta-data for the media; the metadata can be defined in the mediadetail page (by the user) or in the API (by the developer).
In the MediaList Component, its values can be read as: media_metadata.user.<key>

Examples of keys are
  • 'synopsis' - read as: media_metadata.user.synopsis
  • 'pin' - read as: media_metadata.user.pin
media_ofilesizeThe total size of all transcoded versions of this file, including thumbnails in bytes.
media_offsetThe offset of the current media-item within the current search query. The first item in the list will have 0, the second 1, the first item on the second page (if there are 30 items per page) will be 30
media_publicUrlThe base-url associated with the file.
media_resumableUrlThe base-url associated with the file. Requests accept http ranges headers for resumable downloads
media_ratingThe average rating. This is a floating point number between 0 and 10. 2 decimals are provided.
media_statusThe status of the file. Generally this is always 3, meaning 'succesfully converted'.
media_titleThe title of the file.
media_tagsA space delimited list of tags associated with the file. For example "amsterdam holiday".
media_uidThe id of the user who uploaded the file.
media_updownratingThis template variable will give you the "thumbs up/down" rating. The actual formula is actually based on the votecount and average rating, and assumes people rate 0 for down, and 10 for up.
media_uploadThe date and time the file was added to the Media Factory.
media_uploadageThe time that has passed since the file was uploaded. The format will be for example 5 seconds, 20 minutes or 12 days.
media_user_cityThe submitter's city.
media_user_countryThe submitter's 2-letter country code.
media_user_firstnameThe submitter's first name.
media_user_lastnameThe submitter's last name.
media_user_nameThe username of the person uploading the file.
media_user_nicknameThe submitter's nickname.
media_user_stateThe 2-letter state or province code of the submitter.
media_votecountThe total number of votes cast.
media_widthThe width of the original file in pixels.
media_geo_latitudeThe latitude of the file if available, otherwise empty.
media_geo_longitudeThe longitude of the file if available, otherwise empty.
media_authorThis field is used to retrieve the name entered by an anonymous user. Often used when users can comment without registering, by a captcha.
media_processtimeThe time spent fetching MediaList data
media_idlistA comma separated list of media ids

Deprecated Template Variables

  • The media_filetype variable will be 1 for images, 2 for video, 3 for audio and 4 for text.
  • Meta-data is completely free form, and can contain more information supplied by the developer. An example is media_metadata.user.myCategory. Note that the sub-elements in media_metadata are separated by punctuation marks (.).

See also

Sorting the MediaList

This lists sorts all the media by the number of hits, and filters by a channel. Also, we're only retrieving text files

<fm:MediaList fields="id,title" channel="myBlog" sort="hits DESC" fileTypes="4" evenClass="even"> <fm:Loop> <a href="/article/{$$media_id}" class="{$loop.evenClass}">{$$media_title}</a><br /> </fm:Loop> <fm:NoResults> No articles were found! </fm:NoResults> </fm:MediaList>

Status codes

The media status refers to whether the media has uploaded (via the conversion process) succesfully, not been uploaded succesfully or in the process.

********* NB *********
The Media Status is NOT to be confused with the Media Moderation Status, which refers to whether the media has been accepted or denied during the moderation process.

Status Description 0 uploading 1 queued for conversion 2 converting 3 converted 4 failed conversion 100 trashed (any trashed status) 101 trashed while uploading 102 trashed while queued for conversion 103 trashed while converting 104 trashed after successful conversion 105 trashed after failed conversion

Moderation Status codes

Media Moderation Status refers to whether the media has been accepted or denied during the moderation process.

********* NB *********
The Media Moderation Status is NOT to be confused with the Media Status, which refers to whether the media has uploaded (via the conversion process) succesfully or not.

There are also a lot of places where you can read on the current moderation status. We are moving towards standardization, so for any future system we will use the first column (the english words) media and comments use the values from the second column.

Standard Media status Description unmoderated 0 Unmoderated content accepted 1 Approved content denied 2 Denied content notdenied 3 Not Denied content moderated 6 All moderated media (approved and denied media) all -1 All media (approved, denied, and unmoderated media)

More examples

Example 3:

The following code shows the media title, media.metadata.user.synopsis and media.metadata.user.pin in a medialist.

<fm:MediaList fields="id,title,metadata"> <fm:Loop> Title: {$$media.title}, media.metadata.user.synopsis {$$media.metadata.user.synopsis}, media.metadata.user.pin {$$media.metadata.user.pin} <br /> </fm:Loop> </fm:MediaList>

Example 4:

This lists shows 84x84 jpeg thumbnail for all image and video uploads. We set the limit for this gallery to 100.

<fm:MediaList fields="publicUrl,title" fileTypes="1,2" pageSize="100"> <fm:Loop> <span class="thumbnail"> <img src="{$publicUrl}/12" alt="{$$media_title}" title="{$$media_title}" /> </span> </fm:Loop> </fm:MediaList>

Example 5:

This lists shows videoplayers, audio players, text entries and large images. Because a lot of flash on one page is a bad idea, we set the limit to 10.

<fm:MediaList fields="id,publicUrl,title,message,user_name,upload,filetype" pageSize="100"> <fm:Loop> <div class="mediaEntry"> <h1>{$$media_title}</h1> <p>{$$media_message}</p> <p>Submitted by {$$media_user_name} on {$$media_upload}</p> <fm:Switch value="{$$media_filetype}"> <!-- images --> <fm:Case value="1"><img src="{$publicUrl}/15" alt="{$$media_title}" /></fm:Case> <!-- video --> <fm:Case value="2"><fm:VideoPlayer mid="{$media_id}" autoPlay="0" width="600" height="450" /></fm:Case> <!-- audio --> <fm:Case value="3"><fm:Mp3 mid="{$media_id}" autoPlayer="0" /></fm:Case> <!-- text --> <fm:Case value="4"> <strong>This text file was brought to you by cheesy poofs</strong> </fm:Case> </fm:Switch> </div> <hr /> </fm:Loop> </fm:MediaList>