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  *
  5  * @package auth
  6  * @author inxo, dvp
  7  */
  8 class ProfilePage extends Page {
  9 
 10     static $icon = "auth/img/user";
 11     static $allowed_children = 'none';
 12 
 13     static $default = array(
 14         'URLSegment' => 'profile',
 15         'AutoChild' => 0,
 16     );
 17 
 18     static function find_link($action = '') {
 19         if (!$page = DataObject::get_one('ProfilePage')) {
 20             user_error('Создайте страницу "Личный кабинет"', E_USER_ERROR);
 21         }
 22 
 23         return $page->Link($action);
 24     }
 25 
 26     function getCMSFields() {
 27         $fields = parent::getCMSFields();
 28         $fields->removeByName('AutoChild'); // Удалим переход к нижним элементам
 29         return $fields;
 30     }
 31 
 32     function canCreate($member = false) {
 33         if (DataObject::get_one('ProfilePage')) return false;
 34         if (!Director::isDev()) return false;
 35         return parent::canCreate($member);
 36     }
 37 
 38     function canDelete() {
 39         return Director::isDev();
 40     }
 41 }
 42 
 43 class ProfilePage_Controller extends Page_Controller {
 44 
 45     static $allowed_actions = array('index', 'edit', 'EditProfileForm');
 46 
 47     function init() {       
 48         parent::init();     
 49         if (!Member::currentUserID()) {
 50             return Security::permissionFailure($this);          
 51         }
 52     }
 53 
 54     /**
 55      * Возвращает локальное меню для личного кабинета
 56      * возможно расширение на сайте с помощью updateUserMenu(array &$items)
 57      * @TODO выделять текущий пункт меню
 58      *
 59      * @return DataObjectSet - список пунктов меню с полями Link Title
 60      */
 61     function UserMenu($current = false) {
 62         $items = array(
 63             array(
 64                 'Link' => $this->Link(),
 65                 'Title' => _t('ProfilePage.MenuProfile', 'My Profile'),
 66             ),
 67             array(
 68                 'Link' => $this->Link('edit'),
 69                 'Title' => _t('ProfilePage.MenuEdit', 'My Profile'),
 70             ),
 71 /*
 72             array(
 73                 'Link' => Security::Link('changepassword'),
 74                 'Title' => _t('ProfilePage.MenuPassword', 'Change Password'),
 75             )
 76 */
 77         );
 78 
 79         $this->extend('updateUserMenu', $items);
 80 
 81         //Определение текущего action
 82         if (!$current)
 83             $current = $this->getAction();  
 84 
 85         foreach ($items as &$item) {        
 86             $link = $item['Link'];
 87             if (strpos($item['Link'], '?') > 0) {
 88                 $link = substr($link, 0, strpos($link, '?'));
 89             }
 90             $action = trim(substr($link, strrpos($link, '/') + 1));
 91             if (!$action) $action = 'index';
 92             $item['IsCurrent'] = ($current == $action) ? 1 : 0;
 93             $item['LinkOrCurrent'] = ($current == $action) ? 'current' : 'link';
 94             $item['LinkingMode'] = ($current == $action) ? 'current' : 'link';
 95         }   
 96 
 97         return new DataObjectSet($items);
 98     }
 99 
100     /**
101      * Редактирование профиля
102      */
103     function edit() {
104         if (!$form = $this->EditProfileForm())
105             $form = '<p class="error message">' . _t('UserProfile.WRONGPERMISSION', 'You don\'t have the permission to edit that member.') . '</p>';
106 
107         return array(
108             "Title" => _t('ProfilePage.TitleEdit', 'Edit Profile'),
109             "Form" => $form,
110         );
111     }
112 
113     /**
114      * Форма редактирование профиля пользователя
115      * Список полей получает от Member
116      *
117      * @return Form
118      */
119     function EditProfileForm() {
120         $member = Member::currentUser();
121         $fields = $member->getMemberFormFields();
122         $fields->push(new HiddenField('ID', 'ID', $member->ID));
123         if ($member && $member->hasMethod('canEdit') && $member->canEdit()) {
124             $form = new Form(
125                 $this,
126                 'EditProfileForm',
127                 $fields,
128                 new FieldSet(new FormAction("saveprofile", _t('ProfilePage.SaveProfile', 'Save'))),
129                 $member->getValidator()
130             );
131             $this->extend('updateEditProfileForm', $form);
132             $form->loadDataFrom($member);
133             return $form;
134         }
135         return null;
136     }
137 
138     /**
139      * Сохраняет изменения в профиле пользователя
140      * Вызывается из формы EditProfileForm
141      *
142      * @param array $data - данные формы
143      * @param Form $form  - объект EditProfileForm
144      */
145     function saveprofile($data, $form) {
146         $member = Member::currentUser();
147         $form->saveInto($member);
148         $member->write();
149         $backURL = Session::get('BackURL');
150         if ($backURL) {
151             Director::redirect($backURL);
152         } else {
153             Director::redirect($this->Link());
154         }
155     }
156 
157 }
158 
[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