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

  • AdditionalMenuWidget_Item
  • AdvancedSliderHomepageWidget_Item
  • AssetManagerFolder
  • BannerWidget_Item
  • BaseObjectDecorator
  • BookingOrder
  • BookingPaymentMethod
  • BookingService
  • Boolean
  • ButtonsBlockHomepageWidget_Item
  • CarouselHomepageWidget_Item
  • CatalogRubricsHomepageWidget_CatalogDecorator
  • ClientEmailOrderNotification
  • ClientVKOrderNotification
  • ComponentSet
  • Currency
  • DatabaseAdmin
  • DataObject
  • DataObjectDecorator
  • DataObjectLog
  • DataObjectSet
  • DataObjectSet_Iterator
  • Date
  • DB
  • DBField
  • Decimal
  • DocumentItem
  • DocumentPage_File
  • Double
  • Enum
  • ErrorPageSubsite
  • FileDataObjectTrackingDecorator
  • FileImportDecorator
  • Float
  • ForeignKey
  • Hierarchy
  • HTMLText
  • HTMLVarchar
  • ImportLog_Item
  • Int
  • ManagerEmailOrderNotification
  • Material3D_File
  • MediawebPage_File
  • MediawebPage_Photo
  • MobileContentDecorator
  • Money
  • MultiEnum
  • MySQLDatabase
  • MySQLQuery
  • OrderDataObject
  • OrderHandlersDecorator
  • OrderItemVariationDecorator
  • OrderService
  • OrderServiceOrder
  • OrdersExportDecorator
  • PageIcon
  • PageWidgets
  • Payment
  • PaymentMethodShippingDecorator
  • PaymentOrderExtension
  • Percentage
  • PhotoAlbumItem
  • PhotoAlbumProductLinkDecorator
  • PhotoAlbumWidgetLinkDecorator
  • PhotoGalleryHomepageWidget_Item
  • PrimaryKey
  • Product3DDecorator
  • ProductCatalogCatalogLinkedDecorator
  • RatePeriod
  • RealtyImportLog
  • RealtyImportLog_Item
  • RedirectEntry
  • RoomOrder
  • RoomOrderPerson
  • RoomRate
  • RoomService
  • RoomServiceOrder
  • SberbankPaymentDecorator
  • SeoOpenGraphPageDecorator
  • ServiceOrder
  • ShippingMethodPaymentDecorator
  • ShopCountry
  • SimpleOrderCatalogDecorator
  • SimpleOrderProductDecorator
  • SiteConfigWidgets
  • SiteTreeDecorator
  • SiteTreeImportDecorator
  • SliderHomepageWidget_Item
  • SMSCOrderNotification
  • SMSOrderNotification
  • SortableDataObject
  • SQLMap
  • SQLMap_Iterator
  • SQLQuery
  • SS_Database
  • SS_Datetime
  • SS_Query
  • StringField
  • SubsiteDomain
  • Text
  • TextAnonsWidget_Item
  • Texture3D_File
  • Time
  • Varchar
  • Versioned
  • Versioned_Version
  • VideoCategory
  • VideoEntry
  • VKNotificationQueue
  • WebylonWidget_Item
  • YaMoneyPaymentDecorator
  • Year

