Update tests and lang’s for 4.0

This commit is contained in:
Will Rossiter 2017-09-18 14:16:24 +12:00
parent 9366ef603e
commit f294ab26d6
31 changed files with 875 additions and 898 deletions

View File

@ -1,5 +1,49 @@
de: de:
Comment: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Bitte geben Sie Ihren Kommentar ein'
COMMENT_MESSAGE_URL: 'Bitte geben Sie eine gültige URL ein'
EMAILADDRESS_MESSAGE_EMAIL: 'Bitte geben Sie eine gültige E-Mail-Adresse ein'
EMAILADDRESS_MESSAGE_REQUIRED: 'Bitte geben Sie Ihre E-Mail-Adresse ein'
POST: Absenden
PREVIEW: Vorschau
PREVIEWLABEL: Vorschau
YOURNAME: Name
YOURNAME_MESSAGE_REQUIRED: 'Bitte geben Sie Ihren Namen ein'
CommentsAdmin:
NeedsModeration: 'Benötigt Moderation'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Ihr Kommentar wurde gespeichert und wird durch einen Moderator freigeschaltet.'
CommentsInterface_singlecomment_ss:
PBY: 'Geschrieben von'
CommentsInterface_ss:
AWAITINGMODERATION: 'Ihr Kommentar wurde gespeichert und wird durch einen Moderator freigeschaltet.'
COMMENTLOGINERROR: 'Sie können diese Seite nur kommentieren, wenn Sie eingeloggt sind'
COMMENTPERMISSIONERROR: 'und die nötige Berechtigung besitzen'
COMMENTPOSTLOGIN: Login
COMMENTS: Kommentare
COMMENTSDISABLED: 'Kommentare sind deaktiviert'
DELETEALLCOMMENTS: 'Alle Kommentare auf dieser Seite löschen'
LOGINTOPOSTCOMMENT: 'Login um zu kommentieren'
NEXT: weiter
NOCOMMENTSYET: 'Noch keine Kommentare auf dieser Seite.'
POSTCOM: Kommentieren
PREV: zurück
RSSFEEDALLCOMMENTS: 'RSS Feed für alle Kommentare'
RSSFEEDCOMMENTS: 'RSS Feed für Kommentare auf dieser Seite'
PageCommentInterface:
DELETEALLCOMMENTS: 'Alle Kommentare auf dieser Seite entfernen'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Zugang zum Bereich ''Kommentare'''
MENUTITLE: Kommentare
Moderated: Moderiert
NeedsModeration: 'Benötigt Moderation'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Kommentare
EMAILADDRESS: 'E-Mail Adresse (wird nicht angezeigt)'
PERMISSIONFAILURE: 'Sie sind nicht berechtigt diese Seite zu kommentieren. Bitte stellen Sie sicher das Sie eingeloggt sind und die nötige Berechtigung besitzen.'
RSSTITLE: 'Kommentare RSS Feed'
WEBSITEURL: 'Website URL'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Kommentare Erlauben' ALLOWCOMMENTS: 'Kommentare Erlauben'
COMMENT: Kommentar COMMENT: Kommentar
COMMENTBY: 'Kommentar von ''%s''' COMMENTBY: 'Kommentar von ''%s'''
@ -12,47 +56,3 @@ de:
PLURALNAME: Kommentare PLURALNAME: Kommentare
SINGULARNAME: Kommentar SINGULARNAME: Kommentar
URL: URL URL: URL
CommentAdmin:
ADMIN_PERMISSION: 'Zugang zum Bereich ''Kommentare'''
MENUTITLE: Kommentare
Moderated: Moderiert
NeedsModeration: 'Benötigt Moderation'
CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Bitte geben Sie Ihren Kommentar ein'
COMMENT_MESSAGE_URL: 'Bitte geben Sie eine gültige URL ein'
EMAILADDRESS_MESSAGE_EMAIL: 'Bitte geben Sie eine gültige E-Mail-Adresse ein'
EMAILADDRESS_MESSAGE_REQUIRED: 'Bitte geben Sie Ihre E-Mail-Adresse ein'
POST: Absenden
PREVIEW: Vorschau
PREVIEWLABEL: Vorschau
YOURNAME: 'Name'
YOURNAME_MESSAGE_REQUIRED: 'Bitte geben Sie Ihren Namen ein'
CommentingController:
COMMENTS: Kommentare
EMAILADDRESS: 'E-Mail Adresse (wird nicht angezeigt)'
PERMISSIONFAILURE: 'Sie sind nicht berechtigt diese Seite zu kommentieren. Bitte stellen Sie sicher das Sie eingeloggt sind und die nötige Berechtigung besitzen.'
RSSTITLE: 'Kommentare RSS Feed'
WEBSITEURL: 'Website URL'
CommentsAdmin:
NeedsModeration: 'Benötigt Moderation'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Ihr Kommentar wurde gespeichert und wird durch einen Moderator freigeschaltet.'
CommentsInterface_singlecomment_ss:
PBY: 'Geschrieben von'
CommentsInterface_ss:
AWAITINGMODERATION: 'Ihr Kommentar wurde gespeichert und wird durch einen Moderator freigeschaltet.'
COMMENTLOGINERROR: 'Sie können diese Seite nur kommentieren, wenn Sie eingeloggt sind'
COMMENTPERMISSIONERROR: 'und die nötige Berechtigung besitzen'
COMMENTPOSTLOGIN: 'Login'
COMMENTS: Kommentare
COMMENTSDISABLED: 'Kommentare sind deaktiviert'
DELETEALLCOMMENTS: 'Alle Kommentare auf dieser Seite löschen'
LOGINTOPOSTCOMMENT: 'Login um zu kommentieren'
NEXT: weiter
NOCOMMENTSYET: 'Noch keine Kommentare auf dieser Seite.'
POSTCOM: 'Kommentieren'
PREV: zurück
RSSFEEDALLCOMMENTS: 'RSS Feed für alle Kommentare'
RSSFEEDCOMMENTS: 'RSS Feed für Kommentare auf dieser Seite'
PageCommentInterface:
DELETEALLCOMMENTS: 'Alle Kommentare auf dieser Seite entfernen'

View File

@ -1,30 +1,4 @@
en: en:
Comment:
ALLOWCOMMENTS: 'Allow Comments'
COMMENT: Comment
COMMENTBY: 'Comment by %s'
CREATED: 'Date posted'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderated?'
NAME: 'Author Name'
'ON': 'on'
OPTIONS: Options
OPTION_DESCRIPTION: 'Unmoderated and spam comments will not be displayed until approved'
PARENTTITLE: Parent
PLURALNAME: Comments
ParentComment_Title: 'This comment is a reply to the below'
SINGULARNAME: Comment
URL: URL
CommentAdmin:
ADMIN_PERMISSION: 'Access to ''Comments'' section'
ApprovedComments: Approved
Comments: Approved
MENUTITLE: Comments
Moderated: Moderated
NeedsModeration: 'Needs Moderation'
NewComments: New
SpamComments: Spam
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Please enter your comment' COMMENT_MESSAGE_REQUIRED: 'Please enter your comment'
COMMENT_MESSAGE_URL: 'Please enter a valid URL' COMMENT_MESSAGE_URL: 'Please enter a valid URL'
@ -35,12 +9,6 @@ en:
PREVIEWLABEL: Preview PREVIEWLABEL: Preview
YOURNAME: 'Your name' YOURNAME: 'Your name'
YOURNAME_MESSAGE_REQUIRED: 'Please enter your name' YOURNAME_MESSAGE_REQUIRED: 'Please enter your name'
CommentingController:
COMMENTS: Comments
EMAILADDRESS: 'Your email address (will not be published)'
PERMISSIONFAILURE: 'You''re not able to post comments to this page. Please ensure you are logged in and have an appropriate permission level.'
RSSTITLE: 'Comments RSS Feed'
WEBSITEURL: 'Your website URL'
Comments: Comments:
COMMENTSREQUIRELOGIN: 'Require login to comment' COMMENTSREQUIRELOGIN: 'Require login to comment'
CommentsAdmin: CommentsAdmin:
@ -49,19 +17,6 @@ en:
NeedsModeration: 'Needs Moderation' NeedsModeration: 'Needs Moderation'
NewComments: New NewComments: New
SpamComments: Spam SpamComments: Spam
CommentsExtension:
COMMENTOPTIONS: Comments
MODERATIONREQUIRED_NONE: 'No moderation required'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Only moderate non-members'
MODERATIONREQUIRED_REQUIRED: 'Moderate all comments'
CommentsGridFieldAction:
APPROVE: Approve
COMMENTAPPROVED: 'Comment approved.'
COMMENTMARKEDSPAM: 'Comment marked as spam.'
SPAM: Spam
CommentsGridFieldConfig:
APPROVE: Approve
SPAM: Spam
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Your comment has been submitted and is now awaiting moderation.' AWAITINGMODERATION: 'Your comment has been submitted and is now awaiting moderation.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
@ -87,3 +42,48 @@ en:
RSSFEEDCOMMENTS: 'RSS feed for comments on this page' RSSFEEDCOMMENTS: 'RSS feed for comments on this page'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Delete all comments on this page' DELETEALLCOMMENTS: 'Delete all comments on this page'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Access to ''Comments'' section'
ApprovedComments: Approved
Comments: Approved
MENUTITLE: Comments
Moderated: Moderated
NeedsModeration: 'Needs Moderation'
NewComments: New
SpamComments: Spam
SilverStripe\Comments\Admin\CommentsGridFieldAction:
APPROVE: Approve
COMMENTAPPROVED: 'Comment approved.'
COMMENTMARKEDSPAM: 'Comment marked as spam.'
SPAM: Spam
SilverStripe\Comments\Admin\CommentsGridFieldConfig:
APPROVE: Approve
SPAM: Spam
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Comments
EMAILADDRESS: 'Your email address (will not be published)'
PERMISSIONFAILURE: 'You''re not able to post comments to this page. Please ensure you are logged in and have an appropriate permission level.'
RSSTITLE: 'Comments RSS Feed'
WEBSITEURL: 'Your website URL'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Comments
MODERATIONREQUIRED_NONE: 'No moderation required'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Only moderate non-members'
MODERATIONREQUIRED_REQUIRED: 'Moderate all comments'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Allow Comments'
COMMENT: Comment
COMMENTBY: 'Comment by %s'
CREATED: 'Date posted'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderated?'
NAME: 'Author Name'
'ON': 'on'
OPTIONS: Options
OPTION_DESCRIPTION: 'Unmoderated and spam comments will not be displayed until approved'
PARENTTITLE: Parent
PLURALNAME: Comments
ParentComment_Title: 'This comment is a reply to the below'
SINGULARNAME: Comment
URL: URL

View File

@ -1,29 +1,4 @@
eo: eo:
Comment:
ALLOWCOMMENTS: 'Ebligi komentojn'
COMMENT: Komento
COMMENTBY: 'Komento de %s'
CREATED: 'Dato de afiŝo'
EMAIL: Retpoŝto
ISSPAM: 'Ĉu spamo?'
MODERATED: 'Ĉu kontrolata?'
NAME: 'Nomo de aŭtoro'
'ON': 'en'
OPTION_DESCRIPTION: 'Ne vidigos nekontrolitajn aŭ spamajn komentojn antaŭ aprobo'
PARENTTITLE: Patra
PLURALNAME: Komentoj
ParentComment_Title: 'Tiu komento estas respondo al la suba'
SINGULARNAME: Komento
URL: URL
CommentAdmin:
ADMIN_PERMISSION: 'Aliro al sekcio ''Komentoj'''
ApprovedComments: Aprobita
Comments: Aprobita
MENUTITLE: Komentoj
Moderated: Kontrolata
NeedsModeration: 'Bezonas kontrolon'
NewComments: Nova
SpamComments: Spamo
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Bonvole enigu vian komenton' COMMENT_MESSAGE_REQUIRED: 'Bonvole enigu vian komenton'
COMMENT_MESSAGE_URL: 'Bonvole enigu validan URL-on' COMMENT_MESSAGE_URL: 'Bonvole enigu validan URL-on'
@ -34,12 +9,6 @@ eo:
PREVIEWLABEL: Antaŭvido PREVIEWLABEL: Antaŭvido
YOURNAME: 'Via nomo' YOURNAME: 'Via nomo'
YOURNAME_MESSAGE_REQUIRED: 'Bonvole enigu vian nomon' YOURNAME_MESSAGE_REQUIRED: 'Bonvole enigu vian nomon'
CommentingController:
COMMENTS: Komentoj
EMAILADDRESS: 'Via retadreso (ne publikiĝos)'
PERMISSIONFAILURE: 'Vi ne povas afiŝi komentojn al ĉi tiu paĝo. Bonvole certigu ke vi jam ensalutis kaj havas taŭgan permeson.'
RSSTITLE: 'RSS-fluo de komentoj'
WEBSITEURL: 'Via reteja URL'
Comments: Comments:
COMMENTSREQUIRELOGIN: 'Necesas ensaluti por komenti' COMMENTSREQUIRELOGIN: 'Necesas ensaluti por komenti'
CommentsAdmin: CommentsAdmin:
@ -48,11 +17,6 @@ eo:
NeedsModeration: 'Bezonas kontrolon' NeedsModeration: 'Bezonas kontrolon'
NewComments: Nova NewComments: Nova
SpamComments: Spamo SpamComments: Spamo
CommentsExtension:
COMMENTOPTIONS: Komentoj
MODERATIONREQUIRED_NONE: 'Kontrolado ne bezonatas'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Kontroli nur nemembrojn'
MODERATIONREQUIRED_REQUIRED: 'Kontroli ĉiujn komentojn'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Via komento afiŝiĝis kaj nun atendas kontrolon.' AWAITINGMODERATION: 'Via komento afiŝiĝis kaj nun atendas kontrolon.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
@ -78,3 +42,39 @@ eo:
RSSFEEDCOMMENTS: 'RSS-fluo por komentoj pri ĉi tiu paĝo' RSSFEEDCOMMENTS: 'RSS-fluo por komentoj pri ĉi tiu paĝo'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Forigi ĉiujn komentojn pri ĉi tiu paĝo' DELETEALLCOMMENTS: 'Forigi ĉiujn komentojn pri ĉi tiu paĝo'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Aliro al sekcio ''Komentoj'''
ApprovedComments: Aprobita
Comments: Aprobita
MENUTITLE: Komentoj
Moderated: Kontrolata
NeedsModeration: 'Bezonas kontrolon'
NewComments: Nova
SpamComments: Spamo
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentoj
EMAILADDRESS: 'Via retadreso (ne publikiĝos)'
PERMISSIONFAILURE: 'Vi ne povas afiŝi komentojn al ĉi tiu paĝo. Bonvole certigu ke vi jam ensalutis kaj havas taŭgan permeson.'
RSSTITLE: 'RSS-fluo de komentoj'
WEBSITEURL: 'Via reteja URL'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Komentoj
MODERATIONREQUIRED_NONE: 'Kontrolado ne bezonatas'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Kontroli nur nemembrojn'
MODERATIONREQUIRED_REQUIRED: 'Kontroli ĉiujn komentojn'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Ebligi komentojn'
COMMENT: Komento
COMMENTBY: 'Komento de %s'
CREATED: 'Dato de afiŝo'
EMAIL: Retpoŝto
ISSPAM: 'Ĉu spamo?'
MODERATED: 'Ĉu kontrolata?'
NAME: 'Nomo de aŭtoro'
'ON': en
OPTION_DESCRIPTION: 'Ne vidigos nekontrolitajn aŭ spamajn komentojn antaŭ aprobo'
PARENTTITLE: Patra
PLURALNAME: Komentoj
ParentComment_Title: 'Tiu komento estas respondo al la suba'
SINGULARNAME: Komento
URL: URL

View File

@ -1,37 +1,14 @@
es: es:
Comment:
ALLOWCOMMENTS: 'Permitir comentarios'
COMMENT: Comentario
COMMENTBY: 'Comentario por %s'
CREATED: 'Fecha de publicación'
EMAIL: Email
ISSPAM: '¿Spam?'
MODERATED: '¿Moderado?'
NAME: 'Nombre del autor'
PARENTTITLE: Padre
PLURALNAME: Comentarios
SINGULARNAME: Comentario
URL: URL
CommentAdmin:
ADMIN_PERMISSION: 'Acceder a la sección ''Comentarios'''
MENUTITLE: Comentarios
Moderated: Moderado
NeedsModeration: 'Necesita moderación'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Por favor, ingres su comentario' COMMENT_MESSAGE_REQUIRED: 'Por favor, ingres su comentario'
COMMENT_MESSAGE_URL: 'Por favor, ingrese una URL válida' COMMENT_MESSAGE_URL: 'Por favor, ingrese una URL válida'
EMAILADDRESS_MESSAGE_EMAIL: 'Por favor, ingrse una dirección de correo válida' EMAILADDRESS_MESSAGE_EMAIL: 'Por favor, ingrse una dirección de correo válida'
EMAILADDRESS_MESSAGE_REQUIRED: 'Por favor, ingrese su dirección de correo' EMAILADDRESS_MESSAGE_REQUIRED: 'Por favor, ingrese su dirección de correo'
POST: Publicar POST: Publicar
PREVIEW: Vista previa PREVIEW: 'Vista previa'
PREVIEWLABEL: Vista previa PREVIEWLABEL: 'Vista previa'
YOURNAME: 'Su nombre' YOURNAME: 'Su nombre'
YOURNAME_MESSAGE_REQUIRED: 'Por favor, ingrese su nombre' YOURNAME_MESSAGE_REQUIRED: 'Por favor, ingrese su nombre'
CommentingController:
COMMENTS: Comentarios
EMAILADDRESS: 'Su dirección de correo (no se publicará)'
PERMISSIONFAILURE: 'Ud no puede publicar comentarios en esta página. Por favor asegúrese que haya iniciado sesión y que tenga el adecuado nivel de permisos.'
WEBSITEURL: 'URL de su sitio Web'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Necesita moderación' NeedsModeration: 'Necesita moderación'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
@ -53,3 +30,26 @@ es:
PREV: anterior PREV: anterior
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Eliminar todos los comentarios de esta página' DELETEALLCOMMENTS: 'Eliminar todos los comentarios de esta página'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Acceder a la sección ''Comentarios'''
MENUTITLE: Comentarios
Moderated: Moderado
NeedsModeration: 'Necesita moderación'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Comentarios
EMAILADDRESS: 'Su dirección de correo (no se publicará)'
PERMISSIONFAILURE: 'Ud no puede publicar comentarios en esta página. Por favor asegúrese que haya iniciado sesión y que tenga el adecuado nivel de permisos.'
WEBSITEURL: 'URL de su sitio Web'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Permitir comentarios'
COMMENT: Comentario
COMMENTBY: 'Comentario por %s'
CREATED: 'Fecha de publicación'
EMAIL: Email
ISSPAM: '¿Spam?'
MODERATED: '¿Moderado?'
NAME: 'Nombre del autor'
PARENTTITLE: Padre
PLURALNAME: Comentarios
SINGULARNAME: Comentario
URL: URL

