Merge branch '2.4' into 2

This commit is contained in:
Robbie Averill 2017-09-14 16:53:42 +12:00
commit 9a5690ca3e
15 changed files with 469 additions and 62 deletions

View File

@ -2,6 +2,8 @@ language: php
sudo: false sudo: false
dist: precise
addons: addons:
apt: apt:
packages: packages:

View File

@ -1,8 +0,0 @@
[main]
host = https://www.transifex.com
[silverstripe-blog.master-v2]
file_filter = lang/<lang>.yml
source_file = lang/en.yml
source_lang = en
type = YML

View File

@ -12,7 +12,7 @@ class BlogMemberExtension extends DataExtension
* @var array * @var array
*/ */
private static $db = array( private static $db = array(
'URLSegment' => 'Varchar', 'URLSegment' => 'Varchar(255)',
'BlogProfileSummary' => 'Text', 'BlogProfileSummary' => 'Text',
); );

View File

@ -708,8 +708,10 @@ class Blog_Controller extends Page_Controller
$urlSegment = $this->request->param('URLSegment'); $urlSegment = $this->request->param('URLSegment');
if ($urlSegment) { if ($urlSegment) {
$filter = URLSegmentFilter::create();
return Member::get() return Member::get()
->filter('URLSegment', $urlSegment) ->filter('URLSegment', $filter->filter($urlSegment))
->first(); ->first();
} }
@ -860,8 +862,10 @@ class Blog_Controller extends Page_Controller
$dataRecord = $this->dataRecord; $dataRecord = $this->dataRecord;
$tag = $this->request->param('Tag'); $tag = $this->request->param('Tag');
if ($tag) { if ($tag) {
$filter = URLSegmentFilter::create();
return $dataRecord->Tags() return $dataRecord->Tags()
->filter('URLSegment', array($tag, rawurlencode($tag))) ->filter('URLSegment', array($tag, $filter->filter($tag)))
->first(); ->first();
} }
return null; return null;
@ -904,8 +908,10 @@ class Blog_Controller extends Page_Controller
$dataRecord = $this->dataRecord; $dataRecord = $this->dataRecord;
$category = $this->request->param('Category'); $category = $this->request->param('Category');
if ($category) { if ($category) {
$filter = URLSegmentFilter::create();
return $dataRecord->Categories() return $dataRecord->Categories()
->filter('URLSegment', array($category, rawurlencode($category))) ->filter('URLSegment', array($category, $filter->filter($category)))
->first(); ->first();
} }
return null; return null;
@ -1098,7 +1104,7 @@ class Blog_Controller extends Page_Controller
{ {
return $this->Link('rss'); return $this->Link('rss');
} }
/** /**
* Displays an RSS feed of the given blog posts. * Displays an RSS feed of the given blog posts.
* *
@ -1115,11 +1121,11 @@ class Blog_Controller extends Page_Controller
return $rss->outputToBrowser(); return $rss->outputToBrowser();
} }
/** /**
* Returns true if the $Rss sub-action for categories/tags has been set to "rss" * Returns true if the $Rss sub-action for categories/tags has been set to "rss"
*/ */
private function isRSS() private function isRSS()
{ {
$rss = $this->request->param('Rss'); $rss = $this->request->param('Rss');
if(is_string($rss) && strcasecmp($rss, "rss") == 0) { if(is_string($rss) && strcasecmp($rss, "rss") == 0) {

View File

@ -693,6 +693,9 @@ class BlogPost extends Page
*/ */
public function getDate() public function getDate()
{ {
if ($this->hasDatabaseField('Date')) {
return $this->getField('Date');
}
return !empty($this->PublishDate) ? $this->PublishDate : null; return !empty($this->PublishDate) ? $this->PublishDate : null;
} }

View File

@ -84,52 +84,47 @@ class BlogArchiveWidget extends Widget
/** /**
* Returns a list of months where blog posts are present. * Returns a list of months where blog posts are present.
* *
* @return DataList * @return ArrayList
*/ */
public function getArchive() public function getArchive()
{ {
$query = $this->Blog()->getBlogPosts()->dataQuery(); $format = ($this->ArchiveType == 'Yearly') ? '%Y' : '%Y-%m';
$publishDate = DB::get_conn()->formattedDatetimeClause('"PublishDate"', $format);
$fields = array(
'PublishDate' => $publishDate,
'Total' => "Count('PublishDate')"
);
if ($this->ArchiveType == 'Yearly') { $stage = Versioned::current_stage();
$query->groupBy('DATE_FORMAT("PublishDate", \'%Y\')'); $suffix = ($stage == 'Stage') ? '' : "_{$stage}";
} else { $query = SQLSelect::create($fields, "BlogPost{$suffix}")
$query->groupBy('DATE_FORMAT("PublishDate", \'%Y-%M\')'); ->addGroupBy($publishDate)
} ->addOrderBy('PublishDate Desc')
->addWhere(array('PublishDate < ?' => SS_Datetime::now()->Format('Y-m-d')));
$posts = $this->Blog()->getBlogPosts()->setDataQuery($query); $posts = $query->execute();
$result = new ArrayList();
while ($next = $posts->next()) {
$date = Date::create();
$date->setValue(strtotime($next['PublishDate']));
$year = $date->Format('Y');
if ($this->NumberToDisplay > 0) { if ($this->ArchiveType == 'Yearly') {
$posts = $posts->limit($this->NumberToDisplay); $month = null;
} $title = $year;
} else {
$archive = new ArrayList(); $month = $date->Format('m');
$title = $date->FormatI18N('%B %Y');
if ($posts->count() > 0) {
foreach ($posts as $post) {
/**
* @var BlogPost $post
*/
$date = Date::create();
$date->setValue($post->PublishDate);
if ($this->ArchiveType == 'Yearly') {
$year = $date->Format("Y");
$month = null;
$title = $year;
} else {
$year = $date->Format("Y");
$month = $date->Format("m");
$title = $date->FormatI18N("%B %Y");
}
$archive->push(new ArrayData(array(
'Title' => $title,
'Link' => Controller::join_links($this->Blog()->Link('archive'), $year, $month)
)));
} }
$result->push(new ArrayData(array(
'Title' => $title,
'Link' => Controller::join_links($this->Blog()->Link('archive'), $year, $month)
)));
} }
return $archive; $this->extend('updateGetArchive', $result);
return $result;
} }
} }

96
lang/es.yml Normal file
View File

@ -0,0 +1,96 @@
es:
Blog:
AND: 'y'
Archive: Archivo
By: por
CONTRIBUTOR: Contribuidor
Categories: Categorías
Category: Categoría
Comments: Comentarios
DESCRIPTION: 'Añade un blog a tu sitio web.'
EDITOR: Editor
FILTERDESCRIPTION_AUTHOR: 'Por {author}'
FILTERDESCRIPTION_CATEGORY: 'En la categoría {category}'
FILTERDESCRIPTION_DATE: 'En {date}'
FILTERDESCRIPTION_PAGE: 'Página {page}'
FILTERDESCRIPTION_TAG: 'Etiquetado con {tag}'
LumberjackTitle: 'Publicaciones del Blog'
NoPosts: 'No hay publicaciones'
PERMISSIONS_CATEGORY: 'Permisos del Blog'
PERMISSION_MANAGE_USERS_DESCRIPTION: 'Administrar usuarios para blogs individuales'
PLURALNAME: 'Página base'
Posted: Publicado
PostedIn: 'Publicado en'
PostsPerPage: 'Publicaciones por Página'
ReadMoreAbout: 'Leer más sobre ''{title}''...'
SINGULARNAME: Blog
Tag: Etiqueta
Tagged: Etiquetado
Tags: Etiquetas
WRITER: Escritor
BlogArchiveWidget:
ArchiveType: 'Tipo de Archivo'
Blog: Blog
NumberToDisplay: 'Nº a Mostrar'
BlogCategoriesWidget:
Blog: Blog
Direction:
Label: Dirección
Limit:
Label: Límite
Sort:
Label: Ordenar
BlogCategory:
Duplicate: 'Ya existe una categoría del blog con el mismo nombre'
PLURALNAME: 'Categorías del Blog'
SINGULARNAME: 'Categoría del Blog'
Title: Título
BlogEntry:
DESCRIPTION: 'Página de contenido genérico'
PLURALNAME: 'Página base'
SINGULARNAME: 'Entrada del Blog'
BlogHolder:
DESCRIPTION: 'Página de contenido genérico'
PLURALNAME: 'Página base'
SINGULARNAME: 'Contenedor de Blog'
BlogPost:
AUTHOR: Autor
AdditionalCredits: 'Créditos adicionales'
Authors: Autores
CUSTOMSUMMARY: 'Añadir un Resumen Personalizado'
Categories: Categorías
DESCRIPTION: 'Página de contenido genérico'
FeaturedImage: 'Imagen Destacada'
PLURALNAME: 'Página base'
PageTitleLabel: 'Título de la Publicación'
PublishDate: 'Fecha de Publicación'
PublishDate_Description: 'Se establecerá a "ahora" si se publica sin un valor.'
SINGULARNAME: 'Publicación del Blog'
SUMMARY_DESCRIPTION: 'Si no se especifica un resumen se usarán las 30 primeras palabras.'
Tags: Etiquetas
BlogRecentPostsWidget:
Blog: Blog
NumberOfPosts: 'Número de entradas'
BlogTag:
PLURALNAME: 'Etiquetas del Blog'
SINGULARNAME: Blog
Title: Título
BlogTagsCloudWidget:
Blog: Blog
BlogTagsWidget:
Blog: Blog
Direction:
Label: Dirección
Limit:
Label: Límite
Sort:
Label: Ordenar
BlogTree:
DESCRIPTION: 'Página de contenido genérico'
PLURALNAME: 'Página base'
SINGULARNAME: 'Árbol del Blog'
GridFieldAddByDBField:
Add: 'Añadir {name}'
TagCloudWidget:
PLURALNAME: 'Nube de Etiquetas de Widgets'
SINGULARNAME: 'Nube de Etiquetas de Widget'

View File

@ -3,6 +3,7 @@ fa_IR:
PLURALNAME: 'ویجت‌های بایگانی' PLURALNAME: 'ویجت‌های بایگانی'
SINGULARNAME: 'ویجت بایگانی' SINGULARNAME: 'ویجت بایگانی'
Blog: Blog:
AND: و
Archive: بایگانی Archive: بایگانی
By: توسط By: توسط
CONTRIBUTOR: 'مشارکت‌کننده' CONTRIBUTOR: 'مشارکت‌کننده'
@ -41,8 +42,10 @@ fa_IR:
BlogCategoriesWidget: BlogCategoriesWidget:
Blog: وبلاگ Blog: وبلاگ
Direction: Direction:
Description: 'تغییر جهت ترتیب مجموعه‌های نمایش داده‌‌شده توسط این ویجت'
Label: جهت Label: جهت
Limit: Limit:
Description: 'محدود کردن تعداد مجموعه‌های نمایش داده شده توسط این ویجت (روی 0 بگذارید تا همه به نمایش دربیایند)'
Label: 'محدود کردن' Label: 'محدود کردن'
PLURALNAME: 'ویجت‌های مجموعه‌های بلاگ' PLURALNAME: 'ویجت‌های مجموعه‌های بلاگ'
SINGULARNAME: 'ویجت‌ مجموعه‌های بلاگ' SINGULARNAME: 'ویجت‌ مجموعه‌های بلاگ'
@ -50,6 +53,7 @@ fa_IR:
Description: 'تغییر ترتیب مجموعه‌های نمایش داده‌‌شده توسط این ویجت' Description: 'تغییر ترتیب مجموعه‌های نمایش داده‌‌شده توسط این ویجت'
Label: 'مرتب‌سازی' Label: 'مرتب‌سازی'
BlogCategory: BlogCategory:
Duplicate: 'یک مجموعه وبلاگ با این نام از قبل موجود است'
PLURALNAME: 'مجموعه‌های وبلاگ' PLURALNAME: 'مجموعه‌های وبلاگ'
SINGULARNAME: 'مجموعه وبلاگ' SINGULARNAME: 'مجموعه وبلاگ'
Title: عنوان Title: عنوان
@ -64,15 +68,18 @@ fa_IR:
BlogPost: BlogPost:
AUTHOR: نگارنده AUTHOR: نگارنده
AdditionalCredits: 'دیگر مشارکت‌کنندگان' AdditionalCredits: 'دیگر مشارکت‌کنندگان'
AdditionalCredits_Description: 'اگر برخی از نگارندگان این ارسال دسترسی به سی‌ام‌اس ندارند، نام آن‌ها را اینجا وارد نمایید. می‌توانید نام‌ها را با علامت ویرگول از هم جدا کنید.'
Authors: نگارندگان Authors: نگارندگان
CUSTOMSUMMARY: 'افزودن یک خلاصه دلخواه' CUSTOMSUMMARY: 'افزودن یک خلاصه دلخواه'
Categories: 'مجموعه‌ها' Categories: 'مجموعه‌ها'
DESCRIPTION: 'صفحه محتوای عمومی' DESCRIPTION: 'صفحه محتوای عمومی'
FeaturedImage: 'تصویر برجسته'
PLURALNAME: 'صفحات پایه‌ای' PLURALNAME: 'صفحات پایه‌ای'
PageTitleLabel: 'عنوان ارسال' PageTitleLabel: 'عنوان ارسال'
PublishDate: 'تاریخ انتشار' PublishDate: 'تاریخ انتشار'
PublishDate_Description: 'اگر بدون داده‌ای منتشر شود به "اکنون" تنظیم خواهد شد.' PublishDate_Description: 'اگر بدون داده‌ای منتشر شود به "اکنون" تنظیم خواهد شد.'
SINGULARNAME: 'ارسال وبلاگ' SINGULARNAME: 'ارسال وبلاگ'
SUMMARY_DESCRIPTION: 'اگر هیچ خلاصه‌ای معرفی نشود ۳۰ کلمه‌ی آغازین استفاده خواهد شد.'
Tags: تگ‌ها Tags: تگ‌ها
BlogRecentPostsWidget: BlogRecentPostsWidget:
Blog: وبلاگ Blog: وبلاگ
@ -80,12 +87,18 @@ fa_IR:
PLURALNAME: 'ویجت‌های جدیدترین ارسال‌های بلاگ' PLURALNAME: 'ویجت‌های جدیدترین ارسال‌های بلاگ'
SINGULARNAME: 'ویجت جدیدترین ارسال‌های بلاگ' SINGULARNAME: 'ویجت جدیدترین ارسال‌های بلاگ'
BlogTag: BlogTag:
Duplicate: 'یک تگ وبلاگ با این نام از قبل موجود است'
PLURALNAME: 'تگ‌های وبلاگ' PLURALNAME: 'تگ‌های وبلاگ'
SINGULARNAME: 'تگ وبلاگ' SINGULARNAME: 'تگ وبلاگ'
Title: عنوان Title: عنوان
BlogTagsCloudWidget:
Blog: وبلاگ
PLURALNAME: 'ویجت ابر تگ‌های وبلاگ'
SINGULARNAME: 'ویجت‌های ابر تگ‌های وبلاگ'
BlogTagsWidget: BlogTagsWidget:
Blog: وبلاگ Blog: وبلاگ
Direction: Direction:
Description: 'تغییر جهت ترتیب تگ‌های نمایش داده‌‌شده توسط این ویجت'
Label: جهت Label: جهت
Limit: Limit:
Description: 'محدود کردن تعداد تگ‌های نمایش داده شده توسط این ویجت (روی 0 بگذارید تا همه به نمایش دربیایند)' Description: 'محدود کردن تعداد تگ‌های نمایش داده شده توسط این ویجت (روی 0 بگذارید تا همه به نمایش دربیایند)'
@ -93,6 +106,7 @@ fa_IR:
PLURALNAME: 'ویجت‌های تگ‌های وبلاگ' PLURALNAME: 'ویجت‌های تگ‌های وبلاگ'
SINGULARNAME: 'ویجت تگ‌های وبلاگ' SINGULARNAME: 'ویجت تگ‌های وبلاگ'
Sort: Sort:
Description: 'تغییر ترتیب تگ‌های نمایش داده‌‌شده توسط این ویجت'
Label: 'مرتب‌سازی' Label: 'مرتب‌سازی'
BlogTree: BlogTree:
DESCRIPTION: 'صفحه محتوای عمومی' DESCRIPTION: 'صفحه محتوای عمومی'
@ -100,7 +114,12 @@ fa_IR:
SINGULARNAME: 'نمایش درختی وبلاگ' SINGULARNAME: 'نمایش درختی وبلاگ'
GridFieldAddByDBField: GridFieldAddByDBField:
Add: 'افزودن {name}' Add: 'افزودن {name}'
AddFail: 'ناتوان از ذخیره‌سازی {class} در بانک داده'
PermissionFail: 'شما دسترسی لازم جهت ایجاد یک {class} را ندارید.' PermissionFail: 'شما دسترسی لازم جهت ایجاد یک {class} را ندارید.'
GridFieldBlogPostState:
Draft: '<i class="btn-icon gridfield-icon btn-icon-pencil"></i> ذخیره‌شده به عنوان پیش‌نویس در {date}'
Published: '<i class="btn-icon gridfield-icon btn-icon-accept"></i> انتشار یافته در {date}'
Timer: '<i class="gridfield-icon blog-icon-timer"></i> انتشار یافته در {date}'
TagCloudWidget: TagCloudWidget:
PLURALNAME: 'ویجت‌های ابر تگ' PLURALNAME: 'ویجت‌های ابر تگ'
SINGULARNAME: 'ویجت ابر تگ' SINGULARNAME: 'ویجت ابر تگ'

View File

@ -3,6 +3,7 @@ fi:
PLURALNAME: Arkistovimpaimet PLURALNAME: Arkistovimpaimet
SINGULARNAME: Arkistovimpain SINGULARNAME: Arkistovimpain
Blog: Blog:
AND: ja
Archive: Arkisto Archive: Arkisto
By: kirjoittanut By: kirjoittanut
CONTRIBUTOR: Avustaja CONTRIBUTOR: Avustaja

View File

@ -3,6 +3,7 @@ nl:
PLURALNAME: Archief-widgets PLURALNAME: Archief-widgets
SINGULARNAME: Archief-widget SINGULARNAME: Archief-widget
Blog: Blog:
AND: en
Archive: Archief Archive: Archief
By: door By: door
CONTRIBUTOR: Co-auteur CONTRIBUTOR: Co-auteur
@ -21,7 +22,7 @@ nl:
NoUnfeaturedPosts: 'Er zijn geen niet aanbevolen artikelen' NoUnfeaturedPosts: 'Er zijn geen niet aanbevolen artikelen'
PERMISSIONS_CATEGORY: 'Blog rechten' PERMISSIONS_CATEGORY: 'Blog rechten'
PERMISSION_MANAGE_USERS_DESCRIPTION: 'Beheer gebruikers voor individuele blogs' PERMISSION_MANAGE_USERS_DESCRIPTION: 'Beheer gebruikers voor individuele blogs'
PERMISSION_MANAGE_USERS_HELP: 'Laat toewijzing van Redacteurs, Auteurs en Co-auteurs toe.' PERMISSION_MANAGE_USERS_HELP: 'Laat toewijzing toe van Redacteurs, Auteurs en Co-auteurs.'
PLURALNAME: Blogs PLURALNAME: Blogs
Posted: Geplaatst Posted: Geplaatst
PostedIn: 'Geplaatst in' PostedIn: 'Geplaatst in'
@ -68,7 +69,7 @@ nl:
AUTHOR: Auteur AUTHOR: Auteur
AdditionalCredits: Dankbetuigingen AdditionalCredits: Dankbetuigingen
AdditionalCredits_Description: 'Indien (enkele) auteurs geen toegang hebben tot dit CMS, kunnen ze hier toegevoegd worden. Scheid namen door middel van komma''s' AdditionalCredits_Description: 'Indien (enkele) auteurs geen toegang hebben tot dit CMS, kunnen ze hier toegevoegd worden. Scheid namen door middel van komma''s'
Authors: Auterus Authors: Auteurs
CUSTOMSUMMARY: 'Voeg een eigen samenvatting toe' CUSTOMSUMMARY: 'Voeg een eigen samenvatting toe'
Categories: Categorieën Categories: Categorieën
DESCRIPTION: 'Blog Artikel' DESCRIPTION: 'Blog Artikel'

View File

@ -1,20 +1,121 @@
sk: sk:
ArchiveWidget:
PLURALNAME: 'Widgety archív'
SINGULARNAME: 'Widget archív'
Blog: Blog:
FILTERDESCRIPTION_PAGE: 'Strana {page}' AND: a
PLURALNAME: 'Základné stránky' Archive: Archív
By: ' od'
CONTRIBUTOR: Prispievateľ
Categories: Kategórie
Category: Kategória
Comments: Komentáre
DESCRIPTION: 'Pridá blog na stránku.'
EDITOR: Vydavateľ
FILTERDESCRIPTION_AUTHOR: '{author}'
FILTERDESCRIPTION_CATEGORY: 'V kategórii {category}'
FILTERDESCRIPTION_DATE: '{date}'
FILTERDESCRIPTION_PAGE: 'Stránka {page}'
FILTERDESCRIPTION_TAG: 'Štítkovaný {tag}'
LumberjackTitle: 'Príspevky v blogu'
NoPosts: 'Žiadne príspevky'
PERMISSIONS_CATEGORY: 'Práva blogu'
PERMISSION_MANAGE_USERS_DESCRIPTION: 'Správa užívateľov pre jednotlivé blogy'
PERMISSION_MANAGE_USERS_HELP: 'Umožniť priradenie vydavateľov, spisovateľov alebo prispievateľov do blogu.'
PLURALNAME: Blogy
Posted: Uverejnené
PostedIn: 'Uverejnené v'
PostsPerPage: 'Príspevky na stránke'
ReadMoreAbout: 'Čítať viac o ''{title}''...'
SINGULARNAME: Blog
Tag: 'Štítok'
Tagged: Oštítkované
Tags: 'Štítky'
WRITER: Spisovateľ
BlogArchiveWidget:
ArchiveType: 'Typ archívu'
Blog: Blog
NumberToDisplay: 'Počet na zobrazenie'
PLURALNAME: 'Widgety archívu blogu'
SINGULARNAME: 'Widget archívu blogu'
BlogCategoriesWidget:
Blog: Blog
Direction:
Description: 'Zmení smer usporiadania kategórií na tomto widgete.'
Label: Smer
Limit:
Description: 'Obmedzí počet zobrazených kategórií na tomto widgete (nastavením na 0 sa zobrazujú všetky kategórie).'
Label: 'Max. počet'
PLURALNAME: 'Widgety kategórií blogu'
SINGULARNAME: 'Widget kategórií blogu'
Sort:
Description: 'Zmení usporiadanie kategórií na tomto widgete.'
Label: Usporiadanie
BlogCategory: BlogCategory:
Duplicate: 'Kategória blogu s týmto názvom už existuje'
PLURALNAME: 'Kategórie blogu'
SINGULARNAME: 'Kategória blogu'
Title: Názov Title: Názov
BlogEntry: BlogEntry:
DESCRIPTION: 'Obyčajná jednoduchá stránka s vlastným obsahom.' DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky' PLURALNAME: 'Základné stránky'
BlogHolder: BlogHolder:
DESCRIPTION: 'Obyčajná jednoduchá stránka s vlastným obsahom.' DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky' PLURALNAME: 'Základné stránky'
BlogPost: BlogPost:
DESCRIPTION: 'Obyčajná jednoduchá stránka s vlastným obsahom.' AUTHOR: Autor
PLURALNAME: 'Základné stránky' AdditionalCredits: 'Doplnkoví autori'
AdditionalCredits_Description: 'Ak niektorí autori tohto príspevku nemajú prístup k CMS, zadajte ich mená sem. Viacero autorov môžete oddeliť čiarkou.'
Authors: 'Ak niektorí autori tohto príspevku nemajú prístup k CMS, zadajte ich mená sem. Viacero autorov môžete oddeliť čiarkou.'
CUSTOMSUMMARY: 'Pridať vlastné zhrnutie'
Categories: Kategórie
DESCRIPTION: 'Generický obsah stránky'
FeaturedImage: 'Hlavný obrázok'
PLURALNAME: 'Príspevky v blogu'
PageTitleLabel: 'Názov príspevku'
PublishDate: 'Dátum publikovania'
PublishDate_Description: 'V prípade zverejnenia bez hodnoty bude nastavený aktuálny dátum a čas.'
SINGULARNAME: 'Príspevok v blogu'
SUMMARY_DESCRIPTION: 'Ak zhrnutie nie je uvedené, bude použitých prvých 30 slov z obsahu.'
Tags: 'Štítky'
BlogRecentPostsWidget:
Blog: Blog
NumberOfPosts: 'Počet príspevkov'
PLURALNAME: 'Widgety nedávnych príspevkov blogu'
SINGULARNAME: 'Widget nedávnych príspevkov blogu'
BlogTag: BlogTag:
Duplicate: 'Štítok blogu s týmto názvom už existuje'
PLURALNAME: 'Štítky blogu'
SINGULARNAME: 'Štítok blogu'
Title: Názov Title: Názov
BlogTagsCloudWidget:
Blog: Blog
PLURALNAME: 'Widgety používaných štítkov blogu'
SINGULARNAME: 'Widget používaných štítkov blogu'
BlogTagsWidget:
Blog: Blog
Direction:
Description: 'Zmení smer usporiadania štítkov na tomto widgete.'
Label: Smer
Limit:
Description: 'Obmedzí počet zobrazených štítkov na tomto widgete (nastavením na 0 sa zobrazujú všetky štítky).'
Label: 'Max. počet'
PLURALNAME: 'Widgety štítkov blogu'
SINGULARNAME: 'Widget štítkov blogu'
Sort:
Description: 'Zmení usporiadanie štítkov na tomto widgete.'
Label: Usporiadanie
BlogTree: BlogTree:
DESCRIPTION: 'Obyčajná jednoduchá stránka s vlastným obsahom.' DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky' PLURALNAME: 'Základné stránky'
GridFieldAddByDBField:
Add: 'Pridať {name}'
AddFail: 'Nie je možné uložiť {class} do databázy.'
PermissionFail: 'Nemáte oprávnenie na vytvorenie {class}.'
GridFieldBlogPostState:
Draft: '<i class="btn-icon gridfield-icon btn-icon-pencil"></i> Uložený ako koncept dňa {date}'
Published: '<i class="btn-icon gridfield-icon btn-icon-accept"></i> Publikovaný dňa {date}'
Timer: '<i class="gridfield-icon blog-icon-timer"></i> Zverejnený dňa {date}'
TagCloudWidget:
PLURALNAME: 'Widgety používaných štítkov'
SINGULARNAME: 'Widget používaných štítkov'

121
lang/sk_SK.yml Normal file
View File

@ -0,0 +1,121 @@
sk_SK:
ArchiveWidget:
PLURALNAME: 'Widgety archív'
SINGULARNAME: 'Widget archív'
Blog:
AND: a
Archive: Archív
By: ' od'
CONTRIBUTOR: Prispievateľ
Categories: Kategórie
Category: Kategória
Comments: Komentáre
DESCRIPTION: 'Pridá blog na stránku.'
EDITOR: Vydavateľ
FILTERDESCRIPTION_AUTHOR: '{author}'
FILTERDESCRIPTION_CATEGORY: 'V kategórii {category}'
FILTERDESCRIPTION_DATE: '{date}'
FILTERDESCRIPTION_PAGE: 'Stránka {page}'
FILTERDESCRIPTION_TAG: 'Štítkovaný {tag}'
LumberjackTitle: 'Príspevky v blogu'
NoPosts: 'Žiadne príspevky'
PERMISSIONS_CATEGORY: 'Práva blogu'
PERMISSION_MANAGE_USERS_DESCRIPTION: 'Správa užívateľov pre jednotlivé blogy'
PERMISSION_MANAGE_USERS_HELP: 'Umožniť priradenie vydavateľov, spisovateľov alebo prispievateľov do blogu.'
PLURALNAME: Blogy
Posted: Uverejnené
PostedIn: 'Uverejnené v'
PostsPerPage: 'Príspevky na stránke'
ReadMoreAbout: 'Čítať viac o ''{title}''...'
SINGULARNAME: Blog
Tag: 'Štítok'
Tagged: Oštítkované
Tags: 'Štítky'
WRITER: Spisovateľ
BlogArchiveWidget:
ArchiveType: 'Typ archívu'
Blog: Blog
NumberToDisplay: 'Počet na zobrazenie'
PLURALNAME: 'Widgety archívu blogu'
SINGULARNAME: 'Widget archívu blogu'
BlogCategoriesWidget:
Blog: Blog
Direction:
Description: 'Zmení smer usporiadania kategórií na tomto widgete.'
Label: Smer
Limit:
Description: 'Obmedzí počet zobrazených kategórií na tomto widgete (nastavením na 0 sa zobrazujú všetky kategórie).'
Label: 'Max. počet'
PLURALNAME: 'Widgety kategórií blogu'
SINGULARNAME: 'Widget kategórií blogu'
Sort:
Description: 'Zmení usporiadanie kategórií na tomto widgete.'
Label: Usporiadanie
BlogCategory:
Duplicate: 'Kategória blogu s týmto názvom už existuje'
PLURALNAME: 'Kategórie blogu'
SINGULARNAME: 'Kategória blogu'
Title: Názov
BlogEntry:
DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky'
BlogHolder:
DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky'
BlogPost:
AUTHOR: Autor
AdditionalCredits: 'Doplnkoví autori'
AdditionalCredits_Description: 'Ak niektorí autori tohto príspevku nemajú prístup k CMS, zadajte ich mená sem. Viacero autorov môžete oddeliť čiarkou.'
Authors: Autori
CUSTOMSUMMARY: 'Pridať vlastné zhrnutie'
Categories: Kategórie
DESCRIPTION: 'Generický obsah stránky'
FeaturedImage: 'Hlavný obrázok'
PLURALNAME: 'Príspevky v blogu'
PageTitleLabel: 'Názov príspevku'
PublishDate: 'Dátum publikovania'
PublishDate_Description: 'V prípade zverejnenia bez hodnoty bude nastavený aktuálny dátum a čas.'
SINGULARNAME: 'Príspevok v blogu'
SUMMARY_DESCRIPTION: 'Ak zhrnutie nie je uvedené, bude použitých prvých 30 slov z obsahu.'
Tags: 'Štítky'
BlogRecentPostsWidget:
Blog: Blog
NumberOfPosts: 'Počet príspevkov'
PLURALNAME: 'Widgety nedávnych príspevkov blogu'
SINGULARNAME: 'Widget nedávnych príspevkov blogu'
BlogTag:
Duplicate: 'Štítok blogu s týmto názvom už existuje'
PLURALNAME: 'Štítky blogu'
SINGULARNAME: 'Štítok blogu'
Title: Názov
BlogTagsCloudWidget:
Blog: Blog
PLURALNAME: 'Widgety používaných štítkov blogu'
SINGULARNAME: 'Widget používaných štítkov blogu'
BlogTagsWidget:
Blog: Blog
Direction:
Description: 'Zmení smer usporiadania štítkov na tomto widgete.'
Label: Smer
Limit:
Description: 'Obmedzí počet zobrazených štítkov na tomto widgete (nastavením na 0 sa zobrazujú všetky štítky).'
Label: 'Max. počet'
PLURALNAME: 'Widgety štítkov blogu'
SINGULARNAME: 'Widget štítkov blogu'
Sort:
Description: 'Zmení usporiadanie štítkov na tomto widgete.'
Label: Usporiadanie
BlogTree:
DESCRIPTION: 'Generický obsah stránky'
PLURALNAME: 'Základné stránky'
GridFieldAddByDBField:
Add: 'Pridať {name}'
AddFail: 'Nie je možné uložiť {class} do databázy.'
PermissionFail: 'Nemáte oprávnenie na vytvorenie {class}.'
GridFieldBlogPostState:
Draft: '<i class="btn-icon gridfield-icon btn-icon-pencil"></i> Uložený ako koncept dňa {date}'
Published: '<i class="btn-icon gridfield-icon btn-icon-accept"></i> Publikovaný dňa {date}'
Timer: '<i class="gridfield-icon blog-icon-timer"></i> Zverejnený dňa {date}'
TagCloudWidget:
PLURALNAME: 'Widgety používaných štítkov'
SINGULARNAME: 'Widget používaných štítkov'

View File

@ -3,6 +3,7 @@ sv:
PLURALNAME: Arkiv-Widgets PLURALNAME: Arkiv-Widgets
SINGULARNAME: Arkiv-Widget SINGULARNAME: Arkiv-Widget
Blog: Blog:
AND: och
Archive: Arkiv Archive: Arkiv
By: av By: av
CONTRIBUTOR: Bidragsgivare CONTRIBUTOR: Bidragsgivare
@ -52,6 +53,7 @@ sv:
Description: 'Ändra ordningen av kategorier som visas av denna widget.' Description: 'Ändra ordningen av kategorier som visas av denna widget.'
Label: Sortera Label: Sortera
BlogCategory: BlogCategory:
Duplicate: 'En kategori med det här namnet är redan tillagd'
PLURALNAME: 'Blogg Kategorier' PLURALNAME: 'Blogg Kategorier'
SINGULARNAME: 'Blogg Kategori' SINGULARNAME: 'Blogg Kategori'
Title: Titel Title: Titel
@ -66,6 +68,7 @@ sv:
BlogPost: BlogPost:
AUTHOR: Författare AUTHOR: Författare
AdditionalCredits: 'Ytterligare erkännanden' AdditionalCredits: 'Ytterligare erkännanden'
AdditionalCredits_Description: 'Om några av författarna till denna post inte har konton i CMS:en kan du lägga till deras namn här. Fler än ett namn kan separeras med komma.'
Authors: Författare Authors: Författare
CUSTOMSUMMARY: 'Lägg till en anpassad sammanfattning' CUSTOMSUMMARY: 'Lägg till en anpassad sammanfattning'
Categories: Kategorier Categories: Kategorier
@ -83,9 +86,14 @@ sv:
PLURALNAME: 'Blogg Senaste Inläggs-Widget' PLURALNAME: 'Blogg Senaste Inläggs-Widget'
SINGULARNAME: 'Blogg Senaste Inläggs-Widget' SINGULARNAME: 'Blogg Senaste Inläggs-Widget'
BlogTag: BlogTag:
Duplicate: 'En tag med det här namnet är redan tillagd'
PLURALNAME: 'Blogg taggar' PLURALNAME: 'Blogg taggar'
SINGULARNAME: 'Blogg tag' SINGULARNAME: 'Blogg tag'
Title: Titel Title: Titel
BlogTagsCloudWidget:
Blog: Blogg
PLURALNAME: 'Cloud-widgets för taggar'
SINGULARNAME: 'Cloud-widget för tagg'
BlogTagsWidget: BlogTagsWidget:
Blog: Blogg Blog: Blogg
Direction: Direction:

View File

@ -0,0 +1,40 @@
<?php
class BlogFunctionalTest extends FunctionalTest
{
protected static $fixture_file = 'BlogFunctionalTest.yml';
protected static $use_draft_site = true;
public function setUp()
{
Config::inst()->update('URLSegmentFilter', 'default_allow_multibyte', true);
parent::setUp();
i18n::set_locale('fa_IR');
}
public function testBlogWithMultibyteUrl()
{
$result = $this->get('آبید');
$this->assertEquals(200, $result->getStatusCode());
}
public function testMemberProfileWithMultibyteUrlAndName()
{
$result = $this->get('آبید/profile/عبّاس-آبان');
$this->assertEquals(200, $result->getStatusCode());
$this->assertContains('My Blog Post', $result->getBody());
}
public function testMemberProfileWithMultibyteUrlAndEnglishName()
{
$result = $this->get('آبید/profile/bob-jones');
$this->assertEquals(200, $result->getStatusCode());
$this->assertContains('My Blog Post', $result->getBody());
}
}

View File

@ -0,0 +1,22 @@
Member:
member_a:
FirstName: عبّاس
Surname: آبان
Email: foo@example.com
member_b:
FirstName: Bob
Surname: Jones
Email: bobjones@example.com
Blog:
blog_a:
URLSegment: آبید
Title: My Blog
BlogPost:
blogpost_a:
Title: My Blog Post
URLSegment: آبیدآبید
PublishDate: '2017-08-01 00:00:00'
Parent: =>Blog.blog_a
Authors: =>Member.member_a, =>Member.member_b