Interfaces

  • CompositeDBField
  • CurrentPageIdentifier
  • DataObjectInterface
  1 <?php
  2 // Расшрение для SiteConfig для определения виджетов сайта (в т.ч. для мультиязыковых сайтов)
  3 class SiteConfigWidgets extends DataObjectDecorator {
  4 
  5     function extraStatics() {
  6         return array(
  7             'has_many' => array(
  8                 'WidgetAreas' => 'WebylonWidgetArea',
  9             )
 10         );
 11     }
 12     
 13     // это только для примера, реальный список WidgetArea задаем в site/_00config.php
 14     private static $widgets_areas = array(
 15         'HomeCentral' => 'HomepageWidgetArea',
 16         'Home2Central' => 'HomepageWidgetArea',
 17         'Home3Central' => 'HomepageWidgetArea',
 18         'HomeLeft' => 'SidebarWidgetArea',
 19         'InnerLeft' => 'SidebarWidgetArea',
 20     );
 21 
 22     public static function get_widget_areas() {
 23         return self::$widgets_areas;
 24     }
 25 
 26     public static function set_widget_areas($areas) {
 27         self::$widgets_areas = $areas;
 28     }
 29 
 30     public static function add_widget_area($techName, $class) {
 31         self::$widgets_areas[$techName] = $class;
 32     }
 33 
 34     public static function del_widget_area($techName) {
 35         unset(self::$widgets_areas[$techName]);
 36     }
 37     
 38     /**
 39      * список виджетов, разрешенных для конкртеной области
 40      * например:
 41      *  array(
 42      *      'HomeCentral' => array(
 43      *          'NewsHomepageWidget', 'SliderHomepageWidget'
 44      *      )
 45      *  )   
 46      *
 47      */     
 48     private static $allowed_area_widgets = array();
 49     
 50     public static function set_allowed_area_widgets($widgets) {
 51         // чтобы можно было передавать по одной области
 52         self::$allowed_area_widgets = array_merge(self::$allowed_area_widgets, $widgets);
 53     }
 54     
 55     /**
 56      * Возвращает список виджетов разрешенных для области
 57      * 
 58      * @param mixed $area - область или ее имя
 59      * 
 60      * @return array - список разрешенных виджетов
 61      */
 62     public static function get_allowed_area_widgets($area = false) {
 63 
 64         // нет параметра - возвращаем для всех (как раньше)
 65         if (!$area) 
 66             return self::$allowed_area_widgets;
 67 
 68         // передан объект
 69         if (is_a($area , 'WebylonWidgetArea')) {
 70             $res = isset(self::$allowed_area_widgets[$area->TechName]) ? self::$allowed_area_widgets[$area->TechName] : array();
 71         } 
 72         else {
 73             // считаем что строка
 74             $res = isset(self::$allowed_area_widgets[$area]) ? self::$allowed_area_widgets[$area] : array();
 75         }
 76         return (is_array($res)) ? $res : array($res);
 77     }
 78     
 79     // области виджетов, которые нельзя редактировать (readonly)
 80     private static $readonly_widget_areas = array();
 81     
 82     public static function set_readonly_widget_areas($areas) {
 83         self::$readonly_widget_areas = $areas;
 84     }
 85     
 86     public static function get_readonly_widget_areas() {
 87         return self::$readonly_widget_areas;
 88     }
 89     
 90     public static function is_area_readonly($name) {        
 91         return (array_search($name, self::$readonly_widget_areas) !== false);
 92     }
 93     
 94     function requireDefaultRecords() {
 95         $siteConfigs = DataObject::get('SiteConfig');       
 96         if(!$siteConfigs) {
 97             SiteConfig::make_site_config();
 98             DB::alteration_message("Added default site config","created");
 99             $siteConfigs = DataObject::get('SiteConfig');
100         }
101         foreach($siteConfigs as $siteConfig) {
102             if ($currentAreas = DataObject::get('WebylonWidgetArea', "SiteConfigID = {$siteConfig->ID}")) {
103                 $currentAreasIDs = $currentAreas->map('ID', 'ID');
104             } else {
105                 $currentAreas = new DataObjectSet();
106                 $currentAreasIDs = array();
107             }
108             if (self::get_widget_areas()) {
109                 $sort = 1;
110                 foreach (self::get_widget_areas() as $name => $type) {
111                     $area = $currentAreas->find('TechName', $name); //DataObject::get_one('WebylonWidgetArea', "SiteConfigID = {$this->owner->ID} AND TechName = '{$name}'");
112                     if (!$area) {
113                         $area = new $type();
114                         $area->TechName = $name;
115                         $area->SiteConfigID = $siteConfig->ID;
116                         $area->Sort = $sort;
117                         $area->write();
118                         DB::alteration_message("Область {$area->TechName} создана","created");
119                     }
120                     $area->Active = 1;
121                     $area->write();
122                     //DB::alteration_message("Область {$area->TechName} включена","created");
123                     unset($currentAreasIDs[$area->ID]);
124                     $sort++;
125                 }
126             }
127             if (count($currentAreasIDs)) {
128                 foreach($currentAreasIDs as $currentAreasID) {
129                     if ($area = DataObject::get_by_id('WebylonWidgetArea', $currentAreasID)) {
130                         $area->Active = 0;
131                         $area->write();
132                         DB::alteration_message("Область {$area->TechName} выключена","created");
133                     }
134                 }
135             }
136         }
137     }
138     
139     function getActiveWidgetAreas() {
140         return $this->owner->WidgetAreas('Active = 1', "ID");
141     }
142     
143     // конкретная WA
144     function WidgetArea($techName) {
145         return DataObject::get_one('WebylonWidgetArea', "SiteConfigID = {$this->owner->ID} and TechName='" . Convert::raw2sql($techName) . "'");
146     }
147 
148     // в шаблонах нужны сами виджеты
149     function getAreaWidgets($techName, $all=false) {        
150         if (!$area = $this->WidgetArea($techName)) return false;        
151         return ($all) ? $area->Widgets() : $area->ActiveWidgets();
152     }
153 }
[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