View File

@ -1,64 +1,28 @@
fa_IR: fa_IR:
Comment:
ALLOWCOMMENTS: 'اجازه نشر دیدگاه'
COMMENT: دیدگاه
COMMENTBY: 'دیدگاه توسط %s'
CREATED: 'تاریخ ارسال'
EMAIL: ایمیل
ISSPAM: 'هرزنوشت؟'
MODERATED: 'مدیریت شده؟'
NAME: 'نام نگارنده'
'ON': 'در'
OPTION_DESCRIPTION: 'دیدگاه‌های مدیریت نشده و هرزنوشت‌ها تا زمان تایید به نمایش در نخواهند آمد'
PARENTTITLE: والد
PLURALNAME: دیدگاه‌ها
ParentComment_Title: 'این دیدگاه پاسخی است به زیر'
SINGULARNAME: دیدگاه
URL: نشانی اینترنتی
CommentAdmin:
ADMIN_PERMISSION: 'دسترسی به بخش ''دیدگاه‌ها'''
ApprovedComments: تایید شده
Comments: تایید شده
MENUTITLE: دیدگاه‌ها
Moderated: مدیریت شده
NeedsModeration: 'نیازمند مدیریت'
NewComments: تازه
SpamComments: هرزنوشت
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'لطفاً دیدگاه خود را وارد نمایید' COMMENT_MESSAGE_REQUIRED: 'لطفاً دیدگاه خود را وارد نمایید'
COMMENT_MESSAGE_URL: 'لطفاً نشانی اینترنتی معتبر وارد نمایید' COMMENT_MESSAGE_URL: 'لطفاً نشانی اینترنتی معتبر وارد نمایید'
EMAILADDRESS_MESSAGE_EMAIL: 'لطفاً نشانی ایمیل معتبر وارد نمایید' EMAILADDRESS_MESSAGE_EMAIL: 'لطفاً نشانی ایمیل معتبر وارد نمایید'
EMAILADDRESS_MESSAGE_REQUIRED: 'لطفاً نشانی ایمیل خود را وارد نمایید' EMAILADDRESS_MESSAGE_REQUIRED: 'لطفاً نشانی ایمیل خود را وارد نمایید'
POST: ارسال POST: ارسال
PREVIEW: پیش‌نمایش PREVIEW: 'پیش‌نمایش'
PREVIEWLABEL: پیش‌نمایش PREVIEWLABEL: 'پیش‌نمایش'
YOURNAME: 'نام شما' YOURNAME: 'نام شما'
YOURNAME_MESSAGE_REQUIRED: 'لطفاً نام خود را وارد نمایید' YOURNAME_MESSAGE_REQUIRED: 'لطفاً نام خود را وارد نمایید'
CommentingController:
COMMENTS: دیدگاه‌ها
EMAILADDRESS: 'ایمیل شما (منتشر نخواهد شد)'
PERMISSIONFAILURE: 'شما نمی‌توانید در این صفحه دیدگاهی درج نمایید. لطفاً اطمینان حاصل نمایید که وارد سایت شده‌اید و از سطح دسترسی دسترسی مناسب برخوردار هستید.'
RSSTITLE: 'خوراک آراس‌اس دیدگاه‌ها'
WEBSITEURL: 'نشانی وب‌سایت شما'
Comments: Comments:
COMMENTSREQUIRELOGIN: 'درج دیدگاه نیازمند ورود شما به سایت است' COMMENTSREQUIRELOGIN: 'درج دیدگاه نیازمند ورود شما به سایت است'
CommentsAdmin: CommentsAdmin:
ApprovedComments: تایید شده ApprovedComments: 'تایید شده'
Comments: تایید شده Comments: 'تایید شده'
NeedsModeration: 'نیازمند مدیریت' NeedsModeration: 'نیازمند مدیریت'
NewComments: تازه NewComments: تازه
SpamComments: هرزنوشت SpamComments: هرزنوشت
CommentsExtension:
COMMENTOPTIONS: دیدگاه‌ها
MODERATIONREQUIRED_NONE: 'نیاز به مدیریت ندارد'
MODERATIONREQUIRED_NONMEMBERSONLY: 'تنها مدیریت کاربران غیر عضو'
MODERATIONREQUIRED_REQUIRED: 'مدیریت تمامی دیدگاه‌ها'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'دیدگاه شما ارسال شده و هم‌اکنون در انتظار بررسی است.' AWAITINGMODERATION: 'دیدگاه شما ارسال شده و هم‌اکنون در انتظار بررسی است.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
APPROVE: 'تایید کن' APPROVE: 'تایید کن'
ISNTSPAM: 'هرزنوشت نیست' ISNTSPAM: 'هرزنوشت نیست'
ISSPAM: 'هرزنوشته' ISSPAM: هرزنوشته
PBY: 'ارسال شده توسط' PBY: 'ارسال شده توسط'
REMCOM: 'رد کردن' REMCOM: 'رد کردن'
CommentsInterface_ss: CommentsInterface_ss:
@ -78,3 +42,39 @@ fa_IR:
RSSFEEDCOMMENTS: 'خوراک آر‌اس‌اس دیدگاه‌های این صفحه' RSSFEEDCOMMENTS: 'خوراک آر‌اس‌اس دیدگاه‌های این صفحه'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'حذف تمامی دیدگاه‌ها در این صفحه' DELETEALLCOMMENTS: 'حذف تمامی دیدگاه‌ها در این صفحه'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'دسترسی به بخش ''دیدگاه‌ها'''
ApprovedComments: 'تایید شده'
Comments: 'تایید شده'
MENUTITLE: دیدگاه‌ها
Moderated: 'مدیریت شده'
NeedsModeration: 'نیازمند مدیریت'
NewComments: تازه
SpamComments: هرزنوشت
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: دیدگاه‌ها
EMAILADDRESS: 'ایمیل شما (منتشر نخواهد شد)'
PERMISSIONFAILURE: 'شما نمی‌توانید در این صفحه دیدگاهی درج نمایید. لطفاً اطمینان حاصل نمایید که وارد سایت شده‌اید و از سطح دسترسی دسترسی مناسب برخوردار هستید.'
RSSTITLE: 'خوراک آراس‌اس دیدگاه‌ها'
WEBSITEURL: 'نشانی وب‌سایت شما'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: دیدگاه‌ها
MODERATIONREQUIRED_NONE: 'نیاز به مدیریت ندارد'
MODERATIONREQUIRED_NONMEMBERSONLY: 'تنها مدیریت کاربران غیر عضو'
MODERATIONREQUIRED_REQUIRED: 'مدیریت تمامی دیدگاه‌ها'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'اجازه نشر دیدگاه'
COMMENT: دیدگاه
COMMENTBY: 'دیدگاه توسط %s'
CREATED: 'تاریخ ارسال'
EMAIL: 'ایمیل'
ISSPAM: هرزنوشت؟
MODERATED: 'مدیریت شده؟'
NAME: 'نام نگارنده'
'ON': در
OPTION_DESCRIPTION: 'دیدگاه‌های مدیریت نشده و هرزنوشت‌ها تا زمان تایید به نمایش در نخواهند آمد'
PARENTTITLE: والد
PLURALNAME: دیدگاه‌ها
ParentComment_Title: 'این دیدگاه پاسخی است به زیر'
SINGULARNAME: دیدگاه
URL: 'نشانی اینترنتی'

View File

@ -1,44 +1,20 @@
fi: fi:
Comment:
ALLOWCOMMENTS: 'Salli kommentointi'
COMMENT: Komentti
COMMENTBY: 'Kommentoija: %s'
CREATED: 'Kirjoitettu'
EMAIL: Sähköposti
ISSPAM: 'Spämmiä?'
MODERATED: 'Moderoitu?'
NAME: 'Kirjoittajan nimi'
'ON': 'pvm'
PARENTTITLE: Isäntä
PLURALNAME: Kommentit
SINGULARNAME: Komentti
URL: URL-osoite
CommentAdmin:
MENUTITLE: Kommentit
Moderated: Moderoitu
NeedsModeration: 'Tarvitsee moderointia'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Ole hyvä ja kommentoi' COMMENT_MESSAGE_REQUIRED: 'Ole hyvä ja kommentoi'
COMMENT_MESSAGE_URL: 'URL-osoitteen on oltava kelvollinen' COMMENT_MESSAGE_URL: 'URL-osoitteen on oltava kelvollinen'
EMAILADDRESS_MESSAGE_EMAIL: 'Sähköpostiosoitteen on oltava kelvollinen' EMAILADDRESS_MESSAGE_EMAIL: 'Sähköpostiosoitteen on oltava kelvollinen'
EMAILADDRESS_MESSAGE_REQUIRED: 'Sähköpostiosoitteesi' EMAILADDRESS_MESSAGE_REQUIRED: Sähköpostiosoitteesi
POST: Lähetä POST: Lähetä
PREVIEW: Esikatselu PREVIEW: Esikatselu
PREVIEWLABEL: Esikatselu PREVIEWLABEL: Esikatselu
YOURNAME: 'Nimesi' YOURNAME: Nimesi
YOURNAME_MESSAGE_REQUIRED: 'Nimesi' YOURNAME_MESSAGE_REQUIRED: Nimesi
CommentingController:
COMMENTS: Kommentit
EMAILADDRESS: 'Sähköpostiosoitteesi (ei julkaista)'
PERMISSIONFAILURE: 'Et voi kommentoida tätä sivua. Varmista, että olet kirjatuneena ja että käyttöoikeutesi ovat riittävät.'
RSSTITLE: 'Kommenttien RSS-syöte'
WEBSITEURL: 'WWW-sivustosi osoite'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Tarvitsee moderointia' NeedsModeration: 'Tarvitsee moderointia'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Kommenttisi on lähetetty ja on moderoitavana.' AWAITINGMODERATION: 'Kommenttisi on lähetetty ja on moderoitavana.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
PBY: 'Lähettänyt' PBY: Lähettänyt
CommentsInterface_ss: CommentsInterface_ss:
AWAITINGMODERATION: 'Kommenttisi on lähetetty ja on moderoitavana.' AWAITINGMODERATION: 'Kommenttisi on lähetetty ja on moderoitavana.'
COMMENTLOGINERROR: 'Et voi kommentoida ennen kuin olet kirjautunut sisään' COMMENTLOGINERROR: 'Et voi kommentoida ennen kuin olet kirjautunut sisään'
@ -55,3 +31,27 @@ fi:
RSSFEEDCOMMENTS: 'RSS-syöte tämän sivun kommenteista' RSSFEEDCOMMENTS: 'RSS-syöte tämän sivun kommenteista'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Poista kaikki tämän sivun kommentit' DELETEALLCOMMENTS: 'Poista kaikki tämän sivun kommentit'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Kommentit
Moderated: Moderoitu
NeedsModeration: 'Tarvitsee moderointia'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Kommentit
EMAILADDRESS: 'Sähköpostiosoitteesi (ei julkaista)'
PERMISSIONFAILURE: 'Et voi kommentoida tätä sivua. Varmista, että olet kirjatuneena ja että käyttöoikeutesi ovat riittävät.'
RSSTITLE: 'Kommenttien RSS-syöte'
WEBSITEURL: 'WWW-sivustosi osoite'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Salli kommentointi'
COMMENT: Komentti
COMMENTBY: 'Kommentoija: %s'
CREATED: Kirjoitettu
EMAIL: Sähköposti
ISSPAM: 'Spämmiä?'
MODERATED: 'Moderoitu?'
NAME: 'Kirjoittajan nimi'
'ON': pvm
PARENTTITLE: Isäntä
PLURALNAME: Kommentit
SINGULARNAME: Komentti
URL: URL-osoite

View File

@ -1,21 +1,4 @@
fr: fr:
Comment:
ALLOWCOMMENTS: 'Autoriser Commentaires'
COMMENT: Commentaire
COMMENTBY: 'Commentaire par %s'
CREATED: 'Date de publication'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Modéré?'
NAME: 'Nom de l''Auteur'
PARENTTITLE: Parent
PLURALNAME: Commentaires
SINGULARNAME: Commentaire
URL: URL
CommentAdmin:
MENUTITLE: Commentaires
Moderated: Modéré
NeedsModeration: 'Besoin de modération'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Saisissez votre commentaire' COMMENT_MESSAGE_REQUIRED: 'Saisissez votre commentaire'
COMMENT_MESSAGE_URL: 'Saisissez une URl valide' COMMENT_MESSAGE_URL: 'Saisissez une URl valide'
@ -26,16 +9,8 @@ fr:
PREVIEWLABEL: Aperçu PREVIEWLABEL: Aperçu
YOURNAME: 'Votre Nom' YOURNAME: 'Votre Nom'
YOURNAME_MESSAGE_REQUIRED: 'Saisissez votre nom' YOURNAME_MESSAGE_REQUIRED: 'Saisissez votre nom'
CommentingController:
COMMENTS: Commentaires
EMAILADDRESS: 'Votre adresse e-mail (ne sera pas publiée)'
PERMISSIONFAILURE: 'Vous n''avez pas l''autorisation de commenter cette page. Assurez vous d''être connecté et d''avoir le bon niveau de d''autorisation.'
RSSTITLE: 'Flux RSS de Commentaires'
WEBSITEURL: 'URl de votre site web'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Besoin de Modération' NeedsModeration: 'Besoin de Modération'
CommentsExtension:
COMMENTOPTIONS: Commentaires
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Votre commentaire a été soumis à modération.' AWAITINGMODERATION: 'Votre commentaire a été soumis à modération.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
@ -57,3 +32,29 @@ fr:
RSSFEEDCOMMENTS: 'Flux RSS de commentaires de cette page' RSSFEEDCOMMENTS: 'Flux RSS de commentaires de cette page'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Supprimer tout les commentaires de cette page' DELETEALLCOMMENTS: 'Supprimer tout les commentaires de cette page'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Accès à la section Commentaires'
MENUTITLE: Commentaires
Moderated: Modéré
NeedsModeration: 'Besoin de modération'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Commentaires
EMAILADDRESS: 'Votre adresse e-mail (ne sera pas publiée)'
PERMISSIONFAILURE: 'Vous n''avez pas l''autorisation de commenter cette page. Assurez vous d''être connecté et d''avoir le bon niveau de d''autorisation.'
RSSTITLE: 'Flux RSS de Commentaires'
WEBSITEURL: 'URl de votre site web'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Commentaires
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Autoriser Commentaires'
COMMENT: Commentaire
COMMENTBY: 'Commentaire par %s'
CREATED: 'Date de publication'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Modéré?'
NAME: 'Nom de l''Auteur'
PARENTTITLE: Parent
PLURALNAME: Commentaires
SINGULARNAME: Commentaire
URL: URL

View File

