mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merged from branches/2.3
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@77764 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
4d55f1e5d7
commit
75ba6a1ab9
@ -201,10 +201,13 @@ class i18nTextCollector extends Object {
|
|||||||
$includeName = $reg[1];
|
$includeName = $reg[1];
|
||||||
$includeFileName = "{$includeName}.ss";
|
$includeFileName = "{$includeName}.ss";
|
||||||
$filePath = SSViewer::getTemplateFileByType($includeName, 'Includes');
|
$filePath = SSViewer::getTemplateFileByType($includeName, 'Includes');
|
||||||
|
if(!$filePath) $filePath = SSViewer::getTemplateFileByType($includeName, 'main');
|
||||||
|
if($filePath) {
|
||||||
$includeContent = file_get_contents($filePath);
|
$includeContent = file_get_contents($filePath);
|
||||||
// @todo Will get massively confused if you include the includer -> infinite loop
|
|
||||||
$entitiesArr = array_merge($entitiesArr,(array)$this->collectFromTemplate($includeContent, $module, $includeFileName));
|
$entitiesArr = array_merge($entitiesArr,(array)$this->collectFromTemplate($includeContent, $module, $includeFileName));
|
||||||
}
|
}
|
||||||
|
// @todo Will get massively confused if you include the includer -> infinite loop
|
||||||
|
}
|
||||||
|
|
||||||
// @todo respect template tags (< % _t() % > instead of _t())
|
// @todo respect template tags (< % _t() % > instead of _t())
|
||||||
$regexRule = '_t[[:space:]]*\(' .
|
$regexRule = '_t[[:space:]]*\(' .
|
||||||
|
@ -25,6 +25,7 @@ class i18nTextCollectorTask extends BuildTask {
|
|||||||
* @uses DataObject->collectI18nStatics()
|
* @uses DataObject->collectI18nStatics()
|
||||||
*/
|
*/
|
||||||
public function run($request) {
|
public function run($request) {
|
||||||
|
set_time_limit(0);
|
||||||
$c = new i18nTextCollector();
|
$c = new i18nTextCollector();
|
||||||
$restrictModules = ($request->getVar('module')) ? explode(',', $request->getVar('module')) : null;
|
$restrictModules = ($request->getVar('module')) ? explode(',', $request->getVar('module')) : null;
|
||||||
return $c->run($restrictModules);
|
return $c->run($restrictModules);
|
||||||
|
@ -62,7 +62,7 @@ class RedirectorPage extends Page {
|
|||||||
function redirectionLink() {
|
function redirectionLink() {
|
||||||
if($this->RedirectionType == 'External') {
|
if($this->RedirectionType == 'External') {
|
||||||
if($this->ExternalURL) {
|
if($this->ExternalURL) {
|
||||||
return Convert::raw2att($this->ExternalURL);
|
return $this->ExternalURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -1041,6 +1041,18 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
parent::onAfterWrite();
|
parent::onAfterWrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onBeforeDelete() {
|
||||||
|
parent::onBeforeDelete();
|
||||||
|
|
||||||
|
// If deleting this page, delete all its children.
|
||||||
|
if($children = $this->Children()) {
|
||||||
|
foreach($children as $child) {
|
||||||
|
$child->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function onAfterDelete() {
|
function onAfterDelete() {
|
||||||
// Need to flush cache to avoid outdated versionnumber references
|
// Need to flush cache to avoid outdated versionnumber references
|
||||||
$this->flushCache();
|
$this->flushCache();
|
||||||
@ -1389,8 +1401,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->canEdit()) {
|
||||||
if($this->IsDeletedFromStage) {
|
if($this->IsDeletedFromStage) {
|
||||||
if($this->can('CMSEdit')) {
|
|
||||||
if($this->ExistsOnLive) {
|
if($this->ExistsOnLive) {
|
||||||
// "restore"
|
// "restore"
|
||||||
$actions->push(new FormAction('revert',_t('CMSMain.RESTORE','Restore')));
|
$actions->push(new FormAction('revert',_t('CMSMain.RESTORE','Restore')));
|
||||||
@ -1400,9 +1412,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
// "restore"
|
// "restore"
|
||||||
$actions->push(new FormAction('restore',_t('CMSMain.RESTORE','Restore')));
|
$actions->push(new FormAction('restore',_t('CMSMain.RESTORE','Restore')));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if($this->canEdit()) {
|
|
||||||
// "delete"
|
// "delete"
|
||||||
$actions->push($deleteAction = new FormAction('delete',_t('CMSMain.DELETE','Delete from the draft site')));
|
$actions->push($deleteAction = new FormAction('delete',_t('CMSMain.DELETE','Delete from the draft site')));
|
||||||
$deleteAction->addExtraClass('delete');
|
$deleteAction->addExtraClass('delete');
|
||||||
|
@ -5,9 +5,10 @@
|
|||||||
.SelectionGroup li {
|
.SelectionGroup li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
float : left;
|
float : left;
|
||||||
|
width: 100%;
|
||||||
clear : both;
|
clear : both;
|
||||||
}
|
}
|
||||||
.SelectionGroup li input {
|
.SelectionGroup li input.selector {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
float : left;
|
float : left;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class TextareaField extends FormField {
|
|||||||
return $this->createTag(
|
return $this->createTag(
|
||||||
'span',
|
'span',
|
||||||
$attributes,
|
$attributes,
|
||||||
($this->value) ? Convert::raw2xml($this->value) : '<i>(' . _t('FormField.NONE', 'none') . ')</i>'
|
(($this->value) ? htmlentities($this->value) : '<i>(' . _t('FormField.NONE', 'none') . ')</i>')
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$attributes = array(
|
$attributes = array(
|
||||||
@ -60,7 +60,7 @@ class TextareaField extends FormField {
|
|||||||
|
|
||||||
if($this->disabled) $attributes['disabled'] = 'disabled';
|
if($this->disabled) $attributes['disabled'] = 'disabled';
|
||||||
|
|
||||||
return $this->createTag('textarea', $attributes, Convert::raw2xml($this->value));
|
return $this->createTag('textarea', $attributes, htmlentities($this->value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,6 +81,8 @@ class SiteTreeTest extends SapphireTest {
|
|||||||
|
|
||||||
$checkSiteTree = DataObject::get_one("SiteTree", "\"URLSegment\" = 'get-one-test-page'");
|
$checkSiteTree = DataObject::get_one("SiteTree", "\"URLSegment\" = 'get-one-test-page'");
|
||||||
$this->assertEquals("V1", $checkSiteTree->Title);
|
$this->assertEquals("V1", $checkSiteTree->Title);
|
||||||
|
|
||||||
|
Versioned::reading_stage($oldStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testChidrenOfRootAreTopLevelPages() {
|
function testChidrenOfRootAreTopLevelPages() {
|
||||||
@ -189,7 +191,7 @@ class SiteTreeTest extends SapphireTest {
|
|||||||
$this->assertEquals('Page', $requeriedPage->class);
|
$this->assertEquals('Page', $requeriedPage->class);
|
||||||
|
|
||||||
|
|
||||||
$page2 = $this->objFromFixture('Page', 'staff');
|
$page2 = $this->objFromFixture('Page', 'products');
|
||||||
$page2ID = $page2->ID;
|
$page2ID = $page2->ID;
|
||||||
$page2->doUnpublish();
|
$page2->doUnpublish();
|
||||||
$page2->delete();
|
$page2->delete();
|
||||||
@ -203,7 +205,7 @@ class SiteTreeTest extends SapphireTest {
|
|||||||
|
|
||||||
Versioned::reading_stage('Stage');
|
Versioned::reading_stage('Stage');
|
||||||
$requeriedPage = DataObject::get_by_id("Page", $page2ID);
|
$requeriedPage = DataObject::get_by_id("Page", $page2ID);
|
||||||
$this->assertEquals('Staff', $requeriedPage->Title);
|
$this->assertEquals('Products', $requeriedPage->Title);
|
||||||
$this->assertEquals('Page', $requeriedPage->class);
|
$this->assertEquals('Page', $requeriedPage->class);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -220,6 +222,32 @@ class SiteTreeTest extends SapphireTest {
|
|||||||
$this->assertFalse(SiteTree::get_by_url("home", "1 = 2"));
|
$this->assertFalse(SiteTree::get_by_url("home", "1 = 2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function testDeleteFromStageOperatesRecursively() {
|
||||||
|
$parentPage = $this->objFromFixture('Page', 'about');
|
||||||
|
$parentPage->delete();
|
||||||
|
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'about'));
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'staff'));
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'staffduplicate'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testDeleteFromLiveOperatesRecursively() {
|
||||||
|
$this->objFromFixture('Page', 'about')->doPublish();
|
||||||
|
$this->objFromFixture('Page', 'staff')->doPublish();
|
||||||
|
$this->objFromFixture('Page', 'staffduplicate')->doPublish();
|
||||||
|
|
||||||
|
|
||||||
|
$parentPage = $this->objFromFixture('Page', 'about');
|
||||||
|
$parentPage->doDeleteFromLive();
|
||||||
|
|
||||||
|
Versioned::reading_stage('Live');
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'about'));
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'staff'));
|
||||||
|
$this->assertFalse($this->objFromFixture('Page', 'staffduplicate'));
|
||||||
|
Versioned::reading_stage('Stage');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We make these extend page since that's what all page types are expected to do
|
// We make these extend page since that's what all page types are expected to do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user