Merge remote-tracking branch 'origin/3'

Conflicts:
	code/controllers/AssetAdmin.php
	code/controllers/CMSMain.php
	code/controllers/CMSSiteTreeFilter.php
	code/controllers/LeftAndMainPageIconsExtension.php
	code/controllers/ModelAsController.php
	code/controllers/SilverStripeNavigator.php
	code/model/ErrorPage.php
	code/model/SiteTreeFileExtension.php
This commit is contained in:
Damian Mooyman 2015-11-03 14:23:04 +13:00
commit 18e368448a
46 changed files with 624 additions and 311 deletions

View File

@ -297,6 +297,7 @@ JS
);
}
$fields->setForm($form);
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
// TODO Can't merge $FormAttributes in template at the moment
@ -338,8 +339,8 @@ JS
$record->delete();
$this->setCurrentPageID(null);
$this->response->addHeader('X-Status', rawurlencode(_t('LeftAndMain.DELETED', 'Deleted.')));
$this->response->addHeader('X-Pjax', 'Content');
$this->getResponse()->addHeader('X-Status', rawurlencode(_t('LeftAndMain.DELETED', 'Deleted.')));
$this->getResponse()->addHeader('X-Pjax', 'Content');
return $this->redirect(Controller::join_links($this->Link('show'), $parentID ? $parentID : 0));
}

View File

