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

  • Announcement_Controller
  • AnnouncementHolder_Controller
  • BookingAdminPage_Controller
  • BookingPage_Controller
  • Cart_Controller
  • CartPage_Controller
  • Catalog_Controller
  • CheckoutPage_Controller
  • ChequePayment_Handler
  • ContactsPage_Controller
  • ContentController
  • ContentNegotiator
  • Controller
  • DataObjectManager_Controller
  • DatePickerField_Controller
  • Director
  • DocPage_Controller
  • DocumentsPage_Controller
  • Event_Controller
  • EventHolder_Controller
  • FileDataObjectManager_Controller
  • FindCyrillic_Controller
  • HomePage_Controller
  • LastDoc_Controller
  • LiveCalendarWidget_Controller
  • MapObject_Controller
  • MapObjectGroup_Controller
  • MapPage_Controller
  • MediawebPage_Controller
  • ModelAsController
  • MultiUploadControls
  • NewsArchive
  • Orders1CExchange_Controller
  • Page_Controller
  • Payment_Handler
  • PhotoAlbumManager_Controller
  • Product_Controller
  • ProductSearchPage_Controller
  • ProfilePage_Controller
  • PublHolder_Controller
  • Publication_Controller
  • RatingExtension_Controller
  • RegistrationPage_Controller
  • RemoveOrphanedPagesTask
  • RequestHandler
  • Room_Controller
  • RoomCatalog_Controller
  • RootURLController
  • SapphireInfo
  • Search_Controller
  • Session
  • SimpleOrderPage_Controller
  • SiteMap_Controller
  • SpecialCatalog_Controller
  • SS_HTTPRequest
  • SS_HTTPResponse
  • StartCatalog_Controller
  • SubsitesSelectorPage_Controller
  • VideoBankPage_Controller

Interfaces

  • NestedController