@ -1,5 +1,48 @@
hu: hu:
Comment: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Szöveg megadása'
COMMENT_MESSAGE_URL: 'Kérjük adjon meg egy működő linket'
EMAILADDRESS_MESSAGE_EMAIL: 'Kérjük adjon meg egy e-mail címet'
EMAILADDRESS_MESSAGE_REQUIRED: 'Kérjük adja meg az e-mail címét'
POST: Elküld
PREVIEW: Előnézet
PREVIEWLABEL: Előnézet
YOURNAME: 'Az Ön neve'
YOURNAME_MESSAGE_REQUIRED: 'Kérjük adja meg nevét'
CommentsAdmin:
NeedsModeration: 'Moderálás szükséges'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Hozzászólását moderálásra továbbítottuk'
CommentsInterface_singlecomment_ss:
PBY: Feladó
CommentsInterface_ss:
AWAITINGMODERATION: 'Hozzászólását moderálásra továbbítottuk'
COMMENTLOGINERROR: 'A hozzászóláshoz be kell jelentkeznie'
COMMENTPERMISSIONERROR: 'és rendelkeznie kell a megfelelő jogosultsággal'
COMMENTPOSTLOGIN: Bejelentkezés
COMMENTS: Hozzászólások
COMMENTSDISABLED: 'A hozzászólások le vannak tiltva '
LOGINTOPOSTCOMMENT: 'A hozzászóláshoz jelentkezzen be '
NEXT: következő
NOCOMMENTSYET: 'Nem érkeztek hozzászólások'
POSTCOM: 'Küldjön egy hozzászólást'
PREV: előző
RSSFEEDALLCOMMENTS: 'Összes hozzászólás RSS-ben'
RSSFEEDCOMMENTS: 'Oldal hozzászólásai RSS-ben'
PageCommentInterface:
DELETEALLCOMMENTS: 'Oldal összes hozzászólásának törlése'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: '''Hozzászólások'' mező elérése'
MENUTITLE: Hozzászólások
Moderated: Moderált
NeedsModeration: 'Moderálás szükséges'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: 'A hosszászólás szövege'
EMAILADDRESS: 'Az Ön e-mail címe (nem látható)'
PERMISSIONFAILURE: 'Ön csak a bejelentkezést követően, és a megfelelő jogosultság birtokában hozhat létre hozzászólást.'
RSSTITLE: 'Hozzászólások RSS-ben'
WEBSITEURL: 'Az Ön webcíme'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Hozzászólások engedélyezve' ALLOWCOMMENTS: 'Hozzászólások engedélyezve'
COMMENT: Hozzászólás COMMENT: Hozzászólás
COMMENTBY: 'Létrehozta %s' COMMENTBY: 'Létrehozta %s'
@ -12,46 +55,3 @@ hu:
PLURALNAME: Hozzászólások PLURALNAME: Hozzászólások
SINGULARNAME: Hozzászólás SINGULARNAME: Hozzászólás
URL: Link URL: Link
CommentAdmin:
ADMIN_PERMISSION: '''Hozzászólások'' mező elérése'
MENUTITLE: Hozzászólások
Moderated: Moderált
NeedsModeration: 'Moderálás szükséges'
CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Szöveg megadása'
COMMENT_MESSAGE_URL: 'Kérjük adjon meg egy működő linket'
EMAILADDRESS_MESSAGE_EMAIL: 'Kérjük adjon meg egy e-mail címet'
EMAILADDRESS_MESSAGE_REQUIRED: 'Kérjük adja meg az e-mail címét'
POST: Elküld
PREVIEW: Előnézet
PREVIEWLABEL: Előnézet
YOURNAME: 'Az Ön neve'
YOURNAME_MESSAGE_REQUIRED: 'Kérjük adja meg nevét'
CommentingController:
COMMENTS: A hosszászólás szövege
EMAILADDRESS: 'Az Ön e-mail címe (nem látható)'
PERMISSIONFAILURE: 'Ön csak a bejelentkezést követően, és a megfelelő jogosultság birtokában hozhat létre hozzászólást.'
RSSTITLE: 'Hozzászólások RSS-ben'
WEBSITEURL: 'Az Ön webcíme'
CommentsAdmin:
NeedsModeration: 'Moderálás szükséges'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Hozzászólását moderálásra továbbítottuk'
CommentsInterface_singlecomment_ss:
PBY: 'Feladó'
CommentsInterface_ss:
AWAITINGMODERATION: 'Hozzászólását moderálásra továbbítottuk'
COMMENTLOGINERROR: 'A hozzászóláshoz be kell jelentkeznie'
COMMENTPERMISSIONERROR: 'és rendelkeznie kell a megfelelő jogosultsággal'
COMMENTPOSTLOGIN: 'Bejelentkezés'
COMMENTS: Hozzászólások
COMMENTSDISABLED: 'A hozzászólások le vannak tiltva '
LOGINTOPOSTCOMMENT: 'A hozzászóláshoz jelentkezzen be '
NEXT: következő
NOCOMMENTSYET: 'Nem érkeztek hozzászólások'
POSTCOM: 'Küldjön egy hozzászólást'
PREV: előző
RSSFEEDALLCOMMENTS: 'Összes hozzászólás RSS-ben'
RSSFEEDCOMMENTS: 'Oldal hozzászólásai RSS-ben'
PageCommentInterface:
DELETEALLCOMMENTS: 'Oldal összes hozzászólásának törlése'

View File

@ -1,21 +1,4 @@
id: id:
Comment:
ALLOWCOMMENTS: 'Bolehkan Komentar'
COMMENT: Komentar
COMMENTBY: 'Komentar oleh %s'
CREATED: 'Tanggal kirim'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderasi?'
NAME: 'Nama Penulis'
PARENTTITLE: Induk
PLURALNAME: Komentar
SINGULARNAME: Komentar
URL: URL
CommentAdmin:
MENUTITLE: Komentar
Moderated: Dimoderasi
NeedsModeration: 'Perlu Moderasi'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Ketikkan komentar Anda' COMMENT_MESSAGE_REQUIRED: 'Ketikkan komentar Anda'
COMMENT_MESSAGE_URL: 'Isikan URL yang valid' COMMENT_MESSAGE_URL: 'Isikan URL yang valid'
@ -26,12 +9,6 @@ id:
PREVIEWLABEL: Pratinjau PREVIEWLABEL: Pratinjau
YOURNAME: 'Nama Anda' YOURNAME: 'Nama Anda'
YOURNAME_MESSAGE_REQUIRED: 'Isikan nama Anda' YOURNAME_MESSAGE_REQUIRED: 'Isikan nama Anda'
CommentingController:
COMMENTS: Komentar
EMAILADDRESS: 'Alamat email Anda (tidak akan diterbitkan)'
PERMISSIONFAILURE: 'Anda tidak dapat mengomentari laman ini. Mohon pastikan Anda sudah login dan mendapatkan hak akses yang sesuai.'
RSSTITLE: 'Sindikasi RSS Komentar'
WEBSITEURL: 'URL situs Anda'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Perlu Moderasi' NeedsModeration: 'Perlu Moderasi'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
@ -54,3 +31,26 @@ id:
RSSFEEDCOMMENTS: 'Sindikasi RSS untuk komentar di laman ini' RSSFEEDCOMMENTS: 'Sindikasi RSS untuk komentar di laman ini'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Hapus semua komentar di laman ini' DELETEALLCOMMENTS: 'Hapus semua komentar di laman ini'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Komentar
Moderated: Dimoderasi
NeedsModeration: 'Perlu Moderasi'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentar
EMAILADDRESS: 'Alamat email Anda (tidak akan diterbitkan)'
PERMISSIONFAILURE: 'Anda tidak dapat mengomentari laman ini. Mohon pastikan Anda sudah login dan mendapatkan hak akses yang sesuai.'
RSSTITLE: 'Sindikasi RSS Komentar'
WEBSITEURL: 'URL situs Anda'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Bolehkan Komentar'
COMMENT: Komentar
COMMENTBY: 'Komentar oleh %s'
CREATED: 'Tanggal kirim'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderasi?'
NAME: 'Nama Penulis'
PARENTTITLE: Induk
PLURALNAME: Komentar
SINGULARNAME: Komentar
URL: URL

View File

@ -1,29 +1,4 @@
lt: lt:
Comment:
ALLOWCOMMENTS: 'Leisti komentarus'
COMMENT: Komentaras
COMMENTBY: 'Komentarą parašė ''%s'''
CREATED: 'Paskelbimo data'
EMAIL: E. paštas
ISSPAM: 'Šlamštas?'
MODERATED: 'Patvirtintas?'
NAME: 'Autoriaus Vardas'
'ON': 'į'
OPTION_DESCRIPTION: 'Nepatvirtinti komentarai nebus rodomi, kol jie atskirai nebus patvirtinti'
PARENTTITLE: Priklauso
PLURALNAME: Komentarai
ParentComment_Title: 'Šis komentaras yra atsakymas į žemiau esantį'
SINGULARNAME: Komentaras
URL: URL adresas
CommentAdmin:
ADMIN_PERMISSION: 'Patekti į ''Komentarų'' dalį'
ApprovedComments: Patvirtinti
Comments: Patvirtinti
MENUTITLE: Komentarai
Moderated: Patvirtinti
NeedsModeration: 'Laukia patvirtinimo'
NewComments: Nauji
SpamComments: Šlamštas
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Prašome parašyti savo komentarą' COMMENT_MESSAGE_REQUIRED: 'Prašome parašyti savo komentarą'
COMMENT_MESSAGE_URL: 'Prašome įvesti teisingą URL adresą' COMMENT_MESSAGE_URL: 'Prašome įvesti teisingą URL adresą'
@ -34,12 +9,6 @@ lt:
PREVIEWLABEL: Peržiūra PREVIEWLABEL: Peržiūra
YOURNAME: 'Jūsų vardas' YOURNAME: 'Jūsų vardas'
YOURNAME_MESSAGE_REQUIRED: 'Prašome įvesti savo vardą' YOURNAME_MESSAGE_REQUIRED: 'Prašome įvesti savo vardą'
CommentingController:
COMMENTS: Komentarai
EMAILADDRESS: 'Jūsų el.pašto adresas (nebus skelbiamas)'
PERMISSIONFAILURE: 'Jūs negalite skelbti komentarų šiame puslapyje. Įsitikinkite, kad esate prisijungęs ir turite atitinkamą teisių lygį.'
RSSTITLE: 'Komentarų RSS srautas'
WEBSITEURL: 'Jūsų svetainės nuoroda'
Comments: Comments:
COMMENTSREQUIRELOGIN: 'Būtina prisijungti komentavimui' COMMENTSREQUIRELOGIN: 'Būtina prisijungti komentavimui'
CommentsAdmin: CommentsAdmin:
@ -47,20 +16,15 @@ lt:
Comments: Patvirtinti Comments: Patvirtinti
NeedsModeration: 'Laukia patvirtinimo' NeedsModeration: 'Laukia patvirtinimo'
NewComments: Nauji NewComments: Nauji
SpamComments: Šlamštas SpamComments: 'Šlamštas'
CommentsExtension:
COMMENTOPTIONS: Komentarai
MODERATIONREQUIRED_NONE: 'Nereikalauja patvirtinimo'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Tvirtinti tik neregistruotų vartotojų'
MODERATIONREQUIRED_REQUIRED: 'Tvirtinti visus komentarus'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Jūsų komentaras išsiųstas ir laukia patvirtinimo.' AWAITINGMODERATION: 'Jūsų komentaras išsiųstas ir laukia patvirtinimo.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
APPROVE: 'patvirtinti' APPROVE: patvirtinti
ISNTSPAM: 'ne šlamštas' ISNTSPAM: 'ne šlamštas'
ISSPAM: 'šlamštas' ISSPAM: šlamštas
PBY: 'Paskelbė' PBY: Paskelbė
REMCOM: 'ištrinti' REMCOM: ištrinti
CommentsInterface_ss: CommentsInterface_ss:
AWAITINGMODERATION: 'Jūsų komentaras išsiųstas ir laukia patvirtinimo.' AWAITINGMODERATION: 'Jūsų komentaras išsiųstas ir laukia patvirtinimo.'
COMMENTLOGINERROR: 'Negalite rašyti komentarų, jeigu nesate prisijungę' COMMENTLOGINERROR: 'Negalite rašyti komentarų, jeigu nesate prisijungę'
@ -78,3 +42,39 @@ lt:
RSSFEEDCOMMENTS: 'Šio puslapio komentarų RSS' RSSFEEDCOMMENTS: 'Šio puslapio komentarų RSS'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Ištrinti visus komentarus šiame puslapyje' DELETEALLCOMMENTS: 'Ištrinti visus komentarus šiame puslapyje'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Patekti į ''Komentarų'' dalį'
ApprovedComments: Patvirtinti
Comments: Patvirtinti
MENUTITLE: Komentarai
Moderated: Patvirtinti
NeedsModeration: 'Laukia patvirtinimo'
NewComments: Nauji
SpamComments: 'Šlamštas'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentarai
EMAILADDRESS: 'Jūsų el.pašto adresas (nebus skelbiamas)'
PERMISSIONFAILURE: 'Jūs negalite skelbti komentarų šiame puslapyje. Įsitikinkite, kad esate prisijungęs ir turite atitinkamą teisių lygį.'
RSSTITLE: 'Komentarų RSS srautas'
WEBSITEURL: 'Jūsų svetainės nuoroda'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Komentarai
MODERATIONREQUIRED_NONE: 'Nereikalauja patvirtinimo'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Tvirtinti tik neregistruotų vartotojų'
MODERATIONREQUIRED_REQUIRED: 'Tvirtinti visus komentarus'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Leisti komentarus'
COMMENT: Komentaras
COMMENTBY: 'Komentarą parašė ''%s'''
CREATED: 'Paskelbimo data'
EMAIL: 'E. paštas'
ISSPAM: 'Šlamštas?'
MODERATED: 'Patvirtintas?'
NAME: 'Autoriaus Vardas'
'ON': į
OPTION_DESCRIPTION: 'Nepatvirtinti komentarai nebus rodomi, kol jie atskirai nebus patvirtinti'
PARENTTITLE: Priklauso
PLURALNAME: Komentarai
ParentComment_Title: 'Šis komentaras yra atsakymas į žemiau esantį'
SINGULARNAME: Komentaras
URL: 'URL adresas'

View File

@ -1,25 +1,7 @@
nb: nb:
Comment:
ALLOWCOMMENTS: 'Tillat kommentarer'
COMMENT: Kommentar
ISSPAM: 'Spam?'
MODERATED: 'Moderert?'
NAME: 'Navn'
PLURALNAME: Kommentarer
SINGULARNAME: Kommentar
CommentAdmin:
MENUTITLE: Kommentarer
Moderated: Moderert
NeedsModeration: 'Trenger moderering'
CommentInterface: CommentInterface:
POST: Legg ut POST: 'Legg ut'
YOURNAME: 'Navn' YOURNAME: Navn
CommentingController:
COMMENTS: Kommentar
EMAILADDRESS: 'Epostadresse (blir ikke publisert)'
PERMISSIONFAILURE: 'Du kan ikke kommentere på denne siden. Vennligst sjekk at du er innlogget og har et passende tilgangsnivå.'
RSSTITLE: 'RSS-feed for kommentarer'
WEBSITEURL: 'Hjemmeside'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Trenger moderering' NeedsModeration: 'Trenger moderering'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
@ -41,3 +23,21 @@ nb:
RSSFEEDCOMMENTS: 'RSS-feed for kommentarer på denne siden' RSSFEEDCOMMENTS: 'RSS-feed for kommentarer på denne siden'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Fjern alle kommentarer på denne siden' DELETEALLCOMMENTS: 'Fjern alle kommentarer på denne siden'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Kommentarer
Moderated: Moderert
NeedsModeration: 'Trenger moderering'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Kommentar
EMAILADDRESS: 'Epostadresse (blir ikke publisert)'
PERMISSIONFAILURE: 'Du kan ikke kommentere på denne siden. Vennligst sjekk at du er innlogget og har et passende tilgangsnivå.'
RSSTITLE: 'RSS-feed for kommentarer'
WEBSITEURL: Hjemmeside
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Tillat kommentarer'
COMMENT: Kommentar
ISSPAM: 'Spam?'
MODERATED: 'Moderert?'
NAME: Navn
PLURALNAME: Kommentarer
SINGULARNAME: Kommentar

View File

@ -1,30 +1,9 @@
nl: nl:
Comment:
ALLOWCOMMENTS: 'Reacties toestaan'
COMMENT: Reactie
ISSPAM: 'Spam?'
MODERATED: 'Gemodereerd?'
NAME: 'Auteur'
'ON': 'op'
PLURALNAME: Reacties
SINGULARNAME: Reactie
CommentAdmin:
MENUTITLE: Reacties
Moderated: Gemodereerd
NeedsModeration: 'Wacht op moderatie'
CommentInterface: CommentInterface:
POST: Plaats reactie POST: 'Plaats reactie'
YOURNAME: 'Naam' YOURNAME: Naam
CommentingController:
COMMENTS: Reacties
EMAILADDRESS: 'E-mail adres (wordt niet gepubliceerd)'
PERMISSIONFAILURE: 'Je mag geen reacties plaatsen op deze pagina. Log a.u.b. eerst in en controleer je gebruikersrechten.'
RSSTITLE: 'Reacties RSS feed'
WEBSITEURL: 'Website URL'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Wacht op moderatie' NeedsModeration: 'Wacht op moderatie'
CommentsExtension:
COMMENTOPTIONS: Reacties
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Je reactie is verstuurd en is in afwachting van moderatie.' AWAITINGMODERATION: 'Je reactie is verstuurd en is in afwachting van moderatie.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
@ -32,7 +11,7 @@ nl:
CommentsInterface_ss: CommentsInterface_ss:
COMMENTLOGINERROR: 'Je moet ingelogd zijn om reacties te kunnen plaatsen' COMMENTLOGINERROR: 'Je moet ingelogd zijn om reacties te kunnen plaatsen'
COMMENTPERMISSIONERROR: 'en controleer je gebruikersrechten' COMMENTPERMISSIONERROR: 'en controleer je gebruikersrechten'
COMMENTPOSTLOGIN: 'Inloggen' COMMENTPOSTLOGIN: Inloggen
COMMENTS: Reacties COMMENTS: Reacties
COMMENTSDISABLED: 'Reacties plaatsen is uitgeschakeld' COMMENTSDISABLED: 'Reacties plaatsen is uitgeschakeld'
LOGINTOPOSTCOMMENT: 'Log in om een reactie te plaatsen' LOGINTOPOSTCOMMENT: 'Log in om een reactie te plaatsen'
@ -44,3 +23,24 @@ nl:
RSSFEEDCOMMENTS: 'RSS feed voor reacties op deze pagina' RSSFEEDCOMMENTS: 'RSS feed voor reacties op deze pagina'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Verwijder alle reacties op deze pagina' DELETEALLCOMMENTS: 'Verwijder alle reacties op deze pagina'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Reacties
Moderated: Gemodereerd
NeedsModeration: 'Wacht op moderatie'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Reacties
EMAILADDRESS: 'E-mail adres (wordt niet gepubliceerd)'
PERMISSIONFAILURE: 'Je mag geen reacties plaatsen op deze pagina. Log a.u.b. eerst in en controleer je gebruikersrechten.'
RSSTITLE: 'Reacties RSS feed'
WEBSITEURL: 'Website URL'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Reacties
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Reacties toestaan'
COMMENT: Reactie
ISSPAM: 'Spam?'
MODERATED: 'Gemodereerd?'
NAME: Auteur
'ON': op
PLURALNAME: Reacties
SINGULARNAME: Reactie

View File

