Merge remote-tracking branch 'origin/3.1'

Conflicts:
	lang/ja_JP.yml
	lang/lt.yml
	lang/pl.yml
This commit is contained in:
Ingo Schommer 2013-02-18 14:18:27 +01:00
commit c09bca6fac
39 changed files with 566 additions and 451 deletions

View File

@ -5,7 +5,6 @@ php:
env:
- TESTDB=MYSQL
- TESTDB=PGSQL
matrix:
exclude:

View File

@ -753,7 +753,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
// Don't allow navigating into children nodes on filtered lists
$fields = array(
'getTreeTitle' => _t('SiteTree.PAGETITLE', 'Page Title'),
'Created' => _t('SiteTree.CREATED', 'Date Created'),
'singular_name' => _t('SiteTree.PAGETYPE'),
'LastEdited' => _t('SiteTree.LASTUPDATED', 'Last Updated'),
);
$gridField->getConfig()->getComponentByType('GridFieldSortableHeader')->setFieldSorting(array('getTreeTitle' => 'Title'));

View File

@ -15,6 +15,8 @@ class CMSPageHistoryController extends CMSMain {
static $allowed_actions = array(
'VersionsForm',
'CompareVersionsForm',
'show',
'compare'
);
@ -74,6 +76,16 @@ class CMSPageHistoryController extends CMSMain {
return $negotiator->respond($request);
}
public function getSilverStripeNavigator() {
$record = $this->getRecord($this->currentPageID(), $this->request->param('VersionID'));
if($record) {
$navigator = new SilverStripeNavigator($record);
return $navigator->renderWith($this->getTemplatesWithSuffix('_SilverStripeNavigator'));
} else {
return false;
}
}
/**
* Returns the read only version of the edit form. Detaches all {@link FormAction}
@ -112,11 +124,6 @@ class CMSPageHistoryController extends CMSMain {
$fields = $fields->makeReadonly();
foreach($fields->dataFields() as $field) {
$field->dontEscape = true;
$field->reserveNL = true;
}
if($compareID) {
$link = Controller::join_links(
$this->Link('show'),

View File

@ -301,7 +301,12 @@ class ContentController extends Controller {
$surname = Convert::raw2xml($member->Surname);
$logInMessage = _t('ContentController.LOGGEDINAS', 'Logged in as') ." {$firstname} {$surname} - <a href=\"Security/logout\">". _t('ContentController.LOGOUT', 'Log out'). "</a>";
} else {
$logInMessage = _t('ContentController.NOTLOGGEDIN', 'Not logged in') ." - <a href=\"Security/login\">". _t('ContentController.LOGIN', 'Login') ."</a>";
$logInMessage = sprintf(
'%s - <a href="%s">%s</a>' ,
_t('ContentController.NOTLOGGEDIN', 'Not logged in') ,
Config::inst()->get('Security', 'login_url'),
_t('ContentController.LOGIN', 'Login') ."</a>"
);
}
$viewPageIn = _t('ContentController.VIEWPAGEIN', 'View Page in:');

View File

@ -182,6 +182,36 @@ class SilverStripeNavigatorItem extends ViewableData {
public function canView($member = null) {
return true;
}
/**
* Counts as "archived" if the current record is a different version from both live and draft.
*
* @return boolean
*/
public function isArchived() {
if(!$this->record->hasExtension('Versioned')) return false;
if(!isset($this->record->_cached_isArchived)) {
$baseTable = ClassInfo::baseDataClass($this->record->class);
$currentDraft = Versioned::get_one_by_stage(
$baseTable,
'Stage',
sprintf('"%s"."ID" = %d', $baseTable, $this->record->ID)
);
$currentLive = Versioned::get_one_by_stage(
$baseTable,
'Live',
sprintf('"%s"."ID" = %d', $baseTable, $this->record->ID)
);
$this->record->_cached_isArchived = (
(!$currentDraft || ($currentDraft && $this->record->Version != $currentDraft->Version))
&& (!$currentLive || ($currentLive && $this->record->Version != $currentLive->Version))
);
}
return $this->record->_cached_isArchived;
}
}
/**
@ -198,7 +228,7 @@ class SilverStripeNavigatorItem_CMSLink extends SilverStripeNavigatorItem {
_t('ContentController.CMS', 'CMS')
);
}
public function getTitle() {
return _t('ContentController.CMS', 'CMS', 'Used in navigation. Should be a short label');
}
@ -208,13 +238,13 @@ class SilverStripeNavigatorItem_CMSLink extends SilverStripeNavigatorItem {
}
public function isActive() {
return (Controller::curr() instanceof CMSMain);
return (Controller::curr() instanceof LeftAndMain);
}
public function canView($member = null) {
return (
// Don't show in CMS
!(Controller::curr() instanceof CMSMain)
// Don't show in CMS
!(Controller::curr() instanceof LeftAndMain)
// Don't follow redirects in preview, they break the CMS editing form
&& !($this->record instanceof RedirectorPage)
);
@ -246,7 +276,12 @@ class SilverStripeNavigatorItem_StageLink extends SilverStripeNavigatorItem {
}
public function getLink() {
return Controller::join_links($this->record->PreviewLink(), '?stage=Stage');
$date = Versioned::current_archived_date();
return Controller::join_links(
$this->record->PreviewLink(),
'?stage=Stage',
$date ? '?archiveDate=' . $date : null
);
}
public function canView($member = null) {
@ -262,6 +297,7 @@ class SilverStripeNavigatorItem_StageLink extends SilverStripeNavigatorItem {
return (
Versioned::current_stage() == 'Stage'
&& !(ClassInfo::exists('SiteTreeFutureState') && SiteTreeFutureState::get_future_datetime())
&& !$this->isArchived()
);
}
@ -312,7 +348,10 @@ class SilverStripeNavigatorItem_LiveLink extends SilverStripeNavigatorItem {
}
public function isActive() {
return (!Versioned::current_stage() || Versioned::current_stage() == 'Live');
return (
(!Versioned::current_stage() || Versioned::current_stage() == 'Live')
&& !$this->isArchived()
);
}
protected function getLivePage() {
@ -336,9 +375,9 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem {
$this->recordLink = $this->record->PreviewLink();
return "<a class=\"ss-ui-button\" href=\"$this->recordLink?archiveDate={$this->record->LastEdited}\" target=\"_blank\">". _t('ContentController.ARCHIVEDSITE', 'Preview version') ."</a>";
}
public function getTitle() {
return _t('ContentController.VERSION', 'Version').': '.$this->record->LastEdited;
return _t('SilverStripeNavigator.ARCHIVED', 'Archived');
}
public function getMessage() {
@ -350,7 +389,7 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem {
}
public function getLink() {
return $this->record->PreviewLink() . '?archiveDate=' . $this->record->LastEdited;
return $this->record->PreviewLink() . '?archiveDate=' . urlencode($this->record->LastEdited);
}
public function canView($member = null) {
@ -363,32 +402,7 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem {
}
public function isActive() {
return (Versioned::current_archived_date());
return $this->isArchived();
}
/**
* Counts as "archived" if the current record is a different version from both live and draft.
*
* @return boolean
*/
public function isArchived() {
if(!$this->record->hasExtension('Versioned')) return false;
$baseTable = ClassInfo::baseDataClass($this->record->class);
$currentDraft = Versioned::get_one_by_stage(
$baseTable,
'Stage',
sprintf('"%s"."ID" = %d', $baseTable, $this->record->ID)
);
$currentLive = Versioned::get_one_by_stage(
$baseTable,
'Live',
sprintf('"%s"."ID" = %d', $baseTable, $this->record->ID)
);
return (
(!$currentDraft || ($currentDraft && $this->record->Version != $currentDraft->Version))
&& (!$currentLive || ($currentLive && $this->record->Version != $currentLive->Version))
);
}
}

View File

