Merge remote-tracking branch 'origin/3.1'

Conflicts:
	code/controllers/ReportAdmin.php
	code/reports/Report.php
This commit is contained in:
Ingo Schommer 2013-09-27 19:07:13 +02:00
commit 32478ab512
53 changed files with 460 additions and 629 deletions

3
_config/config.yml Normal file
View File

@ -0,0 +1,3 @@
LeftAndMain:
extensions:
- LeftAndMainPageIconsExtension

View File

@ -243,14 +243,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
));

View File

@ -444,47 +444,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
* which allows the user to change the page type.
@ -783,13 +742,21 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
if($num) {
return sprintf(
'<a class="cms-panel-link list-children-link" data-pjax-target="ListViewForm,Breadcrumbs" href="%s">%s</a>',
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 '<a class="action-detail" href="' . singleton('CMSPageEditController')->Link('show') . '/' . $item->ID . '">' . $item->TreeTitle . '</a>';
return sprintf(
'<a class="action-detail" href="%s/%d">%s</a>',
singleton('CMSPageEditController')->Link('show'),
(int)$item->ID,
$item->TreeTitle // returns HTML, does its own escaping
);
}
));
@ -814,7 +781,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;
}

View File

@ -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
@ -123,7 +133,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;
}

View File

@ -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');

View File

@ -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");

View File

@ -0,0 +1,55 @@
<?php
/**
* Extension to include custom page icons
*
* @package cms
* @subpackage controller
*/
class LeftAndMainPageIconsExtension extends Extension {
public function init() {
Requirements::customCSS($this->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;
}
}

View File

@ -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,

View File

@ -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);

View File

@ -121,6 +121,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
'Link' => 'Text',
'RelativeLink' => 'Text',
'AbsoluteLink' => 'Text',
'TreeTitle' => 'HTMLText',
);
private static $defaults = array(
@ -310,11 +311,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 +343,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 +415,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 +1613,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);
@ -1849,8 +1859,20 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
$dependentTable->getConfig()->getComponentByType('GridFieldDataColumns')
->setDisplayFields($dependentColumns)
->setFieldFormatting(array(
'Title' => '<a href=\"admin/pages/edit/show/$ID\">$Title</a>',
'AbsoluteLink' => '<a href=\"$value\">$value</a>',
'Title' => function($value, &$item) {
return sprintf(
'<a href=\"admin/pages/edit/show/%d\">%s</a>',
(int)$item->ID,
Convert::raw2xml($item->Title)
);
},
'AbsoluteLink' => function($value, &$item) {
return sprintf(
'<a href=\"%s\">%s</a>',
Convert::raw2xml($value),
Convert::raw2xml($value)
);
}
));
}

View File

@ -209,8 +209,6 @@ bg:
OtherGroupTitle: собственник
ParameterLiveCheckbox: 'Провери реалния сайт'
REPEMPTY: 'Отчетът {title} е празен'
SilverStripeNavigatorLink:
ShareInstructions: 'За да споделиш тая страница, копирай и постави връзката по- долу'
SilverStripeNavigatorLinkl:
CloseLink: Затвори
SiteConfig:

View File

