コード例 #1
0
 public function testAllowsProtocolRelative()
 {
     $noProtocol = new RedirectorPage(array('ExternalURL' => 'mydomain.com'));
     $noProtocol->write();
     $this->assertEquals('http://mydomain.com', $noProtocol->ExternalURL);
     $protocolAbsolute = new RedirectorPage(array('ExternalURL' => 'http://mydomain.com'));
     $protocolAbsolute->write();
     $this->assertEquals('http://mydomain.com', $protocolAbsolute->ExternalURL);
     $protocolRelative = new RedirectorPage(array('ExternalURL' => '//mydomain.com'));
     $protocolRelative->write();
     $this->assertEquals('//mydomain.com', $protocolRelative->ExternalURL);
 }
 public function testRevertToLiveFixesBrokenLinks()
 {
     // Create page and virutal page
     $p = new Page();
     $p->Title = "source";
     $p->write();
     $pageID = $p->ID;
     $this->assertTrue($p->doPublish());
     // Content links are one kind of link to pages
     $p2 = new Page();
     $p2->Title = "regular link";
     $p2->Content = "<a href=\"[sitetree_link,id={$p->ID}]\">test</a>";
     $p2->write();
     $this->assertTrue($p2->doPublish());
     // Virtual pages are another
     $vp = new VirtualPage();
     $vp->CopyContentFromID = $p->ID;
     $vp->write();
     // Redirector links are a third
     $rp = new RedirectorPage();
     $rp->Title = "redirector";
     $rp->LinkType = 'Internal';
     $rp->LinkToID = $p->ID;
     $rp->write();
     $this->assertTrue($rp->doPublish());
     // Confirm that there are no broken links to begin with
     $this->assertFalse($p2->HasBrokenLink);
     $this->assertFalse($vp->HasBrokenLink);
     $this->assertFalse($rp->HasBrokenLink);
     // Delete from draft and confirm that broken links are marked
     $pID = $p->ID;
     $p->delete();
     $vp->flushCache();
     $vp = DataObject::get_by_id('SiteTree', $vp->ID);
     $p2->flushCache();
     $p2 = DataObject::get_by_id('SiteTree', $p2->ID);
     $rp->flushCache();
     $rp = DataObject::get_by_id('SiteTree', $rp->ID);
     $this->assertEquals(1, $p2->HasBrokenLink);
     $this->assertEquals(1, $vp->HasBrokenLink);
     $this->assertEquals(1, $rp->HasBrokenLink);
     // Call doRevertToLive and confirm that broken links are restored
     $pLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $pID);
     $pLive->doRevertToLive();
     $p2->flushCache();
     $p2 = DataObject::get_by_id('SiteTree', $p2->ID);
     $vp->flushCache();
     $vp = DataObject::get_by_id('SiteTree', $vp->ID);
     $rp->flushCache();
     $rp = DataObject::get_by_id('SiteTree', $rp->ID);
     $this->assertFalse((bool) $p2->HasBrokenLink);
     $this->assertFalse((bool) $vp->HasBrokenLink);
     $this->assertFalse((bool) $rp->HasBrokenLink);
 }
