public function Field($properties = array())
 {
     // Load TinyMCE if needed
     if (isset(self::$scenarios[$this->scenario]['fields'])) {
         $fields = self::$scenarios[$this->scenario]['fields'];
         foreach ($fields as $field) {
             if (isset($field['type']) && $field['type'] == 'htmleditor') {
                 HtmlEditorField::include_js();
                 break;
             }
         }
     }
     // Assets
     Requirements::css(SimpleListFieldDir . '/forms/SimpleListField/css/SimpleListField.css');
     Requirements::javascript(SimpleListFieldDir . '/forms/SimpleListField/js/jquery.serializejson.min.js');
     Requirements::javascript(SimpleListFieldDir . '/forms/SimpleListField/js/SimpleListField.js');
     // Set attributes
     $this->setAttribute('type', 'hidden');
     $this->addExtraClass('hide');
     if ($this->scenario) {
         $this->setAttribute('data-scenario', (string) $this->scenario);
         // heading
         if (isset(self::$scenarios[$this->scenario]['heading']) && !self::$scenarios[$this->scenario]['heading']) {
             $this->setAttribute('data-heading', 0);
         } else {
             $this->setAttribute('data-heading', 1);
         }
         // fields
         if (isset(self::$scenarios[$this->scenario]['fields']) && self::$scenarios[$this->scenario]['fields'] && is_array(self::$scenarios[$this->scenario]['fields'])) {
             $this->setAttribute('data-fields', json_encode(self::$scenarios[$this->scenario]['fields']));
         }
     }
     // Render the fields
     return $this->customise($properties)->renderWith($this->getTemplates());
 }
Example #2
0
 public function init()
 {
     // set reading lang
     if (Object::has_extension('SiteTree', 'Translatable') && !$this->isAjax()) {
         Translatable::choose_site_locale(array_keys(Translatable::get_existing_content_languages('SiteTree')));
     }
     parent::init();
     Requirements::javascript(CMS_DIR . '/javascript/CMSMain.js');
     Requirements::javascript(CMS_DIR . '/javascript/CMSMain.EditForm.js');
     Requirements::javascript(CMS_DIR . '/javascript/CMSMain.AddForm.js');
     Requirements::add_i18n_javascript(CMS_DIR . '/javascript/lang');
     Requirements::css(CMS_DIR . '/css/CMSMain.css');
     // navigator
     // Requirements::css(CMS_DIR . '/css/SilverStripeNavigator.css');
     Requirements::javascript(CMS_DIR . '/javascript/SilverStripeNavigator.js');
     Requirements::combine_files('cmsmain.js', array(CMS_DIR . '/javascript/CMSMain.js', CMS_DIR . '/javascript/CMSMain.EditForm.js', CMS_DIR . '/javascript/CMSMain.AddForm.js', CMS_DIR . '/javascript/SilverStripeNavigator.js'));
     HtmlEditorField::include_js();
     CMSBatchActionHandler::register('publish', 'CMSBatchAction_Publish');
     CMSBatchActionHandler::register('unpublish', 'CMSBatchAction_Unpublish');
     CMSBatchActionHandler::register('delete', 'CMSBatchAction_Delete');
     CMSBatchActionHandler::register('deletefromlive', 'CMSBatchAction_DeleteFromLive');
 }
 /**
  * Return the edit form
  * @see cms/code/LeftAndMain#EditForm()
  */
 public function EditForm($request = null)
 {
     HtmlEditorField::include_js();
     $cur = $this->getCurrentPageID();
     if ($cur) {
         $record = $this->currentPage();
         if (!$record) {
             return false;
         }
         if ($record && !$record->canView()) {
             return Security::permissionFailure($this);
         }
     }
     if ($this->hasMethod('getEditForm')) {
         return $this->getEditForm($this->getCurrentPageID());
     }
     return false;
 }
