2007-07-19 12:40:05 +02:00
< ? php
2008-01-08 07:41:55 +01:00
/**
* @ package cms
2008-01-10 01:33:49 +01:00
* @ subpackage assets
2008-01-08 07:41:55 +01:00
*/
/**
* A special kind of complex table field for manipulating assets .
2008-01-10 01:33:49 +01:00
* @ package cms
* @ subpackage assets
2008-01-08 07:41:55 +01:00
*/
2007-07-19 12:40:05 +02:00
class AssetTableField extends ComplexTableField {
protected $folder ;
protected $template = " AssetTableField " ;
2007-10-02 23:34:57 +02:00
protected $permissions = array (
" edit " ,
" delete " ,
//"export",
);
2007-07-19 12:40:05 +02:00
function __construct ( $controller , $name , $sourceClass , $fieldList , $detailFormFields , $sourceFilter = " " , $sourceSort = " " , $sourceJoin = " " ) {
parent :: __construct ( $controller , $name , $sourceClass , $fieldList , $detailFormFields , $sourceFilter , $sourceSort , $sourceJoin );
$this -> sourceSort = " Title " ;
$this -> Markable = true ;
2007-09-15 03:19:43 +02:00
2007-07-19 12:40:05 +02:00
}
function setFolder ( $folder ) {
$this -> folder = $folder ;
$this -> sourceFilter .= ( $this -> sourceFilter ) ? " AND " : " " ;
$this -> sourceFilter .= " ParentID = ' " . $folder -> ID . " ' AND ClassName <> 'Folder' " ;
}
function Folder () {
return $this -> folder ;
}
function sourceID () {
2007-10-02 23:34:57 +02:00
if ( $this -> folder ) return $this -> folder -> ID ;
2007-07-19 12:40:05 +02:00
}
function DetailForm () {
$ID = ( isset ( $_REQUEST [ 'ctf' ][ 'ID' ])) ? Convert :: raw2xml ( $_REQUEST [ 'ctf' ][ 'ID' ]) : null ;
$childID = ( isset ( $_REQUEST [ 'ctf' ][ 'childID' ])) ? Convert :: raw2xml ( $_REQUEST [ 'ctf' ][ 'childID' ]) : null ;
$childClass = ( isset ( $_REQUEST [ 'fieldName' ])) ? Convert :: raw2xml ( $_REQUEST [ 'fieldName' ]) : null ;
$methodName = ( isset ( $_REQUEST [ 'methodName' ])) ? $_REQUEST [ 'methodName' ] : null ;
if ( ! $childID ) {
user_error ( " AssetTableField::DetailForm Please specify a valid ID " );
return null ;
}
if ( $childID ) {
$childData = DataObject :: get_by_id ( " File " , $childID );
}
if ( ! $childData ) {
user_error ( " AssetTableField::DetailForm No record found " );
return null ;
}
if ( $childData -> ParentID ) {
$folder = DataObject :: get_by_id ( 'File' , $childData -> ParentID );
} else {
$folder = singleton ( 'Folder' );
}
$urlLink = " <div class='field readonly'> " ;
2008-01-10 04:28:13 +01:00
$urlLink .= " <label class='left'> " . _t ( 'AssetTableField.URL' , 'URL' ) . " </label> " ;
2007-07-19 12:40:05 +02:00
$urlLink .= " <span class='readonly'><a href=' { $childData -> Link () } '> { $childData -> RelativeLink () } </a></span> " ;
$urlLink .= " </div> " ;
$detailFormFields = new FieldSet (
new TabSet ( " BottomRoot " ,
2008-01-10 04:28:13 +01:00
new Tab ( _t ( 'AssetTableField.MAIN' , 'Main' ),
2007-09-16 18:33:05 +02:00
new TextField ( " Title " , _t ( 'AssetTableField.TITLE' , 'Title' )),
new TextField ( " Name " , _t ( 'AssetTableField.FILENAME' , 'Filename' )),
2007-07-19 12:40:05 +02:00
new LiteralField ( " AbsoluteURL " , $urlLink ),
2007-09-16 18:33:05 +02:00
new ReadonlyField ( " FileType " , _t ( 'AssetTableField.TYPE' , 'Type' )),
new ReadonlyField ( " Size " , _t ( 'AssetTableField.SIZE' , 'Size' ), $childData -> getSize ()),
new DropdownField ( " OwnerID " , _t ( 'AssetTableField.OWNER' , 'Owner' ), Member :: mapInCMSGroups ( $folder -> CanEdit () ) ),
new DateField_Disabled ( " Created " , _t ( 'AssetTableField.CREATED' , 'First uploaded' )),
new DateField_Disabled ( " LastEdited " , _t ( 'AssetTableField.LASTEDIT' , 'Last changed' ))
2007-07-19 12:40:05 +02:00
)
)
);
2007-09-20 06:06:50 +02:00
2007-07-19 12:40:05 +02:00
if ( is_a ( $childData , 'Image' )) {
$big = $childData -> URL ;
$thumbnail = $childData -> getFormattedImage ( 'AssetLibraryPreview' ) -> URL ;
2008-01-10 04:28:13 +01:00
// Hmm this required the translated string to be appended to BottomRoot to add this to the Main tab
$detailFormFields -> addFieldToTab ( " BottomRoot. " . _t ( 'AssetTableField.MAIN' , 'Main' ),
2007-09-16 18:33:05 +02:00
new ReadonlyField ( " Dimensions " , _t ( 'AssetTableField.DIM' , 'Dimensions' )),
2007-07-19 12:40:05 +02:00
" Created "
);
$detailFormFields -> addFieldToTab ( " BottomRoot " ,
2008-01-10 04:28:13 +01:00
new Tab ( _t ( 'AssetTableField.IMAGE' , 'Image' ),
2007-07-19 12:40:05 +02:00
new LiteralField ( " ImageFull " ,
2008-01-10 04:28:13 +01:00
'<a id="ImageEditorActivator" href="javascript: void(0)">' . " <img id='thumbnailImage' src=' { $thumbnail } ?r= " . rand ( 1 , 100000 ) . " ' alt=' { $childData -> Name } ' /><p> " . _t ( 'AssetTableField.EDITIMAGE' , 'Edit this image' ) . " </p> " . '</a>' .
2007-10-03 01:26:35 +02:00
'<script type="text/javascript" src="cms/javascript/ImageEditor/Activator.js"></script><script type="text/javascript">var imageActivator = new ImageEditor.Activator.initialize();Event.observe("ImageEditorActivator","click",imageActivator.onOpen);</script>'
2007-07-19 12:40:05 +02:00
)
),
'Main'
);
2007-09-20 06:06:50 +02:00
2007-10-02 07:17:35 +02:00
if ( class_exists ( 'GalleryFile' )) {
$detailFormFields -> addFieldToTab ( " BottomRoot " ,
2008-01-10 04:28:13 +01:00
new Tab ( _t ( 'AssetTableField.GALLERYOPTIONS' , 'Gallery Options' ),
new TextField ( " Content " , _t ( 'AssetTableField.CAPTION' , 'Caption' ) )
2007-10-02 07:17:35 +02:00
)
);
}
2007-07-19 12:40:05 +02:00
}
2007-10-02 07:17:35 +02:00
else if ( class_exists ( 'GalleryFile' )) {
2007-09-20 06:06:50 +02:00
if ( $childData -> Extension == 'swf' ) {
$detailFormFields -> addFieldToTab ( " BottomRoot " ,
2008-01-10 04:28:13 +01:00
new Tab ( _t ( 'AssetTableField.GALLERYOPTIONS' , 'Gallery Options' ),
new TextField ( " Content " , _t ( 'AssetTableField.CAPTION' , 'Caption' ) ),
new TextField ( 'PopupWidth' , _t ( 'AssetTableField.POPUPWIDTH' , 'Popup Width' ) ),
new TextField ( 'PopupHeight' , _t ( 'AssetTableField.POPUPHEIGHT' , 'Popup Height' ) ),
new HeaderField ( _t ( 'AssetTableField.SWFFILEOPTIONS' , 'SWF File Options' ) ),
new CheckboxField ( 'Embed' , _t ( 'AssetTableField.ISFLASH' , 'Is A Flash Document' ) ),
new CheckboxField ( 'LimitDimensions' , _t ( 'AssetTableField.DIMLIMT' , 'Limit The Dimensions In The Popup Window' ) )
2007-09-20 06:06:50 +02:00
)
);
}
else {
$detailFormFields -> addFieldToTab ( " BottomRoot " ,
2008-01-10 04:28:13 +01:00
new Tab ( _t ( 'AssetTableField.GALLERYOPTIONS' , 'Gallery Options' ),
new TextField ( " Content " , _t ( 'AssetTableField.CAPTION' , 'Caption' ) ),
new TextField ( 'PopupWidth' , _t ( 'AssetTableField.POPUPWIDTH' , 'Popup Width' ) ),
new TextField ( 'PopupHeight' , _t ( 'AssetTableField.POPUPHEIGHT' , 'Popup Height' ) )
2007-09-20 06:06:50 +02:00
)
);
}
}
2007-07-19 12:40:05 +02:00
if ( $childData && $childData -> hasMethod ( 'BackLinkTracking' )) {
$links = $childData -> BackLinkTracking ();
if ( $links -> exists ()) {
foreach ( $links as $link ) {
$backlinks [] = " <li><a href= \" admin/show/ $link->ID\ " > " . $link->Breadcrumbs (null,true). " </ a ></ li > " ;
}
2007-09-16 18:33:05 +02:00
$backlinks = " <div style= \" clear:left \" > " . _t ( 'AssetTableField.PAGESLINKING' , 'The following pages link to this file:' ) . " <ul> " . implode ( " " , $backlinks ) . " </ul> " ;
2007-07-19 12:40:05 +02:00
}
2007-09-16 18:33:05 +02:00
if ( ! isset ( $backlinks )) $backlinks = " <p> " . _t ( 'AssetTableField.NOLINKS' , " This file hasn't been linked to from any pages. " ) . " </p> " ;
2007-07-19 12:40:05 +02:00
$detailFormFields -> addFieldToTab ( " BottomRoot.Links " , new LiteralField ( " Backlinks " , $backlinks ));
}
// the ID field confuses the Controller-logic in finding the right view for ReferencedField
$detailFormFields -> removeByName ( 'ID' );
// add a namespaced ID instead thats "converted" by saveComplexTableField()
$detailFormFields -> push ( new HiddenField ( " ctf[childID] " , " " , $childID ));
$detailFormFields -> push ( new HiddenField ( " ctf[ClassName] " , " " , $this -> sourceClass ));
$readonly = ( $this -> methodName == " show " );
$form = new ComplexTableField_Popup ( $this , " DetailForm " , $detailFormFields , $this -> sourceClass , $readonly );
if ( is_numeric ( $childID )) {
if ( $methodName == " show " || $methodName == " edit " ) {
$form -> loadDataFrom ( $childData );
}
}
if ( ! $folder -> userCanEdit () || $methodName == " show " ) {
$form -> makeReadonly ();
}
return $form ;
}
}
2007-10-02 23:34:57 +02:00
?>