@ -1,45 +1,14 @@
pl_PL: pl_PL:
Comment:
ALLOWCOMMENTS: 'Zezwól na komentarze'
COMMENT: Komentarz
COMMENTBY: 'Komentarz %s'
CREATED: 'Data opublikowania'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderowane?'
NAME: 'Autor'
'ON': 'na'
OPTION_DESCRIPTION: 'Niemoderowane i oznaczone jako spam komentarze nie będą wyświetlane do momentu zatwierdzenia'
PARENTTITLE: Rodzic
PLURALNAME: Komentarze
ParentComment_Title: 'Ten komentarz jest odpowiedzią na komentarz poniżej'
SINGULARNAME: Komentarz
URL: URL
CommentAdmin:
ADMIN_PERMISSION: 'Dostęp do sekcji "Komentarze"'
ApprovedComments: Zatwierdzone
Comments: Zatwierdzone
MENUTITLE: Komentarze
Moderated: Moderowane
NeedsModeration: 'Wymaga moderacji'
NewComments: Nowy
SpamComments: Spam
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Wprowadź swój komentarz' COMMENT_MESSAGE_REQUIRED: 'Wprowadź swój komentarz'
COMMENT_MESSAGE_URL: 'Wprowadź poprawny adres URL' COMMENT_MESSAGE_URL: 'Wprowadź poprawny adres URL'
EMAILADDRESS_MESSAGE_EMAIL: 'Wprowadź poprawny adres email' EMAILADDRESS_MESSAGE_EMAIL: 'Wprowadź poprawny adres email'
EMAILADDRESS_MESSAGE_REQUIRED: 'Wprowadź swój adres email' EMAILADDRESS_MESSAGE_REQUIRED: 'Wprowadź swój adres email'
POST: Wyślij POST: Wyślij
PREVIEW: Podgląd PREVIEW: 'Podgląd'
PREVIEWLABEL: Podgląd PREVIEWLABEL: 'Podgląd'
YOURNAME: 'Twoja nazwa' YOURNAME: 'Twoja nazwa'
YOURNAME_MESSAGE_REQUIRED: 'Wprowadź swoje imie' YOURNAME_MESSAGE_REQUIRED: 'Wprowadź swoje imie'
CommentingController:
COMMENTS: Komentarze
EMAILADDRESS: 'Twój adres email (nie będzie widoczny)'
PERMISSIONFAILURE: 'Nie można dodać komentarza na tej stronie. Upewnij się, że jesteś zalogowany i masz odpowednie uprawnienia.'
RSSTITLE: 'Komentarze z RSS'
WEBSITEURL: 'Adres Twojej strony'
Comments: Comments:
COMMENTSREQUIRELOGIN: 'Zaloguj się aby dodać komentarz' COMMENTSREQUIRELOGIN: 'Zaloguj się aby dodać komentarz'
CommentsAdmin: CommentsAdmin:
@ -48,24 +17,19 @@ pl_PL:
NeedsModeration: 'Wymagają moderacji' NeedsModeration: 'Wymagają moderacji'
NewComments: Nowe NewComments: Nowe
SpamComments: Spam SpamComments: Spam
CommentsExtension:
COMMENTOPTIONS: Komentarze
MODERATIONREQUIRED_NONE: 'Komentarze nie wymagają moderacji'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Moderuj tylko niezarejestrowanych użytkowników'
MODERATIONREQUIRED_REQUIRED: 'Moderuj wszystkie komentarze'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Twój komentarz został wysłany i czeka na akceptację przez moderatora.' AWAITINGMODERATION: 'Twój komentarz został wysłany i czeka na akceptację przez moderatora.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
APPROVE: 'zatwierdź' APPROVE: zatwierdź
ISNTSPAM: 'nie spam' ISNTSPAM: 'nie spam'
ISSPAM: 'oznacz spam' ISSPAM: 'oznacz spam'
PBY: 'Dodany przez' PBY: 'Dodany przez'
REMCOM: 'odrzuć' REMCOM: odrzuć
CommentsInterface_ss: CommentsInterface_ss:
AWAITINGMODERATION: 'Twój komentarz został wysłany i czeka na akceptację przez moderatora.' AWAITINGMODERATION: 'Twój komentarz został wysłany i czeka na akceptację przez moderatora.'
COMMENTLOGINERROR: 'Nie można dodać komentarza dopóki nie będziesz zalogowany' COMMENTLOGINERROR: 'Nie można dodać komentarza dopóki nie będziesz zalogowany'
COMMENTPERMISSIONERROR: 'i że masz odpowiednie uprawnienia' COMMENTPERMISSIONERROR: 'i że masz odpowiednie uprawnienia'
COMMENTPOSTLOGIN: 'Zaloguj' COMMENTPOSTLOGIN: Zaloguj
COMMENTS: Komentarze COMMENTS: Komentarze
COMMENTSDISABLED: 'Dodawanie komentarzy zostało wyłączone' COMMENTSDISABLED: 'Dodawanie komentarzy zostało wyłączone'
DELETEALLCOMMENTS: 'Usuń wszystkie komentarze na tej stronie' DELETEALLCOMMENTS: 'Usuń wszystkie komentarze na tej stronie'
@ -78,3 +42,39 @@ pl_PL:
RSSFEEDCOMMENTS: 'Kanał RSS dla komentarzy na tej stronie' RSSFEEDCOMMENTS: 'Kanał RSS dla komentarzy na tej stronie'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Usuń wszystkie komentarze na tej stronie' DELETEALLCOMMENTS: 'Usuń wszystkie komentarze na tej stronie'
SilverStripe\Comments\Admin\CommentAdmin:
ADMIN_PERMISSION: 'Dostęp do sekcji "Komentarze"'
ApprovedComments: Zatwierdzone
Comments: Zatwierdzone
MENUTITLE: Komentarze
Moderated: Moderowane
NeedsModeration: 'Wymaga moderacji'
NewComments: Nowy
SpamComments: Spam
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentarze
EMAILADDRESS: 'Twój adres email (nie będzie widoczny)'
PERMISSIONFAILURE: 'Nie można dodać komentarza na tej stronie. Upewnij się, że jesteś zalogowany i masz odpowednie uprawnienia.'
RSSTITLE: 'Komentarze z RSS'
WEBSITEURL: 'Adres Twojej strony'
SilverStripe\Comments\Extensions\CommentsExtension:
COMMENTOPTIONS: Komentarze
MODERATIONREQUIRED_NONE: 'Komentarze nie wymagają moderacji'
MODERATIONREQUIRED_NONMEMBERSONLY: 'Moderuj tylko niezarejestrowanych użytkowników'
MODERATIONREQUIRED_REQUIRED: 'Moderuj wszystkie komentarze'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Zezwól na komentarze'
COMMENT: Komentarz
COMMENTBY: 'Komentarz %s'
CREATED: 'Data opublikowania'
EMAIL: Email
ISSPAM: 'Spam?'
MODERATED: 'Moderowane?'
NAME: Autor
'ON': na
OPTION_DESCRIPTION: 'Niemoderowane i oznaczone jako spam komentarze nie będą wyświetlane do momentu zatwierdzenia'
PARENTTITLE: Rodzic
PLURALNAME: Komentarze
ParentComment_Title: 'Ten komentarz jest odpowiedzią na komentarz poniżej'
SINGULARNAME: Komentarz
URL: URL

View File

@ -1,5 +1,47 @@
ro: ro:
Comment: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Vă rugăm să introduceți un comentariu'
COMMENT_MESSAGE_URL: 'Vă rugăm să introduceți un URL valid'
EMAILADDRESS_MESSAGE_EMAIL: 'Vă rugăm să introduceți uo adresă de e-mail validă'
EMAILADDRESS_MESSAGE_REQUIRED: 'Vă rugăm să vă introduceți adresa de e-mail'
POST: Publică
PREVIEW: 'Vizualizare înaintea publicării'
PREVIEWLABEL: 'Vizualizare înaintea publicării'
YOURNAME: 'Numele dvs.'
YOURNAME_MESSAGE_REQUIRED: 'Vă rugăm să vă introduceți numele'
CommentsAdmin:
NeedsModeration: 'Necesită moderare'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Comentariul dvs. a fost trimis și așteaptă să fie moderat.'
CommentsInterface_singlecomment_ss:
PBY: 'Publicat de'
CommentsInterface_ss:
AWAITINGMODERATION: 'Comentariul dvs. a fost trimis și așteaptă să fie moderat.'
COMMENTLOGINERROR: 'Publicarea de comentarii necesită autentificare pe site'
COMMENTPERMISSIONERROR: 'și că aveți nivelul de permisiune corespunzător'
COMMENTPOSTLOGIN: Autentificare
COMMENTS: Comentarii
COMMENTSDISABLED: 'Postarea de comentarii a fost dezactivată'
LOGINTOPOSTCOMMENT: 'Autentificaţi-vă pentru a publica un comentariu'
NEXT: următorul
NOCOMMENTSYET: 'Nimeni nu a comentat încă pe aceasta pagină.'
POSTCOM: 'Publicaţi-vă comentariul'
PREV: anteriorul
RSSFEEDALLCOMMENTS: 'RSS pentru toate comentariile'
RSSFEEDCOMMENTS: 'RSS pentru comentariile de pe această pagină'
PageCommentInterface:
DELETEALLCOMMENTS: 'Ştergeţi toate comentariile de pe această pagină'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Commentarii
Moderated: Moderat
NeedsModeration: 'Necesită moderare'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Commentarii
EMAILADDRESS: 'Adresa dvs. de e-mail (nu va fi publicată)'
PERMISSIONFAILURE: 'Nu puteţi publica comentarii pe această pagină. Vă rugăm să vă asiguaţi că sunteți autentificat și că aveşi nivelul de permisiune corespunzător.'
RSSTITLE: 'RSS feed pentru comentarii'
WEBSITEURL: 'URL Site web'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Acceptare comentarii' ALLOWCOMMENTS: 'Acceptare comentarii'
COMMENT: Comentariu COMMENT: Comentariu
COMMENTBY: 'Comentat de %s' COMMENTBY: 'Comentat de %s'
@ -12,45 +54,3 @@ ro:
PLURALNAME: Comentarii PLURALNAME: Comentarii
SINGULARNAME: Comentariu SINGULARNAME: Comentariu
URL: URL URL: URL
CommentAdmin:
MENUTITLE: Commentarii
Moderated: Moderat
NeedsModeration: 'Necesită moderare'
CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Vă rugăm să introduceți un comentariu'
COMMENT_MESSAGE_URL: 'Vă rugăm să introduceți un URL valid'
EMAILADDRESS_MESSAGE_EMAIL: 'Vă rugăm să introduceți uo adresă de e-mail validă'
EMAILADDRESS_MESSAGE_REQUIRED: 'Vă rugăm să vă introduceți adresa de e-mail'
POST: Publică
PREVIEW: Vizualizare înaintea publicării
PREVIEWLABEL: Vizualizare înaintea publicării
YOURNAME: 'Numele dvs.'
YOURNAME_MESSAGE_REQUIRED: 'Vă rugăm să vă introduceți numele'
CommentingController:
COMMENTS: Commentarii
EMAILADDRESS: 'Adresa dvs. de e-mail (nu va fi publicată)'
PERMISSIONFAILURE: 'Nu puteţi publica comentarii pe această pagină. Vă rugăm să vă asiguaţi că sunteți autentificat și că aveşi nivelul de permisiune corespunzător.'
RSSTITLE: 'RSS feed pentru comentarii'
WEBSITEURL: 'URL Site web'
CommentsAdmin:
NeedsModeration: 'Necesită moderare'
CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Comentariul dvs. a fost trimis și așteaptă să fie moderat.'
CommentsInterface_singlecomment_ss:
PBY: 'Publicat de'
CommentsInterface_ss:
AWAITINGMODERATION: 'Comentariul dvs. a fost trimis și așteaptă să fie moderat.'
COMMENTLOGINERROR: 'Publicarea de comentarii necesită autentificare pe site'
COMMENTPERMISSIONERROR: 'și că aveți nivelul de permisiune corespunzător'
COMMENTPOSTLOGIN: 'Autentificare'
COMMENTS: Comentarii
COMMENTSDISABLED: 'Postarea de comentarii a fost dezactivată'
LOGINTOPOSTCOMMENT: 'Autentificaţi-vă pentru a publica un comentariu'
NEXT: următorul
NOCOMMENTSYET: 'Nimeni nu a comentat încă pe aceasta pagină.'
POSTCOM: 'Publicaţi-vă comentariul'
PREV: anteriorul
RSSFEEDALLCOMMENTS: 'RSS pentru toate comentariile'
RSSFEEDCOMMENTS: 'RSS pentru comentariile de pe această pagină'
PageCommentInterface:
DELETEALLCOMMENTS: 'Ştergeţi toate comentariile de pe această pagină'

View File

@ -1,21 +1,4 @@
ru: ru:
Comment:
ALLOWCOMMENTS: 'Разрешить комментарии'
COMMENT: Комментарий
COMMENTBY: 'Комментарий автора %s'
CREATED: 'Дата добавления'
EMAIL: Email
ISSPAM: 'Спам?'
MODERATED: 'Проверено?'
NAME: 'Автор'
PARENTTITLE: Родительская
PLURALNAME: Комментарии
SINGULARNAME: Комментарий
URL: URL
CommentAdmin:
MENUTITLE: Комментарии
NewComments: Новый
SpamComments: Спам
CommentInterface: CommentInterface:
COMMENT_MESSAGE_URL: 'Пожалуйста, задайте действительный URL-адрес' COMMENT_MESSAGE_URL: 'Пожалуйста, задайте действительный URL-адрес'
EMAILADDRESS_MESSAGE_EMAIL: 'Пожалуйста, укажите действительный электронный адрес' EMAILADDRESS_MESSAGE_EMAIL: 'Пожалуйста, укажите действительный электронный адрес'
@ -23,13 +6,8 @@ ru:
POST: Отправить POST: Отправить
PREVIEW: Просмотр PREVIEW: Просмотр
PREVIEWLABEL: Просмотр PREVIEWLABEL: Просмотр
YOURNAME: 'Имя' YOURNAME: Имя
YOURNAME_MESSAGE_REQUIRED: 'Пожалуйста, укажите своё имя' YOURNAME_MESSAGE_REQUIRED: 'Пожалуйста, укажите своё имя'
CommentingController:
COMMENTS: Комментарии
EMAILADDRESS: 'Ваш электронный адрес (не будет опубликован)'
RSSTITLE: 'RSS-лента комментариев'
WEBSITEURL: 'Адрес вашего сайта'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Ваш комментарий отправлен и ожидает проверки.' AWAITINGMODERATION: 'Ваш комментарий отправлен и ожидает проверки.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
@ -44,3 +22,25 @@ ru:
NOCOMMENTSYET: 'Комментариев на этой странице пока нет.' NOCOMMENTSYET: 'Комментариев на этой странице пока нет.'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Удалить все комментарии на этой странице' DELETEALLCOMMENTS: 'Удалить все комментарии на этой странице'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Комментарии
NewComments: Новый
SpamComments: Спам
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Комментарии
EMAILADDRESS: 'Ваш электронный адрес (не будет опубликован)'
RSSTITLE: 'RSS-лента комментариев'
WEBSITEURL: 'Адрес вашего сайта'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Разрешить комментарии'
COMMENT: Комментарий
COMMENTBY: 'Комментарий автора %s'
CREATED: 'Дата добавления'
EMAIL: Email
ISSPAM: 'Спам?'
MODERATED: 'Проверено?'
NAME: Автор
PARENTTITLE: 'Родительская'
PLURALNAME: Комментарии
SINGULARNAME: Комментарий
URL: URL

View File

@ -1,5 +1,28 @@
sk_SK: sk_SK:
Comment: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Pridaj scoj komentár'
COMMENT_MESSAGE_URL: 'Vlož platbú adresu URL'
POST: Odoslať
PREVIEW: Náhľad
PREVIEWLABEL: Náhľad
YOURNAME: 'Vaše meno'
YOURNAME_MESSAGE_REQUIRED: 'Vlož svoje meno'
CommentsAdmin:
NeedsModeration: 'Vyžaduje schválenie'
CommentsInterface_ss:
COMMENTLOGINERROR: 'Komentáre môže pridávať len prihlásený užívateľ'
COMMENTS: Komentáre
COMMENTSDISABLED: 'Už nie je možné pridávať nové komentáre'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Komentáre
Moderated: Odsúhlasený
NeedsModeration: 'Vyžaduje odsúhlasenie'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentáre
EMAILADDRESS: 'Váš e-mail (nebude zverejnený)'
RSSTITLE: 'RSS feed komentárov'
WEBSITEURL: 'Vaša web stránka'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Povoliť komentáre' ALLOWCOMMENTS: 'Povoliť komentáre'
COMMENT: Komentár COMMENT: Komentár
COMMENTBY: 'Komentáre od %s' COMMENTBY: 'Komentáre od %s'
@ -11,27 +34,4 @@ sk_SK:
PARENTTITLE: Rodič PARENTTITLE: Rodič
PLURALNAME: Komentáre PLURALNAME: Komentáre
SINGULARNAME: Komentár SINGULARNAME: Komentár
URL: Web adresa URL: 'Web adresa'
CommentAdmin:
MENUTITLE: Komentáre
Moderated: Odsúhlasený
NeedsModeration: 'Vyžaduje odsúhlasenie'
CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Pridaj scoj komentár'
COMMENT_MESSAGE_URL: 'Vlož platbú adresu URL'
POST: Odoslať
PREVIEW: Náhľad
PREVIEWLABEL: Náhľad
YOURNAME: 'Vaše meno'
YOURNAME_MESSAGE_REQUIRED: 'Vlož svoje meno'
CommentingController:
COMMENTS: Komentáre
EMAILADDRESS: 'Váš e-mail (nebude zverejnený)'
RSSTITLE: 'RSS feed komentárov'
WEBSITEURL: 'Vaša web stránka'
CommentsAdmin:
NeedsModeration: 'Vyžaduje schválenie'
CommentsInterface_ss:
COMMENTLOGINERROR: 'Komentáre môže pridávať len prihlásený užívateľ'
COMMENTS: Komentáre
COMMENTSDISABLED: 'Už nie je možné pridávať nové komentáre'

View File