Example #4
0
 /**
  * Calls {@link SiteTree->getCMSFields()}
  */
 public function getEditForm($id = null)
 {
     // Include JavaScript to ensure HtmlEditorField works.
     HtmlEditorField::include_js();
     $form = parent::getEditForm($id);
     // TODO Duplicate record fetching (see parent implementation)
     if (!$id) {
         $id = $this->currentPageID();
     }
     $record = $id && $id != "root" ? $this->getRecord($id) : null;
     $fields = $form->Fields();
     $actions = $form->Actions();
     if ($record) {
         $fields->push($idField = new HiddenField("ID", false, $id));
         // Necessary for different subsites
         $fields->push($liveURLField = new HiddenField("AbsoluteLink", false, $record->AbsoluteLink()));
         $fields->push($liveURLField = new HiddenField("LiveURLSegment"));
         $fields->push($stageURLField = new HiddenField("StageURLSegment"));
         $fields->push(new HiddenField("TreeTitle", false, $record->TreeTitle));
         $fields->push(new HiddenField('Sort', '', $record->Sort));
         if ($record->ID && is_numeric($record->ID)) {
             $liveRecord = Versioned::get_one_by_stage('SiteTree', 'Live', "\"SiteTree\".\"ID\" = {$record->ID}");
             if ($liveRecord) {
                 $liveURLField->setValue($liveRecord->AbsoluteLink());
             }
         }
         if (!$record->IsDeletedFromStage) {
             $stageURLField->setValue($record->AbsoluteLink());
         }
         // getAllCMSActions can be used to completely redefine the action list
         if ($record->hasMethod('getAllCMSActions')) {
             $actions = $record->getAllCMSActions();
         } else {
             $actions = $record->getCMSActions();
         }
         // Add a default or custom validator.
         // @todo Currently the default Validator.js implementation
         //  adds javascript to the document body, meaning it won't
         //  be included properly if the associated fields are loaded
         //  through ajax. This means only serverside validation
         //  will kick in for pages+validation loaded through ajax.
         //  This will be solved by using less obtrusive javascript validation
         //  in the future, see http://open.silverstripe.com/ticket/2915 and http://open.silverstripe.com/ticket/3386
         if ($record->hasMethod('getCMSValidator')) {
             $validator = $record->getCMSValidator();
         } else {
             $validator = new RequiredFields();
         }
         // The clientside (mainly LeftAndMain*.js) rely on ajax responses
         // which can be evaluated as javascript, hence we need
         // to override any global changes to the validation handler.
         $validator->setJavascriptValidationHandler('prototype');
         $form = new Form($this, "EditForm", $fields, $actions, $validator);
         $form->loadDataFrom($record);
         $form->disableDefaultAction();
         if (!$record->canEdit() || $record->IsDeletedFromStage) {
             $readonlyFields = $form->Fields()->makeReadonly();
             $form->setFields($readonlyFields);
         }
         $this->extend('updateEditForm', $form);
         return $form;
     }
     if ($id == 0 || $id == 'root') {
         return $this->RootForm();
     } else {
         if ($id) {
             return new Form($this, "EditForm", new FieldSet(new LabelField('PageDoesntExistLabel', _t('CMSMain.PAGENOTEXISTS', "This page doesn't exist"))), new FieldSet());
         }
     }
 }
 /**
  * Action handler for editing this wiki page
  * 
  * Creates a form that's used for editing the page's content, 
  * as well as adding in a couple of additional toolbar actions
  * for adding a simple link and a simple image
  */
 public function edit()
 {
     HtmlEditorField::include_js();
     //		Requirements::javascript('simplewiki/javascript/sslinks/editor_plugin_src.js');
     $existing = $this->getEditingLocks($this->data(), true);
     // oops, we've somehow got here even though we shouldn't have
     if ($existing && $existing['user'] != Member::currentUser()->Email) {
         return $this->redirect($this->data()->Link());
     }
     if (!$this->data()->canEdit()) {
         return Security::permissionFailure($this);
     }
     $this->form = $this->EditForm();
     // check who's editing and whether or not we should bail out
     return $this->renderWith(array('WikiPage', 'Page'));
 }
 /**
  * Calls {@link SiteTree->getCMSFields()}
  */
 public function getEditForm($id = null)
 {
     // Include JavaScript to ensure HtmlEditorField works.
     HtmlEditorField::include_js();
     $form = parent::getEditForm($id);
     // TODO Duplicate record fetching (see parent implementation)
     if (!$id) {
         $id = $this->currentPageID();
     }
     $record = $id && $id != "root" ? $this->getRecord($id) : null;
     $fields = $form->Fields();
     $actions = $form->Actions();
     if ($record) {
         $fields->push($idField = new HiddenField("ID", false, $id));
         // Necessary for different subsites
         $fields->push($liveURLField = new HiddenField("AbsoluteLink", false, $record->AbsoluteLink()));
         $fields->push($liveURLField = new HiddenField("LiveURLSegment"));
         $fields->push($stageURLField = new HiddenField("StageURLSegment"));
         $fields->push(new HiddenField("TreeTitle", false, $record->TreeTitle));
         $fields->push(new HiddenField('Sort', '', $record->Sort));
         if ($record->ID && is_numeric($record->ID)) {
             $liveRecord = Versioned::get_one_by_stage('SiteTree', 'Live', "\"SiteTree\".\"ID\" = {$record->ID}");
             if ($liveRecord) {
                 $liveURLField->setValue($liveRecord->AbsoluteLink());
             }
         }
         if (!$record->IsDeletedFromStage) {
             $stageURLField->setValue($record->AbsoluteLink());
         }
         $deleteAction = new FormAction('delete', _t('CMSMain.DELETE', 'Delete from the draft site'));
         $deleteAction->addExtraClass('delete');
         $actions->insertBefore($deleteAction, 'action_save');
         if ($record->IsDeletedFromStage) {
             $form->makeReadonly();
         }
     } elseif ($id == 0) {
         $siteConfig = SiteConfig::current_site_config();
         $fields = $siteConfig->getCMSFields();
         if (Object::has_extension('SiteConfig', "Translatable")) {
             $fields->push(new HiddenField('Locale', '', $siteConfig->Locale));
         }
         $form = new Form($this, "EditForm", $fields, $siteConfig->getCMSActions());
         $form->loadDataFrom($siteConfig);
         return $form;
     } else {
         $form = $this->EmptyForm();
     }
     return $form;
 }