@ -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. <a href="%s">Klikněte sem pro návrat na zveřejněné stránky.</a>'
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 (<em>vyžaduje admin přihlášení, viz výše </em>). 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. <a href="{link}" style="text-align: center;"> Klikněte sem pro smazání instalačních souborů.</a>'
@ -192,17 +209,21 @@ cs:
CODE: 'Chybový kód'
DEFAULTERRORPAGECONTENT: '<p>Omlouváme se, zdá se, že jste se pokoušeli o přístup na stránku, která neexistuje.</p><p>Zkontrolujte prosím pravopis požadované URL adresy, ke které jste se pokoušeli přistoupit a zkuste to znovu.</p>'
DEFAULTERRORPAGETITLE: 'Stránka nenelazena'
DEFAULTSERVERERRORPAGECONTENT: '<p>Promiňte, nastal problém s obsloužením vaší žádosti.</p>'
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: '<p>Můžete tuto stránku vyplnit vlastním obsahem, nebo ji smazat a vytvořit si vlastní stránky. <br /> </p>'
@ -287,9 +310,11 @@ cs:
DEFAULTHOMECONTENT: '<p>Vítejte v CMS SilverStripe! Toto je úvodní stránka. Tuto i jiné stránky můžete změnit <a href="admin/">přihlášením do systému</a>. Můžete také navštívit <a href="http://doc.silverstripe.com">vývojářskou dokumentaci (EN)</a>, nebo <a href="http://doc.silverstripe.com/doku.php?id=tutorials">návody (EN)</a></p>'
DEFAULTHOMETITLE: Úvodní strana
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 &lt;meta name="vlastnínazev" content="vlastní obsah zde" /&gt;'
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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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. <a href="%s">Palataksesi julkiselle sivulle paina tästä</a>.'
DRAFT_SITE_ACCESS_RESTRICTION: 'Voidaksesi katsella luonnoksia tai arkistoitua sisältöä, sinun täytyy kirjautua sisään CMS:n salasanallasi. <a href="%s">Palataksesi julkiselle sivulle, napsauta tästä</a>.'
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. (<em>Vaaditaan pääkäyttäjän kirjautuminen: katso ylempää</em>). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Voit poistaa kirjoitusoikeudet kaikista muista kansioista. <br /> <a href="{link}" style="text-align: center;">Napsauta tästä poistaaksesi kaikki asennustiedostot.</a>'
InstallSecurityWarning: 'Tietoturvan takia, kannattaa poistaa asennustiedostot palvelimelta, mikäli et aio asentaa järjestelmää uudelleen. (<em>Sitä varten vaaditaan kirjautuminen pääkäyttäjänä: katso ylempää</em>). Palvelimella kirjoitusoikeudet tarvitaan vain "assets"-kansioon. Muista kansioista voit poistaa kirjoitusoikeudet. <br /> <a href="{link}" style="text-align: center;">Napsauta tästä poistaaksesi kaikki asennustiedostot.</a>'
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 <a href="{link}">sisällönhallintajärjestelmän</a>'
UnableDeleteInstall: 'Asennustiedostojen automaattinen poistaminen ei onnistunut. Ole hyvä ja poista seuraavat tiedostot manuaalisesti.'
StartEditing: 'Voit aloittaa sisällön muokkauksen avaamalla <a href="{link}">sisällönhallintajärjestelmän ylläpitopuolen</a>'
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: '<p>Valitettavasti sivua johon yritit päästä ei löytynyt.</p><p>Tarkista haluamasi kohteen URLin kirjoitusasu ja yritä uudelleen.</p>'
DEFAULTERRORPAGECONTENT: '<p>Valitettavasti hakemaasi sivua ei ole olemassa.</p><p>Tarkista hakemasi sivun URL-osoitteen kirjoitusasu ja yritä uudelleen.</p>'
DEFAULTERRORPAGETITLE: 'Sivua ei löytynyt'
DEFAULTSERVERERRORPAGECONTENT: '<p>Pahoittelut, mutta pyyntösi aiheutti virheen.</p>'
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 &lt;meta name="haluamasiNimi" content="Oma sisältö tässä" /&gt;'
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'

View File

@ -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é. <a href="%s">Cliquer ici pour revenir au site publié.</a>'
Email: Courrier électronique
@ -153,8 +177,11 @@ fr:
PUBLISHEDSITE: 'Site Publié'
Password: Mot de passe
PostInstallTutorialIntro: 'Ce site est une version simplifiée dun site SilverStripe 3. Pour le développer, consultez {link}.'
StartEditing: 'Vous pouvez commencer à éditer votre site en ouvrant <a href="{link}">le CMS</a>'
UnableDeleteInstall: 'La suppression des fichiers dinstallation 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 nest 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} » nest 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 laffichage 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 dune autre page'
EDITCONTENT: 'Editer le contenu d''une page liée'
HEADER: 'Cette page est virtuelle'
PLURALNAME: 'Pages Virtuelles'
PageTypNotAllowedOnRoot: 'Le type de page dorigine « {type} » nest 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

View File

@ -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

View File

@ -254,7 +254,6 @@ he_IL:
ParameterLiveCheckbox: 'בדיקת האתר החי'
REPEMPTY: 'הדוח {title} ריק.'
SilverStripeNavigatorLink:
ShareInstructions: 'כדי לשתף קישור עמוד זה יש להעתיק ולהדביק את הקישור שלהלן.'
ShareLink: 'שיתוף הקישור'
SilverStripeNavigatorLinkl:
CloseLink: סגירה

View File

@ -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)'

View File

@ -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

View File