コード例 #3
0
 /**
  * Creates the default SiteTree CMS section if not exists
  * 
  * @param SilvercartFrontPage $rootPage SiteTree root page
  * 
  * @return SilvercartFrontPage
  *
  * @author Sebastian Diel <*****@*****.**>
  * @since 21.03.2016
  */
 public function createDefaultSiteTreeCMSSection($rootPage)
 {
     $legalNavigationHolder = new SilvercartMetaNavigationHolder();
     $legalNavigationHolder->Title = _t('SilvercartMetaNavigationHolder.DEFAULT_TITLE_LEGAL');
     $legalNavigationHolder->URLSegment = _t('SilvercartMetaNavigationHolder.DEFAULT_URLSEGMENT_LEGAL', 'legal');
     $legalNavigationHolder->Status = "Published";
     $legalNavigationHolder->ShowInMenus = 0;
     $legalNavigationHolder->IdentifierCode = "SilvercartMetaNavigationHolderLegal";
     $legalNavigationHolder->ParentID = $rootPage->ID;
     $legalNavigationHolder->InheritFromParent = false;
     $legalNavigationHolder->write();
     $legalNavigationHolder->publish("Stage", "Live");
     $serviceNavigationHolder = new SilvercartMetaNavigationHolder();
     $serviceNavigationHolder->Title = _t('SilvercartMetaNavigationHolder.DEFAULT_TITLE_SERVICE');
     $serviceNavigationHolder->URLSegment = _t('SilvercartMetaNavigationHolder.DEFAULT_URLSEGMENT_SERVICE', 'service');
     $serviceNavigationHolder->Status = "Published";
     $serviceNavigationHolder->ShowInMenus = 0;
     $serviceNavigationHolder->IdentifierCode = "SilvercartMetaNavigationHolderService";
     $serviceNavigationHolder->ParentID = $rootPage->ID;
     $serviceNavigationHolder->InheritFromParent = false;
     $serviceNavigationHolder->write();
     $serviceNavigationHolder->publish("Stage", "Live");
     $aboutNavigationHolder = new SilvercartMetaNavigationHolder();
     $aboutNavigationHolder->Title = _t('SilvercartMetaNavigationHolder.DEFAULT_TITLE_ABOUT');
     $aboutNavigationHolder->URLSegment = _t('SilvercartMetaNavigationHolder.DEFAULT_URLSEGMENT_ABOUT', 'about-us');
     $aboutNavigationHolder->Status = "Published";
     $aboutNavigationHolder->ShowInMenus = 0;
     $aboutNavigationHolder->IdentifierCode = "SilvercartMetaNavigationHolderAbout";
     $aboutNavigationHolder->ParentID = $rootPage->ID;
     $aboutNavigationHolder->InheritFromParent = false;
     $aboutNavigationHolder->write();
     $aboutNavigationHolder->publish("Stage", "Live");
     $shopNavigationHolder = new SilvercartMetaNavigationHolder();
     $shopNavigationHolder->Title = _t('SilvercartMetaNavigationHolder.DEFAULT_TITLE_SHOP');
     $shopNavigationHolder->URLSegment = _t('SilvercartMetaNavigationHolder.DEFAULT_URLSEGMENT_SHOP', 'shop-system');
     $shopNavigationHolder->Status = "Published";
     $shopNavigationHolder->ShowInMenus = 0;
     $shopNavigationHolder->IdentifierCode = "SilvercartMetaNavigationHolderShop";
     $shopNavigationHolder->ParentID = $rootPage->ID;
     $shopNavigationHolder->InheritFromParent = false;
     $shopNavigationHolder->write();
     $shopNavigationHolder->publish("Stage", "Live");
     // Sub pages of legal node
     $termsOfServicePage = new SilvercartMetaNavigationPage();
     $termsOfServicePage->Title = _t('TermsOfServicePage.DEFAULT_TITLE', 'terms of service');
     $termsOfServicePage->URLSegment = _t('TermsOfServicePage.DEFAULT_URLSEGMENT', 'terms-of-service');
     $termsOfServicePage->Status = "Published";
     $termsOfServicePage->ShowInMenus = 1;
     $termsOfServicePage->ParentID = $legalNavigationHolder->ID;
     $termsOfServicePage->IdentifierCode = "TermsOfServicePage";
     $termsOfServicePage->write();
     $termsOfServicePage->publish("Stage", "Live");
     $revocationInstructionPage = new RedirectorPage();
     $revocationInstructionPage->RedirectionType = 'Internal';
     $revocationInstructionPage->LinkToID = $termsOfServicePage->ID;
     $revocationInstructionPage->Title = _t('RevocationInstructionPage.DEFAULT_TITLE', 'revocation instruction');
     $revocationInstructionPage->URLSegment = _t('RevocationInstructionPage.DEFAULT_URLSEGMENT', 'revocation-instruction');
     $revocationInstructionPage->Status = "Published";
     $revocationInstructionPage->ShowInMenus = 1;
     $revocationInstructionPage->ParentID = $legalNavigationHolder->ID;
     $revocationInstructionPage->IdentifierCode = "SilvercartRevocationInstructionPage";
     $revocationInstructionPage->write();
     $revocationInstructionPage->publish("Stage", "Live");
     $revocationPage = new SilvercartRevocationFormPage();
     $revocationPage->Title = _t('SilvercartRevocationFormPage.DEFAULT_TITLE', 'Revocation');
     $revocationPage->URLSegment = _t('SilvercartRevocationFormPage.DEFAULT_URLSEGMENT', 'Revocation');
     $revocationPage->Status = "Published";
     $revocationPage->ShowInMenus = 1;
     $revocationPage->IdentifierCode = "SilvercartRevocationFormPage";
     $revocationPage->ParentID = $legalNavigationHolder->ID;
     $revocationPage->write();
     $revocationPage->publish("Stage", "Live");
     $dataPrivacyStatementPage = new SilvercartMetaNavigationPage();
     $dataPrivacyStatementPage->Title = _t('SilvercartDataPrivacyStatementPage.DEFAULT_TITLE', 'data privacy statement');
     $dataPrivacyStatementPage->URLSegment = _t('SilvercartDataPrivacyStatementPage.DEFAULT_URLSEGMENT', 'data-privacy-statement');
     $dataPrivacyStatementPage->Status = "Published";
     $dataPrivacyStatementPage->ShowInMenus = 1;
     $dataPrivacyStatementPage->IdentifierCode = "DataPrivacyStatementPage";
     $dataPrivacyStatementPage->ParentID = $legalNavigationHolder->ID;
     $dataPrivacyStatementPage->write();
     $dataPrivacyStatementPage->publish("Stage", "Live");
     // Sub pages of service node
     $this->createDefaultSiteTreeMyAccountSection($serviceNavigationHolder);
     $paymentMethodsPage = new SilvercartPaymentMethodsPage();
     $paymentMethodsPage->Title = _t('SilvercartPaymentMethodsPage.DEFAULT_TITLE', 'Payment methods');
     $paymentMethodsPage->URLSegment = _t('SilvercartPaymentMethodsPage.DEFAULT_URLSEGMENT', 'payment-methods');
     $paymentMethodsPage->Status = "Published";
     $paymentMethodsPage->ShowInMenus = 1;
     $paymentMethodsPage->ParentID = $serviceNavigationHolder->ID;
     $paymentMethodsPage->IdentifierCode = "SilvercartPaymentMethodsPage";
     $paymentMethodsPage->write();
     $paymentMethodsPage->publish("Stage", "Live");
     $shippingFeesPage = new SilvercartShippingFeesPage();
     $shippingFeesPage->Title = _t('SilvercartShippingFeesPage.DEFAULT_TITLE', 'shipping fees');
     $shippingFeesPage->URLSegment = _t('SilvercartShippingFeesPage.DEFAULT_URLSEGMENT', 'shipping-fees');
     $shippingFeesPage->Status = "Published";
     $shippingFeesPage->ShowInMenus = 1;
     $shippingFeesPage->ParentID = $serviceNavigationHolder->ID;
     $shippingFeesPage->IdentifierCode = "SilvercartShippingFeesPage";
     $shippingFeesPage->write();
     $shippingFeesPage->publish("Stage", "Live");
     $newsletterPage = new SilvercartNewsletterPage();
     $newsletterPage->Title = _t('SilvercartNewsletterPage.DEFAULT_TITLE', 'Newsletter');
     $newsletterPage->URLSegment = _t('SilvercartNewsletterPage.DEFAULT_URLSEGMENT', 'newsletter');
     $newsletterPage->Status = "Published";
     $newsletterPage->ShowInMenus = true;
     $newsletterPage->ShowInSearch = true;
     $newsletterPage->ParentID = $serviceNavigationHolder->ID;
     $newsletterPage->IdentifierCode = "SilvercartNewsletterPage";
     $newsletterPage->write();
     $newsletterPage->publish("Stage", "Live");
     $newsletterResponsePage = new SilvercartNewsletterResponsePage();
     $newsletterResponsePage->Title = _t('SilvercartNewsletterResponsePage.DEFAULT_TITLE', 'Newsletter Status');
     $newsletterResponsePage->URLSegment = _t('SilvercartNewsletterResponsePage.DEFAULT_URLSEGMENT', 'newsletter_status');
     $newsletterResponsePage->Status = "Published";
     $newsletterResponsePage->ShowInMenus = false;
     $newsletterResponsePage->ShowInSearch = false;
     $newsletterResponsePage->ParentID = $newsletterPage->ID;
     $newsletterResponsePage->IdentifierCode = "SilvercartNewsletterResponsePage";
     $newsletterResponsePage->write();
     $newsletterResponsePage->publish("Stage", "Live");
     $newsletterOptInConfirmationPage = new SilvercartNewsletterOptInConfirmationPage();
     $newsletterOptInConfirmationPage->Title = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_TITLE', 'register confirmation page');
     $newsletterOptInConfirmationPage->URLSegment = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_URLSEGMENT', 'register-confirmation');
     $newsletterOptInConfirmationPage->Content = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_CONTENT');
     $newsletterOptInConfirmationPage->ConfirmationFailureMessage = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_CONFIRMATIONFAILUREMESSAGE');
     $newsletterOptInConfirmationPage->ConfirmationSuccessMessage = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_CONFIRMATIONSUCCESSMESSAGE');
     $newsletterOptInConfirmationPage->AlreadyConfirmedMessage = _t('SilvercartNewsletterOptInConfirmationPage.DEFAULT_ALREADYCONFIRMEDMESSAGE');
     $newsletterOptInConfirmationPage->Status = "Published";
     $newsletterOptInConfirmationPage->ParentID = $newsletterPage->ID;
     $newsletterOptInConfirmationPage->ShowInMenus = false;
     $newsletterOptInConfirmationPage->ShowInSearch = false;
     $newsletterOptInConfirmationPage->IdentifierCode = "SilvercartNewsletterOptInConfirmationPage";
     $newsletterOptInConfirmationPage->write();
     $newsletterOptInConfirmationPage->publish("Stage", "Live");
     // Sub pages of about node
     $imprintPage = new SilvercartMetaNavigationPage();
     $imprintPage->Title = _t('ImprintPage.DEFAULT_TITLE', 'imprint');
     $imprintPage->URLSegment = _t('ImprintPage.DEFAULT_URLSEGMENT', 'imprint');
     $imprintPage->Status = "Published";
     $imprintPage->ShowInMenus = 1;
     $imprintPage->ParentID = $aboutNavigationHolder->ID;
     $imprintPage->IdentifierCode = "ImprintPage";
     $imprintPage->write();
     $imprintPage->publish("Stage", "Live");
     $contactPage = new SilvercartContactFormPage();
     $contactPage->Title = _t('SilvercartContactFormPage.DEFAULT_TITLE', 'contact');
     $contactPage->URLSegment = _t('SilvercartContactFormPage.DEFAULT_URLSEGMENT', 'contact');
     $contactPage->Status = "Published";
     $contactPage->ShowInMenus = 1;
     $contactPage->IdentifierCode = "SilvercartContactFormPage";
     $contactPage->ParentID = $aboutNavigationHolder->ID;
     $contactPage->write();
     $contactPage->publish("Stage", "Live");
     $contactFormResponsePage = new SilvercartContactFormResponsePage();
     $contactFormResponsePage->Title = _t('SilvercartContactFormResponsePage.DEFAULT_TITLE', 'contact confirmation');
     $contactFormResponsePage->URLSegment = _t('SilvercartContactFormResponsePage.DEFAULT_URLSEGMENT', 'contactconfirmation');
     $contactFormResponsePage->Status = "Published";
     $contactFormResponsePage->ShowInMenus = false;
     $contactFormResponsePage->ShowInSearch = false;
     $contactFormResponsePage->IdentifierCode = "SilvercartContactFormResponsePage";
     $contactFormResponsePage->ParentID = $contactPage->ID;
     $contactFormResponsePage->Content = _t('SilvercartContactFormResponsePage.DEFAULT_CONTENT', 'Many thanks for Your message. Your request will be answered as soon as possible.');
     $contactFormResponsePage->write();
     $contactFormResponsePage->publish("Stage", "Live");
     // Sub pages of shop node
     $silvercartDePage = new RedirectorPage();
     $silvercartDePage->RedirectionType = 'External';
     $silvercartDePage->ExternalURL = 'http://www.silvercart.de';
     $silvercartDePage->Title = 'silvercart.de';
     $silvercartDePage->URLSegment = 'silvercart-de';
     $silvercartDePage->Status = "Published";
     $silvercartDePage->ShowInMenus = 1;
     $silvercartDePage->ParentID = $shopNavigationHolder->ID;
     $silvercartDePage->write();
     $silvercartDePage->publish("Stage", "Live");
     $silvercartOrgPage = new RedirectorPage();
     $silvercartOrgPage->RedirectionType = 'External';
     $silvercartOrgPage->ExternalURL = 'http://www.silvercart.org';
     $silvercartOrgPage->Title = 'silvercart.org';
     $silvercartOrgPage->URLSegment = 'silvercart-org';
     $silvercartOrgPage->Status = "Published";
     $silvercartOrgPage->ShowInMenus = 1;
     $silvercartOrgPage->ParentID = $shopNavigationHolder->ID;
     $silvercartOrgPage->write();
     $silvercartOrgPage->publish("Stage", "Live");
 }
コード例 #4
0
 public function testVirtualPagePointingToRedirectorPage()
 {
     if (!class_exists('RedirectorPage')) {
         $this->markTestSkipped('RedirectorPage required');
     }
     $rp = new RedirectorPage(array('ExternalURL' => 'http://google.com', 'RedirectionType' => 'External'));
     $rp->write();
     $rp->doPublish();
     $vp = new VirtualPage(array('URLSegment' => 'vptest', 'CopyContentFromID' => $rp->ID));
     $vp->write();
     $vp->doPublish();
     $response = $this->get($vp->Link());
     $this->assertEquals(301, $response->getStatusCode());
     $this->assertEquals('http://google.com', $response->getHeader('Location'));
 }