Merge remote-tracking branch 'origin/3.1' into 3

This commit is contained in:
Damian Mooyman 2015-03-11 11:43:56 +13:00
commit 9d7a640205
8 changed files with 81 additions and 17 deletions

View File

@ -458,6 +458,22 @@ class VirtualPage extends Page {
if(parent::hasMethod($method)) return true;
return $this->copyContentFrom()->hasMethod($method);
}
/**
* Return the "casting helper" (a piece of PHP code that when evaluated creates a casted value object) for a field
* on this object.
*
* @param string $field
* @return string
*/
public function castingHelper($field) {
if($this->copyContentFrom()) {
return $this->copyContentFrom()->castingHelper($field);
} else {
return parent::castingHelper($field);
}
}
}
/**

View File

@ -118,7 +118,7 @@
// update button
updateURLFromTitle = $('<button />', {
'class': 'update ss-ui-button-small',
'text': 'Update URL',
'text': ss.i18n._t('URLSEGMENT.UpdateURL'),
'click': function(e) {
e.preventDefault();
self.updateURLSegment(self.val());

View File

@ -40,7 +40,8 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
"CMSMain.RollbackToVersion": "Do you really want to roll back to version #%s of this page?",
"URLSEGMENT.Edit": "Edit",
"URLSEGMENT.OK": "OK",
"URLSEGMENT.Cancel": "Cancel"
"URLSEGMENT.Cancel": "Cancel",
"URLSEGMENT.UpdateURL": "Update URL"
}
);
}

View File

@ -35,5 +35,6 @@
"CMSMain.RollbackToVersion": "Do you really want to roll back to version #%s of this page?",
"URLSEGMENT.Edit": "Edit",
"URLSEGMENT.OK": "OK",
"URLSEGMENT.Cancel": "Cancel"
"URLSEGMENT.Cancel": "Cancel",
"URLSEGMENT.UpdateURL": "Update URL"
}

View File

@ -26,14 +26,14 @@
"AssetAdmin.ConfirmDelete": "Vill du verkligen radera denna mapp och alla filer i den?",
"Folder.Name": "Mappnamn",
"Tree.AddSubPage": "Lägg till ny sida här",
"Tree.Duplicate": "Duplicate",
"Tree.EditPage": "Editera",
"Tree.ThisPageOnly": "This page only",
"Tree.ThisPageAndSubpages": "This page and subpages",
"Tree.ShowAsList": "Show children as list",
"Tree.Duplicate": "Duplicera",
"Tree.EditPage": "Redigera",
"Tree.ThisPageOnly": "Endast denna sida",
"Tree.ThisPageAndSubpages": "Denna sida och undersidor",
"Tree.ShowAsList": "Visa undersidor som lista",
"CMSMain.ConfirmRestoreFromLive": "Vill du verkligen kopiera det publicerade innehållet till utkastsajten?",
"CMSMain.RollbackToVersion": "Vill du verkligen gå tillbaka till version %s av denna sida?",
"URLSEGMENT.Edit": "Edit",
"URLSEGMENT.Edit": "Redigera",
"URLSEGMENT.OK": "OK",
"URLSEGMENT.Cancel": "Cancel"
"URLSEGMENT.Cancel": "Avbryt"
}

View File

@ -31,15 +31,15 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
"AssetAdmin.ConfirmDelete": "Vill du verkligen radera denna mapp och alla filer i den?",
"Folder.Name": "Mappnamn",
"Tree.AddSubPage": "Lägg till ny sida här",
"Tree.Duplicate": "Duplicate",
"Tree.EditPage": "Editera",
"Tree.ThisPageOnly": "This page only",
"Tree.ThisPageAndSubpages": "This page and subpages",
"Tree.ShowAsList": "Show children as list",
"Tree.Duplicate": "Duplicera",
"Tree.EditPage": "Redigera",
"Tree.ThisPageOnly": "Endast denna sida",
"Tree.ThisPageAndSubpages": "Denna sida och undersidor",
"Tree.ShowAsList": "Visa undersidor som lista",
"CMSMain.ConfirmRestoreFromLive": "Vill du verkligen kopiera det publicerade innehållet till utkastsajten?",
"CMSMain.RollbackToVersion": "Vill du verkligen gå tillbaka till version %s av denna sida?",
"URLSEGMENT.Edit": "Edit",
"URLSEGMENT.Edit": "Redigera",
"URLSEGMENT.OK": "OK",
"URLSEGMENT.Cancel": "Cancel"
"URLSEGMENT.Cancel": "Avbryt"
});
}

View File

@ -5,7 +5,9 @@ sv:
AppCategoryArchive: Arkivera
AppCategoryAudio: Ljud
AppCategoryDocument: Dokument
AppCategoryFlash: Flash
AppCategoryImage: Bild
AppCategoryVideo: Video
BackToFolder: 'Tillbaka till mappen'
CREATED: Datum
CurrentFolderOnly: 'Begränsa till aktuell mapp?'
@ -43,6 +45,7 @@ sv:
ColumnDateLastModified: 'Datum vid senaste modifiering'
ColumnDateLastPublished: 'Datum vid senaste publicering'
ColumnProblemType: 'Problemtyp'
ColumnURL: URL
HasBrokenFile: 'har trasig fil'
HasBrokenLink: 'har trasig länk'
HasBrokenLinkAndFile: 'har trasig länk och fil'
@ -72,6 +75,7 @@ sv:
AddNew: 'Skapa ny sida'
AddNewButton: 'Skapa ny'
AddPageRestriction: 'OBS: Vissa sidtyper är inte tillåtna här'
Cancel: Avbryt
ChoosePageParentMode: 'Välj var du vill skapa denna sida'
ChoosePageType: 'Välj sidtyp'
Create: Skapa
@ -124,6 +128,7 @@ sv:
SHOWUNPUBLISHED: 'Visa opublicerade versioner'
SHOWVERSION: 'Visa version'
VIEW: Titta på
VIEWINGLATEST: 'Nu visas den senaste versionen.'
VIEWINGVERSION: 'Nu visas version {version}.'
MENUTITLE: Historia
CMSPageHistoryController_versions_ss:
@ -139,6 +144,8 @@ sv:
TreeView: 'Trädvy'
CMSPagesController_ContentToolbar_ss:
MULTISELECT: Flerval
CMSPagesController_Tools_ss:
FILTER: Filter
CMSSearch:
FILTERDATEFROM: Från
FILTERDATEHEADING: Datum
@ -155,6 +162,7 @@ sv:
ContentController:
ARCHIVEDSITE: 'Utkast version'
ARCHIVEDSITEFROM: 'Arkiverad sajt från'
CMS: CMS
DRAFT: Utkast
DRAFTSITE: 'Utkast'
DRAFT_SITE_ACCESS_RESTRICTION: 'Du måste logga med ditt CMS-lösenord för att kunna se utkast och arkiverat material. <a href="%s">Klicka här för att gå tillbaks till den publicerade sajten.</a>'
@ -192,6 +200,8 @@ sv:
415: '415 - Mediatypen stöds inte'
416: '416 - Det efterfrågade intervallet går inte att leverera'
417: '417 - Förväntningen gick inte att infria'
422: '422 - Obehandlingsbar entitet'
429: '429 - För många anrop'
500: '500 - Internt serverfel'
501: '501 - Inte implementerad'
502: '502 - Felaktig gateway'
@ -262,6 +272,7 @@ sv:
SilverStripeNavigator:
ARCHIVED: Arkiverad
SilverStripeNavigatorLink:
ShareInstructions: 'Kopiera och klistra in länken nedan för att dela den här sidan.'
ShareLink: 'Dela länk'
SilverStripeNavigatorLinkl:
CloseLink: Stäng
@ -310,6 +321,7 @@ sv:
DEPENDENT_NOTE: 'Följande sidor berörs av den här sidan. Inklusive virtuella sidor, omdirigeringssidor, och sidor med innehållslänkar.'
DESCRIPTION: 'Generisk innehållssida'
DependtPageColumnLinkType: 'Länktyp'
DependtPageColumnURL: URL
EDITANYONE: 'Alla som kan logga in'
EDITHEADER: 'Vem kan redigera den här sidan?'
EDITONLYTHESE: 'Bara de här (välj från listan)'
@ -332,6 +344,7 @@ sv:
METAEXTRAHELP: 'HTML taggar för övrig meta information. Till exempel &lt;meta name="Namn" content="innehållet kommer här" /&gt;'
MODIFIEDONDRAFTHELP: 'Sidan har ej publicerade ändringar'
MODIFIEDONDRAFTSHORT: Ändrad
MetadataToggle: Metadata
MoreOptions: 'Fler alternativ'
NOTPUBLISHED: 'Ej publicerad'
OBSOLETECLASS: 'Denna sida är den föråldrade typen {type}. Att spara kommer att återställa dess typ och du kan förlora data'
@ -375,12 +388,19 @@ sv:
SiteTreeURLSegmentField:
EMPTY: 'Ange ett URL-segment eller klicka på avbryt'
HelpChars: 'Specialtecken konverteras eller tas bort'
URLSegmentField:
Cancel: Avbryt
Edit: Redigera
OK: OK
ViewArchivedEmail_ss:
CANACCESS: 'Du kan komma åt den arkiverade sajten med denna länk:'
HAVEASKED: 'Du har efterfrågat att se innehållet på vår sajt på'
VirtualPage:
CHOOSE: 'Länkad sida'
DESCRIPTION: 'Visar innehåll från en annan sida'
EditLink: redigera
HEADER: 'Det här är en virutell sida'
HEADERWITHLINK: 'Det här är en virtuell sida som kopierar innehållet från "{title}" ({link})'
PLURALNAME: 'Virtuella sidor'
PageTypNotAllowedOnRoot: 'Ursprungliga sidan av typ "{type}" tillåts inte på rotnivå för denna virtuella sida'
SINGULARNAME: 'Virtuell sida'
@ -392,3 +412,9 @@ sv:
MENUTITLE: 'Redigera sida'
CMSSettingsController:
MENUTITLE: Inställningar
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Raderade sidor'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Ej publicerade utkast'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Live men borttagen från utkast'

View File

@ -591,6 +591,19 @@ class VirtualPageTest extends SapphireTest {
'No field copying from previous original after page type changed'
);
}
public function testVirtualPageFindsCorrectCasting() {
$page = new VirtualPageTest_ClassA();
$page->CastingTest = "Some content";
$page->write();
$virtual = new VirtualPage();
$virtual->CopyContentFromID = $page->ID;
$virtual->write();
$this->assertEquals('VirtualPageTest_TestDBField', $virtual->castingHelper('CastingTest'));
$this->assertEquals('SOME CONTENT', $virtual->obj('CastingTest')->forTemplate());
}
}
class VirtualPageTest_ClassA extends Page implements TestOnly {
@ -599,6 +612,7 @@ class VirtualPageTest_ClassA extends Page implements TestOnly {
'MyInitiallyCopiedField' => 'Text',
'MyVirtualField' => 'Text',
'MyNonVirtualField' => 'Text',
'CastingTest' => 'VirtualPageTest_TestDBField'
);
private static $allowed_children = array('VirtualPageTest_ClassB');
@ -616,6 +630,12 @@ class VirtualPageTest_NotRoot extends Page implements TestOnly {
private static $can_be_root = false;
}
class VirtualPageTest_TestDBField extends Varchar implements TestOnly {
public function forTemplate() {
return strtoupper($this->XML());
}
}
class VirtualPageTest_VirtualPageSub extends VirtualPage implements TestOnly {
private static $db = array(
'MyProperty' => 'Varchar',