From 09b869f5d369c8752726a7dcc026a734ba3d9ed7 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Wed, 31 Jul 2013 09:30:58 +0100 Subject: [PATCH 01/22] Move CMSMain->generatePageIconsCss() into a LeftAndMain extension (fixes #798) --- _config/config.yml | 3 + code/controllers/CMSMain.php | 41 -------------- .../LeftAndMainPageIconsExtension.php | 55 +++++++++++++++++++ 3 files changed, 58 insertions(+), 41 deletions(-) create mode 100644 _config/config.yml create mode 100644 code/controllers/LeftAndMainPageIconsExtension.php diff --git a/_config/config.yml b/_config/config.yml new file mode 100644 index 00000000..b1b1fd8e --- /dev/null +++ b/_config/config.yml @@ -0,0 +1,3 @@ +LeftAndMain: + extensions: + - LeftAndMainPageIconsExtension \ No newline at end of file diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index c7ae441c..5c83cb40 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -443,47 +443,6 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr } return $json; } - - /** - * 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 - */ - public function generatePageIconsCss() { - $css = ''; - - $classes = ClassInfo::subclassesFor('SiteTree'); - foreach($classes as $class) { - $obj = singleton($class); - $iconSpec = $obj->stat('icon'); - - if(!$iconSpec) continue; - - // Legacy support: We no longer need separate icon definitions for folders etc. - $iconFile = (is_array($iconSpec)) ? $iconSpec[0] : $iconSpec; - - // Legacy support: Add file extension if none exists - if(!pathinfo($iconFile, PATHINFO_EXTENSION)) $iconFile .= '-file.gif'; - - $iconPathInfo = pathinfo($iconFile); - - // Base filename - $baseFilename = $iconPathInfo['dirname'] . '/' . $iconPathInfo['filename']; - $fileExtension = $iconPathInfo['extension']; - - $selector = ".page-icon.class-$class, li.class-$class > a .jstree-pageicon"; - - if(Director::fileExists($iconFile)) { - $css .= "$selector { background: transparent url('$iconFile') 0 0 no-repeat; }\n"; - } else { - // Support for more sophisticated rules, e.g. sprited icons - $css .= "$selector { $iconFile }\n"; - } - } - - return $css; - } /** * Populates an array of classes in the CMS diff --git a/code/controllers/LeftAndMainPageIconsExtension.php b/code/controllers/LeftAndMainPageIconsExtension.php new file mode 100644 index 00000000..5b481d7d --- /dev/null +++ b/code/controllers/LeftAndMainPageIconsExtension.php @@ -0,0 +1,55 @@ +generatePageIconsCss()); + } + + /** + * 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 + */ + public function generatePageIconsCss() { + $css = ''; + + $classes = ClassInfo::subclassesFor('SiteTree'); + foreach($classes as $class) { + $obj = singleton($class); + $iconSpec = $obj->stat('icon'); + + if(!$iconSpec) continue; + + // Legacy support: We no longer need separate icon definitions for folders etc. + $iconFile = (is_array($iconSpec)) ? $iconSpec[0] : $iconSpec; + + // Legacy support: Add file extension if none exists + if(!pathinfo($iconFile, PATHINFO_EXTENSION)) $iconFile .= '-file.gif'; + + $iconPathInfo = pathinfo($iconFile); + + // Base filename + $baseFilename = $iconPathInfo['dirname'] . '/' . $iconPathInfo['filename']; + $fileExtension = $iconPathInfo['extension']; + + $selector = ".page-icon.class-$class, li.class-$class > a .jstree-pageicon"; + + if(Director::fileExists($iconFile)) { + $css .= "$selector { background: transparent url('$iconFile') 0 0 no-repeat; }\n"; + } else { + // Support for more sophisticated rules, e.g. sprited icons + $css .= "$selector { $iconFile }\n"; + } + } + + return $css; + } + +} \ No newline at end of file From 920da0d1202ec403c193a0b282f5379bc415c287 Mon Sep 17 00:00:00 2001 From: Arno Poot Date: Sat, 24 Aug 2013 12:33:38 +0200 Subject: [PATCH 02/22] SiteConfig updated to modeladmin style and fixed ajax switching --- code/controllers/CMSSettingsController.php | 3 +- .../Includes/CMSSettingsController_Content.ss | 7 +-- .../CMSSettingsController_EditForm.ss | 52 ++++++++++--------- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/code/controllers/CMSSettingsController.php b/code/controllers/CMSSettingsController.php index 8b2404db..a86ad860 100644 --- a/code/controllers/CMSSettingsController.php +++ b/code/controllers/CMSSettingsController.php @@ -41,8 +41,7 @@ class CMSSettingsController extends LeftAndMain { $this, 'EditForm', $fields, $actions )->setHTMLID('Form_EditForm'); $form->setResponseNegotiator($this->getResponseNegotiator()); - $form->addExtraClass('root-form'); - $form->addExtraClass('cms-edit-form cms-panel-padded center'); + $form->addExtraClass('cms-content center cms-edit-form'); // don't add data-pjax-fragment=CurrentForm, its added in the content template instead if($form->Fields()->hasTabset()) $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); diff --git a/templates/Includes/CMSSettingsController_Content.ss b/templates/Includes/CMSSettingsController_Content.ss index 900872c0..4b666cf2 100644 --- a/templates/Includes/CMSSettingsController_Content.ss +++ b/templates/Includes/CMSSettingsController_Content.ss @@ -1,4 +1,4 @@ -
+
<% with $EditForm %> @@ -7,9 +7,10 @@ <% include CMSBreadcrumbs %> <% end_with %>
+ <% if $Fields.hasTabset %> <% with $Fields.fieldByName('Root') %> -
+
    <% loop $Tabs %> class="$extraClass"<% end_if %>>$Title @@ -27,4 +28,4 @@
-
+
\ No newline at end of file diff --git a/templates/Includes/CMSSettingsController_EditForm.ss b/templates/Includes/CMSSettingsController_EditForm.ss index b7f5f3ca..6ffc7fc9 100644 --- a/templates/Includes/CMSSettingsController_EditForm.ss +++ b/templates/Includes/CMSSettingsController_EditForm.ss @@ -1,29 +1,33 @@ -
+ - <% if $Message %> -

$Message

- <% else %> - - <% end_if %> +
+ <% if $Message %> +

$Message

+ <% else %> + + <% end_if %> -
- <% if $Legend %>$Legend<% end_if %> - <% loop $Fields %> - $FieldHolder - <% end_loop %> -
-
+
+ <% if $Legend %>$Legend<% end_if %> + <% loop $Fields %> + $FieldHolder + <% end_loop %> +
+
+
- <% if $Actions %> -
- <% loop $Actions %> - $Field - <% end_loop %> - <% if $Controller.LinkPreview %> - - <% _t('LeftAndMain.PreviewButton', 'Preview') %> » - +
+ <% if $Actions %> +
+ <% loop $Actions %> + $Field + <% end_loop %> + <% if $Controller.LinkPreview %> + + <% _t('LeftAndMain.PreviewButton', 'Preview') %> » + + <% end_if %> +
<% end_if %>
- <% end_if %> - + \ No newline at end of file From 27749fdb7a19480aaa5b85943f8318d5d78bb56f Mon Sep 17 00:00:00 2001 From: Sean Harvey Date: Tue, 27 Aug 2013 14:30:39 +1200 Subject: [PATCH 03/22] AssetAdmin: PHP warning trying to add empty values into CompositeField If the logged in user doesn't have permission to add a Folder record, AssetAdmin::getEditForm() tries to enter an empty value into the children of a ComposteField. This breaks SSViewer with a call_user_func invalid args PHP warning. Only include these buttons when they're available to the user. --- code/controllers/AssetAdmin.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/controllers/AssetAdmin.php b/code/controllers/AssetAdmin.php index e28256c1..6c4ee66e 100644 --- a/code/controllers/AssetAdmin.php +++ b/code/controllers/AssetAdmin.php @@ -240,14 +240,17 @@ JS $fields->push($tabs); } + // we only add buttons if they're available. User might not have permission and therefore + // the button shouldn't be available. Adding empty values into a ComposteField breaks template rendering. + $actionButtonsComposite = CompositeField::create()->addExtraClass('cms-actions-row'); + if($uploadBtn) $actionButtonsComposite->push($uploadBtn); + if($addFolderBtn) $actionButtonsComposite->push($addFolderBtn); + if($syncButton) $actionButtonsComposite->push($syncButton); + // List view $fields->addFieldsToTab('Root.ListView', array( $actionsComposite = CompositeField::create( - CompositeField::create( - $uploadBtn, - $addFolderBtn, - $syncButton //TODO: add this into a batch actions menu as in https://github.com/silverstripe/silverstripe-design/raw/master/Design/ss3-ui_files-manager-list-view.jpg - )->addExtraClass('cms-actions-row') + $actionButtonsComposite )->addExtraClass('cms-content-toolbar field'), $gridField )); From 9ba92a7bc596a985156e90857c7e37b12dcd6286 Mon Sep 17 00:00:00 2001 From: Arno Poot Date: Wed, 28 Aug 2013 20:54:06 +0200 Subject: [PATCH 04/22] FIX SiteConfig scrollbars visible --- templates/Includes/CMSSettingsController_Content.ss | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/templates/Includes/CMSSettingsController_Content.ss b/templates/Includes/CMSSettingsController_Content.ss index 4b666cf2..1bda4c6a 100644 --- a/templates/Includes/CMSSettingsController_Content.ss +++ b/templates/Includes/CMSSettingsController_Content.ss @@ -22,10 +22,6 @@ <% end_with %>
-
- - $EditForm - -
+ $EditForm
\ No newline at end of file From 5f828149c37ee78bc6c84e98909b8cbc85fa404f Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 29 Aug 2013 13:59:45 +1200 Subject: [PATCH 05/22] BUG Fixed instances of loosely defined SQL predicates not qualified by table name Fixed duplicate SQL escaping on SiteTree::get_by_link --- code/controllers/CMSMain.php | 5 ++++- code/controllers/CMSPageAddController.php | 2 +- code/controllers/ContentController.php | 14 +++++++++----- code/controllers/ModelAsController.php | 16 ++++++++-------- code/model/ErrorPage.php | 4 ++-- code/model/SiteTree.php | 19 ++++++++++++++----- tasks/SiteTreeMaintenanceTask.php | 2 +- tests/model/SiteTreeTest.php | 4 ++-- 8 files changed, 41 insertions(+), 25 deletions(-) diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index 86cedb15..ede6d08c 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -814,7 +814,10 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr // Fall back to homepage record if(!$id) { $homepageSegment = RootURLController::get_homepage_link(); - $homepageRecord = DataObject::get_one('SiteTree', sprintf('"URLSegment" = \'%s\'', $homepageSegment)); + $homepageRecord = DataObject::get_one('SiteTree', sprintf( + '"SiteTree"."URLSegment" = \'%s\'', + Convert::raw2sql($homepageSegment) + )); if($homepageRecord) $id = $homepageRecord->ID; } diff --git a/code/controllers/CMSPageAddController.php b/code/controllers/CMSPageAddController.php index 06f5ae48..c1881a85 100644 --- a/code/controllers/CMSPageAddController.php +++ b/code/controllers/CMSPageAddController.php @@ -123,7 +123,7 @@ class CMSPageAddController extends CMSPageEditController { $suffix = isset($data['Suffix']) ? "-" . $data['Suffix'] : null; if(!$parentID && isset($data['Parent'])) { - $page = SiteTree:: get_by_link(Convert::raw2sql($data['Parent'])); + $page = SiteTree::get_by_link($data['Parent']); if($page) $parentID = $page->ID; } diff --git a/code/controllers/ContentController.php b/code/controllers/ContentController.php index f2b7a45d..9bc553ea 100644 --- a/code/controllers/ContentController.php +++ b/code/controllers/ContentController.php @@ -163,9 +163,10 @@ class ContentController extends Controller { // See ModelAdController->getNestedController() for similar logic if(class_exists('Translatable')) Translatable::disable_locale_filter(); // look for a page with this URLSegment - $child = $this->model->SiteTree->where(sprintf ( - "\"ParentID\" = %s AND \"URLSegment\" = '%s'", $this->ID, Convert::raw2sql(rawurlencode($action)) - ))->First(); + $child = $this->model->SiteTree->filter(array( + 'ParentID' => $this->ID, + 'URLSegment' => rawurlencode($action) + ))->first(); if(class_exists('Translatable')) Translatable::enable_locale_filter(); // if we can't find a page with this URLSegment try to find one that used to have @@ -258,7 +259,10 @@ class ContentController extends Controller { */ public function getMenu($level = 1) { if($level == 1) { - $result = DataObject::get("SiteTree", "\"ShowInMenus\" = 1 AND \"ParentID\" = 0"); + $result = SiteTree::get()->filter(array( + "ShowInMenus" => 1, + "ParentID" => 0 + )); } else { $parent = $this->data(); @@ -399,7 +403,7 @@ HTML; $this->httpError(410); } // The manifest should be built by now, so it's safe to publish the 404 page - $fourohfour = Versioned::get_one_by_stage('ErrorPage', 'Stage', '"ErrorCode" = 404'); + $fourohfour = Versioned::get_one_by_stage('ErrorPage', 'Stage', '"ErrorPage"."ErrorCode" = 404'); if($fourohfour) { $fourohfour->write(); $fourohfour->publish("Stage", "Live"); diff --git a/code/controllers/ModelAsController.php b/code/controllers/ModelAsController.php index 90fa2081..2563f35d 100644 --- a/code/controllers/ModelAsController.php +++ b/code/controllers/ModelAsController.php @@ -93,9 +93,9 @@ class ModelAsController extends Controller implements NestedController { $sitetree = DataObject::get_one( 'SiteTree', sprintf( - '"URLSegment" = \'%s\' %s', + '"SiteTree"."URLSegment" = \'%s\' %s', Convert::raw2sql(rawurlencode($URLSegment)), - (SiteTree::config()->nested_urls ? 'AND "ParentID" = 0' : null) + (SiteTree::config()->nested_urls ? 'AND "SiteTree"."ParentID" = 0' : null) ) ); if(class_exists('Translatable')) Translatable::enable_locale_filter(); @@ -146,16 +146,15 @@ class ModelAsController extends Controller implements NestedController { * @return SiteTree */ static public function find_old_page($URLSegment,$parentID = 0, $ignoreNestedURLs = false) { - $URLSegment = Convert::raw2sql(rawurlencode($URLSegment)); $useParentIDFilter = SiteTree::config()->nested_urls && $parentID; // First look for a non-nested page that has a unique URLSegment and can be redirected to. if(SiteTree::config()->nested_urls) { - $pages = DataObject::get( - 'SiteTree', - "\"URLSegment\" = '$URLSegment'" . ($useParentIDFilter ? ' AND "ParentID" = ' . (int)$parentID : '') - ); + $pages = SiteTree::get()->filter("URLSegment", rawurlencode($URLSegment)); + if($useParentIDFilter) { + $pages = $pages->filter("ParentID", (int)$parentID); + } if($pages && $pages->Count() == 1 && ($page = $pages->First())) { $parent = $page->ParentID ? $page->Parent() : $page; @@ -164,10 +163,11 @@ class ModelAsController extends Controller implements NestedController { } // Get an old version of a page that has been renamed. + $URLSegmentSQL = Convert::raw2sql(rawurlencode($URLSegment)); $query = new SQLQuery ( '"RecordID"', '"SiteTree_versions"', - "\"URLSegment\" = '$URLSegment' AND \"WasPublished\" = 1" . ($useParentIDFilter ? ' AND "ParentID" = ' . (int)$parentID : ''), + "\"URLSegment\" = '$URLSegmentSQL' AND \"WasPublished\" = 1" . ($useParentIDFilter ? ' AND "ParentID" = ' . (int)$parentID : ''), '"LastEdited" DESC', null, null, diff --git a/code/model/ErrorPage.php b/code/model/ErrorPage.php index ad6827e3..ac029c7a 100644 --- a/code/model/ErrorPage.php +++ b/code/model/ErrorPage.php @@ -50,7 +50,7 @@ class ErrorPage extends Page { */ public static function response_for($statusCode) { // first attempt to dynamically generate the error page - if($errorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = $statusCode")) { + if($errorPage = DataObject::get_one('ErrorPage', "\"ErrorPage\".\"ErrorCode\" = $statusCode")) { Requirements::clear(); Requirements::clear_combined_files(); @@ -93,7 +93,7 @@ class ErrorPage extends Page { $code = $defaultData['ErrorCode']; $page = DataObject::get_one( 'ErrorPage', - sprintf("\"ErrorCode\" = '%s'", $code) + sprintf("\"ErrorPage\".\"ErrorCode\" = '%s'", $code) ); $pageExists = ($page && $page->exists()); $pagePath = self::get_filepath_for_errorcode($code); diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index cd6443a6..a9776176 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -310,11 +310,18 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid // Grab the initial root level page to traverse down from. $URLSegment = array_shift($parts); $sitetree = DataObject::get_one ( - 'SiteTree', "\"URLSegment\" = '$URLSegment'" . (self::config()->nested_urls ? ' AND "ParentID" = 0' : ''), $cache + 'SiteTree', + "\"SiteTree\".\"URLSegment\" = '$URLSegment'" . ( + self::config()->nested_urls ? ' AND "SiteTree"."ParentID" = 0' : '' + ), + $cache ); /// Fall back on a unique URLSegment for b/c. - if(!$sitetree && self::config()->nested_urls && $page = DataObject::get('SiteTree', "\"URLSegment\" = '$URLSegment'")->First()) { + if(!$sitetree + && self::config()->nested_urls + && $page = DataObject::get_one('SiteTree', "\"SiteTree\".\"URLSegment\" = '$URLSegment'", $cache) + ) { return $page; } @@ -335,7 +342,9 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid // Traverse down the remaining URL segments and grab the relevant SiteTree objects. foreach($parts as $segment) { $next = DataObject::get_one ( - 'SiteTree', "\"URLSegment\" = '$segment' AND \"ParentID\" = $sitetree->ID", $cache + 'SiteTree', + "\"SiteTree\".\"URLSegment\" = '$segment' AND \"SiteTree\".\"ParentID\" = $sitetree->ID", + $cache ); if(!$next) { @@ -405,7 +414,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid if ( !($page = DataObject::get_by_id('SiteTree', $arguments['id'])) // Get the current page by ID. && !($page = Versioned::get_latest_version('SiteTree', $arguments['id'])) // Attempt link to old version. - && !($page = DataObject::get_one('ErrorPage', '"ErrorCode" = \'404\'')) // Link to 404 page directly. + && !($page = DataObject::get_one('ErrorPage', '"ErrorPage"."ErrorCode" = \'404\'')) // Link to 404 page. ) { return; // There were no suitable matches at all. } @@ -1603,7 +1612,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $existingPage = DataObject::get_one( 'SiteTree', - "\"URLSegment\" = '$this->URLSegment' $IDFilter $parentFilter" + "\"SiteTree\".\"URLSegment\" = '$this->URLSegment' $IDFilter $parentFilter" ); return !($existingPage); diff --git a/tasks/SiteTreeMaintenanceTask.php b/tasks/SiteTreeMaintenanceTask.php index 0c84fd54..66dbd949 100644 --- a/tasks/SiteTreeMaintenanceTask.php +++ b/tasks/SiteTreeMaintenanceTask.php @@ -10,7 +10,7 @@ class SiteTreeMaintenanceTask extends Controller { public function makelinksunique() { $badURLs = "'" . implode("', '", DB::query("SELECT URLSegment, count(*) FROM SiteTree GROUP BY URLSegment HAVING count(*) > 1")->column()) . "'"; - $pages = DataObject::get("SiteTree", "\"URLSegment\" IN ($badURLs)"); + $pages = DataObject::get("SiteTree", "\"SiteTree\".\"URLSegment\" IN ($badURLs)"); foreach($pages as $page) { echo "
  • $page->Title: "; diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php index a1722bc4..46e0afc4 100644 --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -136,7 +136,7 @@ class SiteTreeTest extends SapphireTest { $oldMode = Versioned::get_reading_mode(); Versioned::reading_stage('Live'); - $checkSiteTree = DataObject::get_one("SiteTree", "\"URLSegment\" = 'get-one-test-page'"); + $checkSiteTree = DataObject::get_one("SiteTree", "\"SiteTree\".\"URLSegment\" = 'get-one-test-page'"); $this->assertEquals("V1", $checkSiteTree->Title); Versioned::set_reading_mode($oldMode); @@ -426,7 +426,7 @@ class SiteTreeTest extends SapphireTest { public function testReadArchiveDate() { $date = '2009-07-02 14:05:07'; Versioned::reading_archived_date($date); - DataObject::get('SiteTree', "\"ParentID\" = 0"); + DataObject::get('SiteTree', "\"SiteTree\".\"ParentID\" = 0"); Versioned::reading_archived_date(null); $this->assertEquals( Versioned::get_reading_mode(), From 4f30fedafdd7f465d84b6b1a3eb7f1319ace4d09 Mon Sep 17 00:00:00 2001 From: Tom Densham Date: Thu, 29 Aug 2013 13:56:29 +0100 Subject: [PATCH 06/22] FIX: GridField button styling in reports --- code/reports/Report.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/reports/Report.php b/code/reports/Report.php index a76b93b4..3e03987d 100644 --- a/code/reports/Report.php +++ b/code/reports/Report.php @@ -264,8 +264,9 @@ class SS_Report extends ViewableData { new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(), - new GridFieldPrintButton(), - new GridFieldExportButton() + new GridFieldButtonRow('after'), + new GridFieldPrintButton('buttons-after-left'), + new GridFieldExportButton('buttons-after-left') ); $gridField = new GridField('Report',false, $items, $gridFieldConfig); $columns = $gridField->getConfig()->getComponentByType('GridFieldDataColumns'); From 4e031076be5b58917ac74c7f17295dc32bb5de09 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 29 Aug 2013 17:08:25 +0200 Subject: [PATCH 07/22] Search callback for "add page" selector Necessary since we now default $showSearch=true in TreeDropdownField. See https://github.com/silverstripe/silverstripe-framework/pull/2364 --- code/controllers/CMSPageAddController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/controllers/CMSPageAddController.php b/code/controllers/CMSPageAddController.php index c1881a85..14564425 100644 --- a/code/controllers/CMSPageAddController.php +++ b/code/controllers/CMSPageAddController.php @@ -81,6 +81,16 @@ class CMSPageAddController extends CMSPageEditController { ) ) ); + $parentField->setSearchFunction(function ($sourceObject, $labelField, $search) { + return DataObject::get( + $sourceObject, + sprintf( + "\"MenuTitle\" LIKE '%%%s%%' OR \"Title\" LIKE '%%%s%%'", + Convert::raw2sql($search), + Convert::raw2sql($search) + ) + ); + }); // TODO Re-enable search once it allows for HTML title display, // see http://open.silverstripe.org/ticket/7455 From a2342ce1ffa16ee38e7627ea1af95435fdb07a7a Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 12 Sep 2013 16:37:43 +0200 Subject: [PATCH 08/22] Updated translations --- lang/cs.yml | 29 ++++++++++++++++++++++++++++- lang/de.yml | 41 ++++++++++++++++++++++++++++++++++++++++- lang/fi.yml | 39 ++++++++++++++++++++++----------------- lang/nb.yml | 25 +++++++++++++++++++++++++ lang/sk.yml | 21 ++++++++++++++++++++- 5 files changed, 135 insertions(+), 20 deletions(-) diff --git a/lang/cs.yml b/lang/cs.yml index 1da927d1..8e594290 100644 --- a/lang/cs.yml +++ b/lang/cs.yml @@ -5,9 +5,13 @@ cs: AppCategoryArchive: Archív AppCategoryAudio: Zvuk AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Obrázek + AppCategoryVideo: Video BackToFolder: 'Zpět na složku' + CREATED: Datum CurrentFolderOnly: 'Omezit na aktuální složku?' + DetailsView: Podrobnosti FILES: Soubory FILESYSTEMSYNC: 'Synchronizovat soubory' FILESYSTEMSYNCTITLE: 'Aktualizace záznamů souborů databáze CMS na souborovém systému. Užitečné, když byly nové soubory nahrány mimo CMS, např. přes FTP.' @@ -20,6 +24,7 @@ cs: THUMBSDELETED: '{count} nepoužitých miniatur bylo smazáno' TreeView: 'Zobrazit strom' Upload: Nahrát + MENUTITLE: Soubory AssetAdmin_DeleteBatchAction: TITLE: 'Smazat složky' AssetAdmin_Tools: @@ -40,6 +45,7 @@ cs: ColumnDateLastModified: 'Datum poslední změny' ColumnDateLastPublished: 'Datum posledního zveřejnění' ColumnProblemType: 'Problém typu' + ColumnURL: URL HasBrokenFile: 'porušen soubor' HasBrokenLink: 'porušen odkaz' HasBrokenLinkAndFile: 'porušen odkaz a soubor' @@ -76,6 +82,7 @@ cs: DESCREMOVED: 'a {count} potomků' DUPLICATED: 'Duplikováno ''{title}'' úspěšně' DUPLICATEDWITHCHILDREN: 'Duplikováno ''{title}'' a potomci úspěšně' + EMAIL: E-mail EditTree: 'Upravit strom' ListFiltered: 'Filtrovaný seznam.' NEWPAGE: 'Nová {pagetype}' @@ -113,12 +120,15 @@ cs: ParentMode_top: 'Nejvyšší úroveň' MENUTITLE: 'Přidat stránku' CMSPageHistoryController: + COMPAREMODE: 'Porovnávací mód (vyberte dva)' + COMPAREVERSIONS: 'Porovnat verze' COMPARINGVERSION: 'Porovnání verzí {version1} a {version2}.' REVERTTOTHISVERSION: 'Zpět na tuto verzi' SHOWUNPUBLISHED: 'Zobrazit nezveřejněné verze' SHOWVERSION: 'Zobrazit verzi' VIEW: zobrazit VIEWINGVERSION: 'Právě prohlížíte verzi číslo {version}.' + MENUTITLE: Historie VIEWINGLATEST: 'Právě se zobrazuje poslední verze.' CMSPageHistoryController_versions_ss: AUTHOR: Autor @@ -127,7 +137,10 @@ cs: UNKNOWN: Neznámý WHEN: Když CMSPagesController: + GalleryView: 'Pohled galerie' + ListView: 'Pohled seznam' MENUTITLE: Stránky + TreeView: 'Pohled strom' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Táhni a pusť' MULTISELECT: Multi výběr @@ -142,13 +155,17 @@ cs: Title: 'Změněné stránky' CMSSiteTreeFilter_DeletedPages: Title: 'Všechny stránky, včetně odstraněných' + CMSSiteTreeFilter_Search: + Title: 'Všechny stránky' ContentControl: NOTEWONTBESHOWN: 'Poznámka: tato zpráva nebude zobrazena vašim návštěvníkům' ContentController: ARCHIVEDSITE: 'Náhled verze' ARCHIVEDSITEFROM: 'Archivován web z' + CMS: CMS DRAFTSITE: 'Koncept webu' DRAFT_SITE_ACCESS_RESTRICTION: 'Abyste mohli prohlížet archiv nebo koncepty, musíte být přihlášeni se svým CMS heslem. Klikněte sem pro návrat na zveřejněné stránky.' + Email: E-mail INSTALL_SUCCESS: 'Instalace úspěšná!' InstallFilesDeleted: 'Instalační soubory byly odstraněny úspěšně.' InstallSecurityWarning: 'Z bezpečnostních důvodů byste měli nyní odstranit instalační soubory, pokud se nechystáte přeinstalovat později (vyžaduje admin přihlášení, viz výše ). Webový server nyní potřebuje pouze přístup pro zápis do složky "assets", můžete odstranit práva zápisu ze všech ostatních složek. Klikněte sem pro smazání instalačních souborů.' @@ -192,17 +209,21 @@ cs: CODE: 'Chybový kód' DEFAULTERRORPAGECONTENT: '

    Omlouváme se, zdá se, že jste se pokoušeli o přístup na stránku, která neexistuje.

    Zkontrolujte prosím pravopis požadované URL adresy, ke které jste se pokoušeli přistoupit a zkuste to znovu.

    ' DEFAULTERRORPAGETITLE: 'Stránka nenelazena' + DEFAULTSERVERERRORPAGECONTENT: '

    Promiňte, nastal problém s obsloužením vaší žádosti.

    ' + DEFAULTSERVERERRORPAGETITLE: 'Chyba serveru' DESCRIPTION: 'Vlastní obsah pro různé případy chyb (např. "Stránka nenalezena")' ERRORFILEPROBLEM: 'Chyba otevření souboru "{filename}" pro zápis. Zkontrolujte oprávnění souboru, prosím.' PLURALNAME: 'Chybové stránky' SINGULARNAME: 'Chybová stránka' Folder: + AddFolderButton: 'Přidat složku' DELETEUNUSEDTHUMBNAILS: 'Smazat nepoužité miniatury' UNUSEDFILESTITLE: 'Nepoužité soubory' UNUSEDTHUMBNAILSTITLE: 'Nepoužité miniatury' UploadFilesButton: Nahrát LeftAndMain: DELETED: Smazáno. + PreviewButton: Náhled SAVEDUP: Uloženo. STATUSPUBLISHEDSUCCESS: 'Publikováno ''{title}'' úspěšně' SearchResults: 'Výsledky hledání' @@ -213,6 +234,7 @@ cs: CONTENT_CATEGORY: 'Oprávnění obsahu' PERMISSIONS_CATEGORY: 'Role a přístupová práva' RedirectorPage: + DESCRIPTION: 'Přesměruje na jinou interní stránku' HASBEENSETUP: 'Přesměrovací stránka byla nastavena bez cíle.' HEADER: 'Tato stránka přesměruje uživatele na jinou stránku' OTHERURL: 'Jiná web adresa' @@ -244,7 +266,7 @@ cs: ParameterLiveCheckbox: 'Zkontrolovat web' REPEMPTY: '{title} výkaz je prázdný.' SilverStripeNavigatorLink: - ShareInstructions: 'K sdílení této stránky, odkaz zkopírujte a vložte dolů.' + ShareInstructions: 'K sdílení této stránky, odkaz zkopírujte a vložte dolů..' ShareLink: 'Sdílet odkaz' SilverStripeNavigatorLinkl: CloseLink: Zavřít @@ -278,6 +300,7 @@ cs: BUTTONSAVEPUBLISH: 'Uložit & zveřehnit' BUTTONUNPUBLISH: Nezveřejňovat BUTTONUNPUBLISHDESC: 'Odstranit tuto stránku z publikovaných na webu' + CREATED: 'Datum vytvoření' Comments: Komentáře Content: Obsah DEFAULTABOUTCONTENT: '

    Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky.

    ' @@ -287,9 +310,11 @@ cs: DEFAULTHOMECONTENT: '

    Vítejte v CMS SilverStripe! Toto je úvodní stránka. Tuto i jiné stránky můžete změnit přihlášením do systému. Můžete také navštívit vývojářskou dokumentaci (EN), nebo návody (EN)

    ' DEFAULTHOMETITLE: Úvodní strana DELETEDPAGEHELP: 'Stránka už není více zveřejněna' + DELETEDPAGESHORT: Smazáno DEPENDENT_NOTE: 'Následující stránky závisí na této stránce. Tyto obsahují virtuální stránky, přesměrovací stránky a stránky s odkazy obsahu.' DESCRIPTION: 'Obecný obsah stránky' DependtPageColumnLinkType: 'Typ odkazu' + DependtPageColumnURL: URL EDITANYONE: 'Kdokoliv, kdo se do CMS může přihlásit' EDITHEADER: 'Kdo může tuto stránku editovat?' EDITONLYTHESE: 'Jenom tito lidé (vyberte ze seznamu)' @@ -308,6 +333,8 @@ cs: METAEXTRA: 'Vlastní meta tagy' METAEXTRAHELP: 'HTML tagy pro další meta informace. Například <meta name="vlastnínazev" content="vlastní obsah zde" />' MODIFIEDONDRAFTHELP: 'Stránka má nezveřejněné změny' + MODIFIEDONDRAFTSHORT: Upraveno + MetadataToggle: Metadata OBSOLETECLASS: 'Tato stránka je zastaralého typu {type}. Uložení zpúsobí zrušení svého typu a múžete tak ztratit data' PAGELOCATION: 'Umístění stránky' PAGETITLE: 'Název stránky' diff --git a/lang/de.yml b/lang/de.yml index bdc630d5..3f774534 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -101,13 +101,17 @@ de: RESTORE: Wiederherstellen RESTORED: '''{title}'' wurde wiederhergestellt' ROLLBACK: 'Diese Version wiederherstellen' + ROLLEDBACKPUBv2: 'Veröffentlichte Version wiederhergestellt' + ROLLEDBACKVERSIONv2: 'Version #%d wiederhergestellt.' SAVE: Speichern + SAVEDRAFT: 'Entwurf speichern' TabContent: Inhalt TabHistory: Historie TabSettings: Einstellungen TreeFiltered: 'Seitenbaum gefiltert' TreeFilteredClear: 'Filter zurücksetzen' MENUTITLE: 'Seite bearbeiten' + AddPageRestriction: 'Hinweis: einige Seitentypen sind in diesem Bereich nicht erlaubt.' CMSMain_left_ss: APPLY_FILTER: 'Filter anwenden' RESET: Zurücksetzen @@ -125,6 +129,7 @@ de: VIEW: anzeigen VIEWINGVERSION: 'Momentan angezeigte Version: {version}.' MENUTITLE: Historie + VIEWINGLATEST: 'Momentan wird die aktuellste Version angezeigt.' CMSPageHistoryController_versions_ss: AUTHOR: Autor NOTPUBLISHED: 'Nicht veröffentlicht' @@ -139,6 +144,8 @@ de: CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Drag & Drop' MULTISELECT: Mehrfachauswahl + CMSPagesController_Tools_ss: + FILTER: Filter CMSSearch: FILTERDATEFROM: Von FILTERDATEHEADING: Datum @@ -155,17 +162,22 @@ de: ContentController: ARCHIVEDSITE: 'Vorschauversion' ARCHIVEDSITEFROM: 'Site archiviert von' + CMS: CMS DRAFTSITE: 'Vorschau-Site' DRAFT_SITE_ACCESS_RESTRICTION: 'Sie müssen sich mit Ihrem CMS Passwort einloggen, um den Entwurf oder den archivierten Inhalt zu sehen. Zurück zur veröffentlichten Seite.' Email: E-Mail + INSTALL_SUCCESS: 'Installation erfolgreich!' 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. (Dies erfordert den Administrator-Zugang (siehe oben)). Der Webserver benötigt nun nur noch Schreibrechte auf das "assets" Verzeichnis und Sie können die Schreibrechte für alle anderen Ordner entfernen. Die Installationsdaten jetzt löschen. ' + InstallSuccessCongratulations: 'Silverstripe wurde erfolgreich installiert!' LOGGEDINAS: 'Angemeldet als' LOGIN: Anmelden LOGOUT: 'Abmelden' NOTLOGGEDIN: 'Nicht angemeldet' PUBLISHEDSITE: 'Veröffentlichte Site' Password: Passwort + PostInstallTutorialIntro: 'Diese Webseite ist eine einfache Version von SilverStripe 3. Weitere Funktionen können Sie unter {link} finden.' + StartEditing: 'Sie können den Inhalt im CMS bearbeiten.' UnableDeleteInstall: 'Die Installationsdateien konnten nicht gelöscht werden. Bitte löschen Sie die Dateien manuell.' VIEWPAGEIN: 'Seite anzeigen in:' DRAFT: Entwurf @@ -201,6 +213,8 @@ de: DEFAULTSERVERERRORPAGETITLE: 'Serverfehler' DESCRIPTION: 'Spezieller Inhalt für andere Fehlerfälle (z.B. "Seite nicht gefunden")' ERRORFILEPROBLEM: 'Die Datei "{filename}" konnte nicht zum Schreiben geöffnet werden. Bitte überprüfen Sie die Dateiberechtigungen.' + PLURALNAME: 'Fehlerseiten' + SINGULARNAME: 'Fehlerseite' Folder: AddFolderButton: 'Ordner hinzufügen' DELETEUNUSEDTHUMBNAILS: 'Unbenutzte Vorschaubilder löschen' @@ -228,8 +242,10 @@ de: REDIRECTTO: 'Weiterleiten zu' REDIRECTTOEXTERNAL: 'Andere Website' REDIRECTTOPAGE: 'Eine Seite auf Ihrer Website' + SINGULARNAME: 'Weiterleitungsseite' YOURPAGE: 'Seite auf Ihrer Website' ReportAdmin: + ReportTitle: Titel MENUTITLE: Berichte ReportAdminForm: FILTERBY: 'Filtern nach' @@ -250,7 +266,7 @@ de: ParameterLiveCheckbox: 'Veröffentlichte Seite überprüfen' REPEMPTY: 'Der Bericht ''{title}'' ist leer.' SilverStripeNavigatorLink: - ShareInstructions: 'Kopieren Sie den folgenden Link um diesen jemanden mitzuteilen.' + ShareInstructions: 'Kopieren Sie den folgenden Link, um diesen jemanden mitzuteilen.' ShareLink: 'Link teilen' SilverStripeNavigatorLinkl: CloseLink: schließen @@ -259,12 +275,15 @@ de: EDITHEADER: 'Wer kann Seiten auf dieser Website bearbeiten?' EDIT_PERMISSION: 'Websiteeinstellungen editieren' EDIT_PERMISSION_HELP: 'Möglichkeit, die globalen Zugrifsseinstellungen sowie die Berechtigungen für die Hauptebene zu editieren.' + PLURALNAME: 'Seitenkonfigurationen' + SINGULARNAME: 'Seitenkonfiguration' SITENAMEDEFAULT: 'Name Ihrer Website' SITETAGLINE: 'Ihr Websiteslogan' SITETITLE: 'Titel der Site' TABACCESS: Zugriff TABMAIN: Hauptteil TAGLINEDEFAULT: 'Ihr Websiteslogan' + THEME: Theme TOPLEVELCREATE: 'Wer kann Seiten auf der Hauptebene erstellen?' VIEWHEADER: 'Wer kann Seiten auf dieser Website sehen?' SiteTree: @@ -278,6 +297,7 @@ de: APPEARSVIRTUALPAGES: 'Dieser Inhalt erscheint außerdem auf virtuellen Seiten im {title} Bereich.' BUTTONCANCELDRAFT: 'Verwerfe Entwurfsänderungen' BUTTONCANCELDRAFTDESC: 'Löschen Sie Ihren Entwurf und kehren Sie zur derzeit veröffentlichten Seite zurück.' + BUTTONSAVEPUBLISH: 'Speichern & Veröffentlichen' BUTTONUNPUBLISH: Veröffentlichung zurücknehmen BUTTONUNPUBLISHDESC: 'Entferne diese Seite aus der veröffentlichten Website' CREATED: 'Datum der Erstellung' @@ -294,6 +314,7 @@ de: DEPENDENT_NOTE: 'Die folgenden Seiten hängen von dieser Seite ab. Dies schließt Virtuelle Seiten, Weiterleitungen und Seiten mit Links im Inhalt ein.' DESCRIPTION: 'Allgemeine Inhaltsseite' DependtPageColumnLinkType: 'Linktyp' + DependtPageColumnURL: URL EDITANYONE: 'Jeder der sich in das CMS einloggen kann' EDITHEADER: 'Wer kann diese Seite im CMS verändern?' EDITONLYTHESE: 'Nur folgende Personen (aus der der Liste wählen)' @@ -307,10 +328,14 @@ de: LASTUPDATED: 'Letzte Änderung' LINKCHANGENOTE: 'Das Ändern des Links zu dieser Seite führt ebenfalls zur Änderung aller Links der Unterseiten dieser Seite.' MENUTITLE: 'Navigationsbezeichnung' + METADESC: 'Meta Beschreibung' + METADESCHELP: 'Suchmaschinen können diesen Inhalt für die Anzeige der Suchergebnisse verwenden (auch wenn es die Position nicht beeinflusst).' METAEXTRA: 'Benutzerdefinierte Meta-Tags' + METAEXTRAHELP: 'HTML Tags für zusätzliche Meta Informationen, z.B.: <meta name="ihrName" content="Ihr Inhalt" />' MODIFIEDONDRAFTHELP: 'Die Seite hat unveröffentlichte Änderungen' MODIFIEDONDRAFTSHORT: Zuletzt geändert MetadataToggle: Metadaten + OBSOLETECLASS: 'Der Seitentyp {type} wird nicht mehr verwendet. Wenn Sie speichern wird der Seitentyp zurückgesetzt, was Datenverlust verursachen kann' PAGELOCATION: 'Seitenposition' PAGETITLE: 'Seitenname' PAGETYPE: 'Seitentyp' @@ -320,6 +345,7 @@ de: PARENTTYPE_SUBPAGE: 'Seite unterhalb einer übergeordneten Seite' PERMISSION_GRANTACCESS_DESCRIPTION: 'Zugriffsrechte für Inhalte verwalten' PERMISSION_GRANTACCESS_HELP: 'Einstellung von seitenspezifischen Zugriffsbeschränkungen im Bereich "Seiteninhalt" erlauben' + PLURALNAME: Seiten PageTypNotAllowedOnRoot: 'Der Seitentyp "{type}" darf nicht auf der Grundebene verwendet werden.' PageTypeNotAllowed: 'Der Seitentyp "{type}" kann nicht als Kind dieser übergeordneten Seite verwendet werden' REMOVEDFROMDRAFTHELP: 'Die Seite ist veröffentlicht, wurde aber von der Entwurf Seite gelöscht.' @@ -338,6 +364,7 @@ de: URLSegment: 'URL-Segment' VIEWERGROUPS: 'Betrachtergruppen' VIEW_ALL_DESCRIPTION: 'Kann beliebige Seiten betrachten' + VIEW_ALL_HELP: 'Kann beliebige Seiten auf der Site betrachten; seitenspezifische Sicherheitseinstellungen werden ignoriert.' VIEW_DRAFT_CONTENT: 'Entwurfsinhalt anzeigen' VIEW_DRAFT_CONTENT_HELP: 'Zugriff auf die Vorschau-Site auch ohne Zugriff auf das CMS. Sinnvoll für externe Mitarbeiter ohne CMS-Zugang.' Viewers: 'Betrachter Gruppen' @@ -349,10 +376,13 @@ de: BUTTONPUBLISHED: Veröffentlicht BUTTONSAVED: Gespeichert GroupPlaceholder: 'Klicken, um Gruppe auszuwählen' + LASTPUBLISHED: 'Zuletzt veröffentlicht' + LASTSAVED: 'Zuletzt gespeichert' MoreOptions: 'Weitere Optionen' NOTPUBLISHED: 'Nicht veröffentlicht' SiteTreeURLSegmentField: HelpChars: 'Sonderzeichen werden automatisch umgewandelt oder entfernt.' + EMPTY: 'Bitte geben Sie ein URL-Segment ein oder drücken Sie auf Abbrechen' StaticExporter: BASEURL: 'Ausgangs URL' EXPORTTO: 'Exportieren in diesen Ordner' @@ -384,6 +414,7 @@ de: PLURALNAME: 'Virtuelle Seiten' PageTypNotAllowedOnRoot: 'Der ursprüngliche Seitentyp "{type}" ist nicht zulässig für diese virtuelle Seite. ' SINGULARNAME: 'Virtuelle Seite' + EditLink: Bearbeiten HEADERWITHLINK: 'Dies ist eine virtuelle Seite, die den Inhalt von "{title}" ({link}) kopiert' CMSFileAddController: MENUTITLE: Dateien @@ -393,5 +424,13 @@ de: MENUTITLE: 'Seite bearbeiten' CMSSettingsController: MENUTITLE: Einstellungen + SITETREE: + VIRTUALPAGEDRAFTWARNING: 'Bitte veröffentlichen Sie die vernküpfte Seite um die virtuelle Seite zu veröffentlichen' + VIRTUALPAGEWARNING: 'Um diese Seite veröffentlichen zu können müssen Sie zu erst eine verknüpfte Seite auswählen' + VIRTUALPAGEWARNINGSETTINGS: 'Um diese Seite veröffentlichen zu können müssen Sie zu erst eine verknüpfte Seite im Reiter "Haupt-Inhalt" auswählen' SilverStripeNavigator: ARCHIVED: Archiviert + URLSegmentField: + Cancel: Abbrechen + Edit: Bearbeiten + OK: OK diff --git a/lang/fi.yml b/lang/fi.yml index 3d3667c6..c2de2c70 100644 --- a/lang/fi.yml +++ b/lang/fi.yml @@ -5,7 +5,9 @@ fi: AppCategoryArchive: Arkisto AppCategoryAudio: Ääni AppCategoryDocument: Asiakirja + AppCategoryFlash: Flash AppCategoryImage: Kuva + AppCategoryVideo: Video BackToFolder: 'Takaisin kansioon' CREATED: Pvm CurrentFolderOnly: 'Rajoita tähän kansioon?' @@ -39,10 +41,10 @@ fi: BROKENLINKS: 'Rikkinäisten linkkien raportti' CheckSite: 'Tarkistussivusto' CheckSiteDropdownDraft: 'Luonnossivu' - CheckSiteDropdownPublished: 'Julkaistu sivu' - ColumnDateLastModified: 'Päivitetty viimeksi' + CheckSiteDropdownPublished: 'Julkaistu sivusto' + ColumnDateLastModified: 'Muokattu viimeksi' ColumnDateLastPublished: 'Julkaistu viimeksi' - ColumnProblemType: 'Ongelmatyyppi' + ColumnProblemType: 'Ongelman tyyppi' ColumnURL: URL-osoite HasBrokenFile: 'sisältää rikkinäisen tiedoston' HasBrokenLink: 'sisältää rikkinäisen linkin' @@ -69,7 +71,7 @@ fi: UNPUBLISH_PAGES: Poista julkaisu CMSMain: ACCESS: 'Pääsy ''{title}'' -osioon' - ACCESS_HELP: 'Oikeuttaa katsella osiota, joka sisältää sivurakenteen ja sisällön. Katselu- ja muokkausoikeuksia voidaan käsitellä sivukohtaisten pudotusvalikoiden kautta kuten myös erillisiä "sisällön oikeuksia".' + ACCESS_HELP: 'Oikeuttaa näkemään osion, joka sisältää sivurakenteen ja sisällön. Katselu- ja muokkausoikeuksia voidaan käsitellä sivukohtaisten pudotusvalikoiden kautta, kuten myös erillisestä "Sisällön oikeudet"-kohdasta.' AddNew: 'Lisää uusi sivu' AddNewButton: 'Lisää uusi' ChoosePageParentMode: 'Valitse kohde, minne sivu luodaan' @@ -109,7 +111,7 @@ fi: TreeFiltered: 'Suodatettu hakemistopuu.' TreeFilteredClear: 'Nollaa suodatin' MENUTITLE: 'Muokkaa sivua' - AddPageRestriction: 'Huomio: jotkut sivutyypit eivät ole sallittuja tässä valinnassa.' + AddPageRestriction: 'Huomio: Tietyt sivutyypit eivät ole sallittuja valitun sivutyypin alle.' CMSMain_left_ss: APPLY_FILTER: 'Suodata' RESET: Nollaa @@ -160,12 +162,13 @@ fi: ContentController: ARCHIVEDSITE: 'Esikatselu versio' ARCHIVEDSITEFROM: 'Arkistoitu sivusto lähteestä:' + CMS: CMS DRAFTSITE: 'Luonnossivusto' - DRAFT_SITE_ACCESS_RESTRICTION: 'Voidaksesi katsella luonnoksia tai arkistoitua sisältöä sinun täytyy kirjautua sisään CMS:n salasanallasi. Palataksesi julkiselle sivulle paina tästä.' + DRAFT_SITE_ACCESS_RESTRICTION: 'Voidaksesi katsella luonnoksia tai arkistoitua sisältöä, sinun täytyy kirjautua sisään CMS:n salasanallasi. Palataksesi julkiselle sivulle, napsauta tästä.' Email: Sähköposti INSTALL_SUCCESS: 'Asennus onnistui!' InstallFilesDeleted: 'Asennustiedostot poistettiin onnistuneesti.' - InstallSecurityWarning: 'Tietoturvan takia, kannattaa poistaa asennustiedostot palvelimelta, ellet aio asentaa järjestelmää uudelleen. (Vaaditaan pääkäyttäjän kirjautuminen: katso ylempää). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Voit poistaa kirjoitusoikeudet kaikista muista kansioista.
    Napsauta tästä poistaaksesi kaikki asennustiedostot.' + InstallSecurityWarning: 'Tietoturvan takia, kannattaa poistaa asennustiedostot palvelimelta, mikäli et aio asentaa järjestelmää uudelleen. (Sitä varten vaaditaan kirjautuminen pääkäyttäjänä: katso ylempää). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Muista kansioista voit poistaa kirjoitusoikeudet.
    Napsauta tästä poistaaksesi kaikki asennustiedostot.' InstallSuccessCongratulations: 'SilverStripe asennettu onnistuneesti!' LOGGEDINAS: 'Kirjautuneena sisään nimimerkillä' LOGIN: Kirjaudu sisään @@ -174,8 +177,8 @@ fi: PUBLISHEDSITE: 'Julkaistu sivusto' Password: Salasana PostInstallTutorialIntro: 'Tämä sivusto on yksinkertaistettu versio SilverStripe 3 sivustosta. Laajentaaksesi tätä, ole hyvä ja tutustu: {link}.' - StartEditing: 'Voit aloittaa sisällön muokkauksen avaamalla sisällönhallintajärjestelmän' - UnableDeleteInstall: 'Asennustiedostojen automaattinen poistaminen ei onnistunut. Ole hyvä ja poista seuraavat tiedostot manuaalisesti.' + StartEditing: 'Voit aloittaa sisällön muokkauksen avaamalla sisällönhallintajärjestelmän ylläpitopuolen' + UnableDeleteInstall: 'Asennustiedostojen automaattinen poistaminen ei onnistunut. Ole hyvä ja poista seuraavat tiedostot manuaalisesti' VIEWPAGEIN: 'Tarkastele sivua:' DRAFT: Luonnos PUBLISHED: Julkaistu @@ -204,12 +207,12 @@ fi: 504: '504 - Välitysaikakatkaisu' 505: '505 - HTTP Versio Ei Tuettu' CODE: 'Virhekoodi' - DEFAULTERRORPAGECONTENT: '

    Valitettavasti sivua johon yritit päästä ei löytynyt.

    Tarkista haluamasi kohteen URLin kirjoitusasu ja yritä uudelleen.

    ' + DEFAULTERRORPAGECONTENT: '

    Valitettavasti hakemaasi sivua ei ole olemassa.

    Tarkista hakemasi sivun URL-osoitteen kirjoitusasu ja yritä uudelleen.

    ' DEFAULTERRORPAGETITLE: 'Sivua ei löytynyt' DEFAULTSERVERERRORPAGECONTENT: '

    Pahoittelut, mutta pyyntösi aiheutti virheen.

    ' DEFAULTSERVERERRORPAGETITLE: 'Palvelinvirhe' DESCRIPTION: 'Omat virheilmoitukset (sivuille, kuten "Sivua ei löytynyt")' - ERRORFILEPROBLEM: 'Virhe tiedostoa "{filename}" avattaessa ja kirjoittettaessa palvelimelle. Tarkista tiedoston kirjoitusoikeudet.' + ERRORFILEPROBLEM: 'Virhe avattaessa tiedostoa "{filename}" palvelimelle tallentamista varten. Tarkista tiedoston kirjoitusoikeudet.' PLURALNAME: 'Virhesivut' SINGULARNAME: 'Virhesivu' Folder: @@ -263,7 +266,7 @@ fi: ParameterLiveCheckbox: 'Tarkista live-sivusto' REPEMPTY: '{title}:n raportti on tyhjä.' SilverStripeNavigatorLink: - ShareInstructions: 'Jakaaksesi tämän tällä sivulla, kopioi ja liitä alapuolella oleva linkki.' + ShareInstructions: 'Jakaaksesi tämä sivu, kopioi ja liitä alla oleva linkki.' ShareLink: 'Jaa linkki' SilverStripeNavigatorLinkl: CloseLink: Sulje @@ -311,6 +314,7 @@ fi: DEPENDENT_NOTE: 'Seuraavat sivut riippuvat tästä sivusta. Tämä pitää sisällään virtuaaliset sivut, uudelleenohjaussivut ja sivut sisältölinkkien kanssa.' DESCRIPTION: 'Yleinen sisältösivu' DependtPageColumnLinkType: 'Linkin tyyppi' + DependtPageColumnURL: URL EDITANYONE: 'Jokainen, joka voi kirjautua sisään CMS:ään.' EDITHEADER: 'Kuka voi muokata tätä CMS:ssä?' EDITONLYTHESE: 'Vain seuraavat henkilöt (valitse listasta)' @@ -324,10 +328,10 @@ fi: LASTUPDATED: 'Viimeksi päivitetty' LINKCHANGENOTE: 'Tämän sivun linkin muuttaminen vaikuttaa myös alasivujen linkkeihin.' MENUTITLE: 'Navigoinnin nimike' - METADESC: 'Meta kuvaus' - METADESCHELP: 'Hakukoneet näyttävät tämän sisällön hakutuloksissa (sisältö ei kuitenkaan vaikuttaa sijoitukseen hakutuloksessa).' + METADESC: 'Meta-kuvaus' + METADESCHELP: 'Hakukoneet näyttävät tämän sisällön hakutuloksissa (sisältö ei kuitenkaan vaikuta sijoitukseen hakutuloksessa).' METAEXTRA: 'Omat meta-tagit' - METAEXTRAHELP: 'Omat meta-tagit' + METAEXTRAHELP: 'HTML-tagit omia metatietoja varten. Esimerkiksi <meta name="haluamasiNimi" content="Oma sisältö tässä" />' MODIFIEDONDRAFTHELP: 'Sivulla on tehty muutoksia, joita ei ole julkaistu' MODIFIEDONDRAFTSHORT: Muokattu MetadataToggle: Meta-tiedot @@ -348,7 +352,7 @@ fi: REMOVEDFROMDRAFTSHORT: 'Poistettiin luonnoksista' REMOVE_INSTALL_WARNING: 'Varoitus: Turvallisuussyistä sinun tulisi poistaa install.php-tiedosto SilverStripe-asennuskansiosta.' REORGANISE_DESCRIPTION: 'Muuta sivuston rakennetta' - REORGANISE_HELP: 'Uudelleenjärjestä sivuston rakenteen sivut vetämällä ne paikoilleen.' + REORGANISE_HELP: 'Uudelleenjärjestä sivuston rakenne vetämällä ja pudottamalla sivu halutulle paikalle.' SHOWINMENUS: 'Näytetäänkö valikoissa?' SHOWINSEARCH: 'Näytetäänkö hauissa?' SINGULARNAME: Sivu @@ -377,7 +381,7 @@ fi: MoreOptions: 'Lisää valintoja' NOTPUBLISHED: 'Julkaisematon' SiteTreeURLSegmentField: - HelpChars: 'Erikoismerkit muunnetaan automaattisesti tai poistetaan.' + HelpChars: 'Erikoismerkit muunnetaan tai poistetaan automaattisesti.' EMPTY: 'Anna URL-osoite tai napsauta peruuta' StaticExporter: BASEURL: 'Kannan URL-osoite' @@ -429,3 +433,4 @@ fi: URLSegmentField: Cancel: Peruuta Edit: Muokkaa + OK: OK diff --git a/lang/nb.yml b/lang/nb.yml index 17450724..b4679dcd 100644 --- a/lang/nb.yml +++ b/lang/nb.yml @@ -3,8 +3,11 @@ nb: ADDFILES: 'Legg til filer' ActionAdd: 'Legg til mappe' AppCategoryArchive: Arkiv + AppCategoryAudio: Audio AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Bilde + AppCategoryVideo: Video BackToFolder: 'Tilbake til mappe' CREATED: Dato CurrentFolderOnly: 'Begrens til nåværende mappe' @@ -24,6 +27,8 @@ nb: MENUTITLE: Filer AssetAdmin_DeleteBatchAction: TITLE: 'Slett mapper' + AssetAdmin_Tools: + FILTER: Filter AssetAdmin_left_ss: GO: Utfør AssetTableField: @@ -40,6 +45,7 @@ nb: ColumnDateLastModified: 'Dato sist endret' ColumnDateLastPublished: 'Dato sist publisert' ColumnProblemType: 'Problemtype' + ColumnURL: URL HasBrokenFile: 'har ødelagt fil' HasBrokenLink: 'har ødelagt lenke' HasBrokenLinkAndFile: 'har ødelagt lenke og fil' @@ -61,6 +67,8 @@ nb: DELETE_PAGES: 'Slett fra publisert side' PUBLISHED_PAGES: 'Publiserte %d sider, %d feilet.' PUBLISH_PAGES: Publiser + UNPUBLISHED_PAGES: 'Avpubliserte %d sider' + UNPUBLISH_PAGES: Avpubliser 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".' @@ -123,17 +131,26 @@ nb: MENUTITLE: Historie VIEWINGLATEST: 'Viser den nyeste versjonen.' CMSPageHistoryController_versions_ss: + AUTHOR: Forfatter NOTPUBLISHED: 'Ikke publisert' + PUBLISHER: Utgiver UNKNOWN: Ukjent WHEN: Når CMSPagesController: + GalleryView: 'Gallerivisning' + ListView: 'Listevisning' + MENUTITLE: Sider TreeView: 'Trevisning' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Dra-og-slipp' MULTISELECT: Flervalg + CMSPagesController_Tools_ss: + FILTER: Filter CMSSearch: FILTERDATEFROM: Fra FILTERDATEHEADING: Dato + FILTERDATETO: Til + FILTERLABELTEXT: Innhold CMSSiteTreeFilter_ChangedPages: Title: 'Endrede sider' CMSSiteTreeFilter_DeletedPages: @@ -210,6 +227,7 @@ nb: SAVEDUP: Lagret. STATUSPUBLISHEDSUCCESS: 'Vellykket publisering av "{title}".' SearchResults: 'Søkeresultater' + VersionUnknown: Ukjent Permission: CMS_ACCESS_CATEGORY: 'Tilgang til publiseringssystemet' Permissions: @@ -295,10 +313,13 @@ nb: DELETEDPAGESHORT: Slettet DEPENDENT_NOTE: 'De følgende sidene avhenger av denne siden. Dette inkluderer virtuelle sider, omdirigeringssider og sider med innholdslenker.' DESCRIPTION: 'Generisk innholdsside' + DependtPageColumnLinkType: 'Lenketype' + DependtPageColumnURL: URL EDITANYONE: 'Alle som kan logge inn til kontrollpanelet' EDITHEADER: 'Hvem kan redigere dette i kontrollpanelet?' EDITONLYTHESE: 'Bare disse personene' EDITORGROUPS: 'Redaktørgrupper' + EDIT_ALL_DESCRIPTION: 'Rediger hvilken som helst side' EDIT_ALL_HELP: 'Lar deg redigere hvilken som helst side på nettstedet, uavhengig av innstillingene på adgangsfanen. Krever at du har tilgang til sideseksjonen.' Editors: 'Redaktørgrupper' HASBROKENLINKS: 'Denne siden har ødelagte lenker.' @@ -313,12 +334,14 @@ nb: METAEXTRAHELP: 'HTML-elementer for ekstra metainformasjon. For eksempel <meta name="egetNavn" content="Ditt egendefinerte innhold her" />' MODIFIEDONDRAFTHELP: 'Siden har upubliserte forandringer' MODIFIEDONDRAFTSHORT: Endret + MetadataToggle: Metadata OBSOLETECLASS: 'Denne siden er av den utdaterte typen {type}. Lagring vil tilbakestille typen og kan medføre tap av informasjon.' PAGELOCATION: 'Sideplassering' PAGETITLE: 'Sidenavn' PAGETYPE: 'Sidetype' PARENTID: 'Overordnet side' PARENTTYPE: 'Sideplassering' + PARENTTYPE_ROOT: 'Toppnivåside' PARENTTYPE_SUBPAGE: 'Underside' PERMISSION_GRANTACCESS_DESCRIPTION: 'Kontroller hvilke grupper som har tilgang til eller kan endre sidene' PERMISSION_GRANTACCESS_HELP: 'Tillat tilordning av restriksjoner på sidenivå i sideseksjonen.' @@ -340,6 +363,7 @@ nb: TOPLEVELCREATORGROUPS: 'Toppnivåopprettere' URLSegment: 'Adressesegment' VIEWERGROUPS: 'Publikumsgrupper' + VIEW_ALL_DESCRIPTION: 'Se på hvilken som helst side' VIEW_ALL_HELP: 'Viser alle sider på nettstedet, uavhengig av innstillingene på adgangsfanen. Krever at du har adgang til sideseksjonen.' VIEW_DRAFT_CONTENT: 'Se innhold i utkast' VIEW_DRAFT_CONTENT_HELP: 'Gjelder visning av sider utenfor publiseringssystemet i utkastmodus. Nyttig for eksterne bidragsytere uten tilgang til publiseringssystemet.' @@ -409,3 +433,4 @@ nb: URLSegmentField: Cancel: Avbryt Edit: Rediger + OK: OK diff --git a/lang/sk.yml b/lang/sk.yml index addebb9f..1aaff7c9 100644 --- a/lang/sk.yml +++ b/lang/sk.yml @@ -5,7 +5,9 @@ sk: AppCategoryArchive: Archív AppCategoryAudio: Zvuk AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Obrázok + AppCategoryVideo: Video BackToFolder: 'Späť na priečinok' CREATED: Dátum CurrentFolderOnly: 'Obmedziť na aktuálny priečinok?' @@ -43,6 +45,7 @@ sk: ColumnDateLastModified: 'Dátum poslednej úpravy' ColumnDateLastPublished: 'Dátum poslednej publikácie' ColumnProblemType: 'Problémový typ' + ColumnURL: URL HasBrokenFile: 'obsahuje porušený súbor' HasBrokenLink: 'obsahuje porušený odkaz' HasBrokenLinkAndFile: 'obsahuje porušený odkaz a súbor' @@ -111,6 +114,7 @@ sk: AddPageRestriction: 'Poznámka: Niektoré typy stránok nie sú povolené pre tento výber' CMSMain_left_ss: APPLY_FILTER: 'Použiť filter' + RESET: Reset CMSPageAddController: ParentMode_child: 'Pod inú stránku' ParentMode_top: 'Najvyššia úroveň' @@ -127,6 +131,7 @@ sk: MENUTITLE: História VIEWINGLATEST: 'Práve sa zobrazuje posledná verzia.' CMSPageHistoryController_versions_ss: + AUTHOR: Autor NOTPUBLISHED: 'Nepublikovaná' PUBLISHER: Vydavateľ UNKNOWN: Neznáma @@ -134,6 +139,7 @@ sk: CMSPagesController: GalleryView: 'Zobraziť galériu' ListView: 'Zobraziť zoznam' + MENUTITLE: Stránky TreeView: 'Zobraziť strom' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Tiahni a pusť' @@ -142,17 +148,24 @@ sk: FILTER: Filtrovať CMSSearch: FILTERDATEFROM: Od + FILTERDATEHEADING: Dátum + FILTERDATETO: Do + FILTERLABELTEXT: Obsah CMSSiteTreeFilter_ChangedPages: Title: 'Zmenené stránky' CMSSiteTreeFilter_DeletedPages: Title: 'Všetky stránky, vrátane vymazaných' + CMSSiteTreeFilter_Search: + Title: 'Všechny stránky' ContentControl: NOTEWONTBESHOWN: 'Poznámka: Táto správa sa nebude zobrazovať vašim návštevníkom' ContentController: ARCHIVEDSITE: 'Zobrazenie verzie' 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. Pre návrat na publikovaný web kliknite Tu.' + Email: E-mail INSTALL_SUCCESS: 'Inštalácia úspešná!' InstallFilesDeleted: 'Inštalačné súbory boli odstranené úspešne.' InstallSecurityWarning: 'Z bezpečnostných dôvodov by ste mali teraz odstrániť inštalačné súbory, ak neplánujete preinštalovať neskôr ( vyžaduje admin prihlásenie, pozri vyššie ). Webový server teraz potrebuje už len prístup pre zápis do priečinka "assets", môžete odstrániť práva zápisu zo všetkých ostatných priečinkov. Kliknite tu pre odstránenie inštalačných súborov. ' @@ -213,6 +226,7 @@ sk: PreviewButton: Zobrazenie SAVEDUP: Uložené. STATUSPUBLISHEDSUCCESS: 'Uverejnené "{title}" úspešne' + SearchResults: 'Výsledky vyhľadávania' VersionUnknown: Neznáma Permission: CMS_ACCESS_CATEGORY: 'Prístup do CMS' @@ -252,7 +266,7 @@ sk: ParameterLiveCheckbox: 'Skontolovať živú stránku' REPEMPTY: '{title} výkaz je prázdny.' SilverStripeNavigatorLink: - ShareInstructions: 'Pre zdielanie tejto stránky, skopírujte linku nižšie.' + ShareInstructions: 'Pre zdielanie tejto stránky, skopírujte a vložte odkaz nižšie.' ShareLink: 'Zdieľať odkaz' SilverStripeNavigatorLinkl: CloseLink: Zavrieť @@ -300,6 +314,7 @@ sk: 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 EDITANYONE: 'Ktokoľvek kto sa môže prihlásiť do CMS' EDITHEADER: 'Kto môže editovať túto stránnku?' EDITONLYTHESE: 'Iba títo ľudia (vyberte zo zoznamu)' @@ -405,6 +420,10 @@ sk: MENUTITLE: Súbory CMSPageEditController: MENUTITLE: 'Upraviť stránku' + CMSPageSettingsController: + MENUTITLE: 'Editovať stránku' + CMSSettingsController: + MENUTITLE: Nastavenia SITETREE: VIRTUALPAGEDRAFTWARNING: 'Zverejnite prosím odkazovanú stránku pre zverejnenie virtuálnej stránky' VIRTUALPAGEWARNING: 'Zvolte prosím odkazovanú stránku a uložte pre zverejnenie tejto stránky' From 65939e1ede9e16fd0fda25fc4692914e6286aa0f Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 12 Sep 2013 16:48:20 +0200 Subject: [PATCH 09/22] Tagged 3.0.6-rc2 From 553f32576d654c221aecb37e41ad2ec27f7e5582 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 12 Sep 2013 16:53:44 +0200 Subject: [PATCH 10/22] Updated translations --- lang/bg.yml | 2 -- lang/cs.yml | 29 +++++++++++++++++++++++- lang/da.yml | 1 - lang/de.yml | 2 +- lang/eo.yml | 1 - lang/fi.yml | 34 ++++++++++++++-------------- lang/fr.yml | 61 ++++++++++++++++++++++++++++++++++++++++++++++++-- lang/gl_ES.yml | 1 - lang/he_IL.yml | 1 - lang/hu.yml | 1 - lang/it.yml | 1 - lang/ja_JP.yml | 1 - lang/lt.yml | 1 - lang/mi.yml | 1 - lang/nb.yml | 25 +++++++++++++++++++++ lang/pl.yml | 21 ++++++++++++++++- lang/pt.yml | 1 - lang/ru.yml | 2 -- lang/sk.yml | 21 ++++++++++++++++- lang/sl.yml | 1 - lang/sv.yml | 1 - lang/th.yml | 1 - lang/tr.yml | 1 - lang/uk.yml | 1 - 24 files changed, 170 insertions(+), 42 deletions(-) diff --git a/lang/bg.yml b/lang/bg.yml index 2d3bd45e..b331b18a 100644 --- a/lang/bg.yml +++ b/lang/bg.yml @@ -209,8 +209,6 @@ bg: OtherGroupTitle: собственник ParameterLiveCheckbox: 'Провери реалния сайт' REPEMPTY: 'Отчетът {title} е празен' - SilverStripeNavigatorLink: - ShareInstructions: 'За да споделиш тая страница, копирай и постави връзката по- долу' SilverStripeNavigatorLinkl: CloseLink: Затвори SiteConfig: diff --git a/lang/cs.yml b/lang/cs.yml index 1da927d1..8e594290 100644 --- a/lang/cs.yml +++ b/lang/cs.yml @@ -5,9 +5,13 @@ cs: AppCategoryArchive: Archív AppCategoryAudio: Zvuk AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Obrázek + AppCategoryVideo: Video BackToFolder: 'Zpět na složku' + CREATED: Datum CurrentFolderOnly: 'Omezit na aktuální složku?' + DetailsView: Podrobnosti FILES: Soubory FILESYSTEMSYNC: 'Synchronizovat soubory' FILESYSTEMSYNCTITLE: 'Aktualizace záznamů souborů databáze CMS na souborovém systému. Užitečné, když byly nové soubory nahrány mimo CMS, např. přes FTP.' @@ -20,6 +24,7 @@ cs: THUMBSDELETED: '{count} nepoužitých miniatur bylo smazáno' TreeView: 'Zobrazit strom' Upload: Nahrát + MENUTITLE: Soubory AssetAdmin_DeleteBatchAction: TITLE: 'Smazat složky' AssetAdmin_Tools: @@ -40,6 +45,7 @@ cs: ColumnDateLastModified: 'Datum poslední změny' ColumnDateLastPublished: 'Datum posledního zveřejnění' ColumnProblemType: 'Problém typu' + ColumnURL: URL HasBrokenFile: 'porušen soubor' HasBrokenLink: 'porušen odkaz' HasBrokenLinkAndFile: 'porušen odkaz a soubor' @@ -76,6 +82,7 @@ cs: DESCREMOVED: 'a {count} potomků' DUPLICATED: 'Duplikováno ''{title}'' úspěšně' DUPLICATEDWITHCHILDREN: 'Duplikováno ''{title}'' a potomci úspěšně' + EMAIL: E-mail EditTree: 'Upravit strom' ListFiltered: 'Filtrovaný seznam.' NEWPAGE: 'Nová {pagetype}' @@ -113,12 +120,15 @@ cs: ParentMode_top: 'Nejvyšší úroveň' MENUTITLE: 'Přidat stránku' CMSPageHistoryController: + COMPAREMODE: 'Porovnávací mód (vyberte dva)' + COMPAREVERSIONS: 'Porovnat verze' COMPARINGVERSION: 'Porovnání verzí {version1} a {version2}.' REVERTTOTHISVERSION: 'Zpět na tuto verzi' SHOWUNPUBLISHED: 'Zobrazit nezveřejněné verze' SHOWVERSION: 'Zobrazit verzi' VIEW: zobrazit VIEWINGVERSION: 'Právě prohlížíte verzi číslo {version}.' + MENUTITLE: Historie VIEWINGLATEST: 'Právě se zobrazuje poslední verze.' CMSPageHistoryController_versions_ss: AUTHOR: Autor @@ -127,7 +137,10 @@ cs: UNKNOWN: Neznámý WHEN: Když CMSPagesController: + GalleryView: 'Pohled galerie' + ListView: 'Pohled seznam' MENUTITLE: Stránky + TreeView: 'Pohled strom' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Táhni a pusť' MULTISELECT: Multi výběr @@ -142,13 +155,17 @@ cs: Title: 'Změněné stránky' CMSSiteTreeFilter_DeletedPages: Title: 'Všechny stránky, včetně odstraněných' + CMSSiteTreeFilter_Search: + Title: 'Všechny stránky' ContentControl: NOTEWONTBESHOWN: 'Poznámka: tato zpráva nebude zobrazena vašim návštěvníkům' ContentController: ARCHIVEDSITE: 'Náhled verze' ARCHIVEDSITEFROM: 'Archivován web z' + CMS: CMS DRAFTSITE: 'Koncept webu' DRAFT_SITE_ACCESS_RESTRICTION: 'Abyste mohli prohlížet archiv nebo koncepty, musíte být přihlášeni se svým CMS heslem. Klikněte sem pro návrat na zveřejněné stránky.' + Email: E-mail INSTALL_SUCCESS: 'Instalace úspěšná!' InstallFilesDeleted: 'Instalační soubory byly odstraněny úspěšně.' InstallSecurityWarning: 'Z bezpečnostních důvodů byste měli nyní odstranit instalační soubory, pokud se nechystáte přeinstalovat později (vyžaduje admin přihlášení, viz výše ). Webový server nyní potřebuje pouze přístup pro zápis do složky "assets", můžete odstranit práva zápisu ze všech ostatních složek. Klikněte sem pro smazání instalačních souborů.' @@ -192,17 +209,21 @@ cs: CODE: 'Chybový kód' DEFAULTERRORPAGECONTENT: '

    Omlouváme se, zdá se, že jste se pokoušeli o přístup na stránku, která neexistuje.

    Zkontrolujte prosím pravopis požadované URL adresy, ke které jste se pokoušeli přistoupit a zkuste to znovu.

    ' DEFAULTERRORPAGETITLE: 'Stránka nenelazena' + DEFAULTSERVERERRORPAGECONTENT: '

    Promiňte, nastal problém s obsloužením vaší žádosti.

    ' + DEFAULTSERVERERRORPAGETITLE: 'Chyba serveru' DESCRIPTION: 'Vlastní obsah pro různé případy chyb (např. "Stránka nenalezena")' ERRORFILEPROBLEM: 'Chyba otevření souboru "{filename}" pro zápis. Zkontrolujte oprávnění souboru, prosím.' PLURALNAME: 'Chybové stránky' SINGULARNAME: 'Chybová stránka' Folder: + AddFolderButton: 'Přidat složku' DELETEUNUSEDTHUMBNAILS: 'Smazat nepoužité miniatury' UNUSEDFILESTITLE: 'Nepoužité soubory' UNUSEDTHUMBNAILSTITLE: 'Nepoužité miniatury' UploadFilesButton: Nahrát LeftAndMain: DELETED: Smazáno. + PreviewButton: Náhled SAVEDUP: Uloženo. STATUSPUBLISHEDSUCCESS: 'Publikováno ''{title}'' úspěšně' SearchResults: 'Výsledky hledání' @@ -213,6 +234,7 @@ cs: CONTENT_CATEGORY: 'Oprávnění obsahu' PERMISSIONS_CATEGORY: 'Role a přístupová práva' RedirectorPage: + DESCRIPTION: 'Přesměruje na jinou interní stránku' HASBEENSETUP: 'Přesměrovací stránka byla nastavena bez cíle.' HEADER: 'Tato stránka přesměruje uživatele na jinou stránku' OTHERURL: 'Jiná web adresa' @@ -244,7 +266,7 @@ cs: ParameterLiveCheckbox: 'Zkontrolovat web' REPEMPTY: '{title} výkaz je prázdný.' SilverStripeNavigatorLink: - ShareInstructions: 'K sdílení této stránky, odkaz zkopírujte a vložte dolů.' + ShareInstructions: 'K sdílení této stránky, odkaz zkopírujte a vložte dolů..' ShareLink: 'Sdílet odkaz' SilverStripeNavigatorLinkl: CloseLink: Zavřít @@ -278,6 +300,7 @@ cs: BUTTONSAVEPUBLISH: 'Uložit & zveřehnit' BUTTONUNPUBLISH: Nezveřejňovat BUTTONUNPUBLISHDESC: 'Odstranit tuto stránku z publikovaných na webu' + CREATED: 'Datum vytvoření' Comments: Komentáře Content: Obsah DEFAULTABOUTCONTENT: '

    Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky.

    ' @@ -287,9 +310,11 @@ cs: DEFAULTHOMECONTENT: '

    Vítejte v CMS SilverStripe! Toto je úvodní stránka. Tuto i jiné stránky můžete změnit přihlášením do systému. Můžete také navštívit vývojářskou dokumentaci (EN), nebo návody (EN)

    ' DEFAULTHOMETITLE: Úvodní strana DELETEDPAGEHELP: 'Stránka už není více zveřejněna' + DELETEDPAGESHORT: Smazáno DEPENDENT_NOTE: 'Následující stránky závisí na této stránce. Tyto obsahují virtuální stránky, přesměrovací stránky a stránky s odkazy obsahu.' DESCRIPTION: 'Obecný obsah stránky' DependtPageColumnLinkType: 'Typ odkazu' + DependtPageColumnURL: URL EDITANYONE: 'Kdokoliv, kdo se do CMS může přihlásit' EDITHEADER: 'Kdo může tuto stránku editovat?' EDITONLYTHESE: 'Jenom tito lidé (vyberte ze seznamu)' @@ -308,6 +333,8 @@ cs: METAEXTRA: 'Vlastní meta tagy' METAEXTRAHELP: 'HTML tagy pro další meta informace. Například <meta name="vlastnínazev" content="vlastní obsah zde" />' MODIFIEDONDRAFTHELP: 'Stránka má nezveřejněné změny' + MODIFIEDONDRAFTSHORT: Upraveno + MetadataToggle: Metadata OBSOLETECLASS: 'Tato stránka je zastaralého typu {type}. Uložení zpúsobí zrušení svého typu a múžete tak ztratit data' PAGELOCATION: 'Umístění stránky' PAGETITLE: 'Název stránky' diff --git a/lang/da.yml b/lang/da.yml index aaffeac4..d752bad8 100644 --- a/lang/da.yml +++ b/lang/da.yml @@ -215,7 +215,6 @@ da: ParameterLiveCheckbox: 'Tjek det udgivne websted' REPEMPTY: '{title}rapporten er tom.' SilverStripeNavigatorLink: - ShareInstructions: 'Kopier linket herunder for at dele denne side.' ShareLink: 'Del link' SilverStripeNavigatorLinkl: CloseLink: Luk diff --git a/lang/de.yml b/lang/de.yml index 60793ded..3f774534 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -266,7 +266,7 @@ de: ParameterLiveCheckbox: 'Veröffentlichte Seite überprüfen' REPEMPTY: 'Der Bericht ''{title}'' ist leer.' SilverStripeNavigatorLink: - ShareInstructions: 'Kopieren Sie den folgenden Link um diesen jemanden mitzuteilen.' + ShareInstructions: 'Kopieren Sie den folgenden Link, um diesen jemanden mitzuteilen.' ShareLink: 'Link teilen' SilverStripeNavigatorLinkl: CloseLink: schließen diff --git a/lang/eo.yml b/lang/eo.yml index 544c0c99..42e15c84 100644 --- a/lang/eo.yml +++ b/lang/eo.yml @@ -250,7 +250,6 @@ eo: ParameterLiveCheckbox: 'Kontroli publikan retejon' REPEMPTY: 'La raporto {title} estas malplena.' SilverStripeNavigatorLink: - ShareInstructions: 'Por dividi al ĉi tiu paĝo, kopiu kaj algluu la suban ligilon.' ShareLink: 'Komunigi ligilon' SilverStripeNavigatorLinkl: CloseLink: Fermi diff --git a/lang/fi.yml b/lang/fi.yml index 2891550a..c2de2c70 100644 --- a/lang/fi.yml +++ b/lang/fi.yml @@ -41,10 +41,10 @@ fi: BROKENLINKS: 'Rikkinäisten linkkien raportti' CheckSite: 'Tarkistussivusto' CheckSiteDropdownDraft: 'Luonnossivu' - CheckSiteDropdownPublished: 'Julkaistu sivu' - ColumnDateLastModified: 'Päivitetty viimeksi' + CheckSiteDropdownPublished: 'Julkaistu sivusto' + ColumnDateLastModified: 'Muokattu viimeksi' ColumnDateLastPublished: 'Julkaistu viimeksi' - ColumnProblemType: 'Ongelmatyyppi' + ColumnProblemType: 'Ongelman tyyppi' ColumnURL: URL-osoite HasBrokenFile: 'sisältää rikkinäisen tiedoston' HasBrokenLink: 'sisältää rikkinäisen linkin' @@ -71,7 +71,7 @@ fi: UNPUBLISH_PAGES: Poista julkaisu CMSMain: ACCESS: 'Pääsy ''{title}'' -osioon' - ACCESS_HELP: 'Oikeuttaa katsella osiota, joka sisältää sivurakenteen ja sisällön. Katselu- ja muokkausoikeuksia voidaan käsitellä sivukohtaisten pudotusvalikoiden kautta kuten myös erillisiä "sisällön oikeuksia".' + ACCESS_HELP: 'Oikeuttaa näkemään osion, joka sisältää sivurakenteen ja sisällön. Katselu- ja muokkausoikeuksia voidaan käsitellä sivukohtaisten pudotusvalikoiden kautta, kuten myös erillisestä "Sisällön oikeudet"-kohdasta.' AddNew: 'Lisää uusi sivu' AddNewButton: 'Lisää uusi' ChoosePageParentMode: 'Valitse kohde, minne sivu luodaan' @@ -111,7 +111,7 @@ fi: TreeFiltered: 'Suodatettu hakemistopuu.' TreeFilteredClear: 'Nollaa suodatin' MENUTITLE: 'Muokkaa sivua' - AddPageRestriction: 'Huomio: jotkut sivutyypit eivät ole sallittuja tässä valinnassa.' + AddPageRestriction: 'Huomio: Tietyt sivutyypit eivät ole sallittuja valitun sivutyypin alle.' CMSMain_left_ss: APPLY_FILTER: 'Suodata' RESET: Nollaa @@ -164,11 +164,11 @@ fi: ARCHIVEDSITEFROM: 'Arkistoitu sivusto lähteestä:' CMS: CMS DRAFTSITE: 'Luonnossivusto' - DRAFT_SITE_ACCESS_RESTRICTION: 'Voidaksesi katsella luonnoksia tai arkistoitua sisältöä sinun täytyy kirjautua sisään CMS:n salasanallasi. Palataksesi julkiselle sivulle paina tästä.' + DRAFT_SITE_ACCESS_RESTRICTION: 'Voidaksesi katsella luonnoksia tai arkistoitua sisältöä, sinun täytyy kirjautua sisään CMS:n salasanallasi. Palataksesi julkiselle sivulle, napsauta tästä.' Email: Sähköposti INSTALL_SUCCESS: 'Asennus onnistui!' InstallFilesDeleted: 'Asennustiedostot poistettiin onnistuneesti.' - InstallSecurityWarning: 'Tietoturvan takia, kannattaa poistaa asennustiedostot palvelimelta, ellet aio asentaa järjestelmää uudelleen. (Vaaditaan pääkäyttäjän kirjautuminen: katso ylempää). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Voit poistaa kirjoitusoikeudet kaikista muista kansioista.
    Napsauta tästä poistaaksesi kaikki asennustiedostot.' + InstallSecurityWarning: 'Tietoturvan takia, kannattaa poistaa asennustiedostot palvelimelta, mikäli et aio asentaa järjestelmää uudelleen. (Sitä varten vaaditaan kirjautuminen pääkäyttäjänä: katso ylempää). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Muista kansioista voit poistaa kirjoitusoikeudet.
    Napsauta tästä poistaaksesi kaikki asennustiedostot.' InstallSuccessCongratulations: 'SilverStripe asennettu onnistuneesti!' LOGGEDINAS: 'Kirjautuneena sisään nimimerkillä' LOGIN: Kirjaudu sisään @@ -177,8 +177,8 @@ fi: PUBLISHEDSITE: 'Julkaistu sivusto' Password: Salasana PostInstallTutorialIntro: 'Tämä sivusto on yksinkertaistettu versio SilverStripe 3 sivustosta. Laajentaaksesi tätä, ole hyvä ja tutustu: {link}.' - StartEditing: 'Voit aloittaa sisällön muokkauksen avaamalla sisällönhallintajärjestelmän' - UnableDeleteInstall: 'Asennustiedostojen automaattinen poistaminen ei onnistunut. Ole hyvä ja poista seuraavat tiedostot manuaalisesti.' + StartEditing: 'Voit aloittaa sisällön muokkauksen avaamalla sisällönhallintajärjestelmän ylläpitopuolen' + UnableDeleteInstall: 'Asennustiedostojen automaattinen poistaminen ei onnistunut. Ole hyvä ja poista seuraavat tiedostot manuaalisesti' VIEWPAGEIN: 'Tarkastele sivua:' DRAFT: Luonnos PUBLISHED: Julkaistu @@ -207,12 +207,12 @@ fi: 504: '504 - Välitysaikakatkaisu' 505: '505 - HTTP Versio Ei Tuettu' CODE: 'Virhekoodi' - DEFAULTERRORPAGECONTENT: '

    Valitettavasti sivua johon yritit päästä ei löytynyt.

    Tarkista haluamasi kohteen URLin kirjoitusasu ja yritä uudelleen.

    ' + DEFAULTERRORPAGECONTENT: '

    Valitettavasti hakemaasi sivua ei ole olemassa.

    Tarkista hakemasi sivun URL-osoitteen kirjoitusasu ja yritä uudelleen.

    ' DEFAULTERRORPAGETITLE: 'Sivua ei löytynyt' DEFAULTSERVERERRORPAGECONTENT: '

    Pahoittelut, mutta pyyntösi aiheutti virheen.

    ' DEFAULTSERVERERRORPAGETITLE: 'Palvelinvirhe' DESCRIPTION: 'Omat virheilmoitukset (sivuille, kuten "Sivua ei löytynyt")' - ERRORFILEPROBLEM: 'Virhe tiedostoa "{filename}" avattaessa ja kirjoittettaessa palvelimelle. Tarkista tiedoston kirjoitusoikeudet.' + ERRORFILEPROBLEM: 'Virhe avattaessa tiedostoa "{filename}" palvelimelle tallentamista varten. Tarkista tiedoston kirjoitusoikeudet.' PLURALNAME: 'Virhesivut' SINGULARNAME: 'Virhesivu' Folder: @@ -266,7 +266,7 @@ fi: ParameterLiveCheckbox: 'Tarkista live-sivusto' REPEMPTY: '{title}:n raportti on tyhjä.' SilverStripeNavigatorLink: - ShareInstructions: 'Jakaaksesi tämän tällä sivulla, kopioi ja liitä alapuolella oleva linkki.' + ShareInstructions: 'Jakaaksesi tämä sivu, kopioi ja liitä alla oleva linkki.' ShareLink: 'Jaa linkki' SilverStripeNavigatorLinkl: CloseLink: Sulje @@ -328,10 +328,10 @@ fi: LASTUPDATED: 'Viimeksi päivitetty' LINKCHANGENOTE: 'Tämän sivun linkin muuttaminen vaikuttaa myös alasivujen linkkeihin.' MENUTITLE: 'Navigoinnin nimike' - METADESC: 'Meta kuvaus' - METADESCHELP: 'Hakukoneet näyttävät tämän sisällön hakutuloksissa (sisältö ei kuitenkaan vaikuttaa sijoitukseen hakutuloksessa).' + METADESC: 'Meta-kuvaus' + METADESCHELP: 'Hakukoneet näyttävät tämän sisällön hakutuloksissa (sisältö ei kuitenkaan vaikuta sijoitukseen hakutuloksessa).' METAEXTRA: 'Omat meta-tagit' - METAEXTRAHELP: 'Omat meta-tagit' + METAEXTRAHELP: 'HTML-tagit omia metatietoja varten. Esimerkiksi <meta name="haluamasiNimi" content="Oma sisältö tässä" />' MODIFIEDONDRAFTHELP: 'Sivulla on tehty muutoksia, joita ei ole julkaistu' MODIFIEDONDRAFTSHORT: Muokattu MetadataToggle: Meta-tiedot @@ -352,7 +352,7 @@ fi: REMOVEDFROMDRAFTSHORT: 'Poistettiin luonnoksista' REMOVE_INSTALL_WARNING: 'Varoitus: Turvallisuussyistä sinun tulisi poistaa install.php-tiedosto SilverStripe-asennuskansiosta.' REORGANISE_DESCRIPTION: 'Muuta sivuston rakennetta' - REORGANISE_HELP: 'Uudelleenjärjestä sivuston rakenteen sivut vetämällä ne paikoilleen.' + REORGANISE_HELP: 'Uudelleenjärjestä sivuston rakenne vetämällä ja pudottamalla sivu halutulle paikalle.' SHOWINMENUS: 'Näytetäänkö valikoissa?' SHOWINSEARCH: 'Näytetäänkö hauissa?' SINGULARNAME: Sivu @@ -381,7 +381,7 @@ fi: MoreOptions: 'Lisää valintoja' NOTPUBLISHED: 'Julkaisematon' SiteTreeURLSegmentField: - HelpChars: 'Erikoismerkit muunnetaan automaattisesti tai poistetaan.' + HelpChars: 'Erikoismerkit muunnetaan tai poistetaan automaattisesti.' EMPTY: 'Anna URL-osoite tai napsauta peruuta' StaticExporter: BASEURL: 'Kannan URL-osoite' diff --git a/lang/fr.yml b/lang/fr.yml index 3422be74..c61ff075 100644 --- a/lang/fr.yml +++ b/lang/fr.yml @@ -2,8 +2,14 @@ fr: AssetAdmin: ADDFILES: 'Ajouter des fichiers' ActionAdd: 'Ajouter un dossier' + AppCategoryArchive: Archive + AppCategoryAudio: Audio + AppCategoryDocument: Document + AppCategoryFlash: Flash + AppCategoryImage: Image AppCategoryVideo: Vidéo BackToFolder: 'Revenir au dossier' + CREATED: Date CurrentFolderOnly: 'Limiter au dossier actuel ?' DetailsView: Détails FILES: Fichiers @@ -23,8 +29,11 @@ fr: TITLE: 'Supprimer dossiers' AssetAdmin_Tools: FILTER: Filtrer + AssetAdmin_left_ss: + GO: Accéder AssetTableField: BACKLINKCOUNT: 'Utilisé dans :' + PAGES: page(s) BackLink_Button_ss: Back: Retour BrokenLinksReport: @@ -36,6 +45,7 @@ fr: ColumnDateLastModified: 'Date de la dernière modification' ColumnDateLastPublished: 'Date de la dernière publication' ColumnProblemType: 'Type de problème' + ColumnURL: URL HasBrokenFile: 'a cassé le fichier' HasBrokenLink: 'a cassé le lien' HasBrokenLinkAndFile: 'a cassé le lien et le fichier' @@ -70,10 +80,14 @@ fr: DELETE: 'Supprimer du site brouillon' DELETEFP: Retirer du site publié DESCREMOVED: 'et {count} descendants' - EditTree: 'Ağacı düzenle' + DUPLICATED: '''{title}'' dupliqué avec succès' + DUPLICATEDWITHCHILDREN: '''{title}'' et ses enfants dupliqués avec succès' + EMAIL: Email + EditTree: 'Editer l''arbre' ListFiltered: 'Filtrelenmiş liste.' NEWPAGE: 'Nouveau {pagetype}' PAGENOTEXISTS: 'Cette page n''existe pas' + PAGES: Pages PAGETYPEANYOPT: Tous PAGETYPEOPT: 'Type de page' PUBALLCONFIRM: 'Publier chaque page du site en copiant le contenu à partir du site brouillon s''il vous plaît' @@ -81,18 +95,23 @@ fr: PUBALLFUN2: "Presser ce boutton fera la même chose que d'aller sur chaque page et d'appuer sur \"publier\"." PUBPAGES: '{count} pages ont été correctement publiées' PageAdded: 'La page a été créée avec succès ' + REMOVED: '''{title}''{description} supprimé du site live' REMOVEDPAGE: '« {title} » a été éliminée du site public ' REMOVEDPAGEFROMDRAFT: 'Supprimé ''%s'' du site de test' RESTORE: Restaurer RESTORED: '« {title} » restaurée avec succès' ROLLBACK: 'Retourner à cette version' + ROLLEDBACKPUBv2: 'Revenir à la version publiée' + ROLLEDBACKVERSIONv2: 'Revenir à la version #%d' SAVE: Sauvegarder + SAVEDRAFT: 'Sauvegarder le brouillon' TabContent: Contenu TabHistory: Historique TabSettings: Paramètres TreeFiltered: 'Filtrelenmiş ağaç liste.' TreeFilteredClear: 'Filtreyi temizle' MENUTITLE: 'Éditer la page' + AddPageRestriction: 'Note : certains types de page ne sont pas autorisés pour cette sélection' CMSMain_left_ss: APPLY_FILTER: 'Appliquer le filtre' RESET: Réinitialiser @@ -110,6 +129,7 @@ fr: VIEW: Afficher VIEWINGVERSION: 'Version affichée : {version}.' MENUTITLE: Historique + VIEWINGLATEST: 'Vous regardez la dernière version' CMSPageHistoryController_versions_ss: AUTHOR: Auteur NOTPUBLISHED: 'Non publiée' @@ -119,6 +139,7 @@ fr: CMSPagesController: GalleryView: 'Galerie' ListView: 'Liste' + MENUTITLE: Pages TreeView: 'Arbre' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Glisser-déposer' @@ -127,6 +148,8 @@ fr: FILTER: Filtrer CMSSearch: FILTERDATEFROM: De + FILTERDATEHEADING: Date + FILTERDATETO: A FILTERLABELTEXT: Terme CMSSiteTreeFilter_ChangedPages: Title: 'Pages modifiées' @@ -139,6 +162,7 @@ fr: ContentController: ARCHIVEDSITE: 'Aperçu de cette version' ARCHIVEDSITEFROM: 'Site archivé depuis' + CMS: CMS DRAFTSITE: 'Site Brouillon' DRAFT_SITE_ACCESS_RESTRICTION: 'Vous devez vous authentifier avec votre mot de passe CMS afin de pouvoir consulter le contenu brouillon ou archivé. Cliquer ici pour revenir au site publié.' Email: Courrier électronique @@ -153,8 +177,11 @@ fr: PUBLISHEDSITE: 'Site Publié' Password: Mot de passe PostInstallTutorialIntro: 'Ce site est une version simplifiée d’un site SilverStripe 3. Pour le développer, consultez {link}.' + StartEditing: 'Vous pouvez commencer à éditer votre site en ouvrant le CMS' UnableDeleteInstall: 'La suppression des fichiers d’installation a échoué ; faites-le manuellement pour les fichiers ci-dessous : ' VIEWPAGEIN: 'Voir la page en :' + DRAFT: Brouillon + PUBLISHED: Publié ErrorPage: 400: '400 - Requête incorrecte' 401: '401 - Non autorisé' @@ -196,6 +223,7 @@ fr: UploadFilesButton: Télécharger LeftAndMain: DELETED: Supprimée. + PreviewButton: Aperçu SAVEDUP: Sauvegardée. STATUSPUBLISHEDSUCCESS: '« {title} » publiée avec succès' SearchResults: 'Résultats de la recherche' @@ -238,7 +266,7 @@ fr: ParameterLiveCheckbox: 'Visiter le site de production' REPEMPTY: 'Le rapport {title} est vide' SilverStripeNavigatorLink: - ShareInstructions: 'Pour partager un lien vers cette page, copiez et collez le lien ci-dessous.' + ShareInstructions: 'Pour partager cette page, copiez et collez le lien ci-dessous.' ShareLink: 'Partager le lien' SilverStripeNavigatorLinkl: CloseLink: Fermer @@ -269,6 +297,7 @@ fr: APPEARSVIRTUALPAGES: 'Ce contenu apparaît aussi dans les sections {title} des pages virtuelles.' BUTTONCANCELDRAFT: 'Annuler les changements brouillons' BUTTONCANCELDRAFTDESC: 'Supprimer votre brouillon et revenir à la page actuellement publiée' + BUTTONSAVEPUBLISH: 'Sauvegarder et publier' BUTTONUNPUBLISH: Retirer du site publié BUTTONUNPUBLISHDESC: 'Retirer cette page du site publié' CREATED: 'Date de création' @@ -283,7 +312,9 @@ fr: DELETEDPAGEHELP: 'La page n’est plus publique ' DELETEDPAGESHORT: Supprimée DEPENDENT_NOTE: 'Les pages suivantes dépendent de cette page. Ceci inclut les pages virtuelles, les redirections et les pages avec des liens.' + DESCRIPTION: 'Contenu de page générique' DependtPageColumnLinkType: 'Type de lien' + DependtPageColumnURL: URL EDITANYONE: 'Toute personne pouvant se connecter au CMS' EDITHEADER: 'Qui peut modifier cette page?' EDITONLYTHESE: 'Seulement ces personnes (choisir à partir de la liste)' @@ -304,6 +335,7 @@ fr: MODIFIEDONDRAFTHELP: 'La page comporte des modifications non publiées' MODIFIEDONDRAFTSHORT: Modifiée MetadataToggle: Métadonnées + OBSOLETECLASS: 'Cette page est d''un type obsolète : {type}. Sauvegarder réinitialisera son type et vous pourriez perdre des données' PAGELOCATION: 'Emplacement de la page' PAGETITLE: 'Nom de la page' PAGETYPE: 'Type de page' @@ -313,6 +345,7 @@ fr: PARENTTYPE_SUBPAGE: 'Sous-page d''une page parente (choisir en-dessous) ' PERMISSION_GRANTACCESS_DESCRIPTION: 'Contrôler les groupes qui peuvent accéder ou éditer certaines pages' PERMISSION_GRANTACCESS_HELP: 'Autoriser la gestion des restrictions d''accès d''une page dans la section "Pages"' + PLURALNAME: Pages PageTypNotAllowedOnRoot: 'Le type de page « {type} » n’est pas autorisé au niveau racine' PageTypeNotAllowed: 'Le type de page « {type} » n''est pas autorisé comme enfant de cette page parent' REMOVEDFROMDRAFTHELP: 'La page est publiée, mais a été effacée des brouillons' @@ -322,6 +355,7 @@ fr: REORGANISE_HELP: 'Réorganiser les pages dans l''arborescence du site par glisser & déposer.' SHOWINMENUS: 'Afficher dans les menus ?' SHOWINSEARCH: 'Afficher dans les recherches ?' + SINGULARNAME: Page TABBEHAVIOUR: Comportement TABCONTENT: 'Contenu principal' TABDEPENDENT: 'Pages dépendantes' @@ -330,6 +364,7 @@ fr: URLSegment: 'Segment d''URL' VIEWERGROUPS: 'Groupes de Visualisation' VIEW_ALL_DESCRIPTION: 'Voir toute la page' + VIEW_ALL_HELP: 'Capacité de voir n''importe quelle page du site, sans tenir compte des paramètres de l''onglet Accès. Requiert la permission d''accès à la section "Pages"' VIEW_DRAFT_CONTENT: 'Voir les brouillons' VIEW_DRAFT_CONTENT_HELP: 'Concerne l’affichage des pages de manière externe au CMS en mode brouillon. Pratique pour les collaborateurs externes sans accès au CMS.' Viewers: 'Groupes de visualisation' @@ -338,8 +373,16 @@ fr: many_many_BackLinkTracking: 'Suivi des liens retour' many_many_ImageTracking: 'Suivi des images' many_many_LinkTracking: 'Suivi des Liens' + BUTTONPUBLISHED: Publié + BUTTONSAVED: Sauvegardé + GroupPlaceholder: 'Cliquez pour sélectionner un groupe' + LASTPUBLISHED: 'Dernier publié' + LASTSAVED: 'Dernier sauvegardé' + MoreOptions: 'Plus d''options' + NOTPUBLISHED: 'Non-publié' SiteTreeURLSegmentField: HelpChars: 'Les caractères spéciaux sont automatiquement convertis ou supprimés.' + EMPTY: 'Merci d''entrer une URL ou cliquez sur Annuler' StaticExporter: BASEURL: 'URL de base' EXPORTTO: 'Exporter vers ce dossier' @@ -364,11 +407,15 @@ fr: CANACCESS: 'Vous pouvez accéder le site archivé par ce lien :' HAVEASKED: 'Vous avez demandé à voir le contenu de notre site le' VirtualPage: + CHOOSE: 'Page liée' DESCRIPTION: 'Affiche le contenu d’une autre page' + EDITCONTENT: 'Editer le contenu d''une page liée' HEADER: 'Cette page est virtuelle' PLURALNAME: 'Pages Virtuelles' PageTypNotAllowedOnRoot: 'Le type de page d’origine « {type} » n’est pas autorisé au niveau racine pour cette page virtuelle' SINGULARNAME: 'Page virtuelle' + EditLink: éditer + HEADERWITHLINK: 'Ceci est une page virtuelle copiant le contenu de "{title}" ({link})' CMSFileAddController: MENUTITLE: Fichiers CMSPageEditController: @@ -377,3 +424,13 @@ fr: MENUTITLE: 'Éditer la page' CMSSettingsController: MENUTITLE: Paramètres + SITETREE: + VIRTUALPAGEDRAFTWARNING: 'Veuillez publier la page liée avant de publier la page virtuelle' + VIRTUALPAGEWARNING: 'Veuillez choisir une page liée et sauvegarder avant de publier cette page' + VIRTUALPAGEWARNINGSETTINGS: 'Veuillez choisir une page liée dans le contenu principal avant de publier' + SilverStripeNavigator: + ARCHIVED: Archivé + URLSegmentField: + Cancel: Annuler + Edit: Editer + OK: OK diff --git a/lang/gl_ES.yml b/lang/gl_ES.yml index 11315b31..c93259bd 100644 --- a/lang/gl_ES.yml +++ b/lang/gl_ES.yml @@ -169,7 +169,6 @@ gl_ES: OtherGroupTitle: Outro ParameterLiveCheckbox: 'Probar o sitio en vivo' SilverStripeNavigatorLink: - ShareInstructions: 'To share a this to this page, copy and paste the link below.' ShareLink: 'Ligazón compartir' SilverStripeNavigatorLinkl: CloseLink: Pechar diff --git a/lang/he_IL.yml b/lang/he_IL.yml index 22324771..15492151 100644 --- a/lang/he_IL.yml +++ b/lang/he_IL.yml @@ -254,7 +254,6 @@ he_IL: ParameterLiveCheckbox: 'בדיקת האתר החי' REPEMPTY: 'הדוח {title} ריק.' SilverStripeNavigatorLink: - ShareInstructions: 'כדי לשתף קישור עמוד זה יש להעתיק ולהדביק את הקישור שלהלן.' ShareLink: 'שיתוף הקישור' SilverStripeNavigatorLinkl: CloseLink: סגירה diff --git a/lang/hu.yml b/lang/hu.yml index d306221d..4499fd76 100644 --- a/lang/hu.yml +++ b/lang/hu.yml @@ -165,7 +165,6 @@ hu: LAST2WEEKS: 'Elmúlt 2 héten belül szerkesztett oldalak' OtherGroupTitle: Más SilverStripeNavigatorLink: - ShareInstructions: 'To share a this to this page, copy and paste the link below.' ShareLink: 'Hivatkozás megosztása' SiteConfig: DEFAULTTHEME: '(Alap téma használata)' diff --git a/lang/it.yml b/lang/it.yml index e2d0f93c..1674381c 100644 --- a/lang/it.yml +++ b/lang/it.yml @@ -252,7 +252,6 @@ it: ParameterLiveCheckbox: 'Verifica sito pubblicato' REPEMPTY: 'Il rapporto {title} è vuoto.' SilverStripeNavigatorLink: - ShareInstructions: 'Per condividere questa pagina, copia e incolla il link qui sotto.' ShareLink: 'Link di condivisione' SilverStripeNavigatorLinkl: CloseLink: Chiudi diff --git a/lang/ja_JP.yml b/lang/ja_JP.yml index ae277031..9a9aa72e 100644 --- a/lang/ja_JP.yml +++ b/lang/ja_JP.yml @@ -214,7 +214,6 @@ ja_JP: OtherGroupTitle: その他 REPEMPTY: '{title}のレポートは空です' SilverStripeNavigatorLink: - ShareInstructions: 'このページを共有するには、以下のリンクをコピー&ペーストとします。' ShareLink: '共有リンク' SilverStripeNavigatorLinkl: CloseLink: 閉じる diff --git a/lang/lt.yml b/lang/lt.yml index 57e47172..d372d078 100644 --- a/lang/lt.yml +++ b/lang/lt.yml @@ -249,7 +249,6 @@ lt: ParameterLiveCheckbox: 'Patikrinti publikuojamą svetainę' REPEMPTY: '{title} ataskaita yra tuščia.' SilverStripeNavigatorLink: - ShareInstructions: 'Norėdami dalintis nuoroda į šį puslapį, kopijuokite, bei įklijuokite nuorodą apačioje.' ShareLink: 'Dalintis nuoroda' SilverStripeNavigatorLinkl: CloseLink: Uždaryti diff --git a/lang/mi.yml b/lang/mi.yml index 576b4d3c..84cb5b2f 100644 --- a/lang/mi.yml +++ b/lang/mi.yml @@ -253,7 +253,6 @@ mi: ParameterLiveCheckbox: 'Tirohia te pae ora' REPEMPTY: 'Kua piako te pūrongo {title}.' SilverStripeNavigatorLink: - ShareInstructions: 'Hei tiritiri i te hono ki tēnei whārangi, tāruatia me te whakapiri i te hono i raro.' ShareLink: 'Tiritiri hono' SilverStripeNavigatorLinkl: CloseLink: Kati diff --git a/lang/nb.yml b/lang/nb.yml index 17450724..b4679dcd 100644 --- a/lang/nb.yml +++ b/lang/nb.yml @@ -3,8 +3,11 @@ nb: ADDFILES: 'Legg til filer' ActionAdd: 'Legg til mappe' AppCategoryArchive: Arkiv + AppCategoryAudio: Audio AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Bilde + AppCategoryVideo: Video BackToFolder: 'Tilbake til mappe' CREATED: Dato CurrentFolderOnly: 'Begrens til nåværende mappe' @@ -24,6 +27,8 @@ nb: MENUTITLE: Filer AssetAdmin_DeleteBatchAction: TITLE: 'Slett mapper' + AssetAdmin_Tools: + FILTER: Filter AssetAdmin_left_ss: GO: Utfør AssetTableField: @@ -40,6 +45,7 @@ nb: ColumnDateLastModified: 'Dato sist endret' ColumnDateLastPublished: 'Dato sist publisert' ColumnProblemType: 'Problemtype' + ColumnURL: URL HasBrokenFile: 'har ødelagt fil' HasBrokenLink: 'har ødelagt lenke' HasBrokenLinkAndFile: 'har ødelagt lenke og fil' @@ -61,6 +67,8 @@ nb: DELETE_PAGES: 'Slett fra publisert side' PUBLISHED_PAGES: 'Publiserte %d sider, %d feilet.' PUBLISH_PAGES: Publiser + UNPUBLISHED_PAGES: 'Avpubliserte %d sider' + UNPUBLISH_PAGES: Avpubliser 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".' @@ -123,17 +131,26 @@ nb: MENUTITLE: Historie VIEWINGLATEST: 'Viser den nyeste versjonen.' CMSPageHistoryController_versions_ss: + AUTHOR: Forfatter NOTPUBLISHED: 'Ikke publisert' + PUBLISHER: Utgiver UNKNOWN: Ukjent WHEN: Når CMSPagesController: + GalleryView: 'Gallerivisning' + ListView: 'Listevisning' + MENUTITLE: Sider TreeView: 'Trevisning' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Dra-og-slipp' MULTISELECT: Flervalg + CMSPagesController_Tools_ss: + FILTER: Filter CMSSearch: FILTERDATEFROM: Fra FILTERDATEHEADING: Dato + FILTERDATETO: Til + FILTERLABELTEXT: Innhold CMSSiteTreeFilter_ChangedPages: Title: 'Endrede sider' CMSSiteTreeFilter_DeletedPages: @@ -210,6 +227,7 @@ nb: SAVEDUP: Lagret. STATUSPUBLISHEDSUCCESS: 'Vellykket publisering av "{title}".' SearchResults: 'Søkeresultater' + VersionUnknown: Ukjent Permission: CMS_ACCESS_CATEGORY: 'Tilgang til publiseringssystemet' Permissions: @@ -295,10 +313,13 @@ nb: DELETEDPAGESHORT: Slettet DEPENDENT_NOTE: 'De følgende sidene avhenger av denne siden. Dette inkluderer virtuelle sider, omdirigeringssider og sider med innholdslenker.' DESCRIPTION: 'Generisk innholdsside' + DependtPageColumnLinkType: 'Lenketype' + DependtPageColumnURL: URL EDITANYONE: 'Alle som kan logge inn til kontrollpanelet' EDITHEADER: 'Hvem kan redigere dette i kontrollpanelet?' EDITONLYTHESE: 'Bare disse personene' EDITORGROUPS: 'Redaktørgrupper' + EDIT_ALL_DESCRIPTION: 'Rediger hvilken som helst side' EDIT_ALL_HELP: 'Lar deg redigere hvilken som helst side på nettstedet, uavhengig av innstillingene på adgangsfanen. Krever at du har tilgang til sideseksjonen.' Editors: 'Redaktørgrupper' HASBROKENLINKS: 'Denne siden har ødelagte lenker.' @@ -313,12 +334,14 @@ nb: METAEXTRAHELP: 'HTML-elementer for ekstra metainformasjon. For eksempel <meta name="egetNavn" content="Ditt egendefinerte innhold her" />' MODIFIEDONDRAFTHELP: 'Siden har upubliserte forandringer' MODIFIEDONDRAFTSHORT: Endret + MetadataToggle: Metadata OBSOLETECLASS: 'Denne siden er av den utdaterte typen {type}. Lagring vil tilbakestille typen og kan medføre tap av informasjon.' PAGELOCATION: 'Sideplassering' PAGETITLE: 'Sidenavn' PAGETYPE: 'Sidetype' PARENTID: 'Overordnet side' PARENTTYPE: 'Sideplassering' + PARENTTYPE_ROOT: 'Toppnivåside' PARENTTYPE_SUBPAGE: 'Underside' PERMISSION_GRANTACCESS_DESCRIPTION: 'Kontroller hvilke grupper som har tilgang til eller kan endre sidene' PERMISSION_GRANTACCESS_HELP: 'Tillat tilordning av restriksjoner på sidenivå i sideseksjonen.' @@ -340,6 +363,7 @@ nb: TOPLEVELCREATORGROUPS: 'Toppnivåopprettere' URLSegment: 'Adressesegment' VIEWERGROUPS: 'Publikumsgrupper' + VIEW_ALL_DESCRIPTION: 'Se på hvilken som helst side' VIEW_ALL_HELP: 'Viser alle sider på nettstedet, uavhengig av innstillingene på adgangsfanen. Krever at du har adgang til sideseksjonen.' VIEW_DRAFT_CONTENT: 'Se innhold i utkast' VIEW_DRAFT_CONTENT_HELP: 'Gjelder visning av sider utenfor publiseringssystemet i utkastmodus. Nyttig for eksterne bidragsytere uten tilgang til publiseringssystemet.' @@ -409,3 +433,4 @@ nb: URLSegmentField: Cancel: Avbryt Edit: Rediger + OK: OK diff --git a/lang/pl.yml b/lang/pl.yml index efb38d92..9a650bc5 100644 --- a/lang/pl.yml +++ b/lang/pl.yml @@ -5,6 +5,7 @@ pl: AppCategoryArchive: Archiwum AppCategoryAudio: Dźwięk AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Obraz AppCategoryVideo: Wideo BackToFolder: 'Wróć do katalogu' @@ -44,6 +45,7 @@ pl: ColumnDateLastModified: 'Data ostatniej modyfikacji' ColumnDateLastPublished: 'Data ostatniej publikacji' ColumnProblemType: 'Rodzaj problemu' + ColumnURL: Adres URL HasBrokenFile: 'ma uszkodzony plik' HasBrokenLink: 'ma uszkodzony link' HasBrokenLinkAndFile: 'ma uszkodzony link oraz plik' @@ -79,25 +81,32 @@ pl: DESCREMOVED: 'i {count} potomków' DUPLICATED: 'Duplikowanie ''{title}'' zakończone powodzeniem' DUPLICATEDWITHCHILDREN: 'Duplikowanie ''{title}'' oraz podstron zakończone powodzeniem' + EMAIL: Email EditTree: 'Edytuj drzewko' ListFiltered: 'Filtrowana lista.' NEWPAGE: 'Nowa {pagetype}' PAGENOTEXISTS: 'Ta strona nie istnieje' + PAGES: Strony PAGETYPEANYOPT: Jakikolwiek + PAGETYPEOPT: 'Rodzaj strony' PUBALLCONFIRM: 'Opublikuj każdą stronę w witrynie' PUBALLFUN: '"Opublikuj wszystko"' PUBALLFUN2: "Naciśnięcie tego przycisku spowoduje przejście po wszystkich stronach i opublikowanie ich. Zazwyczaj używa się tego, gdy w witrynie było bardzo dużo zmian, na przykład gdy witryna została utworzona." PUBPAGES: 'Zrobiono: Opublikowano {count} stron' + PageAdded: 'Pomyślnie utworzono stronę' REMOVEDPAGEFROMDRAFT: '''%s'' usunięto ze szkiców' RESTORE: Przywróć RESTORED: 'Pomyślnie przywrócono ''{title}''' ROLLBACK: 'Wróć do tej wersji' SAVE: Zapisz SAVEDRAFT: 'Zapisz szkic' + TabContent: Zawartość TabHistory: Historia + TabSettings: Opcje TreeFiltered: 'Filtruj drzewko' TreeFilteredClear: 'Wyczyść filtr' MENUTITLE: 'Edytuj stronę' + AddPageRestriction: 'Uwaga: Niektóre typy stron nie są dozwolone dla tego wyboru' CMSMain_left_ss: APPLY_FILTER: 'Zastosuj filtr' RESET: Resetuj @@ -124,6 +133,7 @@ pl: WHEN: Kiedy CMSPagesController: ListView: 'Widok listy' + MENUTITLE: Strony TreeView: 'Widok drzewa' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Przeciągnij i upuść' @@ -243,11 +253,14 @@ pl: BROKENREDIRECTORPAGES: 'Strony przekierowania wskazujące na usunięte strony' BROKENVIRTUALPAGES: 'Wirtualne strony wskazujące na usunięte strony' BrokenLinksGroupTitle: 'Raporty o uszkodzonych linkach' + ContentGroupTitle: 'Treść raportów' + EMPTYPAGES: 'Strony bez zawartości' LAST2WEEKS: 'Strony edytowane w ciągu 2 ostatnich tygodni' + OtherGroupTitle: Inny ParameterLiveCheckbox: 'Sprawdź witrynę' REPEMPTY: '{title} raport jest pusty.' SilverStripeNavigatorLink: - ShareInstructions: 'Aby podzielić się tym na tej stronie, skopiuj i wklej poniższy link.' + ShareInstructions: 'Aby podzielić się tą stroną, skopiuj i wklej poniższy link.' ShareLink: 'Podziel się linkiem' SilverStripeNavigatorLinkl: CloseLink: Zamknij @@ -314,6 +327,7 @@ pl: MODIFIEDONDRAFTHELP: 'Na stronie znajdują się nieopublikowane zmiany' MODIFIEDONDRAFTSHORT: Zmodyfikowana MetadataToggle: Metadane + OBSOLETECLASS: 'Ta strona jest przestarzałego typu {type}. Zapisanie jej spowoduje zmianę typu przez co możesz stracić dane' PAGELOCATION: 'Lokalizacja strony' PAGETITLE: 'Nazwa strony' PAGETYPE: 'Rodzaj strony' @@ -356,7 +370,9 @@ pl: LASTPUBLISHED: 'Ostatnio opublikowano' LASTSAVED: 'Ostatnio zapisane' MoreOptions: 'Więcej opcji' + NOTPUBLISHED: 'Nieopublikowana' SiteTreeURLSegmentField: + HelpChars: 'Znaki specjalne są automatycznie konwertowane lub usuwane.' EMPTY: 'Proszę podać część adresu lub kliknąć anuluj' StaticExporter: BASEURL: 'Bazowy URL' @@ -390,6 +406,8 @@ pl: PageTypNotAllowedOnRoot: '"{type}" nie jest dozwolona dla głównego poziomu wirtualnej strony' SINGULARNAME: 'Wirtualna Strona' EditLink: edytuj + CMSFileAddController: + MENUTITLE: Pliki CMSPageEditController: MENUTITLE: 'Edytuj stronę' CMSPageSettingsController: @@ -399,3 +417,4 @@ pl: URLSegmentField: Cancel: Anuluj Edit: Edytuj + OK: OK diff --git a/lang/pt.yml b/lang/pt.yml index 2454836d..6105c662 100644 --- a/lang/pt.yml +++ b/lang/pt.yml @@ -253,7 +253,6 @@ pt: ParameterLiveCheckbox: 'Verificar site publicado' REPEMPTY: 'O relatório {title} encontra-se vazio.' SilverStripeNavigatorLink: - ShareInstructions: 'Para partilhar esta página, copie e cole o link abaixo ' ShareLink: 'Partilhar ligação' SilverStripeNavigatorLinkl: CloseLink: Fechar diff --git a/lang/ru.yml b/lang/ru.yml index 84f23e64..125b492b 100644 --- a/lang/ru.yml +++ b/lang/ru.yml @@ -255,8 +255,6 @@ ru: OtherGroupTitle: Другие ParameterLiveCheckbox: 'Проверить опубликованный сайт' REPEMPTY: 'Отчет {title} пуст.' - SilverStripeNavigatorLink: - ShareInstructions: 'Чтобы поделиться ссылкой на эту страницу, скопируйте URL ниже.' SilverStripeNavigatorLinkl: CloseLink: Закрыть SiteConfig: diff --git a/lang/sk.yml b/lang/sk.yml index addebb9f..1aaff7c9 100644 --- a/lang/sk.yml +++ b/lang/sk.yml @@ -5,7 +5,9 @@ sk: AppCategoryArchive: Archív AppCategoryAudio: Zvuk AppCategoryDocument: Dokument + AppCategoryFlash: Flash AppCategoryImage: Obrázok + AppCategoryVideo: Video BackToFolder: 'Späť na priečinok' CREATED: Dátum CurrentFolderOnly: 'Obmedziť na aktuálny priečinok?' @@ -43,6 +45,7 @@ sk: ColumnDateLastModified: 'Dátum poslednej úpravy' ColumnDateLastPublished: 'Dátum poslednej publikácie' ColumnProblemType: 'Problémový typ' + ColumnURL: URL HasBrokenFile: 'obsahuje porušený súbor' HasBrokenLink: 'obsahuje porušený odkaz' HasBrokenLinkAndFile: 'obsahuje porušený odkaz a súbor' @@ -111,6 +114,7 @@ sk: AddPageRestriction: 'Poznámka: Niektoré typy stránok nie sú povolené pre tento výber' CMSMain_left_ss: APPLY_FILTER: 'Použiť filter' + RESET: Reset CMSPageAddController: ParentMode_child: 'Pod inú stránku' ParentMode_top: 'Najvyššia úroveň' @@ -127,6 +131,7 @@ sk: MENUTITLE: História VIEWINGLATEST: 'Práve sa zobrazuje posledná verzia.' CMSPageHistoryController_versions_ss: + AUTHOR: Autor NOTPUBLISHED: 'Nepublikovaná' PUBLISHER: Vydavateľ UNKNOWN: Neznáma @@ -134,6 +139,7 @@ sk: CMSPagesController: GalleryView: 'Zobraziť galériu' ListView: 'Zobraziť zoznam' + MENUTITLE: Stránky TreeView: 'Zobraziť strom' CMSPagesController_ContentToolbar_ss: ENABLEDRAGGING: 'Tiahni a pusť' @@ -142,17 +148,24 @@ sk: FILTER: Filtrovať CMSSearch: FILTERDATEFROM: Od + FILTERDATEHEADING: Dátum + FILTERDATETO: Do + FILTERLABELTEXT: Obsah CMSSiteTreeFilter_ChangedPages: Title: 'Zmenené stránky' CMSSiteTreeFilter_DeletedPages: Title: 'Všetky stránky, vrátane vymazaných' + CMSSiteTreeFilter_Search: + Title: 'Všechny stránky' ContentControl: NOTEWONTBESHOWN: 'Poznámka: Táto správa sa nebude zobrazovať vašim návštevníkom' ContentController: ARCHIVEDSITE: 'Zobrazenie verzie' 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. Pre návrat na publikovaný web kliknite Tu.' + Email: E-mail INSTALL_SUCCESS: 'Inštalácia úspešná!' InstallFilesDeleted: 'Inštalačné súbory boli odstranené úspešne.' InstallSecurityWarning: 'Z bezpečnostných dôvodov by ste mali teraz odstrániť inštalačné súbory, ak neplánujete preinštalovať neskôr ( vyžaduje admin prihlásenie, pozri vyššie ). Webový server teraz potrebuje už len prístup pre zápis do priečinka "assets", môžete odstrániť práva zápisu zo všetkých ostatných priečinkov. Kliknite tu pre odstránenie inštalačných súborov. ' @@ -213,6 +226,7 @@ sk: PreviewButton: Zobrazenie SAVEDUP: Uložené. STATUSPUBLISHEDSUCCESS: 'Uverejnené "{title}" úspešne' + SearchResults: 'Výsledky vyhľadávania' VersionUnknown: Neznáma Permission: CMS_ACCESS_CATEGORY: 'Prístup do CMS' @@ -252,7 +266,7 @@ sk: ParameterLiveCheckbox: 'Skontolovať živú stránku' REPEMPTY: '{title} výkaz je prázdny.' SilverStripeNavigatorLink: - ShareInstructions: 'Pre zdielanie tejto stránky, skopírujte linku nižšie.' + ShareInstructions: 'Pre zdielanie tejto stránky, skopírujte a vložte odkaz nižšie.' ShareLink: 'Zdieľať odkaz' SilverStripeNavigatorLinkl: CloseLink: Zavrieť @@ -300,6 +314,7 @@ sk: 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 EDITANYONE: 'Ktokoľvek kto sa môže prihlásiť do CMS' EDITHEADER: 'Kto môže editovať túto stránnku?' EDITONLYTHESE: 'Iba títo ľudia (vyberte zo zoznamu)' @@ -405,6 +420,10 @@ sk: MENUTITLE: Súbory CMSPageEditController: MENUTITLE: 'Upraviť stránku' + CMSPageSettingsController: + MENUTITLE: 'Editovať stránku' + CMSSettingsController: + MENUTITLE: Nastavenia SITETREE: VIRTUALPAGEDRAFTWARNING: 'Zverejnite prosím odkazovanú stránku pre zverejnenie virtuálnej stránky' VIRTUALPAGEWARNING: 'Zvolte prosím odkazovanú stránku a uložte pre zverejnenie tejto stránky' diff --git a/lang/sl.yml b/lang/sl.yml index 6b76f05f..e0264a60 100644 --- a/lang/sl.yml +++ b/lang/sl.yml @@ -214,7 +214,6 @@ sl: ParameterLiveCheckbox: 'Preveri na objavljenem spletnem mestu' REPEMPTY: 'Poročilo {title} je prazno.' SilverStripeNavigatorLink: - ShareInstructions: 'Za posredovanje vsebine med tema dvema stranema, kopirajte povezavo in jo spodaj prilepite.' ShareLink: 'Posreduj povezavo' SilverStripeNavigatorLinkl: CloseLink: Zapri diff --git a/lang/sv.yml b/lang/sv.yml index d50887c4..1e9b56e2 100644 --- a/lang/sv.yml +++ b/lang/sv.yml @@ -259,7 +259,6 @@ sv: ParameterLiveCheckbox: 'Kontrollera live sajt' REPEMPTY: 'Raporten {title} är tom.' 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 diff --git a/lang/th.yml b/lang/th.yml index 4dd1c180..7d418e11 100644 --- a/lang/th.yml +++ b/lang/th.yml @@ -243,7 +243,6 @@ th: ParameterLiveCheckbox: 'ดูเว็บไซต์แบบสดๆ' REPEMPTY: 'รายงาน {title} ยังว่างอยู่' SilverStripeNavigatorLink: - ShareInstructions: 'หากต้องการแชร์หน้าเว็บนี้, คัดลอกแล้วนำลิงก์ด้านล่างนี้ไปวาง' ShareLink: 'ลิงก์ที่ต้องการแชร์' SilverStripeNavigatorLinkl: CloseLink: ปิด diff --git a/lang/tr.yml b/lang/tr.yml index 0dd6f88d..d3c38a7a 100644 --- a/lang/tr.yml +++ b/lang/tr.yml @@ -145,7 +145,6 @@ tr: OtherGroupTitle: Diğeri ParameterLiveCheckbox: 'Yayındaki siteyi kontrol et' SilverStripeNavigatorLink: - ShareInstructions: 'To share a this to this page, copy and paste the link below.' ShareLink: 'Linki paylaş' SilverStripeNavigatorLinkl: CloseLink: Kapat diff --git a/lang/uk.yml b/lang/uk.yml index a128a091..d6b27d50 100644 --- a/lang/uk.yml +++ b/lang/uk.yml @@ -196,7 +196,6 @@ uk: OtherGroupTitle: Інше ParameterLiveCheckbox: 'Перевірити робочий сайт' SilverStripeNavigatorLink: - ShareInstructions: 'Щоб поділитися цією сторінкою, скопіюйте та вставте посилання нижче.' ShareLink: 'Поділитися посиланням' SilverStripeNavigatorLinkl: CloseLink: Закрити From 7ec7a263c09e865e70cf19b5f934281d41b54744 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 13 Sep 2013 18:46:23 +0200 Subject: [PATCH 11/22] Behat scenarios for page permissions and search (steps only) Actual step implementation not done yet --- .../features/manage-page-permisions.feature | 56 +++++++++++++++++++ .../behat/features/search-for-a-page.feature | 51 ++++++++++++++--- 2 files changed, 98 insertions(+), 9 deletions(-) create mode 100644 tests/behat/features/manage-page-permisions.feature diff --git a/tests/behat/features/manage-page-permisions.feature b/tests/behat/features/manage-page-permisions.feature new file mode 100644 index 00000000..d606d076 --- /dev/null +++ b/tests/behat/features/manage-page-permisions.feature @@ -0,0 +1,56 @@ +@todo +Feature: Manage global page permissions +As an administrator +I want to manage view and edit permission defaults on pages +In order to set good defaults and avoid repeating myself on each page + +Background: + Given I have an "Administrator" user in a "Administrators" Security Group + Given I have an "Content Author" user in a "Content Authors" Security Group + And I am logged in as an "ADMIN" + And I navigate to the "Settings" CMS section + +Scenario: I can open global view permissions to everyone + Given I select the 'Access' tab + And I select "Anyone" in the 'Who can view pages on this site?' field + And press the "Save" button + When I visit the homepage without being logged in + Then I can see "Welcome" + +Scenario: I can limit global view permissions to logged-in users + Given I select the 'Access' tab + And I select "Logged-in users" in 'Who can view pages on this site?' + And press the 'Save' button + When I visit the homepage without being logged in + Then I am redirected to the log-in page + When I visit the homepage as "Content Author" + Then I can see "Welcome" + +Scenario: I can limit global view permissions to certain groups + Given I select the 'Access' tab + And I select "Only these people (choose from list)" in 'Who can view pages on this site?' + And I select "Administrators" in the "Viewer Groups" dropdown + And press the 'Save' button + When I visit the homepage without being logged in + Then I am redirected to the log-in page + When I visit the homepage as "Content Author" + Then I am redirected to the log-in page + When I visit the homepage as "Administrator" + Then I can see "Welcome" + +Scenario: I can limit global edit permissions to logged-in users + Given I select the 'Access' tab + And I select "Logged-in users" in 'Who can edit pages on this site?' + And press the 'Save' button + Then pages should be editable by "Content Authors" + And pages should be editable by "Administrators" + +Scenario: I can limit global edit permissions to certain groups + Given I select the 'Access' tab + And I select "Only these people (choose from list)" in 'Who can edit pages on this site?' + And I select "Administrators" in the "Viewer Groups" dropdown + And press the 'Save' button + Then pages should not be editable by "Content Authors" + But pages should be editable by "Administrators" + + \ No newline at end of file diff --git a/tests/behat/features/search-for-a-page.feature b/tests/behat/features/search-for-a-page.feature index 48aac0fd..b036e324 100644 --- a/tests/behat/features/search-for-a-page.feature +++ b/tests/behat/features/search-for-a-page.feature @@ -4,18 +4,51 @@ Feature: Search for a page So that I can efficiently navigate nested content structures Background: - Given a "page" "About Us" + Given a "page" "Home" + And a "page" "About Us" And a "page" "Contact Us" - - @javascript - Scenario: I can search for a page by its title - Given I am logged in with "ADMIN" permissions + And I am logged in with "ADMIN" permissions And I go to "/admin/pages" - Then I should see "About Us" in CMS Tree - And I should see "Contact Us" in CMS Tree + And I expand the "Filter" CMS Panel - When I expand the "Filter" CMS Panel - And I fill in "Content" with "About Us" + Scenario: I can search for a page by its title + Given I fill in "Content" with "About Us" And I press the "Apply Filter" button Then I should see "About Us" in CMS Tree But I should not see "Contact Us" in CMS Tree + + @todo + Scenario: I can search for a page by its type + Given a "page" "My Error Page" of type "Error Page" + And I fill in "Page Type" with "Redirector Page" + And I press the "Apply Filter" button + Then I should see "My Error Page" in CMS Tree + But I should not see "Contact Us" in CMS Tree + + @todo + Scenario: I can search for a page by its oldest last edited date + Given a "page" "Recent Page" + And a "page" "Old Page" was last edited 7 days ago + When I fill in "From" with "5 days ago" + And I press the "Apply Filter" button + Then I should see "Recent Page" in CMS Tree + But I should not see "Old Page" in CMS Tree + + @todo + Scenario: I can search for a page by its newest last edited date + Given a "page" "Recent Page" + And a "page" "Old Page" was last edited 7 days ago + When I fill in "To" with "5 days ago" + And I press the "Apply Filter" button + Then I should not see "Recent Page" in CMS Tree + But I should see "Old Page" in CMS Tree + + @todo + Scenario: I can include deleted pages in my search + Given a "page" "Deleted Page" + And the "page" "Old Page" is deleted + When I press the "Apply Filter" button + Then I should not see "Deleted Page" in CMS Tree + When I fill in "Pages" with "All pages, including deleted" + And I press the "Apply Filter" button + Then I should see "Deleted Page" in CMS Tree \ No newline at end of file From 16c802f7e186493768b161f333d1e722a7bdc0bc Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sat, 14 Sep 2013 00:21:29 +0200 Subject: [PATCH 12/22] More specific behat tree assertions --- tests/behat/features/edit-a-page.feature | 8 ++++---- tests/behat/features/preview-a-page.feature | 8 ++++---- tests/behat/features/publish-a-page.feature | 12 +++++------ .../behat/features/search-for-a-page.feature | 20 +++++++++---------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/behat/features/edit-a-page.feature b/tests/behat/features/edit-a-page.feature index 182d0509..6e08aa29 100644 --- a/tests/behat/features/edit-a-page.feature +++ b/tests/behat/features/edit-a-page.feature @@ -7,16 +7,16 @@ Feature: Edit a page Given a "page" "About Us" Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - Then I should see "About Us" in CMS Tree + Then I should see "About Us" in the tree @javascript Scenario: I can open a page for editing from the pages tree - When I follow "About Us" + When I click on "About Us" in the tree Then I should see an edit page form @javascript Scenario: I can edit title and content and see the changes on draft - When I follow "About Us" + When I click on "About Us" in the tree Then I should see an edit page form When I fill in "Title" with "About Us!" @@ -24,6 +24,6 @@ Feature: Edit a page And I press the "Save draft" button Then I should see "Saved" in the "button#Form_EditForm_action_save" element - When I follow "About Us" + When I click on "About Us" in the tree Then the "Title" field should contain "About Us!" And the "Content" HTML field should contain "my new content" \ No newline at end of file diff --git a/tests/behat/features/preview-a-page.feature b/tests/behat/features/preview-a-page.feature index cd39619f..ddd4fe25 100644 --- a/tests/behat/features/preview-a-page.feature +++ b/tests/behat/features/preview-a-page.feature @@ -10,9 +10,9 @@ Feature: Preview a page Scenario: I can show a preview of the current page from the pages section Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - Then I should see "About Us" in CMS Tree + Then I should see "About Us" in the tree - When I follow "About Us" + When I click on "About Us" in the tree And I set the CMS mode to "Preview mode" Then I can see the preview panel And the preview contains "About Us" @@ -25,9 +25,9 @@ Feature: Preview a page Scenario: I can see an updated preview when editing content Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - Then I should see "About Us" in CMS Tree + Then I should see "About Us" in the tree - When I follow "About Us" + When I click on "About Us" in the tree And I fill in the "Content" HTML field with "first content" And I press the "Publish" button And I fill in the "Content" HTML field with "my new content" diff --git a/tests/behat/features/publish-a-page.feature b/tests/behat/features/publish-a-page.feature index e2e43662..5a1d3337 100644 --- a/tests/behat/features/publish-a-page.feature +++ b/tests/behat/features/publish-a-page.feature @@ -16,8 +16,8 @@ So that only high quality changes are seen by our visitors Scenario: I can publish a previously never published page Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - And I should see "My Page" in CMS Tree - And I follow "My Page" + And I should see "My Page" in the tree + And I click on "My Page" in the tree And I press the "Publish" button Then I press the "Log out" button @@ -29,8 +29,8 @@ So that only high quality changes are seen by our visitors Scenario: I will get different options depending on the current publish state of the page Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - And I should see "My Page" in CMS Tree - And I follow "My Page" + And I should see "My Page" in the tree + And I click on "My Page" in the tree When I click "More options" in the "#ActionMenus" element Then I should not see "Unpublish" in the "#ActionMenus_MoreOptions" element @@ -60,7 +60,7 @@ So that only high quality changes are seen by our visitors Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - And I should see "Hello" in CMS Tree + And I should see "Hello" in the tree And I follow "Hello" When I click "More options" in the "#ActionMenus" element @@ -74,7 +74,7 @@ So that only high quality changes are seen by our visitors Scenario: I can delete a page from live and draft stage to completely remove it Given I am logged in with "ADMIN" permissions And I go to "/admin/pages" - And I should see "My Page" in CMS Tree + And I should see "My Page" in the tree When I follow "My Page" And I press the "Publish" button And I click "More options" in the "#ActionMenus" element diff --git a/tests/behat/features/search-for-a-page.feature b/tests/behat/features/search-for-a-page.feature index b036e324..1da95bd9 100644 --- a/tests/behat/features/search-for-a-page.feature +++ b/tests/behat/features/search-for-a-page.feature @@ -14,16 +14,16 @@ Feature: Search for a page Scenario: I can search for a page by its title Given I fill in "Content" with "About Us" And I press the "Apply Filter" button - Then I should see "About Us" in CMS Tree - But I should not see "Contact Us" in CMS Tree + Then I should see "About Us" in the tree + But I should not see "Contact Us" in the tree @todo Scenario: I can search for a page by its type Given a "page" "My Error Page" of type "Error Page" And I fill in "Page Type" with "Redirector Page" And I press the "Apply Filter" button - Then I should see "My Error Page" in CMS Tree - But I should not see "Contact Us" in CMS Tree + Then I should see "My Error Page" in the tree + But I should not see "Contact Us" in the tree @todo Scenario: I can search for a page by its oldest last edited date @@ -31,8 +31,8 @@ Feature: Search for a page And a "page" "Old Page" was last edited 7 days ago When I fill in "From" with "5 days ago" And I press the "Apply Filter" button - Then I should see "Recent Page" in CMS Tree - But I should not see "Old Page" in CMS Tree + Then I should see "Recent Page" in the tree + But I should not see "Old Page" in the tree @todo Scenario: I can search for a page by its newest last edited date @@ -40,15 +40,15 @@ Feature: Search for a page And a "page" "Old Page" was last edited 7 days ago When I fill in "To" with "5 days ago" And I press the "Apply Filter" button - Then I should not see "Recent Page" in CMS Tree - But I should see "Old Page" in CMS Tree + Then I should not see "Recent Page" in the tree + But I should see "Old Page" in the tree @todo Scenario: I can include deleted pages in my search Given a "page" "Deleted Page" And the "page" "Old Page" is deleted When I press the "Apply Filter" button - Then I should not see "Deleted Page" in CMS Tree + Then I should not see "Deleted Page" in the tree When I fill in "Pages" with "All pages, including deleted" And I press the "Apply Filter" button - Then I should see "Deleted Page" in CMS Tree \ No newline at end of file + Then I should see "Deleted Page" in the tree \ No newline at end of file From aee038166353dffbae6741928a9a0a118dfcd9c4 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:10:12 +0200 Subject: [PATCH 13/22] Hints for SiteTree.TreeTitle casting Relates to SS-2013-009 --- code/model/SiteTree.php | 1 + 1 file changed, 1 insertion(+) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index cd6443a6..c87d15da 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -121,6 +121,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid 'Link' => 'Text', 'RelativeLink' => 'Text', 'AbsoluteLink' => 'Text', + 'TreeTitle' => 'HTMLText', ); private static $defaults = array( From a5d9958f8c264b93ee42b161fbab16de39592236 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:11:13 +0200 Subject: [PATCH 14/22] Clearer escaping in ReportAdmin No direct security issue since report titles can't be set by the user --- code/controllers/ReportAdmin.php | 8 +++++++- code/reports/Report.php | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/code/controllers/ReportAdmin.php b/code/controllers/ReportAdmin.php index 55b128a8..05fb82c3 100644 --- a/code/controllers/ReportAdmin.php +++ b/code/controllers/ReportAdmin.php @@ -164,7 +164,13 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { 'title' => _t('ReportAdmin.ReportTitle', 'Title'), )); $columns->setFieldFormatting(array( - 'title' => '$value' + 'title' => function($value, &$item) { + return sprintf( + '%s', + Convert::raw2xml($item->Link), + Convert::raw2xml($value) + ); + } )); $gridField->addExtraClass('all-reports-gridfield'); $fields->push($gridField); diff --git a/code/reports/Report.php b/code/reports/Report.php index a76b93b4..85b1f03a 100644 --- a/code/reports/Report.php +++ b/code/reports/Report.php @@ -282,8 +282,13 @@ class SS_Report extends ViewableData { if(isset($info['casting'])) $fieldCasting[$source] = $info['casting']; if(isset($info['link']) && $info['link']) { - $link = singleton('CMSPageEditController')->Link('show'); - $fieldFormatting[$source] = '$value'; + $fieldFormatting[$source] = function($value, &$item) { + return sprintf( + '%s', + Controller::join_links(singleton('CMSPageEditController')->Link('show'), $item->ID), + Convert::raw2xml($value) + ); + }; } $displayFields[$source] = isset($info['title']) ? $info['title'] : $source; From ec9c15917dcd882baedfbe0cd4b0eb8ad0a844b7 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:12:21 +0200 Subject: [PATCH 15/22] FIX Escaping in "dependent pages" (SS-2013-009) --- code/model/SiteTree.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index c87d15da..4c7df17d 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1850,8 +1850,20 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $dependentTable->getConfig()->getComponentByType('GridFieldDataColumns') ->setDisplayFields($dependentColumns) ->setFieldFormatting(array( - 'Title' => '$Title', - 'AbsoluteLink' => '$value', + 'Title' => function($value, &$item) { + return sprintf( + '%s', + (int)$item->ID, + Convert::raw2xml($item->Title) + ); + }, + 'AbsoluteLink' => function($value, &$item) { + return sprintf( + '%s', + Convert::raw2xml($value), + Convert::raw2xml($value) + ); + } )); } From f477983bffeb5542322028df731495195fd649ff Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:12:57 +0200 Subject: [PATCH 16/22] Clearer escaping in CMSMain No direct security issue, but makes intent clearer --- code/controllers/CMSMain.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index 86cedb15..68c0b0d9 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -783,13 +783,21 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr if($num) { return sprintf( '%s', - Controller::join_links($controller->Link(), "?ParentID={$item->ID}&view=list"), + Controller::join_links( + $controller->Link(), + sprintf("?ParentID=%d&view=list", (int)$item->ID) + ), $num ); } }, 'getTreeTitle' => function($value, &$item) use($controller) { - return '' . $item->TreeTitle . ''; + return sprintf( + '%s', + singleton('CMSPageEditController')->Link('show'), + (int)$item->ID, + $item->TreeTitle // returns HTML, does its own escaping + ); } )); From 29e502a63adb453559a5ae7abbf0a8cf03b10367 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:10:12 +0200 Subject: [PATCH 17/22] Hints for SiteTree.TreeTitle casting Relates to SS-2013-009 --- code/model/SiteTree.php | 1 + 1 file changed, 1 insertion(+) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index 9801f8ea..bb74e6b7 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -117,6 +117,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid 'Link' => 'Text', 'RelativeLink' => 'Text', 'AbsoluteLink' => 'Text', + 'TreeTitle' => 'HTMLText', ); static $defaults = array( From 79996a76fe55bd95a99dd99aae5c5f27626f0f06 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:11:13 +0200 Subject: [PATCH 18/22] Clearer escaping in ReportAdmin No direct security issue since report titles can't be set by the user --- code/controllers/ReportAdmin.php | 8 +++++++- code/reports/Report.php | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/code/controllers/ReportAdmin.php b/code/controllers/ReportAdmin.php index 21067b78..946633ca 100644 --- a/code/controllers/ReportAdmin.php +++ b/code/controllers/ReportAdmin.php @@ -166,7 +166,13 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { 'title' => _t('ReportAdmin.ReportTitle', 'Title'), )); $columns->setFieldFormatting(array( - 'title' => '$value' + 'title' => function($value, &$item) { + return sprintf( + '%s', + Convert::raw2xml($item->Link), + Convert::raw2xml($value) + ); + } )); $gridField->addExtraClass('all-reports-gridfield'); $fields->push($gridField); diff --git a/code/reports/Report.php b/code/reports/Report.php index 35fafadf..09e3ce0c 100644 --- a/code/reports/Report.php +++ b/code/reports/Report.php @@ -301,8 +301,13 @@ class SS_Report extends ViewableData { if(isset($info['casting'])) $fieldCasting[$source] = $info['casting']; if(isset($info['link']) && $info['link']) { - $link = singleton('CMSPageEditController')->Link('show'); - $fieldFormatting[$source] = '$value'; + $fieldFormatting[$source] = function($value, &$item) { + return sprintf( + '%s', + Controller::join_links(singleton('CMSPageEditController')->Link('show'), $item->ID), + Convert::raw2xml($value) + ); + }; } $displayFields[$source] = isset($info['title']) ? $info['title'] : $source; From e170f4c21b908b27d91a7f19d9dee4817b6e434c Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:12:21 +0200 Subject: [PATCH 19/22] FIX Escaping in "dependent pages" (SS-2013-009) --- code/model/SiteTree.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index bb74e6b7..5f27fd8a 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1827,8 +1827,20 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid ); $dependentTable->getConfig()->getComponentByType('GridFieldDataColumns') ->setFieldFormatting(array( - 'Title' => '$Title', - 'AbsoluteLink' => '$value', + 'Title' => function($value, &$item) { + return sprintf( + '%s', + (int)$item->ID, + Convert::raw2xml($item->Title) + ); + }, + 'AbsoluteLink' => function($value, &$item) { + return sprintf( + '%s', + Convert::raw2xml($value), + Convert::raw2xml($value) + ); + } )); } From 86339a551df55df8882bed7ea2b6ce681d33b74f Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 24 Sep 2013 12:12:57 +0200 Subject: [PATCH 20/22] Clearer escaping in CMSMain No direct security issue, but makes intent clearer --- code/controllers/CMSMain.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index 8d2f96c1..860ea61d 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -747,13 +747,21 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr if($num) { return sprintf( '%s', - Controller::join_links($controller->Link(), "?ParentID={$item->ID}&view=list"), + Controller::join_links( + $controller->Link(), + sprintf("?ParentID=%d&view=list", (int)$item->ID) + ), $num ); } }, 'getTreeTitle' => function($value, &$item) use($controller) { - return '' . $item->TreeTitle . ''; + return sprintf( + '%s', + singleton('CMSPageEditController')->Link('show'), + (int)$item->ID, + $item->TreeTitle // returns HTML, does its own escaping + ); } )); From dc1ae03fece82a69d0010b4f54c4c1714b25525e Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 26 Sep 2013 01:42:31 +0200 Subject: [PATCH 21/22] Tagged 3.1.0-rc3 From fbb9a4449d9bbebfd8fcd9441c966f51d4a2d202 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 26 Sep 2013 10:53:19 +0200 Subject: [PATCH 22/22] Removed stale salad tests, got behat now --- tests/salad/README.md | 20 ---- tests/salad/create-page.feature | 117 ---------------------- tests/salad/delete-page.feature | 47 --------- tests/salad/login.feature | 39 -------- tests/salad/logout.feature | 20 ---- tests/salad/step_definitions/content.rb | 101 ------------------- tests/salad/step_definitions/front-end.rb | 21 ---- tests/salad/step_definitions/general.rb | 40 -------- tests/salad/step_definitions/log-in.rb | 25 ----- tests/salad/step_definitions/security.rb | 23 ----- 10 files changed, 453 deletions(-) delete mode 100644 tests/salad/README.md delete mode 100644 tests/salad/create-page.feature delete mode 100644 tests/salad/delete-page.feature delete mode 100644 tests/salad/login.feature delete mode 100644 tests/salad/logout.feature delete mode 100644 tests/salad/step_definitions/content.rb delete mode 100644 tests/salad/step_definitions/front-end.rb delete mode 100644 tests/salad/step_definitions/general.rb delete mode 100644 tests/salad/step_definitions/log-in.rb delete mode 100644 tests/salad/step_definitions/security.rb diff --git a/tests/salad/README.md b/tests/salad/README.md deleted file mode 100644 index 12f4fa30..00000000 --- a/tests/salad/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Tests # - -Given I click on the "Tab Name" tab -Given I close window and go back to clean state -Given I fill out the log in form with user "user" and password "password" -Given I get a permission denied error -Given I go to the draft site -Given I log in as Fred -Given I log in as user -Given I log into the CMS as Fred@example.com -Given I log out -Given I visit admin/security -Given I wait for a status message -Given I wait for a success message -Given a "Blog" page called "News" as a child of "Blogs" -Given a "Publishers" group -Given a top-level "BlogPage" page called "News" -Given a user called "Fred" in the "Authors" group -Given the "News" page can be edited by the "Publishers" group -Given the site can be edited by the "Publishers" group diff --git a/tests/salad/create-page.feature b/tests/salad/create-page.feature deleted file mode 100644 index e12675b9..00000000 --- a/tests/salad/create-page.feature +++ /dev/null @@ -1,117 +0,0 @@ -Feature: Page creation in the CMS - As a content author - I want to create a basic text page at the root level and save it - So that our website can be kept up to date - - Scenario: An initial change to page name modifies key fields - Given I log into the CMS as admin - And I create a new page - When I put "Change Name" in the "Page name" field - And I click on the "Metadata" tab - Then the "URLSegment" field is "change-name" - And the "MetaTitle" field is "Change Name" - When I click on the "Main" tab - Then the "Navigation label" field is "Change Name" - - Scenario: Every subsequent change does not change the key fields - Given I save the page - And I cancel pop-ups - When I put "Change Again" in the "Page name" field - And I click on the "Metadata" tab - Then the "URLSegment" field is "change-name" - And the "MetaTitle" field is "Change Name" - When I click on the "Main" tab - Then the "Navigation label" field is "Change Name" - Then I delete the current page - - Scenario: I can populate all fields - And I create a new page - And I set "Page name" to "Populate name" - And I set "Navigation label" to "Populate label" - And I click on the "Metadata" tab - And I set "URLSegment" to "populate-url-segment" - And I set "MetaTitle" to "Populate MetaTitle" - And I set "Description" to "Populate Description" - And I set "Keywords" to "Populate Keywords" - And I set "Custom Meta Tags" to "Populate Custom Meta Tags" - And I click on the "Main" tab - And I save the page - When I load the "Populate label" page - Then the "Page name" field is "Populate name" - And the "Navigation label" field is "Populate label" - When I click on the "Metadata" tab - Then the "URLSegment" field is "populate-url-segment" - And the "MetaTitle" field is "Populate MetaTitle" - And the "Description" field is "Populate Description" - And the "Custom Meta Tags" field is "Populate Custom Meta Tags" - And I click on the "Main" tab - Then I delete the current page - - Scenario: I can create 2 identical pages - When I create a new page - And I create a new page - Then there are 2 root pages with navigation label "New Page" - Then I delete the current page - And I load the "New Page" root-level page - Then I delete the current page - - Scenario: Each change to page name changes the URL - When I create a new page - And I set "Page name" to "First Change" - And I click on the "Metadata" tab - Then the "URLSegment" field is "first-change" - - When I confirm pop-ups - And I click on the "Main" tab - And I set "Page name" to "Second Change" - And I click on the "Metadata" tab - Then the "URLSegment" field is "second-change" - - When I cancel pop-ups - And I click on the "Main" tab - And I set "Page name" to "Third Change" - And I click on the "Metadata" tab - Then the "URLSegment" field is "second-change" - And I click on the "Main" tab - - Then I delete the current page - - Scenario: Changes aren't saved if I cancel the warning - Given I create a new page - And I set "Page name" to "Change name" - When I confirm pop-ups to ignore the warning that their is unsaved content - And I load the "New Page" page - Then the "Page name" field is "New Page" - - Then I delete the current page - - Scenario: Page name and navigation label default to new page - Given I create a new page - Then the "Page name" field is "New Page" - And the "Navigation label" field is "New Page" - - When I click on the "Metadata" tab - Then the "URLSegment" field is "new-page" - And the "MetaTitle" field is blank - And the "Description" field is blank - And the "Keywords" field is blank - And the "Custom Meta Tags" field is blank - And I click on the "Main" tab - - Then I delete the current page - - Scenario: The navigation label is displayed in the site tree - Given I create a new page - And I set "Navigation label" to "New Label" - And I save the page - When I load the "New Label" page - Then the "Navigation label" field is "New Label" - - Scenario: If the navigation label is blanked out, it takes the value in the Page Name field - Given I set "Page name" to "Page Title" - When I set "Navigation label" to "" - And I save the page - And I load the "Page Title" page - Then the "Navigation label" field is "Page Title" - Then I delete the current page - \ No newline at end of file diff --git a/tests/salad/delete-page.feature b/tests/salad/delete-page.feature deleted file mode 100644 index c4153e3a..00000000 --- a/tests/salad/delete-page.feature +++ /dev/null @@ -1,47 +0,0 @@ -Feature: Page deletion in the CMS - As a content author - I want to delete pages in the CMS - So that out of date content can be removed - - Scenario: User can delete a page without making any changes - Given I log into the CMS as admin - And there are 0 root pages with navigation label "delete-page.scenario1" - And I create a new page called "delete-page.scenario1" - And there are 1 root pages with navigation label "delete-page.scenario1" - When I delete the current page - Then there are 0 root pages with navigation label "delete-page.scenario1" - - Scenario: A deleted page can't be viewed - And there are 0 root pages with navigation label "delete-page.scenario2" - Given I create a new page called "delete-page.scenario2" - And there is 1 root page with navigation label "delete-page.scenario2" - When I delete the current page - And there are 0 root pages with navigation label "delete-page.scenario2" - And I log out - Then url delete-page-scenario2 does not exist - - Scenario: A deleted URL can be re-used - Given I log into the CMS as admin - And there are 0 root pages with navigation label "delete-page.scenario3" - And I create a new page called "delete-page.scenario3" - And there are 1 root pages with navigation label "delete-page.scenario3" - And I click on the "Metadata" tab - And the "URLSegment" field is "delete-page-scenario3" - And I delete the current page - And there are 0 root pages with navigation label "delete-page.scenario3" - When I create a new page called "delete-page.scenario3" - And I click on the "Metadata" tab - Then the "URLSegment" field is "delete-page-scenario3" - Then delete the current page - - Scenario: A deleted page doesn't appear after re-login - Given there are 0 root pages with navigation label "delete-page.scenario4" - And I create a new page called "delete-page.scenario4" - And there is 1 root page with navigation label "delete-page.scenario4" - And I save the page - And I delete the current page - And there are 0 root pages with navigation label "delete-page.scenario4" - When I log out - And I log into the CMS as admin - Then there are 0 root pages with navigation label "delete-page.scenario4" - diff --git a/tests/salad/login.feature b/tests/salad/login.feature deleted file mode 100644 index 3c7707da..00000000 --- a/tests/salad/login.feature +++ /dev/null @@ -1,39 +0,0 @@ -Feature: Log in - As a CMS user - I want to security log into the CMS - So that I can make changes, knowing that other people can't. - - Background: - Given I visit Security/logout - - Scenario: opening admin asks user log-in - And I visit admin - Then I am sent to Security/login - - Scenario: valid login - When I fill out the login form with user "admin" and password "password" - Then I see "You're logged in as" - - Scenario: no password login - When I fill out the log in form with user "admin" and password "" - Then I see "That doesn't seem to be the right e-mail address or password." - - Scenario: no user login - When I fill out the log in form with user "" and password "password" - Then I see "That doesn't seem to be the right e-mail address or password." - - Scenario: invalid login, getting right 2nd time - Given I visit admin - And I put "admin" in the "Email" field - And I put "wrongpassword" in the "Password" field - And I click the "Log in" button - Then I am sent to Security/login - And I see "That doesn't seem to be the right e-mail address or password." - Given I put "admin" in the "Email" field - And I put "password" in the "Password" field - And I click the "Log in" button - Then I am sent to admin - - Scenario: Re-login - Given I visit Security/logout - Then I log into the CMS as admin diff --git a/tests/salad/logout.feature b/tests/salad/logout.feature deleted file mode 100644 index 04ab5c6f..00000000 --- a/tests/salad/logout.feature +++ /dev/null @@ -1,20 +0,0 @@ -Feature: Log out - As a CMS user - I want to be able to log and be locked out of the CMS - So that I can know other people can't edit my site - - Scenario: Log out from CMS - Given I log into the CMS as admin - And I click the "Log out" link - When I visit admin/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." - When I visit admin/assets/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." - When I visit admin/comments/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." - When I visit admin/reports/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." - When I visit admin/security/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." - When I visit admin/subsites/ - Then I see "Please choose an authentication method and enter your credentials to access the CMS." \ No newline at end of file diff --git a/tests/salad/step_definitions/content.rb b/tests/salad/step_definitions/content.rb deleted file mode 100644 index 721601e7..00000000 --- a/tests/salad/step_definitions/content.rb +++ /dev/null @@ -1,101 +0,0 @@ -## FIXTURE GENERATON - -Given /^the site can be edited by the "([^\"]*)" group$/i do |arg1| - pending -end - -Given /^the "([^\"]*)" page can be edited by the "([^\"]*)" group$/i do |arg1, arg2| - pending -end - -Given /a "(.*)" page called "(.*)" as a child of "(.*)"/i do |type, title, parent| - Given "I click the \"#{parent}\" link" - And 'I wait 2s' - And 'I click the "Create" button' - And "I select \"#{type}\" from \"PageType\"" - And 'I click the "Go" button' - And 'I click the "Create" button' - And "I put \"#{title}\" in the \"Title\" field" - And "I click \"Save\"" -end - -Given /^a top\-level "(.*)" page called "(.*)"$/i do |type,title| - Given "I click the \"Site Content\" link" - And "I create a new page " - And "I click on the \"Main\" tab" - And "I put \"#{title}\" in the \"Title\" field" - And "I click \"Save\"" -end - -## ACTIONS - -Given /load the "(.*)" page/i do |title| - Given "I click the \"#{title}\" link" -end - -Given /I load the "(.*)" root-level page/ do |nav| - @browser.link(:xpath, "//ul[@id='sitetree']/li/ul/li//a[.='#{nav}']").click -end - -Given /I load the root node/ do - Given 'I click the "admin/show/root" link' -end - -Given /create a new page$/i do - Given "I create a new page using template \"Page\"" -end - -Given /create a new page called "(.*)"$/i do |title| - Given "I create a new page using template \"Page\"" - And "I click on the \"Main\" tab" - And "I put \"#{title}\" in the \"Page name\" field" - And "I click the \"Save\" button" -end - -Given /create a new page using template \"(.*)\"/i do |type| - Given 'I load the root node (ajax)' - And 'I click the "Create" button' - And "I select \"#{type}\" from \"PageType\"" - And 'I click the "Go" button (ajax)' - And 'I click the "Create" button' -end - -Given /save the page$/i do - Given 'I click the "Form_EditForm_action_save" button (ajax)' -end - -Given /delete the current page$/i do - Given 'I click the "Delete from the draft site" button' -end - - -## ASSERTIONS - -Given /There (?:are|is) ([0-9]+) root pages? with navigation label "(.*)"/i do |count, nav| - @browser.elements_by_xpath("//ul[@id='sitetree']/li/ul/li//a[.='#{nav}']").count.should == count.to_i -end - -Given /The "(.*)" page does not exist/i do | page| - @browser.link(:title, title).should empty? - #|''get url''|@{root_url}PAGE| - #|''title''|'''is not'''|PAGE| -end - - -## Current Page - -Given /^The (.*) of the current page is "([^\"]*)"$/i do |arg1| - pending -end - -Then /^The current page is editable$/i do - pending -end - -Then /^The current page is read-only$/i do - pending -end - -Then /^The current page is at the top\-level$/i do - pending -end diff --git a/tests/salad/step_definitions/front-end.rb b/tests/salad/step_definitions/front-end.rb deleted file mode 100644 index 93633dff..00000000 --- a/tests/salad/step_definitions/front-end.rb +++ /dev/null @@ -1,21 +0,0 @@ -## -## Step definitions for testing the front-end site -## - - -Given /I go to the draft site/ do - pending - Given 'I click the "viewStageSite" link' -# |''element''|//a[@id="viewStageSite"]|''exists''| -# |''checking timeout''|@{fast_checking_timeout}| -# |''optionally''|''element''|//a[@id="viewStageSite"][@style=""]|''exists''| -# |''checking timeout''|@{checking_timeout}| -# |''click''|viewStageSite| -end - -Given /I close window and go back to clean state/ do -# |''close''| -# |''select initial window''| -# |default frame| -# |''go to root node''| -end diff --git a/tests/salad/step_definitions/general.rb b/tests/salad/step_definitions/general.rb deleted file mode 100644 index 994689bf..00000000 --- a/tests/salad/step_definitions/general.rb +++ /dev/null @@ -1,40 +0,0 @@ -## -## General rules for the SilverStripe CMS as a whole. They mostly have to do with the LeftAndMain -## interface - -# Match general CMS tabs, ModelAdmin needs another system -Given /I click on the "([^\"]*)" tab/ do |tab| - found = nil - links = @salad.browser.links() - links.each {|link| - if /^tab-.+/.match(link.id) then - if link.innerText == tab or /^tab-.*#{tab}(_set)?/.match(link.id) then - found = link - break - end - end - } - if found then - Given "I click the \"#{found.id}\" link" - else - fail("Could not find the \"#{tab}\" tab") - end -end - -Given /I wait for a status message/ do - Watir::Waiter::wait_until { - @browser.p(:id, 'statusMessage').exists? && @browser.p(:id, 'statusMessage').visible? - } -end - -Given /I wait for a success message/ do - # We have to wait until after messages of the form 'Saving...', to get either a good message or - # a bad message - Watir::Waiter::wait_until { - @browser.p(:id, 'statusMessage').exists? && @browser.p(:id, 'statusMessage').visible? && @browser.p(:id, 'statusMessage').class_name != "" - } - - @browser.p(:id, 'statusMessage').class_name.should == 'good' -end - - diff --git a/tests/salad/step_definitions/log-in.rb b/tests/salad/step_definitions/log-in.rb deleted file mode 100644 index 04fc610e..00000000 --- a/tests/salad/step_definitions/log-in.rb +++ /dev/null @@ -1,25 +0,0 @@ - -# Log in -Given /log in as (.*)$/ do |user| - Given "I fill out the log in form with user \"#{user}\" and password \"password\"" - And 'I see "You\'re logged in as"' -end - -Given /log into the CMS as (.*)/ do |user| - Given "I log in as #{user}" - And "I visit admin/" - And "I load the root node" -end - -Given /log out$/ do - Given "I visit Security/logout" -end - -Given /fill out the log(?:\s*)in form with user "(.*)" and password "(.*)"/ do |user, password| - Given 'I visit Security/logout' - And 'I visit Security/login?BackURL=Security/login' - And "I put \"#{user}\" in the \"Email\" field" - And "I put \"#{password}\" in the \"Password\" field" - And "I click the \"Log in\" button" -end - \ No newline at end of file diff --git a/tests/salad/step_definitions/security.rb b/tests/salad/step_definitions/security.rb deleted file mode 100644 index 3278a033..00000000 --- a/tests/salad/step_definitions/security.rb +++ /dev/null @@ -1,23 +0,0 @@ -# Steps definitions for security - -# Fixture instantiation -Given /a "(.*)" group/ do |group| - Given 'I visit admin/security' - And 'I click the "Security Groups" link' - And 'I click the "Create" button' - And "I put \"#{group}\" in the \"Title\" field" - And 'I click the "Save" button' -end - -Given /a user called "(.*)" in the "(.*)" group/ do |user, group| - Given 'I visit admin/security' - And "I click the \"#{group} (global group)\" link" - And "I put \"#{user}\" in the \"FirstName\" field" - And "I put \"#{user}\" in the \"Email\" field" - And "I put \"password\" in the \"SetPassword\" field" - And "I click the \"Add\" button" -end - -Given /^I get a permission denied error$/ do - pending -end