/** * Updates the CMS fields adding the fields defined in this extension * @param {FieldList} $fields Field List that new fields will be added to */ public function updateCMSFields(FieldList $fields) { $kapostRefID = $this->owner->KapostRefID; if (!empty($kapostRefID)) { if (CMSPageEditController::has_extension('KapostPageEditControllerExtension')) { $messageContent = _t('KapostSiteTreeExtension.KAPOST_CONTENT_WARNING_RO', '_This Page\'s content is being populated by Kapost, some fields are not editable.'); } else { $messageContent = _t('KapostSiteTreeExtension.KAPOST_CONTENT_WARNING', '_This Page\'s content is being populated by Kapost.'); } //Edit in kapost link $kapostBase = KapostAdmin::config()->kapost_base_url; if (!empty($kapostBase)) { $messageContent .= ' <a href="' . Controller::join_links($kapostBase, 'posts', $kapostRefID) . '" target="_blank">' . _t('KapostSiteTreeExtension.KAPOST_CONTENT_EDIT_LABEL', '_Click here to edit in Kapost') . '</a>'; } $fields->insertBefore(new LiteralField('KapostContentWarning', '<div class="message warning">' . $messageContent . '</div>'), 'Title'); //Detect Incoming Changes if (Permission::check('CMS_ACCESS_KapostAdmin')) { $incoming = KapostObject::get()->filter('IsKapostPreview', 0)->filter('KapostRefID', Convert::raw2sql($kapostRefID)); if ($incoming->count() >= 1) { $link = Controller::join_links(AdminRootController::config()->url_base, KapostAdmin::config()->url_segment, 'KapostObject/EditForm/field/KapostObject/item', $incoming->first()->ID, 'edit'); $messageContent = _t('KapostSiteTreeExtension.KAPOST_INCOMING', '_There are incoming changes from Kapost waiting for this page.') . ' ' . '<a href="' . $link . '" class="cms-panel-link">' . _t('KapostSiteTreeExtension.KAPOST_INCOMING_VIEW', '_Click here to view the changes') . '</a>'; $fields->insertBefore(new LiteralField('KapostIncomingWarning', '<div class="message warning">' . $messageContent . '</div>'), 'Title'); } } } $fields->removeByName('KapostRefID'); }
function testSavePageInCMS() { $adminUser = $this->objFromFixture('Member', 'admin'); $enPage = $this->objFromFixture('Page', 'testpage_en'); $group = new Group(); $group->Title = 'Example Group'; $group->write(); $frPage = $enPage->createTranslation('fr_FR'); $frPage->write(); $adminUser->logIn(); $cmsMain = new CMSPageEditController(); $origLocale = Translatable::get_current_locale(); Translatable::set_current_locale('fr_FR'); $form = $cmsMain->getEditForm($frPage->ID); $form->loadDataFrom(array('Title' => 'Translated')); $form->saveInto($frPage); $frPage->write(); $this->assertEquals('Translated', $frPage->Title); $adminUser->logOut(); Translatable::set_current_locale($origLocale); }
function show($request) { $c = new CMSPageEditController(); return $this->redirect(Controller::join_links($c->Link('show'), $request->param('ID'))); }