<?php class AssetTableField extends ComplexTableField { protected $folder; protected $template = "AssetTableField"; protected $permissions = array( "edit", "delete", //"export", ); 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; } 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() { if($this->folder) return $this->folder->ID; } 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", new TextField("Title", _t('AssetTableField.TITLE','Title')), new TextField("Name", _t('AssetTableField.FILENAME','Filename')), new LiteralField("AbsoluteURL", $urlLink), 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')) ) ) ); if(is_a($childData,'Image')) { $big = $childData->URL; $thumbnail = $childData->getFormattedImage('AssetLibraryPreview')->URL; $detailFormFields->addFieldToTab("BottomRoot.Main", new ReadonlyField("Dimensions", _t('AssetTableField.DIM','Dimensions')), "Created" ); $detailFormFields->addFieldToTab("BottomRoot", new Tab("Image", new LiteralField("ImageFull", '<a id="ImageEditorActivator" href="javascript: void(0)">' . "<img id='thumbnailImage' src='{$thumbnail}?r=" . rand(1,100000) . "' alt='{$childData->Name}' />" . '</a>' . '<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>' ) ), 'Main' ); if(class_exists('GalleryFile')) { $detailFormFields->addFieldToTab("BottomRoot", new Tab("Gallery Options", new TextField( "Content", "Caption" ) ) ); } } else if (class_exists('GalleryFile')) { 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' ), new CheckboxField( 'Embed', 'Is A Flash Document' ), 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' ) ) ); } } 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>"; } $backlinks = "<div style=\"clear:left\">". _t('AssetTableField.PAGESLINKING','The following pages link to this file:') ."<ul>" . implode("",$backlinks) . "</ul>"; } if(!isset($backlinks)) $backlinks = "<p>". _t('AssetTableField.NOLINKS',"This file hasn't been linked to from any pages.") ."</p>"; $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; } } ?>