mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 07:51:36 +08:00
Merge branch 'tests-passed' of git://github.com/discourse/discourse into emoji_ru_localization
This commit is contained in:
commit
30d4d6f381
|
@ -1,17 +1,9 @@
|
|||
/**
|
||||
The base admin route
|
||||
|
||||
@class AdminRoute
|
||||
@extends Discourse.Route
|
||||
@namespace Discourse
|
||||
@module Discourse
|
||||
**/
|
||||
Discourse.AdminRoute = Discourse.Route.extend({
|
||||
renderTemplate: function() {
|
||||
this.render('admin/templates/admin');
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
Discourse.set('title', I18n.t('admin_title'));
|
||||
titleToken: function() {
|
||||
return I18n.t('admin_title');
|
||||
}
|
||||
});
|
||||
|
|
|
@ -10,6 +10,7 @@ var DiscourseResolver = require('discourse/ember/resolver').default;
|
|||
|
||||
window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
|
||||
rootElement: '#main',
|
||||
_docTitle: null,
|
||||
|
||||
getURL: function(url) {
|
||||
// If it's a non relative URL, return it.
|
||||
|
@ -25,13 +26,8 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
|
|||
|
||||
Resolver: DiscourseResolver,
|
||||
|
||||
titleChanged: function() {
|
||||
var title = "";
|
||||
|
||||
if (this.get('title')) {
|
||||
title += "" + (this.get('title')) + " - ";
|
||||
}
|
||||
title += Discourse.SiteSettings.title;
|
||||
_titleChanged: function() {
|
||||
var title = this.get('_docTitle') || Discourse.SiteSettings.title;
|
||||
|
||||
// if we change this we can trigger changes on document.title
|
||||
// only set if changed.
|
||||
|
@ -44,14 +40,14 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
|
|||
title = "(" + notifyCount + ") " + title;
|
||||
}
|
||||
|
||||
if(title !== document.title) {
|
||||
if (title !== document.title) {
|
||||
// chrome bug workaround see: http://stackoverflow.com/questions/2952384/changing-the-window-title-when-focussing-the-window-doesnt-work-in-chrome
|
||||
window.setTimeout(function() {
|
||||
document.title = ".";
|
||||
document.title = title;
|
||||
}, 200);
|
||||
}
|
||||
}.observes('title', 'hasFocus', 'notifyCount'),
|
||||
}.observes('_docTitle', 'hasFocus', 'notifyCount'),
|
||||
|
||||
faviconChanged: function() {
|
||||
if(Discourse.User.currentProp('dynamic_favicon')) {
|
||||
|
|
|
@ -11,11 +11,21 @@ export default ObjectController.extend(Discourse.SelectedPostsCount, {
|
|||
|
||||
maxTitleLength: Discourse.computed.setting('max_topic_title_length'),
|
||||
|
||||
contextChanged: function(){
|
||||
contextChanged: function() {
|
||||
this.set('controllers.search.searchContext', this.get('model.searchContext'));
|
||||
}.observes('topic'),
|
||||
|
||||
termChanged: function(){
|
||||
_titleChanged: function() {
|
||||
var title = this.get('title');
|
||||
if (!Em.empty(title)) {
|
||||
|
||||
// Note normally you don't have to trigger this, but topic titles can be updated
|
||||
// and are sometimes lazily loaded.
|
||||
this.send('refreshTitle');
|
||||
}
|
||||
}.observes('title'),
|
||||
|
||||
termChanged: function() {
|
||||
var dropdown = this.get('controllers.header.visibleDropdown');
|
||||
var term = this.get('controllers.search.term');
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ Discourse.Dialect.addPreProcessor(function(text) {
|
|||
if (!censorRegexp) {
|
||||
var split = censored.split("|");
|
||||
if (split && split.length) {
|
||||
censorRegexp = new RegExp(split.map(function (t) { return "(" + t.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') + ")"; }).join("|"), "ig");
|
||||
censorRegexp = new RegExp("\\b" + split.map(function (t) { return "(" + t.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') + ")"; }).join("|") + "\\b", "ig");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ Discourse.Dialect.addPreProcessor(function(text) {
|
|||
var m = censorRegexp.exec(text);
|
||||
while (m && m[0]) {
|
||||
var replacement = new Array(m[0].length+1).join('■');
|
||||
text = text.replace(m[0], replacement);
|
||||
text = text.replace(new RegExp("\\b" + m[0] + "\\b", "ig"), replacement);
|
||||
m = censorRegexp.exec(text);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,16 +12,18 @@ export default {
|
|||
// Out of the box, Discourse tries to track google analytics
|
||||
// if it is present
|
||||
if (typeof window._gaq !== 'undefined') {
|
||||
pageTracker.on('change', function() {
|
||||
window._gaq.push(['_trackPageview', window.location.pathname+window.location.search]);
|
||||
pageTracker.on('change', function(url, title) {
|
||||
window._gaq.push(["_set", "title", title]);
|
||||
window._gaq.push(['_trackPageview', url]);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Also use Universal Analytics if it is present
|
||||
if (typeof window.ga !== 'undefined') {
|
||||
pageTracker.on('change', function() {
|
||||
window.ga('send', 'pageview', window.location.pathname+window.location.search);
|
||||
pageTracker.on('change', function(url, title) {
|
||||
window.ga('send', 'pageview', {page: url, title: title});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,14 @@
|
|||
/**
|
||||
Called whenever the "page" changes. This allows us to set up analytics
|
||||
Called whenever the "page" changes. This allows us to set up analytics
|
||||
and other tracking.
|
||||
|
||||
To get notified when the page changes, you can install a hook like so:
|
||||
|
||||
```javascript
|
||||
Discourse.PageTracker.current().on('change', function(url) {
|
||||
console.log('the page changed to: ' + url);
|
||||
Discourse.PageTracker.current().on('change', function(url, title) {
|
||||
console.log('the page changed to: ' + url + ' and title ' + title);
|
||||
});
|
||||
```
|
||||
|
||||
@class PageTracker
|
||||
@namespace Discourse
|
||||
@module Discourse
|
||||
**/
|
||||
Discourse.PageTracker = Ember.Object.extend(Ember.Evented, {
|
||||
start: function() {
|
||||
|
@ -22,8 +18,8 @@ Discourse.PageTracker = Ember.Object.extend(Ember.Evented, {
|
|||
self = this;
|
||||
|
||||
router.on('didTransition', function() {
|
||||
var router = this;
|
||||
self.trigger('change', router.get('url'));
|
||||
this.send('refreshTitle');
|
||||
self.trigger('change', this.get('url'), Discourse.get('_docTitle'));
|
||||
});
|
||||
this.set('started', true);
|
||||
}
|
||||
|
|
|
@ -200,7 +200,7 @@ Discourse.Utilities = {
|
|||
var fileSizeKB = file.size / 1024;
|
||||
var maxSizeKB = Discourse.SiteSettings['max_' + type + '_size_kb'];
|
||||
if (fileSizeKB > maxSizeKB) {
|
||||
bootbox.alert(I18n.t('post.errors.' + type + '_too_large', { max_size_kb: maxSizeKB }));
|
||||
bootbox.alert(I18n.t('post.errors.file_too_large', { max_size_kb: maxSizeKB }));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -292,7 +292,7 @@ Discourse.Utilities = {
|
|||
// entity too large, usually returned from the web server
|
||||
case 413:
|
||||
var maxSizeKB = Discourse.SiteSettings.max_image_size_kb;
|
||||
bootbox.alert(I18n.t('post.errors.image_too_large', { max_size_kb: maxSizeKB }));
|
||||
bootbox.alert(I18n.t('post.errors.file_too_large', { max_size_kb: maxSizeKB }));
|
||||
return;
|
||||
|
||||
// the error message is provided by the server
|
||||
|
|
|
@ -5,9 +5,7 @@ export default Discourse.Route.extend({
|
|||
});
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
controller.set('model', model);
|
||||
Discourse.set('title', I18n.t('about.simple_title'));
|
||||
titleToken: function() {
|
||||
return I18n.t('about.simple_title');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
var ApplicationRoute = Em.Route.extend({
|
||||
|
||||
siteTitle: Discourse.computed.setting('title'),
|
||||
|
||||
actions: {
|
||||
_collectTitleTokens: function(tokens) {
|
||||
tokens.push(this.get('siteTitle'));
|
||||
Discourse.set('_docTitle', tokens.join(' - '));
|
||||
},
|
||||
|
||||
showTopicEntrance: function(data) {
|
||||
this.controllerFor('topic-entrance').send('show', data);
|
||||
},
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
export default Discourse.Route.extend({
|
||||
|
||||
model: function() {
|
||||
if (PreloadStore.get('badges')) {
|
||||
return PreloadStore.getAndRemove('badges').then(function(json) {
|
||||
|
@ -10,8 +9,7 @@ export default Discourse.Route.extend({
|
|||
}
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
controller.set('model', model);
|
||||
Discourse.set('title', I18n.t('badges.title'));
|
||||
titleToken: function() {
|
||||
return I18n.t('badges.title');
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
export default Ember.Route.extend({
|
||||
export default Discourse.Route.extend({
|
||||
serialize: function(model) {
|
||||
return {id: model.get('id'), slug: model.get('name').replace(/[^A-Za-z0-9_]+/g, '-').toLowerCase()};
|
||||
},
|
||||
|
@ -13,12 +13,18 @@ export default Ember.Route.extend({
|
|||
}
|
||||
},
|
||||
|
||||
titleToken: function() {
|
||||
var model = this.modelFor('badges.show');
|
||||
if (model) {
|
||||
return model.get('displayName');
|
||||
}
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
Discourse.UserBadge.findByBadgeId(model.get('id')).then(function(userBadges) {
|
||||
controller.set('userBadges', userBadges);
|
||||
controller.set('userBadgesLoaded', true);
|
||||
});
|
||||
controller.set('model', model);
|
||||
Discourse.set('title', model.get('displayName'));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -61,13 +61,17 @@ export default function(filter, params) {
|
|||
});
|
||||
},
|
||||
|
||||
titleToken: function() {
|
||||
var filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0}),
|
||||
model = this.currentModel;
|
||||
|
||||
return I18n.t('filters.with_category', { filter: filterText, category: model.get('name') });
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
var topics = this.get('topics'),
|
||||
periods = this.controllerFor('discovery').get('periods'),
|
||||
periodId = topics.get('for_period') || (filter.indexOf('/') > 0 ? filter.split('/')[1] : ''),
|
||||
filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0});
|
||||
|
||||
Discourse.set('title', I18n.t('filters.with_category', { filter: filterText, category: model.get('name') }));
|
||||
periodId = topics.get('for_period') || (filter.indexOf('/') > 0 ? filter.split('/')[1] : '');
|
||||
|
||||
this.controllerFor('navigation/category').set('canCreateTopic', topics.get('can_create_topic'));
|
||||
this.controllerFor('discovery/topics').setProperties({
|
||||
|
|
|
@ -32,6 +32,13 @@ export default function(filter, extras) {
|
|||
return Discourse.TopicList.list(filter, findOpts, extras);
|
||||
},
|
||||
|
||||
titleToken: function() {
|
||||
if (filter === Discourse.Utilities.defaultHomepage()) { return; }
|
||||
|
||||
var filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0});
|
||||
return I18n.t('filters.with_topics', {filter: filterText});
|
||||
},
|
||||
|
||||
setupController: function(controller, model, trans) {
|
||||
|
||||
controller.setProperties(Em.getProperties(trans, _.keys(queryParams).map(function(v){
|
||||
|
@ -39,14 +46,7 @@ export default function(filter, extras) {
|
|||
})));
|
||||
|
||||
var periods = this.controllerFor('discovery').get('periods'),
|
||||
periodId = model.get('for_period') || (filter.indexOf('/') > 0 ? filter.split('/')[1] : ''),
|
||||
filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0});
|
||||
|
||||
if (filter === Discourse.Utilities.defaultHomepage()) {
|
||||
Discourse.set('title', '');
|
||||
} else {
|
||||
Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText}));
|
||||
}
|
||||
periodId = model.get('for_period') || (filter.indexOf('/') > 0 ? filter.split('/')[1] : '');
|
||||
|
||||
this.controllerFor('discovery/topics').setProperties({
|
||||
model: model,
|
||||
|
|
|
@ -21,6 +21,29 @@ Discourse.Route = Em.Route.extend({
|
|||
Em.run.scheduleOnce('afterRender', Discourse.Route, 'cleanDOM');
|
||||
},
|
||||
|
||||
actions: {
|
||||
_collectTitleTokens: function(tokens) {
|
||||
// If there's a title token method, call it and get the token
|
||||
if (this.titleToken) {
|
||||
var t = this.titleToken();
|
||||
if (t && t.length) {
|
||||
if (t instanceof Array) {
|
||||
t.forEach(function(ti) {
|
||||
tokens.push(ti);
|
||||
});
|
||||
} else {
|
||||
tokens.push(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
refreshTitle: function() {
|
||||
this.send('_collectTitleTokens', []);
|
||||
}
|
||||
},
|
||||
|
||||
redirectIfLoginRequired: function() {
|
||||
var app = this.controllerFor('application');
|
||||
if (app.get('loginRequired')) {
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
/**
|
||||
The route for handling the "Categories" view
|
||||
|
||||
@class DiscoveryCategoriesRoute
|
||||
@extends Discourse.Route
|
||||
@namespace Discourse
|
||||
@module Discourse
|
||||
**/
|
||||
Discourse.DiscoveryCategoriesRoute = Discourse.Route.extend(Discourse.OpenComposer, {
|
||||
renderTemplate: function() {
|
||||
this.render('navigation/categories', { outlet: 'navigation-bar' });
|
||||
|
@ -31,16 +23,18 @@ Discourse.DiscoveryCategoriesRoute = Discourse.Route.extend(Discourse.OpenCompos
|
|||
});
|
||||
},
|
||||
|
||||
titleToken: function() {
|
||||
return I18n.t('filters.categories.title');
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
controller.set('model', model);
|
||||
Discourse.set('title', I18n.t('filters.categories.title'));
|
||||
|
||||
// Only show either the Create Category or Create Topic button
|
||||
this.controllerFor('navigation/categories').set('canCreateCategory', model.get('can_create_category'));
|
||||
this.controllerFor('navigation/categories').set('canCreateTopic', model.get('can_create_topic') && !model.get('can_create_category'));
|
||||
|
||||
this.openTopicDraft(model);
|
||||
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
|
|
@ -12,7 +12,15 @@ Discourse.TopicRoute = Discourse.Route.extend({
|
|||
show_deleted: { replace: true }
|
||||
},
|
||||
|
||||
titleToken: function() {
|
||||
var model = this.modelFor('topic');
|
||||
if (model) {
|
||||
return model.get('title');
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
||||
showTopicAdminMenu: function() {
|
||||
this.controllerFor("topic-admin-menu").send("show");
|
||||
},
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
export default Discourse.Route.extend({
|
||||
|
||||
titleToken: function() {
|
||||
var model = this.modelFor('user');
|
||||
var username = model.get('username');
|
||||
if (username) {
|
||||
return [I18n.t("user.profile"), username];
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
logout: function() {
|
||||
Discourse.logout();
|
||||
|
|
|
@ -17,11 +17,6 @@ export default Discourse.View.extend(AddCategoryClass, Discourse.Scrolling, {
|
|||
|
||||
postStream: Em.computed.alias('controller.postStream'),
|
||||
|
||||
_updateTitle: function() {
|
||||
var title = this.get('topic.title');
|
||||
if (title) return Discourse.set('title', _.unescape(title));
|
||||
}.observes('topic.loaded', 'topic.title'),
|
||||
|
||||
_composeChanged: function() {
|
||||
var composerController = Discourse.get('router.composerController');
|
||||
composerController.clearState();
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
export default Ember.View.extend(Discourse.ScrollTop, {
|
||||
templateName: 'user/user',
|
||||
userBinding: 'controller.content',
|
||||
|
||||
updateTitle: function() {
|
||||
var username = this.get('user.username');
|
||||
if (username) {
|
||||
Discourse.set('title', "" + (I18n.t("user.profile")) + " - " + username);
|
||||
}
|
||||
}.observes('user.loaded', 'user.username')
|
||||
userBinding: 'controller.content'
|
||||
});
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
.admin-contents table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
tr {text-align: left;}
|
||||
td, th {padding: 8px;}
|
||||
th {border-top: 1px solid scale-color-diff();}
|
||||
|
@ -539,6 +538,7 @@ section.details {
|
|||
|
||||
|
||||
.admin-flags {
|
||||
table-layout: fixed;
|
||||
|
||||
.hidden-post td.excerpt, .hidden-post td.user { opacity: 0.5; }
|
||||
.deleted td.excerpt, .deleted td.user { background-color: scale-color($danger, $lightness: 70%); }
|
||||
|
|
|
@ -583,7 +583,7 @@ iframe {
|
|||
padding: 0;
|
||||
|
||||
.badge-category {
|
||||
color: $primary;
|
||||
color: $header_primary;
|
||||
padding: 0 0 0 3px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
|
|
@ -989,8 +989,6 @@ cs:
|
|||
edit: "Bohužel nastala chyba při editaci příspěvku. Prosím zkuste to znovu."
|
||||
upload: "Bohužel nastala chyba při nahrávání příspěvku. Prosím zkuste to znovu."
|
||||
attachment_too_large: "Soubor, který se snažíte nahrát je bohužel příliš velký (maximální velikost je {{max_size_kb}}kb). Prosím zmenšete ho zkuste to znovu."
|
||||
image_too_large: "Obrázek, který se snažíte nahrát je bohužel příliš velký (maximální velikost je {{max_size_kb}}kb). Prosím zmenšete ho zkuste to znovu."
|
||||
too_many_uploads: "Bohužel, najednou smíte nahrát jen jeden soubor."
|
||||
upload_not_authorized: "Bohužel, soubor, který se snažíte nahrát, není povolený (povolené přípony: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Bohužel, noví uživatelé nemohou nahrávat obrázky."
|
||||
attachment_upload_not_allowed_for_new_user: "Bohužel, noví uživatelé nemohou nahrávat přílohy."
|
||||
|
|
|
@ -918,7 +918,6 @@ da:
|
|||
edit: "Beklager, der opstrod en fejl under redigeringen af dit indlæg. Prøv venligst igen."
|
||||
upload: "Beklager, der opstod en fejl ved upload af filen. Prøv venligst igen."
|
||||
attachment_too_large: "Beklager, filen, som du forsøger at uploade, er for store (den maksimale størrelse er {{max_size_kb}}kb)."
|
||||
image_too_large: "Beklager, billedet, som du forsøger at uploade, er for stort (den maksimale størrelse er {{max_size_kb}}kb), gør det venligst mindre og prøv igen."
|
||||
too_many_uploads: "Beklager, men du kan kun uploade én fil ad gangen."
|
||||
upload_not_authorized: "Beklager, filen, som du forsøger at uploade, er ikke godkendt (godkendte filendelser: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Beklager, nye brugere kan ikke uploade billeder."
|
||||
|
|
|
@ -941,7 +941,6 @@ de:
|
|||
edit: "Entschuldige, es gab einen Fehler beim Bearbeiten des Beitrags. Bitte versuche es noch einmal."
|
||||
upload: "Entschuldige, es gab einen Fehler beim Hochladen der Datei. Bitte versuche es noch einmal."
|
||||
attachment_too_large: "Entschuldige, die Datei, die du hochladen wolltest, ist zu groß (Maximalgröße {{max_size_kb}} KB)."
|
||||
image_too_large: "Entschuldige, das Bild, das du hochladen wolltest, ist zu groß (Maximalgröße {{max_size_kb}} KB), bitte reduziere die Dateigröße und versuche es nochmal."
|
||||
too_many_uploads: "Entschuldige, du darfst immer nur eine Datei hochladen."
|
||||
upload_not_authorized: "Entschuldige, die Datei, die du hochladen wolltest, ist nicht erlaubt (erlaubte Endungen: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Entschuldige, neue Benutzer dürfen keine Bilder hochladen."
|
||||
|
|
|
@ -1074,7 +1074,7 @@ en:
|
|||
edit: "Sorry, there was an error editing your post. Please try again."
|
||||
upload: "Sorry, there was an error uploading that file. Please try again."
|
||||
attachment_too_large: "Sorry, the file you are trying to upload is too big (maximum size is {{max_size_kb}}kb)."
|
||||
image_too_large: "Sorry, the image you are trying to upload is too big (maximum size is {{max_size_kb}}kb), please resize it and try again."
|
||||
file_too_large: "Sorry, the file you are trying to upload is too big (maximum size is {{max_size_kb}}kb)"
|
||||
too_many_uploads: "Sorry, you can only upload one file at a time."
|
||||
upload_not_authorized: "Sorry, the file you are trying to upload is not authorized (authorized extension: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Sorry, new users can not upload images."
|
||||
|
|
|
@ -951,7 +951,6 @@ es:
|
|||
edit: "Lo sentimos, hubo un error al editar tu post. Por favor, inténtalo de nuevo."
|
||||
upload: "Lo sentimos, hubo un error al subir el archivo. Por favor, inténtalo de nuevo."
|
||||
attachment_too_large: "Lo siento, el archivo que estas intentando subir es demasiado grande (el tamaño máximo es {{max_size_kb}}kb)."
|
||||
image_too_large: "Lo sentimos, la imagen que está intentando cargar es demasiado grande (el tamaño máximo es de {{max_size_kb}}kb), por favor, cambie el tamaño e inténtelo de nuevo."
|
||||
too_many_uploads: "Lo siento solo puedes subir un archivo cada vez."
|
||||
upload_not_authorized: "Lo sentimos, el archivo que intenta cargar no está autorizado (authorized extension: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Lo siento, usuarios nuevos no pueden subir imágenes."
|
||||
|
|
|
@ -946,7 +946,6 @@ fi:
|
|||
edit: "Pahoittelut, viestin muokkaus ei onnistunut. Ole hyvä ja yritä uudelleen."
|
||||
upload: "Pahoittelut, tiedoston lähetys ei onnistunut. Ole hyvä ja yritä uudelleen."
|
||||
attachment_too_large: "Pahoittelut, tiedosto jonka latausta yritit on liian suuri ( suurin tiedostokoko on {{max_size_kb}}kb)."
|
||||
image_too_large: "Pahoittelut, kuva jonka yritit ladata on liian suuri (suurin sallittu kuvakoko on {{max_size_kb}}kb), pienennä kuvaa ja yritä uudestaan."
|
||||
too_many_uploads: "Pahoittelut, voit ladata vain yhden tiedoston kerrallaan."
|
||||
upload_not_authorized: "Pahoittelut, tiedostomuoto ei ole sallittu (sallitut tiedostopäätteet: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Pahoittelut, uudet käyttjät eivät saa ladata kuvia."
|
||||
|
|
|
@ -951,7 +951,6 @@ fr:
|
|||
edit: "Désolé, il y a eu une erreur lors de l'édition de votre message. Merci de réessayer."
|
||||
upload: "Désolé, il y a eu une erreur lors de l'envoi du fichier. Merci de réessayer."
|
||||
attachment_too_large: "Désolé, le fichier que vous êtes en train d'envoyer est trop grand (taille maximum de {{max_size_kb}} Ko)."
|
||||
image_too_large: "Désolé, l'image que vous êtes en train d'envoyer est trop grande (taille maximum de {{max_size_kb}} Ko). Merci de le redimensionner et de réessayer."
|
||||
too_many_uploads: "Désolé, vous ne pouvez envoyer qu'un seul fichier à la fois."
|
||||
upload_not_authorized: "Désolé, le fichier que vous êtes en train d'envoyer n'est pas autorisé (extensions autorisées : {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Désolé, les nouveaux utilisateurs ne peuvent pas envoyer d'image."
|
||||
|
|
|
@ -947,7 +947,6 @@ he:
|
|||
edit: "סליחה, הייתה שגיאה בעריכת ההודעה שלך. אנא נסה שנית."
|
||||
upload: "סליחה, הייתה שגיאה בהעלאת הקובץ שלך. אנא נסה שנית"
|
||||
attachment_too_large: "סליחה, אך הקובץ שאתה מנסה להעלות גדול מידי (הגודל המקסימלי הוא {{max_size_kb}}kb)."
|
||||
image_too_large: "סליחה, אך התמונה שאתה מנסה להעלות גדולה מידי. (הגודל המקסימלי הוא {{max_size_kb}}kb), אנא שנה את הגודל ונסה שנית."
|
||||
too_many_uploads: "סליחה, אך ניתן להעלות רק קובץ אחת כל פעם."
|
||||
upload_not_authorized: "סליחה, אך סוג הקובץ שאתה מנסה להעלות אינו מורשה (סיומות מורשות: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "סליחה, משתמשים חדשים לא יכולים להעלות תמונות."
|
||||
|
|
|
@ -190,7 +190,6 @@ id:
|
|||
post:
|
||||
errors:
|
||||
attachment_too_large: "Maaf, file yang kamu unggah terlalu besar (ukuran maksimal {{max_size_kb}}kb)."
|
||||
image_too_large: "Maaf, file yang kamu unggah terlalu besar (ukuran maksimal {{max_size_kb}}kb), mohon diperkecil dan coba lagi."
|
||||
image_upload_not_allowed_for_new_user: "Maaf, pengguna baru belum diperbolehkan mengunggah gambar."
|
||||
attachment_upload_not_allowed_for_new_user: "Maaf, pengguna baru belum diperbolehkan mengunggah lampiran."
|
||||
revisions:
|
||||
|
|
|
@ -950,7 +950,6 @@ it:
|
|||
edit: "Spiacenti, si è verificato un errore nel modificare il tuo messaggio. Prova di nuovo."
|
||||
upload: "Spiacenti, si è verificato un errore durante il caricamento del file. Prova di nuovo."
|
||||
attachment_too_large: "Spiacenti, il file che stai tentando di caricare è troppo grande (il massimo consentito è {{max_size_kb}}kb)."
|
||||
image_too_large: "Spiacenti, l'immagine che stai cercando di caricare è troppo grande (la dimensione massima è {{max_size_kb}}kb). Ridimensionala e riprova."
|
||||
too_many_uploads: "Spiacenti, puoi caricare un solo file per volta."
|
||||
upload_not_authorized: "Spiacenti, il file che stai cercando di caricare non è autorizzato (estensioni autorizzate: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Spiacenti, i nuovi utenti non possono caricare immagini."
|
||||
|
|
|
@ -885,7 +885,6 @@ ja:
|
|||
edit: "申し訳ありませんが、ポスト編集中にエラーが発生しました。もう一度やり直してください。"
|
||||
upload: "申し訳ありませんが、ファイルアップロード中にエラーが発生しました。もう一度やり直してください。"
|
||||
attachment_too_large: "申し訳ありませんが、アップロード対象ファイルが大きすぎます (最大サイズは {{max_size_kb}}kb)。"
|
||||
image_too_large: "申し訳ありませんが、アップロード対象ファイルが大きすぎます (最大サイズは {{max_size_kb}}kb)。"
|
||||
too_many_uploads: "申し訳ありませんが、複数のファイルは同時にアップロードできません。"
|
||||
upload_not_authorized: "申し訳ありませんが、対象ファイルをアップロードする権限がありません (利用可能な拡張子: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "申し訳ありませんが、新規ユーザは画像のアップロードができません。"
|
||||
|
|
|
@ -905,7 +905,6 @@ ko:
|
|||
edit: "죄송합니다. 게시물을 수정하는 중에 오류가 발생했습니다. 다시 시도하십시오."
|
||||
upload: "죄송합니다. 파일을 업로드하는 동안 오류가 발생했습니다. 다시 시도하십시오."
|
||||
attachment_too_large: "업로드하려는 파일의 크기가 너무 큽니다. 최대 크기는 {{max_size_kb}}kb 입니다."
|
||||
image_too_large: "업로드하려는 이미지의 크기가 너무 큽니다. 최대 크기는 {{max_size_kb}}kb 입니다. 사이즈를 조정하고 다시 시도해보세요."
|
||||
too_many_uploads: "한번에 한 파일만 업로드 하실 수 있습니다."
|
||||
upload_not_authorized: "업로드 하시려는 파일 확장자는 사용이 불가능합니다 (사용가능 확장자: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "죄송합니다. 새로운 유저는 이미지를 업로드 하실 수 없습니다."
|
||||
|
|
|
@ -947,7 +947,6 @@ nb_NO:
|
|||
edit: "Beklager, det oppstod en feil ved redigeringen av ditt innlegg. Vennligst prøv igjen."
|
||||
upload: "Sorry, there was an error uploading that file. Please try again."
|
||||
attachment_too_large: "Beklager, filen du prøver å laste opp er for stor (maksimal størrelsen er {{max_size_kb}}kb)."
|
||||
image_too_large: "Beklager, filen du prøve å laste opp er for stor (maks størrelse er {{max_size_kb}}kb), vennligst reduser størrelsen og prøv igjen."
|
||||
too_many_uploads: "Beklager, du kan bare laste opp ett bilde om gangen."
|
||||
upload_not_authorized: "Beklager, filen du prøver å laste opp er ikke godkjent (godkjente filtyper: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Beklager, nye brukere kan ikke laste opp bilder"
|
||||
|
|
|
@ -935,7 +935,6 @@ nl:
|
|||
edit: "Sorry, er is iets misgegaan bij het bewerken van je bericht. Probeer het nog eens."
|
||||
upload: "Sorry, er is iets misgegaan bij het uploaden van je bestand. Probeer het nog eens."
|
||||
attachment_too_large: "Sorry, het bestand dat je wil uploaden is te groot (maximum grootte is {{max_size_kb}}kb)."
|
||||
image_too_large: "Sorry, de afbeelding je wil uploaden is te groot (maximum grootte is {{max_size_kb}}kb), verklein de afbeelding en probeer het opnieuw."
|
||||
too_many_uploads: "Sorry, je kan maar één afbeelding tegelijk uploaden."
|
||||
upload_not_authorized: "Sorry, je mag dat type bestand niet uploaden (toegestane extensies: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Sorry, nieuwe gebruikers mogen nog geen afbeeldingen uploaden."
|
||||
|
|
|
@ -995,7 +995,6 @@ pl_PL:
|
|||
edit: "Przepraszamy, podczas edytowania twojego wpisu wystąpił błąd. Spróbuj ponownie."
|
||||
upload: "Przepraszamy, wystąpił błąd podczas wczytywania Twojego pliku. Proszę, spróbuj ponownie."
|
||||
attachment_too_large: "Przepraszamy, ale plik, który chcesz wgrać jest za duży (maksymalny rozmiar to {{max_size_kb}}KB)."
|
||||
image_too_large: "Przepraszamy, ale obraz, który chcesz wgrać jest za duży (maksymalny rozmiar to {{max_size_kb}}KB), proszę zmień jego rozmiar i spróbuj ponownie."
|
||||
too_many_uploads: "Przepraszamy, ale możesz wgrać tylko jeden plik naraz."
|
||||
upload_not_authorized: "Przepraszamy, ale plik który chcesz wgrać jest niedozwolony (dozwolone rozszerzenia: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Przepraszamy, ale nowi użytkownicy nie mogą wgrywać obrazów."
|
||||
|
|
|
@ -934,7 +934,6 @@ pt:
|
|||
edit: "Desculpe, houve um erro ao editar a sua mensagem. Por favor, tente outra vez."
|
||||
upload: "Desculpe, houve um erro ao enviar esse ficheiro. Por favor, tente outra vez."
|
||||
attachment_too_large: "Desculpe, o ficheiro que está a enviar é muito grande (o tamanho máximo permitido é {{max_size_kb}}kb)."
|
||||
image_too_large: "Desculpe, o ficheiro que está a enviar é muito grande (o tamanho máximo é {{max_size_kb}}kb), por favor diminua-o e tente novamente."
|
||||
too_many_uploads: "Desculpe, apenas pode enviar um ficheiro de cada vez."
|
||||
upload_not_authorized: "Desculpe, o tipo de ficheiro que está a enviar não está autorizado (extensões autorizadas: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Desculpe, novos utilizadores não podem enviar imagens."
|
||||
|
|
|
@ -951,7 +951,6 @@ pt_BR:
|
|||
edit: "Desculpe, houve um erro ao editar sua resposta. Por favor, tente outra vez."
|
||||
upload: "Desculpe, houve um erro ao enviar esse arquivo. Por favor, tente outra vez."
|
||||
attachment_too_large: "Desculpe, o arquivo que você está tentando enviar é muito grande (o tamanho máximo permitido é {{max_size_kb}}kb)."
|
||||
image_too_large: "Desculpe, o arquivo que você está tentando enviar é muito grande (o tamanho máximo é {{max_size_kb}}kb), por favor diminua-o e tente novamente."
|
||||
too_many_uploads: "Desculpe, você pode enviar apenas um arquivos por vez."
|
||||
upload_not_authorized: "Desculpe, o tipo de arquivo que você está tentando enviar não está autorizado (extensões autorizadas: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Desculpe, novos usuário não podem enviar imagens."
|
||||
|
|
|
@ -1029,7 +1029,6 @@ ro:
|
|||
edit: "Ne pare rău , s-a semnalat o eroare în editarea postării dumneavoastră . Vă rugăm încercati iar."
|
||||
upload: "Ne pare rău ,s-a semnalat o eroare în încarcarea acelui fişier. Vă rugăm încercati iar."
|
||||
attachment_too_large: "Ne pare rău, fişierul pe care-l încarcaţi este prea mare (marimea maximă este de {{max_size_kb}}kb)."
|
||||
image_too_large: "Ne pare rău, imaginea pe care o încarcaţi este prea mare (marimea maximă este de {{max_size_kb}}kb), redimensionaţi şi încercaţi iar."
|
||||
too_many_uploads: "Ne pare rău, puteţi încarca doar cate un fişier."
|
||||
upload_not_authorized: "Ne pare rău, fişierul pe care-l încarcaţi nu este autorizat (extensia pentru autorizare: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Ne pare rău, noul utilizator nu poate încarca imagini."
|
||||
|
|
|
@ -994,7 +994,6 @@ ru:
|
|||
edit: "К сожалению, не удалось изменить сообщение. Попробуйте еще раз."
|
||||
upload: "К сожалению, не удалось загрузить файл. Попробуйте еще раз."
|
||||
attachment_too_large: "Файл, который вы пытаетесь загрузить, слишком большой (максимальный разрешенный размер {{max_size_kb}}КБ)."
|
||||
image_too_large: "Изображение, которое вы пытаетесь загрузить, слишком большое (максимальный разрешенный размер {{max_size_kb}}КБ), пожалуйста, уменьшите размер изображения и повторите попытку."
|
||||
too_many_uploads: "К сожалению, за один раз можно загрузить только одно изображение."
|
||||
upload_not_authorized: "К сожалению, вы не можете загрузить файл данного типа (список разрешенных типов файлов: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "К сожалению, загрузка изображений недоступна новым пользователям."
|
||||
|
|
|
@ -897,7 +897,6 @@ sv:
|
|||
edit: "Tyvärr, det uppstod ett fel under ändringen av ditt inlägg. Var god försök igen."
|
||||
upload: "Tyvärr, det uppstod ett fel under uppladdandet av den filen. Vad god försök igen."
|
||||
attachment_too_large: "Tyvärr, filen du försöker ladda upp är för stor (maximal storlek är {{max_size_kb}} kb)."
|
||||
image_too_large: "Tyvärr, filen som du försöker ladda upp är för stor (maxstorlek är {{max_size_kb}}kb), var god ändra storlek och försök igen."
|
||||
too_many_uploads: "Tyvärr, du kan bara ladda upp en bild i taget."
|
||||
upload_not_authorized: "Tyvärr, filen du försökte ladda upp är inte tillåten (tillåtna filtyper: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Tyvärr, nya användare kan inte ladda upp bilder."
|
||||
|
|
|
@ -717,7 +717,6 @@ uk:
|
|||
edit: "Даруйте, під час редагування допису трапилася помилка. Будь ласка, спробуйте ще раз."
|
||||
upload: "Даруйте, під час завантаження цього файлу трапилася помилка. Будь ласка, спробуйте ще раз."
|
||||
attachment_too_large: "Даруйте, але файл, який Ви намагаєтеся завантажити, надто великий (максимальний розмір складає {{max_size_kb}} кБ)."
|
||||
image_too_large: "Даруйте, але зображення, яке Ви намагаєтеся завантажити, є надто великим (максимальний розмір складає {{max_size_kb}} кБ). Будь ласка, зменшіть його та спробуйте ще раз."
|
||||
too_many_uploads: "Даруйте, але Ви можете одночасно завантажувати тільки один файл."
|
||||
upload_not_authorized: "Даруйте, але файл, який Ви намагаєтеся завантажити, є недозволеним (дозволені розширення: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "Даруйте, нові користувачі не можуть завантажувати зображення."
|
||||
|
|
|
@ -905,7 +905,6 @@ zh_CN:
|
|||
edit: "抱歉,在编辑您的帖子时发生了错误。请重试。"
|
||||
upload: "抱歉,在上传文件时发生了错误。请重试。"
|
||||
attachment_too_large: "抱歉,您上传的附件太大了(最大不能超过 {{max_size_kb}}kb)。"
|
||||
image_too_large: "抱歉,您上传的图片太大了(最大不能超过 {{max_size_kb}}kb),请调整文件大小后重新上传。"
|
||||
too_many_uploads: "抱歉, 您只能一次上传一张图片。"
|
||||
upload_not_authorized: "抱歉, 您不能上传此类型文件(可上传的文件类型有: {{authorized_extensions}})。"
|
||||
image_upload_not_allowed_for_new_user: "抱歉,新注册用户无法上传图片。"
|
||||
|
|
|
@ -901,7 +901,6 @@ zh_TW:
|
|||
edit: "抱歉,編輯你的文章時發生錯誤,請再試一次。"
|
||||
upload: "抱歉,上傳你的檔案時發生錯誤,請再試一次。"
|
||||
attachment_too_large: "抱歉,你想上傳的檔案太大 (最大限制為 {{max_size_kb}} kb)。"
|
||||
image_too_large: "抱歉,你想上傳的圖片太大 (最大限制為 {{max_size_kb}} kb),請將圖片縮小後再試一次。"
|
||||
too_many_uploads: "抱歉,一次只能上傳一個檔案。"
|
||||
upload_not_authorized: "抱歉,你想上傳的是不允許的檔案 (允許的副檔名: {{authorized_extensions}})."
|
||||
image_upload_not_allowed_for_new_user: "抱歉,新用戶不可上傳圖片。"
|
||||
|
|
|
@ -84,7 +84,7 @@ class TopicQuery
|
|||
end
|
||||
|
||||
def list_unread
|
||||
create_list(:new, {}, unread_results)
|
||||
create_list(:unread, {}, unread_results)
|
||||
end
|
||||
|
||||
def list_posted
|
||||
|
|
|
@ -485,4 +485,7 @@ test("censoring", function() {
|
|||
cooked("aw shucks, golly gee whiz.",
|
||||
"<p>aw ■■■■■■, golly gee ■■■■.</p>",
|
||||
"it censors words in the Site Settings");
|
||||
cooked("you are a whizzard! I love cheesewhiz. Whiz.",
|
||||
"<p>you are a whizzard! I love cheesewhiz. ■■■■.</p>",
|
||||
"it doesn't censor words unless they have boundaries.");
|
||||
});
|
||||
|
|
|
@ -57,7 +57,7 @@ test("prevents files that are too big from being uploaded", function() {
|
|||
sandbox.stub(bootbox, "alert");
|
||||
|
||||
not(validUpload([image]));
|
||||
ok(bootbox.alert.calledWith(I18n.t('post.errors.image_too_large', { max_size_kb: 5 })));
|
||||
ok(bootbox.alert.calledWith(I18n.t('post.errors.file_too_large', { max_size_kb: 5 })));
|
||||
});
|
||||
|
||||
var dummyBlob = function() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user