2007-07-19 12:40:05 +02:00
< ? php
2008-01-08 07:41:55 +01:00
/**
* @ package cms
* @ subpackage
*/
/**
* A special kind of complex table field for manipulating assets .
*/
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'> " ;
$urlLink .= " <label class='left'>URL</label> " ;
$urlLink .= " <span class='readonly'><a href=' { $childData -> Link () } '> { $childData -> RelativeLink () } </a></span> " ;
$urlLink .= " </div> " ;
$detailFormFields = new FieldSet (
new TabSet ( " BottomRoot " ,
new Tab ( " 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 ;
$detailFormFields -> addFieldToTab ( " BottomRoot.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 " ,
new Tab ( " Image " ,
new LiteralField ( " ImageFull " ,
2007-11-06 04:28:47 +01:00
'<a id="ImageEditorActivator" href="javascript: void(0)">' . " <img id='thumbnailImage' src=' { $thumbnail } ?r= " . rand ( 1 , 100000 ) . " ' alt=' { $childData -> Name } ' /><p>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 " ,
new Tab ( " Gallery Options " ,
new TextField ( " Content " , " Caption " )
)
);
}
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 " ,
new Tab ( " Gallery Options " ,
new TextField ( " Content " , " Caption " ),
new TextField ( 'PopupWidth' , 'Popup Width' ),
new TextField ( 'PopupHeight' , 'Popup Height' ),
new HeaderField ( 'SWF File Options' ),
2007-10-02 07:12:33 +02:00
new CheckboxField ( 'Embed' , 'Is A Flash Document' ),
2007-09-20 06:06:50 +02:00
new CheckboxField ( 'LimitDimensions' , 'Limit The Dimensions In The Popup Window' )
)
);
}
else {
$detailFormFields -> addFieldToTab ( " BottomRoot " ,
new Tab ( " Gallery Options " ,
new TextField ( " Content " , " Caption " ),
new TextField ( 'PopupWidth' , 'Popup Width' ),
new TextField ( 'PopupHeight' , 'Popup Height' )
)
);
}
}
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
?>