@ -1,21 +1,4 @@
sr@latin: sr@latin:
Comment:
ALLOWCOMMENTS: 'Dozvoli komentare'
COMMENT: Komentar
COMMENTBY: 'Autor komentara %s'
CREATED: 'Datum objavljivanja'
EMAIL: Elektronska pošta
ISSPAM: 'Zlonameran?'
MODERATED: 'Uređen?'
NAME: 'Ime autora'
PARENTTITLE: Roditelj
PLURALNAME: Komentari
SINGULARNAME: Komentar
URL: URL
CommentAdmin:
MENUTITLE: Komentari
Moderated: Uređen
NeedsModeration: 'Potrebno uređivanje'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Molimo unesite komentar' COMMENT_MESSAGE_REQUIRED: 'Molimo unesite komentar'
COMMENT_MESSAGE_URL: 'Molimo Vas da unesete ispravan URL' COMMENT_MESSAGE_URL: 'Molimo Vas da unesete ispravan URL'
@ -26,18 +9,12 @@ sr@latin:
PREVIEWLABEL: Prikaz PREVIEWLABEL: Prikaz
YOURNAME: 'Vaše ime' YOURNAME: 'Vaše ime'
YOURNAME_MESSAGE_REQUIRED: 'Molimo Vas da unesete Vaše ime' YOURNAME_MESSAGE_REQUIRED: 'Molimo Vas da unesete Vaše ime'
CommentingController:
COMMENTS: Komentari
EMAILADDRESS: 'Vaša adresa elektronske pošte (neće biti objavljeno)'
PERMISSIONFAILURE: 'Niste u mogućnosti da objavljujete komentare na ovoj strani. Molimo Vas da proverite da li ste prijavljeni i da li imate odgovarajući nivo ovlašćenja.'
RSSTITLE: 'RSS Feed komentara'
WEBSITEURL: 'URL Vašeg sajta'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Potrebno uređivanje' NeedsModeration: 'Potrebno uređivanje'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
AWAITINGMODERATION: 'Vaš komentar je prosleđen i sada čeka uređivanje.' AWAITINGMODERATION: 'Vaš komentar je prosleđen i sada čeka uređivanje.'
CommentsInterface_singlecomment_ss: CommentsInterface_singlecomment_ss:
PBY: 'Objavio' PBY: Objavio
CommentsInterface_ss: CommentsInterface_ss:
AWAITINGMODERATION: 'Vaš komentar je prosleđen i sada čeka uređivanje.' AWAITINGMODERATION: 'Vaš komentar je prosleđen i sada čeka uređivanje.'
COMMENTLOGINERROR: 'Ne možete objavljivati komentare dok se ne prijavite' COMMENTLOGINERROR: 'Ne možete objavljivati komentare dok se ne prijavite'
@ -54,3 +31,26 @@ sr@latin:
RSSFEEDCOMMENTS: 'RSS feed za komentare na ovoj strani' RSSFEEDCOMMENTS: 'RSS feed za komentare na ovoj strani'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Obriši sve komentare na ovoj strani' DELETEALLCOMMENTS: 'Obriši sve komentare na ovoj strani'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Komentari
Moderated: Uređen
NeedsModeration: 'Potrebno uređivanje'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Komentari
EMAILADDRESS: 'Vaša adresa elektronske pošte (neće biti objavljeno)'
PERMISSIONFAILURE: 'Niste u mogućnosti da objavljujete komentare na ovoj strani. Molimo Vas da proverite da li ste prijavljeni i da li imate odgovarajući nivo ovlašćenja.'
RSSTITLE: 'RSS Feed komentara'
WEBSITEURL: 'URL Vašeg sajta'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Dozvoli komentare'
COMMENT: Komentar
COMMENTBY: 'Autor komentara %s'
CREATED: 'Datum objavljivanja'
EMAIL: 'Elektronska pošta'
ISSPAM: 'Zlonameran?'
MODERATED: 'Uređen?'
NAME: 'Ime autora'
PARENTTITLE: Roditelj
PLURALNAME: Komentari
SINGULARNAME: Komentar
URL: URL

View File

@ -1,21 +1,4 @@
sv: sv:
Comment:
ALLOWCOMMENTS: 'Tillåt kommentarer'
COMMENT: Kommentarer
COMMENTBY: 'Kommentar av %s'
CREATED: 'Datum'
EMAIL: E-post
ISSPAM: 'Spam?'
MODERATED: 'Modererad?'
NAME: 'Författare'
PARENTTITLE: Överordnad sida
PLURALNAME: Kommentarer
SINGULARNAME: Kommentar
URL: URL
CommentAdmin:
MENUTITLE: Kommentarer
Moderated: Modererad
NeedsModeration: 'Kräver moderering'
CommentInterface: CommentInterface:
COMMENT_MESSAGE_REQUIRED: 'Var vänlig och skriv in din kommentar' COMMENT_MESSAGE_REQUIRED: 'Var vänlig och skriv in din kommentar'
COMMENT_MESSAGE_URL: 'Var vänlig och ange en korrekt URL' COMMENT_MESSAGE_URL: 'Var vänlig och ange en korrekt URL'
@ -26,12 +9,6 @@ sv:
PREVIEWLABEL: Förhandsgranska PREVIEWLABEL: Förhandsgranska
YOURNAME: 'Ditt namn' YOURNAME: 'Ditt namn'
YOURNAME_MESSAGE_REQUIRED: 'Var vänlig och skriv in ditt namn' YOURNAME_MESSAGE_REQUIRED: 'Var vänlig och skriv in ditt namn'
CommentingController:
COMMENTS: Kommentarer
EMAILADDRESS: 'Din e-postadress (kommer inte att publiceras)'
PERMISSIONFAILURE: 'Du kan inte skriva kommentarer på denna sida. Vänligen kontrollera att du är inloggad och har de användarrättigheter som krävs.'
RSSTITLE: 'RSS-flöde med kommentarer'
WEBSITEURL: 'Din hemsidas URL'
CommentsAdmin: CommentsAdmin:
NeedsModeration: 'Kräver moderering' NeedsModeration: 'Kräver moderering'
CommentsInterface_pendingcomment_ss: CommentsInterface_pendingcomment_ss:
@ -54,3 +31,26 @@ sv:
RSSFEEDCOMMENTS: 'RSS-flöde för kommentarer på denna sida' RSSFEEDCOMMENTS: 'RSS-flöde för kommentarer på denna sida'
PageCommentInterface: PageCommentInterface:
DELETEALLCOMMENTS: 'Radera alla kommenterar på den här sidan' DELETEALLCOMMENTS: 'Radera alla kommenterar på den här sidan'
SilverStripe\Comments\Admin\CommentAdmin:
MENUTITLE: Kommentarer
Moderated: Modererad
NeedsModeration: 'Kräver moderering'
SilverStripe\Comments\Controllers\CommentingController:
COMMENTS: Kommentarer
EMAILADDRESS: 'Din e-postadress (kommer inte att publiceras)'
PERMISSIONFAILURE: 'Du kan inte skriva kommentarer på denna sida. Vänligen kontrollera att du är inloggad och har de användarrättigheter som krävs.'
RSSTITLE: 'RSS-flöde med kommentarer'
WEBSITEURL: 'Din hemsidas URL'
SilverStripe\Comments\Model\Comment:
ALLOWCOMMENTS: 'Tillåt kommentarer'
COMMENT: Kommentarer
COMMENTBY: 'Kommentar av %s'
CREATED: Datum
EMAIL: E-post
ISSPAM: 'Spam?'
MODERATED: 'Modererad?'
NAME: Författare
PARENTTITLE: 'Överordnad sida'
PLURALNAME: Kommentarer
SINGULARNAME: Kommentar
URL: URL

View File

@ -11,6 +11,7 @@ use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form; use SilverStripe\Forms\Form;
use SilverStripe\Security\PermissionProvider; use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;
use SilverStripe\View\SSViewer;
/** /**
* Comment administration system within the CMS * Comment administration system within the CMS
@ -25,6 +26,8 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
private static $menu_title = 'Comments'; private static $menu_title = 'Comments';
private static $menu_icon_class = 'font-icon-comment';
private static $allowed_actions = array( private static $allowed_actions = array(
'approvedmarked', 'approvedmarked',
'deleteall', 'deleteall',
@ -36,12 +39,14 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
'unmoderated' 'unmoderated'
); );
private static $required_permission_codes = 'CMS_ACCESS_CommentAdmin';
public function providePermissions() public function providePermissions()
{ {
return array( return array(
"CMS_ACCESS_CommentAdmin" => array( "CMS_ACCESS_CommentAdmin" => array(
'name' => _t('CommentAdmin.ADMIN_PERMISSION', "Access to 'Comments' section"), 'name' => _t('SilverStripe\\Comments\\Admin\\CommentAdmin.ADMIN_PERMISSION', "Access to 'Comments' section"),
'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access') 'category' => _t('SilverStripe\\Security\\Permission.CMS_ACCESS_CATEGORY', 'CMS Access')
) )
); );
} }
@ -66,7 +71,7 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
$newGrid = new CommentsGridField( $newGrid = new CommentsGridField(
'NewComments', 'NewComments',
_t('CommentsAdmin.NewComments', 'New'), '',
$newComments, $newComments,
CommentsGridFieldConfig::create() CommentsGridFieldConfig::create()
); );
@ -75,7 +80,7 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
$approvedGrid = new CommentsGridField( $approvedGrid = new CommentsGridField(
'ApprovedComments', 'ApprovedComments',
_t('CommentsAdmin.ApprovedComments', 'Approved'), '',
$approvedComments, $approvedComments,
CommentsGridFieldConfig::create() CommentsGridFieldConfig::create()
); );
@ -84,7 +89,7 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
$spamGrid = new CommentsGridField( $spamGrid = new CommentsGridField(
'SpamComments', 'SpamComments',
_t('CommentsAdmin.SpamComments', 'Spam'), '',
$spamComments, $spamComments,
CommentsGridFieldConfig::create() CommentsGridFieldConfig::create()
); );
@ -95,27 +100,25 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
$fields = new FieldList( $fields = new FieldList(
$root = new TabSet( $root = new TabSet(
'Root', 'Comments',
new Tab( new Tab(
'NewComments', 'NewComments',
_t('CommentAdmin.NewComments', 'New') . ' ' . $newCount, _t(__CLASS__.'.NewComments', 'New') . ' ' . $newCount,
$newGrid $newGrid
), ),
new Tab( new Tab(
'ApprovedComments', 'ApprovedComments',
_t('CommentAdmin.ApprovedComments', 'Approved') . ' ' . $approvedCount, _t(__CLASS__.'.ApprovedComments', 'Approved') . ' ' . $approvedCount,
$approvedGrid $approvedGrid
), ),
new Tab( new Tab(
'SpamComments', 'SpamComments',
_t('CommentAdmin.SpamComments', 'Spam') . ' ' . $spamCount, _t(__CLASS__.'.SpamComments', 'Spam') . ' ' . $spamCount,
$spamGrid $spamGrid
) )
) )
); );
$root->setTemplate('CMSTabSet');
$actions = new FieldList(); $actions = new FieldList();
$form = new Form( $form = new Form(
@ -129,7 +132,7 @@ class CommentAdmin extends LeftAndMain implements PermissionProvider
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
if ($form->Fields()->hasTabset()) { if ($form->Fields()->hasTabset()) {
$form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); // $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
$form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses()); $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses());
} }

View File

@ -4,6 +4,7 @@ namespace SilverStripe\Comments\Admin;
use SilverStripe\Forms\FormField; use SilverStripe\Forms\FormField;
use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridField;
use SilverStripe\View\HTML;
class CommentsGridField extends GridField class CommentsGridField extends GridField
{ {
@ -20,7 +21,7 @@ class CommentsGridField extends GridField
$attributes['class'] .= ' spam'; $attributes['class'] .= ' spam';
} }
return FormField::create_tag( return HTML::createTag(
'tr', 'tr',
$attributes, $attributes,
$content $content

View File

@ -62,7 +62,7 @@ class CommentsGridFieldAction implements GridField_ColumnProvider, GridField_Act
$field .= GridField_FormAction::create( $field .= GridField_FormAction::create(
$gridField, $gridField,
'CustomAction' . $record->ID . 'Spam', 'CustomAction' . $record->ID . 'Spam',
_t('CommentsGridFieldAction.SPAM', 'Spam'), _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldAction.SPAM', 'Spam'),
'spam', 'spam',
array('RecordID' => $record->ID) array('RecordID' => $record->ID)
)->Field(); )->Field();
@ -72,7 +72,7 @@ class CommentsGridFieldAction implements GridField_ColumnProvider, GridField_Act
$field .= GridField_FormAction::create( $field .= GridField_FormAction::create(
$gridField, $gridField,
'CustomAction' . $record->ID . 'Approve', 'CustomAction' . $record->ID . 'Approve',
_t('CommentsGridFieldAction.APPROVE', 'Approve'), _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldAction.APPROVE', 'Approve'),
'approve', 'approve',
array('RecordID' => $record->ID) array('RecordID' => $record->ID)
)->Field(); )->Field();
@ -101,7 +101,7 @@ class CommentsGridFieldAction implements GridField_ColumnProvider, GridField_Act
// output a success message to the user // output a success message to the user
Controller::curr()->getResponse()->setStatusCode( Controller::curr()->getResponse()->setStatusCode(
200, 200,
_t('CommentsGridFieldAction.COMMENTMARKEDSPAM', 'Comment marked as spam.') _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldAction.COMMENTMARKEDSPAM', 'Comment marked as spam.')
); );
} }
@ -112,7 +112,7 @@ class CommentsGridFieldAction implements GridField_ColumnProvider, GridField_Act
// output a success message to the user // output a success message to the user
Controller::curr()->getResponse()->setStatusCode( Controller::curr()->getResponse()->setStatusCode(
200, 200,
_t('CommentsGridFieldAction.COMMENTAPPROVED', 'Comment approved.') _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldAction.COMMENTAPPROVED', 'Comment approved.')
); );
} }
} }

View File

@ -35,7 +35,7 @@ class CommentsGridFieldConfig extends GridFieldConfig_RecordEditor
$manager->addBulkAction( $manager->addBulkAction(
'spam', 'spam',
_t('CommentsGridFieldConfig.SPAM', 'Spam'), _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldConfig.SPAM', 'Spam'),
Handler::class, Handler::class,
array( array(
'isAjax' => true, 'isAjax' => true,
@ -46,7 +46,7 @@ class CommentsGridFieldConfig extends GridFieldConfig_RecordEditor
$manager->addBulkAction( $manager->addBulkAction(
'approve', 'approve',
_t('CommentsGridFieldConfig.APPROVE', 'Approve'), _t('SilverStripe\\Comments\\Admin\\CommentsGridFieldConfig.APPROVE', 'Approve'),
Handler::class, Handler::class,
array( array(
'isAjax' => true, 'isAjax' => true,

View File

@ -190,6 +190,26 @@ class CommentingController extends Controller
return singleton(CommentsExtension::class)->getCommentsOption($key); return singleton(CommentsExtension::class)->getCommentsOption($key);
} }
/**
* Returns all the commenting options for the current instance.
*
* @return array
*/
public function getOptions()
{
if ($record = $this->getOwnerRecord()) {
return $record->getCommentsOptions();
}
// Otherwise a singleton of that record
if ($class = $this->getParentClass()) {
return singleton($class)->getCommentsOptions();
}
// Otherwise just use the default options
return singleton(CommentsExtension::class)->getCommentsOptions();
}
/** /**
* Workaround for generating the link to this controller * Workaround for generating the link to this controller
* *
@ -254,7 +274,7 @@ class CommentingController extends Controller
} }
} }
$title = _t('CommentingController.RSSTITLE', "Comments RSS Feed"); $title = _t('SilverStripe\\Comments\\Controllers\\CommentingController.RSSTITLE', "Comments RSS Feed");
$comments = new PaginatedList($comments, $request); $comments = new PaginatedList($comments, $request);
$comments->setPageLength($this->getOption('comments_per_page')); $comments->setPageLength($this->getOption('comments_per_page'));
@ -455,7 +475,7 @@ class CommentingController extends Controller
*/ */
public function CommentsForm() public function CommentsForm()
{ {
return Injector::inst()->create(CommentForm::class, __FUNCTION__, $this->owner); return Injector::inst()->create(CommentForm::class, __FUNCTION__, $this);
} }

View File