Exceptions

  • SS_HTTPResponse_Exception
  1 <?php
  2 
  3 /**
  4  * Description of AnnouncementHolder
  5  *
  6  * @author inxo
  7  */
  8 class AnnouncementHolder extends Page {
  9     
 10     static $icon = "anons/img/anonsholder";
 11     
 12     static $db = array(
 13         'ShowTypeBlock' => 'Int', // Показ анонсов, 1 - последние, 2 - случайные 3 - все
 14         'ShowTypePage' => 'Int', // Показ анонсов, 1 - последние, 2 - случайные 3 - все
 15         'PerBlock' => 'Int', // Число анонсов в блоке
 16         'PerPage' => 'Int', // Число анонсов на странице
 17         'Template' => 'Text' // шаблон для вывода страницы с анонсами
 18     );
 19     
 20     static $defaults = array(
 21         'ShowTypeBlock' => 1,
 22         'ShowTypePage' => 1,
 23         'PerBlock' => 3,
 24         'PerPage' => 20,
 25         'AutoChild' => 0,
 26         'ShowInMenus' => 0,
 27         'ShowInSearch' => 0,
 28         'ShowInSiteMap' => 0,
 29         'DevEditType' => 'Fixed',
 30     );
 31 
 32     static $subpage_children = 'Announcement';
 33 
 34     static $allowed_children = array('Announcement');
 35     
 36     /**
 37      * максимальная ширина слайдера
 38      * 
 39      * @staticvar int 
 40      */
 41     static $max_slider_width = 1920;
 42 
 43     /**
 44      * список id AnnouncementHolder для баннеров
 45      * 
 46      * @staticvar array
 47      */
 48     static $slider_holder_ids = array();
 49     
 50     /**
 51      * Задает максимальную ширину слайдера
 52      * 
 53      * @param int $val новая ширина
 54      */
 55     static function set_max_slider_width($val) {
 56         self::$max_slider_width = $val;
 57     }
 58     
 59     /**
 60      * Задает список id для папок слайдеров
 61      * 
 62      * @param mixed $val - один id или массив с id
 63      */
 64     static function set_slider_holder_ids($val) {
 65         self::$slider_holder_ids = (is_array($val)) ? $val : array($val);
 66     }
 67     
 68     /**
 69      * Проверяет - не папка ли слайдера
 70      * 
 71      * @param int $id id AnnouncementHolder
 72      * @return bool
 73      */
 74     static function is_slider_holder($id) {
 75         return (array_search($id, self::$slider_holder_ids) !== false);
 76     }
 77 
 78     function getCMSFields() {
 79         $fields = parent::getCMSFields();
 80         $fields->removeFieldFromTab('Root.Content.Main', 'Content');
 81         $fields->addFieldToTab('Root.Content.Main', new HeaderField('hdrBlock', _t('AnnouncementHolder.hdrBlock', 'Block Settings')));
 82         $fields->addFieldToTab('Root.Content.Main',
 83                 new OptionsetField('ShowTypeBlock', $this->fieldLabel('ShowTypeBlock'), array(
 84                     1 => _t('AnnouncementHolder.BLOCKTYPE_LAST', "Last N"),
 85                     2 => _t('AnnouncementHolder.BLOCKTYPE_RANDOM', "Random N"),
 86                     3 => _t('AnnouncementHolder.BLOCKTYPE_ALL', "All")
 87                 ))
 88         );
 89         $fields->addFieldToTab('Root.Content.Main', $f = new NumericField("PerBlock", _t('AnnouncementHolder.PERBLOCK', "Announcement per block")));
 90 
 91         $fields->addFieldToTab('Root.Content.Main', new HeaderField('hdrPage', _t('AnnouncementHolder.hdrPage', 'Page Settings')));
 92         $fields->addFieldToTab('Root.Content.Main',
 93                 new OptionsetField('ShowTypePage', $this->fieldLabel('ShowTypePage'), array(
 94                     1 => _t('AnnouncementHolder.PAGETYPE_LAST', "Date desc"),
 95                     3 => _t('AnnouncementHolder.PAGETYPE_ALL', "Manual")
 96                 ))
 97         );
 98         $fields->addFieldToTab('Root.Content.Main', new NumericField("PerPage", _t('AnnouncementHolder.PERPAGE', "Announcement per page")));
 99 
100         if (Director::isDev())
101             $fields->addFieldToTab('Root.Content.Main', new TextField("Template", _t('AnnouncementHolder.TEMPLATE', "Template")));
102 
103         $fields->addFieldToTab('Root.Content', new Tab('tabSubPages', _t('AnnouncementHolder.TABLABEL', "Announcements")), 'Metadata');
104 //        $fields->findOrMakeTab('Root.Content.Announcement', $this->fieldLabel(_t('AnnouncementHolder.TABLABEL', "Announcements")));
105 
106         // Вкладка для анонсов
107         $subClass = 'Announcement';
108         $sp = new SubpageListField('Subpages', $this, $subClass);
109         $sp->Sortable = true;
110         $url = '<a href=\"admin/show/$ID\">$value</a>';
111         $sp->setFieldFormatting(array_combine(array_keys(singleton($subClass)->summaryFields()), array_fill(0, count(singleton($subClass)->summaryFields()), $url)));
112         $fields->addFieldToTab('Root.Content.tabSubPages', $sp);
113 
114         $this->extend('hideCMSFields', $fields); // extend для скрытия полей из админки
115         return $fields;
116     }
117 
118     function populateDefaults() {
119         parent::populateDefaults();
120         $this->DevEditType = (Director::isDev()) ? 'Fixed' : 'Open';
121     }
122 
123     public function Entries($start = '', $limit = '') {
124         if ($limit != '') {
125             if ($start != '') {
126                 $limit = "$start,$limit";
127             }
128         }
129 
130         if ($this->ShowTypePage == 1) {
131             $sort = "`Announcement`.Date DESC, `Announcement`.ID DESC";
132         }
133         elseif ($this->ShowTypePage == 2) {
134             $sort = "rand()";
135         }
136         else {
137             $sort = "Sort ";
138         }
139         
140         return DataObject::get("Announcement", "`ParentID` = $this->ID AND `Status` LIKE '%Published%'", $sort, "", "$limit");
141     }
142 
143 }
144 
145 class AnnouncementHolder_Controller extends Page_Controller {
146 
147     public static $url_handlers = array(
148             '$Contoller//$Action' => 'index'
149     );
150 
151     function index() {
152         $start = isset($_GET['start']) ? (int) $_GET['start'] : 0;
153         $limit = intval($this->PerPage);
154         $limit = ($limit > 0) ? $limit : AnnouncementHolder::$defaults['PerPage'];
155 
156         $data = $this->Entries($start, $limit);
157         return ($this->Template) ? $this->renderWith($this->Template, array('Items' => $data)) : $this->render(array('Items' => $data));
158     }
159 
160 }
161 
[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