Merge branch '3.4' into 3.5

This commit is contained in:
Daniel Hensby 2016-11-28 14:01:01 +00:00
commit ca76b9488f
No known key found for this signature in database
GPG Key ID: B00D1E9767F0B06E
3 changed files with 320 additions and 313 deletions

View File

@ -1019,7 +1019,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
}
// Fall over to inherited permissions
if($parent) {
if($parent && $parent->exists()) {
return $parent->canAddChildren($member);
} else {
// This doesn't necessarily mean we are creating a root page, but that

View File

@ -1,132 +1,135 @@
en:
AssetAdmin:
ADDFILES: 'Add Files'
ActionAdd: 'Add folder'
ADDFILES: "Add Files"
ActionAdd: "Add folder"
AppCategoryArchive: Archive
AppCategoryAudio: Audio
AppCategoryDocument: Document
AppCategoryFlash: Flash
AppCategoryImage: Image
AppCategoryVideo: Video
BackToFolder: 'Back to folder'
CMSMENU_OLD: 'Files (old)'
BackToFolder: "Back to folder"
CMSMENU_OLD: "Files (old)"
CREATED: Date
CurrentFolderOnly: 'Limit to current folder?'
CurrentFolderOnly: "Limit to current folder?"
DetailsView: Details
ErrorItemPermissionDenied: 'It seems you don''t have the necessary permissions to add {ObjectTitle} to a campaign'
ErrorNotFound: 'That {Type} couldn''t be found'
ErrorItemPermissionDenied: "It seems you don't have the necessary permissions to add {ObjectTitle} to a campaign"
ErrorNotFound: "That {Type} couldn't be found"
FILES: Files
FILESYSTEMSYNC: 'Sync files'
FILESYSTEMSYNCTITLE: 'Update the CMS database entries of files on the filesystem. Useful when new files have been uploaded outside of the CMS, e.g. through FTP.'
FROMTHEINTERNET: 'From the internet'
FROMYOURCOMPUTER: 'From your computer'
Filetype: 'File type'
ListView: 'List View'
FILESYSTEMSYNC: "Sync files"
FILESYSTEMSYNCTITLE: "Update the CMS database entries of files on the filesystem. Useful when new files have been uploaded outside of the CMS, e.g. through FTP."
FROMTHEINTERNET: "From the internet"
FROMYOURCOMPUTER: "From your computer"
Filetype: "File type"
ListView: "List View"
MENUTITLE: Files
NEWFOLDER: NewFolder
SIZE: Size
THUMBSDELETED: '{count} unused thumbnails have been deleted'
TreeView: 'Tree View'
THUMBSDELETED: "{count} unused thumbnails have been deleted"
TreeView: "Tree View"
Upload: Upload
AssetAdmin_DeleteBatchAction:
TITLE: 'Delete folders'
TITLE: "Delete folders"
AssetAdmin_Tools:
FILTER: Filter
AssetAdmin_left_ss:
GO: Go
AssetTableField:
BACKLINKCOUNT: 'Used on:'
BACKLINKCOUNT: "Used on:"
PAGES: page(s)
BackLink_Button_ss:
Back: Back
BrokenLinksReport:
Any: Any
BROKENLINKS: 'Broken links report'
CheckSite: 'Check site'
CheckSiteDropdownDraft: 'Draft Site'
CheckSiteDropdownPublished: 'Published Site'
ColumnDateLastModified: 'Date last modified'
ColumnDateLastPublished: 'Date last published'
ColumnProblemType: 'Problem type'
BROKENLINKS: "Broken links report"
CheckSite: "Check site"
CheckSiteDropdownDraft: "Draft Site"
CheckSiteDropdownPublished: "Published Site"
ColumnDateLastModified: "Date last modified"
ColumnDateLastPublished: "Date last published"
ColumnProblemType: "Problem type"
ColumnURL: URL
HasBrokenFile: 'has broken file'
HasBrokenLink: 'has broken link'
HasBrokenLinkAndFile: 'has broken link and file'
HoverTitleEditPage: 'Edit page'
PageName: 'Page name'
ReasonDropdown: 'Problem to check'
ReasonDropdownBROKENFILE: 'Broken file'
ReasonDropdownBROKENLINK: 'Broken link'
ReasonDropdownRPBROKENLINK: 'Redirector page pointing to non-existent page'
ReasonDropdownVPBROKENLINK: 'Virtual page pointing to non-existent page'
RedirectorNonExistent: 'redirector page pointing to non-existent page'
VirtualPageNonExistent: 'virtual page pointing to non-existent page'
HasBrokenFile: "has broken file"
HasBrokenLink: "has broken link"
HasBrokenLinkAndFile: "has broken link and file"
HoverTitleEditPage: "Edit page"
PageName: "Page name"
ReasonDropdown: "Problem to check"
ReasonDropdownBROKENFILE: "Broken file"
ReasonDropdownBROKENLINK: "Broken link"
ReasonDropdownRPBROKENLINK: "Redirector page pointing to non-existent page"
ReasonDropdownVPBROKENLINK: "Virtual page pointing to non-existent page"
RedirectorNonExistent: "redirector page pointing to non-existent page"
VirtualPageNonExistent: "virtual page pointing to non-existent page"
CMSAddPageController:
Title: 'Add page'
Title: "Add page"
CMSBatchAction_Archive:
RESULT: 'Deleted %d pages from draft and live, and sent them to the archive'
TITLE: 'Unpublish and archive'
RESULT: "Deleted %d pages from draft and live, and sent them to the archive"
TITLE: "Unpublish and archive"
CMSBatchActions:
ARCHIVE: Archive
ARCHIVED_PAGES: 'Archived %d pages'
DELETED_DRAFT_PAGES: 'Deleted %d pages from draft site, %d failures'
DELETED_PAGES: 'Deleted %d pages from published site, %d failures'
DELETE_DRAFT_PAGES: 'Delete from draft site'
DELETE_PAGES: 'Delete from published site'
PUBLISHED_PAGES: 'Published %d pages, %d failures'
ARCHIVED_PAGES: "Archived %d pages"
DELETED_DRAFT_PAGES: "Deleted %d pages from draft site, %d failures"
DELETED_PAGES: "Deleted %d pages from published site, %d failures"
DELETE_DRAFT_PAGES: "Delete from draft site"
DELETE_PAGES: "Delete from published site"
PUBLISHED_PAGES: "Published %d pages, %d failures"
PUBLISH_PAGES: Publish
RESTORE: Restore
RESTORED_PAGES: 'Restored %d pages'
UNPUBLISHED_PAGES: 'Unpublished %d pages'
UNPUBLISH_PAGES: Unpublish
RESTORED_PAGES: "Restored %d pages"
UNPUBLISHED_PAGES: "Un-published %d pages"
UNPUBLISH_PAGES: Un-publish
CMSFileAddController:
MENUTITLE: Files
CMSMain:
ACCESS: 'Access to ''{title}'' section'
ACCESS_HELP: 'Allow viewing of the section containing page tree and content. View and edit permissions can be handled through page specific dropdowns, as well as the separate "Content permissions".'
ACCESS: "Access to '{title}' section"
ACCESS_HELP: "Allow viewing of the section containing page tree and content. View and edit permissions can be handled through page specific dropdowns, as well as the separate \"Content permissions\"."
ARCHIVE: Archive
ARCHIVEDPAGE: 'Archived page ''%s'''
AddNew: 'Add new page'
AddNewButton: 'Add new'
AddPageRestriction: 'Note: Some page types are not allowed for this selection'
ARCHIVEDPAGE: "Archived page '%s'"
AddNew: "Add new page"
AddNewButton: "Add new"
AddPageRestriction: "Note: Some page types are not allowed for this selection"
Cancel: Cancel
ChoosePageParentMode: 'Choose where to create this page'
ChoosePageType: 'Choose page type'
ChoosePageParentMode: "Choose where to create this page"
ChoosePageType: "Choose page type"
Create: Create
DELETE: 'Delete draft'
DELETE: "Delete draft"
DELETEFP: Delete
DESCREMOVED: 'and {count} descendants'
DUPLICATED: 'Duplicated ''{title}'' successfully'
DUPLICATEDWITHCHILDREN: 'Duplicated ''{title}'' and children successfully'
DESCREMOVED: "and {count} descendants"
DUPLICATED: "Duplicated '{title}' successfully"
DUPLICATEDWITHCHILDREN: "Duplicated '{title}' and children successfully"
EMAIL: Email
EditTree: 'Edit Tree'
ListFiltered: 'Showing search results.'
MENUTITLE: 'Edit Page'
NEWPAGE: 'New {pagetype}'
PAGENOTEXISTS: 'This page doesn''t exist'
PAGES: 'Page status'
EditTree: "Edit Tree"
ListFiltered: "Filtered list."
MENUTITLE: "Edit Page"
NEWPAGE: "New {pagetype}"
PAGENOTEXISTS: "This page doesn't exist"
PAGES: Pages
PAGETYPEANYOPT: Any
PAGETYPEOPT: 'Page type'
PUBALLCONFIRM: 'Please publish every page in the site, copying content stage to live'
PUBALLFUN: '"Publish All" functionality'
PUBALLFUN2: "Pressing this button will do the equivalent of going to every page and pressing \"publish\". It's\r\n intended to be used after there have been massive edits of the content, such as when the site was\r\n first built."
PUBLISHED: 'Published ''{title}'' successfully.'
PUBPAGES: 'Done: Published {count} pages'
PageAdded: 'Successfully created page'
REMOVED: 'Deleted ''{title}''{description} from live site'
REMOVEDPAGE: 'Removed ''{title}'' from the published site'
REMOVEDPAGEFROMDRAFT: 'Removed ''%s'' from the draft site'
RESTORE: 'Restore draft'
RESTORED: 'Restored ''{title}'' successfully'
RESTORE_DESC: 'Restore the archived version to draft'
RESTORE_TO_ROOT: 'Restore draft at top level'
RESTORE_TO_ROOT_DESC: 'Restore the archived version to draft as a top level page'
ROLLBACK: 'Roll back to this version'
ROLLEDBACKPUBv2: 'Rolled back to published version.'
ROLLEDBACKVERSIONv2: 'Rolled back to version #%d.'
PAGETYPEOPT: "Page Type"
PUBALLCONFIRM: "Please publish every page in the site, copying content stage to live"
PUBALLFUN: "\"Publish All\" functionality"
PUBALLFUN2: |-
Pressing this button will do the equivalent of going to every page and pressing "publish". It's
intended to be used after there have been massive edits of the content, such as when the site was
first built.
PUBLISHED: "Published '{title}' successfully."
PUBPAGES: "Done: Published {count} pages"
PageAdded: "Successfully created page"
REMOVED: "Deleted '{title}'{description} from live site"
REMOVEDPAGE: "Removed '{title}' from the published site"
REMOVEDPAGEFROMDRAFT: "Removed '%s' from the draft site"
RESTORE: Restore
RESTORED: "Restored '{title}' successfully"
RESTORE_DESC: "Restore the archived version to draft"
RESTORE_TO_ROOT: "Restore draft at top level"
RESTORE_TO_ROOT_DESC: "Restore the archived version to draft as a top level page"
ROLLBACK: "Roll back to this version"
ROLLEDBACKPUBv2: "Rolled back to published version."
ROLLEDBACKVERSIONv2: "Rolled back to version #%d."
SAVE: Save
SAVED: 'Saved ''{title}'' successfully.'
SAVEDRAFT: 'Save draft'
SAVED: "Saved '{title}' successfully."
SAVEDRAFT: "Save draft"
TabContent: Content
TabHistory: History
TabSettings: Settings
@ -134,26 +137,26 @@ en:
TreeFilteredClear: Clear
UNPUBLISH_AND_ARCHIVE: 'Unpublish and archive'
CMSMain_left_ss:
APPLY_FILTER: Search
APPLY_FILTER: "Apply Filter"
CLEAR_FILTER: Clear
RESET: Reset
CMSPageAddController:
MENUTITLE: 'Add page'
ParentMode_child: 'Under another page'
ParentMode_top: 'Top level'
MENUTITLE: "Add page"
ParentMode_child: "Under another page"
ParentMode_top: "Top level"
CMSPageEditController:
MENUTITLE: 'Edit Page'
MENUTITLE: "Edit Page"
CMSPageHistoryController:
COMPAREMODE: 'Compare mode (select two)'
COMPAREVERSIONS: 'Compare Versions'
COMPARINGVERSION: 'Comparing versions {version1} and {version2}.'
COMPAREMODE: "Compare mode (select two)"
COMPAREVERSIONS: "Compare Versions"
COMPARINGVERSION: "Comparing versions {version1} and {version2}."
MENUTITLE: History
REVERTTOTHISVERSION: 'Revert to this version'
SHOWUNPUBLISHED: 'Show unpublished versions'
SHOWVERSION: 'Show Version'
REVERTTOTHISVERSION: "Revert to this version"
SHOWUNPUBLISHED: "Show unpublished versions"
SHOWVERSION: "Show Version"
VIEW: view
VIEWINGLATEST: 'Currently viewing the latest version.'
VIEWINGVERSION: 'Currently viewing version {version}.'
VIEWINGLATEST: "Currently viewing the latest version."
VIEWINGVERSION: "Currently viewing version {version}."
CMSPageHistoryController_versions_ss:
AUTHOR: Author
NOTPUBLISHED: 'Not published'
@ -162,116 +165,116 @@ en:
UNKNOWN: Unknown
WHEN: When
CMSPageSettingsController:
MENUTITLE: 'Edit Page'
MENUTITLE: "Edit Page"
CMSPagesController:
GalleryView: 'Gallery View'
ListView: 'List View'
GalleryView: "Gallery View"
ListView: "List View"
MENUTITLE: Pages
TreeView: 'Tree View'
TreeView: "Tree View"
CMSPagesController_ContentToolbar_ss:
MULTISELECT: 'Batch actions'
MULTISELECT: Multi-selection
CMSPagesController_Tools_ss:
FILTER: Filter
CMSSIteTreeFilter_PublishedPages:
Title: 'Published pages'
Title: "Published pages"
CMSSearch:
FILTERDATEFROM: From
FILTERDATEHEADING: Date
FILTERDATETO: To
FILTERLABELTEXT: Search
PAGEFILTERDATEHEADING: 'Last edited'
FILTERLABELTEXT: Content
PAGEFILTERDATEHEADING: "Last edited"
CMSSettingsController:
MENUTITLE: Settings
CMSSiteTreeFilter_ChangedPages:
Title: 'Modified pages'
Title: "Changed pages"
CMSSiteTreeFilter_DeletedPages:
Title: 'All pages, including archived'
Title: "All pages, including deleted"
CMSSiteTreeFilter_Search:
Title: 'All pages'
Title: "All pages"
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Archived pages'
Title: "Deleted pages"
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Draft pages'
Title: "Draft unpublished pages"
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Live but removed from draft'
Title: "Live but removed from draft"
ContentControl:
NOTEWONTBESHOWN: 'Note: this message will not be shown to your visitors'
NOTEWONTBESHOWN: "Note: this message will not be shown to your visitors"
ContentController:
ARCHIVEDSITE: 'Preview version'
ARCHIVEDSITEFROM: 'Archived site from'
ARCHIVEDSITE: "Preview version"
ARCHIVEDSITEFROM: "Archived site from"
CMS: CMS
DRAFT: Draft
DRAFTSITE: 'Draft Site'
DRAFT_SITE_ACCESS_RESTRICTION: 'You must log in with your CMS password in order to view the draft or archived content. <a href="%s">Click here to go back to the published site.</a>'
DRAFTSITE: "Draft Site"
DRAFT_SITE_ACCESS_RESTRICTION: "You must log in with your CMS password in order to view the draft or archived content. <a href=\"%s\">Click here to go back to the published site.</a>"
Email: Email
INSTALL_SUCCESS: 'Installation Successful!'
InstallFilesDeleted: 'Installation files have been successfully deleted.'
InstallSecurityWarning: 'For security reasons you should now delete the install files, unless you are planning to reinstall later (<em>requires admin login, see above</em>). The web server also now only needs write access to the "assets" folder, you can remove write access from all other folders. <a href="{link}" style="text-align: center;">Click here to delete the install files.</a>'
InstallSuccessCongratulations: 'SilverStripe has been successfully installed!'
LOGGEDINAS: 'Logged in as'
INSTALL_SUCCESS: "Installation Successful!"
InstallFilesDeleted: "Installation files have been successfully deleted."
InstallSecurityWarning: "For security reasons you should now delete the install files, unless you are planning to reinstall later (<em>requires admin login, see above</em>). The web server also now only needs write access to the \"assets\" folder, you can remove write access from all other folders. <a href=\"{link}\" style=\"text-align: center;\">Click here to delete the install files.</a>"
InstallSuccessCongratulations: "SilverStripe has been successfully installed!"
LOGGEDINAS: "Logged in as"
LOGIN: Login
LOGOUT: 'Log out'
NOTLOGGEDIN: 'Not logged in'
LOGOUT: "Log out"
NOTLOGGEDIN: "Not logged in"
PUBLISHED: Published
PUBLISHEDSITE: 'Published Site'
PUBLISHEDSITE: "Published Site"
Password: Password
PostInstallTutorialIntro: 'This website is a simplistic version of a SilverStripe 3 site. To extend this, please take a look at {link}.'
StartEditing: 'You can start editing your content by opening <a href="{link}">the CMS</a>.'
UnableDeleteInstall: 'Unable to delete installation files. Please delete the files below manually'
VIEWPAGEIN: 'View Page in:'
PostInstallTutorialIntro: "This website is a simplistic version of a SilverStripe 3 site. To extend this, please take a look at {link}."
StartEditing: "You can start editing your content by opening <a href=\"{link}\">the CMS</a>."
UnableDeleteInstall: "Unable to delete installation files. Please delete the files below manually"
VIEWPAGEIN: "View Page in:"
ErrorPage:
400: '400 - Bad Request'
401: '401 - Unauthorized'
403: '403 - Forbidden'
404: '404 - Not Found'
405: '405 - Method Not Allowed'
406: '406 - Not Acceptable'
407: '407 - Proxy Authentication Required'
408: '408 - Request Timeout'
409: '409 - Conflict'
410: '410 - Gone'
411: '411 - Length Required'
412: '412 - Precondition Failed'
413: '413 - Request Entity Too Large'
414: '414 - Request-URI Too Long'
415: '415 - Unsupported Media Type'
416: '416 - Request Range Not Satisfiable'
417: '417 - Expectation Failed'
422: '422 - Unprocessable Entity'
429: '429 - Too Many Requests'
500: '500 - Internal Server Error'
501: '501 - Not Implemented'
502: '502 - Bad Gateway'
503: '503 - Service Unavailable'
504: '504 - Gateway Timeout'
505: '505 - HTTP Version Not Supported'
CODE: 'Error code'
DEFAULTERRORPAGECONTENT: '<p>Sorry, it seems you were trying to access a page that doesn''t exist.</p><p>Please check the spelling of the URL you were trying to access and try again.</p>'
DEFAULTERRORPAGETITLE: 'Page not found'
DEFAULTSERVERERRORPAGECONTENT: '<p>Sorry, there was a problem with handling your request.</p>'
DEFAULTSERVERERRORPAGETITLE: 'Server error'
DESCRIPTION: 'Custom content for different error cases (e.g. "Page not found")'
ERRORFILEPROBLEM: 'Error opening file "{filename}" for writing. Please check file permissions.'
PLURALNAME: 'Error Pages'
SINGULARNAME: 'Error Page'
400: "400 - Bad Request"
401: "401 - Unauthorized"
403: "403 - Forbidden"
404: "404 - Not Found"
405: "405 - Method Not Allowed"
406: "406 - Not Acceptable"
407: "407 - Proxy Authentication Required"
408: "408 - Request Timeout"
409: "409 - Conflict"
410: "410 - Gone"
411: "411 - Length Required"
412: "412 - Precondition Failed"
413: "413 - Request Entity Too Large"
414: "414 - Request-URI Too Long"
415: "415 - Unsupported Media Type"
416: "416 - Request Range Not Satisfiable"
417: "417 - Expectation Failed"
422: "422 - Unprocessable Entity"
429: "429 - Too Many Requests"
500: "500 - Internal Server Error"
501: "501 - Not Implemented"
502: "502 - Bad Gateway"
503: "503 - Service Unavailable"
504: "504 - Gateway Timeout"
505: "505 - HTTP Version Not Supported"
CODE: "Error code"
DEFAULTERRORPAGECONTENT: "<p>Sorry, it seems you were trying to access a page that doesn't exist.</p><p>Please check the spelling of the URL you were trying to access and try again.</p>"
DEFAULTERRORPAGETITLE: "Page not found"
DEFAULTSERVERERRORPAGECONTENT: "<p>Sorry, there was a problem with handling your request.</p>"
DEFAULTSERVERERRORPAGETITLE: "Server error"
DESCRIPTION: "Custom content for different error cases (e.g. \"Page not found\")"
ERRORFILEPROBLEM: "Error opening file \"{filename}\" for writing. Please check file permissions."
PLURALNAME: "Error Pages"
SINGULARNAME: "Error Page"
File:
Title: Title
Folder:
AddFolderButton: 'Add folder'
DELETEUNUSEDTHUMBNAILS: 'Delete unused thumbnails'
UNUSEDFILESTITLE: 'Unused files'
UNUSEDTHUMBNAILSTITLE: 'Unused thumbnails'
AddFolderButton: "Add folder"
DELETEUNUSEDTHUMBNAILS: "Delete unused thumbnails"
UNUSEDFILESTITLE: "Unused files"
UNUSEDTHUMBNAILSTITLE: "Unused thumbnails"
UploadFilesButton: Upload
LeftAndMain:
DELETED: Deleted.
PreviewButton: Preview
SAVEDUP: Saved.
SearchResults: 'Search Results'
SearchResults: "Search Results"
Permission:
CMS_ACCESS_CATEGORY: 'CMS Access'
CMS_ACCESS_CATEGORY: "CMS Access"
Permissions:
CONTENT_CATEGORY: 'Content permissions'
PERMISSIONS_CATEGORY: 'Roles and access permissions'
CONTENT_CATEGORY: "Content permissions"
PERMISSIONS_CATEGORY: "Roles and access permissions"
RedirectorPage:
DESCRIPTION: 'Redirects to a different internal page'
HASBEENSETUP: 'A redirector page has been set up without anywhere to redirect to.'
@ -297,199 +300,199 @@ en:
MENUTITLE: Reports
ReportTitle: Title
ReportAdminForm:
FILTERBY: 'Filter by'
FILTERBY: "Filter by"
SITETREE:
VIRTUALPAGEDRAFTWARNING: 'Please publish the linked page in order to publish the virtual page'
VIRTUALPAGEWARNING: 'Please choose a linked page and save first in order to publish this page'
VIRTUALPAGEWARNINGSETTINGS: 'Please choose a linked page in the main content fields in order to publish'
VIRTUALPAGEDRAFTWARNING: "Please publish the linked page in order to publish the virtual page"
VIRTUALPAGEWARNING: "Please choose a linked page and save first in order to publish this page"
VIRTUALPAGEWARNINGSETTINGS: "Please choose a linked page in the main content fields in order to publish"
SearchForm:
GO: Go
SEARCH: Search
SearchResults: 'Search Results'
SearchResults: "Search Results"
SideReport:
BROKENFILES: 'Pages with broken files'
BROKENLINKS: 'Pages with broken links'
BROKENREDIRECTORPAGES: 'RedirectorPages pointing to deleted pages'
BROKENVIRTUALPAGES: 'VirtualPages pointing to deleted pages'
BrokenLinksGroupTitle: 'Broken links reports'
ContentGroupTitle: 'Content reports'
EMPTYPAGES: 'Pages with no content'
LAST2WEEKS: 'Pages edited in the last 2 weeks'
BROKENFILES: "Pages with broken files"
BROKENLINKS: "Pages with broken links"
BROKENREDIRECTORPAGES: "RedirectorPages pointing to deleted pages"
BROKENVIRTUALPAGES: "VirtualPages pointing to deleted pages"
BrokenLinksGroupTitle: "Broken links reports"
ContentGroupTitle: "Content reports"
EMPTYPAGES: "Pages with no content"
LAST2WEEKS: "Pages edited in the last 2 weeks"
OtherGroupTitle: Other
ParameterLiveCheckbox: 'Check live site'
REPEMPTY: 'The {title} report is empty.'
ParameterLiveCheckbox: "Check live site"
REPEMPTY: "The {title} report is empty."
SilverStripeNavigator:
ARCHIVED: Archived
SilverStripeNavigatorLink:
ShareInstructions: 'To share this page, copy and paste the link below.'
ShareLink: 'Share link'
ShareInstructions: "To share a this to this page, copy and paste the link below."
ShareLink: "Share link"
SilverStripeNavigatorLinkl:
CloseLink: Close
SilverStripe\CMS\Controllers\CMSPageAddController:
MENUTITLE: 'Add page'
MENUTITLE: "Add page"
SilverStripe\CMS\Controllers\CMSPageEditController:
MENUTITLE: 'Edit Page'
MENUTITLE: "Edit Page"
SilverStripe\CMS\Controllers\CMSPageHistoryController:
MENUTITLE: History
SilverStripe\CMS\Controllers\CMSPageSettingsController:
MENUTITLE: 'Edit Page'
MENUTITLE: "Edit Page"
SilverStripe\CMS\Controllers\CMSPagesController:
MENUTITLE: Pages
SilverStripe\CMS\Model\ErrorPage:
DESCRIPTION: 'Custom content for different error cases (e.g. "Page not found")'
PLURALNAME: 'Error Pages'
SINGULARNAME: 'Error Page'
DESCRIPTION: "Custom content for different error cases (e.g. \"Page not found\")"
PLURALNAME: "Error Pages"
SINGULARNAME: "Error Page"
SilverStripe\CMS\Model\RedirectorPage:
DESCRIPTION: 'Redirects to an internal page or an external URL'
PLURALNAME: 'Redirector Pages'
SINGULARNAME: 'Redirector Page'
DESCRIPTION: "Redirects to an internal page or an external URL"
PLURALNAME: "Redirector Pages"
SINGULARNAME: "Redirector Page"
SilverStripe\CMS\Model\SiteTree:
DESCRIPTION: 'Generic content page'
PLURALNAME: 'Site Trees'
SINGULARNAME: 'Site Tree'
DESCRIPTION: "Generic content page"
PLURALNAME: "Site Trees"
SINGULARNAME: "Site Tree"
SilverStripe\CMS\Model\VirtualPage:
DESCRIPTION: 'Displays the content of another page'
PLURALNAME: 'Virtual Pages'
SINGULARNAME: 'Virtual Page'
DESCRIPTION: "Displays the content of another page"
PLURALNAME: "Virtual Pages"
SINGULARNAME: "Virtual Page"
SiteConfig:
DEFAULTTHEME: '(Use default theme)'
EDITHEADER: 'Who can edit pages on this site?'
EDIT_PERMISSION: 'Manage site configuration'
EDIT_PERMISSION_HELP: 'Ability to edit global access settings/top-level page permissions.'
PLURALNAME: 'Site Configs'
SINGULARNAME: 'Site Config'
SITENAMEDEFAULT: 'Your Site Name'
SITETAGLINE: 'Site Tagline/Slogan'
SITETITLE: 'Site title'
DEFAULTTHEME: "(Use default theme)"
EDITHEADER: "Who can edit pages on this site?"
EDIT_PERMISSION: "Manage site configuration"
EDIT_PERMISSION_HELP: "Ability to edit global access settings/top-level page permissions."
PLURALNAME: "Site Configs"
SINGULARNAME: "Site Config"
SITENAMEDEFAULT: "Your Site Name"
SITETAGLINE: "Site Tagline/Slogan"
SITETITLE: "Site title"
TABACCESS: Access
TABMAIN: Main
TAGLINEDEFAULT: 'your tagline here'
TAGLINEDEFAULT: "your tagline here"
THEME: Theme
TOPLEVELCREATE: 'Who can create pages in the root of the site?'
VIEWHEADER: 'Who can view pages on this site?'
TOPLEVELCREATE: "Who can create pages in the root of the site?"
VIEWHEADER: "Who can view pages on this site?"
SiteTree:
ACCESSANYONE: Anyone
ACCESSHEADER: 'Who can view this page?'
ACCESSLOGGEDIN: 'Logged-in users'
ACCESSONLYTHESE: 'Only these people (choose from list)'
ADDEDTODRAFTHELP: 'Page has not been published yet'
ACCESSHEADER: "Who can view this page?"
ACCESSLOGGEDIN: "Logged-in users"
ACCESSONLYTHESE: "Only these people (choose from list)"
ADDEDTODRAFTHELP: "Page has not been published yet"
ADDEDTODRAFTSHORT: Draft
ALLOWCOMMENTS: 'Allow comments on this page?'
APPEARSVIRTUALPAGES: 'This content also appears on the virtual pages in the {title} sections.'
ARCHIVEDPAGEHELP: 'Page is removed from draft and live'
ALLOWCOMMENTS: "Allow comments on this page?"
APPEARSVIRTUALPAGES: "This content also appears on the virtual pages in the {title} sections."
ARCHIVEDPAGEHELP: "Page is removed from draft and live"
ARCHIVEDPAGESHORT: Archived
BUTTONARCHIVEDESC: 'Unpublish and send to archive'
BUTTONCANCELDRAFT: 'Cancel draft changes'
BUTTONCANCELDRAFTDESC: 'Delete your draft and revert to the currently published page'
BUTTONDELETEDESC: 'Remove from draft/live and send to archive'
BUTTONARCHIVEDESC: "Unpublish and send to archive"
BUTTONCANCELDRAFT: "Cancel draft changes"
BUTTONCANCELDRAFTDESC: "Delete your draft and revert to the currently published page"
BUTTONDELETEDESC: "Remove from draft/live and send to archive"
BUTTONPUBLISHED: Published
BUTTONSAVED: Saved
BUTTONSAVEPUBLISH: 'Save & publish'
BUTTONSAVEPUBLISH: "Save & publish"
BUTTONUNPUBLISH: Unpublish
BUTTONUNPUBLISHDESC: 'Remove this page from the published site'
BUTTONUNPUBLISHDESC: "Remove this page from the published site"
Comments: Comments
Content: Content
DEFAULTABOUTCONTENT: '<p>You can fill this page out with your own content, or delete it and create your own pages.<br /></p>'
DEFAULTABOUTTITLE: 'About Us'
DEFAULTCONTACTCONTENT: '<p>You can fill this page out with your own content, or delete it and create your own pages.<br /></p>'
DEFAULTCONTACTTITLE: 'Contact Us'
DEFAULTHOMECONTENT: '<p>Welcome to SilverStripe! This is the default homepage. You can edit this page by opening <a href="admin/">the CMS</a>.</p><p>You can now access the <a href="http://docs.silverstripe.org">developer documentation</a>, or begin the <a href="http://www.silverstripe.org/learn/lessons">SilverStripe lessons</a>.</p>'
DEFAULTABOUTCONTENT: "<p>You can fill this page out with your own content, or delete it and create your own pages.<br /></p>"
DEFAULTABOUTTITLE: "About Us"
DEFAULTCONTACTCONTENT: "<p>You can fill this page out with your own content, or delete it and create your own pages.<br /></p>"
DEFAULTCONTACTTITLE: "Contact Us"
DEFAULTHOMECONTENT: "<p>Welcome to SilverStripe! This is the default homepage. You can edit this page by opening <a href=\"admin/\">the CMS</a>.</p><p>You can now access the <a href=\"http://docs.silverstripe.org\">developer documentation</a>, or begin the <a href=\"http://www.silverstripe.org/learn/lessons\">SilverStripe lessons</a>.</p>"
DEFAULTHOMETITLE: Home
DELETEDPAGEHELP: 'Page is no longer published'
DELETEDPAGEHELP: "Page is no longer published"
DELETEDPAGESHORT: Deleted
DEPENDENT_NOTE: 'The following pages depend on this page. This includes virtual pages, redirector pages, and pages with content links.'
DESCRIPTION: 'Generic content page'
DependtPageColumnLinkType: 'Link type'
DEPENDENT_NOTE: "The following pages depend on this page. This includes virtual pages, redirector pages, and pages with content links."
DESCRIPTION: "Generic content page"
DependtPageColumnLinkType: "Link type"
DependtPageColumnURL: URL
EDITANYONE: 'Anyone who can log-in to the CMS'
EDITHEADER: 'Who can edit this page?'
EDITONLYTHESE: 'Only these people (choose from list)'
EDITORGROUPS: 'Editor Groups'
EDIT_ALL_DESCRIPTION: 'Edit any page'
EDIT_ALL_HELP: 'Ability to edit any page on the site, regardless of the settings on the Access tab. Requires the "Access to ''Pages'' section" permission'
Editors: 'Editors Groups'
GroupPlaceholder: 'Click to select group'
HASBROKENLINKS: 'This page has broken links.'
EDITANYONE: "Anyone who can log-in to the CMS"
EDITHEADER: "Who can edit this page?"
EDITONLYTHESE: "Only these people (choose from list)"
EDITORGROUPS: "Editor Groups"
EDIT_ALL_DESCRIPTION: "Edit any page"
EDIT_ALL_HELP: "Ability to edit any page on the site, regardless of the settings on the Access tab. Requires the \"Access to 'Pages' section\" permission"
Editors: "Editors Groups"
GroupPlaceholder: "Click to select group"
HASBROKENLINKS: "This page has broken links."
HTMLEDITORTITLE: Content
INHERIT: 'Inherit from parent page'
LASTPUBLISHED: 'Last published'
LASTSAVED: 'Last saved'
LASTUPDATED: 'Last Updated'
LINKCHANGENOTE: 'Changing this page''s link will also affect the links of all child pages.'
LINKSALREADYUNIQUE: ' {url} is already unique'
LINKSCHANGEDTO: ' changed {url1} -> {url2}'
MENUTITLE: 'Navigation label'
METADESC: 'Meta Description'
METADESCHELP: 'Search engines use this content for displaying search results (although it will not influence their ranking).'
METAEXTRA: 'Custom Meta Tags'
METAEXTRAHELP: 'HTML tags for additional meta information. For example &lt;meta name="customName" content="your custom content here" /&gt;'
MODIFIEDONDRAFTHELP: 'Page has unpublished changes'
INHERIT: "Inherit from parent page"
LASTPUBLISHED: "Last published"
LASTSAVED: "Last saved"
LASTUPDATED: "Last Updated"
LINKCHANGENOTE: "Changing this page's link will also affect the links of all child pages."
LINKSALREADYUNIQUE: " {url} is already unique"
LINKSCHANGEDTO: " changed {url1} -> {url2}"
MENUTITLE: "Navigation label"
METADESC: "Meta Description"
METADESCHELP: "Search engines use this content for displaying search results (although it will not influence their ranking)."
METAEXTRA: "Custom Meta Tags"
METAEXTRAHELP: "HTML tags for additional meta information. For example &lt;meta name=\"customName\" content=\"your custom content here\" /&gt;"
MODIFIEDONDRAFTHELP: "Page has unpublished changes"
MODIFIEDONDRAFTSHORT: Modified
MetadataToggle: Metadata
MoreOptions: 'More options'
NOTPUBLISHED: 'Not published'
OBSOLETECLASS: 'This page is of obsolete type {type}. Saving will reset its type and you may lose data'
ONLIVEONLYSHORT: 'On live only'
ONLIVEONLYSHORTHELP: 'Page is published, but has been deleted from draft'
PAGELOCATION: 'Page location'
PAGETITLE: 'Page name'
PAGETYPE: 'Page type'
PARENTID: 'Parent page'
PARENTTYPE: 'Page location'
PARENTTYPE_ROOT: 'Top-level page'
PARENTTYPE_SUBPAGE: 'Sub-page underneath a parent page'
PERMISSION_GRANTACCESS_DESCRIPTION: 'Manage access rights for content'
PERMISSION_GRANTACCESS_HELP: 'Allow setting of page-specific access restrictions in the "Pages" section.'
MoreOptions: "More options"
NOTPUBLISHED: "Not published"
OBSOLETECLASS: "This page is of obsolete type {type}. Saving will reset its type and you may lose data"
ONLIVEONLYSHORT: "On live only"
ONLIVEONLYSHORTHELP: "Page is published, but has been deleted from draft"
PAGELOCATION: "Page location"
PAGETITLE: "Page name"
PAGETYPE: "Page type"
PARENTID: "Parent page"
PARENTTYPE: "Page location"
PARENTTYPE_ROOT: "Top-level page"
PARENTTYPE_SUBPAGE: "Sub-page underneath a parent page"
PERMISSION_GRANTACCESS_DESCRIPTION: "Manage access rights for content"
PERMISSION_GRANTACCESS_HELP: "Allow setting of page-specific access restrictions in the \"Pages\" section."
PLURALNAME: Pages
PageTypNotAllowedOnRoot: 'Page type "{type}" is not allowed on the root level'
PageTypeNotAllowed: 'Page type "{type}" not allowed as child of this parent page'
REMOVEDFROMDRAFTHELP: 'Page is published, but has been deleted from draft'
REMOVEDFROMDRAFTSHORT: 'Removed from draft'
REMOVE_INSTALL_WARNING: 'Warning: You should remove install.php from this SilverStripe install for security reasons.'
REORGANISE_DESCRIPTION: 'Change site structure'
REORGANISE_HELP: 'Rearrange pages in the site tree through drag&drop.'
SHOWINMENUS: 'Show in menus?'
SHOWINSEARCH: 'Show in search?'
PageTypNotAllowedOnRoot: "Page type \"{type}\" is not allowed on the root level"
PageTypeNotAllowed: "Page type \"{type}\" not allowed as child of this parent page"
REMOVEDFROMDRAFTHELP: "Page is published, but has been deleted from draft"
REMOVEDFROMDRAFTSHORT: "Removed from draft"
REMOVE_INSTALL_WARNING: "Warning: You should remove install.php from this SilverStripe install for security reasons."
REORGANISE_DESCRIPTION: "Change site structure"
REORGANISE_HELP: "Rearrange pages in the site tree through drag&drop."
SHOWINMENUS: "Show in menus?"
SHOWINSEARCH: "Show in search?"
SINGULARNAME: Page
TABBEHAVIOUR: Behavior
TABCONTENT: 'Main Content'
TABDEPENDENT: 'Dependent pages'
TOPLEVEL: 'Site Content (Top Level)'
TOPLEVELCREATORGROUPS: 'Top level creators'
URLSegment: 'URL Segment'
VIEWERGROUPS: 'Viewer Groups'
VIEW_ALL_DESCRIPTION: 'View any page'
VIEW_ALL_HELP: 'Ability to view any page on the site, regardless of the settings on the Access tab. Requires the "Access to ''Pages'' section" permission'
VIEW_DRAFT_CONTENT: 'View draft content'
VIEW_DRAFT_CONTENT_HELP: 'Applies to viewing pages outside of the CMS in draft mode. Useful for external collaborators without CMS access.'
Viewers: 'Viewers Groups'
TABCONTENT: "Main Content"
TABDEPENDENT: "Dependent pages"
TOPLEVEL: "Site Content (Top Level)"
TOPLEVELCREATORGROUPS: "Top level creators"
URLSegment: "URL Segment"
VIEWERGROUPS: "Viewer Groups"
VIEW_ALL_DESCRIPTION: "View any page"
VIEW_ALL_HELP: "Ability to view any page on the site, regardless of the settings on the Access tab. Requires the \"Access to 'Pages' section\" permission"
VIEW_DRAFT_CONTENT: "View draft content"
VIEW_DRAFT_CONTENT_HELP: "Applies to viewing pages outside of the CMS in draft mode. Useful for external collaborators without CMS access."
Viewers: "Viewers Groups"
Visibility: Visibility
has_one_Parent: 'Parent Page'
many_many_BackLinkTracking: 'Backlink Tracking'
many_many_ImageTracking: 'Image Tracking'
many_many_LinkTracking: 'Link Tracking'
has_one_Parent: "Parent Page"
many_many_BackLinkTracking: "Backlink Tracking"
many_many_ImageTracking: "Image Tracking"
many_many_LinkTracking: "Link Tracking"
SiteTreeFileExtension:
BACKLINK_LIST_DESCRIPTION: 'This list shows all pages where the file has been added through a WYSIWYG editor.'
BACKLINK_LIST_DESCRIPTION: "This list shows all pages where the file has been added through a WYSIWYG editor."
EDIT: Edit
TITLE_INDEX: '#'
TITLE_INDEX: "#"
TITLE_TYPE: Type
TITLE_USED_ON: 'Used on'
TITLE_USED_ON: "Used on"
SiteTreeURLSegmentField:
EMPTY: 'Please enter a URL Segment or click cancel'
HelpChars: ' Special characters are automatically converted or removed.'
EMPTY: "Please enter a URL Segment or click cancel"
HelpChars: " Special characters are automatically converted or removed."
URLSegmentField:
Cancel: Cancel
Edit: Edit
OK: OK
ViewArchivedEmail_ss:
CANACCESS: 'You can access the archived site at this link:'
HAVEASKED: 'You have asked to view the content of our site on'
CANACCESS: "You can access the archived site at this link:"
HAVEASKED: "You have asked to view the content of our site on"
VirtualPage:
CHOOSE: 'Linked Page'
DESCRIPTION: 'Displays the content of another page'
CHOOSE: "Linked Page"
DESCRIPTION: "Displays the content of another page"
EditLink: edit
HEADER: 'This is a virtual page'
HEADERWITHLINK: 'This is a virtual page copying content from "{title}" ({link})'
PLURALNAME: 'Virtual Pages'
PageTypNotAllowedOnRoot: 'Original page type "{type}" is not allowed on the root level for this virtual page'
SINGULARNAME: 'Virtual Page'
HEADER: "This is a virtual page"
HEADERWITHLINK: "This is a virtual page copying content from \"{title}\" ({link})"
PLURALNAME: "Virtual Pages"
PageTypNotAllowedOnRoot: "Original page type \"{type}\" is not allowed on the root level for this virtual page"
SINGULARNAME: "Virtual Page"

View File

@ -545,6 +545,10 @@ class SiteTreeTest extends SapphireTest {
$this->assertTrue(singleton('SiteTreeTest_ClassA')->canCreate(null));
$this->assertFalse(singleton('SiteTreeTest_ClassA')->canCreate(null, array('Parent' => $parentB)));
$this->assertTrue(singleton('SiteTreeTest_ClassC')->canCreate(null, array('Parent' => $parentB)));
// Test creation underneath a parent which doesn't exist in the database. This should
// fall back to checking whether the user can create pages at the root of the site
$this->assertTrue(singleton('SiteTree')->canCreate(null, array('Parent' => singleton('SiteTree'))));
}
public function testEditPermissionsOnDraftVsLive() {