1
+ <?php
2
+ class ObjectImagesExtension extends DataExtension {
3
+
4
+ private static $ db = array (
5
+ 'Sorter ' => 'Enum("SortOrder, Title, Name, ID") '
6
+ );
7
+
8
+ private static $ many_many = array (
9
+ 'Images ' => 'Image '
10
+ );
11
+
12
+ private static $ many_many_extraFields = array (
13
+ 'Images ' => array ('SortOrder ' => 'Int ' )
14
+ );
15
+
16
+ public function updateCMSFields (FieldList $ fields ) {
17
+ // Use SortableUploadField instead of UploadField!
18
+ $ limit = 20 ;
19
+ $ uploadClass = (class_exists ("SortableUploadField " ) && $ this ->owner ->Sorter == "SortOrder " ) ? "SortableUploadField " : "UploadField " ;
20
+ $ imageField = $ uploadClass ::create ('Images ' , _t ("Object.IMAGESUPLOADLABEL " , "Images " ));
21
+ $ imageField ->setDescription (_t ("Object.IMAGESUPLOADLIMIT " ,"Images count limit: " . $ limit ));
22
+ $ imageField ->setConfig ('allowedMaxFileNumber ' , $ limit );
23
+ $ imageField ->setFolderName ('Uploads/ ' .$ this ->owner ->ClassName .'/ ' .$ this ->owner ->ID );
24
+
25
+ $ dropdownSorter = DropdownField::create ('Sorter ' , _t ("Object.IMAGESSORTER " , "Sort imags by: " ))->setSource ($ this ->owner ->dbObject ('Sorter ' )->enumValues ());
26
+
27
+ if ($ this ->owner ->Sorter == "SortOrder " ) {
28
+ $ message =(class_exists ("SortableUploadField " )) ? _t ("Object.IMAGESUPLOADHEADING " , "<span style='color: green'>Sort images by draging thumbnail</span> " ) : _t ("Object.IMAGESUPLOADHEADINGWRONG " , "<span style='color: red'>Sorting images by draging thumbnails (SortOrder) not allowed. Missing module SortabeUploadField.</span> " );
29
+ } else {
30
+ $ message = _t ("Object.IMAGESSORTERNOTICE " , "Correct image sorting is visible on frontend only (if Sort by = Title, ID, Name) " );
31
+ }
32
+
33
+ $ fields ->addFieldToTab ('Root.Images ' , HeaderField::create ('ImagesNotice ' , $ message )->setHeadingLevel (4 ));
34
+ $ fields ->addFieldToTab ('Root.Images ' , $ dropdownSorter );
35
+ $ fields ->addFieldToTab ('Root.Images ' , $ imageField );
36
+ }
37
+
38
+ public function SortedImages (){
39
+ return $ this ->owner ->Images ()->Sort ($ this ->owner ->Sorter );
40
+ }
41
+
42
+ public function MainImage () {
43
+ return $ this ->owner ->Images ()->Sort ($ this ->owner ->Sorter )->limit (1 )->First ();
44
+ }
45
+
46
+ }
47
+
48
+ // EOF
0 commit comments