Id());
if ($Mapping == "Title" && strlen($Resource->GetMapped("Url")))
{
DisplayUrlField($Resource, $Field, $Data);
}
else
{
DisplayResourceField($Resource, $Field, $Data);
}
}
/**
* Display a Paragraph field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayParagraphField(Resource $Resource, MetadataField $Field)
{
$Data = GetFieldValue($Resource, $Field);
$Data = nl2br(StripXSSThreats($Data));
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display a Number field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayNumberField(Resource $Resource, MetadataField $Field)
{
# don't display the rating field
if ($Field->Name() == "Cumulative Rating")
{
return;
}
$Data = GetFieldValue($Resource, $Field);
$Data = defaulthtmlentities($Data);
DisplayResourceField($Resource, $Field, $Data);
}
/**
* Display a Date field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayDateField(Resource $Resource, MetadataField $Field)
{
$Data = GetFieldValue($Resource, $Field);
$Data = defaulthtmlentities($Data->Formatted());
DisplayResourceField($Resource, $Field, $Data);
}
/**
* Display a Timestamp field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayTimestampField(Resource $Resource, MetadataField $Field)
{
$Data = GetFieldValue($Resource, $Field);
$Data = defaulthtmlentities($Data);
DisplayResourceField($Resource, $Field, $Data);
}
/**
* Display a Flag field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayFlagField(Resource $Resource, MetadataField $Field)
{
$Data = GetFieldValue($Resource, $Field);
$Data = ($Data > 0) ? $Field->FlagOnLabel() : $Field->FlagOffLabel();
$Data = defaulthtmlentities($Data);
DisplayResourceField($Resource, $Field, $Data);
}
/**
* Display a Tree field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayTreeField(Resource $Resource, MetadataField $Field)
{
$Names = GetFieldValue($Resource, $Field);
# only output tree fields with values
if (count($Names) < 1)
{
return;
}
$Data = NULL;
foreach ($Names as $Id => $Name)
{
$LinkAttributes = array(
"href" =>
"index.php?P=AdvancedSearch&Q=Y&G".EscapeParam($Field->Id())
."=".EscapeParam($Id),
"title" =>
"Search for all resources also classified as \""
.defaulthtmlentities($Name->Name())."\"");
$Data .= PrepareNameValue($Resource, $Field, $Name, $LinkAttributes);
}
$ListAttributes = array("class" => "cw-list cw-list-dematte cw-list-unmarked");
$Data = CreateHtmlElement("ul", $ListAttributes, $Data);
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display a Controlled Name field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayControlledNameField(Resource $Resource, MetadataField $Field)
{
$Names = GetFieldValue($Resource, $Field);
# only output controlled name fields with values
if (count($Names) < 1)
{
return;
}
$Data = NULL;
foreach ($Names as $Id => $Name)
{
$LinkAttributes = array(
"href" =>
"index.php?P=AdvancedSearch&Q=Y&F"
.EscapeParam($Field->Id())."=".EscapeParam("=".$Name->Name()),
"title" =>
"Search for all resources also classified as \""
.defaulthtmlentities($Name->Name())."\"");
$Data .= PrepareNameValue($Resource, $Field, $Name, $LinkAttributes);
}
$ListAttributes = array("class" => "cw-list cw-list-dematte cw-list-unmarked");
$Data = CreateHtmlElement("ul", $ListAttributes, $Data);
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display an Option field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayOptionField(Resource $Resource, MetadataField $Field)
{
$Names = GetFieldValue($Resource, $Field);
# only output option fields with values
if (count($Names) < 1)
{
return;
}
$Data = NULL;
foreach ($Names as $Id => $Name)
{
$LinkAttributes = array(
"href" =>
"index.php?P=AdvancedSearch&Q=Y&G".EscapeParam($Field->Id())
."=".EscapeParam($Id),
"title" =>
"Search for all resources also classified as \""
.defaulthtmlentities($Name->Name())."\"");
$Data .= PrepareNameValue($Resource, $Field, $Name, $LinkAttributes);
}
$ListAttributes = array("class" => "cw-list cw-list-dematte cw-list-unmarked");
$Data = CreateHtmlElement("ul", $ListAttributes, $Data);
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display an User field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayUserField(Resource $Resource, MetadataField $Field)
{
global $User;
# don't show user field if not a resource administrator
if (!$User->HasPriv(PRIV_RESOURCEADMIN))
{
return;
}
$Data = GetFieldValue($Resource, $Field);
$Data = (is_null($Data->Get("UserId")))
? "Unknown" : $Data->Get("UserName");
$Data = defaulthtmlentities($Data);
DisplayResourceField($Resource, $Field, $Data);
}
/**
* Display an Image field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayStillImageField(Resource $Resource, MetadataField $Field)
{
$Image = GetFieldValue($Resource, $Field);
# only display image fields with an image available
if (is_null($Image) || !is_readable($Image->PreviewUrl()))
{
return;
}
$ImageAttributes = array(
"src" => $Image->PreviewUrl(),
"alt" => $Image->AltText(),
"title" => $Image->AltText());
if ($Image->PreviewWidth() > 0)
{
$ImageAttributes["width"] = $Image->PreviewWidth();
}
if ($Image->PreviewHeight() > 0)
{
$ImageAttributes["height"] = $Image->PreviewHeight();
}
$Image = CreateHtmlElement("img", $ImageAttributes);
$LinkAttributes = array(
"href" =>
"index.php?P=FullImage&ResourceId=".$Resource->Id()
."&FieldName=".$Field->Name()."&edit=0");
$Data = CreateHtmlElement("a", $LinkAttributes, $Image);
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display a File field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayFileField(Resource $Resource, MetadataField $Field)
{
$Files = GetFieldValue($Resource, $Field);
# only display file fields with at least one file
if (count($Files) < 1)
{
return;
}
$Data = NULL;
foreach ($Files as $Id => $File)
{
$Item = defaulthtmlentities($File->Name());
$Attributes = array(
"href" => $File->GetLink(),
"title" => "Download \"".$File->Name()."\"");
$Item = CreateHtmlElement("a", $Attributes, $Item);
$Data .= CreateHtmlElement("li", array(), $Item);
}
$ListAttributes = array("class" => "cw-list cw-list-dematte cw-list-unmarked");
$Data = CreateHtmlElement("ul", $ListAttributes, $Data);
DisplayResourceField($Resource, $Field, $Data, array("IsTall" => TRUE));
}
/**
* Display an Url field.
* @param $Resource Resource object
* @param $Field MetadataField object
* @param $Value optional value for the URL
*/
function DisplayUrlField(Resource $Resource, MetadataField $Field, $Value=NULL)
{
global $SysConfig;
$Data = GetFieldValue($Resource, $Field);
# only display URLs with a set value
if (strlen($Data) < 1)
{
return;
}
$TruncData = (!is_null($Value))
? $Value : defaulthtmlentities(NeatlyTruncateString($Data, 70, TRUE));
$LinkAttributes = array(
"href" => "index.php?P=GoTo&ID=".$Resource->Id()."&MF=".$Field->Id(),
"title" => $Data);
if ($SysConfig->ResourceLaunchesNewWindowEnabled())
{
$LinkAttributes["target"] = "_blank";
}
$Link = CreateHtmlElement("a", $LinkAttributes, $TruncData);
DisplayResourceField($Resource, $Field, $Link);
}
/**
* Display a Point field.
* @param $Resource Resource object
* @param $Field MetadataField object
*/
function DisplayPointField(Resource $Resource, MetadataField $Field)
{
$Data = GetFieldValue($Resource, $Field);
# reduce to a single value
$X = $Data["X"];
$Y = $Data["Y"];
$Data = (!is_null($X)) ? $X . ", " . $Y : NULL;
DisplayResourceField($Resource, $Field, $Data);
}
# star rating functions
function PrintRatingGraphic0() { ?> " alt="This resource has a 1 star rating" />
" alt="This resource has a 1 star rating" />
" alt="This resource has a 1 star rating" />
" alt="This resource has a 1.5 star rating" />
" alt="This resource has a 2 star rating" />
" alt="This resource has a 2.5 star rating" />
" alt="This resource has a 3 star rating" />
" alt="This resource has a 3.5 star rating" />
" alt="This resource has a 4 star rating" />
" alt="This resource has a 4.5 star rating" />
" alt="This resource has a 5 star rating" /> (not yet rated)"; }
# ----- LOCAL FUNCTIONS ------------------------------------------------------
/**
* Determine if a MetadataField value can be displayed, depending on whether
* it's enabled and the user has the necessary privileges.
* @param $Field MetadataField object
* return TRUE if the field can be displayed, FALSE otherwise
*/
function CanDisplayField(MetadataField $Field=NULL)
{
global $User;
# field not set or not enabled
if (is_null($Field) || !$Field->Enabled())
{
return FALSE;
}
$ViewingPrivilege = $Field->ViewingPrivilege();
# insufficient privileges
if ($ViewingPrivilege === 0 || $User->HasPriv($ViewingPrivilege))
{
return FALSE;
}
return TRUE;
}
/**
* Generate an HTML element.
* @param $Name a valid HTML element name (is not escaped)
* @param $Attributes array of attributes and values (only values are escaped)
* @param $Inner inner HTML elements or text (is not escaped)
* return HTML element string
*/
function CreateHtmlElement($Name, $Attributes=array(), $Inner=NULL)
{
$Element = "<" . $Name;
foreach ($Attributes as $Attribute => $Value)
{
$Value = defaulthtmlentities($Value);
$Element .= " " . $Attribute . '="' . $Value . '"';
}
$Element .= (is_null($Inner)) ? " />" : ">".$Inner."".$Name.">";
return $Element;
}
/**
* Get the value from an array with a given index or a default value if it does
* not exist.
* @param $Array array
* @param $Key index of the value to retrieve
* @param $Default value to return if the value does not exist (defaults to NULL)
* @return the value at the given index or the default value if it doesn't exist
*/
function GetArrayValue(array $Array, $Key, $Default=NULL)
{
return (array_key_exists($Key, $Array)) ? $Array[$Key] : $Default;
}
/**
* Display a resource field value.
* @param $Resource Resource object
* @param $Field MetadataField object
* @param $Data the field value with any alterations made
* @param $Options array of options
*/
function DisplayResourceField(
Resource $Resource, MetadataField $Field, $Data, array $Options=array())
{
# only display fields with a value
if (is_null($Data) || (is_string($Data) && strlen($Data) < 1))
{
return;
}
$Header = defaulthtmlentities($Field->Name());
$Description = defaulthtmlentities($Field->Description());
$IsTall = GetArrayValue($Options, "IsTall", FALSE);
# vertically align to the top if more than 100 characters
$RowClass = ($IsTall) ? ' class="cw-content-tallrow"' : "";
?>
No resource was found with the specified ID.
Resource Comments