Webylon 3.1 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • auth
  • Booking
  • cart
    • shipping
    • steppedcheckout
  • Catalog
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • PhotoAlbumPage
  • PhotoAlbumPage_Controller
  • PhotoGalleryPage
  • PhotoGalleryPage_Controller
  1 <?php
  2 /**
  3  * @package photo_gallery
  4  * @class PhotoGalleryPage - страница фотогалереи
  5  *
  6  * @author menedem, dvp
  7  */
  8 class PhotoGalleryPage extends Page {
  9 
 10     static $icon = "photo_gallery/images/gallery";
 11     static $allowed_children = array( 'PhotoAlbumPage' );
 12     
 13     static $db = array (
 14         'ImagesPerPage' => 'Int',
 15         'CropImages' => 'Boolean',
 16     );
 17     
 18     static $has_many = array (
 19         'Albums' => 'PhotoAlbumPage',
 20         'Items' => 'PhotoAlbumItem',
 21     );
 22     
 23     static $has_one = array (
 24         'Folder' => 'Folder',
 25     );
 26         
 27     static $defaults = array (
 28         'ImagesPerPage' => '20',
 29         'CropImages' => '0',
 30         'AutoChild' => '0',     
 31     );
 32     
 33     //автоматически переходить в альбом, если в галерее только один альбом
 34     static $autoAlbum = true;
 35     
 36     static function setAutoAlbum($data=true) {
 37         self::$autoAlbum = $data;
 38     }
 39     
 40     public function getCMSFields() {
 41         $fields = parent::getCMSFields();   
 42         
 43         $fields->addFieldToTab( 'Root.Content.Main', new NumericField( 'ImagesPerPage', $this->fieldLabel('ImagesPerPage')), 'Content');
 44         $fields->addFieldToTab( 'Root.Content.Main', new CheckboxField('CropImages', $this->fieldLabel('CropImages')), 'Content');
 45         $fields->removeFieldFromTab('Root.Behaviour','AutoChild');
 46         
 47         return $fields;
 48     }
 49     
 50     /**
 51      * Возвращает путь к папке фотогалереи
 52      * 
 53      * @return string
 54      */
 55     function getFolderPath() {
 56         if ($this->FolderID && $this->Folder()->ID) {
 57             return $this->Folder()->Filename;
 58         }
 59         elseif ($this->ID && $folder = $this->createFolder()) {
 60             return $folder->Filename;
 61         }
 62         return false;
 63     }
 64     
 65     /**
 66      * Создает папку фотогалереи
 67      */
 68     function createFolder() {
 69         if (!$this->ID) return false;
 70         $rootFolder = Folder::findOrMake('photo-gallery');
 71         if ($rootFolder->Title != 'Photo Gallery') {
 72             $rootFolder->Title = 'Photo Gallery';
 73             $rootFolder->write();
 74         }
 75         $folder = Folder::findOrMake($rootFolder->Filename . $this->ID);
 76         $folder->Title = $this->Title;
 77         $folder->write();
 78         $this->FolderID = $folder->ID;
 79         //$this->writeWithoutVersion();
 80         $this->writeToStage('Stage');
 81         if ($this->isPublished())
 82             $this->publish('Stage', 'Live');
 83         return $folder;
 84     }
 85 
 86     function onBeforeWrite() {
 87         if (!$this->FolderID) {
 88             $this->createFolder();
 89         }
 90         if ($this->isChanged('Title') && $this->FolderID && $folder = $this->Folder()) {
 91             $folder->Title = $this->Title;
 92             $folder->write();
 93         }
 94         parent::onBeforeWrite();
 95     }
 96     
 97     function onAfterDelete() {      
 98         parent::onAfterDelete();
 99         // Total delete from site
100         if ($this->IsDeletedFromStage && !$this->ExistsOnLive) {
101             $this->Folder()->delete();
102         }
103     }
104 }
105 
106 /**
107  * @package photo_gallery
108  * @class PhotoGalleryPage_Controller - контроллер страницы фотогалереи
109  *
110  * @author menedem, dvp
111  */
112 class PhotoGalleryPage_Controller extends Page_Controller {
113     
114     function index() {
115         if (PhotoGalleryPage::$autoAlbum && $this->AllChildren()->Count() == 1) {//Если в разделе только одна рубрика - то сразу в нее переходим
116             if ($firstChild = $this->AllChildren()->First()) {
117                 return Director::redirect($firstChild->Link());
118             }
119         }
120         return parent::defaultAction('index');
121         
122     }
123     /* Вывод альбомов в обратном порядке */
124     
125     /**
126      * ReverseChildren - возвращает список детей (альбомов) в обратном порядке
127      * 
128      * @return DataObjectSet
129      */
130     function ReverseChildren() {    
131         $children = $this->Children();
132         $children->sort('Sort', 'DESC');
133         return $children;
134     }
135 }
136 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.1 API Docs API documentation generated by ApiGen 2.8.0