@ -61,43 +61,43 @@ class CommentsExtension extends DataExtension
* *
* @config * @config
*/ */
private static $comments = array( private static $comments = [
'enabled' => true, 'enabled' => true,
'enabled_cms' => false, // 'enabled_cms' => false,
'require_login' => false, // 'require_login' => false,
'require_login_cms' => false, // 'require_login_cms' => false,
'required_permission' => false, // 'required_permission' => false,
'include_js' => true, 'include_js' => true,
'use_gravatar' => false, // 'use_gravatar' => false,
'gravatar_size' => 80, 'gravatar_size' => 80,
'gravatar_default' => 'identicon', 'gravatar_default' => 'identicon',
'gravatar_rating' => 'g', 'gravatar_rating' => 'g',
'show_comments_when_disabled' => false, // 'show_comments_when_disabled' => false,
'order_comments_by' => '"Created" DESC', 'order_comments_by' => '"Created" DESC',
'order_replies_by' => false, // 'order_replies_by' => false,
'comments_per_page' => 10, 'comments_per_page' => 10,
'comments_holder_id' => 'comments-holder', 'comments_holder_id' => 'comments-holder',
'comment_permalink_prefix' => 'comment-', 'comment_permalink_prefix' => 'comment-',
'require_moderation' => false, // 'require_moderation' => false,
'require_moderation_nonmembers' => false, // 'require_moderation_nonmembers' => false,
'require_moderation_cms' => false, // 'require_moderation_cms' => false,
'frontend_moderation' => false, // 'frontend_moderation' => false,
'frontend_spam' => false, // 'frontend_spam' => false,
'html_allowed' => false, // 'html_allowed' => false,
'html_allowed_elements' => array('a', 'img', 'i', 'b'), 'html_allowed_elements' => ['a', 'img', 'i', 'b'],
'use_preview' => false, // 'use_preview' => false,
'nested_comments' => false, // 'nested_comments' => false,
'nested_depth' => 2, 'nested_depth' => 2,
); ];
/** /**
* @var array * @var array
*/ */
private static $db = array( private static $db = [
'ProvideComments' => 'Boolean', 'ProvideComments' => 'Boolean',
'ModerationRequired' => 'Enum(\'None,Required,NonMembersOnly\',\'None\')', 'ModerationRequired' => 'Enum(\'None,Required,NonMembersOnly\',\'None\')',
'CommentsRequireLogin' => 'Boolean', 'CommentsRequireLogin' => 'Boolean',
); ];
/** /**
* {@inheritDoc} * {@inheritDoc}
@ -152,11 +152,11 @@ class CommentsExtension extends DataExtension
*/ */
public function updateSettingsFields(FieldList $fields) public function updateSettingsFields(FieldList $fields)
{ {
$options = FieldGroup::create()->setTitle(_t('CommentsExtension.COMMENTOPTIONS', 'Comments')); $options = FieldGroup::create()->setTitle(_t('SilverStripe\\Comments\\Extensions\\CommentsExtension.COMMENTOPTIONS', 'Comments'));
// Check if enabled setting should be cms configurable // Check if enabled setting should be cms configurable
if ($this->owner->getCommentsOption('enabled_cms')) { if ($this->owner->getCommentsOption('enabled_cms')) {
$options->push(new CheckboxField('ProvideComments', _t('Comment.ALLOWCOMMENTS', 'Allow Comments'))); $options->push(new CheckboxField('ProvideComments', _t('SilverStripe\\Comments\\Model\\Comment.ALLOWCOMMENTS', 'Allow Comments')));
} }
// Check if we should require users to login to comment // Check if we should require users to login to comment
@ -179,11 +179,11 @@ class CommentsExtension extends DataExtension
// Check if moderation should be enabled via cms configurable // Check if moderation should be enabled via cms configurable
if ($this->owner->getCommentsOption('require_moderation_cms')) { if ($this->owner->getCommentsOption('require_moderation_cms')) {
$moderationField = new DropdownField('ModerationRequired', _t('CommentsExtension.COMMENTMODERATION', 'Comment Moderation'), array( $moderationField = new DropdownField('ModerationRequired', _t('SilverStripe\\Comments\\Extensions\\CommentsExtension.COMMENTMODERATION', 'Comment Moderation'), array(
'None' => _t('CommentsExtension.MODERATIONREQUIRED_NONE', 'No moderation required'), 'None' => _t('SilverStripe\\Comments\\Extensions\\CommentsExtension.MODERATIONREQUIRED_NONE', 'No moderation required'),
'Required' => _t('CommentsExtension.MODERATIONREQUIRED_REQUIRED', 'Moderate all comments'), 'Required' => _t('SilverStripe\\Comments\\Extensions\\CommentsExtension.MODERATIONREQUIRED_REQUIRED', 'Moderate all comments'),
'NonMembersOnly' => _t( 'NonMembersOnly' => _t(
'CommentsExtension.MODERATIONREQUIRED_NONMEMBERSONLY', 'SilverStripe\\Comments\\Extensions\\CommentsExtension.MODERATIONREQUIRED_NONMEMBERSONLY',
'Only moderate non-members' 'Only moderate non-members'
), ),
)); ));
@ -493,9 +493,10 @@ class CommentsExtension extends DataExtension
} }
/** /**
* Get the commenting option for this object * Get the commenting option for this object.
* *
* This can be overridden in any instance or extension to customise the option available * This can be overridden in any instance or extension to customise the
* option available.
* *
* @param string $key * @param string $key
* *
@ -503,10 +504,9 @@ class CommentsExtension extends DataExtension
*/ */
public function getCommentsOption($key) public function getCommentsOption($key)
{ {
$settings = $this->owner // In case singleton is called on the extension directly $settings = $this->getCommentsOptions();
? $this->owner->config()->comments
: Config::inst()->get(__CLASS__, 'comments');
$value = null; $value = null;
if (isset($settings[$key])) { if (isset($settings[$key])) {
$value = $settings[$key]; $value = $settings[$key];
} }
@ -515,9 +515,24 @@ class CommentsExtension extends DataExtension
if ($this->owner) { if ($this->owner) {
$this->owner->extend('updateCommentsOption', $key, $value); $this->owner->extend('updateCommentsOption', $key, $value);
} }
return $value; return $value;
} }
/**
* @return array
*/
public function getCommentsOptions()
{
if ($this->owner) {
$settings = $this->owner->config()->comments;
} else {
$settings = Config::inst()->get(__CLASS__, 'comments');
}
return $settings;
}
/** /**
* Add moderation functions to the current fieldlist * Add moderation functions to the current fieldlist
* *
@ -561,13 +576,19 @@ class CommentsExtension extends DataExtension
if ($fields->hasTabSet()) { if ($fields->hasTabSet()) {
$tabs = new TabSet( $tabs = new TabSet(
'Comments', 'Comments',
new Tab('CommentsNewCommentsTab', _t('CommentAdmin.NewComments', 'New') . ' ' . $newCount, new Tab(
'CommentsNewCommentsTab',
_t('SilverStripe\\Comments\\Admin\\CommentAdmin.NewComments', 'New') . ' ' . $newCount,
$newGrid $newGrid
), ),
new Tab('CommentsCommentsTab', _t('CommentAdmin.Comments', 'Approved') . ' ' . $approvedCount, new Tab(
'CommentsCommentsTab',
_t('SilverStripe\\Comments\\Admin\\CommentAdmin.Comments', 'Approved') . ' ' . $approvedCount,
$approvedGrid $approvedGrid
), ),
new Tab('CommentsSpamCommentsTab', _t('CommentAdmin.SpamComments', 'Spam') . ' ' . $spamCount, new Tab(
'CommentsSpamCommentsTab',
_t('SilverStripe\\Comments\\Admin\\CommentAdmin.SpamComments', 'Spam') . ' ' . $spamCount,
$spamGrid $spamGrid
) )
); );

View File

@ -18,13 +18,18 @@ use SilverStripe\Core\Convert;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;
use SilverStripe\Comments\Model\Comment; use SilverStripe\Comments\Model\Comment;
use SilverStripe\Control\Controller; use SilverStripe\Control\Controller;
use SilverStripe\Comments\Controllers\CommentingController;
use SilverStripe\Core\Config\Config;
class CommentForm extends Form class CommentForm extends Form
{ {
public function __construct($name, $controller) /**
* @param string $name
* @param CommentingController $controller
*/
public function __construct($name, CommentingController $controller)
{ {
$usePreview = $controller->getOption('use_preview'); $usePreview = $controller->getOption('use_preview');
$nameRequired = _t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name'); $nameRequired = _t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name');
$emailRequired = _t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address'); $emailRequired = _t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address');
$emailInvalid = _t('CommentInterface.EMAILADDRESS_MESSAGE_EMAIL', 'Please enter a valid email address'); $emailInvalid = _t('CommentInterface.EMAILADDRESS_MESSAGE_EMAIL', 'Please enter a valid email address');
@ -40,18 +45,18 @@ class CommentForm extends Form
// Email // Email
EmailField::create( EmailField::create(
'Email', 'Email',
_t('CommentingController.EMAILADDRESS', 'Your email address (will not be published)') _t('SilverStripe\\Comments\\Controllers\\CommentingController.EMAILADDRESS', 'Your email address (will not be published)')
) )
->setCustomValidationMessage($emailRequired) ->setCustomValidationMessage($emailRequired)
->setAttribute('data-msg-required', $emailRequired) ->setAttribute('data-msg-required', $emailRequired)
->setAttribute('data-msg-email', $emailInvalid) ->setAttribute('data-msg-email', $emailInvalid)
->setAttribute('data-rule-email', true), ->setAttribute('data-rule-email', true),
// Url // Url
TextField::create('URL', _t('CommentingController.WEBSITEURL', 'Your website URL')) TextField::create('URL', _t('SilverStripe\\Comments\\Controllers\\CommentingController.WEBSITEURL', 'Your website URL'))
->setAttribute('data-msg-url', $urlInvalid) ->setAttribute('data-msg-url', $urlInvalid)
->setAttribute('data-rule-url', true), ->setAttribute('data-rule-url', true),
// Comment // Comment
TextareaField::create('Comment', _t('CommentingController.COMMENTS', 'Comments')) TextareaField::create('Comment', _t('SilverStripe\\Comments\\Controllers\\CommentingController.COMMENTS', 'Comments'))
->setCustomValidationMessage($commentRequired) ->setCustomValidationMessage($commentRequired)
->setAttribute('data-msg-required', $commentRequired) ->setAttribute('data-msg-required', $commentRequired)
), ),
@ -139,13 +144,14 @@ class CommentForm extends Form
'URL' => isset($data['URL']) ? $data['URL'] : '', 'URL' => isset($data['URL']) ? $data['URL'] : '',
'Email' => isset($data['Email']) ? $data['Email'] : '' 'Email' => isset($data['Email']) ? $data['Email'] : ''
)); ));
// allow previous value to fill if comment not stored in cookie (i.e. validation error) // allow previous value to fill if comment not stored in cookie (i.e. validation error)
$prevComment = Cookie::get('CommentsForm_Comment'); $prevComment = Cookie::get('CommentsForm_Comment');
if ($prevComment && $prevComment != '') { if ($prevComment && $prevComment != '') {
$this->loadDataFrom(array('Comment' => $prevComment)); $this->loadDataFrom(array('Comment' => $prevComment));
} }
} }
} }
/** /**
@ -192,7 +198,7 @@ class CommentForm extends Form
return Security::permissionFailure( return Security::permissionFailure(
$this, $this,
_t( _t(
'CommentingController.PERMISSIONFAILURE', 'SilverStripe\\Comments\\Controllers\\CommentingController.PERMISSIONFAILURE',
"You're not able to post comments to this page. Please ensure you are logged in and have an " "You're not able to post comments to this page. Please ensure you are logged in and have an "
. 'appropriate permission level.' . 'appropriate permission level.'
) )
@ -269,5 +275,4 @@ class CommentForm extends Form
return $this->controller->redirect(Controller::join_links($url, "#{$hash}")); return $this->controller->redirect(Controller::join_links($url, "#{$hash}"));
} }
} }

View File

@ -248,14 +248,14 @@ class Comment extends DataObject
{ {
$labels = parent::fieldLabels($includerelations); $labels = parent::fieldLabels($includerelations);
$labels['Name'] = _t('Comment.NAME', 'Author Name'); $labels['Name'] = _t('SilverStripe\\Comments\\Model\\Comment.NAME', 'Author Name');
$labels['Comment'] = _t('Comment.COMMENT', 'Comment'); $labels['Comment'] = _t('SilverStripe\\Comments\\Model\\Comment.COMMENT', 'Comment');
$labels['Email'] = _t('Comment.EMAIL', 'Email'); $labels['Email'] = _t('SilverStripe\\Comments\\Model\\Comment.EMAIL', 'Email');
$labels['URL'] = _t('Comment.URL', 'URL'); $labels['URL'] = _t('SilverStripe\\Comments\\Model\\Comment.URL', 'URL');
$labels['IsSpam'] = _t('Comment.ISSPAM', 'Spam?'); $labels['IsSpam'] = _t('SilverStripe\\Comments\\Model\\Comment.ISSPAM', 'Spam?');
$labels['Moderated'] = _t('Comment.MODERATED', 'Moderated?'); $labels['Moderated'] = _t('SilverStripe\\Comments\\Model\\Comment.MODERATED', 'Moderated?');
$labels['ParentTitle'] = _t('Comment.PARENTTITLE', 'Parent'); $labels['ParentTitle'] = _t('SilverStripe\\Comments\\Model\\Comment.PARENTTITLE', 'Parent');
$labels['Created'] = _t('Comment.CREATED', 'Date posted'); $labels['Created'] = _t('SilverStripe\\Comments\\Model\\Comment.CREATED', 'Date posted');
return $labels; return $labels;
} }
@ -623,11 +623,11 @@ class Comment extends DataObject
*/ */
public function getTitle() public function getTitle()
{ {
$title = sprintf(_t('Comment.COMMENTBY', 'Comment by %s', 'Name'), $this->getAuthorName()); $title = sprintf(_t('SilverStripe\\Comments\\Model\\Comment.COMMENTBY', 'Comment by %s', 'Name'), $this->getAuthorName());
if ($parent = $this->Parent()) { if ($parent = $this->Parent()) {
if ($parent->Title) { if ($parent->Title) {
$title .= sprintf(' %s %s', _t('Comment.ON', 'on'), $parent->Title); $title .= sprintf(' %s %s', _t('SilverStripe\\Comments\\Model\\Comment.ON', 'on'), $parent->Title);
} }
} }
@ -653,9 +653,9 @@ class Comment extends DataObject
CheckboxField::create('Moderated', $this->fieldLabel('Moderated')), CheckboxField::create('Moderated', $this->fieldLabel('Moderated')),
CheckboxField::create('IsSpam', $this->fieldLabel('IsSpam')), CheckboxField::create('IsSpam', $this->fieldLabel('IsSpam')),
)) ))
->setTitle(_t('Comment.OPTIONS', 'Options')) ->setTitle(_t('SilverStripe\\Comments\\Model\\Comment.OPTIONS', 'Options'))
->setDescription(_t( ->setDescription(_t(
'Comment.OPTION_DESCRIPTION', 'SilverStripe\\Comments\\Model\\Comment.OPTION_DESCRIPTION',
'Unmoderated and spam comments will not be displayed until approved' 'Unmoderated and spam comments will not be displayed until approved'
)) ))
); );
@ -673,7 +673,7 @@ class Comment extends DataObject
if (($parent = $this->ParentComment()) && $parent->exists()) { if (($parent = $this->ParentComment()) && $parent->exists()) {
$fields->push(new HeaderField( $fields->push(new HeaderField(
'ParentComment_Title', 'ParentComment_Title',
_t('Comment.ParentComment_Title', 'This comment is a reply to the below') _t('SilverStripe\\Comments\\Model\\Comment.ParentComment_Title', 'This comment is a reply to the below')
)); ));
// Created date // Created date
// FIXME - the method setName in DatetimeField is not chainable, hence // FIXME - the method setName in DatetimeField is not chainable, hence
@ -760,6 +760,7 @@ class Comment extends DataObject
{ {
$gravatar = ''; $gravatar = '';
$use_gravatar = $this->getOption('use_gravatar'); $use_gravatar = $this->getOption('use_gravatar');
if ($use_gravatar) { if ($use_gravatar) {
$gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower(trim($this->Email))); $gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower(trim($this->Email)));
$gravatarsize = $this->getOption('gravatar_size'); $gravatarsize = $this->getOption('gravatar_size');

View File

@ -5,7 +5,7 @@ namespace SilverStripe\Comments\Tests;
use SilverStripe\Comments\Admin\CommentAdmin; use SilverStripe\Comments\Admin\CommentAdmin;
use SilverStripe\Dev\SapphireTest; use SilverStripe\Dev\SapphireTest;
use SilverStripe\i18n\i18n; use SilverStripe\i18n\i18n;
use SilverStripe\Security\Member; use SilverStripe\Security\Security;
class CommentAdminTest extends SapphireTest class CommentAdminTest extends SapphireTest
{ {
@ -22,53 +22,20 @@ class CommentAdminTest extends SapphireTest
i18n::set_locale('fr'); i18n::set_locale('fr');
$expected = array( $expected = array(
'CMS_ACCESS_CommentAdmin' => array( 'CMS_ACCESS_CommentAdmin' => array(
# FIXME - this is a bug, missing from lang.yml files 'name' => 'Accès à la section Commentaires',
'name' => 'Access to \'Comments\' section', 'category' => 'CMS Access' // missing in core
'category' => 'Accès au CMS'
) )
); );
$this->assertEquals($expected, $commentAdmin->providePermissions()); $this->assertEquals($expected, $commentAdmin->providePermissions());
i18n::set_locale($locale); i18n::set_locale($locale);
$expected = array( $expected = array(
'CMS_ACCESS_CommentAdmin' => array( 'CMS_ACCESS_CommentAdmin' => array(
# FIXME - this is a bug, missing from lang.yml files
'name' => 'Access to \'Comments\' section', 'name' => 'Access to \'Comments\' section',
'category' => 'CMS Access' 'category' => 'CMS Access'
) )
); );
$this->assertEquals($expected, $commentAdmin->providePermissions()); $this->assertEquals($expected, $commentAdmin->providePermissions());
} }
public function testGetEditForm()
{
$commentAdmin = new CommentAdmin();
$this->logInWithPermission('CMS_ACCESS_CommentAdmin');
$form = $commentAdmin->getEditForm();
$names = $this->getFormFieldNames($form);
$expected = array(
'NewComments',
'ApprovedComments',
'SpamComments'
);
$this->assertEquals($expected, $names);
if ($member = Member::currentUser()) {
$member->logOut();
}
$form = $commentAdmin->getEditForm();
}
private function getFormFieldNames($form)
{
$result = array();
$fields = $form->Fields();
$tab = $fields->findOrMakeTab('Root');
$fields = $tab->FieldList();
foreach ($fields as $field) {
array_push($result, $field->getName());
}
return $result;
}
} }

View File

@ -15,10 +15,6 @@ use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\SecurityToken; use SilverStripe\Security\SecurityToken;
/**
* @package comments
* @subpackage tests
*/
class CommentingControllerTest extends FunctionalTest class CommentingControllerTest extends FunctionalTest
{ {
/** /**
@ -43,10 +39,14 @@ class CommentingControllerTest extends FunctionalTest
SecurityToken::inst()->disable(); SecurityToken::inst()->disable();
} }
parent::tearDown(); parent::tearDown();
Config::unnest();
} }
public function setUp() public function setUp()
{ {
Config::nest(); // additional nesting here necessary
parent::setUp(); parent::setUp();
$this->securityEnabled = SecurityToken::inst()->is_enabled(); $this->securityEnabled = SecurityToken::inst()->is_enabled();
@ -54,6 +54,39 @@ class CommentingControllerTest extends FunctionalTest
$this->autoFollowRedirection = false; $this->autoFollowRedirection = false;
} }
public function testCommentsFormUsePreview()
{
$parent = $this->objFromFixture(CommentableItem::class, 'first');
$commController = new CommentingController();
$commController->setOwnerRecord($parent);
$form = $commController->CommentsForm();
$commentsFields = $form->Fields()->first()->FieldList();
$expected = array('Name', 'Email', 'URL', 'Comment');
CommentTestHelper::assertFieldNames($this, $expected, $commentsFields);
// test with preview on
Config::modify()->merge(CommentableItem::class, 'comments', array(
'use_preview' => true
));
$parent = $this->objFromFixture(CommentableItem::class, 'first');
$commController = new CommentingController();
$commController->setOwnerRecord($parent);
$this->objFromFixture(Comment::class, 'firstComAChild1')->delete();
$this->objFromFixture(Comment::class, 'firstComAChild2')->delete();
$this->objFromFixture(Comment::class, 'firstComAChild3')->delete();
SecurityToken::inst()->disable();
$this->autoFollowRedirection = false;
$form = $commController->CommentsForm();
$commentsFields = $form->Fields()->first()->FieldList();
$expected = array('Name', 'Email', 'URL', 'Comment', 'PreviewComment');
CommentTestHelper::assertFieldNames($this, $expected, $commentsFields);
}
public function testApproveUnmoderatedComment() public function testApproveUnmoderatedComment()
{ {
SecurityToken::inst()->disable(); SecurityToken::inst()->disable();
@ -185,7 +218,7 @@ class CommentingControllerTest extends FunctionalTest
*/ */
/* /*
public function testCommentsFormLoadMemberData() { public function testCommentsFormLoadMemberData() {
Config::inst()->update('CommentableItem', 'comments', array( Config::modify()->set('CommentableItem', 'comments', array(
'use_preview' => false 'use_preview' => false
)); ));
$this->logInAs('visitor'); $this->logInAs('visitor');
@ -204,38 +237,6 @@ class CommentingControllerTest extends FunctionalTest
} }
*/ */
public function testCommentsFormUsePreview()
{
// test with preview on
Config::inst()->update(CommentableItem::class, 'comments', array(
'use_preview' => true
));
$this->objFromFixture(Comment::class, 'firstComAChild1')->delete();
$this->objFromFixture(Comment::class, 'firstComAChild2')->delete();
$this->objFromFixture(Comment::class, 'firstComAChild3')->delete();
SecurityToken::inst()->disable();
$this->autoFollowRedirection = false;
$parent = $this->objFromFixture(CommentableItem::class, 'first');
$commController = new CommentingController();
$commController->setOwnerRecord($parent);
$form = $commController->CommentsForm();
$commentsFields = $form->Fields()->first()->FieldList();
$expected = array('Name', 'Email', 'URL', 'Comment', 'PreviewComment');
CommentTestHelper::assertFieldNames($this, $expected, $commentsFields);
// Turn off preview. Assert lack of preview field
Config::inst()->update(CommentableItem::class, 'comments', array(
'use_preview' => false
));
$form = $commController->CommentsForm();
$commentsFields = $form->Fields()->first()->FieldList();
$expected = array('Name', 'Email', 'URL', 'Comment');
CommentTestHelper::assertFieldNames($this, $expected, $commentsFields);
}
public function testCommentsForm() public function testCommentsForm()
{ {
$this->autoFollowRedirection = true; $this->autoFollowRedirection = true;

View File

@ -18,7 +18,7 @@ class CommentsExtensionTest extends SapphireTest
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
protected static $fixture_file = 'comments/tests/CommentsTest.yml'; protected static $fixture_file = 'CommentsTest.yml';
/** /**
* {@inheritDoc} * {@inheritDoc}
@ -35,7 +35,7 @@ class CommentsExtensionTest extends SapphireTest
Config::nest(); Config::nest();
// Set good default values // Set good default values
Config::inst()->update(CommentsExtension::class, 'comments', array( Config::modify()->set(CommentsExtension::class, 'comments', array(
'enabled' => true, 'enabled' => true,
'enabled_cms' => false, 'enabled_cms' => false,
'require_login' => false, 'require_login' => false,
@ -53,7 +53,7 @@ class CommentsExtensionTest extends SapphireTest
); );
// Configure this dataobject // Configure this dataobject
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'enabled_cms' => true 'enabled_cms' => true
)); ));
} }
@ -64,9 +64,20 @@ class CommentsExtensionTest extends SapphireTest
parent::tearDown(); parent::tearDown();
} }
public function testGetCommentsOption()
{
Config::modify()->set(CommentableItem::class, 'comments', [
'comments_holder_id' => 'some-option'
]);
$item = $this->objFromFixture(CommentableItem::class, 'first');
$this->assertEquals('some-option', $item->getCommentsOption('comments_holder_id'));
}
public function testPopulateDefaults() public function testPopulateDefaults()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => true, 'require_moderation_cms' => true,
'require_moderation' => true, 'require_moderation' => true,
'require_moderation_nonmembers' => true 'require_moderation_nonmembers' => true
@ -77,7 +88,7 @@ class CommentsExtensionTest extends SapphireTest
$this->assertTrue($item->CommentsRequireLogin); $this->assertTrue($item->CommentsRequireLogin);
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => true, 'require_moderation_cms' => true,
'require_moderation' => true, 'require_moderation' => true,
'require_moderation_nonmembers' => true 'require_moderation_nonmembers' => true
@ -87,7 +98,6 @@ class CommentsExtensionTest extends SapphireTest
$item->populateDefaults(); $item->populateDefaults();
$this->assertFalse($item->CommentsRequireLogin); $this->assertFalse($item->CommentsRequireLogin);
} }
public function testUpdateSettingsFields() public function testUpdateSettingsFields()
@ -99,7 +109,7 @@ class CommentsExtensionTest extends SapphireTest
{ {
// the 3 options take precedence in this order, executed if true // the 3 options take precedence in this order, executed if true
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => true, 'require_moderation_cms' => true,
'require_moderation' => true, 'require_moderation' => true,
'require_moderation_nonmembers' => true 'require_moderation_nonmembers' => true
@ -122,21 +132,21 @@ class CommentsExtensionTest extends SapphireTest
$this->assertEquals('NonMembersOnly', $item->getModerationRequired()); $this->assertEquals('NonMembersOnly', $item->getModerationRequired());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => false, 'require_moderation_cms' => false,
'require_moderation' => true, 'require_moderation' => true,
'require_moderation_nonmembers' => true 'require_moderation_nonmembers' => true
)); ));
$this->assertEquals('Required', $item->getModerationRequired()); $this->assertEquals('Required', $item->getModerationRequired());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => false, 'require_moderation_cms' => false,
'require_moderation' => false, 'require_moderation' => false,
'require_moderation_nonmembers' => true 'require_moderation_nonmembers' => true
)); ));
$this->assertEquals('NonMembersOnly', $item->getModerationRequired()); $this->assertEquals('NonMembersOnly', $item->getModerationRequired());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_cms' => false, 'require_moderation_cms' => false,
'require_moderation' => false, 'require_moderation' => false,
'require_moderation_nonmembers' => false 'require_moderation_nonmembers' => false
@ -146,7 +156,7 @@ class CommentsExtensionTest extends SapphireTest
public function testGetCommentsRequireLogin() public function testGetCommentsRequireLogin()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login_cms' => true 'require_login_cms' => true
)); ));
@ -158,12 +168,12 @@ class CommentsExtensionTest extends SapphireTest
$item->CommentsRequireLogin = false; $item->CommentsRequireLogin = false;
$this->assertFalse($item->getCommentsRequireLogin()); $this->assertFalse($item->getCommentsRequireLogin());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login_cms' => false, 'require_login_cms' => false,
'require_login' => false 'require_login' => false
)); ));
$this->assertFalse($item->getCommentsRequireLogin()); $this->assertFalse($item->getCommentsRequireLogin());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login_cms' => false, 'require_login_cms' => false,
'require_login' => true 'require_login' => true
)); ));
@ -173,7 +183,7 @@ class CommentsExtensionTest extends SapphireTest
public function testAllComments() public function testAllComments()
{ {
$item = $this->objFromFixture(CommentableItem::class, 'first'); $item = $this->objFromFixture(CommentableItem::class, 'first');
$this->assertEquals(4, $items->AllComments()->count()); $this->assertEquals(4, $item->AllComments()->count());
} }
public function testAllVisibleComments() public function testAllVisibleComments()
@ -183,28 +193,28 @@ class CommentsExtensionTest extends SapphireTest
} }
$item = $this->objFromFixture(CommentableItem::class, 'second'); $item = $this->objFromFixture(CommentableItem::class, 'second');
$this->assertEquals(4, $items->AllVisibleComments()->count()); $this->assertEquals(4, $item->AllVisibleComments()->count());
} }
public function testComments() public function testComments()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => false 'nested_comments' => false
)); ));
$item = $this->objFromFixture(CommentableItem::class, 'first'); $item = $this->objFromFixture(CommentableItem::class, 'first');
$this->assertEquals(4, $items->Comments()->count()); $this->assertEquals(4, $item->Comments()->count());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true 'nested_comments' => true
)); ));
$this->assertEquals(1, $items->Comments()->count()); $this->assertEquals(1, $item->Comments()->count());
} }
public function testGetCommentsEnabled() public function testGetCommentsEnabled()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'enabled_cms' => true 'enabled_cms' => true
)); ));
@ -218,12 +228,12 @@ class CommentsExtensionTest extends SapphireTest
public function testGetCommentHolderID() public function testGetCommentHolderID()
{ {
$item = $this->objFromFixture(CommentableItem::class, 'first'); $item = $this->objFromFixture(CommentableItem::class, 'first');
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'comments_holder_id' => 'comments-holder', 'comments_holder_id' => 'commentid_test1',
)); ));
$this->assertEquals('commentid_test1', $item->getCommentHolderID()); $this->assertEquals('commentid_test1', $item->getCommentHolderID());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'comments_holder_id' => 'commtentid_test_another', 'comments_holder_id' => 'commtentid_test_another',
)); ));
$this->assertEquals('commtentid_test_another', $item->getCommentHolderID()); $this->assertEquals('commtentid_test_another', $item->getCommentHolderID());
@ -251,7 +261,7 @@ class CommentsExtensionTest extends SapphireTest
public function testGetCommentRSSLink() public function testGetCommentRSSLink()
{ {
Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local'); Config::modify()->set('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local');
$item = $this->objFromFixture(CommentableItem::class, 'first'); $item = $this->objFromFixture(CommentableItem::class, 'first');
$link = $item->getCommentRSSLink(); $link = $item->getCommentRSSLink();
@ -260,7 +270,7 @@ class CommentsExtensionTest extends SapphireTest
public function testGetCommentRSSLinkPage() public function testGetCommentRSSLinkPage()
{ {
Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local'); Config::modify()->set('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local');
$item = $this->objFromFixture(CommentableItem::class, 'first'); $item = $this->objFromFixture(CommentableItem::class, 'first');
$page = $item->getCommentRSSLinkPage(); $page = $item->getCommentRSSLinkPage();
@ -272,7 +282,7 @@ class CommentsExtensionTest extends SapphireTest
public function testCommentsForm() public function testCommentsForm()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'include_js' => false, 'include_js' => false,
'comments_holder_id' => 'comments-holder', 'comments_holder_id' => 'comments-holder',
)); ));
@ -287,21 +297,20 @@ class CommentsExtensionTest extends SapphireTest
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$this->assertContains('<h4>Post your comment</h4>', $cf); $this->assertContains('<h4>Post your comment</h4>', $cf);
// check the comments form exists // check the comments form exists
$expected = '<input type="text" name="Name" value="ADMIN User" class="text" id="comments-holder_Name" required="required"'; $expected = '<input type="text" name="Name"';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$expected = '<input type="email" name="Email" value="ADMIN@example.org" class="email text" id="comments-holder_Email"'; $expected = '<input type="email" name="Email"';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$expected = '<input type="text" name="URL" class="text" id="comments-holder_URL" data-msg-url="Please enter a valid URL"'; $expected = '<input type="text" name="URL"';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$expected = '<input type="hidden" name="ParentID" value="' . $item->ID . '" class="hidden" id="comments-holder_ParentID" />'; $expected = '<input type="hidden" name="ParentID"';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$expected = '<textarea name="Comment" class="textarea" id="comments-holder_Comment" required="required"'; $expected = '<textarea name="Comment"';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
$expected = '<input type="submit" name="action_doPostComment" value="Post" class="action" id="comments-holder_action_doPostComment"'; $expected = '<input type="submit" name="action_doPostComment" value="Post" class="action" id="comments-holder_action_doPostComment"';
@ -321,41 +330,6 @@ class CommentsExtensionTest extends SapphireTest
$expected = '<p>Reply to firstComA 3</p>'; $expected = '<p>Reply to firstComA 3</p>';
$this->assertContains($expected, $cf); $this->assertContains($expected, $cf);
// Check for JS inclusion
$backend = Requirements::backend();
$this->assertEquals(
array(),
$backend->getJavascript()
);
Config::inst()->update(
CommentableItem::class,
'comments',
array(
'include_js' => true
)
);
$cf = $item->CommentsForm();
$backend = Requirements::backend();
$javascriptRequirements = $backend->getJavascript();
$expected = array(
'framework/admin/thirdparty/jquery/jquery.js',
'framework/admin/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js',
'framework/admin/thirdparty/jquery-form/jquery.form.js',
'comments/thirdparty/jquery-validate/jquery.validate.min.js',
/**
* @todo: Is there a replacement for this? The docs are unclear
*/
// 'framework/admin/client/src/i18n.js',
'comments/javascript/lang/en.js',
'comments/javascript/CommentsInterface.js'
);
foreach ($expected as $javascript) {
$this->assertArrayHasKey($javascript, $javascriptRequirements);
};
} }
public function testAttachedToSiteTree() public function testAttachedToSiteTree()
@ -402,11 +376,6 @@ class CommentsExtensionTest extends SapphireTest
$this->assertEquals(4, sizeof($results)); $this->assertEquals(4, sizeof($results));
} }
public function testGetCommentsOption()
{
$this->markTestSkipped('TODO');
}
public function testUpdateModerationFields() public function testUpdateModerationFields()
{ {
$this->markTestSkipped('TODO'); $this->markTestSkipped('TODO');
@ -414,7 +383,7 @@ class CommentsExtensionTest extends SapphireTest
public function testUpdateCMSFields() public function testUpdateCMSFields()
{ {
Config::inst()->update( Config::modify()->set(
CommentableItem::class, CommentableItem::class,
'comments', 'comments',
array( array(
@ -426,35 +395,29 @@ class CommentsExtensionTest extends SapphireTest
$item->ProvideComments = true; $item->ProvideComments = true;
$item->write(); $item->write();
$fields = $item->getCMSFields(); $fields = $item->getCMSFields();
CommentTestHelper::assertFieldsForTab(
$this,
'Root.Comments',
array('CommentsNewCommentsTab', 'CommentsCommentsTab', 'CommentsSpamCommentsTab'),
$fields
);
CommentTestHelper::assertFieldsForTab( CommentTestHelper::assertFieldsForTab(
$this, $this,
'Root.Comments.CommentsNewCommentsTab', 'Comments.CommentsNewCommentsTab',
array('NewComments'), array('NewComments'),
$fields $fields
); );
CommentTestHelper::assertFieldsForTab( CommentTestHelper::assertFieldsForTab(
$this, $this,
'Root.Comments.CommentsCommentsTab', 'Comments.CommentsCommentsTab',
array('ApprovedComments'), array('ApprovedComments'),
$fields $fields
); );
CommentTestHelper::assertFieldsForTab( CommentTestHelper::assertFieldsForTab(
$this, $this,
'Root.Comments.CommentsSpamCommentsTab', 'Comments.CommentsSpamCommentsTab',
array('SpamComments'), array('SpamComments'),
$fields $fields
); );
Config::inst()->update( Config::modify()->set(
CommentableItem::class, CommentableItem::class,
'comments', 'comments',
array( array(
@ -474,7 +437,7 @@ class CommentsExtensionTest extends SapphireTest
$fields $fields
); );
Config::inst()->update( Config::modify()->set(
CommentableItem::class, CommentableItem::class,
'comments', 'comments',
array( array(

View File

@ -2,6 +2,8 @@
namespace SilverStripe\Comments\Tests; namespace SilverStripe\Comments\Tests;
use HTMLPurifier_Config;
use HTMLPurifier;
use ReflectionClass; use ReflectionClass;
use SilverStripe\Comments\Extensions\CommentsExtension; use SilverStripe\Comments\Extensions\CommentsExtension;
use SilverStripe\Comments\Model\Comment; use SilverStripe\Comments\Model\Comment;
@ -17,14 +19,12 @@ use SilverStripe\Dev\TestOnly;
use SilverStripe\i18n\i18n; use SilverStripe\i18n\i18n;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Security;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
/**
* @package comments
*/
class CommentsTest extends FunctionalTest class CommentsTest extends FunctionalTest
{ {
protected static $fixture_file = 'comments/tests/CommentsTest.yml'; protected static $fixture_file = 'CommentsTest.yml';
protected static $extra_dataobjects = array( protected static $extra_dataobjects = array(
CommentableItem::class, CommentableItem::class,
@ -38,22 +38,9 @@ class CommentsTest extends FunctionalTest
Config::nest(); Config::nest();
// Set good default values // Set good default values
Config::inst()->update(CommentsExtension::class, 'comments', array( Config::modify()->merge(CommentsExtension::class, 'comments', array(
'enabled' => true, 'enabled' => true,
'enabled_cms' => false, 'comment_permalink_prefix' => 'comment-'
'require_login' => false,
'require_login_cms' => false,
'required_permission' => false,
'require_moderation_nonmembers' => false,
'require_moderation' => false,
'require_moderation_cms' => false,
'frontend_moderation' => false,
'frontend_spam' => false,
));
// Configure this dataobject
Config::inst()->update(CommentableItem::class, 'comments', array(
'enabled_cms' => true
)); ));
} }
@ -67,14 +54,13 @@ class CommentsTest extends FunctionalTest
{ {
// comments don't require moderation so unmoderated comments can be // comments don't require moderation so unmoderated comments can be
// shown but not spam posts // shown but not spam posts
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation_nonmembers' => false, 'require_moderation_nonmembers' => false,
'require_moderation' => false, 'require_moderation' => false,
'require_moderation_cms' => false, 'require_moderation_cms' => false,
)); ));
$item = $this->objFromFixture(CommentableItem::class, 'spammed'); $item = $this->objFromFixture(CommentableItem::class, 'spammed');
$this->assertEquals('None', $item->ModerationRequired);
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array('Name' => 'Comment 1'), array('Name' => 'Comment 1'),
@ -82,12 +68,10 @@ class CommentsTest extends FunctionalTest
), $item->Comments(), 'Only 2 non spam posts should be shown'); ), $item->Comments(), 'Only 2 non spam posts should be shown');
// when moderated, only moderated, non spam posts should be shown. // when moderated, only moderated, non spam posts should be shown.
Config::inst()->update(CommentableItem::class, 'comments', array('require_moderation_nonmembers' => true)); Config::modify()->set(CommentableItem::class, 'comments', array('require_moderation_nonmembers' => true));
$this->assertEquals('NonMembersOnly', $item->ModerationRequired);
// Check that require_moderation overrides this option // Check that require_moderation overrides this option
Config::inst()->update(CommentableItem::class, 'comments', array('require_moderation' => true)); Config::modify()->set(CommentableItem::class, 'comments', array('require_moderation' => true));
$this->assertEquals('Required', $item->ModerationRequired);
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array('Name' => 'Comment 3') array('Name' => 'Comment 3')
@ -95,14 +79,14 @@ class CommentsTest extends FunctionalTest
$this->assertEquals(1, $item->Comments()->Count()); $this->assertEquals(1, $item->Comments()->Count());
// require_moderation_nonmembers still filters out unmoderated comments // require_moderation_nonmembers still filters out unmoderated comments
Config::inst()->update(CommentableItem::class, 'comments', array('require_moderation' => false)); Config::modify()->set(CommentableItem::class, 'comments', array('require_moderation' => false));
$this->assertEquals(1, $item->Comments()->Count()); $this->assertEquals(1, $item->Comments()->Count());
Config::inst()->update(CommentableItem::class, 'comments', array('require_moderation_nonmembers' => false)); Config::modify()->set(CommentableItem::class, 'comments', array('require_moderation_nonmembers' => false));
$this->assertEquals(2, $item->Comments()->Count()); $this->assertEquals(2, $item->Comments()->Count());
// With unmoderated comments set to display in frontend // With unmoderated comments set to display in frontend
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation' => true, 'require_moderation' => true,
'frontend_moderation' => true 'frontend_moderation' => true
)); ));
@ -112,7 +96,7 @@ class CommentsTest extends FunctionalTest
$this->assertEquals(2, $item->Comments()->Count()); $this->assertEquals(2, $item->Comments()->Count());
// With spam comments set to display in frontend // With spam comments set to display in frontend
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation' => true, 'require_moderation' => true,
'frontend_moderation' => false, 'frontend_moderation' => false,
'frontend_spam' => true, 'frontend_spam' => true,
@ -127,7 +111,7 @@ class CommentsTest extends FunctionalTest
// With spam and unmoderated comments set to display in frontend // With spam and unmoderated comments set to display in frontend
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_moderation' => true, 'require_moderation' => true,
'frontend_moderation' => true, 'frontend_moderation' => true,
'frontend_spam' => true, 'frontend_spam' => true,
@ -146,15 +130,14 @@ class CommentsTest extends FunctionalTest
*/ */
public function testCommentCMSModerationList() public function testCommentCMSModerationList()
{ {
// comments don't require moderation so unmoderated comments can be Config::modify()->merge(CommentableItem::class, 'comments', array(
// shown but not spam posts
Config::inst()->update(CommentableItem::class, 'comments', array(
'require_moderation' => true, 'require_moderation' => true,
'require_moderation_cms' => true, 'require_moderation_cms' => true,
)); ));
$item = $this->objFromFixture(CommentableItem::class, 'spammed'); $item = $this->objFromFixture(CommentableItem::class, 'spammed');
$this->assertEquals('None', $item->ModerationRequired);
$this->assertEquals('None', $item->getModerationRequired());
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array('Name' => 'Comment 1'), array('Name' => 'Comment 1'),
@ -164,12 +147,13 @@ class CommentsTest extends FunctionalTest
// when moderated, only moderated, non spam posts should be shown. // when moderated, only moderated, non spam posts should be shown.
$item->ModerationRequired = 'NonMembersOnly'; $item->ModerationRequired = 'NonMembersOnly';
$item->write(); $item->write();
$this->assertEquals('NonMembersOnly', $item->ModerationRequired);
$this->assertEquals('NonMembersOnly', $item->getModerationRequired());
// Check that require_moderation overrides this option // Check that require_moderation overrides this option
$item->ModerationRequired = 'Required'; $item->ModerationRequired = 'Required';
$item->write(); $item->write();
$this->assertEquals('Required', $item->ModerationRequired); $this->assertEquals('Required', $item->getModerationRequired());
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array('Name' => 'Comment 3') array('Name' => 'Comment 3')
@ -188,7 +172,7 @@ class CommentsTest extends FunctionalTest
public function testCanPostComment() public function testCanPostComment()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login' => false, 'require_login' => false,
'require_login_cms' => false, 'require_login_cms' => false,
'required_permission' => false, 'required_permission' => false,
@ -204,7 +188,7 @@ class CommentsTest extends FunctionalTest
$this->assertTrue($item->canPostComment()); $this->assertTrue($item->canPostComment());
// Test permission required to post // Test permission required to post
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login' => true, 'require_login' => true,
'required_permission' => 'POSTING_PERMISSION', 'required_permission' => 'POSTING_PERMISSION',
)); ));
@ -218,7 +202,7 @@ class CommentsTest extends FunctionalTest
$this->assertTrue($item->canPostComment()); $this->assertTrue($item->canPostComment());
// Test require login to post, but not any permissions // Test require login to post, but not any permissions
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'required_permission' => false, 'required_permission' => false,
)); ));
$this->assertTrue($item->CommentsRequireLogin); $this->assertTrue($item->CommentsRequireLogin);
@ -230,7 +214,7 @@ class CommentsTest extends FunctionalTest
$this->assertTrue($item->canPostComment()); $this->assertTrue($item->canPostComment());
// Test options set via CMS // Test options set via CMS
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'require_login' => true, 'require_login' => true,
'require_login_cms' => true, 'require_login_cms' => true,
)); ));
@ -452,7 +436,7 @@ class CommentsTest extends FunctionalTest
// Add p for paragraph // Add p for paragraph
// NOTE: The config method appears to append to the existing array // NOTE: The config method appears to append to the existing array
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'html_allowed_elements' => array('p'), 'html_allowed_elements' => array('p'),
)); ));
@ -488,7 +472,7 @@ class CommentsTest extends FunctionalTest
$this->markTestSkipped('HTMLPurifier class not found'); $this->markTestSkipped('HTMLPurifier class not found');
} }
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'html_allowed_elements' => array('p'), 'html_allowed_elements' => array('p'),
)); ));
@ -524,8 +508,7 @@ class CommentsTest extends FunctionalTest
*/ */
public function testDefaultEnabled() public function testDefaultEnabled()
{ {
// Ensure values are set via cms (not via config) Config::modify()->merge(CommentableItem::class, 'comments', array(
Config::inst()->update(CommentableItem::class, 'comments', array(
'enabled_cms' => true, 'enabled_cms' => true,
'require_moderation_cms' => true, 'require_moderation_cms' => true,
'require_login_cms' => true 'require_login_cms' => true
@ -550,31 +533,32 @@ class CommentsTest extends FunctionalTest
// With default = false // With default = false
// Because of config rules about falsey values, apply config to object directly // Because of config rules about falsey values, apply config to object directly
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'enabled' => false, 'enabled' => false,
'require_login' => true, 'require_login' => true,
'require_moderation' => true 'require_moderation' => true
)); ));
$obj = new CommentableItem(); $obj = new CommentableItem();
$this->assertFalse((bool)$obj->getCommentsOption('enabled'), 'Default setting is disabled'); $this->assertFalse((bool)$obj->getCommentsOption('enabled'), 'Default setting is disabled');
$this->assertFalse((bool)$obj->ProvideComments); $this->assertFalse((bool)$obj->ProvideComments);
$this->assertEquals('Required', $obj->ModerationRequired); $this->assertEquals('Required', $obj->ModerationRequired);
$this->assertTrue((bool)$obj->CommentsRequireLogin); $this->assertTrue((bool)$obj->CommentsRequireLogin);
$obj = new CommentableItemEnabled(); $obj = new CommentableItemEnabled();
$this->assertTrue((bool)$obj->ProvideComments); $this->assertTrue((bool)$obj->ProvideComments);
$this->assertEquals('Required', $obj->ModerationRequired); $this->assertEquals('Required', $obj->ModerationRequired);
$this->assertTrue((bool)$obj->CommentsRequireLogin); $this->assertTrue((bool)$obj->CommentsRequireLogin);
$obj = new CommentableItemDisabled(); $obj = new CommentableItemDisabled();
$this->assertFalse((bool)$obj->ProvideComments); $this->assertFalse((bool)$obj->ProvideComments);
$this->assertEquals('None', $obj->ModerationRequired); $this->assertEquals('None', $obj->ModerationRequired);
$this->assertFalse((bool)$obj->CommentsRequireLogin); $this->assertFalse((bool)$obj->CommentsRequireLogin);
} }
/*
When a parent comment is deleted, remove the children
*/
public function testOnBeforeDelete() public function testOnBeforeDelete()
{ {
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
@ -592,8 +576,8 @@ class CommentsTest extends FunctionalTest
$comment->delete(); $comment->delete();
// assert that the new child been deleted // assert that the new child been deleted
$this->assertFalse(DataObject::get_by_id(Comment::class, $commentID)); $this->assertNull(DataObject::get_by_id(Comment::class, $commentID));
$this->assertFalse(DataObject::get_by_id(Comment::class, $childCommentID)); $this->assertNull(DataObject::get_by_id(Comment::class, $childCommentID));
} }
public function testRequireDefaultRecords() public function testRequireDefaultRecords()
@ -672,11 +656,6 @@ class CommentsTest extends FunctionalTest
$this->assertEquals($expected, $labels); $this->assertEquals($expected, $labels);
} }
public function testGetOption()
{
$this->markTestSkipped('TODO');
}
public function testGetParent() public function testGetParent()
{ {
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
@ -793,21 +772,21 @@ class CommentsTest extends FunctionalTest
public function testGetMember() public function testGetMember()
{ {
$this->logInAs('visitor'); $this->logInAs('visitor');
$current = Member::currentUser(); $current = Security::getCurrentUser();
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$method = $this->getMethod('getMember'); $method = $this->getMethod('getMember');
// null case // null case
$member = $method->invokeArgs($comment, array()); $member = $method->invokeArgs($comment, array());
$this->assertEquals($current, $member); $this->assertEquals($current->ID, $member->ID);
// numeric ID case // numeric ID case
$member = $method->invokeArgs($comment, array($current->ID)); $member = $method->invokeArgs($comment, array($current->ID));
$this->assertEquals($current, $member); $this->assertEquals($current->ID, $member->ID);
// identity case // identity case
$member = $method->invokeArgs($comment, array($current)); $member = $method->invokeArgs($comment, array($current));
$this->assertEquals($current, $member); $this->assertEquals($current->ID, $member->ID);
} }
public function testGetAuthorName() public function testGetAuthorName()
@ -993,6 +972,11 @@ class CommentsTest extends FunctionalTest
public function testPurifyHtml() public function testPurifyHtml()
{ {
if (!class_exists(HTMLPurifier_Config::class)) {
$this->markTestSkipped('HTMLPurifier class not found');
return;
}
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$dirtyHTML = '<p><script>alert("w00t")</script>my comment</p>'; $dirtyHTML = '<p><script>alert("w00t")</script>my comment</p>';
@ -1005,41 +989,48 @@ class CommentsTest extends FunctionalTest
public function testGravatar() public function testGravatar()
{ {
// Turn gravatars on // Turn gravatars on
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'use_gravatar' => true 'use_gravatar' => true,
'gravatar_size' => 80,
'gravatar_default' => 'identicon',
'gravatar_rating' => 'g'
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$this->assertEquals( $this->assertEquals(
'http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?s' 'http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?s'
. '=80&d=identicon&r=g', . '=80&d=identicon&r=g',
$comment->gravatar() $comment->Gravatar()
); );
// Turn gravatars off // Turn gravatars off
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'use_gravatar' => false 'use_gravatar' => false
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$this->assertEquals( $this->assertEquals(
'', '',
$comment->gravatar() $comment->Gravatar()
); );
} }
public function testGetRepliesEnabled() public function testGetRepliesEnabled()
{ {
$comment = $this->objFromFixture(Comment::class, 'firstComA'); Config::modify()->merge(CommentableItem::class, 'comments', array(
Config::inst()->update(CommentableItem::class, 'comments', array(
'nested_comments' => false 'nested_comments' => false
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA');
$this->assertFalse($comment->getRepliesEnabled()); $this->assertFalse($comment->getRepliesEnabled());
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->merge(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4 'nested_depth' => 4
)); ));
$this->assertTrue($comment->getRepliesEnabled()); $this->assertTrue($comment->getRepliesEnabled());
$comment->Depth = 4; $comment->Depth = 4;
@ -1047,15 +1038,17 @@ class CommentsTest extends FunctionalTest
// 0 indicates no limit for nested_depth // 0 indicates no limit for nested_depth
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 0 'nested_depth' => 0
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA');
$comment->Depth = 234; $comment->Depth = 234;
$this->assertTrue($comment->getRepliesEnabled());
$comment->markUnapproved(); $comment->markUnapproved();
$this->assertFalse($comment->getRepliesEnabled()); $this->assertFalse($comment->getRepliesEnabled());
$comment->markSpam(); $comment->markSpam();
$this->assertFalse($comment->getRepliesEnabled()); $this->assertFalse($comment->getRepliesEnabled());
@ -1065,15 +1058,18 @@ class CommentsTest extends FunctionalTest
public function testAllReplies() public function testAllReplies()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4 'nested_depth' => 4
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$this->assertEquals( $this->assertEquals(
3, 3,
$comment->allReplies()->count() $comment->allReplies()->count()
); );
$child = new Comment(); $child = new Comment();
$child->Name = 'Fred Smith'; $child->Name = 'Fred Smith';
$child->Comment = 'This is a child comment'; $child->Comment = 'This is a child comment';
@ -1088,7 +1084,7 @@ class CommentsTest extends FunctionalTest
$comment->allReplies()->count() $comment->allReplies()->count()
); );
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => false 'nested_comments' => false
)); ));
@ -1099,7 +1095,7 @@ class CommentsTest extends FunctionalTest
{ {
CommentableItem::add_extension(CommentsExtension::class); CommentableItem::add_extension(CommentsExtension::class);
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4 'nested_depth' => 4
)); ));
@ -1137,7 +1133,7 @@ class CommentsTest extends FunctionalTest
$item->ModerationRequired = 'Required'; $item->ModerationRequired = 'Required';
$item->write(); $item->write();
Config::inst()->update(CommentableItemDisabled::class, 'comments', array( Config::modify()->set(CommentableItemDisabled::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4, 'nested_depth' => 4,
'frontend_moderation' => true 'frontend_moderation' => true
@ -1151,7 +1147,7 @@ class CommentsTest extends FunctionalTest
); );
// Turn off nesting, empty array should be returned // Turn off nesting, empty array should be returned
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => false 'nested_comments' => false
)); ));
@ -1165,25 +1161,26 @@ class CommentsTest extends FunctionalTest
public function testPagedReplies() public function testPagedReplies()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->merge(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4, 'nested_depth' => 4,
'comments_per_page' => 2 #Force 2nd page for 3 items 'comments_per_page' => 2
)); ));
$comment = $this->objFromFixture(Comment::class, 'firstComA'); $comment = $this->objFromFixture(Comment::class, 'firstComA');
$pagedList = $comment->pagedReplies(); $pagedList = $comment->pagedReplies();
$this->assertEquals( $this->assertEquals(
2, 2,
$pagedList->TotalPages() $pagedList->TotalPages()
); );
$this->assertEquals( $this->assertEquals(
3, 3,
$pagedList->getTotalItems() $pagedList->getTotalItems()
); );
//TODO - 2nd page requires controller
// Config::modify()->set(CommentableItem::class, 'comments', array(
Config::inst()->update(CommentableItem::class, 'comments', array(
'nested_comments' => false 'nested_comments' => false
)); ));
@ -1192,7 +1189,7 @@ class CommentsTest extends FunctionalTest
public function testReplyForm() public function testReplyForm()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => false, 'nested_comments' => false,
'nested_depth' => 4 'nested_depth' => 4
)); ));
@ -1204,13 +1201,14 @@ class CommentsTest extends FunctionalTest
$this->assertNull($form); $this->assertNull($form);
// parent item so show form // parent item so show form
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4 'nested_depth' => 4
)); ));
$form = $comment->replyForm(); $form = $comment->ReplyForm();
$this->assertNotNull($form);
$names = array(); $names = array();
foreach ($form->Fields() as $field) { foreach ($form->Fields() as $field) {
array_push($names, $field->getName()); array_push($names, $field->getName());
} }
@ -1237,7 +1235,7 @@ class CommentsTest extends FunctionalTest
public function testUpdateDepth() public function testUpdateDepth()
{ {
Config::inst()->update(CommentableItem::class, 'comments', array( Config::modify()->set(CommentableItem::class, 'comments', array(
'nested_comments' => true, 'nested_comments' => true,
'nested_depth' => 4 'nested_depth' => 4
)); ));

View File

@ -9,10 +9,6 @@ use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
/**
* @package comments
* @subpackage tests
*/
class CommentableItem extends DataObject implements TestOnly class CommentableItem extends DataObject implements TestOnly
{ {
private static $db = array( private static $db = array(