Example #7
0
 public function EditForm()
 {
     // Include JavaScript to ensure HtmlEditorField works.
     HtmlEditorField::include_js();
     if ($this->currentPageID() != 0) {
         $record = $this->currentPage();
         if (!$record) {
             return false;
         }
         if ($record && !$record->canView()) {
             return Security::permissionFailure($this);
         }
     }
     if ($this->hasMethod('getEditForm')) {
         return $this->getEditForm($this->currentPageID());
     }
     return false;
 }
 public function private_cloud()
 {
     Requirements::javascript('marketplace/code/ui/admin/js/utils.js');
     Requirements::javascript('marketplace/code/ui/admin/js/jquery.text.area.counter.js');
     Requirements::javascript('marketplace/code/ui/admin/js/hypervisors.js');
     Requirements::javascript('marketplace/code/ui/admin/js/guest.os.js');
     Requirements::javascript('marketplace/code/ui/admin/js/components.js');
     Requirements::javascript('marketplace/code/ui/admin/js/videos.js');
     Requirements::javascript('marketplace/code/ui/admin/js/support.channels.js');
     Requirements::javascript('marketplace/code/ui/admin/js/additional.resources.js');
     Requirements::javascript('marketplace/code/ui/admin/js/pricing.schemas.js');
     Requirements::javascript('marketplace/code/ui/admin/js/datacenter.locations.js');
     Requirements::javascript('marketplace/code/ui/admin/js/marketplace.type.header.js');
     Requirements::javascript('marketplace/code/ui/admin/js/implementation_openstack_powered.js');
     Requirements::javascript(Director::protocol() . "maps.googleapis.com/maps/api/js?sensor=false");
     Requirements::javascript('marketplace/code/ui/admin/js/geocoding.jquery.js');
     HtmlEditorField::include_js();
     Requirements::javascript('marketplace/code/ui/admin/js/private_cloud.js');
     return $this->getViewer('private_cloud')->process($this);
 }
 /**
  * Get the EditForm
  */
 public function EditForm()
 {
     // Include JavaScript to ensure HtmlEditorField works.
     HtmlEditorField::include_js();
     if (isset($_REQUEST['ID']) && isset($_REQUEST['Type']) && $_REQUEST['Type'] == 'Newsletter' || isset($_REQUEST['action_savenewsletter'])) {
         $form = $this->NewsletterEditForm();
     } else {
         // If a mailing list member is being added to a group, then call the Recipient form
         if (isset($_REQUEST['fieldName']) && 'Recipients' == $_REQUEST['fieldName'] || !empty($_REQUEST['MemberSearch'])) {
             $form = $this->MailingListEditForm();
         } else {
             $form = $this->TypeEditForm();
         }
     }
     if ($form) {
         $form->disableDefaultAction();
     }
     return $form;
 }