@ -214,7 +214,6 @@ ja_JP:
OtherGroupTitle: その他
REPEMPTY: '{title}のレポートは空です'
SilverStripeNavigatorLink:
ShareInstructions: 'このページを共有するには、以下のリンクをコピー&ペーストとします。'
ShareLink: '共有リンク'
SilverStripeNavigatorLinkl:
CloseLink: 閉じる

View File

@ -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

View File

@ -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

View File

@ -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 &lt;meta name="egetNavn" content="Ditt egendefinerte innhold her" /&gt;'
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

View File

@ -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

View File

@ -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

View File

@ -255,8 +255,6 @@ ru:
OtherGroupTitle: Другие
ParameterLiveCheckbox: 'Проверить опубликованный сайт'
REPEMPTY: 'Отчет {title} пуст.'
SilverStripeNavigatorLink:
ShareInstructions: 'Чтобы поделиться ссылкой на эту страницу, скопируйте URL ниже.'
SilverStripeNavigatorLinkl:
CloseLink: Закрыть
SiteConfig:

View File

@ -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. <a href="%s">Pre návrat na publikovaný web kliknite Tu.</a>'
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 (<em> vyžaduje admin prihlásenie, pozri vyššie </em>). 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. <a href="{link}" style="text-align: center;"> Kliknite tu pre odstránenie inštalačných súborov. </a>'
@ -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'

View File

@ -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

View File

@ -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

View File

@ -243,7 +243,6 @@ th:
ParameterLiveCheckbox: 'ดูเว็บไซต์แบบสดๆ'
REPEMPTY: 'รายงาน {title} ยังว่างอยู่'
SilverStripeNavigatorLink:
ShareInstructions: 'หากต้องการแชร์หน้าเว็บนี้, คัดลอกแล้วนำลิงก์ด้านล่างนี้ไปวาง'
ShareLink: 'ลิงก์ที่ต้องการแชร์'
SilverStripeNavigatorLinkl:
CloseLink: ปิด

View File

@ -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

View File

@ -196,7 +196,6 @@ uk:
OtherGroupTitle: Інше
ParameterLiveCheckbox: 'Перевірити робочий сайт'
SilverStripeNavigatorLink:
ShareInstructions: 'Щоб поділитися цією сторінкою, скопіюйте та вставте посилання нижче.'
ShareLink: 'Поділитися посиланням'
SilverStripeNavigatorLinkl:
CloseLink: Закрити

View File

@ -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 "<li>$page->Title: ";

View File

@ -1,4 +1,4 @@
<div id="settings-controller-cms-content" class="cms-content center cms-tabset $BaseCSSClasses" data-layout-type="border" data-pjax-fragment="Content CurrentForm">
<div id="settings-controller-cms-content" class="cms-content center cms-tabset $BaseCSSClasses" data-layout-type="border" data-pjax-fragment="Content" data-ignore-tab-state="true">
<div class="cms-content-header north">
<% with $EditForm %>
@ -7,9 +7,10 @@
<% include CMSBreadcrumbs %>
<% end_with %>
</div>
<% if $Fields.hasTabset %>
<% with $Fields.fieldByName('Root') %>
<div class="cms-content-header-tabs">
<div class="cms-content-header-tabs cms-tabset-nav-primary ss-ui-tabs-nav">
<ul class="cms-tabset-nav-primary">
<% loop $Tabs %>
<li<% if $extraClass %> class="$extraClass"<% end_if %>><a href="#$id">$Title</a></li>
@ -21,10 +22,6 @@
<% end_with %>
</div>
<div class="cms-content-fields center ui-widget-content" data-layout-type="border">
$EditForm
</div>
</div>

View File

@ -1,5 +1,6 @@
<form $FormAttributes>
<form $FormAttributes data-layout-type="border">
<div class="cms-content-fields center">
<% if $Message %>
<p id="{$FormName}_error" class="message $MessageType">$Message</p>
<% else %>
@ -13,7 +14,9 @@
<% end_loop %>
<div class="clear"><!-- --></div>
</fieldset>
</div>
<div class="cms-content-actions cms-content-controls south">
<% if $Actions %>
<div class="Actions">
<% loop $Actions %>
@ -26,4 +29,5 @@
<% end_if %>
</div>
<% end_if %>
</div>
</form>

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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
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 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
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 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
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 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 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 the tree

View File

@ -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(),

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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."

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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