@ -15,7 +15,7 @@ class SiteTreeURLSegmentField extends TextField {
/**
* @var string
*/
protected $helpText, $urlPrefix;
protected $helpText, $urlPrefix, $urlSuffix;
static $allowed_actions = array(
'suggest'
@ -25,6 +25,16 @@ class SiteTreeURLSegmentField extends TextField {
return rawurldecode($this->value);
}
public function getAttributes() {
return array_merge(
parent::getAttributes(),
array(
'data-prefix' => $this->getURLPrefix(),
'data-suffix' => '?stage=Stage'
)
);
}
public function Field($properties = array()) {
Requirements::javascript(CMS_DIR . '/javascript/SiteTreeURLSegmentField.js');
Requirements::add_i18n_javascript(CMS_DIR . '/javascript/lang', false, true);
@ -85,9 +95,20 @@ class SiteTreeURLSegmentField extends TextField {
return $this->urlPrefix;
}
public function getURLSuffix() {
return $this->urlSuffix;
}
public function setURLSuffix($suffix) {
$this->urlSuffix = $suffix;
}
public function Type() {
return 'text urlsegment';
}
public function getURL() {
return Controller::join_links($this->getURLPrefix(), $this->Value(), $this->getURLSuffix());
}
}

View File

@ -21,7 +21,7 @@ class ErrorPage extends Page {
"ShowInMenus" => 0,
"ShowInSearch" => 0
);
static $allowed_children = array();
static $description = 'Custom content for different error cases (e.g. "Page not found")';
@ -39,6 +39,8 @@ class ErrorPage extends Page {
static public function response_for($statusCode) {
// first attempt to dynamically generate the error page
if($errorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = $statusCode")) {
Requirements::clear();
Requirements::clear_combined_files();
return ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', ''), DataModel::inst());
}
@ -57,7 +59,7 @@ class ErrorPage extends Page {
return $response;
}
}
/**
* Ensures that there is always a 404 page
* by checking if there's an instance of
@ -72,65 +74,84 @@ class ErrorPage extends Page {
if(!file_exists(ASSETS_PATH)) {
mkdir(ASSETS_PATH);
}
$pageNotFoundErrorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '404'");
$pageNotFoundErrorPageExists = ($pageNotFoundErrorPage && $pageNotFoundErrorPage->exists()) ? true : false;
$pageNotFoundErrorPagePath = self::get_filepath_for_errorcode(404);
if(!($pageNotFoundErrorPageExists && file_exists($pageNotFoundErrorPagePath))) {
if(!$pageNotFoundErrorPageExists) {
$pageNotFoundErrorPage = new ErrorPage();
$pageNotFoundErrorPage->ErrorCode = 404;
$pageNotFoundErrorPage->Title = _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found');
$pageNotFoundErrorPage->Content = _t('ErrorPage.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>');
$pageNotFoundErrorPage->write();
$pageNotFoundErrorPage->publish('Stage', 'Live');
}
// Ensure a static error page is created from latest error page content
$response = Director::test(Director::makeRelative($pageNotFoundErrorPage->Link()));
$written = null;
if($fh = fopen($pageNotFoundErrorPagePath, 'w')) {
$written = fwrite($fh, $response->getBody());
fclose($fh);
}
if($written) {
DB::alteration_message('404 error page created', 'created');
} else {
DB::alteration_message(sprintf('404 error page could not be created at %s. Please check permissions', $pageNotFoundErrorPagePath), 'error');
}
}
$serverErrorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '500'");
$serverErrorPageExists = ($serverErrorPage && $serverErrorPage->exists()) ? true : false;
$serverErrorPagePath = self::get_filepath_for_errorcode(500);
if(!($serverErrorPageExists && file_exists($serverErrorPagePath))) {
if(!$serverErrorPageExists) {
$serverErrorPage = new ErrorPage();
$serverErrorPage->ErrorCode = 500;
$serverErrorPage->Title = _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error');
$serverErrorPage->Content = _t('ErrorPage.DEFAULTSERVERERRORPAGECONTENT', '<p>Sorry, there was a problem with handling your request.</p>');
$serverErrorPage->write();
$serverErrorPage->publish('Stage', 'Live');
}
// Ensure a static error page is created from latest error page content
$response = Director::test(Director::makeRelative($serverErrorPage->Link()));
$written = null;
if($fh = fopen($serverErrorPagePath, 'w')) {
$written = fwrite($fh, $response->getBody());
fclose($fh);
}
if($written) {
DB::alteration_message('500 error page created', 'created');
} else {
DB::alteration_message(sprintf('500 error page could not be created at %s. Please check permissions', $serverErrorPagePath), 'error');
$defaultPages = $this->getDefaultRecords();
foreach($defaultPages as $defaultData) {
$code = $defaultData['ErrorCode'];
$page = DataObject::get_one(
'ErrorPage',
sprintf("\"ErrorCode\" = '%s'", $code)
);
$pageExists = ($page && $page->exists());
$pagePath = self::get_filepath_for_errorcode($code);
if(!($pageExists && file_exists($pagePath))) {
if(!$pageExists) {
$page = new ErrorPage($defaultData);
$page->write();
$page->publish('Stage', 'Live');
}
// Ensure a static error page is created from latest error page content
$response = Director::test(Director::makeRelative($page->Link()));
$written = null;
if($fh = fopen($pagePath, 'w')) {
$written = fwrite($fh, $response->getBody());
fclose($fh);
}
if($written) {
DB::alteration_message(
sprintf('%s error page created', $code),
'created'
);
} else {
DB::alteration_message(
sprintf(
'%s error page could not be created at %s. Please check permissions',
$code,
$pagePath
),
'error'
);
}
}
}
}
}
/**
* Returns an array of arrays, each of which defines
* properties for a new ErrorPage record.
*
* @return Array
*/
protected function getDefaultRecords() {
$data = array(
array(
'ErrorCode' => 404,
'Title' => _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'),
'Content' => _t(
'ErrorPage.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>'
)
),
array(
'ErrorCode' => 500,
'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'),
'Content' => _t(
'ErrorPage.DEFAULTSERVERERRORPAGECONTENT',
'<p>Sorry, there was a problem with handling your request.</p>'
)
)
);
$this->extend('getDefaultRecords', $data);
return $data;
}
public function getCMSFields() {
$fields = parent::getCMSFields();

View File

@ -577,14 +577,14 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
$page = parent::duplicate(false);
$page->Sort = 0;
$this->extend('onBeforeDuplicate', $page);
$this->invokeWithExtensions('onBeforeDuplicate', $page);
if($doWrite) {
$page->write();
$page = $this->duplicateManyManyRelations($this, $page);
}
$this->extend('onAfterDuplicate', $page);
$this->invokeWithExtensions('onAfterDuplicate', $page);
return $page;
}
@ -1653,7 +1653,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
if($table == 'SiteTree_Live') {
$publishedClass = $origPublished['ClassName'];
$origPublishedObj = new $publishedClass($origPublished);
$this->extend('onRenameLinkedAsset', $origPublishedObj);
$this->invokeWithExtensions('onRenameLinkedAsset', $origPublishedObj);
}
}
}
@ -1829,11 +1829,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
(self::nested_urls() && $this->ParentID ? $this->Parent()->RelativeLink(true) : null)
);
$url = (strlen($baseLink) > 36) ? "..." .substr($baseLink, -32) : $baseLink;
$urlsegment = new SiteTreeURLSegmentField("URLSegment", $this->fieldLabel('URLSegment'));
$urlsegment->setURLPrefix($url);
$urlsegment->setURLPrefix($baseLink);
$helpText = (self::nested_urls() && count($this->Children())) ? $this->fieldLabel('LinkChangeNote') : '';
if(!URLSegmentFilter::$default_allow_multibyte) {
$helpText .= $helpText ? '<br />' : '';
@ -2265,7 +2262,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
if(!$this->canDeleteFromLive()) return false;
if(!$this->ID) return false;
$this->extend('onBeforeUnpublish');
$this->invokeWithExtensions('onBeforeUnpublish', $this);
$origStage = Versioned::current_stage();
Versioned::reading_stage('Live');
@ -2295,7 +2292,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
$this->write();
}
$this->extend('onAfterUnpublish');
$this->invokeWithExtensions('onAfterUnpublish', $this);
return true;
}
@ -2304,6 +2301,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
* Revert the draft changes: replace the draft content with the content on live
*/
public function doRevertToLive() {
$this->invokeWithExtensions('onBeforeRevertToLive', $this);
$this->publish("Live", "Stage", false);
// Use a clone to get the updates made by $this->publish
@ -2316,7 +2315,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
$page->write();
}
$this->extend('onAfterRevertToLive');
$this->invokeWithExtensions('onAfterRevertToLive', $this);
}
/**

View File

@ -19,14 +19,14 @@ class SiteTreeFolderExtension extends DataExtension {
}
foreach($classes as $className) {
$query = singleton($className)->extendedSQL();
$query = new DataQuery($className);
$ids = $query->execute()->column();
if(!count($ids)) continue;
foreach(singleton($className)->has_one() as $relName => $joinClass) {
if($joinClass == 'Image' || $joinClass == 'File') {
$fieldName = $relName .'ID';
$query = singleton($className)->extendedSQL("$fieldName > 0");
$query = DataList::create($className)->where("$fieldName > 0");
$query->distinct = true;
$query->select(array($fieldName));
$usedFiles = array_merge($usedFiles, $query->execute()->column());

View File

@ -142,7 +142,19 @@ class FilesystemPublisher extends StaticPublisher {
}
}
/**
* Uses {@link Director::test()} to perform in-memory HTTP requests
* on the passed-in URLs.
*
* @param array $urls Relative URLs
* @return array Result, keyed by URL. Keys:
* - "statuscode": The HTTP status code
* - "redirect": A redirect location (if applicable)
* - "path": The filesystem path where the cache has been written
*/
public function publishPages($urls) {
$result = array();
// Do we need to map these?
// Detect a numerically indexed arrays
if (is_numeric(join('', array_keys($urls)))) $urls = $this->urlsToPaths($urls);
@ -167,8 +179,9 @@ class FilesystemPublisher extends StaticPublisher {
$files = array();
$i = 0;
$totalURLs = sizeof($urls);
foreach($urls as $url => $path) {
$origUrl = $url;
$result[$origUrl] = array('statuscode' => null, 'redirect' => null, 'path' => null);
if(self::$static_base_url) Director::setBaseURL(self::$static_base_url);
$i++;
@ -189,6 +202,10 @@ class FilesystemPublisher extends StaticPublisher {
if(Director::is_relative_url($url)) $url = Director::absoluteURL($url);
$response = Director::test(str_replace('+', ' ', $url));
if($response) {
$result[$origUrl]['statuscode'] = $response->getStatusCode();
}
Requirements::clear();
singleton('DataObject')->flushCache();
@ -214,6 +231,7 @@ class FilesystemPublisher extends StaticPublisher {
if(is_object($response)) {
if($response->getStatusCode() == '301' || $response->getStatusCode() == '302') {
$absoluteURL = Director::absoluteURL($response->getHeader('Location'));
$result[$origUrl]['redirect'] = $response->getHeader('Location');
$content = "<meta http-equiv=\"refresh\" content=\"2; URL=$absoluteURL\">";
} else {
$content = $response->getBody();
@ -231,7 +249,7 @@ class FilesystemPublisher extends StaticPublisher {
);
}
$files[] = array(
$files[$origUrl] = array(
'Content' => $content,
'Folder' => dirname($path).'/',
'Filename' => basename($path),
@ -268,17 +286,22 @@ class FilesystemPublisher extends StaticPublisher {
if($this->fileExtension == 'php') SSViewer::setOption('rewriteHashlinks', true);
$base = BASE_PATH . "/$this->destFolder";
foreach($files as $file) {
foreach($files as $origUrl => $file) {
Filesystem::makeFolder("$base/$file[Folder]");
$path = "$base/$file[Folder]$file[Filename]";
$result[$origUrl]['path'] = $path;
if(isset($file['Content'])) {
$fh = fopen("$base/$file[Folder]$file[Filename]", "w");
$fh = fopen($path, "w");
fwrite($fh, $file['Content']);
fclose($fh);
} else if(isset($file['Copy'])) {
copy($file['Copy'], "$base/$file[Folder]$file[Filename]");
copy($file['Copy'], $path);
}
}
return $result;
}
/**

View File

@ -22,10 +22,11 @@
/** ------------------------------------------------------------------ URLSegment field ----------------------------------------------------------------- */
.field.urlsegment.loading { background: url(../images/loading.gif) no-repeat 162px 8px; }
.field.urlsegment .prefix, .field.urlsegment .preview { padding-top: 8px; display: inline-block; }
.field.urlsegment .prefix { color: #777; }
.field.urlsegment .cancel, .field.urlsegment .update, .field.urlsegment .edit { margin-left: 7px; }
.field.urlsegment .preview { padding-top: 8px; display: inline-block; }
.field.urlsegment input.text { width: 250px; }
.field.urlsegment input.text, .field.urlsegment .cancel, .field.urlsegment .update, .field.urlsegment .edit { margin-right: 8px; }
.field.urlsegment .help { margin-left: 0; }
.field.urlsegment .edit-holder { display: none; }
#Form_EditForm #Title .update { margin-left: 7px; }

View File

@ -27,20 +27,19 @@
self.data('OrigVal', self.val());
var form = self.parents('form');
var url_segment = $('.field.urlsegment', form).find(':text');
var live_link = $('input[name=LiveLink]', form);
self._addActions();
var form = self.closest('form');
var urlSegmentInput = $('input:text[name=URLSegment]', form);
var liveLinkInput = $('input[name=LiveLink]', form);
if(url_segment.length > 0) {
if (urlSegmentInput.length > 0) {
self._addActions();
this.bind('change', function(e) {
var origTitle = self.data('OrigVal');
var title = self.val();
self.data('OrigVal', title);
// Criteria for defining a "new" page
if ((url_segment.val().indexOf('new') == 0) && live_link.val() == '') {
if ((urlSegmentInput.val().indexOf('new') == 0) && liveLinkInput.val() == '') {
self.updateURLSegment(title);
} else {
$('.update', self.parent()).show();
@ -83,9 +82,10 @@
* (String) title
*/
updateURLSegment: function(title) {
var url_segment_field = $('.field.urlsegment', this.parents('form'));
var urlSegmentInput = $('input:text[name=URLSegment]', this.closest('form'));
var urlSegmentField = urlSegmentInput.closest('.field.urlsegment');
var updateURLFromTitle = $('.update', this.parent());
url_segment_field.update(title);
urlSegmentField.update(title);
if (updateURLFromTitle.is(':visible')) {
updateURLFromTitle.hide();
}

View File

@ -2,215 +2,125 @@
$.entwine('ss', function($) {
/**
* Class: .field.urlsegment
*
* Input validation on the URLSegment field
*
* Provides enhanced functionality (read-only/edit switch) and
* input validation on the URLSegment field
*/
$('.field.urlsegment:not(.readonly)').entwine({
/**
* Constructor: onmatch
*/
// Roughly matches the field width including edit button
MaxPreviewLength: 55,
Ellipsis: '...',
onmatch : function() {
// Only initialize the field if it contains an editable field.
// This ensures we don't get bogus previews on readonly fields.
if(this.find(':text').length) {
this._addActions(); // add elements and actions for editing
this.edit(); // toggle
this._autoInputWidth(); // set width of input field
}
if(this.find(':text').length) this.toggleEdit(false);
this.redraw();
this._super();
},
onunmatch: function() {
this._super();
redraw: function() {
var field = this.find(':text'),
url = field.data('prefix') + field.val(),
previewUrl = url;
// Truncate URL if required (ignoring the suffix, retaining the full value)
if(url.length > this.getMaxPreviewLength()) {
previewUrl = this.getEllipsis() + url.substr(url.length - this.getMaxPreviewLength(), url.length);
}
// Transfer current value to holder
this.find('.preview').attr('href', url + field.data('suffix')).text(previewUrl);
},
/**
* Function: edit
*
* Toggles the edit state of the field
*
* Return URLSegemnt val()
*
* Parameters:
* (Bool) auto (optional, triggers a second toggle)
* @param Boolean
*/
edit: function(auto) {
var field = this.find(':text'),
holder = this.find('.preview'),
edit = this.find('.edit'),
update = this.find('.update'),
cancel = this.find('.cancel'),
help = this.find('.help');
// transfer current value to holder
holder.text(field.val());
// toggle elements
if (field.is(':visible')) {
update.hide();
cancel.hide();
field.hide();
holder.show();
edit.show();
help.hide();
} else {
edit.hide();
holder.hide();
field.show();
update.show();
cancel.show();
help.show();
toggleEdit: function(toggle) {
var field = this.find(':text');
this.find('.preview-holder')[toggle ? 'hide' : 'show']();
this.find('.edit-holder')[toggle ? 'show' : 'hide']();
if(toggle) {
field.data("origval", field.val()); //retain current value for cancel
field.focus();
}
// field updated from another fields value
// reset to original state
if (auto) this.edit();
return field.val();
},
/**
* Function: update
*
* Commits the change of the URLSegment to the field
* Optional: pass in (String)
* to update the URLSegment
* Optional: pass in (String) to update the URLSegment
*/
update: function() {
var self = this,
field = this.find(':text'),
holder = this.find('.preview'),
currentVal = holder.text(),
updateVal,
title = arguments[0];
if (title && title !== "") {
updateVal = title;
} else {
updateVal = field.val();
}
currentVal = field.data('origval'),
title = arguments[0],
updateVal = (title && title !== "") ? title : field.val();
if (currentVal != updateVal) {
self.addClass('loading');
self.suggest(updateVal, function(data) {
var newVal = decodeURIComponent(data.value);
field.val(newVal);
self.edit(title);
this.addClass('loading');
this.suggest(updateVal, function(data) {
field.val(decodeURIComponent(data.value));
self.toggleEdit(false);
self.removeClass('loading');
self.redraw();
});
} else {
self.edit();
this.toggleEdit(false);
this.redraw();
}
},
/**
* Function: cancel
*
* Cancels any changes to the field
*
* Return URLSegemnt val()
*
*/
cancel: function() {
var field = this.find(':text'),
holder = this.find('.preview');
field.val(holder.text());
this.edit();
return field.val();
var field = this.find(':text');
field.val(field.data("origval"));
this.toggleEdit(false);
},
/**
* Function: suggest
*
* Return a value matching the criteria.
*
* Parameters:
* (String) val
* (Function) callback
* @param (String)
* @param (Function)
*/
suggest: function(val, callback) {
var field = this.find(':text'), urlParts = $.path.parseUrl(this.closest('form').attr('action')),
var field = this.find(':text'),
urlParts = $.path.parseUrl(this.closest('form').attr('action')),
url = urlParts.hrefNoSearch + '/field/' + field.attr('name') + '/suggest/?value=' + encodeURIComponent(val);
if(urlParts.search) url += '&' + urlParts.search.replace(/^\?/, '');
$.get(
url,
function(data) {callback.apply(this, arguments);}
);
},
/**
* Function: _addActions
*
* Utility to add edit buttons and actions
*
*/
_addActions: function() {
var self = this,
field = this.find(':text'),
preview,
editAction,
updateAction,
cancelAction;
// element to display non-editable text
preview = $('<span />', {
'class': 'preview'
});
// edit button
editAction = $('<button />', {
'class': 'ss-ui-button ss-ui-button-small edit',
'text': ss.i18n._t('URLSEGMENT.Edit', 'Edit'),
'click': function(e) {
e.preventDefault();
self.edit();
self.find(':text').focus();
}
});
// update button
updateAction = $('<button />', {
'class': 'update ss-ui-button-small',
'text': ss.i18n._t('URLSEGMENT.OK', 'OK'),
'click': function(e) {
e.preventDefault();
self.update();
}
});
// cancel button
cancelAction = $('<button />', {
'class': 'cancel ss-ui-action-minor ss-ui-button-small',
'href': '#',
'text': ss.i18n._t('URLSEGMENT.Cancel', 'Cancel'),
'click': function(e) {
e.preventDefault();
self.cancel();
}
});
// insert elements
preview.insertAfter('.prefix');
editAction.insertAfter(field);
cancelAction.insertAfter(field);
updateAction.insertAfter(field);
},
/**
* Function: _autoInputWidth
*
* Sets the width of input so it lines up with the other fields
*/
_autoInputWidth: function() {
var field = this.find(':text');
field.width((field.width() + 15) - this.find('.prefix').width());
$.get(url, function(data) {callback.apply(this, arguments);});
}
});
$('.field.urlsegment .edit').entwine({
onclick: function(e) {
e.preventDefault();
this.closest('.field').toggleEdit(true);
}
});
$('.field.urlsegment .update').entwine({
onclick: function(e) {
e.preventDefault();
this.closest('.field').update();
}
});
$('.field.urlsegment .cancel').entwine({
onclick: function(e) {
e.preventDefault();
this.closest('.field').cancel();
}
});
});
}(jQuery));

39
javascript/lang/nl_NL.js Normal file
View File

@ -0,0 +1,39 @@
if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
} else {
ss.i18n.addDictionary('nl_NL', {
'CMSMAIN.WARNINGSAVEPAGESBEFOREADDING' : "U moet de pagina opslaan voordat u kinderen kan toevoegen",
'CMSMAIN.CANTADDCHILDREN' : "Je kunt geen kinderen toevoegen aan de geselecteerde knoop",
'CMSMAIN.ERRORADDINGPAGE' : 'Fout toevoegen pagina',
'CMSMAIN.FILTEREDTREE' : 'Gefilterd om alleen aangepaste paginas te tonen',
'CMSMAIN.ERRORFILTERPAGES' : 'Kon niet filteren om alleen paginas <br />%s te tonen.',
'CMSMAIN.ERRORUNFILTER' : 'Ongefilterde structuur',
'CMSMAIN.PUBLISHINGPAGES' : 'Paginas aan het publiceren...',
'CMSMAIN.SELECTONEPAGE' : "Selecteer minstens 1 pagina.",
'CMSMAIN.ERRORPUBLISHING' : 'Verwijder gepubliceerde paginas',
'CMSMAIN.REALLYDELETEPAGES' : "Wil je echt de geselecteerde %s pagina's verwijderen?",
'CMSMAIN.DELETINGPAGES' : 'Paginas verwijderen...',
'CMSMAIN.ERRORDELETINGPAGES': 'Fout bij verwijderen paginas',
'CMSMAIN.PUBLISHING' : 'Publiceren...',
'CMSMAIN.RESTORING': 'Herstellen...',
'CMSMAIN.ERRORREVERTING': 'Error reverting to live content',
'CMSMAIN.SAVING' : 'opslaan...',
'CMSMAIN.SELECTMOREPAGES' : "Je hebt pagina(s) %s geselecteerd. \n\nWil je deze actie uitvoeren?",
'CMSMAIN.ALERTCLASSNAME': 'Het paginatype wordt aangepast na opslaan van de pagina',
'CMSMAIN.URLSEGMENTVALIDATION': 'URLs kunnen alleen bestaan uit letters, cijfers en koppeltekens.',
'AssetAdmin.BATCHACTIONSDELETECONFIRM': "Wil je deze mappen %s verwijderen?",
'AssetTableField.REALLYDELETE': 'Wil je de geselecteerde bestanden verwijderen??',
'AssetTableField.MOVING': 'Verplaats %s bestand(en)',
'CMSMAIN.AddSearchCriteria': 'Voeg criteria toe',
'WidgetAreaEditor.TOOMANY': 'Sorry, je hebt de maximaal aantal widgets bereikt',
'AssetAdmin.ConfirmDelete': 'Wil je deze map verwijderen en alle bestanden??',
'Folder.Name': 'Mapnaam',
'Tree.AddSubPage': 'Voeg nieuwe pagina toe',
'Tree.EditPage': 'Aanpassen',
'CMSMain.ConfirmRestoreFromLive': "Do you really want to copy the published content to the draft site?",
'CMSMain.RollbackToVersion': "Do you really want to roll back to version #%s of this page?",
'URLSEGMENT.Edit': 'Aanpassen',
'URLSEGMENT.OK': 'OK',
'URLSEGMENT.Cancel': 'Annuleren'
});
}

View File

@ -63,7 +63,7 @@ cs:
CMSBatchActions:
DELETED_DRAFT_PAGES: 'Smazáno %d stránek z konceptu webu, %d selhání'
DELETED_PAGES: 'Odstraněno %d stránek z veřejného webu, %d selhání'
DELETE_DRAFT_PAGES: 'Smazáno z konceptu webu'
DELETE_DRAFT_PAGES: 'Smazat z konceptu webu'
DELETE_PAGES: 'Smazat ze zveřejněného webu'
PUBLISHED_PAGES: 'Zveřejněných %d stránek, %d selhání'
PUBLISH_PAGES: Zveřejnit
@ -307,7 +307,7 @@ cs:
Content: Obsah
DEFAULTABOUTCONTENT: '<p>Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky. <br /> </p>'
DEFAULTABOUTTITLE: 'O nás'
DEFAULTCONTACTCONTENT: '<p>Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky. <br /> </ p>'
DEFAULTCONTACTCONTENT: '<p>Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky. <br /> </p>'
DEFAULTCONTACTTITLE: 'Kontaktujte nás'
DEFAULTHOMECONTENT: '<p>Vítejte v CMS SilverStripe! Toto je úvodní stránka. Tuto i jiné stránky můžete změnit <a href="admin/">přihlášením do systému</a>. Můžete také navštívit <a href="http://doc.silverstripe.com">vývojářskou dokumentaci (EN)</a>, nebo <a href="http://doc.silverstripe.com/doku.php?id=tutorials">návody (EN)</a></p>'
DEFAULTHOMETITLE: 'Úvodní strana'
@ -318,7 +318,7 @@ cs:
DependtPageColumnLinkType: 'Typ odkazu'
DependtPageColumnURL: URL
EDITANYONE: 'Kdokoliv, kdo se do CMS může přihlásit'
EDITHEADER: 'Kdo může editovat tuto stránku?'
EDITHEADER: 'Kdo může tuto stránku editovat?'
EDITONLYTHESE: 'Jenom tito lidé (vyberte ze seznamu)'
EDITORGROUPS: 'Editor skupin'
EDIT_ALL_DESCRIPTION: 'Může editovat jakoukoli stránku webu, obcházeje bezpečnostní specifikaci stránky'
@ -368,7 +368,7 @@ cs:
VIEW_ALL_DESCRIPTION: 'Může vidět jakoukoli stránku webu, obcházeje bezpečnostní specifikaci stránky'
VIEW_ALL_HELP: 'Možnost zobrazit libovolnou stránku na webu, bez ohledu na nastavení na kartě Přístup. Vyžaduje povolení "Přístup k obsahu webu"'
VIEW_DRAFT_CONTENT: 'Zobrazit obsah konceptu'
VIEW_DRAFT_CONTENT_HELP: 'Vztahuje se na prohlížení stránek mimo CMS, v koncept módu. Užitečné pro externí spolupracovníky bez přístupu do CMS.'
VIEW_DRAFT_CONTENT_HELP: 'Vztahuje se na prohlížení stránek mimo CMS, v koncept módu. Užitečné pro externí spolupracovníky bez přístupu do CMS.'
Viewers: 'Skupiny návštěvníků'
Visibility: Viditelnost
has_one_Parent: 'Rodičovská stránka'

View File

@ -121,28 +121,28 @@ da:
CMSPageEditController:
MENUTITLE: 'Rediger side'
CMSPageHistoryController:
COMPAREMODE: 'Sammenlign (Vælg to)'
COMPAREMODE: 'Sammenligningstilstand (vælg to)'
COMPAREVERSIONS: 'Sammenlign versioner'
COMPARINGVERSION: 'Sammenligner versionerne {version1} og {version2}.'
MENUTITLE: Historik
REVERTTOTHISVERSION: 'Genskab denne version'
SHOWUNPUBLISHED: 'Vis ikke publicerede versioner'
SHOWUNPUBLISHED: 'Vis versioner der ikke er udgivne'
SHOWVERSION: 'Vis version'
VIEW: Visning
VIEWINGVERSION: 'Lige nu vises version {version}.'
CMSPageHistoryController_versions.ss:
AUTHOR: Forfatter
NOTPUBLISHED: 'Ikke publiseret'
NOTPUBLISHED: 'Ikke udgivet'
PUBLISHER: Udgiver
UNKNOWN: Ukendt
WHEN: Hvornår
CMSPageSettingsController:
MENUTITLE: 'Rediger siden'
MENUTITLE: 'Rediger side'
CMSPagesController:
GalleryView: 'Galleri visning'
ListView: 'Liste visning'
GalleryView: Gallerivisning
ListView: Listevisning
MENUTITLE: Sider
TreeView: 'Træ visning'
TreeView: Trævisning
CMSPagesController_ContentToolbar.ss:
ENABLEDRAGGING: 'Træk&slip'
MULTISELECT: Multivalg
@ -242,10 +242,10 @@ da:
OTHERURL: 'Andet websteds URL'
PLURALNAME: 'Videresendende sider'
REDIRECTTO: 'Omdiriger til'
REDIRECTTOEXTERNAL: 'En anden hjemmeside'
REDIRECTTOPAGE: 'En side på din hjemmeside'
REDIRECTTOEXTERNAL: 'Et andet websted'
REDIRECTTOPAGE: 'En side på dit websted'
SINGULARNAME: 'Viderestillende side'
YOURPAGE: 'Side på din hjemmeside'
YOURPAGE: 'Side på dit websted'
ReportAdmin:
MENUTITLE: Rapporter
ReportTitle: Titel
@ -379,8 +379,8 @@ da:
HelpChars: 'Specialkarakterer bliver automatisk konverteret eller fjernet.'
StaticExporter:
BASEURL: 'Base URL'
EXPORTTO: 'Eksporter til mappen'
NAME: 'Statisk eksporter'
EXPORTTO: 'Eksporter til den mappe'
NAME: 'Statisk eksportør'
TableListField:
SELECT: 'Vælg:'
TableListField.ss:

View File

@ -39,7 +39,7 @@ de:
BrokenLinksReport:
Any: Alle
BROKENLINKS: 'Defekte Links'
CheckSite: 'Seite überprüfen'
CheckSite: 'Site überprüfen'
CheckSiteDropdownDraft: Vorschau-Site
CheckSiteDropdownPublished: 'Veröffentlichte Site'
ColumnDateLastModified: 'Zuletzt geändert'
@ -54,8 +54,8 @@ de:
ReasonDropdown: 'Zu überprüfendes Problem'
ReasonDropdownBROKENFILE: 'Defekte Datei'
ReasonDropdownBROKENLINK: 'Defekter Link'
ReasonDropdownRPBROKENLINK: 'Weiterleitungen, die auf eine nicht vorhandene Seite verweisen'
ReasonDropdownVPBROKENLINK: 'Virtuelle Seiten, die auf eine nicht vorhandene Seite verweisen'
ReasonDropdownRPBROKENLINK: 'Weiterleitung, die auf eine nicht vorhandene Seite verweist'
ReasonDropdownVPBROKENLINK: 'Virtuelle Seite, die auf eine nicht vorhandene Seite verweist'
RedirectorNonExistent: 'Weiterleitung, die auf eine nicht vorhandene Seite verweist'
VirtualPageNonExistent: 'Virtuelle Seite, die auf eine nicht vorhandene Seite verweist'
CMSAddPageController:
@ -87,7 +87,7 @@ de:
ListFiltered: 'Gefilterte Liste'
MENUTITLE: 'Seite bearbeiten'
NEWPAGE: 'Neue {pagetype}'
PAGENOTEXISTS: 'Diese Seite wurde nicht gefunden'
PAGENOTEXISTS: 'Diese Seite existiert nicht'
PAGES: Seiten
PAGETYPEANYOPT: Alle
PAGETYPEOPT: Seitentyp
@ -96,9 +96,9 @@ de:
PUBALLFUN2: 'Dieser Button bewirkt dasselbe wie auf jeder Seite "veröffentlichen" zu wählen. Sie sollten diese Funktion nutzen, wenn grössere Inhaltsänderungen stattgefunden haben, zum Beispiel wenn die Seite erstellt wurde.'
PUBPAGES: 'Abgeschlossen: {count} Seiten wurden veröffentlicht'
PageAdded: 'Seite erfolgreich erstellt'
REMOVED: 'Lösche ''%s''%s von der Live-Seite'
REMOVED: '''%s''%s von der Live-Seite gelöscht'
REMOVEDPAGE: '''{title}'' wurde von der veröffentlichten Site entfernt'
REMOVEDPAGEFROMDRAFT: 'Lösche ''%s'' von der Entwurfs-Seite'
REMOVEDPAGEFROMDRAFT: 'Lösche ''%s'' von der Entwurfs-Site'
RESTORE: Wiederherstellen
RESTORED: '''{title}'' wurde wiederhergestellt'
ROLLBACK: 'Diese Version wiederherstellen'
@ -107,7 +107,7 @@ de:
SAVE: Speichern
SAVEDRAFT: 'Entwurf speichern'
TabContent: Inhalt
TabHistory: Verlauf
TabHistory: Historie
TabSettings: Einstellungen
TreeFiltered: 'Seitenbaum gefiltert'
TreeFilteredClear: 'Filter zurücksetzen'
@ -171,7 +171,7 @@ de:
DRAFT_SITE_ACCESS_RESTRICTION: 'Sie müssen sich mit Ihrem CMS Passwort einloggen, um den Entwurf oder den archivierten Inhalt zu sehen. <a href="%s">Zurück zur veröffentlichten Seite.</a>'
Email: E-Mail
INSTALL_SUCCESS: 'Die Installation war erfolgreich!'
InstallFilesDeleted: 'Die Installationsdateien wurden erfolgreich entfernt.'
InstallFilesDeleted: 'Die Installationsdateien wurden erfolgreich gelöscht.'
InstallSecurityWarning: 'Zu Ihrer Sicherheit löschen Sie jetzt bitte die Installationsdateien, es sei denn Sie möchten zu einem späteren Zeitpunkt erneut installieren. (<em>Dies erfordert den Administrator-Zugang (siehe oben)</em>). Der Webserver benötigt nun nur noch Schreibrechte auf das "assets" Verzeichnis und Sie können die Schreibrechte für alle anderen Ordner entfernen. <a href="{link}" style="text-align: center;">Die Installationsdaten jetzt löschen.</a> '
InstallSuccessCongratulations: 'SilverStripe wurde erfolgreich installiert!'
LOGGEDINAS: 'Angemeldet als'
@ -281,7 +281,7 @@ de:
SINGULARNAME: Seitenkonfiguration
SITENAMEDEFAULT: 'Name Ihrer Website'
SITETAGLINE: 'Ihr Websiteslogan'
SITETITLE: 'Titel der Internetseite'
SITETITLE: 'Titel der Site'
TABACCESS: Zugriff
TABMAIN: Hauptteil
TAGLINEDEFAULT: 'Ihr Websiteslogan'
@ -393,13 +393,13 @@ de:
TO: bis
VIEWFIRST: Erster
VIEWLAST: Letzter
VIEWNEXT: 'Zeige nächste'
VIEWNEXT: Nächster
VIEWPREVIOUS: Vorheriger
TreeTools:
DisplayLabel: 'Anzeigen:'
ViewArchivedEmail.ss:
CANACCESS: 'Sie können unter folgendem Verweis auf die archivierte Seite zugreifen:'
HAVEASKED: 'Sie haben darum gebeten, den Inhalt unserer Seite zu sehen, am'
HAVEASKED: 'Sie haben darum gebeten, den Inhalt unserer Site zu sehen, am'
VirtualPage:
CHOOSE: 'Wählen Sie eine Seite, auf die Sie verweisen möchten'
DESCRIPTION: 'Zeigt den Inhalt einer anderen Seite'

View File

@ -93,7 +93,7 @@ en:
PUBALLFUN2: "Pressing this button will do the equivalent of going to every page and pressing \"publish\". It's\n intended to be used after there have been massive edits of the content, such as when the site was\n first built."
PUBPAGES: 'Done: Published {count} pages'
PageAdded: 'Successfully created page'
REMOVED: 'Deleted ''{title}''{description} from live site'
REMOVED: 'Deleted ''%s''%s from live site'
REMOVEDPAGE: 'Removed ''{title}'' from the published site'
REMOVEDPAGEFROMDRAFT: 'Removed ''%s'' from the draft site'
RESTORE: Restore
@ -138,6 +138,7 @@ en:
MENUTITLE: Pages
TreeView: 'Tree View'
CMSPagesController_ContentToolbar.ss:
ENABLEDRAGGING: 'Drag''n''drop'
MULTISELECT: Multi-selection
CMSPagesController_Tools.ss:
FILTER: Filter
@ -388,6 +389,8 @@ en:
VIEWLAST: 'View last'
VIEWNEXT: 'View next'
VIEWPREVIOUS: 'View previous'
TreeTools:
DisplayLabel: 'Display:'
ViewArchivedEmail.ss:
CANACCESS: 'You can access the archived site at this link:'
HAVEASKED: 'You have asked to view the content of our site on'

View File

@ -164,7 +164,7 @@ et_EE:
ContentControl:
NOTEWONTBESHOWN: 'Märkus. Seda teadet ei kuvata lehe külastajatele'
ContentController:
ARCHIVEDSITE: 'Preview version'
ARCHIVEDSITE: 'Eelvaate versioon'
ARCHIVEDSITEFROM: 'Arhiveeritud sait asukohast'
CMS: CMS
DRAFTSITE: 'Mustandi sait'
@ -277,8 +277,8 @@ et_EE:
EDITHEADER: 'Kes saavad sellel saidil lehti redigeerida?'
EDIT_PERMISSION: 'Saidi konfiguratsiooni haldamine'
EDIT_PERMISSION_HELP: 'Võimalus redigeerida üldiseid juurdepääsuseadeid / kõrgema taseme lehe õigusi.'
PLURALNAME: 'Site Configs'
SINGULARNAME: 'Site Config'
PLURALNAME: 'Saidi konfiguratsioonid'
SINGULARNAME: 'Saidi konfiguratsioon'
SITENAMEDEFAULT: 'Teie saidi nimi'
SITETAGLINE: 'Saidi reklaamlause'
SITETITLE: 'Saidi pealkiri'

View File

@ -196,7 +196,7 @@ fi:
SINGULARNAME: Virhesivu
400: '400 - Virheellinen Pyyntö'
401: '401 - Luvaton'
403: '403 . Kielletty'
403: '403 - Kielletty'
404: '404 - Ei löytynyt'
405: '405 - Menetelmä ei sallittu'
406: '406 - Ei hyväksyttävä'

View File

@ -79,10 +79,10 @@ hu:
ChoosePageParentMode: 'Choose where to create this page'
ChoosePageType: 'Válassza ki az oldal típusát'
Create: Létrehozni
DELETE: 'Törlés a vázlat oldalról'
DELETEFP: 'Törlés a publikus oldalról'
DELETE: 'Vázlat törlése'
DELETEFP: Törlés
DESCREMOVED: 'and {count} descendants'
EMAIL: E-mail
EMAIL: Email
EditTree: 'Edit Tree'
ListFiltered: 'Filtered list.'
MENUTITLE: 'Oldal szerkesztése'
@ -295,7 +295,7 @@ hu:
ACCESSONLYTHESE: 'Csak ezen emberek (válassz a listából)'
ADDEDTODRAFTHELP: 'Az oldal jelenleg még nincs publikálva.'
ADDEDTODRAFTSHORT: Vázlat
ALLOWCOMMENTS: 'A megjegyzések engedélyezve legyenek az oldalon?'
ALLOWCOMMENTS: 'Megjegyzések engedélyezése ezen az oldalon?'
APPEARSVIRTUALPAGES: 'This content also appears on the virtual pages in the {title} sections.'
BUTTONCANCELDRAFT: 'Piszkozaton végzett változtatások visszavonása'
BUTTONCANCELDRAFTDESC: 'Piszkozat törlése, és vissztérés a jelenleg publikált oldalra'
@ -407,4 +407,4 @@ hu:
HEADER: 'Ez egy virtuális oldal'
PLURALNAME: 'Virtual Pags'
PageTypNotAllowedOnRoot: 'Original page type "{type}" is not allowed on the root level for this virtual page'
SINGULARNAME: 'Virtuális Oldal'
SINGULARNAME: 'Virtuális oldal'

View File

@ -48,7 +48,7 @@ it:
ColumnURL: URL
HasBrokenFile: 'ha un file non funzionante'
HasBrokenLink: 'ha un link non funzionante'
HasBrokenLinkAndFile: 'ha un link ed un file non funzionante'
HasBrokenLinkAndFile: 'ha link e file non funzionanti'
HoverTitleEditPage: 'Modifica pagina'
PageName: 'Nome pagina'
ReasonDropdown: 'Problemi da verificare'
@ -64,11 +64,11 @@ it:
DELETED_DRAFT_PAGES: 'Eliminate %d pagine dal sito bozza, %d non a buon fine'
DELETED_PAGES: 'Eliminate %d pagine dal sito pubblicato, %d non a buon fine'
DELETE_DRAFT_PAGES: 'Elimina dal sito bozza'
DELETE_PAGES: 'Eliminato dal sito pubblicato'
DELETE_PAGES: 'Eliminata dal sito pubblicato'
PUBLISHED_PAGES: 'Pubblicate %d pagine, %d non a buon fine'
PUBLISH_PAGES: Pubblica
UNPUBLISHED_PAGES: '%d pagine non pubblicate'
UNPUBLISH_PAGES: 'Pubblicazione annullata'
UNPUBLISH_PAGES: 'Non pubblicare'
CMSFileAddController:
MENUTITLE: Files
CMSMain:

View File

@ -112,7 +112,7 @@ ja_JP:
TreeFiltered: フィルタリングされたツリー
TreeFilteredClear: フィルタを解除
CMSMain_left.ss:
'APPLY FILTER': 'Apply Filter'
'APPLY FILTER': フィルタを適用
RESET: リセット
CMSPageAddController:
MENUTITLE: 'ページを追加'
@ -240,11 +240,11 @@ ja_JP:
HASBEENSETUP: '転送URLを含むページには、転送先がない状態で設定されています。'
HEADER: このページをユーザーを変更して他のページにしますか?
OTHERURL: 他のウェブサイトのURL
PLURALNAME: 'Redirector Pags'
PLURALNAME: リダイレクトページ
REDIRECTTO: 変更は
REDIRECTTOEXTERNAL: 他のウェブサイト
REDIRECTTOPAGE: 貴方のウェブサイトを表示します
SINGULARNAME: 'Redirector Page'
SINGULARNAME: リダイレクトページ
YOURPAGE: 貴方のウェブサイトを表示します
ReportAdmin:
MENUTITLE: レポート
@ -259,7 +259,7 @@ ja_JP:
BROKENFILES: 壊れているファイルがあるページ
BROKENLINKS: 'Pages with broken links'
BROKENREDIRECTORPAGES: 'RedirectorPages pointing to deleted pages'
BROKENVIRTUALPAGES: 'VirtualPages pointing to deleted pages'
BROKENVIRTUALPAGES: '削除されたページを参照している仮想ページ'
BrokenLinksGroupTitle: 壊れているリンクのレポート
ContentGroupTitle: 'Content reports'
EMPTYPAGES: 空のページ
@ -311,7 +311,7 @@ ja_JP:
DEFAULTCONTACTTITLE: 連絡はこちらまで
DEFAULTHOMECONTENT: '<p>SilverStripeへようこそこれはデフォルトのホームページです。このページを編集するには、<a href="admin/">CMS</a>にアクセスしてください。<a href="http://doc.silverstripe.org">開発者向けドキュメント</a>や、<a href="http://doc.silverstripe.org/doku.php?id=tutorials">チュートリアル</a>もご覧いただけます。</p>'
DEFAULTHOMETITLE: 'ホーム'
DELETEDPAGEHELP: 'Page is no longer published'
DELETEDPAGEHELP: 'このページは今は公開されていません。'
DELETEDPAGESHORT: 削除済
DEPENDENT_NOTE: 'The following pages depend on this page. This includes virtual pages, redirector pages, and pages with content links.'
DESCRIPTION: 通常のコンテンツページ
@ -329,7 +329,7 @@ ja_JP:
INHERIT: 親ページを受け継ぐ
LASTUPDATED: 最終更新日時
LINKCHANGENOTE: このページのリンクを変更するとすべての子ページのリンクに影響を与える可能性があります。
MENUTITLE: 操作レベル
MENUTITLE: メニュー表示
METADESC: 説明
METADESCHELP: 'Search engines use this content for displaying search results (although it will not influence their ranking).'
METAEXTRA: 'メタタグをカスタム'
@ -398,7 +398,7 @@ ja_JP:
TreeTools:
DisplayLabel: 'Display:'
ViewArchivedEmail.ss:
CANACCESS: 'You can access the archived site at this link:'
CANACCESS: アーカイブされたサイトには次のリンクでアクセス可能です:
HAVEASKED: 'You have asked to view the content of our site on'
VirtualPage:
CHOOSE: 'リンクするページを選択してください'

View File

@ -4,7 +4,7 @@ lt:
ActionAdd: 'Pridėti aplanką'
AppCategoryArchive: Archyvas
AppCategoryAudio: Garsas
AppCategoryDocument: Document
AppCategoryDocument: Dokumentas
AppCategoryFlash: Flash
AppCategoryImage: Paveikslėlis
AppCategoryVideo: Video
@ -170,17 +170,17 @@ lt:
DRAFTSITE: 'Juodraštinė svetainė'
DRAFT_SITE_ACCESS_RESTRICTION: 'Jūs turite prisijungti su savo TVS slaptažodžiu, kad galėtumėte peržiūrėti juodraščio arba archyvo turinį.<a href="%s">Spauskite čia, norėdami grįžti į svetainę</a>.'
Email: 'E. paštas'
INSTALL_SUCCESS: 'Installation Successful!'
INSTALL_SUCCESS: 'Įdiegimas sėkmingas!'
InstallFilesDeleted: 'Įdiegimo bylos sėkmingai pašalintos'
InstallSecurityWarning: 'Saugumo sumetimais Jūs turėtumėte ištrinti įdiegimo bylas, nebent vėliau Jūs planuojate iš naujo diegti (<em>bus reikalinga administravimo prieiga, žiūrėkite viršuje</em>). Web paslaugos programa turi gauti rašymo teises "assets" aplankui, kitiems aplankams tokių teisių nereikia. <a href="{link}" style="text-align: center;">Spauskite čia jei norite ištrinti įdiegimo bylas</a>'
InstallSuccessCongratulations: 'SilverStripe has been successfully installed!'
InstallSuccessCongratulations: 'SilverStripe buvo sėkmingai įdiegta!'
LOGGEDINAS: 'Prisijungėte kaip '
LOGIN: Prisijungti
LOGOUT: Atsijungti
NOTLOGGEDIN: Neprisijungęs
PUBLISHEDSITE: 'Publikuojama svetainė'
Password: Slaptažodis
PostInstallTutorialIntro: 'This website is a simplistic version of a SilverStripe 3 site. To extend this, please take a look at {link}.'
PostInstallTutorialIntro: 'Šis puslapis yra supaprastinta SilverStripe 3 tinklapio versija. Norėdami išplėsti jo funkcionalumą, apsilankykite {link}.'
StartEditing: 'Jūs galite pradėti redaguoti svetainės turinį, atidarydami <a href="{link}">TVS</a>.'
UnableDeleteInstall: 'Nepajėgiame ištrinti įdiegimo bylų. Prašome pašalinti bylas rankiniu būdu.'
VIEWPAGEIN: 'Peržiūrėti puslapį:'
@ -192,8 +192,8 @@ lt:
DEFAULTSERVERERRORPAGETITLE: 'Tarnybinės stoties klaida'
DESCRIPTION: 'Savitas turinys, skirtingai klaidai apibrėžti (Pvz.: "Puslapis nerastas")'
ERRORFILEPROBLEM: 'Klaida atveriant rašymui bylą "{filename}". Prašome patikrinti bylos leidimus.'
PLURALNAME: 'Error Pags'
SINGULARNAME: 'Error Page'
PLURALNAME: 'Klaidos puslapiai'
SINGULARNAME: 'Klaidos puslapis'
400: '400 - Bloga užklausa'
401: '401 - Leidimas neduotas'
403: '403 - Uždrausta'
@ -202,8 +202,8 @@ lt:
406: '406 - nepriimtina'
407: '407 - reikalinga proxy autentifikacija'
408: '408 - baigėsi užklausai skirtas laikas'
409: '409 - konfliktas'
410: '410 - gone'
409: '409 - Konfliktas'
410: '410 - Nebėra'
411: '411 - reikalingas ilgis'
412: '412 - išankstinė klaida'
413: '413 - per didelė užklausa'
@ -240,11 +240,11 @@ lt:
HASBEENSETUP: 'Nukreipimo puslapis nustatytas be jokio nukreipimo.'
HEADER: 'Šis puslapis nukreips lankytojus į kitą puslapį'
OTHERURL: 'Kitos svetainės URL adresas'
PLURALNAME: 'Redirector Pags'
PLURALNAME: 'Nukreipimo puslapiai'
REDIRECTTO: 'Nukreipti į'
REDIRECTTOEXTERNAL: 'Kita svetainė'
REDIRECTTOPAGE: 'Puslapis Jūsų svetainėje'
SINGULARNAME: 'Redirector Page'
SINGULARNAME: 'Nukreipimo puslapis'
YOURPAGE: 'Puslapį Jūsų svetainėje'
ReportAdmin:
MENUTITLE: Ataskaitos
@ -277,8 +277,8 @@ lt:
EDITHEADER: 'Kas gali redaguoti šį puslapį?'
EDIT_PERMISSION: 'Tvarkyti svetainės parametrus'
EDIT_PERMISSION_HELP: 'Galimybė tvarkyti globalias priėjimo, pagrindinio puslapio teises.'
PLURALNAME: 'Site Configs'
SINGULARNAME: 'Site Config'
PLURALNAME: 'Svetainės konfigūracijos'
SINGULARNAME: 'Svetainės konfigūracija'
SITENAMEDEFAULT: 'Jūsų Svetainės Pavadinimas'
SITETAGLINE: 'Svetainės šūkis'
SITETITLE: 'Svetainės pavadinimas'
@ -296,12 +296,12 @@ lt:
ADDEDTODRAFTHELP: 'Puslapis dar nebuvo publikuotas'
ADDEDTODRAFTSHORT: Juodraštis
ALLOWCOMMENTS: 'Ar leisti komentuoti šį puslapį?'
APPEARSVIRTUALPAGES: 'This content also appears on the virtual pages in the {title} sections.'
APPEARSVIRTUALPAGES: 'Šis turinys taip pat matomas virtualiuose puslapiuose, {title} skyriuose.'
BUTTONCANCELDRAFT: 'Atšaukti juodraščio pakeitimus'
BUTTONCANCELDRAFTDESC: 'Ištrinti juodraštį ir grįžti prie šiuo metu publikuojamo puslapio'
BUTTONSAVEPUBLISH: 'Išsaugoti ir publikuoti'
BUTTONUNPUBLISH: Nebepublikuoti
BUTTONUNPUBLISHDESC: 'Pašalinti šį puslapį iš publikuojamų'
BUTTONUNPUBLISHDESC: 'Pašalinti šį puslapį iš publikuojamos svetainės'
CREATED: 'Sukūrimo data'
Comments: Komentarai
Content: Turinys
@ -331,21 +331,21 @@ lt:
LINKCHANGENOTE: 'Keičiant šio puslapio nuorodą, keisis ir jam priklausančių puslapių nuorodos.'
MENUTITLE: 'Navigacijos pavadinimas'
METADESC: 'Meta aprašymas'
METADESCHELP: 'Search engines use this content for displaying search results (although it will not influence their ranking).'
METADESCHELP: 'Paieškos varikliai naudoja šį turinį paieškos rezultatų atvaizdavimui (tačiau jis neturės įtakos rezultatų reitingui).'
METAEXTRA: 'Naudotojo meta žymės'
METAEXTRAHELP: 'HTML tags for additional meta information. For example &lt;meta name="customName" content="your custom content here" /&gt;'
METAEXTRAHELP: 'HTML žymos papildomai meta informacijai. Pavyzdžiui: &lt;meta name="tavoPavadinimas" content="tavo turinys čia" /&gt;'
MODIFIEDONDRAFTHELP: 'Puslapyje yra nepublikuoto turinio'
MODIFIEDONDRAFTSHORT: Pakeistas
MetadataToggle: Metaduomenys
OBSOLETECLASS: 'This page is of obsolete type {type}. Saving will reset it''s type and you may lose data'
OBSOLETECLASS: 'Šis puslapis yra nebenaudojamo tipo {type}. Išsaugojimas iš naujo nustatys jo tipą, ko pasekoje galite prarasti duomenis'
PAGELOCATION: 'Puslapio vieta'
PAGETITLE: 'Puslapio pavadinimas'
PAGETYPE: 'Puslapio tipas'
PARENTID: 'Tėvinis puslapis'
PARENTTYPE: 'Puslapio vieta'
PARENTTYPE_ROOT: 'Pagrindinis puslapis'
PARENTTYPE_SUBPAGE: 'Puslapis išplečiantis pagrindinį (pasirinkite žemiau)'
PERMISSION_GRANTACCESS_DESCRIPTION: 'Kontroliuoti kurios grupės gali matyti ir redaguoti specialius puslapius'
PARENTTYPE_SUBPAGE: 'Puslapis po tėviniu puslapiu'
PERMISSION_GRANTACCESS_DESCRIPTION: 'Valdyti turinio redagavimo teises'
PERMISSION_GRANTACCESS_HELP: 'Leisti nustatyti puslapiui galiojančias specifines teises, "Puslapiai" skiltyje.'
PLURALNAME: Puslapiai
PageTypNotAllowedOnRoot: 'Puslapio tipas "{type}" neleidžiamas šakniniame lygmenyje'
@ -355,8 +355,8 @@ lt:
REMOVE_INSTALL_WARNING: 'Perspėjimas: Saugumo sumetimais Jūs turėtumėte pašalinti install.php bylą iš SilverStripe.'
REORGANISE_DESCRIPTION: 'Gali keisti svetainės struktūrą'
REORGANISE_HELP: 'Perrikiuoti puslapius naudojant Tempti/Mesti būdą.'
SHOWINMENUS: 'Ar rodyti meniu?'
SHOWINSEARCH: 'Ar rodyti paieškoje'
SHOWINMENUS: 'Ar įtraukti į rodomą meniu?'
SHOWINSEARCH: 'Rodyti paieškoje?'
SINGULARNAME: Puslapis
TABBEHAVIOUR: Elgsena
TABCONTENT: 'Pagrindinis turinys'
@ -364,7 +364,7 @@ lt:
TOPLEVEL: 'Svetainės turinys (aukščiausias lygmuo)'
TOPLEVELCREATORGROUPS: 'Aukščiausio lygmens kūrėjai'
URLSegment: 'URL dalis'
VIEWERGROUPS: 'Lankytojų grupė'
VIEWERGROUPS: 'Lankytojų grupės'
VIEW_ALL_DESCRIPTION: 'Gali peržiūrėti bet kurį puslapį svetainėje, apeinant puslapio peržiūros teises'
VIEW_ALL_HELP: 'Galimybė peržiūrėti bet kurį puslapį svetainėje, nepriklausomai nuo "Priėjimo/Leidimų" skyriaus nustatymų. Būtinas leidimas "Prieiti prie svetainės turinio"'
VIEW_DRAFT_CONTENT: 'Peržiūrėti juodraščio turinį'

View File

@ -75,7 +75,7 @@ nl:
ACCESS: 'Toegang tot het ''{title}'' gedeelte'
ACCESS_HELP: 'Bevoegdheid voor bekijken van pagina tak en inhoudssecties. Bekijk- en bewerkingstoestemmingen kunnen worden toegekend door pagina specifieke menu''s en het aparte "Inhoudsmachtigingen".'
AddNew: 'Voeg nieuwe pagina toe'
AddNewButton: 'Voeg nieuwe toe'
AddNewButton: Nieuw
ChoosePageParentMode: 'Kies waar u deze pagina wilt creëren'
ChoosePageType: 'Kies een pagina type'
Create: Creëer
@ -158,7 +158,7 @@ nl:
CMSSiteTreeFilter_ChangedPages:
Title: 'Gewijzigde pagina''s'
CMSSiteTreeFilter_DeletedPages:
Title: 'Alle pagina\\''s, inclusief verwijderde'
Title: 'Alle pagina''s (inclusief verwijderde)'
CMSSiteTreeFilter_Search:
Title: 'Alle pagina''s'
ContentControl:
@ -258,7 +258,7 @@ nl:
SideReport:
BROKENFILES: 'Pagina''s met verbroken bestanden'
BROKENLINKS: 'Pagina''s met verbroken verwijzingen'
BROKENREDIRECTORPAGES: 'RedirectorPages dit naar verwijderde pagina''s verwijzen'
BROKENREDIRECTORPAGES: 'RedirectorPages die naar verwijderde pagina''s verwijzen'
BROKENVIRTUALPAGES: 'VirtuelePagina''s die naar verwijderde pagina''s verwijzen'
BrokenLinksGroupTitle: 'Verbroken verwijzingen raportage'
ContentGroupTitle: Inhoudsrapportages

View File

@ -167,8 +167,8 @@ pl:
ARCHIVEDSITE: 'Podgląd wersji'
ARCHIVEDSITEFROM: 'Zarchiwizowana witryna od'
CMS: 'System Zarządzania Treścią'
DRAFTSITE: 'Strona nieopublikowana'
DRAFT_SITE_ACCESS_RESTRICTION: 'Musisz zalogować się za pomocą swojego hasła do CMSa, aby obejrzeć brudnopis i zarchiwizowaną treść. <a href="%s">Kliknij tutaj aby powrócić do opublikowanej strony.</a>'
DRAFTSITE: 'Szkic witryny'
DRAFT_SITE_ACCESS_RESTRICTION: 'Musisz zalogować się za pomocą swojego hasła do CMSa, aby obejrzeć nieopublikowaną i zarchiwizowaną treść. <a href="%s">Kliknij tutaj aby powrócić do opublikowanej strony.</a>'
Email: 'Adres e-mail'
INSTALL_SUCCESS: 'Instalacja przebiegła pomyślnie'
InstallFilesDeleted: 'Pliki instalacyjne zostały pomyślnie usunięte'
@ -239,13 +239,13 @@ pl:
DESCRIPTION: 'Przekierowuje do wskazanej wewnętrznej strony'
HASBEENSETUP: 'Strona przekierowująca została ustawiona bez celu, do którego ma przekierowywać.'
HEADER: 'Ta strona przeniesie użytkowników na inną stronę'
OTHERURL: 'Inny adres URL strony'
OTHERURL: 'Adres URL innej strony'
PLURALNAME: 'Strony przekierowujące'
REDIRECTTO: 'Przenieś do'
REDIRECTTOEXTERNAL: 'Inna strona'
REDIRECTTOPAGE: 'Strona na Twojej stronie www'
REDIRECTTOPAGE: 'Strona na Twojej witrynie'
SINGULARNAME: 'Strona przekierowująca'
YOURPAGE: 'Strona na Twojej stronie www'
YOURPAGE: 'Strona na Twojej witrynie'
ReportAdmin:
MENUTITLE: Raporty
ReportTitle: Tytuł
@ -275,7 +275,7 @@ pl:
SiteConfig:
DEFAULTTHEME: '(Użyj domyślnego szablonu)'
EDITHEADER: 'Kto może edytować strony tego serwisu?'
EDIT_PERMISSION: 'Zarządzanie konfiguracją strony'
EDIT_PERMISSION: 'Zarządzanie konfiguracją serwisu'
EDIT_PERMISSION_HELP: 'Możliwość edycji globalnych ustawień bezpieczeństwa/uprawnień do stron pierwszego poziomu.'
PLURALNAME: 'Konfiguracje strony'
SINGULARNAME: 'Konfiguracja strony'
@ -309,8 +309,8 @@ pl:
DEFAULTABOUTTITLE: 'O nas'
DEFAULTCONTACTCONTENT: '<p>Możesz wypełnić tę stronę własną treścią, usunąć ją i tworzyć własne strony.<br /></p>'
DEFAULTCONTACTTITLE: Kontakt
DEFAULTHOMECONTENT: '<p>Witaj w SilverStripe! To jest domyślna strona domowa. Możesz ją edytować, otwierając <a href="admin/">CMS</a>. Możesz teraz otworzyć <a href="http://doc.silverstripe.com">dokumentację dla developerów</a>, lub rozpocząć <a href="http://doc.silverstripe.com/doku.php?id=tutorials">jeden z samouczyków.</a></p>'
DEFAULTHOMETITLE: 'Strona Domowa'
DEFAULTHOMECONTENT: '<p>Witaj w SilverStripe! To jest domyślna strona główna. Możesz ją edytować, otwierając <a href="admin/">CMS</a>. Możesz również otworzyć <a href="http://doc.silverstripe.com">dokumentację dla developerów</a>, lub rozpocząć <a href="http://doc.silverstripe.com/doku.php?id=tutorials">jeden z samouczków.</a></p>'
DEFAULTHOMETITLE: 'Strona główna'
DELETEDPAGEHELP: 'Strona nie jest już opublikowana'
DELETEDPAGESHORT: Usunięty
DEPENDENT_NOTE: 'Poniższe strony są zależne od tej (łącznie z wirtualnymi stronami, stronami przekierowującymi oraz stronami z treścią).'
@ -331,9 +331,9 @@ pl:
LINKCHANGENOTE: 'Zmiana linku na aktualnej stronie skutkuje zmianą w linkach stron potomnych.'
MENUTITLE: 'Sekcja nawigacji'
METADESC: Opis
METADESCHELP: 'Search engines use this content for displaying search results (although it will not influence their ranking).'
METADESCHELP: 'Wyszukiwarki używają tej zawartości do wyświetlania wyników wyszukiwania (aczkolwiek nie zmieni to ich miejsca w rankingu)'
METAEXTRA: 'Własne meta tagi'
METAEXTRAHELP: 'HTML tags for additional meta information. For example &lt;meta name="customName" content="your custom content here" /&gt;'
METAEXTRAHELP: 'Tagi HTML dla dodatkowych informacji. Na przykład &lt;meta name="niestandardowaNazwa" content="twoja zawartość" /&gt;'
MODIFIEDONDRAFTHELP: 'Na stronie znajdują się nieopublikowane zmiany'
MODIFIEDONDRAFTSHORT: Zmodyfikowana
MetadataToggle: Metadane

View File

@ -133,13 +133,13 @@ pt:
CMSPageHistoryController_versions.ss:
AUTHOR: Autor
NOTPUBLISHED: 'Não publicada'
PUBLISHER: Издатель
UNKNOWN: Неизвестно
PUBLISHER: Publicador
UNKNOWN: Desconhecido
WHEN: Quando
CMSPageSettingsController:
MENUTITLE: 'Editar página'
CMSPagesController:
GalleryView: 'Обзор галереи'
GalleryView: 'Vista de galeria'
ListView: 'Vista em lista'
MENUTITLE: Páginas
TreeView: 'Vista em árvore'
@ -218,11 +218,11 @@ pt:
504: '504 - Gateway Timeout'
505: '505 - Versão HTTP não suportada'
Folder:
AddFolderButton: 'Добавить папку'
DELETEUNUSEDTHUMBNAILS: 'Apagar miniaturas não usadas'
AddFolderButton: 'Adicionar pasta'
DELETEUNUSEDTHUMBNAILS: 'Apagar miniaturas não utilizadas'
UNUSEDFILESTITLE: 'Ficheiros não utilizados'
UNUSEDTHUMBNAILSTITLE: 'Miniaturas não usadas'
UploadFilesButton: Загрузить
UNUSEDTHUMBNAILSTITLE: 'Miniaturas não utilizadas'
UploadFilesButton: Submeter
LeftAndMain:
DELETED: Apagada
PreviewButton: Pré-visualização
@ -236,7 +236,7 @@ pt:
CONTENT_CATEGORY: 'Permissões de conteúdo'
PERMISSIONS_CATEGORY: 'Regras e permissões de acesso'
RedirectorPage:
DESCRIPTION: 'Переадресовывать на другую внутреннюю страницу'
DESCRIPTION: 'Redirecionar para outra página interna'
HASBEENSETUP: 'Uma página de redireccionamento foi criada sem nenhum destino.'
HEADER: 'Esta página irá redireccionar os utilizadores para outra página'
OTHERURL: 'Outro Site'
@ -379,8 +379,8 @@ pt:
HelpChars: 'Os caracteres especiais são automaticamente convertido ou removidos.'
StaticExporter:
BASEURL: 'URL base'
EXPORTTO: 'Exportar para essa pasta'
NAME: 'Статичный проводник'
EXPORTTO: 'Exportar para esta pasta'
NAME: 'Exportar estaticamente'
TableListField:
SELECT: 'Escolha:'
TableListField.ss:
@ -402,7 +402,7 @@ pt:
HAVEASKED: 'Pediu para ver o conteúdo do nosso site na'
VirtualPage:
CHOOSE: 'Escolha uma página para onde redireccionar'
DESCRIPTION: 'Показывать содержание другой страницы'
DESCRIPTION: 'Apresentar o conteúdo de outra página'
EDITCONTENT: 'clique aqui para editar o conteúdo'
HEADER: 'Esta é uma página virtual'
PLURALNAME: 'Páginas Virtuais'

View File

@ -30,7 +30,7 @@ ru:
AssetAdmin_Tools:
FILTER: Фильтр
AssetAdmin_left.ss:
GO: Перейти
GO: Выбрать
AssetTableField:
BACKLINKCOUNT: 'Используется на:'
PAGES: страниц
@ -137,9 +137,9 @@ ru:
UNKNOWN: Неизвестно
WHEN: Когда
CMSPageSettingsController:
MENUTITLE: 'Править страницы'
MENUTITLE: 'Править страницу'
CMSPagesController:
GalleryView: 'Обзор галереи'
GalleryView: 'В виде галереи'
ListView: 'Обзор списка'
MENUTITLE: Страницы
TreeView: 'Обзор дерева'
@ -151,7 +151,7 @@ ru:
CMSSearch:
FILTERDATEFROM: От
FILTERDATEHEADING: Дата
FILTERDATETO: Кому
FILTERDATETO: До
FILTERLABELTEXT: Содержимое
CMSSettingsController:
MENUTITLE: Настройки
@ -323,10 +323,10 @@ ru:
EDITORGROUPS: 'Группы редактирования'
EDIT_ALL_DESCRIPTION: 'Редактирование любой страницы'
EDIT_ALL_HELP: 'Возможность редактировать любую страницу на сайте независимо от настроек во вкладке "Доступ". Необходимо право доступа к разделу "Страницы".'
Editors: 'Группы редакторов'
Editors: 'Группы редактирования'
HASBROKENLINKS: 'Эта страница содержит неверные ссылки.'
HTMLEDITORTITLE: Содержимое
INHERIT: 'Такие же как у родительской страницы'
INHERIT: 'Перенять от родительской страницы'
LASTUPDATED: 'Последнее обновление'
LINKCHANGENOTE: 'Изменение ссылки на эту страницу повлияет и на ссылки всех дочерних страниц.'
MENUTITLE: 'Метка в навигации'
@ -373,7 +373,7 @@ ru:
Visibility: Отображение
has_one_Parent: 'Родительская страница'
many_many_BackLinkTracking: 'Отслеживание обратных ссылок'
many_many_ImageTracking: 'Отслеживание картинок'
many_many_ImageTracking: 'Отслеживание изображений'
many_many_LinkTracking: 'Отслеживание ссылок'
SiteTreeURLSegmentField:
HelpChars: 'Спецсимволы автоматически конвертируются или удаляются.'
@ -401,7 +401,7 @@ ru:
CANACCESS: 'Вы можете посмотреть архивную версию сайта по этой ссылке:'
HAVEASKED: 'Вы запросили просмотр содержимого нашего сайта за'
VirtualPage:
CHOOSE: 'Выберите страницу, на которую ссылаетесь,'
CHOOSE: 'Выберите страницу, на которую ссылаетесь'
DESCRIPTION: 'Показать содержимое других страниц'
EDITCONTENT: 'Нажмите здесь для редактирования содержимого'
HEADER: 'Это виртуальная страница'

View File

@ -20,7 +20,7 @@ sk:
Filetype: 'Typ súboru'
ListView: 'Zobraziť zoznam'
MENUTITLE: Súbory
NEWFOLDER: 'Nový Adresár'
NEWFOLDER: 'Nový priečinok'
SIZE: Veľkosť
THUMBSDELETED: '{count} nepoužitých miniatúr bolo smazaných'
TreeView: 'Zobraziť strom'
@ -30,7 +30,7 @@ sk:
AssetAdmin_Tools:
FILTER: Filtrovať
AssetAdmin_left.ss:
GO: Vykonať
GO: Choď
AssetTableField:
BACKLINKCOUNT: 'Použité na:'
PAGES: stránka(y)
@ -56,7 +56,7 @@ sk:
ReasonDropdownBROKENLINK: 'Porušnený odkaz'
ReasonDropdownRPBROKENLINK: 'Presmerovacia stránka ukazuje na neexistujúcu stránku'
ReasonDropdownVPBROKENLINK: 'Virtuálna stránka odkazuje na ne-existujúcu stránku'
RedirectorNonExistent: 'presmerovávacia stránka odkazuje na ne-existujúcu stránku'
RedirectorNonExistent: 'presmerovacia stránka ukazuje na neexistujúcu stránku'
VirtualPageNonExistent: 'virtuálna stránka odkazuje na ne-existujúcu stránku'
CMSAddPageController:
Title: 'Pridať stránku'
@ -64,11 +64,11 @@ sk:
DELETED_DRAFT_PAGES: 'Smazaných %d stránok z konceptu webu, %d zlyhaní'
DELETED_PAGES: 'Smazaných %d stránok z verejného webu, %d zlyhaní'
DELETE_DRAFT_PAGES: 'Vymazať z návhrového webu'
DELETE_PAGES: 'Vymazať z publikovaného webu'
DELETE_PAGES: 'Vymazať z verejného webu'
PUBLISHED_PAGES: 'Publikovaných %d stránok, %d zlyhaní'
PUBLISH_PAGES: Publikovať
UNPUBLISHED_PAGES: 'Od-publikované %d stranky'
UNPUBLISH_PAGES: Od-publikovať
PUBLISH_PAGES: Zverejniť
UNPUBLISHED_PAGES: 'Ne-zverejnené %d stranky'
UNPUBLISH_PAGES: Ne-zverejniť
CMSFileAddController:
MENUTITLE: Súbory
CMSMain:
@ -91,7 +91,7 @@ sk:
PAGES: Stránky
PAGETYPEANYOPT: Akákoľvek
PAGETYPEOPT: 'Typ stránky'
PUBALLCONFIRM: 'Publikovať všetky stránky z úschovne'
PUBALLCONFIRM: 'Prosím, zverejnite všetky stránky webu, zkopírovaním obsahu na verejné'
PUBALLFUN: 'Funkcia "Publikovať všetko"'
PUBALLFUN2: 'Stlačením tohto tlačidla vykonáte to isté ako keby ste navštívili každú stránku a stlačili "publikuj". Je určené na použite po rozsiahlych zmenách obsahu, napríklad keď bol web prvýkrát vytvorený.'
PUBPAGES: 'Hotovo: Publikované {count} stránky'
@ -165,7 +165,7 @@ sk:
NOTEWONTBESHOWN: 'Poznámka: Táto správa sa nebude zobrazovať vašim návštevníkom'
ContentController:
ARCHIVEDSITE: 'Zobrazenie verzie'
ARCHIVEDSITEFROM: 'Archívovaná stránka z'
ARCHIVEDSITEFROM: 'Archivovaný web z'
CMS: CMS
DRAFTSITE: 'Koncept webu'
DRAFT_SITE_ACCESS_RESTRICTION: 'Pre zobrazenie návrhov alebo archivovaného obsahu sa musíte prihlásiť so svojím CMS heslom. <a href="%s">Pre návrat na publikovaný web kliknite Tu.</a>'
@ -178,7 +178,7 @@ sk:
LOGIN: Prihlásiť
LOGOUT: Odhlásiť
NOTLOGGEDIN: Neprihlásený
PUBLISHEDSITE: 'Publikovaný web'
PUBLISHEDSITE: 'Verejný web'
Password: Heslo
PostInstallTutorialIntro: 'Tento web je zjednodušená verzia SilverStripe 3. webu. Pre rošírenie, pozrite sa na {link}, prosím.'
StartEditing: 'Môžte začať editáciu vášho web obsahu otvorením <a href="{link}">CMS</a>.'
@ -219,9 +219,9 @@ sk:
505: '505 - HTTP verzia nie je podporovaná'
Folder:
AddFolderButton: 'Pridať priečinok'
DELETEUNUSEDTHUMBNAILS: 'Vymazať nepoužívané náhĺady obrázkov'
UNUSEDFILESTITLE: 'Nepoužívané súbory'
UNUSEDTHUMBNAILSTITLE: 'Nepoužívané náhĺady obrázkov'
DELETEUNUSEDTHUMBNAILS: 'Vymazať nepoužité miniatúry'
UNUSEDFILESTITLE: 'Nepoužité súbory'
UNUSEDTHUMBNAILSTITLE: 'Nepoužité miniatúry'
UploadFilesButton: Nahrať
LeftAndMain:
DELETED: Smazané.
@ -239,13 +239,13 @@ sk:
DESCRIPTION: 'Presmeruje na inú internú stránku'
HASBEENSETUP: 'Stránka na presmerovanie bola nastavená bez cieľa.'
HEADER: 'Táto stránka presmeruje používateľov na inú stránku'
OTHERURL: 'Inú webovú URL adresu.'
OTHERURL: 'Iné webové URL.'
PLURALNAME: 'Presmerovacie stránky'
REDIRECTTO: 'Presmerovať na'
REDIRECTTOEXTERNAL: 'Inú webovú stránku'
REDIRECTTOPAGE: 'Stránku na Vašom webe'
REDIRECTTOEXTERNAL: 'Iná webová stránka'
REDIRECTTOPAGE: 'Stránka na vašom webe'
SINGULARNAME: 'Presmerovacia stránka'
YOURPAGE: 'Stránku na Vašom webe'
YOURPAGE: 'Stránka na vašom webe'
ReportAdmin:
MENUTITLE: Výkazy
ReportTitle: Titulok
@ -260,8 +260,8 @@ sk:
BROKENLINKS: 'Stránky z poškodenými odkazmi'
BROKENREDIRECTORPAGES: 'Presmerovacie stránky ukazujú na smazané stránky'
BROKENVIRTUALPAGES: 'Virtuálne stránky odkazujú na vymazané stránky'
BrokenLinksGroupTitle: 'Správy o poškodených odkazoch'
ContentGroupTitle: 'Správy o obsahu'
BrokenLinksGroupTitle: 'Výkazy porušených odkazov'
ContentGroupTitle: 'Výkazy obsahu'
EMPTYPAGES: 'Prázdne stránky'
LAST2WEEKS: 'Stránky upravené počaas posledných 2 týždňov'
OtherGroupTitle: Ostatné
@ -269,19 +269,19 @@ sk:
REPEMPTY: '{title} výkaz je prázdny.'
SilverStripeNavigatorLink:
ShareInstructions: 'Pre zdielanie tejto stránky, skopírujte linku nižšie.'
ShareLink: 'Zdieľať linku'
ShareLink: 'Zdieľať odkaz'
SilverStripeNavigatorLinkl:
CloseLink: Zavrieť
SiteConfig:
DEFAULTTHEME: '(Použi predvolenú tému)'
EDITHEADER: 'Kto môže upravovať stranky na tomto webe?'
EDIT_PERMISSION: 'Spravovať nastavenia webu'
EDITHEADER: 'Kto môže editovať stránky na tomto webe?'
EDIT_PERMISSION: 'Spravovať konfiguráciu webu'
EDIT_PERMISSION_HELP: 'Možnosť meniť globálne prístupové nastavenia/právomoci pre hlavné stránky.'
PLURALNAME: 'Konfigurácie webu'
SINGULARNAME: 'Konfigurácia webu'
SITENAMEDEFAULT: 'Názov vášho webu'
SITETAGLINE: 'Slogan stránky'
SITETITLE: 'Titulok stránky'
SITETITLE: 'Titulok webu'
TABACCESS: Prístup
TABMAIN: Hlavné
TAGLINEDEFAULT: 'váš citát sem'
@ -290,7 +290,7 @@ sk:
VIEWHEADER: 'Kto môže vidieť stránky na tomto webe?'
SiteTree:
ACCESSANYONE: Ktokoľvek
ACCESSHEADER: 'Kto si môže prezerať túto stránku?'
ACCESSHEADER: 'Kto môže prezerať túto stránku?'
ACCESSLOGGEDIN: 'Prihlásení používatelia'
ACCESSONLYTHESE: 'Iba títo ľudia (vyberte zo zoznamu)'
ADDEDTODRAFTHELP: 'Stránka ešte nebola zverejnená'
@ -313,7 +313,7 @@ sk:
DEFAULTHOMETITLE: Domov
DELETEDPAGEHELP: 'Stránka už nie je viacej zverejnená'
DELETEDPAGESHORT: Smazané
DEPENDENT_NOTE: 'Nasledujúce stránky sú závislé na tejto stránke. To zahŕňa virtuálne stránky, presmerovania a stránky s odkazmi.'
DEPENDENT_NOTE: 'Nasledujúce stránky sú závislé na tejto stránke. To zahŕňa virtuálne stránky, presmerovacie stránky a stránky s odkazmi obsahu.'
DESCRIPTION: 'Obecný obsah stránky'
DependtPageColumnLinkType: 'Typ odkazu'
DependtPageColumnURL: URL
@ -328,7 +328,7 @@ sk:
HTMLEDITORTITLE: Obsah
INHERIT: 'Dediť od nadradenej stránky'
LASTUPDATED: 'Posledne aktualizované'
LINKCHANGENOTE: 'Zmenenie odkazu na tejto stránke ovplyní aj odkazy na všetkých podstránkach.'
LINKCHANGENOTE: 'Zmenenie odkazu tejto stránky ovplyvní tiež odkazy všetkých podstránok.'
MENUTITLE: 'Navigačná menovka'
METADESC: 'Meta Popis'
METADESCHELP: 'Vyhľadávače používajú tento obsah pre zobrazovanie výsledkov vyhľadávania (aj keď to nebude mať vplyv na ich hodnotenie).'
@ -339,7 +339,7 @@ sk:
MetadataToggle: Metaúdaje
OBSOLETECLASS: 'Táto stránka je zastaralý typ {type}. Uloženie spôsobí stratu jeho typu a vy môžte stratiť dáta'
PAGELOCATION: 'Pozícia stránky'
PAGETITLE: 'Meno stránky'
PAGETITLE: 'Názov stránky'
PAGETYPE: 'Typ stránky'
PARENTID: 'Nadradená stránka'
PARENTTYPE: 'Pozícia stránky'
@ -378,8 +378,8 @@ sk:
SiteTreeURLSegmentField:
HelpChars: 'Špeciálne znaky sú automaticky zkonvertované alebo ostránené.'
StaticExporter:
BASEURL: 'Základná URL adresa'
EXPORTTO: 'Exportovať do tohto adresára'
BASEURL: 'Základné URL'
EXPORTTO: 'Exportovať do tohto priečinka'
NAME: 'Statický export'
TableListField:
SELECT: 'Vyberte:'
@ -407,4 +407,4 @@ sk:
HEADER: 'Toto je virtuálna stránka'
PLURALNAME: 'Virtuálne stránky'
PageTypNotAllowedOnRoot: 'Pôvodná stránka typu "{type}" nie je povolená na najvyššej úrovni pre túto virtuálnu stránku'
SINGULARNAME: 'Virtuálné stránka'
SINGULARNAME: 'Virtuálna stránka'

View File

@ -73,14 +73,14 @@ sv:
MENUTITLE: Filer
CMSMain:
ACCESS: 'Tillgång till sektionen ''{title}'''
ACCESS_HELP: 'Tillåt visning av det avsnitt som innehåller sidträdet och dess innehåll. Visa och redigera behörigheter kan hanteras på sidans specifika dropdownmenyerna, liksom de separata "behörigheter innehåll".'
ACCESS_HELP: 'Tillåt visning av sektionen innehållande sidträdet och dess innehåll. Rättigheter att visa och redigera sidan kan hanteras i dess rullgardinsmenyer, liksom i "Innehållsbehörigheter".'
AddNew: 'Skapa ny sida'
AddNewButton: 'Skapa ny'
ChoosePageParentMode: 'Välj var du vill skapa denna sida'
ChoosePageType: 'Välj sidtyp'
Create: Skapa
DELETE: 'Radera utkast'
DELETEFP: 'Radera från den publicerade sajten'
DELETEFP: Radera
DESCREMOVED: 'och {count} ättlingar'
EMAIL: E-post
EditTree: 'Redigera trädet'
@ -252,7 +252,7 @@ sv:
ReportAdminForm:
FILTERBY: 'Filtrera på'
SearchForm:
GO:
GO: Kör
SEARCH: Sök
SearchResults: Sökresultat
SideReport:
@ -260,7 +260,7 @@ sv:
BROKENLINKS: 'Sidor med trasiga länkar'
BROKENREDIRECTORPAGES: 'Omdirigeringssidor som pekar på raderade sidor'
BROKENVIRTUALPAGES: 'Virtuella sidor som pekar på raderade sidor'
BrokenLinksGroupTitle: 'Rapport för brutna länkar'
BrokenLinksGroupTitle: 'Rapport för trasiga länkar'
ContentGroupTitle: Innehållsrapport
EMPTYPAGES: 'Tomma sidor'
LAST2WEEKS: 'Sidor som har redigerats de senaste 2 veckorna'
@ -314,7 +314,7 @@ sv:
DELETEDPAGEHELP: 'Sidan är inte längre publicerad'
DELETEDPAGESHORT: Raderad
DEPENDENT_NOTE: 'Följande sidor berörs av den här sidan. Inklusive virtuella sidor, omdirigeringssidor, och sidor med innehållslänkar.'
DESCRIPTION: 'Allmän innehållssida'
DESCRIPTION: 'Generisk innehållssida'
DependtPageColumnLinkType: Länktyp
DependtPageColumnURL: URL
EDITANYONE: 'Alla som kan logga in'
@ -399,7 +399,7 @@ sv:
DisplayLabel: 'Visa:'
ViewArchivedEmail.ss:
CANACCESS: 'Du kan komma åt den arkiverade sajten med denna länk:'
HAVEASKED: 'Du har frågat efter att få se innehållet på vår sajt från'
HAVEASKED: 'Du har efterfrågat att se innehållet på vår sajt på'
VirtualPage:
CHOOSE: 'Välj en sida att länka till'
DESCRIPTION: 'Visar innehåll från en annan sida'

View File

@ -72,7 +72,7 @@ uk:
CMSFileAddController:
MENUTITLE: Файли
CMSMain:
ACCESS: 'Access to ''{title}'' section'
ACCESS: 'Доступ до секції ''{title}'' '
ACCESS_HELP: 'Дозволити перегляд розділу, що містить дерево сторінок і зміст. Дозволами на перегляд та редагування, а також окремими дозволами на контент, можна керувати на відповідних сторінках.'
AddNew: 'Додати нову сторінку'
AddNewButton: 'Додати новий'
@ -81,7 +81,7 @@ uk:
Create: Створити
DELETE: 'Видалити з чорнового сайту'
DELETEFP: Видалити
DESCREMOVED: 'and {count} descendants'
DESCREMOVED: 'і {count} нащадків'
EMAIL: 'Електронна пошта'
EditTree: 'Edit Tree'
ListFiltered: 'Filtered list.'
@ -97,12 +97,12 @@ uk:
PUBPAGES: 'Done: Published {count} pages'
PageAdded: 'Сторінка успішно створена'
REMOVED: 'Видалено ''%s''%s з публічного сайту'
REMOVEDPAGE: 'Removed ''{title}'' from the published site'
REMOVEDPAGE: '''{title}'' видалено з публічного сайту'
REMOVEDPAGEFROMDRAFT: 'Видалено ''%s'' з чорнового сайту'
RESTORE: Відновити
RESTORED: 'Restored ''{title}'' successfully'
ROLLBACK: 'Повернутися до цієї версії'
ROLLEDBACKPUB: 'Rolled back to published version. New version number is #{version}'
ROLLEDBACKPUB: 'Повернено до опублікованої версії. Нова версія #{version}'
ROLLEDBACKVERSION: 'Повернено версію #%d. Нова версія - #%d'
SAVE: Зберегти
SAVEDRAFT: 'Зберегти в чорновий'
@ -268,7 +268,7 @@ uk:
ParameterLiveCheckbox: 'Перевірити робочий сайт'
REPEMPTY: 'The {title} report is empty.'
SilverStripeNavigatorLink:
ShareInstructions: 'To share a this to this page, copy and paste the link below.'
ShareInstructions: 'Щоб поділитися цією сторінкою, скопіюйте та вставте посилання нижче.'
ShareLink: 'Поділитися посиланням'
SilverStripeNavigatorLinkl:
CloseLink: Закрити

View File

@ -98,23 +98,26 @@
background: url(../images/loading.gif) no-repeat 162px 8px;
}
.prefix,
.preview {
padding-top: 8px;
display: inline-block;
}
.prefix {
color: #777;
input.text {
width: 250px; // ensure there's enough room for buttons
}
.cancel, .update, .edit {
margin-left: 7px;
input.text, .cancel, .update, .edit {
margin-right: 8px;
}
.help {
margin-left: 0;
}
.edit-holder {
display: none;
}
}
#Form_EditForm #Title .update {

View File

@ -87,7 +87,7 @@ class RebuildStaticCacheTask extends Controller {
$count = isset($_GET['count']) ? $_GET['count'] : sizeof($urls);
if(($start + $count) > sizeof($urls)) $count = sizeof($urls) - $start;
$urls = array_slice($urls, $start, $count);
$mappedUrls = array_slice($mappedUrls, $start, $count);
if($removeAll && !isset($_GET['urls']) && $start == 0 && file_exists("../cache")) {
echo "Removing stale cache files... \n";

View File

@ -1,4 +1,18 @@
<span class="prefix">$URLPrefix</span><input $AttributesHTML />
<% if HelpText %>
<p class="help">$HelpText</p>
<% end_if %>
<div class="preview-holder">
<a class="preview" href="$URL" target="_blank">
$URL
</a>
<button class="ss-ui-button ss-ui-button-small edit">
<% _t('URLSegmentField.Edit', 'Edit') %>
</button>
</div>
<div class="edit-holder">
<input $AttributesHTML />
<button class="update ss-ui-button-small">
<% _t('URLSegmentField.OK', 'OK') %>
</button>
<button class="cancel ss-ui-button-small ss-ui-action-minor">
<% _t('URLSegmentField.Cancel', 'Cancel') %>
</button>
<% if HelpText %><p class="help">$HelpText</p><% end_if %>
</div>

View File

@ -24,7 +24,10 @@ class ContentControllerPermissionsTest extends FunctionalTest {
$response = $this->get('/testpage/?stage=Stage');
// should redirect to login
$this->assertEquals($response->getStatusCode(), 302, 'Redirects to login page when not logged in for draft stage');
$this->assertContains('Security/login', $response->getHeader('Location'));
$this->assertContains(
Config::inst()->get('Security', 'login_url'),
$response->getHeader('Location')
);
$this->logInWithPermission('CMS_ACCESS_CMSMain');

View File

@ -42,7 +42,10 @@ class SiteTreePermissionsTest extends FunctionalTest {
// should be prompted for a login
$response = $this->get($page->URLSegment . '?stage=Stage');
$this->assertEquals($response->getStatusCode(), '302');
$this->assertContains('Security/login', $response->getHeader('Location'));
$this->assertContains(
Config::inst()->get('Security', 'login_url'),
$response->getHeader('Location')
);
$this->logInWithPermission('ADMIN');

View File

@ -10,6 +10,8 @@ class FilesystemPublisherTest extends SapphireTest {
protected $usesDatabase = true;
protected $orig = array();
static $fixture_file = 'cms/tests/staticpublisher/FilesystemPublisherTest.yml';
public function setUp() {
parent::setUp();
@ -156,5 +158,41 @@ class FilesystemPublisherTest extends SapphireTest {
}
function testPublishPages() {
$cacheFolder = '/assets/FilesystemPublisherTest-static-folder/';
$cachePath = Director::baseFolder() . $cacheFolder;
$publisher = new FilesystemPublisher($cacheFolder, 'html');
$page1 = $this->objFromFixture('Page', 'page1');
$page1->publish('Stage', 'Live');
$redirector1 = $this->objFromFixture('RedirectorPage', 'redirector1');
$redirector1->publish('Stage', 'Live');
$results = $publisher->publishPages(array(
$page1->Link(),
$redirector1->regularLink(),
'/notfound'
));
$this->assertArrayHasKey($page1->Link(), $results);
$this->assertEquals(200, $results[$page1->Link()]['statuscode']);
$this->assertEquals(
realpath($results[$page1->Link()]['path']),
realpath($cachePath . './page1.html')
);
$this->assertArrayHasKey($redirector1->regularLink(), $results);
$this->assertEquals(301, $results[$redirector1->regularLink()]['statuscode']);
$this->assertEquals(Director::baseURL() . 'page1/', $results[$redirector1->regularLink()]['redirect']);
$this->assertEquals(
realpath($results[$redirector1->regularLink()]['path']),
realpath($cachePath . './redirect-to-page1.html')
);
$this->assertArrayHasKey('/notfound', $results);
$this->assertEquals(404, $results['/notfound']['statuscode']);
$this->assertNull($results['/notfound']['redirect']);
$this->assertNull($results['/notfound']['path']);
}
}

View File

@ -0,0 +1,12 @@
Page:
page1:
URLSegment: page1
page1a:
URLSegment: page1a
Parent: =>Page.page1
page2:
URLSegment: page2
RedirectorPage:
redirector1:
URLSegment: redirect-to-page1
LinkTo: =>Page.page1

View File

@ -15,8 +15,8 @@ echo ""
# Fetch all dependencies
# TODO Replace with different composer.json variations
echo "Checking out installer@$TRAVIS_BRANCH"
git clone --depth=100 --quiet -b $TRAVIS_BRANCH git://github.com/silverstripe/silverstripe-installer.git $BUILD_DIR
echo "Checking out installer@3.1"
git clone --depth=100 --quiet -b 3.1 git://github.com/silverstripe/silverstripe-installer.git $BUILD_DIR
echo "Checking out sqlite3@master"
git clone --depth=100 --quiet git://github.com/silverstripe-labs/silverstripe-sqlite3.git $BUILD_DIR/sqlite3
@ -24,8 +24,8 @@ git clone --depth=100 --quiet git://github.com/silverstripe-labs/silverstripe-sq
echo "Checking out postgresql@master"
git clone --depth=100 --quiet git://github.com/silverstripe/silverstripe-postgresql.git $BUILD_DIR/postgresql
echo "Checking out sapphire@$TRAVIS_BRANCH"
git clone --depth=100 --quiet -b $TRAVIS_BRANCH git://github.com/silverstripe/sapphire.git $BUILD_DIR/framework
echo "Checking out sapphire@3.1"
git clone --depth=100 --quiet -b 3.1 git://github.com/silverstripe/sapphire.git $BUILD_DIR/framework
echo "Checking out reports@master"
git clone --depth=100 --quiet git://github.com/silverstripe-labs/silverstripe-reports.git $BUILD_DIR/reports