@ -422,7 +422,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
* Create serialized JSON string with site tree hints data to be injected into
* 'data-hints' attribute of root node of jsTree.
*
* @return String Serialized JSON
* @return string Serialized JSON
*/
public function SiteTreeHints() {
$json = '';
@ -591,9 +591,9 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
}
/**
* @param Int $id
* @param int $id
* @param FieldList $fields
* @return Form
* @return CMSForm
*/
public function getEditForm($id = null, $fields = null) {
@ -676,7 +676,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
// if($form->Fields()->hasTabset()) $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
$form->setAttribute('data-pjax-fragment', 'CurrentForm');
// Set validation exemptions for specific actions
$form->setValidationExemptActions(array('restore', 'revert', 'deletefromlive', 'rollback'));
$form->setValidationExemptActions(array('restore', 'revert', 'deletefromlive', 'delete', 'unpublish', 'rollback'));
// Announce the capability so the frontend can decide whether to allow preview or not.
if(in_array('CMSPreviewable', class_implements($record))) {
@ -701,7 +701,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
/**
* @param SS_HTTPRequest $request
* @return String HTML
* @return string HTML
*/
public function treeview($request) {
return $this->renderWith($this->getTemplatesWithSuffix('_TreeView'));
@ -709,7 +709,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
/**
* @param SS_HTTPRequest $request
* @return String HTML
* @return string HTML
*/
public function listview($request) {
return $this->renderWith($this->getTemplatesWithSuffix('_ListView'));
@ -743,7 +743,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$this->extend('updateChildFilter', $disallowedChildren, $parentID);
return $this
->response
->getResponse()
->addHeader('Content-Type', 'application/json; charset=utf-8')
->setBody(Convert::raw2json($disallowedChildren));
}
@ -940,7 +940,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
if(!is_subclass_of($className, $parentClass) && strcasecmp($className, $parentClass) != 0) {
$response = Security::permissionFailure($this);
if (!$response) {
$response = $this->response;
$response = $this->getResponse();
}
throw new SS_HTTPResponse_Exception($response);
}
@ -1024,7 +1024,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$descRemoved = '';
}
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(
_t(
@ -1073,7 +1073,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$record->doRevertToLive();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(_t(
'CMSMain.RESTORED',
@ -1100,7 +1100,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
// Delete record
$record->delete();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(sprintf(_t('CMSMain.REMOVEDPAGEFROMDRAFT',"Removed '%s' from the draft site"), $record->Title))
);
@ -1128,7 +1128,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
// Archive record
$record->doArchive();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(sprintf(_t('CMSMain.ARCHIVEDPAGE',"Archived page '%s'"), $record->Title))
);
@ -1152,7 +1152,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$record->doUnpublish();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(_t('CMSMain.REMOVEDPAGE',"Removed '{title}' from the published site", array('title' => $record->Title)))
);
@ -1201,15 +1201,15 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
);
}
$this->response->addHeader('X-Status', rawurlencode($message));
$this->getResponse()->addHeader('X-Status', rawurlencode($message));
// Can be used in different contexts: In normal page edit view, in which case the redirect won't have any effect.
// Or in history view, in which case a revert causes the CMS to re-load the edit view.
// The X-Pjax header forces a "full" content refresh on redirect.
$url = Controller::join_links(singleton('CMSPageEditController')->Link('show'), $record->ID);
$this->response->addHeader('X-ControllerURL', $url);
$this->getResponse()->addHeader('X-ControllerURL', $url);
$this->getRequest()->addHeader('X-Pjax', 'Content');
$this->response->addHeader('X-Pjax', 'Content');
$this->getResponse()->addHeader('X-Pjax', 'Content');
return $this->getResponseNegotiator()->respond($this->getRequest());
}
@ -1352,7 +1352,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$restoredPage = $restoredPage->doRestoreToStage();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(_t(
'CMSMain.RESTORED',
@ -1383,7 +1383,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$newPage->write();
}
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(_t(
'CMSMain.DUPLICATED',
@ -1392,9 +1392,9 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
))
);
$url = Controller::join_links(singleton('CMSPageEditController')->Link('show'), $newPage->ID);
$this->response->addHeader('X-ControllerURL', $url);
$this->getResponse()->addHeader('X-ControllerURL', $url);
$this->getRequest()->addHeader('X-Pjax', 'Content');
$this->response->addHeader('X-Pjax', 'Content');
$this->getResponse()->addHeader('X-Pjax', 'Content');
return $this->getResponseNegotiator()->respond($this->getRequest());
} else {
@ -1415,7 +1415,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$newPage = $page->duplicateWithChildren();
$this->response->addHeader(
$this->getResponse()->addHeader(
'X-Status',
rawurlencode(_t(
'CMSMain.DUPLICATEDWITHCHILDREN',
@ -1424,9 +1424,9 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
))
);
$url = Controller::join_links(singleton('CMSPageEditController')->Link('show'), $newPage->ID);
$this->response->addHeader('X-ControllerURL', $url);
$this->getResponse()->addHeader('X-ControllerURL', $url);
$this->getRequest()->addHeader('X-Pjax', 'Content');
$this->response->addHeader('X-Pjax', 'Content');
$this->getResponse()->addHeader('X-Pjax', 'Content');
return $this->getResponseNegotiator()->respond($this->getRequest());
} else {

View File

@ -17,7 +17,7 @@ class CMSPagesController extends CMSMain {
}
/**
* @return String
* @return string
*/
public function ViewState() {
return $this->getRequest()->getVar('view');

View File

@ -44,7 +44,7 @@ abstract class CMSSiteTreeFilter extends Object implements LeftAndMain_SearchFil
protected $_cache_expanded = array();
/**
* @var String
* @var string
*/
protected $childrenMethod = null;

View File

@ -14,8 +14,8 @@ class LeftAndMainPageIconsExtension extends Extension {
/**
* Include CSS for page icons. We're not using the JSTree 'types' option
* because it causes too much performance overhead just to add some icons.
*
* @return String CSS
*
* @return string CSS
*/
public function generatePageIconsCss() {
$css = '';

View File

@ -51,24 +51,21 @@ class ModelAsController extends Controller implements NestedController {
$this->setDataModel($model);
$this->pushCurrent();
// Create a response just in case init() decides to redirect
$this->response = new SS_HTTPResponse();
$this->getResponse();
$this->init();
// If we had a redirection or something, halt processing.
if($this->response->isFinished()) {
if($this->getResponse()->isFinished()) {
$this->popCurrent();
return $this->response;
return $this->getResponse();
}
// If the database has not yet been created, redirect to the build page.
if(!DB::is_active() || !ClassInfo::hasTable('SiteTree')) {
$this->response->redirect(Director::absoluteBaseURL() . 'dev/build?returnURL=' . (isset($_GET['url']) ? urlencode($_GET['url']) : null));
$this->getResponse()->redirect(Director::absoluteBaseURL() . 'dev/build?returnURL=' . (isset($_GET['url']) ? urlencode($_GET['url']) : null));
$this->popCurrent();
return $this->response;
return $this->getResponse();
}
try {

View File

@ -119,9 +119,8 @@ class RootURLController extends Controller {
$this->init();
if(!DB::is_active() || !ClassInfo::hasTable('SiteTree')) {
$this->response = new SS_HTTPResponse();
$this->response->redirect(Director::absoluteBaseURL() . 'dev/build?returnURL=' . (isset($_GET['url']) ? urlencode($_GET['url']) : null));
return $this->response;
$this->getResponse()->redirect(Director::absoluteBaseURL() . 'dev/build?returnURL=' . (isset($_GET['url']) ? urlencode($_GET['url']) : null));
return $this->getResponse();
}
$request->setUrl(self::get_homepage_link() . '/');

View File

@ -120,13 +120,13 @@ class SilverStripeNavigatorItem extends ViewableData {
}
/**
* @return String HTML, mostly a link - but can be more complex as well.
* @return string HTML, mostly a link - but can be more complex as well.
* For example, a "future state" item might show a date selector.
*/
public function getHTML() {}
/**
* @return String
* @return string
* Get the Title of an item
*/
public function getTitle() {}
@ -143,12 +143,12 @@ class SilverStripeNavigatorItem extends ViewableData {
* Not all items are simple links, please use {@link getHTML()}
* to represent an item in markup unless you know what you're doing.
*
* @return String
* @return string
*/
public function getLink() {}
/**
* @return String
* @return string
*/
public function getMessage() {}
@ -160,7 +160,7 @@ class SilverStripeNavigatorItem extends ViewableData {
}
/**
* @return Int
* @return int
*/
public function getPriority() {
return $this->stat('priority');

View File

@ -8,7 +8,7 @@ use SilverStripe\Filesystem\Storage\GeneratedAssetHandler;
* /assets/error-<statuscode>.html.
* This enables us to show errors even if PHP experiences a recoverable error.
* ErrorPages
*
*
* @see Debug::friendlyError()
*
* @property int $ErrorCode HTTP Error code
@ -26,7 +26,7 @@ class ErrorPage extends Page {
);
private static $allowed_children = array();
private static $description = 'Custom content for different error cases (e.g. "Page not found")';
/**
@ -37,7 +37,6 @@ class ErrorPage extends Page {
* @var bool
*/
private static $enable_static_file = true;
/**
* @config
* @var string
@ -52,7 +51,6 @@ class ErrorPage extends Page {
* @var string
*/
private static $store_filepath = null;
/**
* @param $member
*
@ -61,10 +59,10 @@ class ErrorPage extends Page {
public function canAddChildren($member = null) {
return false;
}
/**
* Get a {@link SS_HTTPResponse} to response to a HTTP error code if an
* {@link ErrorPage} for that code is present. First tries to serve it
* {@link ErrorPage} for that code is present. First tries to serve it
* through the standard SilverStripe request method. Falls back to a static
* file generated when the user hit's save and publish in the CMS
*
@ -110,7 +108,7 @@ class ErrorPage extends Page {
if ($this->class === 'ErrorPage' && SiteTree::config()->create_default_pages) {
$defaultPages = $this->getDefaultRecords();
foreach($defaultPages as $defaultData) {
$code = $defaultData['ErrorCode'];
$page = ErrorPage::get()->filter('ErrorCode', $code)->first();
@ -147,9 +145,9 @@ class ErrorPage extends Page {
}
/**
* Returns an array of arrays, each of which defines properties for a new
* Returns an array of arrays, each of which defines properties for a new
* ErrorPage record.
*
*
* @return array
*/
protected function getDefaultRecords() {
@ -158,7 +156,7 @@ class ErrorPage extends Page {
'ErrorCode' => 404,
'Title' => _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'),
'Content' => _t(
'ErrorPage.DEFAULTERRORPAGECONTENT',
'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>'
)
@ -167,7 +165,7 @@ class ErrorPage extends Page {
'ErrorCode' => 500,
'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'),
'Content' => _t(
'ErrorPage.DEFAULTSERVERERRORPAGECONTENT',
'ErrorPage.DEFAULTSERVERERRORPAGECONTENT',
'<p>Sorry, there was a problem with handling your request.</p>'
)
)
@ -183,9 +181,9 @@ class ErrorPage extends Page {
*/
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab(
"Root.Main",
"Root.Main",
new DropdownField(
"ErrorCode",
$this->fieldLabel('ErrorCode'),
@ -219,10 +217,10 @@ class ErrorPage extends Page {
),
"Content"
);
return $fields;
}
/**
* When an error page is published, create a static HTML page with its
* content, so the page can be shown even when SilverStripe is not
@ -231,9 +229,8 @@ class ErrorPage extends Page {
* @return bool True if published
*/
public function doPublish() {
$result = parent::doPublish();
$this->writeStaticPage();
return $result;
if (!parent::doPublish()) return false;
return $this->writeStaticPage();
}
/**
@ -289,22 +286,25 @@ class ErrorPage extends Page {
// Success
return true;
}
/**
* @param boolean $includerelations a boolean value to indicate if the labels returned include relation fields
*
*
* @return array
*/
public function fieldLabels($includerelations = true) {
$labels = parent::fieldLabels($includerelations);
$labels['ErrorCode'] = _t('ErrorPage.CODE', "Error code");
return $labels;
}
/**
* Get error content for the given status code. Only returns pre-cached content
* stored either in the asset store or in the static path (if enabled).
* Returns an absolute filesystem path to a static error file
* which is generated through {@link publish()}.
*
* @param int $statusCode A HTTP Statuscode, mostly 404 or 500
* @param string $locale A locale, e.g. 'de_DE' (Optional)
*
* @param int $statusCode A HTTP Statuscode, typically 404 or 500
* @return string
@ -372,7 +372,7 @@ class ErrorPage_Controller extends Page_Controller {
/**
* Overload the provided {@link Controller::handleRequest()} to append the
* correct status code post request since otherwise permission related error
* correct status code post request since otherwise permission related error
* pages such as 401 and 403 pages won't be rendered due to
* {@link SS_HTTPResponse::isFinished() ignoring the response body.
*

View File

@ -177,7 +177,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
/**
* @config
* @var String Description of the class functionality, typically shown to a user
* @var string Description of the class functionality, typically shown to a user
* when selecting which page type to create. Translated through {@link provideI18nEntities()}.
*/
private static $description = 'Generic content page';

View File

@ -25,7 +25,7 @@ class SiteTreeFileExtension extends DataExtension {
/**
* Generate an HTML list which provides links to where a file is used.
*
* @return String
* @return string
*/
public function BackLinkHTMLList() {
$html = '<em>' . _t(
@ -76,7 +76,7 @@ class SiteTreeFileExtension extends DataExtension {
/**
* @todo Unnecessary shortcut for AssetTableField, coupled with cms module.
*
* @return Integer
* @return integer
*/
public function BackLinkTrackingCount() {
$pages = $this->owner->BackLinkTracking();

View File

@ -122,6 +122,7 @@
updateURLFromTitle = $('<button />', {
'class': 'update ss-ui-button-small',
'text': ss.i18n._t('URLSEGMENT.UpdateURL'),
'type': 'button',
'click': function(e) {
e.preventDefault();
self.updateURLSegment(self.val());
@ -169,7 +170,7 @@
// otherwise use the old value
else this.find(':input[name=ParentID]').val(this.find('#Form_EditForm_ParentType_subpage').data('parentIdValue'));
// toggle tree dropdown based on selection
this.find('#ParentID').toggle(selected != 'root');
this.find('#Form_EditForm_ParentID_Holder').toggle(selected != 'root');
},
/**
@ -196,9 +197,9 @@
onmatch: function() {
// TODO Decouple
var dropdown;
if(this.attr('id') == 'CanViewType') dropdown = $('#ViewerGroups');
else if(this.attr('id') == 'CanEditType') dropdown = $('#EditorGroups');
else if(this.attr('id') == 'CanCreateTopLevelType') dropdown = $('#CreateTopLevelGroups');
if(this.attr('id') == 'CanViewType') dropdown = $('#Form_EditForm_ViewerGroups_Holder');
else if(this.attr('id') == 'CanEditType') dropdown = $('#Form_EditForm_EditorGroups_Holder');
else if(this.attr('id') == 'CanCreateTopLevelType') dropdown = $('#Form_EditForm_CreateTopLevelGroups_Holder');
this.find('.optionset :input').bind('change', function(e) {
var wrapper = $(this).closest('.middleColumn').parent('div');
@ -451,7 +452,7 @@
this._super();
},
redraw: function() {
var treeField = $('.cms-edit-form.CMSPageSettingsController #ParentID');
var treeField = $('.cms-edit-form.CMSPageSettingsController #Form_EditForm_ParentID_Holder');
if ($(this).attr('id') == 'Form_EditForm_ParentType_root') treeField.slideUp();
else treeField.slideDown();
},
@ -462,7 +463,7 @@
//trigger an initial change event to do the initial hiding of the element, if necessary
if ($('.cms-edit-form.CMSPageSettingsController input[name="ParentType"]:checked').attr('id') == 'Form_EditForm_ParentType_root') {
$('.cms-edit-form.CMSPageSettingsController #ParentID').hide(); //quick hide on first run
$('.cms-edit-form.CMSPageSettingsController #Form_EditForm_ParentID_Holder').hide(); //quick hide on first run
}
});
}(jQuery));

View File

@ -36,16 +36,16 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
"Tree.ThisPageOnly": "Nur ĉi tiu paĝo",
"Tree.ThisPageAndSubpages": "Ĉi tiu paĝo kaj subpaĝoj",
"Tree.ShowAsList": "Vidigi idojn kiel liston",
"CMSMain.ConfirmRestoreFromLive": "Are you sure you want to revert draft to when the page was last published?",
"CMSMain.ConfirmRestoreFromLive": "Ĉi vi vere volas malfari la malneton al kiam la paĝo estis laste publikigita?",
"CMSMain.RollbackToVersion": "Cu vi vere volas malfare restaŭri al versio #%s de ĉi tiu paĝo?",
"CMSMain.Archive": "Are you sure you want to archive this page and all of its children pages?\n\nThis page and all of its children will be unpublished and sent to the archive.",
"CMSMain.Restore": "Are you sure you want to restore this page from archive?",
"CMSMain.RestoreToRoot": "Are you sure you want to restore this page from archive?\n\nBecause the parent page is not available this will be restored to the top level.",
"CMSMain.Unpublish": "Are you sure you want to remove your page from the published site?\n\nThis page will still be available in the sitetree as draft.",
"CMSMain.DeleteFromDraft": "Are you sure you want to remove your page from the draft site?\n\nThis page will remain on the published site.",
"CMSMain.Archive": "Ĉi vi estas certa ke vi volas enarkivigi tiun paĝon kaj ĉiujn ties idajn paĝojn?\n\nTiu paĝo kaj ĉiuj ties idoj malpublikiĝos kaj sendiĝos al la arkivo.",
"CMSMain.Restore": "Ĉi vi vere volas restaŭri ĉi tiun paĝon el la arkivo?",
"CMSMain.RestoreToRoot": "Ĉu vi vere volas restaŭri la paĝon el la arkivo?\n\nĈar la patra paĝo ne disponeblas, ĝi restaŭriĝos al la supra nivelo.",
"CMSMain.Unpublish": "Ĉu vi vere volas forigi la paĝon el la publika retejo?\n\nTiu paĝo ankoraŭ disponeblos en la reteja arbo kiel malneto.",
"CMSMain.DeleteFromDraft": "Ĉu vi vere volas forigi la paĝon el la malneta retejo?\n\nTiu paĝo ankoraŭ troviĝos en la publika retejo.",
"URLSEGMENT.Edit": "Redakti",
"URLSEGMENT.OK": "Akcepti",
"URLSEGMENT.Cancel": "Rezigni",
"URLSEGMENT.UpdateURL": "Update URL"
"URLSEGMENT.UpdateURL": "Ĝisdatigi je URL"
});
}

51
javascript/lang/fa_IR.js Normal file
View File

@ -0,0 +1,51 @@
// This file was generated by silverstripe/cow from javascript/lang/src/fa_IR.js.
// See https://github.com/tractorcow/cow for details
if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
} else {
ss.i18n.addDictionary('fa_IR', {
"CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "شما باید پیش از افزودن فرزندان زیر مجموعه، صفحه را ذخیره کنید",
"CMSMAIN.CANTADDCHILDREN": "You can't add children to the selected node",
"CMSMAIN.ERRORADDINGPAGE": "خطا در افزودن صفحات",
"CMSMAIN.FILTEREDTREE": "پالایش لیست درختی تا تنها صفحات تغییر کرده را نمایش دهد",
"CMSMAIN.ERRORFILTERPAGES": "ناتوان در پالایش لیست درختی تا تنها صفحات تغییر کرده را نمایش دهد <br />%s",
"CMSMAIN.ERRORUNFILTER": "لیست درختی پالایش نشده",
"CMSMAIN.PUBLISHINGPAGES": "انتشار صفحات",
"CMSMAIN.SELECTONEPAGE": "لطفاً حداقل ۱ صفحه را انتخاب نمایید.",
"CMSMAIN.ERRORPUBLISHING": "خطا در انتشار صفحات",
"CMSMAIN.REALLYDELETEPAGES": "آیا واقعاً می‌خواهید %s صفحات علامت‌گذاری شده را حذف نمایید؟",
"CMSMAIN.DELETINGPAGES": "حذف صفحات...",
"CMSMAIN.ERRORDELETINGPAGES": "خطا در حذف صفحات",
"CMSMAIN.PUBLISHING": "منتشر کردن...",
"CMSMAIN.RESTORING": "بازنشاندن...",
"CMSMAIN.ERRORREVERTING": "Error reverting to live content",
"CMSMAIN.SAVING": "ذخیره سازی...",
"CMSMAIN.SELECTMOREPAGES": "You have %s pages selected.\n\nDo you really want to perform this action?",
"CMSMAIN.ALERTCLASSNAME": "نوع صفحه پس از ذخیره آن به‌روزرسانی می‌شود",
"CMSMAIN.URLSEGMENTVALIDATION": "URLها تنها می‌توانند از حروف، اعداد و خط فاصله ساخته شوند.",
"AssetAdmin.BATCHACTIONSDELETECONFIRM": "آیا واقعاً می‌خواهید %s پوشه را حذف نمایید؟",
"AssetTableField.REALLYDELETE": "آیا واقعاً می‌خواهید فایل‌های علامت‌گذاری شده را حذف نمایید؟",
"AssetTableField.MOVING": "جابه‌جایی %s فایل(ها)",
"CMSMAIN.AddSearchCriteria": "افزودن شاخص",
"WidgetAreaEditor.TOOMANY": "با پوزش، شما به حداکثر تعداد ویجت مجاز برای این فضا دست یافته‌اید",
"AssetAdmin.ConfirmDelete": "Do you really want to delete this folder and all contained files?",
"Folder.Name": "نام پوشه",
"Tree.AddSubPage": "افزودن صفحه جدید در اینجا",
"Tree.Duplicate": "دو نسخه کردن",
"Tree.EditPage": "ویرایش",
"Tree.ThisPageOnly": "فقط این صفحه",
"Tree.ThisPageAndSubpages": "این صفحه و صفحات زیرمجموعه",
"Tree.ShowAsList": "نمایش فرزندان به صورت لیست",
"CMSMain.ConfirmRestoreFromLive": "Are you sure you want to revert draft to when the page was last published?",
"CMSMain.RollbackToVersion": "آیا واقعاً می‌خواهید به نسخه #%s این صفحه بازگردید؟",
"CMSMain.Archive": "Are you sure you want to archive this page and all of its children pages?\n\nThis page and all of its children will be unpublished and sent to the archive.",
"CMSMain.Restore": "آیا مطمئن هستید که این صفحه از آرشیو بازنشانی شود؟",
"CMSMain.RestoreToRoot": "Are you sure you want to restore this page from archive?\n\nBecause the parent page is not available this will be restored to the top level.",
"CMSMain.Unpublish": "Are you sure you want to remove your page from the published site?\n\nThis page will still be available in the sitetree as draft.",
"CMSMain.DeleteFromDraft": "Are you sure you want to remove your page from the draft site?\n\nThis page will remain on the published site.",
"URLSEGMENT.Edit": "ویرایش",
"URLSEGMENT.OK": "تایید",
"URLSEGMENT.Cancel": "لغو",
"URLSEGMENT.UpdateURL": "به روز رسانی URL"
});
}

View File

@ -31,15 +31,15 @@
"Tree.ThisPageOnly": "Nur ĉi tiu paĝo",
"Tree.ThisPageAndSubpages": "Ĉi tiu paĝo kaj subpaĝoj",
"Tree.ShowAsList": "Vidigi idojn kiel liston",
"CMSMain.ConfirmRestoreFromLive": "Are you sure you want to revert draft to when the page was last published?",
"CMSMain.ConfirmRestoreFromLive": "Ĉi vi vere volas malfari la malneton al kiam la paĝo estis laste publikigita?",
"CMSMain.RollbackToVersion": "Cu vi vere volas malfare restaŭri al versio #%s de ĉi tiu paĝo?",
"CMSMain.Archive": "Are you sure you want to archive this page and all of its children pages?\n\nThis page and all of its children will be unpublished and sent to the archive.",
"CMSMain.Restore": "Are you sure you want to restore this page from archive?",
"CMSMain.RestoreToRoot": "Are you sure you want to restore this page from archive?\n\nBecause the parent page is not available this will be restored to the top level.",
"CMSMain.Unpublish": "Are you sure you want to remove your page from the published site?\n\nThis page will still be available in the sitetree as draft.",
"CMSMain.DeleteFromDraft": "Are you sure you want to remove your page from the draft site?\n\nThis page will remain on the published site.",
"CMSMain.Archive": "Ĉi vi estas certa ke vi volas enarkivigi tiun paĝon kaj ĉiujn ties idajn paĝojn?\n\nTiu paĝo kaj ĉiuj ties idoj malpublikiĝos kaj sendiĝos al la arkivo.",
"CMSMain.Restore": "Ĉi vi vere volas restaŭri ĉi tiun paĝon el la arkivo?",
"CMSMain.RestoreToRoot": "Ĉu vi vere volas restaŭri la paĝon el la arkivo?\n\nĈar la patra paĝo ne disponeblas, ĝi restaŭriĝos al la supra nivelo.",
"CMSMain.Unpublish": "Ĉu vi vere volas forigi la paĝon el la publika retejo?\n\nTiu paĝo ankoraŭ disponeblos en la reteja arbo kiel malneto.",
"CMSMain.DeleteFromDraft": "Ĉu vi vere volas forigi la paĝon el la malneta retejo?\n\nTiu paĝo ankoraŭ troviĝos en la publika retejo.",
"URLSEGMENT.Edit": "Redakti",
"URLSEGMENT.OK": "Akcepti",
"URLSEGMENT.Cancel": "Rezigni",
"URLSEGMENT.UpdateURL": "Update URL"
"URLSEGMENT.UpdateURL": "Ĝisdatigi je URL"
}

View File

@ -0,0 +1,45 @@
{
"CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "شما باید پیش از افزودن فرزندان زیر مجموعه، صفحه را ذخیره کنید",
"CMSMAIN.CANTADDCHILDREN": "You can't add children to the selected node",
"CMSMAIN.ERRORADDINGPAGE": "خطا در افزودن صفحات",
"CMSMAIN.FILTEREDTREE": "پالایش لیست درختی تا تنها صفحات تغییر کرده را نمایش دهد",
"CMSMAIN.ERRORFILTERPAGES": "ناتوان در پالایش لیست درختی تا تنها صفحات تغییر کرده را نمایش دهد <br />%s",
"CMSMAIN.ERRORUNFILTER": "لیست درختی پالایش نشده",
"CMSMAIN.PUBLISHINGPAGES": "انتشار صفحات",
"CMSMAIN.SELECTONEPAGE": "لطفاً حداقل ۱ صفحه را انتخاب نمایید.",
"CMSMAIN.ERRORPUBLISHING": "خطا در انتشار صفحات",
"CMSMAIN.REALLYDELETEPAGES": "آیا واقعاً می‌خواهید %s صفحات علامت‌گذاری شده را حذف نمایید؟",
"CMSMAIN.DELETINGPAGES": "حذف صفحات...",
"CMSMAIN.ERRORDELETINGPAGES": "خطا در حذف صفحات",
"CMSMAIN.PUBLISHING": "منتشر کردن...",
"CMSMAIN.RESTORING": "بازنشاندن...",
"CMSMAIN.ERRORREVERTING": "Error reverting to live content",
"CMSMAIN.SAVING": "ذخیره سازی...",
"CMSMAIN.SELECTMOREPAGES": "You have %s pages selected.\n\nDo you really want to perform this action?",
"CMSMAIN.ALERTCLASSNAME": "نوع صفحه پس از ذخیره آن به‌روزرسانی می‌شود",
"CMSMAIN.URLSEGMENTVALIDATION": "URLها تنها می‌توانند از حروف، اعداد و خط فاصله ساخته شوند.",
"AssetAdmin.BATCHACTIONSDELETECONFIRM": "آیا واقعاً می‌خواهید %s پوشه را حذف نمایید؟",
"AssetTableField.REALLYDELETE": "آیا واقعاً می‌خواهید فایل‌های علامت‌گذاری شده را حذف نمایید؟",
"AssetTableField.MOVING": "جابه‌جایی %s فایل(ها)",
"CMSMAIN.AddSearchCriteria": "افزودن شاخص",
"WidgetAreaEditor.TOOMANY": "با پوزش، شما به حداکثر تعداد ویجت مجاز برای این فضا دست یافته‌اید",
"AssetAdmin.ConfirmDelete": "Do you really want to delete this folder and all contained files?",
"Folder.Name": "نام پوشه",
"Tree.AddSubPage": "افزودن صفحه جدید در اینجا",
"Tree.Duplicate": "دو نسخه کردن",
"Tree.EditPage": "ویرایش",
"Tree.ThisPageOnly": "فقط این صفحه",
"Tree.ThisPageAndSubpages": "این صفحه و صفحات زیرمجموعه",
"Tree.ShowAsList": "نمایش فرزندان به صورت لیست",
"CMSMain.ConfirmRestoreFromLive": "Are you sure you want to revert draft to when the page was last published?",
"CMSMain.RollbackToVersion": "آیا واقعاً می‌خواهید به نسخه #%s این صفحه بازگردید؟",
"CMSMain.Archive": "Are you sure you want to archive this page and all of its children pages?\n\nThis page and all of its children will be unpublished and sent to the archive.",
"CMSMain.Restore": "آیا مطمئن هستید که این صفحه از آرشیو بازنشانی شود؟",
"CMSMain.RestoreToRoot": "Are you sure you want to restore this page from archive?\n\nBecause the parent page is not available this will be restored to the top level.",
"CMSMain.Unpublish": "Are you sure you want to remove your page from the published site?\n\nThis page will still be available in the sitetree as draft.",
"CMSMain.DeleteFromDraft": "Are you sure you want to remove your page from the draft site?\n\nThis page will remain on the published site.",
"URLSEGMENT.Edit": "ویرایش",
"URLSEGMENT.OK": "تایید",
"URLSEGMENT.Cancel": "لغو",
"URLSEGMENT.UpdateURL": "به روز رسانی URL"
}

View File

@ -268,7 +268,6 @@ ar:
SilverStripeNavigator:
ARCHIVED: المؤرشف
SilverStripeNavigatorLink:
ShareInstructions: 'لمشاركة هذه الصفحة، قم بنسخ ولصق الرابط أدناه.'
ShareLink: 'رابط مشترك'
SilverStripeNavigatorLinkl:
CloseLink: إغلاق

View File

@ -109,7 +109,7 @@ cs:
REMOVED: 'Smazáno ''{title}''{description} z webu'
REMOVEDPAGE: 'Odstraněno ''{title}'' ze zveřejněného webu'
REMOVEDPAGEFROMDRAFT: 'Odstraněno ''%s'' z konceptu webu'
RESTORE: 'Obnovit koncept'
RESTORE: Obnovit
RESTORED: 'Obnoveno ''{title}'' úspěšně'
RESTORE_DESC: 'Obnovit archivovanou verzi na koncept'
RESTORE_TO_ROOT: 'Obnovit koncept do nejvyšší úrovně'
@ -172,15 +172,15 @@ cs:
CMSSettingsController:
MENUTITLE: Možnosti
CMSSiteTreeFilter_ChangedPages:
Title: 'Upravené stránky'
Title: 'Změnené stránky'
CMSSiteTreeFilter_DeletedPages:
Title: 'Všechny stránky, včetně archivovaných'
Title: 'Všechny stránky, včetně odstraněných'
CMSSiteTreeFilter_Search:
Title: 'Všechny stránky'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Archivované stránky'
Title: 'Smazané stránky'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Stránky koncept'
Title: 'Koncept nezveřejněných stránek'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Živé, ale odstraněno z konceptu'
ContentControl:

View File

@ -71,8 +71,6 @@ de:
PUBLISH_PAGES: Veröffentlichen
RESTORE: Wiederherstellen
RESTORED_PAGES: '%d Seiten wiederhergestellt'
UNPUBLISHED_PAGES: '%d Seiten zurückgenommen'
UNPUBLISH_PAGES: Veröffentlichung zurücknehmen
CMSFileAddController:
MENUTITLE: Dateien
CMSMain:
@ -109,7 +107,6 @@ de:
REMOVED: 'Lösche ''{title}''{description} von Live Umgebung'
REMOVEDPAGE: '''{title}'' wurde von der veröffentlichten Site entfernt'
REMOVEDPAGEFROMDRAFT: 'Lösche ''%s'' von der Entwurfs-Site'
RESTORE: 'Entwurf wiederherstellen'
RESTORED: '''{title}'' wurde wiederhergestellt'
RESTORE_DESC: 'Entwurf aus archivierter Version wiederherstellen'
RESTORE_TO_ROOT: 'Entwurf in oberster Ebene wiederherstellen'
@ -171,16 +168,8 @@ de:
FILTERLABELTEXT: Inhalt
CMSSettingsController:
MENUTITLE: Einstellungen
CMSSiteTreeFilter_ChangedPages:
Title: 'Geänderte Seiten'
CMSSiteTreeFilter_DeletedPages:
Title: 'Alle Seiten, inkl. Archiv'
CMSSiteTreeFilter_Search:
Title: 'Alle Seiten'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Archivierte Seiten'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Entwürfe'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Veröffentlicht aber aus Entwurf entfernt'
ContentControl:
@ -298,7 +287,6 @@ de:
SilverStripeNavigator:
ARCHIVED: Archiviert
SilverStripeNavigatorLink:
ShareInstructions: 'Kopieren Sie den folgenden Link, um diesen jemanden mitzuteilen.'
ShareLink: 'Link teilen'
SilverStripeNavigatorLinkl:
CloseLink: schließen

View File

@ -61,17 +61,23 @@ eo:
CMSAddPageController:
Title: 'Enmeti paĝon'
CMSBatchActions:
ARCHIVE: Arkivo
ARCHIVED_PAGES: 'Enarkivigis %d paĝojn'
DELETED_DRAFT_PAGES: 'Forigis %d paĝojn el malneta retejo, %d malsukcesoj'
DELETED_PAGES: 'Forigis %d paĝojn el publikigita retejo, %d malsukcesoj'
DELETE_DRAFT_PAGES: 'Forigi el malneta retejo'
DELETE_PAGES: 'Forigi el publikigita retejo'
PUBLISHED_PAGES: 'Publikigis %d paĝojn, %d malsukcesojn'
PUBLISH_PAGES: Publikigi
RESTORE: Restaŭri
RESTORED_PAGES: 'Restaŭris %d paĝojn'
CMSFileAddController:
MENUTITLE: Dosieroj
CMSMain:
ACCESS: 'Aliro al sekcio ''{title}'''
ACCESS_HELP: 'Permesi vidigi la sekcion kiu enhavas paĝarbon kaj enhavon. Vidigaj kaj redaktaj permesoj estas trakteblaj per paĝspecifaj fallistoj, kaj ankaŭ la apartaj "Enhavaj permesoj".'
ARCHIVE: Enarkivigi
ARCHIVEDPAGE: 'Enarkivigis paĝon ''%s'''
AddNew: 'Aldoni novan paĝon'
AddNewButton: 'Aldoni novan'
AddPageRestriction: 'Noto: iuj tipoj de paĝoj ne estas permesataj por ĉi tiu elektaĵo.'
@ -102,6 +108,9 @@ eo:
REMOVEDPAGE: 'Forigis je ''{title}'' el la publikigita retejo'
REMOVEDPAGEFROMDRAFT: 'Forigis je ''%s'' el la malneta retejo'
RESTORED: 'Sukcese restaŭris je ''{title}'''
RESTORE_DESC: 'Restaŭri la enarkivigitan version al malneto'
RESTORE_TO_ROOT: 'Restaŭri malneton ĉe la supra nivelo'
RESTORE_TO_ROOT_DESC: 'Restaŭri la enarkivigitan version al malneto kiel supranivela paĝo'
ROLLBACK: 'Malfari al ĉi tiu versio'
ROLLEDBACKPUBv2: 'Malfaris ŝanĝojn ĝis la publikigita versio.'
ROLLEDBACKVERSIONv2: 'Malfaris ŝanĝojn ĝis versio #%d.'
@ -114,6 +123,7 @@ eo:
TreeFilteredClear: 'Vakigi filtrilon'
CMSMain_left_ss:
APPLY_FILTER: 'Apliki filtrilon'
CLEAR_FILTER: 'Vakigi filtrilon'
RESET: Restartigi
CMSPageAddController:
MENUTITLE: 'Enmeti paĝon'
@ -149,6 +159,8 @@ eo:
MULTISELECT: Plurelekto
CMSPagesController_Tools_ss:
FILTER: Filtri
CMSSIteTreeFilter_PublishedPages:
Title: 'Publikigitaj paĝoj'
CMSSearch:
FILTERDATEFROM: De
FILTERDATEHEADING: Dato
@ -158,6 +170,8 @@ eo:
MENUTITLE: Agordoj
CMSSiteTreeFilter_Search:
Title: 'Ĉiuj paĝoj'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Publikaj sed forigitaj el malneto'
ContentControl:
NOTEWONTBESHOWN: 'Notu: ne vidigos ĉi tiun mesaĝon al viaj vizitantoj'
ContentController:
@ -273,7 +287,6 @@ eo:
SilverStripeNavigator:
ARCHIVED: Enarkivigita
SilverStripeNavigatorLink:
ShareInstructions: 'Por komunigi ĉi tiun paĝon, kopiu kaj algluu la suban ligilon.'
ShareLink: 'Komunigi ligilon'
SilverStripeNavigatorLinkl:
CloseLink: Fermi
@ -302,6 +315,9 @@ eo:
ADDEDTODRAFTSHORT: Malneto
ALLOWCOMMENTS: 'Permesi rimarkojn en ĉi tiu paĝo?'
APPEARSVIRTUALPAGES: 'Ĉi tiu enhavo ankaŭ aperas en la virtualaj paĝoj en la sekcioj {title}.'
ARCHIVEDPAGEHELP: 'Paĝo estas forigita el malneta kaj publika'
ARCHIVEDPAGESHORT: Enarkivigita
BUTTONARCHIVEDESC: 'Malpublikigi kaj sendi al arkivo'
BUTTONCANCELDRAFT: 'Nuligi malnetajn ŝanĝojn'
BUTTONCANCELDRAFTDESC: 'Forigi vian malneton kaj reveni al la aktuale eldonita paĝo'
BUTTONPUBLISHED: Publikigita
@ -315,6 +331,7 @@ eo:
DEFAULTABOUTTITLE: 'Pri ni'
DEFAULTCONTACTCONTENT: '<p>Vi povas plenigi ĉi tiun paĝon per via materialo, aŭ forigi ĝin kaj krei viajn proprajn paĝojn.<br /></p>'
DEFAULTCONTACTTITLE: 'Kontakti nin'
DEFAULTHOMECONTENT: '<p>Bonvenon al SilverStripe! Jen la apriora hejmpaĝo. Vi povas redakti la paĝon malfermante je <a href="admin/">la CMS</a>.</p><p>Vi povas nun aliri la <a href="http://docs.silverstripe.org">dokumentaron por programistoj</a>, aŭ komenci la <a href="http://www.silverstripe.org/learn/lessons">SilverStripe-lecionojn</a>.</p>'
DEFAULTHOMETITLE: Hejmo
DELETEDPAGEHELP: 'Paĝo ne plu estas publikigita'
DELETEDPAGESHORT: Forigita
@ -385,6 +402,9 @@ eo:
many_many_BackLinkTracking: 'Spuri retroligilojn'
many_many_ImageTracking: 'Spuri Bildojn'
many_many_LinkTracking: 'Spuri Ligilojn'
SiteTreeFileExtension:
BACKLINK_LIST_DESCRIPTION: 'Ĉi tiu listo vidigas ĉiujn paĝojn kie la dosiero estas enmetita per la faksimila redaktilo.'
EDIT: Redakti
SiteTreeURLSegmentField:
EMPTY: 'Bonvolu enigi URL-segmenton aŭ alklaki al Rezigni'
HelpChars: 'Aŭtomate konvertas aŭ forigas specialajn signojn.'

View File

@ -71,8 +71,6 @@ es:
PUBLISH_PAGES: Publicar
RESTORE: Restaurar
RESTORED_PAGES: '%d páginas restauradas'
UNPUBLISHED_PAGES: 'Ocultar %d páginas'
UNPUBLISH_PAGES: Ocultar publicación
CMSFileAddController:
MENUTITLE: Archivos
CMSMain:
@ -109,7 +107,6 @@ es:
REMOVED: 'Removido'
REMOVEDPAGE: 'Eliminado ''{title}'' del sitio publicado'
REMOVEDPAGEFROMDRAFT: 'Borrado ''%s''%s desde el sitio no publicado'
RESTORE: 'Recuperar borrador'
RESTORED: 'Restablecido ''{title}'' correctamente'
RESTORE_DESC: 'Recuperar la versión archivada del borrador'
RESTORE_TO_ROOT: 'Recuperar borrador al nivel superior'
@ -171,16 +168,8 @@ es:
FILTERLABELTEXT: Filtrar
CMSSettingsController:
MENUTITLE: Ajustes
CMSSiteTreeFilter_ChangedPages:
Title: 'Páginas modificadas'
CMSSiteTreeFilter_DeletedPages:
Title: 'Todas las páginas, incluyendo archivadas'
CMSSiteTreeFilter_Search:
Title: 'Todas las paginas'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Páginas archivadas'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Borradores'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Publicada, pero eliminada de los borradores'
ContentControl:
@ -298,7 +287,6 @@ es:
SilverStripeNavigator:
ARCHIVED: Archivado
SilverStripeNavigatorLink:
ShareInstructions: 'Para compartir ésta a esta página, copiar y pegar el enlace de abajo.'
ShareLink: 'Compartir enlace'
SilverStripeNavigatorLinkl:
CloseLink: Cerrar

View File

@ -2,63 +2,198 @@ fa_IR:
AssetAdmin:
ADDFILES: 'اضافه کردن فایل'
ActionAdd: 'اضافه کردن پوشه'
AppCategoryArchive: بایگانی
AppCategoryAudio: صوتی
AppCategoryDocument: اسناد
AppCategoryFlash: فلش
AppCategoryImage: تصویر
AppCategoryVideo: ویدئو
BackToFolder: 'بازگشت به پوشه'
CREATED: تاریخ
CurrentFolderOnly: 'محدود به پوشه‌ی کنونی؟'
DetailsView: جزییات
FILES: فایل ها
FILES: فایل‌ها
FILESYSTEMSYNC: 'همگام‌سازی فایل‌ها'
FILESYSTEMSYNCTITLE: 'به روز رسانی مداخل پایگاه داده CMS از فایل‌های روی فایل‌سیستم. مفید برای وقتی که فایل‌های جدید خارج از CMS بارگذاری شده‌اند، مثلاً از طریقFTP.'
FROMTHEINTERNET: 'از اینترنت'
FROMYOURCOMPUTER: 'از کامپیوتر شما'
Filetype: 'نوع فایل'
ListView: 'نمایش لیستی'
MENUTITLE: فایل‌ها
NEWFOLDER: پوشه جديد
SIZE: حجم
TreeView: 'مشاهده درخت'
Upload: آپلود
THUMBSDELETED: '{count} تصویر انگشتی بلااستفاده حذف گردید'
TreeView: 'نمایش درختی'
Upload: بارگذاری
AssetAdmin_DeleteBatchAction:
TITLE: 'حذف پوشه ها'
TITLE: 'حذف پوشه‌ها'
AssetAdmin_Tools:
FILTER: پالایش
AssetAdmin_left_ss:
GO: برو
AssetTableField:
BACKLINKCOUNT: 'استفاده شده در:'
PAGES: صفحه(ها)
BackLink_Button_ss:
Back: بازگشت
BrokenLinksReport:
Any: هر
BROKENLINKS: 'گزارش پیوندهای معیوب'
CheckSite: 'بررسی سایت'
CheckSiteDropdownDraft: 'سایت پیش‌نویس'
CheckSiteDropdownPublished: 'سایت منتشر شده'
ColumnDateLastModified: 'تاریخ آخرین تغییرات'
ColumnDateLastPublished: 'تاریخ آخرین انتشار'
ColumnProblemType: 'نوع مشکل'
ColumnURL: آدرس
HasBrokenFile: 'دارای فایل معیوب'
HasBrokenLink: 'دارای پیوند معیوب'
HasBrokenLinkAndFile: 'دارای پیوند و فایل معیوب'
HoverTitleEditPage: 'ویرایش صفحه'
PageName: 'نام صفحه'
ReasonDropdown: 'مشکل در بررسی'
ReasonDropdownBROKENFILE: 'فایل معیوب'
ReasonDropdownBROKENLINK: 'پیوند معیوب'
ReasonDropdownRPBROKENLINK: 'صفحه ارجاعی به صفحه ناموجود اشاره دارد'
ReasonDropdownVPBROKENLINK: 'صفحه مجازی به صفحه ناموجود اشاره دارد'
RedirectorNonExistent: 'صفحه ارجاعی به صفحه ناموجود اشاره دارد'
VirtualPageNonExistent: 'صفحه مجازی به صفحه ناموجود اشاره دارد'
CMSAddPageController:
Title: 'اضافه کردن صفحه'
CMSBatchActions:
DELETE_DRAFT_PAGES: 'حذف از پیش نویس سایت'
ARCHIVE: بایگانی
ARCHIVED_PAGES: 'بایگانی %d صفحه'
DELETED_DRAFT_PAGES: 'حذف %d صفحه از سایت پیش‌نویس، %d عدم موفقیت'
DELETED_PAGES: 'حذف %d صفحه از سایت منتشر شده، %d عدم موفقیت'
DELETE_DRAFT_PAGES: 'حذف از سایت پیش‌نویس'
DELETE_PAGES: 'حذف از سایت منتشر شده'
PUBLISHED_PAGES: 'انتشار %d صفحه، %d عدم موفقیت'
PUBLISH_PAGES: انتشار
RESTORE: بازنشاندن
RESTORED_PAGES: 'بازنشاندن %d صفحه'
CMSFileAddController:
MENUTITLE: فایل‌ها
CMSMain:
ACCESS: 'دسترسی به بخش ''{title}'''
ARCHIVE: بایگانی
ARCHIVEDPAGE: 'صفحه بایگانی شده ''%s'''
AddNew: 'افزودن صفحه جدید'
AddNewButton: 'جدید'
AddPageRestriction: 'یادداشت: برخی انواع صفحه برای این انتخاب مجاز نیستند.'
Cancel: لغو
ChoosePageParentMode: 'انتخاب کنید کجا این صفحه ایجاد شود'
ChoosePageType: 'انتخاب نوع صفحه'
Create: ایجاد
DELETE: 'حذف کردن از پیشنویس سایت'
DELETE: 'حذف پیشنویس'
DELETEFP: حذف کردن از منتشر شده های سایت
EMAIL: پست الکترونیک
EditTree: 'ویرایش درخت'
ListFiltered: 'لیست پالایش شده'
MENUTITLE: 'ویرایش صفحه'
NEWPAGE: '{pagetype} جدید'
PAGENOTEXISTS: 'این صفحه وجود ندارد'
PAGES: صفحات
PAGETYPEANYOPT: هر
PAGETYPEOPT: 'نوع صفحه'
PUBALLFUN: 'عملکرد "انتشار همه"'
SAVE: ذخیره
SAVEDRAFT: 'ذخیره پیش‌نویس'
TabContent: محتوا
TabHistory: تاریخچه
TabSettings: تنظیمات
TreeFiltered: 'لیست درختی پالایش شده'
TreeFilteredClear: 'پاک کردن پالایش'
CMSMain_left_ss:
APPLY_FILTER: 'اعمال پالایش'
CLEAR_FILTER: 'پاک کردن پالایش'
RESET: تنظیم مجدد
CMSPageAddController:
MENUTITLE: 'افزودن صفحه'
ParentMode_child: 'زیر صفحه‌ی دیگر'
ParentMode_top: 'سطح بالا'
CMSPageEditController:
MENUTITLE: 'ویرایش صفحه'
CMSPageHistoryController:
COMPAREMODE: 'وضعیت مقایسه (دو مورد انتخاب کنید)'
COMPAREVERSIONS: 'مقایسه نسخه‌ها'
COMPARINGVERSION: 'مقایسه نسخه‌های {version1} و {version2}.'
MENUTITLE: تاریخچه
REVERTTOTHISVERSION: 'بازگشت به این نسخه'
SHOWUNPUBLISHED: 'نمایش نسخه‌های منتشر نشده'
SHOWVERSION: 'نمایش ویرایش'
VIEW: نمایش
CMSPageHistoryController_versions_ss:
AUTHOR: ناشر
NOTPUBLISHED: 'منتشر نشده'
PUBLISHER: منتشر کننده
UNKNOWN: نامشخص
WHEN: چه وقت
CMSPageSettingsController:
MENUTITLE: 'ویرایش صفحه'
CMSPagesController:
GalleryView: 'نمایش نگارخانه'
ListView: 'نمایش لیستی'
MENUTITLE: صفحات
TreeView: 'نمایش درختی'
CMSPagesController_Tools_ss:
FILTER: پالایش
CMSSIteTreeFilter_PublishedPages:
Title: 'صفحات منتشر شده'
CMSSearch:
FILTERDATEFROM: از
FILTERDATEHEADING: تاریخ
FILTERDATETO: تا
FILTERLABELTEXT: محتوا
CMSSettingsController:
MENUTITLE: تنظیمات
CMSSiteTreeFilter_Search:
Title: 'تمامی صفحات'
ContentController:
DRAFTSITE: 'تارگاه چرکنویس'
ARCHIVEDSITE: 'نسخه پیش‌نمایش'
ARCHIVEDSITEFROM: 'سایت بایگانی شده از'
CMS: CMS
DRAFT: پیش‌نویس
DRAFTSITE: 'سایت پیش‌نویس'
Email: ای‌میل
INSTALL_SUCCESS: 'نصب موفقیت‌آمیز!'
LOGIN: ورود
LOGOUT: 'خروج'
NOTLOGGEDIN: 'وارد نشده'
PUBLISHED: منتشر شده
PUBLISHEDSITE: 'سایت منتشر شده'
Password: رمز عبور
VIEWPAGEIN: 'مشاهده صفحه در'
ErrorPage:
400: '400 - درخواست نادرست'
401: '401 - بدون مجوز'
403: '403 - ممنوع'
404: '404 - یافت نشد'
405: '405 - روش مجاز نیست'
406: '406 - پذیرفتنی نیست'
408: '408 - زمان درخواست گذشت'
409: '409 - تضاد'
410: '410 - از دست رفت'
412: '412 - پیش شرط درست نبود'
429: '429 - درخواست‌های بسیار'
502: '502 - درگاه نادرست'
CODE: 'شماره ایراد'
DEFAULTERRORPAGETITLE: 'برگ پیدا نشد'
DEFAULTSERVERERRORPAGETITLE: 'خطای سرور'
PLURALNAME: 'صفحات خطا'
SINGULARNAME: 'صفحه‌ی خطا'
Folder:
AddFolderButton: 'افزودن پوشه'
DELETEUNUSEDTHUMBNAILS: 'حذف تصاویر انگشتی بلااستفاده'
UNUSEDFILESTITLE: 'فایل‌های بلااستفاده'
UNUSEDTHUMBNAILSTITLE: 'تصاویر انگشتی بلااستفاده'
UploadFilesButton: بارگذاری
LeftAndMain:
DELETED: حذف شده
PreviewButton: پیش‌نمایش
SAVEDUP: ذخیره شده
SearchResults: 'نتایج جستجو'
Permission:
CMS_ACCESS_CATEGORY: 'دسترسی CMS'
Permissions:
CONTENT_CATEGORY: 'دسترسی محتوا'
PERMISSIONS_CATEGORY: 'مجوز دسترسی ها و وظایف'
@ -68,6 +203,9 @@ fa_IR:
REDIRECTTOEXTERNAL: 'یک تارگاه دیگر'
REDIRECTTOPAGE: 'یک برگ روی تارگاه شما'
YOURPAGE: 'برگ روی تارگاه شما'
ReportAdmin:
MENUTITLE: گزارشات
ReportTitle: عنوان
ReportAdminForm:
FILTERBY: 'فیلتر به وسیله'
SearchForm:
@ -75,17 +213,33 @@ fa_IR:
SEARCH: جستجو
SearchResults: 'نتایج جستجو'
SideReport:
BROKENFILES: 'صفحات دارای فایل معیوب'
BROKENLINKS: 'صفحات دارای پیوند معیوب'
BrokenLinksGroupTitle: 'گزارش پیوندهای معیوب'
ContentGroupTitle: 'گزارشات محتوا'
EMPTYPAGES: 'صفحات بدون مطلب'
LAST2WEEKS: 'صفحات ویرایش شده در 2 هفته گذشته'
OtherGroupTitle: سایر
ParameterLiveCheckbox: 'بررسی سایت به صورت زنده'
REPEMPTY: 'گزارش {title} خالی است.'
SilverStripeNavigator:
ARCHIVED: بایگانی شده
SilverStripeNavigatorLink:
ShareLink: 'پیوند اشتراک‌گذاری'
SilverStripeNavigatorLinkl:
CloseLink: بستن
SiteConfig:
DEFAULTTHEME: '(استفاده از پوسته پیشفرض)'
EDITHEADER: 'چه کسی میتواند صفحات را در این سایت ویرایش کند؟'
EDIT_PERMISSION: 'مدیریت پیکربندی سایت'
PLURALNAME: 'تنظیمات سایت'
SINGULARNAME: 'تنظیم سایت'
SITENAMEDEFAULT: 'نام سایت شما'
SITETAGLINE: 'شعار سایت'
SITETITLE: 'عنوان سایت'
TABACCESS: دسترسی
TABMAIN: اصلی
TAGLINEDEFAULT: 'شعار شما در اینجا'
THEME: پوسته
TOPLEVELCREATE: 'چه کسی میتواند صفحه جدیدی در ریشه(root) سایت ایجاد کند؟'
VIEWHEADER: 'چه کسی میتواند صفحات سایت را مشاهده کند؟'
@ -94,31 +248,78 @@ fa_IR:
ACCESSHEADER: 'چه کسی بتواند این صفحه را مشاهده کنید ؟'
ACCESSLOGGEDIN: 'کاربران وارد شده'
ACCESSONLYTHESE: 'فقط این افراد (انتخاب از لیست)'
ADDEDTODRAFTSHORT: پیش‌نویس
ALLOWCOMMENTS: 'پذیرفتن نظرات در این صفحه ؟'
ARCHIVEDPAGESHORT: بایگانی شده
BUTTONCANCELDRAFT: 'لغو تغییرات پیش‌نویس'
BUTTONPUBLISHED: منتشر شده
BUTTONSAVED: ذخیره شده
BUTTONSAVEPUBLISH: 'ذخیره و انتشار'
BUTTONUNPUBLISH: عدم انتشار
Comments: دیدگاه‌ها
Content: درون مایه
DEFAULTABOUTTITLE: 'درباره ما'
DEFAULTCONTACTTITLE: 'تماس با ما'
DEFAULTHOMETITLE: خانه
DELETEDPAGESHORT: حذف شده
DEPENDENT_NOTE: 'صفحات زیر وابسته به این صفحه هستند. شامل صفحات مجازی، انتقال دهنده و صفحاتی با محتوای لینک'
DependtPageColumnLinkType: 'نوع پیوند'
DependtPageColumnURL: نشانی اینترنتی
EDITANYONE: 'هر کسی بتواند به سیستم مدیریت محتوا وارد شود'
EDITHEADER: 'چه کسی بتواند این صفحه را ویرایش کند ؟'
EDITONLYTHESE: 'فقط این افراد (انتخاب از لیست)'
HASBROKENLINKS: 'لینک این صفحه شکسته است.'
EDITORGROUPS: 'گروه‌های ویرایشگر'
EDIT_ALL_DESCRIPTION: 'ویرایش هر صفحه‌ای'
Editors: 'گروه‌های ویرایشگران'
GroupPlaceholder: 'برای انتخاب گروه کلیک کنید'
HASBROKENLINKS: 'این صفحه دارای پیوند معیوب است.'
HTMLEDITORTITLE: درون‌مایه
INHERIT: 'از صفحه والد ارث ببر'
LASTPUBLISHED: 'آخرین انتشار'
LASTSAVED: 'آخرین ذخیره‌سازی'
LASTUPDATED: 'آخرین به روزرسانی'
MENUTITLE: 'برچسب ناوبری'
METADESC: 'توضیحات'
METAEXTRA: 'متا تگ‌های اختصاصی'
MODIFIEDONDRAFTSHORT: تغییر یافته
MetadataToggle: متاداده
MoreOptions: 'گزینه‌های بیشتر'
NOTPUBLISHED: 'منتشر نشده'
PAGELOCATION: 'موقعیت صفحه'
PAGETITLE: 'نام برگ'
PAGETYPE: 'نوع برگ'
PARENTID: 'برگ مادر'
PARENTTYPE: 'جایگاه برگ'
PARENTTYPE_ROOT: 'صفحه‌ی سطح بالا'
PLURALNAME: صفحات
REMOVEDFROMDRAFTSHORT: 'حذف شده از پیش‌نویس'
SHOWINMENUS: 'نمایش در منوها؟'
SHOWINSEARCH: 'نمایش در جستجو ؟'
SINGULARNAME: صفحه
TABBEHAVIOUR: رفتار
TABCONTENT: 'مطلب'
TABDEPENDENT: 'صفحات وابسته'
TOPLEVEL: 'محتوای سایت (سطح بالا)'
URLSegment: 'بخش آدرس URL'
VIEW_DRAFT_CONTENT: 'مشاهده محتوای پیشنویس'
VIEWERGROUPS: 'گروه‌های مشاهده‌کنندگان'
VIEW_ALL_DESCRIPTION: 'مشاهده هر صفحه‌ای'
VIEW_DRAFT_CONTENT: 'مشاهده محتوای پیش‌نویس'
Viewers: 'گروه‌های مشاهده‌کنندگان'
Visibility: پدیداری
has_one_Parent: 'برگ مادر'
many_many_BackLinkTracking: 'ردیابی بک‌لینک'
many_many_LinkTracking: 'ردیابی پیوند'
SiteTreeFileExtension:
EDIT: ویرایش
URLSegmentField:
Cancel: لغو
Edit: ویرایش
OK: تایید
ViewArchivedEmail_ss:
HAVEASKED: 'شما خواسته اید که درون‌مایه تارگاه ما را ببینید در'
VirtualPage:
CHOOSE: 'صفحه ارجاعی'
EditLink: ویرایش
HEADER: 'این یک صفحه مجازی است'
PLURALNAME: 'صفحات مجازی'
SINGULARNAME: 'صفحه مجازی'

View File

@ -273,7 +273,6 @@ fi:
SilverStripeNavigator:
ARCHIVED: Arkistoitu
SilverStripeNavigatorLink:
ShareInstructions: 'Jakaaksesi tämä sivu, kopioi ja liitä alla oleva linkki.'
ShareLink: 'Jaa linkki'
SilverStripeNavigatorLinkl:
CloseLink: Sulje

View File

@ -61,20 +61,27 @@ fr:
CMSAddPageController:
Title: 'Ajouter page'
CMSBatchActions:
ARCHIVE: Archive
ARCHIVED_PAGES: '%d pages archivées'
DELETED_DRAFT_PAGES: '%d pages supprimées du site brouillon, %d échecs'
DELETED_PAGES: '%d pages supprimées du site, %d échecs'
DELETE_DRAFT_PAGES: 'Supprimer du site brouillion'
DELETE_PAGES: 'Supprimer du site publié'
PUBLISHED_PAGES: '%d pages publiées, %d échecs'
PUBLISH_PAGES: Publier
RESTORE: Restaurer
RESTORED_PAGES: '%d pages restaurées'
CMSFileAddController:
MENUTITLE: Fichiers
CMSMain:
ACCESS: 'Droits daccès à la section « {title} »'
ACCESS_HELP: 'Permettre l''affichage de la section contenant l''arborescence et le contenu. La gestion des permissions de visualisation et d''édition peut se faire à travers des liste spécifiques à chaque page. Et aussi la "Permission de contenu" séparé.'
ARCHIVE: Archive
ARCHIVEDPAGE: 'Page ''%s'' archivée'
AddNew: 'Ajouter page'
AddNewButton: 'Ajouter'
AddPageRestriction: 'Note : certains types de page ne sont pas autorisés pour cette sélection'
Cancel: Annuler
ChoosePageParentMode: 'Choisissez où créer cette page'
ChoosePageType: 'Choisir le type de page'
Create: Créer
@ -85,7 +92,7 @@ fr:
DUPLICATEDWITHCHILDREN: '''{title}'' et ses enfants dupliqués avec succès'
EMAIL: Email
EditTree: 'Editer l''arbre'
ListFiltered: 'Filtrelenmiş liste.'
ListFiltered: 'Liste filtrée.'
MENUTITLE: 'Éditer la page'
NEWPAGE: 'Nouveau {pagetype}'
PAGENOTEXISTS: 'Cette page n''existe pas'
@ -109,10 +116,11 @@ fr:
TabContent: Contenu
TabHistory: Historique
TabSettings: Paramètres
TreeFiltered: 'Filtrelenmiş ağaç liste.'
TreeFilteredClear: 'Filtreyi temizle'
TreeFiltered: 'Arbre filtré.'
TreeFilteredClear: 'Réinitialiser le filtre.'
CMSMain_left_ss:
APPLY_FILTER: 'Appliquer le filtre'
CLEAR_FILTER: 'Réinitialiser le filtre.'
RESET: Réinitialiser
CMSPageAddController:
MENUTITLE: 'Ajouter page'
@ -148,6 +156,8 @@ fr:
MULTISELECT: Choix multiple
CMSPagesController_Tools_ss:
FILTER: Filtrer
CMSSIteTreeFilter_PublishedPages:
Title: 'Pages publiées'
CMSSearch:
FILTERDATEFROM: De
FILTERDATEHEADING: Date
@ -213,6 +223,7 @@ fr:
DEFAULTSERVERERRORPAGETITLE: 'Erreur du serveur'
DESCRIPTION: 'Contenu personnalisé pour diverses erreurs (p. ex. « Page introuvable »)'
ERRORFILEPROBLEM: ' Louverture du fichier « {filename} » afin de le modifier a provoqué une erreur ; vérifiez les droits daccès au fichier. '
PLURALNAME: 'Pages derreur'
SINGULARNAME: 'Page derreur'
Folder:
AddFolderButton: 'Ajouter un dossier'
@ -235,6 +246,7 @@ fr:
HASBEENSETUP: 'Une page de redirection sans adresse de redirection a été créée.'
HEADER: 'Cette page va rediriger les utilisateurs vers une autre page'
OTHERURL: 'Autre URL de site web'
PLURALNAME: 'Pages de redirection'
REDIRECTTO: 'Rediriger vers'
REDIRECTTOEXTERNAL: 'Autre site web'
REDIRECTTOPAGE: 'Une page de votre site web'
@ -268,7 +280,6 @@ fr:
SilverStripeNavigator:
ARCHIVED: Archivé
SilverStripeNavigatorLink:
ShareInstructions: 'Pour partager cette page, copiez et collez le lien ci-dessous.'
ShareLink: 'Partager le lien'
SilverStripeNavigatorLinkl:
CloseLink: Fermer
@ -297,6 +308,7 @@ fr:
ADDEDTODRAFTSHORT: Brouillon
ALLOWCOMMENTS: 'Autoriser les commentaires sur cette page ?'
APPEARSVIRTUALPAGES: 'Ce contenu apparaît aussi dans les sections {title} des pages virtuelles.'
ARCHIVEDPAGESHORT: Archivé
BUTTONCANCELDRAFT: 'Annuler les changements brouillons'
BUTTONCANCELDRAFTDESC: 'Supprimer votre brouillon et revenir à la page actuellement publiée'
BUTTONPUBLISHED: Publié
@ -310,6 +322,7 @@ fr:
DEFAULTABOUTTITLE: 'Qui sommes nous ?'
DEFAULTCONTACTCONTENT: '<p>Vous pouvez éditer cette page avec votre propre contenu ou supprimer celle-ci et créer vos propres pages.<br></p>'
DEFAULTCONTACTTITLE: 'Contactez-nous'
DEFAULTHOMECONTENT: '<p>Bienvenue dans SilverStripe! Ceci est la page d''accueil par défaut. Vous pouvez éditer cette page en ouvrant <a href="admin/">le CMS</a>.</p><p>Vous pouvez maintenant accéder à la <a href="http://docs.silverstripe.org">documentation développeur</a>, ou commencer les <a href="http://www.silverstripe.org/learn/lessons">leçons SilverStripe</a>.</p>'
DEFAULTHOMETITLE: Accueil
DELETEDPAGEHELP: 'La page nest plus publique '
DELETEDPAGESHORT: Supprimée
@ -380,6 +393,9 @@ fr:
many_many_BackLinkTracking: 'Suivi des liens retour'
many_many_ImageTracking: 'Suivi des images'
many_many_LinkTracking: 'Suivi des Liens'
SiteTreeFileExtension:
BACKLINK_LIST_DESCRIPTION: 'Cette liste affiche toutes les pages où le fichier a été ajouté via l''éditeur WYSIWYG.'
EDIT: Éditer
SiteTreeURLSegmentField:
EMPTY: 'Merci d''entrer une URL ou cliquez sur Annuler'
HelpChars: 'Les caractères spéciaux sont automatiquement convertis ou supprimés.'
@ -396,5 +412,6 @@ fr:
EditLink: éditer
HEADER: 'Cette page est virtuelle'
HEADERWITHLINK: 'Ceci est une page virtuelle copiant le contenu de "{title}" ({link})'
PLURALNAME: 'Pages virtuelles'
PageTypNotAllowedOnRoot: 'Le type de page dorigine « {type} » nest pas autorisé au niveau racine pour cette page virtuelle'
SINGULARNAME: 'Page virtuelle'

View File

@ -235,7 +235,6 @@ hu:
SilverStripeNavigator:
ARCHIVED: Archiválva
SilverStripeNavigatorLink:
ShareInstructions: 'Az oldal megosztásához másolja ki az alábbi linket'
ShareLink: 'Hivatkozás megosztása'
SilverStripeNavigatorLinkl:
CloseLink: Bezár

View File

@ -71,8 +71,6 @@ id:
PUBLISH_PAGES: Terbitkan
RESTORE: Pulihkan
RESTORED_PAGES: 'Pulihkan %d halaman'
UNPUBLISHED_PAGES: 'Batal Terbit %d halaman'
UNPUBLISH_PAGES: Batal Terbit
CMSFileAddController:
MENUTITLE: Berkas
CMSMain:
@ -107,7 +105,6 @@ id:
REMOVED: 'Dihapus ''{title}''{description} dari situs langsung'
REMOVEDPAGE: 'Menghapus ''{title}'' dari situs terbit'
REMOVEDPAGEFROMDRAFT: 'Menghapus ''%s'' dari draf situs'
RESTORE: 'Pulihkan Draf'
RESTORED: 'Pemulihan ''{title}'' sukses'
RESTORE_DESC: 'Pulihkan versi arsip ke draf'
RESTORE_TO_ROOT: 'Pulihkan draf pada level teratas'
@ -283,7 +280,6 @@ id:
SilverStripeNavigator:
ARCHIVED: Terarsip
SilverStripeNavigatorLink:
ShareInstructions: 'Untuk membagi laman ini, salin dan tempel pada tautan berikut.'
ShareLink: 'Bagi tautan'
SilverStripeNavigatorLinkl:
CloseLink: Tutup

View File

@ -71,8 +71,6 @@ it:
PUBLISH_PAGES: Pubblica
RESTORE: Ripristina
RESTORED_PAGES: '%d pagine ripristinate'
UNPUBLISHED_PAGES: '%d pagine nascoste'
UNPUBLISH_PAGES: Nascondere
CMSFileAddController:
MENUTITLE: Files
CMSMain:
@ -109,7 +107,6 @@ it:
REMOVED: '''{title}'' {description} rimosso dal sito pubblico'
REMOVEDPAGE: 'Eliminata ''{title}'' dal sito pubblicato'
REMOVEDPAGEFROMDRAFT: 'Eliminata ''%s'' dal sito bozza'
RESTORE: 'Ripristinare bozza'
RESTORED: 'Ripristinata ''{title}'' con successo'
RESTORE_DESC: 'Ripristinare la versione archiviata nella bozza'
RESTORE_TO_ROOT: 'Ripristinare bozza al primo livello'
@ -171,16 +168,8 @@ it:
FILTERLABELTEXT: Contenuto
CMSSettingsController:
MENUTITLE: Impostazioni
CMSSiteTreeFilter_ChangedPages:
Title: 'Pagine modificate'
CMSSiteTreeFilter_DeletedPages:
Title: 'Tutte le pagine, comprese quelle archiviate'
CMSSiteTreeFilter_Search:
Title: 'Tutte le pagine'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Pagine archiviate'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Pagine bozza'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Live ma rimosse dalla bozza'
ContentControl:
@ -298,7 +287,6 @@ it:
SilverStripeNavigator:
ARCHIVED: Archiviato
SilverStripeNavigatorLink:
ShareInstructions: 'Per condividere questa pagina, copia e incolla il link qui sotto.'
ShareLink: 'Link di condivisione'
SilverStripeNavigatorLinkl:
CloseLink: Chiudi

View File

@ -268,7 +268,6 @@ ja:
SilverStripeNavigator:
ARCHIVED: アーカイブされた
SilverStripeNavigatorLink:
ShareInstructions: 'このページをシェアするには、下のリンクをコピーして貼り付けてください。'
ShareLink: '共有リンク'
SilverStripeNavigatorLinkl:
CloseLink: 閉じる

View File

@ -271,7 +271,6 @@ ko:
SilverStripeNavigator:
ARCHIVED: 보관됨
SilverStripeNavigatorLink:
ShareInstructions: '이 페이지를 공유하려면 아래 링크를 복사하여 붙여 넣기하세요.'
ShareLink: '공유 링크'
SilverStripeNavigatorLinkl:
CloseLink: 닫기

View File

@ -72,7 +72,7 @@ lt:
RESTORE: Atstatyti
RESTORED_PAGES: 'Atstatyti %d puslapiai'
UNPUBLISHED_PAGES: 'Nebepublikuojami %d puslapiai'
UNPUBLISH_PAGES: Nebepublikuoti
UNPUBLISH_PAGES: Nepublikuoti
CMSFileAddController:
MENUTITLE: Bylos
CMSMain:
@ -109,7 +109,7 @@ lt:
REMOVED: 'Iš publikuojamos svetainės ištrintas ''{title}''{description}'
REMOVEDPAGE: 'Iš publikuojamos svetainės pašalintas ''{title}'''
REMOVEDPAGEFROMDRAFT: '''%s'' pašalintas iš juodraštinės svetainės'
RESTORE: 'Atstatyti juodraštį'
RESTORE: Atstatyti
RESTORED: '''{title}'' atstatytas sėkmingai'
RESTORE_DESC: 'Atstatyti suarchyvuotą versiją kaip juodraštinį puslapį'
RESTORE_TO_ROOT: 'Atstatyti juodraštį aukščiausiame lygyje'
@ -172,15 +172,15 @@ lt:
CMSSettingsController:
MENUTITLE: Nustatymai
CMSSiteTreeFilter_ChangedPages:
Title: 'Pakeisti puslapiai'
Title: 'Ištrinti puslapiai'
CMSSiteTreeFilter_DeletedPages:
Title: 'Visi puslapiai, kartu su suarchyvuotais'
CMSSiteTreeFilter_Search:
Title: 'Visi puslapiai'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Suarchyvuoti puslapiai'
Title: 'Ištrinti puslapiai'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Juyodraštiniai puslapiai'
Title: 'Juodraštiniai nepublikuoti puslapiai'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Publikuotas, bet pašalintas iš juodraščių'
ContentControl:

View File

@ -268,7 +268,6 @@ mi:
SilverStripeNavigator:
ARCHIVED: I putumōhiotia
SilverStripeNavigatorLink:
ShareInstructions: 'Hei tiritiri i tēnei whārangi, tāruatia ka whakapiri i te hono kei raro.'
ShareLink: 'Tiritiri hono'
SilverStripeNavigatorLinkl:
CloseLink: Kati

View File

@ -61,20 +61,27 @@ nb:
CMSAddPageController:
Title: 'Legg til side'
CMSBatchActions:
ARCHIVE: Arkiv
ARCHIVED_PAGES: 'Arkiverte %d sider'
DELETED_DRAFT_PAGES: 'Slettet %d sider fra utkastnettstedet, %d feilet.'
DELETED_PAGES: 'Slettet %d sider fra det publiserte nettstedet, %d feilet.'
DELETE_DRAFT_PAGES: 'Slett fra utkastnettsted.'
DELETE_PAGES: 'Slett fra publisert side'
PUBLISHED_PAGES: 'Publiserte %d sider, %d feilet.'
PUBLISH_PAGES: Publiser
RESTORE: Gjenopprett
RESTORED_PAGES: 'Gjenopprettet %d sider'
CMSFileAddController:
MENUTITLE: Filer
CMSMain:
ACCESS: 'Adgang til seksjon for ''{title}'''
ACCESS_HELP: 'Lar deg se seksjonen som inneholder sidetreet og annet innhold. Tillatelser for å vise og redigere kan behandles gjennom sidespesifikke nedtrekkslister, så vel som separate "Innholdstillatelser".'
ARCHIVE: Arkiver
ARCHIVEDPAGE: 'Arkiverte side ''%s'''
AddNew: 'Opprett ny side'
AddNewButton: 'Opprett ny'
AddPageRestriction: 'Merk: Noen sidetyper er ikke tillatt for dette valget.'
Cancel: Avbryt
ChoosePageParentMode: 'Velg hvor du vil opprette siden'
ChoosePageType: 'Velg sidetype'
Create: Opprett
@ -101,6 +108,9 @@ nb:
REMOVEDPAGE: 'Fjernet "{title}" fra det publiserte nettstedet'
REMOVEDPAGEFROMDRAFT: 'Fjernet ''%s'' fra utkastnettstedet'
RESTORED: 'Vellykket gjenoppretting av "{title}".'
RESTORE_DESC: 'Gjenopprett arkivert versjon som utkast'
RESTORE_TO_ROOT: 'Gjenopprett utkast på toppnivå'
RESTORE_TO_ROOT_DESC: 'Gjenopprett arkivert versjon som utkast på toppnivå'
ROLLBACK: 'Tilbakestill til denne versjonen'
ROLLEDBACKPUBv2: 'Tilbakestilte til den publiserte versjonen.'
ROLLEDBACKVERSIONv2: 'Tilbakestile til versjon #%d.'
@ -113,6 +123,7 @@ nb:
TreeFilteredClear: 'Fjern filtrering'
CMSMain_left_ss:
APPLY_FILTER: 'Aktiver filter'
CLEAR_FILTER: 'Fjern filter'
RESET: Tilbakestill
CMSPageAddController:
MENUTITLE: 'Legg til side'
@ -148,6 +159,8 @@ nb:
MULTISELECT: Flervalg
CMSPagesController_Tools_ss:
FILTER: Filter
CMSSIteTreeFilter_PublishedPages:
Title: 'Publiserte sider'
CMSSearch:
FILTERDATEFROM: Fra
FILTERDATEHEADING: Dato
@ -157,6 +170,8 @@ nb:
MENUTITLE: Innstillinger
CMSSiteTreeFilter_Search:
Title: 'Alle sider'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Publisert men fjernet fra utkast'
ContentControl:
NOTEWONTBESHOWN: 'Merk: denne beskjeden vil ikke være synlig for besøkende'
ContentController:
@ -200,6 +215,8 @@ nb:
415: '415 - Mediatype ikke støttet'
416: '416 - Spørringsspenne kan ikke tilfredstilles'
417: '417 - Forventning feilet'
422: '422 - Enheten kan ikke prosesseres'
429: '429 - for mange sideforespørsler'
500: '500 - Intern serverfeil'
501: '501 - Ikke implementert'
502: '502 - Dårlig gateway'
@ -213,6 +230,7 @@ nb:
DEFAULTSERVERERRORPAGETITLE: 'Serverfeil'
DESCRIPTION: 'Egendefinert innhold for forskjellige feilsituasjoner (f.eks "Siden ble ikke funnet")'
ERRORFILEPROBLEM: 'Feil ved åpning av filen "{filename}". Vennligst sjekk filtillatelser.'
PLURALNAME: 'Feilsider'
SINGULARNAME: 'Feilside'
Folder:
AddFolderButton: 'Legg til mappe'
@ -235,6 +253,7 @@ nb:
HASBEENSETUP: 'En omdirigeringssside har blitt satt opp uten et mål å omdirigere til.'
HEADER: 'Denne siden vil omdirigere brukere til en annen side'
OTHERURL: 'Nettadresse til et annet nettsted'
PLURALNAME: 'Omdirigeringssider'
REDIRECTTO: 'Omdiriger til'
REDIRECTTOEXTERNAL: 'Et annet nettsted'
REDIRECTTOPAGE: 'En side på nettstedet'
@ -268,7 +287,6 @@ nb:
SilverStripeNavigator:
ARCHIVED: Arkivert
SilverStripeNavigatorLink:
ShareInstructions: 'For å dele en lenke til denne siden, kopier og lim inn lenken nedenfor.'
ShareLink: 'Del lenke'
SilverStripeNavigatorLinkl:
CloseLink: Lukk
@ -297,6 +315,9 @@ nb:
ADDEDTODRAFTSHORT: Utkast
ALLOWCOMMENTS: 'Tillat kommentarer på denne siden?'
APPEARSVIRTUALPAGES: 'Dette innholdet opptrer også i {title}-seksjonene til de virtuelle sidene.'
ARCHIVEDPAGEHELP: 'Siden er publisert og fjernet fra utkast'
ARCHIVEDPAGESHORT: Arkivert
BUTTONARCHIVEDESC: 'Avpubliser og arkiver'
BUTTONCANCELDRAFT: 'Avbryt endringer i utkast'
BUTTONCANCELDRAFTDESC: 'Slett utkast og gå tilbake til publisert versjon av denne siden'
BUTTONPUBLISHED: Publisert
@ -310,6 +331,7 @@ nb:
DEFAULTABOUTTITLE: 'Om oss'
DEFAULTCONTACTCONTENT: '<p>Du kan fylle denne siden med ditt innhold, eller du kan slette siden og lage dine egne sider.<br /></p>'
DEFAULTCONTACTTITLE: 'Kontakt oss'
DEFAULTHOMECONTENT: '<p>Velkommen til SilverStripe! Dette er standard-forsiden. Du kan redigere denne ved å gå til <a href="admin/">publiseringssystemet</a>.</p><p>Du kan nå gå til <a href="http://docs.silverstripe.org">dokumentasjonen for utviklere</a>, eller begynne med <a href="http://www.silverstripe.org/learn/lessons">SilverStripe-leksjoner</a>.</p>'
DEFAULTHOMETITLE: Hjem
DELETEDPAGEHELP: 'Siden er ikke lenger publisert.'
DELETEDPAGESHORT: Slettet
@ -380,6 +402,9 @@ nb:
many_many_BackLinkTracking: 'Referansesporing'
many_many_ImageTracking: 'Bildesporing'
many_many_LinkTracking: 'Lenkesporing'
SiteTreeFileExtension:
BACKLINK_LIST_DESCRIPTION: 'Denne liste viser alle sider med filer lastet opp gjennom en WYSIWYG-editor.'
EDIT: Rediger
SiteTreeURLSegmentField:
EMPTY: 'Vennligst skriv inn adressesegment eller trykk avbryt.'
HelpChars: 'Spesialtegn blir automatisk konvertert eller fjernet.'
@ -396,5 +421,6 @@ nb:
EditLink: rediger
HEADER: 'Dette er en virituell side'
HEADERWITHLINK: 'Dette er en virtuell side som kopierer innhold fra "{title}" ({link})'
PLURALNAME: 'Virtuelle sider'
PageTypNotAllowedOnRoot: 'Originaltypen "{type}" er ikke tillatt på toppnivået for denne virtuelle siden.'
SINGULARNAME: 'Virtuell side'

View File

@ -271,7 +271,6 @@ nl:
SilverStripeNavigator:
ARCHIVED: Gearchiveerd
SilverStripeNavigatorLink:
ShareInstructions: 'Kopieer en plak de link hieronder, om deze pagina te delen.'
ShareLink: 'Deel een link'
SilverStripeNavigatorLinkl:
CloseLink: Sluiten

View File

@ -271,7 +271,6 @@ pl:
SilverStripeNavigator:
ARCHIVED: Zarchiwizowane
SilverStripeNavigatorLink:
ShareInstructions: 'Aby podzielić się tą stroną, skopiuj i wklej poniższy link.'
ShareLink: 'Podziel się linkiem'
SilverStripeNavigatorLinkl:
CloseLink: Zamknij

View File

@ -268,7 +268,6 @@ ro:
SilverStripeNavigator:
ARCHIVED: Arhivă
SilverStripeNavigatorLink:
ShareInstructions: 'Pentru a distribuii pagina, copiază si lipește link-ul de mai jos'
ShareLink: 'Distribuie link'
SilverStripeNavigatorLinkl:
CloseLink: Închide

View File

@ -271,7 +271,6 @@ ru:
SilverStripeNavigator:
ARCHIVED: Архивные
SilverStripeNavigatorLink:
ShareInstructions: 'Чтобы поделиться ссылкой на эту страницу, скопируйте URL ниже.'
ShareLink: 'Поделиться ссылкой'
SilverStripeNavigatorLinkl:
CloseLink: Закрыть

View File

@ -109,7 +109,7 @@ sk:
REMOVED: 'Smazané ''{title}''{description} z webu'
REMOVEDPAGE: 'Smazané ''{title}'' z verejného webu'
REMOVEDPAGEFROMDRAFT: 'Odstránené ''%s'' z konceptu webu'
RESTORE: 'Obnoviť koncept'
RESTORE: Obnoviť
RESTORED: 'Obnovené ''{title}'' úspešne'
RESTORE_DESC: 'Obnoviť archivovanú verziu na koncept'
RESTORE_TO_ROOT: 'Obnoviť koncept na najvyšiu úroveň'
@ -174,13 +174,13 @@ sk:
CMSSiteTreeFilter_ChangedPages:
Title: 'Zmenené stránky'
CMSSiteTreeFilter_DeletedPages:
Title: 'Všetky stránky, vrátane archivovaných'
Title: 'Všetky stránky, vrátane vymazaných'
CMSSiteTreeFilter_Search:
Title: 'Všechny stránky'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Archivované stranky'
Title: 'Zmazané stránky'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Stránky konceptu'
Title: 'Koncept nezverejnených stránok'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Živé, ale odstránené z konceptu'
ContentControl:

View File

@ -268,7 +268,6 @@ sr:
SilverStripeNavigator:
ARCHIVED: Архивирано
SilverStripeNavigatorLink:
ShareInstructions: 'Да би сте поделили ову страницу копирајте и налепите линк испод.'
ShareLink: 'Подели линк'
SilverStripeNavigatorLinkl:
CloseLink: Затвори

View File

@ -268,7 +268,6 @@ sr_RS@latin:
SilverStripeNavigator:
ARCHIVED: Arhivirano
SilverStripeNavigatorLink:
ShareInstructions: 'Da bi ste podelili ovu stranicu kopirajte i nalepite link ispod.'
ShareLink: 'Podeli link'
SilverStripeNavigatorLinkl:
CloseLink: Zatvori

View File

@ -71,8 +71,6 @@ sv:
PUBLISH_PAGES: Publicera
RESTORE: Återskapa
RESTORED_PAGES: 'Återskapade %d sidor'
UNPUBLISHED_PAGES: 'Avpublicerade %d sidor'
UNPUBLISH_PAGES: Avpublicera
CMSFileAddController:
MENUTITLE: Filer
CMSMain:
@ -109,7 +107,6 @@ sv:
REMOVED: 'Tog bort ''{title}''{description} från den publicerade sajten'
REMOVEDPAGE: 'Tog bort ''{title}'' från den publicerade sajten'
REMOVEDPAGEFROMDRAFT: 'Raderade ''%s'' från utkast'
RESTORE: 'Återställ utkast'
RESTORED: 'Återskapandet av ''{title}'' lyckades'
RESTORE_DESC: 'Återställ den arkiverade versionen av sidan som ett utkast'
RESTORE_TO_ROOT: 'Återskapa utkast på top nivå'
@ -171,16 +168,8 @@ sv:
FILTERLABELTEXT: Innehåll
CMSSettingsController:
MENUTITLE: Inställningar
CMSSiteTreeFilter_ChangedPages:
Title: 'Ändrade sidor'
CMSSiteTreeFilter_DeletedPages:
Title: 'Alla sidor, inklusive arkiverade sidor'
CMSSiteTreeFilter_Search:
Title: 'Alla sidor'
CMSSiteTreeFilter_StatusDeletedPages:
Title: 'Arkiverade sidor'
CMSSiteTreeFilter_StatusDraftPages:
Title: 'Ej publicerade sidor'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Live men borttagen från utkast'
ContentControl:
@ -298,7 +287,6 @@ sv:
SilverStripeNavigator:
ARCHIVED: Arkiverad
SilverStripeNavigatorLink:
ShareInstructions: 'Kopiera och klistra in länken nedan för att dela den här sidan.'
ShareLink: 'Dela länk'
SilverStripeNavigatorLinkl:
CloseLink: Stäng

View File

@ -268,7 +268,6 @@ zh:
SilverStripeNavigator:
ARCHIVED: 已存档
SilverStripeNavigatorLink:
ShareInstructions: '复制并粘贴下方链接分享该页面。'
ShareLink: '分享链接'
SilverStripeNavigatorLinkl:
CloseLink: 关闭

View File

@ -3,7 +3,7 @@
<a class="ss-ui-button cms-content-addpage-button tool-button font-icon-plus" href="$LinkPageAdd" data-url-addpage="{$LinkPageAdd('', 'ParentID=%s')}"><% _t('CMSMain.AddNewButton', 'Add new') %></a>
<% if $View == 'Tree' %>
<button class="cms-content-batchactions-button tool-button font-icon-check-mark-2" data-toolid="batch-actions">
<button type="button" class="cms-content-batchactions-button tool-button font-icon-check-mark-2" data-toolid="batch-actions">
<% _t("CMSPagesController_ContentToolbar_ss.MULTISELECT","Batch actions") %>
</button>
<% end_if %>

View File

@ -2,16 +2,16 @@
<a class="preview" href="$URL" target="_blank">
$URL
</a>
<button class="ss-ui-button ss-ui-button-small edit">
<button type="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">
<button type="button" class="update ss-ui-button-small">
<% _t('URLSegmentField.OK', 'OK') %>
</button>
<button class="cancel ss-ui-button-small ss-ui-action-minor">
<button type="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 %>

View File

@ -26,7 +26,7 @@ class FeatureContext extends \SilverStripe\Framework\Test\Behaviour\FeatureConte
* Initializes context.
* Every scenario gets it's own context object.
*
* @param array $parameters context parameters (set them up through behat.yml)
* @param array $parameters context parameters (set them up through behat.yml)
*/
public function __construct(array $parameters) {
parent::__construct($parameters);

View File

@ -6,9 +6,9 @@
class CMSMainTest extends FunctionalTest {
protected static $fixture_file = 'CMSMainTest.yml';
static protected $orig = array();
function testSiteTreeHints() {
$cache = SS_Cache::factory('CMSMain_SiteTreeHints');
// Login as user with root creation privileges
@ -27,60 +27,60 @@ class CMSMainTest extends FunctionalTest {
$this->assertArrayHasKey('All', $hints);
$this->assertArrayHasKey(
'CMSMainTest_ClassA',
$hints['All'],
'Global list shows allowed classes'
'CMSMainTest_ClassA',
$hints['All'],
'Global list shows allowed classes'
);
$this->assertArrayNotHasKey(
'CMSMainTest_HiddenClass',
$hints['All'],
'Global list does not list hidden classes'
'CMSMainTest_HiddenClass',
$hints['All'],
'Global list does not list hidden classes'
);
$this->assertNotContains(
'CMSMainTest_ClassA',
$hints['Root']['disallowedChildren'],
'Limits root classes'
'CMSMainTest_ClassA',
$hints['Root']['disallowedChildren'],
'Limits root classes'
);
$this->assertContains(
'CMSMainTest_NotRoot',
$hints['Root']['disallowedChildren'],
'Limits root classes'
'CMSMainTest_NotRoot',
$hints['Root']['disallowedChildren'],
'Limits root classes'
);
}
public function testChildFilter() {
$this->logInWithPermission('ADMIN');
// Check page A
$pageA = new CMSMainTest_ClassA();
$pageA->write();
$pageB = new CMSMainTest_ClassB();
$pageB->write();
// Check query
$response = $this->get('CMSMain/childfilter?ParentID='.$pageA->ID);
$response = $this->get('CMSMain/childfilter?ParentID=' . $pageA->ID);
$children = json_decode($response->getBody());
$this->assertFalse($response->isError());
// Page A can't have unrelated children
$this->assertContains(
'Page',
$children,
'Limited parent lists disallowed classes'
'Page',
$children,
'Limited parent lists disallowed classes'
);
// But it can create a ClassB
$this->assertNotContains(
'CMSMainTest_ClassB',
$children,
'Limited parent omits explicitly allowed classes in disallowedChildren'
'CMSMainTest_ClassB',
$children,
'Limited parent omits explicitly allowed classes in disallowedChildren'
);
}
/**
* @todo Test the results of a publication better
*/
@ -88,18 +88,18 @@ class CMSMainTest extends FunctionalTest {
$page1 = $this->objFromFixture('Page', "page1");
$page2 = $this->objFromFixture('Page', "page2");
$this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin'));
$response = $this->get('admin/pages/publishall?confirm=1');
$this->assertContains(
'Done: Published 30 pages',
$response->getBody()
'Done: Published 30 pages',
$response->getBody()
);
$actions = CMSBatchActionHandler::config()->batch_actions;
// Some modules (e.g., cmsworkflow) will remove this action
$actions = CMSBatchActionHandler::config()->batch_actions;
if(isset($actions['publish'])) {
if (isset($actions['publish'])) {
$response = $this->get('admin/pages/batchactions/publish?ajax=1&csvIDs=' . implode(',', array($page1->ID, $page2->ID)));
$responseData = Convert::json2array($response->getBody());
$this->assertArrayHasKey($page1->ID, $responseData['modified']);
@ -111,11 +111,11 @@ class CMSMainTest extends FunctionalTest {
$latestID = DB::prepared_query('select max("Version") from "RedirectorPage_versions" where "RecordID" = ?', array($pageID))->value();
$dsCount = DB::prepared_query('select count("Version") from "RedirectorPage_versions" where "RecordID" = ? and "Version"= ?', array($pageID, $latestID))->value();
$this->assertEquals(1, $dsCount, "Published page has no duplicate version records: it has " . $dsCount . " for version " . $latestID);
$this->session()->clear('loggedInAs');
//$this->assertRegexp('/Done: Published 4 pages/', $response->getBody())
/*
$response = Director::test("admin/pages/publishitems", array(
'ID' => ''
@ -125,7 +125,7 @@ class CMSMainTest extends FunctionalTest {
$this->assertRegexp('/Done: Published 4 pages/', $response->getBody())
*/
}
/**
* Test publication of one of every page type
*/
@ -134,24 +134,24 @@ class CMSMainTest extends FunctionalTest {
// $classes = ClassInfo::subclassesFor("SiteTree");
// array_shift($classes);
// foreach($classes as $class) {
// $page = new $class();
// if($class instanceof TestOnly) continue;
// $page->Title = "Test $class page";
// $page->write();
// $this->assertEquals("Test $class page", DB::query("SELECT \"Title\" FROM \"SiteTree\" WHERE \"ID\" = $page->ID")->value());
// $page->doPublish();
// $this->assertEquals("Test $class page", DB::query("SELECT \"Title\" FROM \"SiteTree_Live\" WHERE \"ID\" = $page->ID")->value());
// // Check that you can visit the page
// $this->get($page->URLSegment);
// }
}
/**
* Test that getCMSFields works on each page type.
* Mostly, this is just checking that the method doesn't return an error
@ -159,99 +159,99 @@ class CMSMainTest extends FunctionalTest {
public function testThatGetCMSFieldsWorksOnEveryPageType() {
$classes = ClassInfo::subclassesFor("SiteTree");
array_shift($classes);
foreach($classes as $class) {
foreach ($classes as $class) {
$page = new $class();
if($page instanceof TestOnly) continue;
if(!$page->stat('can_be_root')) continue;
if ($page instanceof TestOnly) continue;
if (!$page->stat('can_be_root')) continue;
$page->Title = "Test $class page";
$page->write();
$page->flushCache();
$page = DataObject::get_by_id("SiteTree", $page->ID);
$this->assertTrue($page->getCMSFields() instanceof FieldList);
}
}
public function testCanPublishPageWithUnpublishedParentWithStrictHierarchyOff() {
$this->logInWithPermission('ADMIN');
Config::inst()->update('SiteTree', 'enforce_strict_hierarchy', true);
$parentPage = $this->objFromFixture('Page','page3');
$childPage = $this->objFromFixture('Page','page1');
$parentPage = $this->objFromFixture('Page', 'page3');
$childPage = $this->objFromFixture('Page', 'page1');
$parentPage->doUnpublish();
$childPage->doUnpublish();
$actions = $childPage->getCMSActions()->dataFields();
$this->assertArrayHasKey(
'action_publish',
$actions,
'Can publish a page with an unpublished parent with strict hierarchy off'
'action_publish',
$actions,
'Can publish a page with an unpublished parent with strict hierarchy off'
);
Config::inst()->update('SiteTree', 'enforce_strict_hierarchy', false);
}
}
/**
* Test that a draft-deleted page can still be opened in the CMS
*/
public function testDraftDeletedPageCanBeOpenedInCMS() {
$this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin'));
// Set up a page that is delete from live
$page = $this->objFromFixture('Page','page1');
$page = $this->objFromFixture('Page', 'page1');
$pageID = $page->ID;
$page->doPublish();
$page->delete();
$response = $this->get('admin/pages/edit/show/' . $pageID);
$livePage = Versioned::get_one_by_stage("SiteTree", "Live", array(
'"SiteTree"."ID"' => $pageID
'"SiteTree"."ID"' => $pageID
));
$this->assertInstanceOf('SiteTree', $livePage);
$this->assertTrue($livePage->canDelete());
// Check that the 'restore' button exists as a simple way of checking that the correct page is returned.
$this->assertRegExp('/<button[^>]+name="action_(restore|revert)"/i', $response->getBody());
}
/**
* Test CMSMain::getRecord()
*/
public function testGetRecord() {
// Set up a page that is delete from live
$page1 = $this->objFromFixture('Page','page1');
$page1 = $this->objFromFixture('Page', 'page1');
$page1ID = $page1->ID;
$page1->doPublish();
$page1->delete();
$cmsMain = new CMSMain();
// Bad calls
$this->assertNull($cmsMain->getRecord('0'));
$this->assertNull($cmsMain->getRecord('asdf'));
// Pages that are on draft and aren't on draft should both work
$this->assertInstanceOf('Page', $cmsMain->getRecord($page1ID));
$this->assertInstanceOf('Page', $cmsMain->getRecord($this->idFromFixture('Page','page2')));
$this->assertInstanceOf('Page', $cmsMain->getRecord($this->idFromFixture('Page', 'page2')));
// This functionality isn't actually used any more.
$newPage = $cmsMain->getRecord('new-Page-5');
$this->assertInstanceOf('Page', $newPage);
$this->assertEquals('5', $newPage->ParentID);
}
public function testDeletedPagesSiteTreeFilter() {
$id = $this->idFromFixture('Page', 'page3');
$this->logInWithPermission('ADMIN');
$result = $this->get('admin/pages/getsubtree?filter=CMSSiteTreeFilter_DeletedPages&ajax=1&ID=' . $id);
$this->assertEquals(200, $result->getStatusCode());
}
public function testCreationOfTopLevelPage(){
public function testCreationOfTopLevelPage() {
$origFollow = $this->autoFollowRedirection;
$this->autoFollowRedirection = false;
@ -262,16 +262,16 @@ class CMSMainTest extends FunctionalTest {
$cmsUser->logIn();
$this->get('admin/pages/add');
$response = $this->post(
'admin/pages/add/AddForm',
array(
'ParentID' => '0',
'PageType' => 'Page',
'Locale' => 'en_US',
'action_doAdd' => 1,
'ajax' => 1,
), array(
'X-Pjax' => 'CurrentForm,Breadcrumbs',
)
'admin/pages/add/AddForm',
array(
'ParentID' => '0',
'PageType' => 'Page',
'Locale' => 'en_US',
'action_doAdd' => 1,
'ajax' => 1,
), array(
'X-Pjax' => 'CurrentForm,Breadcrumbs',
)
);
// should redirect, which is a permission error
$this->assertEquals(403, $response->getStatusCode(), 'Add TopLevel page must fail for normal user');
@ -281,28 +281,28 @@ class CMSMainTest extends FunctionalTest {
$response = $this->get('admin/pages/add');
$response = $this->post(
'admin/pages/add/AddForm',
array(
'ParentID' => '0',
'PageType' => 'Page',
'Locale' => 'en_US',
'action_doAdd' => 1,
'ajax' => 1,
), array(
'X-Pjax' => 'CurrentForm,Breadcrumbs',
)
'admin/pages/add/AddForm',
array(
'ParentID' => '0',
'PageType' => 'Page',
'Locale' => 'en_US',
'action_doAdd' => 1,
'ajax' => 1,
), array(
'X-Pjax' => 'CurrentForm,Breadcrumbs',
)
);
$location = $response->getHeader('X-ControllerURL');
$this->assertNotEmpty($location, 'Must be a redirect on success');
$this->assertContains('/show/',$location, 'Must redirect to /show/ the new page');
$this->assertContains('/show/', $location, 'Must redirect to /show/ the new page');
// TODO Logout
$this->session()->inst_set('loggedInAs', NULL);
$this->autoFollowRedirection = $origFollow;
}
public function testCreationOfRestrictedPage(){
public function testCreationOfRestrictedPage() {
$origFollow = $this->autoFollowRedirection;
$this->autoFollowRedirection = false;
@ -312,8 +312,8 @@ class CMSMainTest extends FunctionalTest {
// Create toplevel page
$this->get('admin/pages/add');
$response = $this->post(
'admin/pages/add/AddForm',
array('ParentID' => '0', 'PageType' => 'CMSMainTest_ClassA', 'Locale' => 'en_US', 'action_doAdd' => 1)
'admin/pages/add/AddForm',
array('ParentID' => '0', 'PageType' => 'CMSMainTest_ClassA', 'Locale' => 'en_US', 'action_doAdd' => 1)
);
$this->assertFalse($response->isError());
preg_match('/edit\/show\/(\d*)/', $response->getHeader('Location'), $matches);
@ -322,8 +322,8 @@ class CMSMainTest extends FunctionalTest {
// Create allowed child
$this->get('admin/pages/add');
$response = $this->post(
'admin/pages/add/AddForm',
array('ParentID' => $newPageId, 'PageType' => 'CMSMainTest_ClassB', 'Locale' => 'en_US', 'action_doAdd' => 1)
'admin/pages/add/AddForm',
array('ParentID' => $newPageId, 'PageType' => 'CMSMainTest_ClassB', 'Locale' => 'en_US', 'action_doAdd' => 1)
);
$this->assertFalse($response->isError());
$this->assertNull($response->getBody());
@ -331,8 +331,8 @@ class CMSMainTest extends FunctionalTest {
// Create disallowed child
$this->get('admin/pages/add');
$response = $this->post(
'admin/pages/add/AddForm',
array('ParentID' => $newPageId, 'PageType' => 'Page', 'Locale' => 'en_US', 'action_doAdd' => 1)
'admin/pages/add/AddForm',
array('ParentID' => $newPageId, 'PageType' => 'Page', 'Locale' => 'en_US', 'action_doAdd' => 1)
);
$this->assertEquals(403, $response->getStatusCode(), 'Add disallowed child should fail');
@ -375,11 +375,11 @@ class CMSMainTest extends FunctionalTest {
$id = 'new-Member-0';
$member = $controller->getNewItem($id, false);
$this->fail('Should not be able to create a Member object');
} catch(SS_HTTPResponse_Exception $e) {
} catch (SS_HTTPResponse_Exception $e) {
$this->assertEquals($controller->getResponse()->getStatusCode(), 302);
}
}
/**
* Tests filtering in {@see CMSMain::getList()}
*/
@ -390,8 +390,8 @@ class CMSMainTest extends FunctionalTest {
$pages = $controller->getList()->sort('Title');
$this->assertEquals(28, $pages->count());
$this->assertEquals(
array('Home', 'Page 1', 'Page 10', 'Page 11', 'Page 12'),
$pages->Limit(5)->column('Title')
array('Home', 'Page 1', 'Page 10', 'Page 11', 'Page 12'),
$pages->Limit(5)->column('Title')
);
// Change state of tree
@ -412,59 +412,78 @@ class CMSMainTest extends FunctionalTest {
$pages = $controller->getList()->sort('Title');
$this->assertEquals(26, $pages->count());
$this->assertEquals(
array('Home', 'Page 10', 'Page 11', 'Page 13', 'Page 14'),
$pages->Limit(5)->column('Title')
array('Home', 'Page 10', 'Page 11', 'Page 13', 'Page 14'),
$pages->Limit(5)->column('Title')
);
// Test deleted page filter
$params = array(
'FilterClass' => 'CMSSiteTreeFilter_StatusDeletedPages'
'FilterClass' => 'CMSSiteTreeFilter_StatusDeletedPages'
);
$pages = $controller->getList($params);
$this->assertEquals(1, $pages->count());
$this->assertEquals(
array('Page 1'),
$pages->column('Title')
array('Page 1'),
$pages->column('Title')
);
// Test live, but not on draft filter
$params = array(
'FilterClass' => 'CMSSiteTreeFilter_StatusRemovedFromDraftPages'
'FilterClass' => 'CMSSiteTreeFilter_StatusRemovedFromDraftPages'
);
$pages = $controller->getList($params);
$this->assertEquals(1, $pages->count());
$this->assertEquals(
array('Page 12'),
$pages->column('Title')
array('Page 12'),
$pages->column('Title')
);
// Test live pages filter
$params = array(
'FilterClass' => 'CMSSIteTreeFilter_PublishedPages'
'FilterClass' => 'CMSSIteTreeFilter_PublishedPages'
);
$pages = $controller->getList($params);
$this->assertEquals(2, $pages->count());
$this->assertEquals(
array('Page 11', 'Page 12'),
$pages->column('Title')
array('Page 11', 'Page 12'),
$pages->column('Title')
);
// Test that parentID is ignored when filtering
$pages = $controller->getList($params, $page3->ID);
$this->assertEquals(2, $pages->count());
$this->assertEquals(
array('Page 11', 'Page 12'),
$pages->column('Title')
array('Page 11', 'Page 12'),
$pages->column('Title')
);
// Test that parentID is respected when not filtering
$pages = $controller->getList(array(), $page3->ID);
$this->assertEquals(2, $pages->count());
$this->assertEquals(
array('Page 3.1', 'Page 3.2'),
$pages->column('Title')
array('Page 3.1', 'Page 3.2'),
$pages->column('Title')
);
}
/**
* Testing retrieval and type of CMS edit form.
*/
public function testGetEditForm() {
// Login is required prior to accessing a CMS form.
$this->loginWithPermission('ADMIN');
// Get a associated with a fixture page.
$page = $this->objFromFixture('Page', 'page1');
$controller = new CMSMain();
$form = $controller->getEditForm($page->ID);
$this->assertInstanceOf("CMSForm", $form);
// Ensure that the form will not "validate" on delete or "unpublish" actions.
$exemptActions = $form->getValidationExemptActions();
$this->assertContains("delete", $exemptActions);
$this->assertContains("unpublish", $exemptActions);
}
}
class CMSMainTest_ClassA extends Page implements TestOnly {

View File

@ -21,6 +21,7 @@ class ErrorPageTest extends FunctionalTest {
Config::inst()->update('ErrorPage', 'static_filepath', AssetStoreTest_SpyStore::base_path());
Config::inst()->update('ErrorPage', 'enable_static_file', true);
Config::inst()->update('Director', 'environment_type', 'live');
$this->logInWithPermission('ADMIN');
}
public function tearDown() {