diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php
index 913e7247..fe67be2e 100644
--- a/code/controllers/CMSMain.php
+++ b/code/controllers/CMSMain.php
@@ -871,7 +871,16 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
* @uses LeftAndMainExtension->augmentNewSiteTreeItem()
*/
public function getNewItem($id, $setID = true) {
+ $parentClass = $this->stat('tree_class');
list($dummy, $className, $parentID, $suffix) = array_pad(explode('-',$id),4,null);
+
+ if(!is_subclass_of($className, $parentClass) && strcasecmp($className, $parentClass) != 0) {
+ $response = Security::permissionFailure($this);
+ if (!$response) {
+ $response = $this->response;
+ }
+ throw new SS_HTTPResponse_Exception($response);
+ }
$newItem = new $className();
diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php
index a9d86895..f539ac94 100644
--- a/code/model/SiteTree.php
+++ b/code/model/SiteTree.php
@@ -1643,9 +1643,10 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
return min($votes);
}
+ $segment = Convert::raw2sql($this->URLSegment);
$existingPage = DataObject::get_one(
'SiteTree',
- "\"SiteTree\".\"URLSegment\" = '$this->URLSegment' $IDFilter $parentFilter"
+ "\"SiteTree\".\"URLSegment\" = '$segment' $IDFilter $parentFilter"
);
return !($existingPage);
diff --git a/javascript/lang/ar.js b/javascript/lang/ar.js
new file mode 100644
index 00000000..277a6b22
--- /dev/null
+++ b/javascript/lang/ar.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/ar.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('ar', {
+ "CMSMAIN.ALERTCLASSNAME": "سيتم تحديث نوع الصفحة بعد حفظ الصفحة",
+ "CMSMain.RollbackToVersion": "هل تريد حقاً الرجوع إلى النسخة #%s من هذه الصفحة؟",
+ "CMSMAIN.CANTADDCHILDREN": "لا يمكنك إضافة التوابع إلى العقدة المحددة",
+ "CMSMAIN.PUBLISHINGPAGES": "جاري نشر الصفحات...",
+ "CMSMAIN.SELECTMOREPAGES": "لقد قمت باختيار عدد %s من الصفحات.\n\nهل تريد حقاً تنفيذ هذا الإجراء؟",
+ "CMSMAIN.SAVING": "جاري الحذف...",
+ "CMSMAIN.ERRORDELETINGPAGES": "خطأ أثناء حذف الصفحات",
+ "URLSEGMENT.Edit": "تحرير",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "يجب عليك حفظ إحدى الصفحات قبل إضافة أطفال تحته",
+ "CMSMAIN.PUBLISHING": "جاري النشر...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "يمكن تكوين عناوين URL من أحرف وأرقام وواصلات فقط.",
+ "URLSEGMENT.Cancel": "إلغاء",
+ "Tree.ShowAsList": "أعرض التوابع في شكل قائمة",
+ "CMSMAIN.ERRORREVERTING": "خطأ أثناء العودة إلى المحتوى المباشر",
+ "Tree.ThisPageOnly": "هذه الصفحة فقط",
+ "CMSMain.ConfirmRestoreFromLive": "هل ترغب حقًا في نسخ المحتوى المنشور على مسودة الموقع؟",
+ "CMSMAIN.ERRORPUBLISHING": "خطأ في الصحات المنشورة",
+ "CMSMAIN.ERRORADDINGPAGE": "حدث خطأ في إضافة صفحة",
+ "AssetTableField.REALLYDELETE": "هل تريد حقًا حذف الملفات المعلّمة؟",
+ "CMSMAIN.RESTORING": "جاري الاستعادة...",
+ "AssetTableField.MOVING": "تم نقل %s من الملفات",
+ "Tree.EditPage": "تحرير",
+ "URLSEGMENT.OK": "موافق",
+ "CMSMAIN.ERRORUNFILTER": "شجرة غير مصفّاة",
+ "CMSMAIN.FILTEREDTREE": "شجرة مصفّاة فقط لإظهار الصفحات التي تم تغييرها",
+ "AssetAdmin.ConfirmDelete": "هل تريد حقًا حذف هذا المجلد وكل ما يحتويه من ملفات؟",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "هل تريد حقًا حذف مجلدات %s؟",
+ "CMSMAIN.AddSearchCriteria": "إضافة معيار",
+ "Tree.Duplicate": "تكرار",
+ "Tree.ThisPageAndSubpages": "هذه الصفحة وصفحات فرعية",
+ "WidgetAreaEditor.TOOMANY": "عفواً، لقد وصلت للحد الأقصى لعدد التطبيقات المصغرة في هذه المنطقة",
+ "CMSMAIN.DELETINGPAGES": "جاري حذف الصفحات...",
+ "Folder.Name": "اسم المجلد",
+ "CMSMAIN.REALLYDELETEPAGES": "هل ترغب حقًا في حذف الصفحات %s المعلّمة؟",
+ "CMSMAIN.SELECTONEPAGE": "يرجى تحديد صفحة واحدة على الأقل.",
+ "Tree.AddSubPage": "أضف صفحة جديدة هنا",
+ "CMSMAIN.ERRORFILTERPAGES": "لا يمكن تصنيف المسار الشجري حتى يُظهر الصفحات التي تم تغييرها فقط
%s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/es.js b/javascript/lang/es.js
new file mode 100644
index 00000000..e735550c
--- /dev/null
+++ b/javascript/lang/es.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/es.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('es', {
+ "CMSMAIN.ALERTCLASSNAME": "El tipo de página será actualizado luego de guardar la página",
+ "CMSMain.RollbackToVersion": "¿Realmente quieres volver a la versión #%s de esta página?",
+ "CMSMAIN.CANTADDCHILDREN": "No puedes agregar hijos al nodo seleccionado",
+ "CMSMAIN.PUBLISHINGPAGES": "Publicando páginas...",
+ "CMSMAIN.SELECTMOREPAGES": "Tienes %s páginas seleccionadas\n\n¿Realmente quieres realizar esta acción?",
+ "CMSMAIN.SAVING": "guardando...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Error eliminando páginas",
+ "URLSEGMENT.Edit": "Editar",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Tienes que guardar la página antes de agregarle hijos",
+ "CMSMAIN.PUBLISHING": "Publicando...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URLs sólo pueden ser creadas con letras, dígitos y guiones.",
+ "URLSEGMENT.Cancel": "Cancelar",
+ "Tree.ShowAsList": "Mostrar hijos como lista",
+ "CMSMAIN.ERRORREVERTING": "Error al revertir al contenido real",
+ "Tree.ThisPageOnly": "Sólo en esta página",
+ "CMSMain.ConfirmRestoreFromLive": "¿Realmente quieres copiar el contenido publicado al borrador del sitio?",
+ "CMSMAIN.ERRORPUBLISHING": "Error al publicar páginas",
+ "CMSMAIN.ERRORADDINGPAGE": "Error al agregar página",
+ "AssetTableField.REALLYDELETE": "¿Realmente quieres eliminar los archivos marcados?",
+ "CMSMAIN.RESTORING": "Restaurando...",
+ "AssetTableField.MOVING": "Moviendo %s archivo(s)",
+ "Tree.EditPage": "Editar",
+ "URLSEGMENT.OK": "Ok",
+ "CMSMAIN.ERRORUNFILTER": "Árbol sin filtrar",
+ "CMSMAIN.FILTEREDTREE": "Árbol filtrado para mostrar sólo las páginas cambiadas",
+ "AssetAdmin.ConfirmDelete": "¿Realmente quieres eliminar esta carpeta y todo su contenido?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "¿Realmente quieres eliminar la carpeta %s?",
+ "CMSMAIN.AddSearchCriteria": "Agregar criterio",
+ "Tree.Duplicate": "Duplicar",
+ "Tree.ThisPageAndSubpages": "Esta página y subpáginas",
+ "WidgetAreaEditor.TOOMANY": "Lo sentimos, has llegado al máximo número de widgets en esta área",
+ "CMSMAIN.DELETINGPAGES": "Borrando páginas...",
+ "Folder.Name": "Nombre de la carpeta",
+ "CMSMAIN.REALLYDELETEPAGES": "¿Realmente quieres borrar las %s páginas marcadas?",
+ "CMSMAIN.SELECTONEPAGE": "Por favor, seleccione al menos 1 página.",
+ "Tree.AddSubPage": "Agregar nueva página aquí",
+ "CMSMAIN.ERRORFILTERPAGES": "No se pudo filtrar el árbol para solo mostrar las páginas modificadas
%s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/fi.js b/javascript/lang/fi.js
new file mode 100644
index 00000000..5cfd8ba4
--- /dev/null
+++ b/javascript/lang/fi.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/fi.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('fi', {
+ "CMSMAIN.ALERTCLASSNAME": "Sivutyyppi päivitetään sivun tallennuksen jälkeen",
+ "CMSMain.RollbackToVersion": "Haluatko varmasti palauttaa #%s version tästä sivusta?",
+ "CMSMAIN.CANTADDCHILDREN": "Et voi lisätä alasivuja tähän solmuun",
+ "CMSMAIN.PUBLISHINGPAGES": "Julkaistaan sivuja...",
+ "CMSMAIN.SELECTMOREPAGES": "Sinulla on %s sivua valittuna.\n\nHaluatko varmasti tehdä tämän toiminnon?",
+ "CMSMAIN.SAVING": "tallennetaan...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Tapahtui virhe poistettaessa sivuja",
+ "URLSEGMENT.Edit": "Muokkaa",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Sinun on tallennettava sivu, ennen kuin voi lisätä alasivuja",
+ "CMSMAIN.PUBLISHING": "Julkaistaan...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-osoitteet voivat muodostua vain kirjaimista, numeroista tai yhdysmerkeistä.",
+ "URLSEGMENT.Cancel": "Peruuta",
+ "Tree.ShowAsList": "Näytä alasivut listana",
+ "CMSMAIN.ERRORREVERTING": "Tapahtui virhe paluussa julkaistuun sisältöön",
+ "Tree.ThisPageOnly": "Vain tämä sivu",
+ "CMSMain.ConfirmRestoreFromLive": "Haluatko varmasti kopioida julkaistua sisältöä vedossivustolle?",
+ "CMSMAIN.ERRORPUBLISHING": "Tapahtui virhe julkaistaessa sivuja",
+ "CMSMAIN.ERRORADDINGPAGE": "Virhe lisättäessä sivua",
+ "AssetTableField.REALLYDELETE": "Haluatko varmasti poistaa merkityt tiedostot?",
+ "CMSMAIN.RESTORING": "Palautetaan...",
+ "AssetTableField.MOVING": "Siirretään %s tiedosto(a)",
+ "Tree.EditPage": "Muokkaa",
+ "URLSEGMENT.OK": "OK",
+ "CMSMAIN.ERRORUNFILTER": "Suodattamaton hakemistopuu",
+ "CMSMAIN.FILTEREDTREE": "Suodatettu puu, joka näyttää vain muuttuneet sivut",
+ "AssetAdmin.ConfirmDelete": "Haluatko varmasti poistaa tämän kansion ja kaikki tiedostot sen sisällä?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Haluatko varmasti poistaa %s kansion/kansiota?",
+ "CMSMAIN.AddSearchCriteria": "Lisää kriteeri",
+ "Tree.Duplicate": "Monista",
+ "Tree.ThisPageAndSubpages": "Tämä sivu ja alasivut",
+ "WidgetAreaEditor.TOOMANY": "Pahoittelut, olet lisännyt sallitun maksimi määrän vimpaimia tälle alueelle.",
+ "CMSMAIN.DELETINGPAGES": "Poistetaan sivuja...",
+ "Folder.Name": "Kansion nimi",
+ "CMSMAIN.REALLYDELETEPAGES": "Haluatko varmasti poistaa %s kpl merkittyjä sivuja?",
+ "CMSMAIN.SELECTONEPAGE": "Valitse vähintään 1 sivu.",
+ "Tree.AddSubPage": "Lisää uusi sivu tähän",
+ "CMSMAIN.ERRORFILTERPAGES": "Ei voitu suodattaa hakemistopuuta näyttämään vain muuttuneet sivut
%s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/pl.js b/javascript/lang/pl.js
index 38f1a89b..5866f65d 100644
--- a/javascript/lang/pl.js
+++ b/javascript/lang/pl.js
@@ -16,9 +16,9 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
"CMSMAIN.PUBLISHING": "Publikacja...",
"CMSMAIN.URLSEGMENTVALIDATION": "Adres URL może składać się tylko z liter, cyfr i łączników.",
"URLSEGMENT.Cancel": "Anuluj",
- "Tree.ShowAsList": "Show children as list",
+ "Tree.ShowAsList": "Pokaż dzieci jako listę",
"CMSMAIN.ERRORREVERTING": "Błąd podczas powrotu do opublikowanej strony",
- "Tree.ThisPageOnly": "This page only",
+ "Tree.ThisPageOnly": "Tylko tę stronę",
"CMSMain.ConfirmRestoreFromLive": "Czy na pewno skopiować opublikowaną treść do strony roboczej?",
"CMSMAIN.ERRORPUBLISHING": "Błąd podczas publikacji stron",
"CMSMAIN.ERRORADDINGPAGE": "Błąd przy dodawaniu strony",
@@ -32,8 +32,8 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
"AssetAdmin.ConfirmDelete": "Czy na pewno usunąć ten folder i wszystkie pliki w nim zawarte?",
"AssetAdmin.BATCHACTIONSDELETECONFIRM": "Czy na pewno usunąć %s folderów?",
"CMSMAIN.AddSearchCriteria": "Dodaj kryteria",
- "Tree.Duplicate": "Duplicate",
- "Tree.ThisPageAndSubpages": "This page and subpages",
+ "Tree.Duplicate": "Powiel",
+ "Tree.ThisPageAndSubpages": "Ta strona i podstrony",
"WidgetAreaEditor.TOOMANY": "Przepraszam, ale osiągnięto maksymalną ilość widgetów w tym obszarze",
"CMSMAIN.DELETINGPAGES": "Usuwanie stron...",
"Folder.Name": "Nazwa folderu",
diff --git a/javascript/lang/ro.js b/javascript/lang/ro.js
new file mode 100644
index 00000000..ccd2508c
--- /dev/null
+++ b/javascript/lang/ro.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/ro.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('ro', {
+ "CMSMAIN.ALERTCLASSNAME": "Tipul de pagină va fi actualizat după ce pagina este salvată",
+ "CMSMain.RollbackToVersion": "Doriţi revenirea la versiunea #%s a acestei pagini?",
+ "CMSMAIN.CANTADDCHILDREN": "La nodul selectat nu pot fi adăugaţi fii",
+ "CMSMAIN.PUBLISHINGPAGES": "Public pagini...",
+ "CMSMAIN.SELECTMOREPAGES": "Aţi selectat %s pagini.\n\nConfirmaţi executarea acestei acţiuni?",
+ "CMSMAIN.SAVING": "salvez...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Eroare la ştergerea paginilor",
+ "URLSEGMENT.Edit": "Editare",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Trebuie să salvați o pagină înainte de a adăuga copii sub aceasta",
+ "CMSMAIN.PUBLISHING": "Public...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-uri pot conţine doar litere, cifre și cratime.",
+ "URLSEGMENT.Cancel": "Renunţare",
+ "Tree.ShowAsList": "Afişare fii în format listă",
+ "CMSMAIN.ERRORREVERTING": "Eroare la restaurarea conţinutului live",
+ "Tree.ThisPageOnly": "Doar această pagină",
+ "CMSMain.ConfirmRestoreFromLive": "Doriţi copierea conținutul publicat pe site-ul ciornă (draft)?",
+ "CMSMAIN.ERRORPUBLISHING": "Eroare publicare pagini",
+ "CMSMAIN.ERRORADDINGPAGE": "Eroare la adăugare pagină",
+ "AssetTableField.REALLYDELETE": "Doriţi ştergerea tuturor fișierele marcate?",
+ "CMSMAIN.RESTORING": "Refac...",
+ "AssetTableField.MOVING": "Mutare %s fişier(e)",
+ "Tree.EditPage": "Editare",
+ "URLSEGMENT.OK": "OK",
+ "CMSMAIN.ERRORUNFILTER": "Arbore fără filtru",
+ "CMSMAIN.FILTEREDTREE": "Filtrare arbore pentru a afișa numai paginile modificate",
+ "AssetAdmin.ConfirmDelete": "Doriţi ştergerea acestui dosar precum şi a tuturor fişierelor conţinute?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Doriţi să ștergeţi cele %s dosare?",
+ "CMSMAIN.AddSearchCriteria": "Adăugare criterii",
+ "Tree.Duplicate": "Copie",
+ "Tree.ThisPageAndSubpages": "Această pagină cu subpagini",
+ "WidgetAreaEditor.TOOMANY": "Ne pare rău, ați atins numărul maxim de widget-uri din această arie",
+ "CMSMAIN.DELETINGPAGES": "Şterg pagini...",
+ "Folder.Name": "Nume dosar",
+ "CMSMAIN.REALLYDELETEPAGES": "Doriţi ştergerea celor %s pagini marcate?",
+ "CMSMAIN.SELECTONEPAGE": "Vă rugăm să selectaţi cel puțin 1 pagină.",
+ "Tree.AddSubPage": "Adăugaţi o nouă pagină aici",
+ "CMSMAIN.ERRORFILTERPAGES": "Nu s-a putut filtra structura arborescentă pentru a afișa numai paginile modificate
% s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/ru.js b/javascript/lang/ru.js
new file mode 100644
index 00000000..e5f9b37e
--- /dev/null
+++ b/javascript/lang/ru.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/ru.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('ru', {
+ "CMSMAIN.ALERTCLASSNAME": "Тип страницы будет изменён после её сохранения.",
+ "CMSMain.RollbackToVersion": "Вы действительно хотите восстановить версию #%s этой страницы?",
+ "CMSMAIN.CANTADDCHILDREN": "Невозможно добавить вложенную страницу для этой страницы",
+ "CMSMAIN.PUBLISHINGPAGES": "Публикация страниц...",
+ "CMSMAIN.SELECTMOREPAGES": "Выбрано страниц: %s.\n\nВы действительно хотите выполнить выбранное действие?",
+ "CMSMAIN.SAVING": "сохранение...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Ошибка при удалении страниц",
+ "URLSEGMENT.Edit": "Изменить",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Необходимо сохранить страницу, прежде чем добавлять вложенные страницы",
+ "CMSMAIN.PUBLISHING": "Публикация...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "Адрес может состоять только из букв, цифр и дефисов.",
+ "URLSEGMENT.Cancel": "Отмена",
+ "Tree.ShowAsList": "Показать страницы в виде списка",
+ "CMSMAIN.ERRORREVERTING": "Ошибка при получении содержимого",
+ "Tree.ThisPageOnly": "Только этой страницы",
+ "CMSMain.ConfirmRestoreFromLive": "Вы действительно хотите скопировать опубликованное содержимое на черновой сайт?",
+ "CMSMAIN.ERRORPUBLISHING": "Ошибка при публикации страниц",
+ "CMSMAIN.ERRORADDINGPAGE": "Ошибка при добавлении страницы",
+ "AssetTableField.REALLYDELETE": "Вы действительно хотите удалить отмеченные файлы?",
+ "CMSMAIN.RESTORING": "Восстановление...",
+ "AssetTableField.MOVING": "Перемещение файлов (%s шт.)",
+ "Tree.EditPage": "Редактировать",
+ "URLSEGMENT.OK": "ОК",
+ "CMSMAIN.ERRORUNFILTER": "Неотфильтрованное дерево",
+ "CMSMAIN.FILTEREDTREE": "Отфильтрованное дерево изменённых страниц",
+ "AssetAdmin.ConfirmDelete": "Вы действительно хотите удалить эту директорию и все файлы в ней?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Вы действительно хотите удалить директории (%s шт.)?",
+ "CMSMAIN.AddSearchCriteria": "Добавить условие",
+ "Tree.Duplicate": "Создать копию",
+ "Tree.ThisPageAndSubpages": "Вместе с вложенными страницами",
+ "WidgetAreaEditor.TOOMANY": "Достигнуто максимальное число виджетов в этом разделе.",
+ "CMSMAIN.DELETINGPAGES": "Удаление страниц...",
+ "Folder.Name": "Имя директории",
+ "CMSMAIN.REALLYDELETEPAGES": "Вы действительно хотите удалить выбранные страницы (%s шт.)?",
+ "CMSMAIN.SELECTONEPAGE": "Пожалуйста, выберите хотя бы одну страницу.",
+ "Tree.AddSubPage": "Добавить новую страницу",
+ "CMSMAIN.ERRORFILTERPAGES": "Невозможно отфильтровать дерево для отображения только изменённых страниц
%s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/sr.js b/javascript/lang/sr.js
new file mode 100644
index 00000000..768b222f
--- /dev/null
+++ b/javascript/lang/sr.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/sr.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('sr', {
+ "CMSMAIN.ALERTCLASSNAME": "Тип странице ће бити ажуриран након што сачувате страницу",
+ "CMSMain.RollbackToVersion": "Да ли заиста желите да се вратите на верзију #%s ове странице?",
+ "CMSMAIN.CANTADDCHILDREN": "Не можете додати дете изабраном чвору",
+ "CMSMAIN.PUBLISHINGPAGES": "Објављивање страница...",
+ "CMSMAIN.SELECTMOREPAGES": "Изабрали сте %s страницâ.\n\nДа ли заиста желите да извршите ову акцију?",
+ "CMSMAIN.SAVING": "снима се...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Грешка при брисању страница",
+ "URLSEGMENT.Edit": "Измени",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Морате снимити страницу пре него што јој можете додати подстранице",
+ "CMSMAIN.PUBLISHING": "Објављивање...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-ови могу садржати само слова, бројеве и повлаке.",
+ "URLSEGMENT.Cancel": "Одустани",
+ "Tree.ShowAsList": "Прикажу децу у виду листе",
+ "CMSMAIN.ERRORREVERTING": "Грешка при враћању на живи садржај",
+ "Tree.ThisPageOnly": "Само ова страница",
+ "CMSMain.ConfirmRestoreFromLive": "Да ли заиста желите да копирате објављени садржај у нацрт сајта?",
+ "CMSMAIN.ERRORPUBLISHING": "Грешка при објављивању страница",
+ "CMSMAIN.ERRORADDINGPAGE": "Грешка при додавању странице",
+ "AssetTableField.REALLYDELETE": "Да ли заиста желите да избришете означене датотеке?",
+ "CMSMAIN.RESTORING": "Обнављање...",
+ "AssetTableField.MOVING": "Премештање %s датотеке(а)",
+ "Tree.EditPage": "Измени",
+ "URLSEGMENT.OK": "У реду",
+ "CMSMAIN.ERRORUNFILTER": "Нефилтрирано стабло",
+ "CMSMAIN.FILTEREDTREE": "Филтрирано стабло да приказује само измењене странице",
+ "AssetAdmin.ConfirmDelete": "Да ли заиста желите да избришете ову фасциклу и све датотеке садржане у њој?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Да ли заиста желите да се избришете %s фасцикле?",
+ "CMSMAIN.AddSearchCriteria": "Додај критеријум",
+ "Tree.Duplicate": "Дуплирај/копирај",
+ "Tree.ThisPageAndSubpages": "Ова страница и подстранице",
+ "WidgetAreaEditor.TOOMANY": "Извињавамо се, досегнули сте максималан број виџета у овој области",
+ "CMSMAIN.DELETINGPAGES": "Брисање страница...",
+ "Folder.Name": "Име фасцикле",
+ "CMSMAIN.REALLYDELETEPAGES": "Да ли заиста желите да избришете %s означених страница?",
+ "CMSMAIN.SELECTONEPAGE": "Молимо Вас да изаберете бар 1 страницу.",
+ "Tree.AddSubPage": "Додај нову страницу овде",
+ "CMSMAIN.ERRORFILTERPAGES": "Дрво се не може филтрирати да прикаже само измењене странице
%s"
+});
+}
\ No newline at end of file
diff --git a/javascript/lang/src/ar.js b/javascript/lang/src/ar.js
new file mode 100644
index 00000000..03f8ec6c
--- /dev/null
+++ b/javascript/lang/src/ar.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "سيتم تحديث نوع الصفحة بعد حفظ الصفحة",
+ "CMSMain.RollbackToVersion": "هل تريد حقاً الرجوع إلى النسخة #%s من هذه الصفحة؟",
+ "CMSMAIN.CANTADDCHILDREN": "لا يمكنك إضافة التوابع إلى العقدة المحددة",
+ "CMSMAIN.PUBLISHINGPAGES": "جاري نشر الصفحات...",
+ "CMSMAIN.SELECTMOREPAGES": "لقد قمت باختيار عدد %s من الصفحات.\n\nهل تريد حقاً تنفيذ هذا الإجراء؟",
+ "CMSMAIN.SAVING": "جاري الحذف...",
+ "CMSMAIN.ERRORDELETINGPAGES": "خطأ أثناء حذف الصفحات",
+ "URLSEGMENT.Edit": "تحرير",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "يجب عليك حفظ إحدى الصفحات قبل إضافة أطفال تحته",
+ "CMSMAIN.PUBLISHING": "جاري النشر...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "يمكن تكوين عناوين URL من أحرف وأرقام وواصلات فقط.",
+ "URLSEGMENT.Cancel": "إلغاء",
+ "Tree.ShowAsList": "أعرض التوابع في شكل قائمة",
+ "CMSMAIN.ERRORREVERTING": "خطأ أثناء العودة إلى المحتوى المباشر",
+ "Tree.ThisPageOnly": "هذه الصفحة فقط",
+ "CMSMain.ConfirmRestoreFromLive": "هل ترغب حقًا في نسخ المحتوى المنشور على مسودة الموقع؟",
+ "CMSMAIN.ERRORPUBLISHING": "خطأ في الصحات المنشورة",
+ "CMSMAIN.ERRORADDINGPAGE": "حدث خطأ في إضافة صفحة",
+ "AssetTableField.REALLYDELETE": "هل تريد حقًا حذف الملفات المعلّمة؟",
+ "CMSMAIN.RESTORING": "جاري الاستعادة...",
+ "AssetTableField.MOVING": "تم نقل %s من الملفات",
+ "Tree.EditPage": "تحرير",
+ "URLSEGMENT.OK": "موافق",
+ "CMSMAIN.ERRORUNFILTER": "شجرة غير مصفّاة",
+ "CMSMAIN.FILTEREDTREE": "شجرة مصفّاة فقط لإظهار الصفحات التي تم تغييرها",
+ "AssetAdmin.ConfirmDelete": "هل تريد حقًا حذف هذا المجلد وكل ما يحتويه من ملفات؟",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "هل تريد حقًا حذف مجلدات %s؟",
+ "CMSMAIN.AddSearchCriteria": "إضافة معيار",
+ "Tree.Duplicate": "تكرار",
+ "Tree.ThisPageAndSubpages": "هذه الصفحة وصفحات فرعية",
+ "WidgetAreaEditor.TOOMANY": "عفواً، لقد وصلت للحد الأقصى لعدد التطبيقات المصغرة في هذه المنطقة",
+ "CMSMAIN.DELETINGPAGES": "جاري حذف الصفحات...",
+ "Folder.Name": "اسم المجلد",
+ "CMSMAIN.REALLYDELETEPAGES": "هل ترغب حقًا في حذف الصفحات %s المعلّمة؟",
+ "CMSMAIN.SELECTONEPAGE": "يرجى تحديد صفحة واحدة على الأقل.",
+ "Tree.AddSubPage": "أضف صفحة جديدة هنا",
+ "CMSMAIN.ERRORFILTERPAGES": "لا يمكن تصنيف المسار الشجري حتى يُظهر الصفحات التي تم تغييرها فقط
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/es.js b/javascript/lang/src/es.js
new file mode 100644
index 00000000..44f7988c
--- /dev/null
+++ b/javascript/lang/src/es.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "El tipo de página será actualizado luego de guardar la página",
+ "CMSMain.RollbackToVersion": "¿Realmente quieres volver a la versión #%s de esta página?",
+ "CMSMAIN.CANTADDCHILDREN": "No puedes agregar hijos al nodo seleccionado",
+ "CMSMAIN.PUBLISHINGPAGES": "Publicando páginas...",
+ "CMSMAIN.SELECTMOREPAGES": "Tienes %s páginas seleccionadas\n\n¿Realmente quieres realizar esta acción?",
+ "CMSMAIN.SAVING": "guardando...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Error eliminando páginas",
+ "URLSEGMENT.Edit": "Editar",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Tienes que guardar la página antes de agregarle hijos",
+ "CMSMAIN.PUBLISHING": "Publicando...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URLs sólo pueden ser creadas con letras, dígitos y guiones.",
+ "URLSEGMENT.Cancel": "Cancelar",
+ "Tree.ShowAsList": "Mostrar hijos como lista",
+ "CMSMAIN.ERRORREVERTING": "Error al revertir al contenido real",
+ "Tree.ThisPageOnly": "Sólo en esta página",
+ "CMSMain.ConfirmRestoreFromLive": "¿Realmente quieres copiar el contenido publicado al borrador del sitio?",
+ "CMSMAIN.ERRORPUBLISHING": "Error al publicar páginas",
+ "CMSMAIN.ERRORADDINGPAGE": "Error al agregar página",
+ "AssetTableField.REALLYDELETE": "¿Realmente quieres eliminar los archivos marcados?",
+ "CMSMAIN.RESTORING": "Restaurando...",
+ "AssetTableField.MOVING": "Moviendo %s archivo(s)",
+ "Tree.EditPage": "Editar",
+ "URLSEGMENT.OK": "Ok",
+ "CMSMAIN.ERRORUNFILTER": "Árbol sin filtrar",
+ "CMSMAIN.FILTEREDTREE": "Árbol filtrado para mostrar sólo las páginas cambiadas",
+ "AssetAdmin.ConfirmDelete": "¿Realmente quieres eliminar esta carpeta y todo su contenido?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "¿Realmente quieres eliminar la carpeta %s?",
+ "CMSMAIN.AddSearchCriteria": "Agregar criterio",
+ "Tree.Duplicate": "Duplicar",
+ "Tree.ThisPageAndSubpages": "Esta página y subpáginas",
+ "WidgetAreaEditor.TOOMANY": "Lo sentimos, has llegado al máximo número de widgets en esta área",
+ "CMSMAIN.DELETINGPAGES": "Borrando páginas...",
+ "Folder.Name": "Nombre de la carpeta",
+ "CMSMAIN.REALLYDELETEPAGES": "¿Realmente quieres borrar las %s páginas marcadas?",
+ "CMSMAIN.SELECTONEPAGE": "Por favor, seleccione al menos 1 página.",
+ "Tree.AddSubPage": "Agregar nueva página aquí",
+ "CMSMAIN.ERRORFILTERPAGES": "No se pudo filtrar el árbol para solo mostrar las páginas modificadas
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/fi.js b/javascript/lang/src/fi.js
new file mode 100644
index 00000000..9830b1b4
--- /dev/null
+++ b/javascript/lang/src/fi.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "Sivutyyppi päivitetään sivun tallennuksen jälkeen",
+ "CMSMain.RollbackToVersion": "Haluatko varmasti palauttaa #%s version tästä sivusta?",
+ "CMSMAIN.CANTADDCHILDREN": "Et voi lisätä alasivuja tähän solmuun",
+ "CMSMAIN.PUBLISHINGPAGES": "Julkaistaan sivuja...",
+ "CMSMAIN.SELECTMOREPAGES": "Sinulla on %s sivua valittuna.\n\nHaluatko varmasti tehdä tämän toiminnon?",
+ "CMSMAIN.SAVING": "tallennetaan...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Tapahtui virhe poistettaessa sivuja",
+ "URLSEGMENT.Edit": "Muokkaa",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Sinun on tallennettava sivu, ennen kuin voi lisätä alasivuja",
+ "CMSMAIN.PUBLISHING": "Julkaistaan...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-osoitteet voivat muodostua vain kirjaimista, numeroista tai yhdysmerkeistä.",
+ "URLSEGMENT.Cancel": "Peruuta",
+ "Tree.ShowAsList": "Näytä alasivut listana",
+ "CMSMAIN.ERRORREVERTING": "Tapahtui virhe paluussa julkaistuun sisältöön",
+ "Tree.ThisPageOnly": "Vain tämä sivu",
+ "CMSMain.ConfirmRestoreFromLive": "Haluatko varmasti kopioida julkaistua sisältöä vedossivustolle?",
+ "CMSMAIN.ERRORPUBLISHING": "Tapahtui virhe julkaistaessa sivuja",
+ "CMSMAIN.ERRORADDINGPAGE": "Virhe lisättäessä sivua",
+ "AssetTableField.REALLYDELETE": "Haluatko varmasti poistaa merkityt tiedostot?",
+ "CMSMAIN.RESTORING": "Palautetaan...",
+ "AssetTableField.MOVING": "Siirretään %s tiedosto(a)",
+ "Tree.EditPage": "Muokkaa",
+ "URLSEGMENT.OK": "OK",
+ "CMSMAIN.ERRORUNFILTER": "Suodattamaton hakemistopuu",
+ "CMSMAIN.FILTEREDTREE": "Suodatettu puu, joka näyttää vain muuttuneet sivut",
+ "AssetAdmin.ConfirmDelete": "Haluatko varmasti poistaa tämän kansion ja kaikki tiedostot sen sisällä?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Haluatko varmasti poistaa %s kansion/kansiota?",
+ "CMSMAIN.AddSearchCriteria": "Lisää kriteeri",
+ "Tree.Duplicate": "Monista",
+ "Tree.ThisPageAndSubpages": "Tämä sivu ja alasivut",
+ "WidgetAreaEditor.TOOMANY": "Pahoittelut, olet lisännyt sallitun maksimi määrän vimpaimia tälle alueelle.",
+ "CMSMAIN.DELETINGPAGES": "Poistetaan sivuja...",
+ "Folder.Name": "Kansion nimi",
+ "CMSMAIN.REALLYDELETEPAGES": "Haluatko varmasti poistaa %s kpl merkittyjä sivuja?",
+ "CMSMAIN.SELECTONEPAGE": "Valitse vähintään 1 sivu.",
+ "Tree.AddSubPage": "Lisää uusi sivu tähän",
+ "CMSMAIN.ERRORFILTERPAGES": "Ei voitu suodattaa hakemistopuuta näyttämään vain muuttuneet sivut
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/ro.js b/javascript/lang/src/ro.js
new file mode 100644
index 00000000..196e0fc4
--- /dev/null
+++ b/javascript/lang/src/ro.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "Tipul de pagină va fi actualizat după ce pagina este salvată",
+ "CMSMain.RollbackToVersion": "Doriţi revenirea la versiunea #%s a acestei pagini?",
+ "CMSMAIN.CANTADDCHILDREN": "La nodul selectat nu pot fi adăugaţi fii",
+ "CMSMAIN.PUBLISHINGPAGES": "Public pagini...",
+ "CMSMAIN.SELECTMOREPAGES": "Aţi selectat %s pagini.\n\nConfirmaţi executarea acestei acţiuni?",
+ "CMSMAIN.SAVING": "salvez...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Eroare la ştergerea paginilor",
+ "URLSEGMENT.Edit": "Editare",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Trebuie să salvați o pagină înainte de a adăuga copii sub aceasta",
+ "CMSMAIN.PUBLISHING": "Public...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-uri pot conţine doar litere, cifre și cratime.",
+ "URLSEGMENT.Cancel": "Renunţare",
+ "Tree.ShowAsList": "Afişare fii în format listă",
+ "CMSMAIN.ERRORREVERTING": "Eroare la restaurarea conţinutului live",
+ "Tree.ThisPageOnly": "Doar această pagină",
+ "CMSMain.ConfirmRestoreFromLive": "Doriţi copierea conținutul publicat pe site-ul ciornă (draft)?",
+ "CMSMAIN.ERRORPUBLISHING": "Eroare publicare pagini",
+ "CMSMAIN.ERRORADDINGPAGE": "Eroare la adăugare pagină",
+ "AssetTableField.REALLYDELETE": "Doriţi ştergerea tuturor fișierele marcate?",
+ "CMSMAIN.RESTORING": "Refac...",
+ "AssetTableField.MOVING": "Mutare %s fişier(e)",
+ "Tree.EditPage": "Editare",
+ "URLSEGMENT.OK": "OK",
+ "CMSMAIN.ERRORUNFILTER": "Arbore fără filtru",
+ "CMSMAIN.FILTEREDTREE": "Filtrare arbore pentru a afișa numai paginile modificate",
+ "AssetAdmin.ConfirmDelete": "Doriţi ştergerea acestui dosar precum şi a tuturor fişierelor conţinute?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Doriţi să ștergeţi cele %s dosare?",
+ "CMSMAIN.AddSearchCriteria": "Adăugare criterii",
+ "Tree.Duplicate": "Copie",
+ "Tree.ThisPageAndSubpages": "Această pagină cu subpagini",
+ "WidgetAreaEditor.TOOMANY": "Ne pare rău, ați atins numărul maxim de widget-uri din această arie",
+ "CMSMAIN.DELETINGPAGES": "Şterg pagini...",
+ "Folder.Name": "Nume dosar",
+ "CMSMAIN.REALLYDELETEPAGES": "Doriţi ştergerea celor %s pagini marcate?",
+ "CMSMAIN.SELECTONEPAGE": "Vă rugăm să selectaţi cel puțin 1 pagină.",
+ "Tree.AddSubPage": "Adăugaţi o nouă pagină aici",
+ "CMSMAIN.ERRORFILTERPAGES": "Nu s-a putut filtra structura arborescentă pentru a afișa numai paginile modificate
% s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/ru.js b/javascript/lang/src/ru.js
new file mode 100644
index 00000000..82cc7b69
--- /dev/null
+++ b/javascript/lang/src/ru.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "Тип страницы будет изменён после её сохранения.",
+ "CMSMain.RollbackToVersion": "Вы действительно хотите восстановить версию #%s этой страницы?",
+ "CMSMAIN.CANTADDCHILDREN": "Невозможно добавить вложенную страницу для этой страницы",
+ "CMSMAIN.PUBLISHINGPAGES": "Публикация страниц...",
+ "CMSMAIN.SELECTMOREPAGES": "Выбрано страниц: %s.\n\nВы действительно хотите выполнить выбранное действие?",
+ "CMSMAIN.SAVING": "сохранение...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Ошибка при удалении страниц",
+ "URLSEGMENT.Edit": "Изменить",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Необходимо сохранить страницу, прежде чем добавлять вложенные страницы",
+ "CMSMAIN.PUBLISHING": "Публикация...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "Адрес может состоять только из букв, цифр и дефисов.",
+ "URLSEGMENT.Cancel": "Отмена",
+ "Tree.ShowAsList": "Показать страницы в виде списка",
+ "CMSMAIN.ERRORREVERTING": "Ошибка при получении содержимого",
+ "Tree.ThisPageOnly": "Только этой страницы",
+ "CMSMain.ConfirmRestoreFromLive": "Вы действительно хотите скопировать опубликованное содержимое на черновой сайт?",
+ "CMSMAIN.ERRORPUBLISHING": "Ошибка при публикации страниц",
+ "CMSMAIN.ERRORADDINGPAGE": "Ошибка при добавлении страницы",
+ "AssetTableField.REALLYDELETE": "Вы действительно хотите удалить отмеченные файлы?",
+ "CMSMAIN.RESTORING": "Восстановление...",
+ "AssetTableField.MOVING": "Перемещение файлов (%s шт.)",
+ "Tree.EditPage": "Редактировать",
+ "URLSEGMENT.OK": "ОК",
+ "CMSMAIN.ERRORUNFILTER": "Неотфильтрованное дерево",
+ "CMSMAIN.FILTEREDTREE": "Отфильтрованное дерево изменённых страниц",
+ "AssetAdmin.ConfirmDelete": "Вы действительно хотите удалить эту директорию и все файлы в ней?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Вы действительно хотите удалить директории (%s шт.)?",
+ "CMSMAIN.AddSearchCriteria": "Добавить условие",
+ "Tree.Duplicate": "Создать копию",
+ "Tree.ThisPageAndSubpages": "Вместе с вложенными страницами",
+ "WidgetAreaEditor.TOOMANY": "Достигнуто максимальное число виджетов в этом разделе.",
+ "CMSMAIN.DELETINGPAGES": "Удаление страниц...",
+ "Folder.Name": "Имя директории",
+ "CMSMAIN.REALLYDELETEPAGES": "Вы действительно хотите удалить выбранные страницы (%s шт.)?",
+ "CMSMAIN.SELECTONEPAGE": "Пожалуйста, выберите хотя бы одну страницу.",
+ "Tree.AddSubPage": "Добавить новую страницу",
+ "CMSMAIN.ERRORFILTERPAGES": "Невозможно отфильтровать дерево для отображения только изменённых страниц
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/sr.js b/javascript/lang/src/sr.js
new file mode 100644
index 00000000..1d4ce223
--- /dev/null
+++ b/javascript/lang/src/sr.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "Тип странице ће бити ажуриран након што сачувате страницу",
+ "CMSMain.RollbackToVersion": "Да ли заиста желите да се вратите на верзију #%s ове странице?",
+ "CMSMAIN.CANTADDCHILDREN": "Не можете додати дете изабраном чвору",
+ "CMSMAIN.PUBLISHINGPAGES": "Објављивање страница...",
+ "CMSMAIN.SELECTMOREPAGES": "Изабрали сте %s страницâ.\n\nДа ли заиста желите да извршите ову акцију?",
+ "CMSMAIN.SAVING": "снима се...",
+ "CMSMAIN.ERRORDELETINGPAGES": "Грешка при брисању страница",
+ "URLSEGMENT.Edit": "Измени",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "Морате снимити страницу пре него што јој можете додати подстранице",
+ "CMSMAIN.PUBLISHING": "Објављивање...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL-ови могу садржати само слова, бројеве и повлаке.",
+ "URLSEGMENT.Cancel": "Одустани",
+ "Tree.ShowAsList": "Прикажу децу у виду листе",
+ "CMSMAIN.ERRORREVERTING": "Грешка при враћању на живи садржај",
+ "Tree.ThisPageOnly": "Само ова страница",
+ "CMSMain.ConfirmRestoreFromLive": "Да ли заиста желите да копирате објављени садржај у нацрт сајта?",
+ "CMSMAIN.ERRORPUBLISHING": "Грешка при објављивању страница",
+ "CMSMAIN.ERRORADDINGPAGE": "Грешка при додавању странице",
+ "AssetTableField.REALLYDELETE": "Да ли заиста желите да избришете означене датотеке?",
+ "CMSMAIN.RESTORING": "Обнављање...",
+ "AssetTableField.MOVING": "Премештање %s датотеке(а)",
+ "Tree.EditPage": "Измени",
+ "URLSEGMENT.OK": "У реду",
+ "CMSMAIN.ERRORUNFILTER": "Нефилтрирано стабло",
+ "CMSMAIN.FILTEREDTREE": "Филтрирано стабло да приказује само измењене странице",
+ "AssetAdmin.ConfirmDelete": "Да ли заиста желите да избришете ову фасциклу и све датотеке садржане у њој?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "Да ли заиста желите да се избришете %s фасцикле?",
+ "CMSMAIN.AddSearchCriteria": "Додај критеријум",
+ "Tree.Duplicate": "Дуплирај/копирај",
+ "Tree.ThisPageAndSubpages": "Ова страница и подстранице",
+ "WidgetAreaEditor.TOOMANY": "Извињавамо се, досегнули сте максималан број виџета у овој области",
+ "CMSMAIN.DELETINGPAGES": "Брисање страница...",
+ "Folder.Name": "Име фасцикле",
+ "CMSMAIN.REALLYDELETEPAGES": "Да ли заиста желите да избришете %s означених страница?",
+ "CMSMAIN.SELECTONEPAGE": "Молимо Вас да изаберете бар 1 страницу.",
+ "Tree.AddSubPage": "Додај нову страницу овде",
+ "CMSMAIN.ERRORFILTERPAGES": "Дрво се не може филтрирати да прикаже само измењене странице
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/src/zh.js b/javascript/lang/src/zh.js
new file mode 100644
index 00000000..41c925a4
--- /dev/null
+++ b/javascript/lang/src/zh.js
@@ -0,0 +1,39 @@
+{
+ "CMSMAIN.ALERTCLASSNAME": "将在页面保存后上传页面类型",
+ "CMSMain.RollbackToVersion": "是否确定回滚至该页面的第 #%s 版?",
+ "CMSMAIN.CANTADDCHILDREN": "您无法将儿童添加至所选节点",
+ "CMSMAIN.PUBLISHINGPAGES": "正在发布页面...",
+ "CMSMAIN.SELECTMOREPAGES": "您选择了 %s 个页面。\n\n是否确定执行该操作?",
+ "CMSMAIN.SAVING": "正在保存...",
+ "CMSMAIN.ERRORDELETINGPAGES": "删除页面时出错",
+ "URLSEGMENT.Edit": "编辑",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "将儿童添加在下面之前,您必须保存一个页面",
+ "CMSMAIN.PUBLISHING": "正在发布...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL 仅能由字母、数字和连字符组成。",
+ "URLSEGMENT.Cancel": "取消",
+ "Tree.ShowAsList": "将儿童显示为列表",
+ "CMSMAIN.ERRORREVERTING": "返回至实时内容的错误",
+ "Tree.ThisPageOnly": "仅该页",
+ "CMSMain.ConfirmRestoreFromLive": "是否确定将已发布内容复制到草稿站?",
+ "CMSMAIN.ERRORPUBLISHING": "错误发布页面",
+ "CMSMAIN.ERRORADDINGPAGE": "错误添加页面",
+ "AssetTableField.REALLYDELETE": "是否确定删除标记的文件?",
+ "CMSMAIN.RESTORING": "正在恢复...",
+ "AssetTableField.MOVING": "正在移动 %s 文件",
+ "Tree.EditPage": "编辑",
+ "URLSEGMENT.OK": "确定",
+ "CMSMAIN.ERRORUNFILTER": "未经过滤的树形结构",
+ "CMSMAIN.FILTEREDTREE": "已对树形结构进行过滤,进而可以仅显示更改过的页面",
+ "AssetAdmin.ConfirmDelete": "是否确定删除该文件夹以及所有包含的文件?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "是否确定删除 %s 个文件夹?",
+ "CMSMAIN.AddSearchCriteria": "添加标准",
+ "Tree.Duplicate": "复制",
+ "Tree.ThisPageAndSubpages": "本页和子页面",
+ "WidgetAreaEditor.TOOMANY": "对不起,该区域的小工具数量已经达到最大数量",
+ "CMSMAIN.DELETINGPAGES": "正在删除页面...",
+ "Folder.Name": "文件夹名称",
+ "CMSMAIN.REALLYDELETEPAGES": "是否确定删除 %s 标记的页面?",
+ "CMSMAIN.SELECTONEPAGE": "请至少选择 1 个页面。",
+ "Tree.AddSubPage": "在此添加新页面",
+ "CMSMAIN.ERRORFILTERPAGES": "无法过滤树形结构,以便仅显示已更改页面
%s"
+}
\ No newline at end of file
diff --git a/javascript/lang/zh.js b/javascript/lang/zh.js
new file mode 100644
index 00000000..9c5d5a3c
--- /dev/null
+++ b/javascript/lang/zh.js
@@ -0,0 +1,45 @@
+// This file was generated by GenerateJavaScriptI18nTask from javascript/lang/src/zh.js.
+// See https://github.com/silverstripe/silverstripe-buildtools for details
+if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
+ if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
+} else {
+ ss.i18n.addDictionary('zh', {
+ "CMSMAIN.ALERTCLASSNAME": "将在页面保存后上传页面类型",
+ "CMSMain.RollbackToVersion": "是否确定回滚至该页面的第 #%s 版?",
+ "CMSMAIN.CANTADDCHILDREN": "您无法将儿童添加至所选节点",
+ "CMSMAIN.PUBLISHINGPAGES": "正在发布页面...",
+ "CMSMAIN.SELECTMOREPAGES": "您选择了 %s 个页面。\n\n是否确定执行该操作?",
+ "CMSMAIN.SAVING": "正在保存...",
+ "CMSMAIN.ERRORDELETINGPAGES": "删除页面时出错",
+ "URLSEGMENT.Edit": "编辑",
+ "CMSMAIN.WARNINGSAVEPAGESBEFOREADDING": "将儿童添加在下面之前,您必须保存一个页面",
+ "CMSMAIN.PUBLISHING": "正在发布...",
+ "CMSMAIN.URLSEGMENTVALIDATION": "URL 仅能由字母、数字和连字符组成。",
+ "URLSEGMENT.Cancel": "取消",
+ "Tree.ShowAsList": "将儿童显示为列表",
+ "CMSMAIN.ERRORREVERTING": "返回至实时内容的错误",
+ "Tree.ThisPageOnly": "仅该页",
+ "CMSMain.ConfirmRestoreFromLive": "是否确定将已发布内容复制到草稿站?",
+ "CMSMAIN.ERRORPUBLISHING": "错误发布页面",
+ "CMSMAIN.ERRORADDINGPAGE": "错误添加页面",
+ "AssetTableField.REALLYDELETE": "是否确定删除标记的文件?",
+ "CMSMAIN.RESTORING": "正在恢复...",
+ "AssetTableField.MOVING": "正在移动 %s 文件",
+ "Tree.EditPage": "编辑",
+ "URLSEGMENT.OK": "确定",
+ "CMSMAIN.ERRORUNFILTER": "未经过滤的树形结构",
+ "CMSMAIN.FILTEREDTREE": "已对树形结构进行过滤,进而可以仅显示更改过的页面",
+ "AssetAdmin.ConfirmDelete": "是否确定删除该文件夹以及所有包含的文件?",
+ "AssetAdmin.BATCHACTIONSDELETECONFIRM": "是否确定删除 %s 个文件夹?",
+ "CMSMAIN.AddSearchCriteria": "添加标准",
+ "Tree.Duplicate": "复制",
+ "Tree.ThisPageAndSubpages": "本页和子页面",
+ "WidgetAreaEditor.TOOMANY": "对不起,该区域的小工具数量已经达到最大数量",
+ "CMSMAIN.DELETINGPAGES": "正在删除页面...",
+ "Folder.Name": "文件夹名称",
+ "CMSMAIN.REALLYDELETEPAGES": "是否确定删除 %s 标记的页面?",
+ "CMSMAIN.SELECTONEPAGE": "请至少选择 1 个页面。",
+ "Tree.AddSubPage": "在此添加新页面",
+ "CMSMAIN.ERRORFILTERPAGES": "无法过滤树形结构,以便仅显示已更改页面
%s"
+});
+}
\ No newline at end of file
diff --git a/lang/fi.yml b/lang/fi.yml
index 63fa44fb..576ede5b 100644
--- a/lang/fi.yml
+++ b/lang/fi.yml
@@ -251,7 +251,7 @@ fi:
VIRTUALPAGEWARNING: 'Ole hyvä ja valitse linkitetty sivu ja tallenna se ensin, jotta tämän sivun julkaiseminen olisi mahdollista'
VIRTUALPAGEWARNINGSETTINGS: 'Ole hyvä ja valitse linkitetty sivu sisältö kentästä, jotta julkaisu on mahdollista'
SearchForm:
- GO: Siirry
+ GO: Suorita
SEARCH: Haku
SearchResults: 'Hakutulokset'
SideReport:
diff --git a/lang/ru.yml b/lang/ru.yml
index 652602ea..fb87a053 100644
--- a/lang/ru.yml
+++ b/lang/ru.yml
@@ -5,6 +5,7 @@ ru:
AppCategoryArchive: Архив
AppCategoryAudio: Аудио
AppCategoryDocument: Документ
+ AppCategoryFlash: Flash
AppCategoryImage: Изображение
AppCategoryVideo: Видео
BackToFolder: 'Вернуться к папке'
@@ -44,6 +45,7 @@ ru:
ColumnDateLastModified: 'Дата последнего изменения'
ColumnDateLastPublished: 'Дата последней публикации'
ColumnProblemType: 'Вид проблемы'
+ ColumnURL: URL
HasBrokenFile: 'содержит поврежденный файл'
HasBrokenLink: 'содержит нерабочую ссылку'
HasBrokenLinkAndFile: 'содержит нерабочую ссылку и поврежденный файл'
@@ -81,6 +83,7 @@ ru:
DESCREMOVED: 'и {count} страниц нижнего уровня'
DUPLICATED: 'Копия ''{title}'' создана'
DUPLICATEDWITHCHILDREN: 'Копия ''{title}'' и дочерних элементов создана'
+ EMAIL: Email
EditTree: 'Редактировать дерево'
ListFiltered: 'Отфильтрованный список.'
NEWPAGE: 'Новая {pagetype}'
@@ -158,9 +161,11 @@ ru:
ContentController:
ARCHIVEDSITE: 'Версия для просмотра'
ARCHIVEDSITEFROM: 'Архив сайта от'
+ CMS: CMS
DRAFT: Черновик
DRAFTSITE: 'Черновой сайт'
DRAFT_SITE_ACCESS_RESTRICTION: 'Для просмотра чернового или архивного содержимого вам необходимо войти в систему со своим именем пользователя и паролем. Щелкните здесь, чтобы вернуться на опубликованный сайт.'
+ Email: Email
INSTALL_SUCCESS: 'Инсталляция прошла успешно!'
InstallFilesDeleted: 'Инсталляционные файлы были успешно удалены.'
InstallSecurityWarning: 'Если вы не планируете в ближайшее время переустанавливать CMS, по соображениям безопасности рекомендуется удалить инсталляционные файлы (для этого требуются права доступа администратора ‒ см. выше). Теперь веб-серверу необходим доступ для записи только к папке "assets"; все остальные папки можно защитить от записи. Щелкните здесь, чтобы удалить инсталляционные файлы.'
@@ -313,6 +318,7 @@ ru:
DEPENDENT_NOTE: 'С этой страницей связаны следующие зависимые страницы (сюда относятся виртуальные страницы, страницы перенаправления и страницы со ссылками на контент).'
DESCRIPTION: 'Обычная страница'
DependtPageColumnLinkType: 'Тип ссылки'
+ DependtPageColumnURL: URL
EDITANYONE: 'Все, у кого есть доступ к системе (CMS)'
EDITHEADER: 'Кто может редактировать эту страницу?'
EDITONLYTHESE: 'Только эти пользователи (выберите из списка)'
diff --git a/tests/controller/CMSMainTest.php b/tests/controller/CMSMainTest.php
index c2acf523..644cc858 100644
--- a/tests/controller/CMSMainTest.php
+++ b/tests/controller/CMSMainTest.php
@@ -328,6 +328,27 @@ class CMSMainTest extends FunctionalTest {
$this->session()->inst_set('loggedInAs', null);
}
+
+ public function testGetNewItem() {
+ $controller = new CMSMain();
+ $id = 'new-Page-0';
+
+ // Test success
+ $page = $controller->getNewItem($id, false);
+
+ $this->assertEquals($page->Title, 'New Page');
+ $this->assertNotEquals($page->Sort, 0);
+ $this->assertInstanceOf('Page', $page);
+
+ // Test failure
+ try {
+ $id = 'new-Member-0';
+ $member = $controller->getNewItem($id, false);
+ $this->fail('Should not be able to create a Member object');
+ } catch(SS_HTTPResponse_Exception $e) {
+ $this->assertEquals($controller->getResponse()->getStatusCode(), 302);
+ }
+ }
}
class CMSMainTest_ClassA extends Page implements TestOnly {
@@ -344,4 +365,4 @@ class CMSMainTest_NotRoot extends Page implements TestOnly {
class CMSMainTest_HiddenClass extends Page implements TestOnly, HiddenClass {
-}
\ No newline at end of file
+}