Remove unusued site_settings, show checkbox in UI for boolean values, remove restrict_access

boolean to avoid locking yourself out by setting access_password to empty string. Minor
UI tweaks.
This commit is contained in:
Robin Ward
2013-03-01 12:45:25 -05:00
parent 0c8c41b131
commit d2596c3c4c
26 changed files with 245 additions and 158 deletions

View File

@ -1,11 +1,11 @@
/** /**
This controller supports the interface for SiteSettings. This controller supports the interface for SiteSettings.
@class AdminSiteSettingsController @class AdminSiteSettingsController
@extends Ember.ArrayController @extends Ember.ArrayController
@namespace Discourse @namespace Discourse
@module Discourse @module Discourse
**/ **/
Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.Presence, { Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.Presence, {
filter: null, filter: null,
onlyOverridden: false, onlyOverridden: false,
@ -16,15 +16,18 @@ Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.P
@property filteredContent @property filteredContent
**/ **/
filteredContent: (function() { filteredContent: (function() {
var filter,
_this = this; // If we have no content, don't bother filtering anything
if (!this.present('content')) return null; if (!this.present('content')) return null;
var filter;
if (this.get('filter')) { if (this.get('filter')) {
filter = this.get('filter').toLowerCase(); filter = this.get('filter').toLowerCase();
} }
var adminSettingsController = this;
return this.get('content').filter(function(item, index, enumerable) { return this.get('content').filter(function(item, index, enumerable) {
if (_this.get('onlyOverridden') && !item.get('overridden')) return false; if (adminSettingsController.get('onlyOverridden') && !item.get('overridden')) return false;
if (filter) { if (filter) {
if (item.get('setting').toLowerCase().indexOf(filter) > -1) return true; if (item.get('setting').toLowerCase().indexOf(filter) > -1) return true;
if (item.get('description').toLowerCase().indexOf(filter) > -1) return true; if (item.get('description').toLowerCase().indexOf(filter) > -1) return true;
@ -66,5 +69,5 @@ Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.P
cancel: function(setting) { cancel: function(setting) {
setting.resetValue(); setting.resetValue();
} }
}); });

View File

@ -1,55 +1,96 @@
/** /**
Our data model for interacting with site settings. Our data model for interacting with site settings.
@class SiteSetting @class SiteSetting
@extends Discourse.Model @extends Discourse.Model
@namespace Discourse @namespace Discourse
@module Discourse @module Discourse
**/ **/
Discourse.SiteSetting = Discourse.Model.extend({ Discourse.SiteSetting = Discourse.Model.extend({
// Whether a property is short.
short: (function() {
if (this.blank('value')) return true;
return this.get('value').toString().length < 80;
}).property('value'),
// Whether the site setting has changed /**
dirty: (function() { Is the boolean setting true?
return this.get('originalValue') !== this.get('value');
}).property('originalValue', 'value'),
overridden: (function() { @property enabled
var defaultVal, val; **/
val = this.get('value'); enabled: function(key, value) {
defaultVal = this.get('default');
if (val && defaultVal) { if (arguments.length === 1) {
return val.toString() !== defaultVal.toString(); // get the boolean value of the setting
if (this.blank('value')) return false;
return this.get('value') === 'true';
} else {
// set the boolean value of the setting
this.set('value', value ? 'true' : 'false');
// We save booleans right away, it's not like a text field where it makes sense to
// undo what you typed in.
this.save();
} }
return val !== defaultVal;
}).property('value'),
}.property('value'),
/**
Has the user changed the setting? If so we should save it.
@property dirty
**/
dirty: function() {
return this.get('originalValue') !== this.get('value');
}.property('originalValue', 'value'),
/**
Has the setting been overridden from its default value?
@property overridden
**/
overridden: function() {
var val = this.get('value');
var defaultVal = this.get('default');
if (val === null) val = '';
if (defaultVal === null) defaultVal = '';
return val.toString() !== defaultVal.toString();
}.property('value'),
/**
Reset the setting to its original value.
@method resetValue
**/
resetValue: function() { resetValue: function() {
this.set('value', this.get('originalValue')); this.set('value', this.get('originalValue'));
}, },
/**
Save the setting's value.
@method save
**/
save: function() { save: function() {
// Update the setting // Update the setting
var _this = this; var setting = this;
return jQuery.ajax("/admin/site_settings/" + (this.get('setting')), { return jQuery.ajax("/admin/site_settings/" + (this.get('setting')), {
data: { value: this.get('value') }, data: { value: this.get('value') },
type: 'PUT', type: 'PUT',
success: function() { success: function() {
_this.set('originalValue', _this.get('value')); setting.set('originalValue', setting.get('value'));
} }
}); });
} }
}); });
Discourse.SiteSetting.reopenClass({ Discourse.SiteSetting.reopenClass({
/**
Retrieve all settings from the server
@method findAll
**/
findAll: function() { findAll: function() {
var result; var result = Em.A();
result = Em.A();
jQuery.get("/admin/site_settings", function(settings) { jQuery.get("/admin/site_settings", function(settings) {
return settings.each(function(s) { return settings.each(function(s) {
s.originalValue = s.value; s.originalValue = s.value;

View File

@ -1,6 +1,6 @@
<div class='admin-controls'> <div class='admin-controls'>
<div class='span15 search controls'> <div class='span15 search controls'>
<label> <label>
{{view Ember.Checkbox checkedBinding="controller.onlyOverridden"}} {{view Ember.Checkbox checkedBinding="controller.onlyOverridden"}}
{{i18n admin.site_settings.show_overriden}} {{i18n admin.site_settings.show_overriden}}
</label> </label>
@ -11,24 +11,4 @@
</div> </div>
{{#collection contentBinding="filteredContent" classNames="form-horizontal settings" itemClass="row setting"}} {{collection contentBinding="filteredContent" classNames="form-horizontal settings" itemViewClass="Discourse.SiteSettingView"}}
{{#with view.content}}
<div class='span4 offset1'>
{{unbound setting}}
</div>
<div {{bindAttr class=":span11 overridden:overridden"}}>
{{view Ember.TextField valueBinding="value" classNames="input-xxlarge"}}
<div class='desc'>{{unbound description}}</div>
</div>
{{#if dirty}}
<div class='span3'>
<button class='btn ok' {{action save this target="controller"}}><i class='icon-ok'></i></button>
<button class='btn cancel' {{action cancel this target="controller"}}><i class='icon-remove'></i></button>
</div>
{{else}}
{{#if overridden}}
<button class='btn' href='#' {{action resetDefault this target="controller"}}>{{i18n admin.site_settings.reset}}</button>
{{/if}}
{{/if}}
{{/with}}
{{/collection}}

View File

@ -0,0 +1,9 @@
{{#with view.content}}
<div class='span4 offset1'>
<h3>{{unbound setting}}</h3>
</div>
<div class="span11">
{{view Ember.Checkbox checkedBinding="enabled" value="true"}}
{{unbound description}}
</div>
{{/with}}

View File

@ -0,0 +1,19 @@
{{#with view.content}}
<div class='span4 offset1'>
<h3>{{unbound setting}}</h3>
</div>
<div class="span11">
{{view Ember.TextField valueBinding="value" classNames="input-xxlarge"}}
<div class='desc'>{{unbound description}}</div>
</div>
{{#if dirty}}
<div class='span3'>
<button class='btn ok' {{action save this}}><i class='icon-ok'></i></button>
<button class='btn cancel' {{action cancel this}}><i class='icon-remove'></i></button>
</div>
{{else}}
{{#if overridden}}
<button class='btn' href='#' {{action resetDefault this}}>{{i18n admin.site_settings.reset}}</button>
{{/if}}
{{/if}}
{{/with}}

View File

@ -3,11 +3,11 @@
/** /**
A view that wraps the ACE editor (http://ace.ajax.org/) A view that wraps the ACE editor (http://ace.ajax.org/)
@class AceEditorView @class AceEditorView
@extends Em.View @extends Discourse.View
@namespace Discourse @namespace Discourse
@module Discourse @module Discourse
**/ **/
Discourse.AceEditorView = Discourse.View.extend({ Discourse.AceEditorView = Discourse.View.extend({
mode: 'css', mode: 'css',
classNames: ['ace-wrapper'], classNames: ['ace-wrapper'],

View File

@ -3,11 +3,11 @@
/** /**
A view to handle site customizations A view to handle site customizations
@class AdminCustomizeView @class AdminCustomizeView
@extends Em.View @extends Discourse.View
@namespace Discourse @namespace Discourse
@module Discourse @module Discourse
**/ **/
Discourse.AdminCustomizeView = Discourse.View.extend({ Discourse.AdminCustomizeView = Discourse.View.extend({
templateName: 'admin/templates/customize', templateName: 'admin/templates/customize',
classNames: ['customize'], classNames: ['customize'],
@ -44,5 +44,5 @@ Discourse.AdminCustomizeView = Discourse.View.extend({
willDestroyElement: function() { willDestroyElement: function() {
return Mousetrap.unbindGlobal('meta+s', 'ctrl+s'); return Mousetrap.unbindGlobal('meta+s', 'ctrl+s');
} }
}); });

View File

@ -2,7 +2,7 @@
The default view in the admin section The default view in the admin section
@class AdminDashboardView @class AdminDashboardView
@extends Em.View @extends Discourse.View
@namespace Discourse @namespace Discourse
@module Discourse @module Discourse
**/ **/

View File

@ -0,0 +1,22 @@
/**
A view to display a site setting with edit controls
@class SiteSettingView
@extends Discourse.View
@namespace Discourse
@module Discourse
**/
Discourse.SiteSettingView = Discourse.View.extend({
classNameBindings: [':row', ':setting', 'content.overridden'],
templateName: function() {
// If we're editing a boolean, return a different template
if (this.get('content.type') === 'bool') return 'admin/templates/site_settings/setting_bool'
// Default to string editor
return 'admin/templates/site_settings/setting_string';
}.property('content.type')
});

View File

@ -128,15 +128,25 @@
.settings { .settings {
.setting { .setting {
padding-bottom: 20px; padding-bottom: 20px;
.overridden {
input[type=text] {
background-color: lighten($yellow, 40%);
}
}
.desc { .desc {
padding-top: 3px; padding-top: 3px;
color: darken($white, 40%); color: darken($white, 40%);
} }
h3 {
font-size: 13px;
font-weight: normal;
}
}
.setting.overridden {
input[type=text] {
background-color: lighten($yellow, 40%);
}
h3 {
color: darken($yellow, 20%);
}
} }
} }

View File

@ -146,7 +146,7 @@ class ApplicationController < ActionController::Base
return false if current_user.present? return false if current_user.present?
# Don't cache if there's restricted access # Don't cache if there's restricted access
return false if SiteSetting.restrict_access? return false if SiteSetting.access_password.present?
true true
end end
@ -216,7 +216,7 @@ class ApplicationController < ActionController::Base
def check_restricted_access def check_restricted_access
# note current_user is defined in the CurrentUser mixin # note current_user is defined in the CurrentUser mixin
if SiteSetting.restrict_access? && cookies[:_access] != SiteSetting.access_password if SiteSetting.access_password.present? && cookies[:_access] != SiteSetting.access_password
redirect_to request_access_path(:return_path => request.fullpath) redirect_to request_access_path(:return_path => request.fullpath)
return false return false
end end

View File

@ -15,7 +15,7 @@ class InvitesController < ApplicationController
user.enqueue_welcome_message('welcome_invite') if user.send_welcome_message user.enqueue_welcome_message('welcome_invite') if user.send_welcome_message
# We skip the access password if we come in via an invite link # We skip the access password if we come in via an invite link
cookies.permanent['_access'] = SiteSetting.access_password if SiteSetting.restrict_access? cookies.permanent['_access'] = SiteSetting.access_password if SiteSetting.access_password.present?
topic = invite.topics.first topic = invite.topics.first
if topic.present? if topic.present?

View File

@ -4,7 +4,7 @@ class RobotsTxtController < ApplicationController
skip_before_filter :check_restricted_access skip_before_filter :check_restricted_access
def index def index
path = if SiteSetting.allow_index_in_robots_txt && !SiteSetting.restrict_access path = if SiteSetting.allow_index_in_robots_txt && SiteSetting.access_password.blank?
:index :index
else else
:no_index :no_index

View File

@ -16,7 +16,6 @@ class SiteSetting < ActiveRecord::Base
setting(:company_short_name, 'Unconfigured Forum') setting(:company_short_name, 'Unconfigured Forum')
setting(:company_domain, 'www.example.com') setting(:company_domain, 'www.example.com')
client_setting(:traditional_markdown_linebreaks, false) client_setting(:traditional_markdown_linebreaks, false)
client_setting(:popup_delay, 1500)
client_setting(:top_menu, 'popular|new|unread|favorited|categories') client_setting(:top_menu, 'popular|new|unread|favorited|categories')
client_setting(:post_menu, 'like|edit|flag|delete|share|bookmark|reply') client_setting(:post_menu, 'like|edit|flag|delete|share|bookmark|reply')
client_setting(:track_external_right_clicks, false) client_setting(:track_external_right_clicks, false)
@ -48,7 +47,6 @@ class SiteSetting < ActiveRecord::Base
setting(:port, Rails.env.development? ? 3000 : '') setting(:port, Rails.env.development? ? 3000 : '')
setting(:enable_private_messages, true) setting(:enable_private_messages, true)
setting(:use_ssl, false) setting(:use_ssl, false)
setting(:restrict_access, false)
setting(:access_password) setting(:access_password)
setting(:queue_jobs, !Rails.env.test?) setting(:queue_jobs, !Rails.env.test?)
setting(:crawl_images, !Rails.env.test?) setting(:crawl_images, !Rails.env.test?)

View File

@ -1,6 +1,7 @@
development: development:
adapter: postgresql adapter: postgresql
database: discourse_development database: discourse_development
min_messages: warning
host: localhost host: localhost
pool: 5 pool: 5
timeout: 5000 timeout: 5000
@ -13,6 +14,7 @@ development:
test: test:
adapter: postgresql adapter: postgresql
database: discourse_test database: discourse_test
min_messages: warning
host: localhost host: localhost
pool: 5 pool: 5
timeout: 5000 timeout: 5000

View File

@ -1,7 +1,7 @@
# #
# Dutch translation for Discourse # Dutch translation for Discourse
# contributed by Vincent Veldkamp (vincent@retroga.me) 2/14/13 # contributed by Vincent Veldkamp (vincent@retroga.me) 2/14/13
# #
nl: nl:
title: "Discourse" title: "Discourse"
@ -39,7 +39,7 @@ nl:
trust_levels: trust_levels:
new: new:
title: "nieuwe gebruiker" title: "nieuwe gebruiker"
basic: basic:
title: "basisgebruiker" title: "basisgebruiker"
regular: regular:
title: "gemiddelde gebruiker" title: "gemiddelde gebruiker"
@ -64,7 +64,7 @@ nl:
datetime: datetime:
distance_in_words: distance_in_words:
half_a_minute: "< 1m" half_a_minute: "< 1m"
less_than_x_seconds: less_than_x_seconds:
one: "< 1s" one: "< 1s"
other: "< %{count}s" other: "< %{count}s"
@ -100,7 +100,7 @@ nl:
other: "%{count}j" other: "%{count}j"
distance_in_words_verbose: distance_in_words_verbose:
half_a_minute: "een halve minuut geleden" half_a_minute: "een halve minuut geleden"
less_than_x_seconds: less_than_x_seconds:
one: "nu" one: "nu"
other: "nu" other: "nu"
@ -155,7 +155,7 @@ nl:
approval_required: "Een moderator moet je nieuwe account handmatig goedkeuren voordat je toegang krijgt tot dit forum. Je krijgt een e-mail van ons wanneer je account is goedgekeurd!" approval_required: "Een moderator moet je nieuwe account handmatig goedkeuren voordat je toegang krijgt tot dit forum. Je krijgt een e-mail van ons wanneer je account is goedgekeurd!"
post_action_types: post_action_types:
off_topic: off_topic:
title: 'Off-Topic' title: 'Off-Topic'
description: 'Deze post wijkt erg af van het onderwerp van deze discussie, en moet wellicht naar een ander topic worden verplaatst.' description: 'Deze post wijkt erg af van het onderwerp van deze discussie, en moet wellicht naar een ander topic worden verplaatst.'
@ -186,7 +186,7 @@ nl:
user_must_edit: '<p>Gemelde inhoud verborgen.</p>' user_must_edit: '<p>Gemelde inhoud verborgen.</p>'
archetypes: archetypes:
regular: regular:
title: "Standaard-topic" title: "Standaard-topic"
unsubscribed: unsubscribed:
@ -212,7 +212,6 @@ nl:
discourse_org_access_key: "De toegangscode voor het discourse.org nickname-register" discourse_org_access_key: "De toegangscode voor het discourse.org nickname-register"
title: "titel van deze website" title: "titel van deze website"
restrict_access: "beperk forumtoegang aan gebruikers tenzij dit wachtwoord door hen is ingevuld"
access_password: "restrict_access (Beperk Toegang) staat aan. Zorg ervoor dat dit wachtwoord staat ingevuld" access_password: "restrict_access (Beperk Toegang) staat aan. Zorg ervoor dat dit wachtwoord staat ingevuld"
queue_jobs: "zet verschillende taken in een queue binnen sidekiq, als ongeldige queues zich op dezelfde lijn bevinden" queue_jobs: "zet verschillende taken in een queue binnen sidekiq, als ongeldige queues zich op dezelfde lijn bevinden"
crawl_images: "zet het ophalen van afbeeldingen van externe bronnen aan" crawl_images: "zet het ophalen van afbeeldingen van externe bronnen aan"
@ -222,7 +221,6 @@ nl:
imgur_endpoint: "endpoint voor het uploaden van imgur.com-afbeeldingen" imgur_endpoint: "endpoint voor het uploaden van imgur.com-afbeeldingen"
max_image_width: "maximale breedte voor een afbeelding in een post" max_image_width: "maximale breedte voor een afbeelding in een post"
category_featured_topics: "aantal topics die worden weergegeven in de categorie-lijst" category_featured_topics: "aantal topics die worden weergegeven in de categorie-lijst"
popup_delay: "Lengte van tijd in ms voordat popups zich tonen op het scherm"
add_rel_nofollow_to_user_content: "Voeg 'rel nofollow' toe aan alle gebruikers-content behalve voor interne links (inclusief parent domeinen). NB: Als je dit verandert moet je ook alle 'baked markdown' updaten" add_rel_nofollow_to_user_content: "Voeg 'rel nofollow' toe aan alle gebruikers-content behalve voor interne links (inclusief parent domeinen). NB: Als je dit verandert moet je ook alle 'baked markdown' updaten"
exclude_rel_nofollow_domains: "Een commagescheiden lijst van domeinen waar 'nofollow' niet is toegevoegd. (voorbeelddomein.com zal automatisch sub.voorbeelddomein.com toestaan)" exclude_rel_nofollow_domains: "Een commagescheiden lijst van domeinen waar 'nofollow' niet is toegevoegd. (voorbeelddomein.com zal automatisch sub.voorbeelddomein.com toestaan)"
post_excerpt_maxlength: "Maximale lengte in karakters van een post-uittreksel." post_excerpt_maxlength: "Maximale lengte in karakters van een post-uittreksel."
@ -323,7 +321,7 @@ nl:
admin_js: admin_js:
type_to_filter: "typ om te filteren..." type_to_filter: "typ om te filteren..."
admin: admin:
title: 'Discourse Beheer' title: 'Discourse Beheer'
dashboard: dashboard:
@ -338,7 +336,7 @@ nl:
delete: "Verwijder Post" delete: "Verwijder Post"
delete_title: "verwijder post (als het de eerste post is van een topic, verwijdert dit het topic)" delete_title: "verwijder post (als het de eerste post is van een topic, verwijdert dit het topic)"
customize: customize:
title: "Aanpassingen" title: "Aanpassingen"
header: "Header" header: "Header"
css: "Stylesheet" css: "Stylesheet"
@ -429,9 +427,9 @@ nl:
# This section is exported to the javascript for i18n # This section is exported to the javascript for i18n
js: js:
share: share:
topic: 'deel een link naar dit topic' topic: 'deel een link naar dit topic'
post: 'deel een link naar deze post' post: 'deel een link naar deze post'
edit: 'bewerk de titel en categorie van dit topic' edit: 'bewerk de titel en categorie van dit topic'
not_implemented: "Deze functie is helaas nog niet beschikbaar, sorry!" not_implemented: "Deze functie is helaas nog niet beschikbaar, sorry!"
@ -485,7 +483,7 @@ nl:
invited_by: "Uitgenodigd door" invited_by: "Uitgenodigd door"
trust_level: "Vertrouwensniveau" trust_level: "Vertrouwensniveau"
change_username: change_username:
action: "wijzig" action: "wijzig"
title: "Wijzig Gebruikersnaam" title: "Wijzig Gebruikersnaam"
confirm: "Er kunnen consequenties zijn als je je gebruikersnaam wijzigt. Weet je zeker dat je dit wilt doen?" confirm: "Er kunnen consequenties zijn als je je gebruikersnaam wijzigt. Weet je zeker dat je dit wilt doen?"
@ -499,7 +497,7 @@ nl:
error: "Er was een fout bij het wijzigen van je e-mailadres. Wellicht is deze al in gebruik?" error: "Er was een fout bij het wijzigen van je e-mailadres. Wellicht is deze al in gebruik?"
success: "We hebben je een mail gestuurd naar dat adres. Volg de bijgeleverde bevestigingsinstructies." success: "We hebben je een mail gestuurd naar dat adres. Volg de bijgeleverde bevestigingsinstructies."
email: email:
title: "E-mail" title: "E-mail"
instructions: "Je e-mail adres zal nooit openbaar zichtbaar zijn." instructions: "Je e-mail adres zal nooit openbaar zichtbaar zijn."
ok: "Dat ziet er goed uit! We zullen je een e-mail sturen ter bevestiging." ok: "Dat ziet er goed uit! We zullen je een e-mail sturen ter bevestiging."
@ -507,12 +505,12 @@ nl:
authenticated: "Je e-mail is goedgekeurd bij {{provider}}." authenticated: "Je e-mail is goedgekeurd bij {{provider}}."
frequency: "We zullen je alleen maar mailen als we je een tijd niet gezien hebben, en als je toevallig hetgeen waarover we je mailen nog niet hebt gezien op onze site." frequency: "We zullen je alleen maar mailen als we je een tijd niet gezien hebben, en als je toevallig hetgeen waarover we je mailen nog niet hebt gezien op onze site."
name: name:
title: "Naam" title: "Naam"
instructions: "De langere versie van je naam; dit hoeft niet uniek te zijn." instructions: "De langere versie van je naam; dit hoeft niet uniek te zijn."
too_short: "Je naam is te kort." too_short: "Je naam is te kort."
ok: "Wat een mooie naam!" ok: "Wat een mooie naam!"
username: username:
title: "Gebruikersnaam" title: "Gebruikersnaam"
#instructions: "Mensen kunnen naar je verwijzen als @{{username}}. Dit is een ongeregistreerde nickname. Je kan deze registreren op <a href='http://discourse.org'>discourse.org</a>." #instructions: "Mensen kunnen naar je verwijzen als @{{username}}. Dit is een ongeregistreerde nickname. Je kan deze registreren op <a href='http://discourse.org'>discourse.org</a>."
instructions: "Mensen kunnen naar je verwijzen als @{{username}}." instructions: "Mensen kunnen naar je verwijzen als @{{username}}."
@ -532,7 +530,7 @@ nl:
log_out: "Log Uit" log_out: "Log Uit"
website: "Website" website: "Website"
email_settings: "E-mail" email_settings: "E-mail"
email_digests: email_digests:
title: "Wanneer ik de site niet bezoek, stuur me een mail met de laatste updates" title: "Wanneer ik de site niet bezoek, stuur me een mail met de laatste updates"
daily: "dagelijks" daily: "dagelijks"
weekly: "wekelijks" weekly: "wekelijks"
@ -542,17 +540,17 @@ nl:
email_private_messages: "Ontvang een mail wanneer iemand je een privé-bericht heeft gestuurd." email_private_messages: "Ontvang een mail wanneer iemand je een privé-bericht heeft gestuurd."
other_settings: "Overige" other_settings: "Overige"
new_topic_duration: new_topic_duration:
label: "Beschouw topics als nieuw wanneer" label: "Beschouw topics als nieuw wanneer"
not_viewed: "ik ze nog heb niet bekeken" not_viewed: "ik ze nog heb niet bekeken"
last_here: "ze gepost waren sinds ik hier voor het laast was" last_here: "ze gepost waren sinds ik hier voor het laast was"
after_n_days: after_n_days:
one: "ze in de afgelopen dag gepost zijn" one: "ze in de afgelopen dag gepost zijn"
other: "ze de afgelopen {{count}} dagen gepost zijn" other: "ze de afgelopen {{count}} dagen gepost zijn"
after_n_weeks: after_n_weeks:
one: "ze in de afgelopen week gepost zijn" one: "ze in de afgelopen week gepost zijn"
other: "ze in de laaste {{count}} weken gepost zijn" other: "ze in de laaste {{count}} weken gepost zijn"
auto_track_topics: "Houd automatisch topics bij die ik bezoek" auto_track_topics: "Houd automatisch topics bij die ik bezoek"
auto_track_options: auto_track_options:
@ -565,7 +563,7 @@ nl:
one: "na 1 minuut" one: "na 1 minuut"
other: "na {{count}} minuten" other: "na {{count}} minuten"
invited: invited:
title: "Uitnodigingen" title: "Uitnodigingen"
user: "Uitgenodigde Gebruiker" user: "Uitgenodigde Gebruiker"
none: "{{username}} heeft nog geen mensen uitgenodigd voor deze site." none: "{{username}} heeft nog geen mensen uitgenodigd voor deze site."
@ -580,19 +578,19 @@ nl:
days_visited: "Dagen Bezocht" days_visited: "Dagen Bezocht"
account_age_days: "accountleeftijd in dagen" account_age_days: "accountleeftijd in dagen"
password: password:
title: "Wachtwoord" title: "Wachtwoord"
too_short: "Je wachtwoord is te kort." too_short: "Je wachtwoord is te kort."
ok: "Je wachtwoord ziet er goed uit." ok: "Je wachtwoord ziet er goed uit."
ip_address: ip_address:
title: "Laatste IP-adres" title: "Laatste IP-adres"
avatar: avatar:
title: "Avatar" title: "Avatar"
instructions: "Wij gebruiken <a href='https://gravatar.com' target='_blank'>Gravatar</a> voor Avatars die op je e-mailadres gebaseerd zijn" instructions: "Wij gebruiken <a href='https://gravatar.com' target='_blank'>Gravatar</a> voor Avatars die op je e-mailadres gebaseerd zijn"
filters: filters:
all: "Alle" all: "Alle"
loading: "Laden..." loading: "Laden..."
close: "Sluit" close: "Sluit"
@ -631,7 +629,7 @@ nl:
invite: "Heb je nog geen account?" invite: "Heb je nog geen account?"
failed: "Er ging iets mis, wellicht is het e-mailadres al geregistreerd. Probeer de "Wachtwoord Vergeten"-link" failed: "Er ging iets mis, wellicht is het e-mailadres al geregistreerd. Probeer de "Wachtwoord Vergeten"-link"
forgot_password: forgot_password:
title: "Wachtwoord Vergeten" title: "Wachtwoord Vergeten"
action: "Ik ben mijn wachtwoord vergeten" action: "Ik ben mijn wachtwoord vergeten"
invite: "Vul je gebruikersnaam of e-mailadres in, en we sturen je een wachtwoord-herstel mail." invite: "Vul je gebruikersnaam of e-mailadres in, en we sturen je een wachtwoord-herstel mail."
@ -664,11 +662,11 @@ nl:
message: "Authenticatie met Yahoo (zorg ervoor dat je pop up blocker uitstaat)" message: "Authenticatie met Yahoo (zorg ervoor dat je pop up blocker uitstaat)"
composer: composer:
saving_draft_tip: "aan het opslaan" saving_draft_tip: "aan het opslaan"
saved_draft_tip: "opgeslagen" saved_draft_tip: "opgeslagen"
saved_local_draft_tip: "lokaal opgeslagen" saved_local_draft_tip: "lokaal opgeslagen"
save_edit: "Bewaar Wijziging" save_edit: "Bewaar Wijziging"
reply: "Reageer" reply: "Reageer"
create_topic: "Maak Topic" create_topic: "Maak Topic"
create_pm: "Maak Privé-bericht" create_pm: "Maak Privé-bericht"
@ -707,7 +705,7 @@ nl:
local_tip: "klik om een afbeelding vanaf je apparaat te selecteren." local_tip: "klik om een afbeelding vanaf je apparaat te selecteren."
upload: "Upload" upload: "Upload"
search: search:
title: "zoek naar topics, posts, gebruikers of categoriëen" title: "zoek naar topics, posts, gebruikers of categoriëen"
placeholder: "typ je zoekterm hier" placeholder: "typ je zoekterm hier"
no_results: "Geen resultaten gevonden." no_results: "Geen resultaten gevonden."
@ -721,7 +719,7 @@ nl:
title: 'Favoriet' title: 'Favoriet'
help: 'voeg dit topic toe aan je favorietenlisjt' help: 'voeg dit topic toe aan je favorietenlisjt'
topics: topics:
no_favorited: "Je hebt nog geen topics tussen je Favorieten staan. Om een topic toe te wijzen aan je Favorieten, klik of druk op de ster naast de topictitel.." no_favorited: "Je hebt nog geen topics tussen je Favorieten staan. Om een topic toe te wijzen aan je Favorieten, klik of druk op de ster naast de topictitel.."
no_unread: "Je hebt geen ongelezen topics om te lezen." no_unread: "Je hebt geen ongelezen topics om te lezen."
no_new: "Je hebt geen nieuwe topics om te lezen." no_new: "Je hebt geen nieuwe topics om te lezen."
@ -729,7 +727,7 @@ nl:
no_posted: "Je hebt nog niet in een topic gepost." no_posted: "Je hebt nog niet in een topic gepost."
no_popular: "Er zijn geen populaire topics. Dat is best wel sneu." no_popular: "Er zijn geen populaire topics. Dat is best wel sneu."
topic: topic:
create_in: 'Maak een {{categoryName}} Topic' create_in: 'Maak een {{categoryName}} Topic'
create: 'Maak Topic' create: 'Maak Topic'
create_long: 'Maak een Nieuw Topic' create_long: 'Maak een Nieuw Topic'
@ -774,7 +772,7 @@ nl:
"1_2": 'Je krijgt alleen een notificiatie als iemand je @naam noemt of reageert op je post.' "1_2": 'Je krijgt alleen een notificiatie als iemand je @naam noemt of reageert op je post.'
"0": 'Je negeert alle notificaties in dit topic.' "0": 'Je negeert alle notificaties in dit topic.'
"0_2": 'Je negeert alle notificaties in dit topic.' "0_2": 'Je negeert alle notificaties in dit topic.'
watching: watching:
title: "Bekijken" title: "Bekijken"
description: "je zal alle ongelezen en nieuwe post aantallen zien, plus de notificaties van @naam vermeldingen en alle nieuwe posts in dit topic." description: "je zal alle ongelezen en nieuwe post aantallen zien, plus de notificaties van @naam vermeldingen en alle nieuwe posts in dit topic."
tracking: tracking:
@ -801,11 +799,11 @@ nl:
multi_select: "Zet Multi-Select Aan/Uit" multi_select: "Zet Multi-Select Aan/Uit"
convert_to_topic: "Zet om naar Normaal Topic" convert_to_topic: "Zet om naar Normaal Topic"
reply: reply:
title: 'Reageer' title: 'Reageer'
help: 'begin met het opzetten van een reactie op dit topic' help: 'begin met het opzetten van een reactie op dit topic'
share: share:
title: 'Deel' title: 'Deel'
help: 'Deel een link naar dit topic' help: 'Deel een link naar dit topic'
@ -819,11 +817,11 @@ nl:
success: "Bedankt! We hebben deze gebruiker uitgenodigd om deel te nemen aan dit Privé-gesprek." success: "Bedankt! We hebben deze gebruiker uitgenodigd om deel te nemen aan dit Privé-gesprek."
error: "Sorry, er is iets misgegaan bij het uitnodigen van deze gebruiker" error: "Sorry, er is iets misgegaan bij het uitnodigen van deze gebruiker"
invite_reply: invite_reply:
title: 'Nodig Vrienden Uit Om Te Reageren' title: 'Nodig Vrienden Uit Om Te Reageren'
help: 'verstuur uitnodigingen naar vrienden zodat zij met één klik kunnen reageren op dit topic' help: 'verstuur uitnodigingen naar vrienden zodat zij met één klik kunnen reageren op dit topic'
email: "We zullen je vrienden een korte e-mail sturen waardoor zij op dit topic kunnen reageren door op een link te klikken." email: "We zullen je vrienden een korte e-mail sturen waardoor zij op dit topic kunnen reageren door op een link te klikken."
email_placeholder: 'e-mailadres' email_placeholder: 'e-mailadres'
success: "Bedankt! We hebben een uitnodiging verstuurd naar <b>{{email}}</b>. We laten je direct weten wanneer ze je uitnodiging hebben geaccepteerd. Check de "Uitnodigingen"-tab op je gebruikerspagina om bij te houden wie je hebt uitgenodigd." success: "Bedankt! We hebben een uitnodiging verstuurd naar <b>{{email}}</b>. We laten je direct weten wanneer ze je uitnodiging hebben geaccepteerd. Check de "Uitnodigingen"-tab op je gebruikerspagina om bij te houden wie je hebt uitgenodigd."
error: "Sorry, we kunnen deze persoon niet uitnodigen. Wellicht is deze al een gebruiker op onze site?" error: "Sorry, we kunnen deze persoon niet uitnodigen. Wellicht is deze al een gebruiker op onze site?"
@ -838,7 +836,7 @@ nl:
title: "Verplaats Geslecteerde Posts" title: "Verplaats Geslecteerde Posts"
topic_name: "Nieuwe Topicnaam:" topic_name: "Nieuwe Topicnaam:"
error: "Sorry, er is iets misgegaan bij het verplaatsen van deze posts." error: "Sorry, er is iets misgegaan bij het verplaatsen van deze posts."
instructions: instructions:
one: "Je staat op het punt een nieuw topic aan te maken en het te vullen met de post die je geselecteerd hebt." one: "Je staat op het punt een nieuw topic aan te maken en het te vullen met de post die je geselecteerd hebt."
other: "Je staat op het punt een nieuw topic aan te maken en het te vullen met de <b>{{count}}</b> posts die je geselecteerd hebt." other: "Je staat op het punt een nieuw topic aan te maken en het te vullen met de <b>{{count}}</b> posts die je geselecteerd hebt."
@ -853,7 +851,7 @@ nl:
other: "Je hebt <b>{{count}}</b> posts geselecteerd." other: "Je hebt <b>{{count}}</b> posts geselecteerd."
post: post:
reply: "Je reageerd nu op {{link}} door {{replyAvatar}} {{username}}" reply: "Je reageerd nu op {{link}} door {{replyAvatar}} {{username}}"
reply_topic: "Reageer op {{link}}" reply_topic: "Reageer op {{link}}"
edit: "Bewerk {{link}}" edit: "Bewerk {{link}}"
in_reply_to: "in reactie op" in_reply_to: "in reactie op"
@ -902,13 +900,13 @@ nl:
one: "1 persoon {{long_form}}" one: "1 persoon {{long_form}}"
other: "{{count}} mensen {{long_form}}" other: "{{count}} mensen {{long_form}}"
edits: edits:
one: 1 berwerking one: 1 berwerking
other: "{{count}} bewerkingen" other: "{{count}} bewerkingen"
zero: geen bewerkingen zero: geen bewerkingen
delete: delete:
confirm: confirm:
one: "Weet je zeker dat je deze post wilt verwijderen?" one: "Weet je zeker dat je deze post wilt verwijderen?"
other: "Weet je zeker dat je al deze posts wilt verwijderen?" other: "Weet je zeker dat je al deze posts wilt verwijderen?"
@ -966,27 +964,27 @@ nl:
categories_list: "Categorie-lijst" categories_list: "Categorie-lijst"
filters: filters:
popular: popular:
title: "Populair" title: "Populair"
help: "de meest populaire recente topics" help: "de meest populaire recente topics"
favorited: favorited:
title: "Favorieten" title: "Favorieten"
help: "topics die je als Favoriet hebt ingesteld" help: "topics die je als Favoriet hebt ingesteld"
read: read:
title: "Gelezen" title: "Gelezen"
help: "topics die je hebt gelezen" help: "topics die je hebt gelezen"
categories: categories:
title: "Categorieën" title: "Categorieën"
title_in: "Categorie - {{categoryName}}" title_in: "Categorie - {{categoryName}}"
help: "alle topics gesorteerd op categorie" help: "alle topics gesorteerd op categorie"
unread: unread:
title: title:
zero: "Ongelezen" zero: "Ongelezen"
one: "Ongelezen (1)" one: "Ongelezen (1)"
other: "Ongelezen ({{count}})" other: "Ongelezen ({{count}})"
help: "gevolgde topics met ongelezen posts" help: "gevolgde topics met ongelezen posts"
new: new:
title: title:
zero: "Nieuw" zero: "Nieuw"
one: "Nieuw (1)" one: "Nieuw (1)"
other: "Nieuw ({{count}})" other: "Nieuw ({{count}})"
@ -1005,7 +1003,7 @@ nl:
types: types:
category: 'Categorieën' category: 'Categorieën'
topic: 'Topics' topic: 'Topics'
user: 'Gebruikers' user: 'Gebruikers'
youve_posted: "Jij Hebt Dit Gepost" youve_posted: "Jij Hebt Dit Gepost"
original_poster: "Originele Poster" original_poster: "Originele Poster"
@ -1039,7 +1037,7 @@ nl:
edited: "bewerkte" edited: "bewerkte"
move_posts: move_posts:
moderator_post: moderator_post:
one: "Ik heb een post naar een nieuw topic verplaatst: %{topic_link}" one: "Ik heb een post naar een nieuw topic verplaatst: %{topic_link}"
other: "Ik heb %{count} posts naar een nieuw topic verplaatst: %{topic_link}" other: "Ik heb %{count} posts naar een nieuw topic verplaatst: %{topic_link}"
@ -1053,7 +1051,7 @@ nl:
visible_enabled: "Dit topic is nu zichtbaar; het zal weer worden weergegeven in topiclijsten." visible_enabled: "Dit topic is nu zichtbaar; het zal weer worden weergegeven in topiclijsten."
visible_disabled: "Dit topic is nu onzichtbaar; het zal niet worden weergegeven in topiclijsten, en kan alleen via een directe link worden bezocht." visible_disabled: "Dit topic is nu onzichtbaar; het zal niet worden weergegeven in topiclijsten, en kan alleen via een directe link worden bezocht."
login: login:
not_approved: "Je account is nog niet goedgekeurd. Je zal via de mail een bericht van ons ontvangen wanneer je klaar bent om in te kunnen loggen." not_approved: "Je account is nog niet goedgekeurd. Je zal via de mail een bericht van ons ontvangen wanneer je klaar bent om in te kunnen loggen."
incorrect_username_email_or_password: "Incorrecte gebruikersnaam, e-mailadres of wachtwoord" incorrect_username_email_or_password: "Incorrecte gebruikersnaam, e-mailadres of wachtwoord"
wait_approval: "Bedankt voor je inschrijving. We zullen het je laten weten als je account is goedgekeurd." wait_approval: "Bedankt voor je inschrijving. We zullen het je laten weten als je account is goedgekeurd."
@ -1139,7 +1137,7 @@ nl:
subject_template: "Bericht van %{site_name}: Je Post is verborgen wegens meldingen uit de site-gemeenschap" subject_template: "Bericht van %{site_name}: Je Post is verborgen wegens meldingen uit de site-gemeenschap"
text_body_template: | text_body_template: |
Hallo, Hallo,
Dit is een geautomatiseerd bericht van %{site_name} om je te laten weten dat de volgende post is verborgen naar aanleiding van meldingen binnen de site-gemeenschap. Dit is een geautomatiseerd bericht van %{site_name} om je te laten weten dat de volgende post is verborgen naar aanleiding van meldingen binnen de site-gemeenschap.
%{base_url}%{url} %{base_url}%{url}
@ -1151,7 +1149,7 @@ nl:
Je kan je post bewerken na %{edit_delay} minuten, en het zal automatisch weer zichtbaar worden. Dit verhoogt je forum vertrouwensniveau. Je kan je post bewerken na %{edit_delay} minuten, en het zal automatisch weer zichtbaar worden. Dit verhoogt je forum vertrouwensniveau.
Echter, als de post een tweede keer wordt verborgen door de site-gemeenschap, wordt er een moderator ingelicht. Echter, als de post een tweede keer wordt verborgen door de site-gemeenschap, wordt er een moderator ingelicht.
Zij kunnen verdere actie ondernemen, waaronder een mogelijke schorsing van je account. Zij kunnen verdere actie ondernemen, waaronder een mogelijke schorsing van je account.
@ -1196,9 +1194,9 @@ nl:
- Om terug te gaan naar de homepage, kan je op elk moment **op het icoontje in de linker bovenhoek klikken.** - Om terug te gaan naar de homepage, kan je op elk moment **op het icoontje in de linker bovenhoek klikken.**
- Mocht je iets willen opzoeken, naar je gebruikerspagina gaan, of ergens anders toe willen navigeren, klik dan op de icoontjes in de rechter bovenhoek. - Mocht je iets willen opzoeken, naar je gebruikerspagina gaan, of ergens anders toe willen navigeren, klik dan op de icoontjes in de rechter bovenhoek.
- Wanneer je een topic leest, kan je naar boven scrollen door op de topic-titel bovenaan de pagina te klikken. - Wanneer je een topic leest, kan je naar boven scrollen door op de topic-titel bovenaan de pagina te klikken.
Om de *onderkant* te bereiken, klik op op de pijl naar beneden op de topic voortgangsindicator aan de onderkant van de pagina, Om de *onderkant* te bereiken, klik op op de pijl naar beneden op de topic voortgangsindicator aan de onderkant van de pagina,
of klik je op het Laatste Post-veld in de topic-samenvatting onder de eerste post. of klik je op het Laatste Post-veld in de topic-samenvatting onder de eerste post.
welcome_approved: welcome_approved:
@ -1236,7 +1234,7 @@ nl:
Om nogmaals in te loggen kan je het volgende gebruiken: Om nogmaals in te loggen kan je het volgende gebruiken:
1. Facebook, Google, Twitter, of vele andere ondersteunde logingegevens 1. Facebook, Google, Twitter, of vele andere ondersteunde logingegevens
-- let er wel op dat dit **het zelfde e-mailadres** is waarop je je originele uitnodiging hebt gekregen. Anders weten we niet zeker dat jij het bent! -- let er wel op dat dit **het zelfde e-mailadres** is waarop je je originele uitnodiging hebt gekregen. Anders weten we niet zeker dat jij het bent!
2. Maak een uniek wachtwoord voor %{site_name} aan binnen [je gebruikersprofiel][prefs], en log daarmee in. 2. Maak een uniek wachtwoord voor %{site_name} aan binnen [je gebruikersprofiel][prefs], en log daarmee in.
@ -1262,7 +1260,7 @@ nl:
unsubscribe_link: "Mocht je deze e-mails niet langer willen ontvangen, bezoek dan [je gebruikersinstellingen](%{user_preferences_url})." unsubscribe_link: "Mocht je deze e-mails niet langer willen ontvangen, bezoek dan [je gebruikersinstellingen](%{user_preferences_url})."
user_notifications: user_notifications:
unsubscribe: unsubscribe:
title: "Uitschrijven" title: "Uitschrijven"
description: "Niet geïnteresseerd in deze e-mails? Geen problem! Klik hieronder om direct uitgeschreven te worden:" description: "Niet geïnteresseerd in deze e-mails? Geen problem! Klik hieronder om direct uitgeschreven te worden:"
@ -1281,7 +1279,7 @@ nl:
--- ---
%{message} %{message}
--- ---
Bezoek deze link om te reageren: %{base_url}%{url} Bezoek deze link om te reageren: %{base_url}%{url}
user_quoted: user_quoted:
@ -1292,7 +1290,7 @@ nl:
--- ---
%{message} %{message}
--- ---
Bezoek deze link om te reageren: %{base_url}%{url} Bezoek deze link om te reageren: %{base_url}%{url}
user_mentioned: user_mentioned:
@ -1303,7 +1301,7 @@ nl:
--- ---
%{message} %{message}
--- ---
Bezoek deze link om te reageren: %{base_url}%{url} Bezoek deze link om te reageren: %{base_url}%{url}
@ -1329,9 +1327,9 @@ nl:
subject_template: "[%{site_name}] Wachtwoord herstellen" subject_template: "[%{site_name}] Wachtwoord herstellen"
text_body_template: | text_body_template: |
Iemand heeft aangegeven je wachtwoord te willen herstellen op [%{site_name}](%{base_url}). Iemand heeft aangegeven je wachtwoord te willen herstellen op [%{site_name}](%{base_url}).
Ben jij dit niet, kan je zonder problemen deze e-mail negeren. Ben jij dit niet, kan je zonder problemen deze e-mail negeren.
Klik op de volgende link om een nieuw wachtwoord te kiezen: Klik op de volgende link om een nieuw wachtwoord te kiezen:
%{base_url}/users/password-reset/%{email_token} %{base_url}/users/password-reset/%{email_token}
@ -1339,14 +1337,14 @@ nl:
subject_template: "[%{site_name}] Bevestig je nieuwe e-mailadres" subject_template: "[%{site_name}] Bevestig je nieuwe e-mailadres"
text_body_template: | text_body_template: |
Bevestig je nieuwe e-mailadres voor %{site_name} door op de volgende link te klikken: Bevestig je nieuwe e-mailadres voor %{site_name} door op de volgende link te klikken:
%{base_url}/users/authorize-email/%{email_token} %{base_url}/users/authorize-email/%{email_token}
signup: signup:
subject_template: "[%{site_name}] Activeer je nieuwe account" subject_template: "[%{site_name}] Activeer je nieuwe account"
text_body_template: | text_body_template: |
Welkom op %{site_name}! Welkom op %{site_name}!
Klik op de volgende link om je nieuwe account te bevestigen en te activeren: Klik op de volgende link om je nieuwe account te bevestigen en te activeren:
%{base_url}/users/activate-account/%{email_token} %{base_url}/users/activate-account/%{email_token}

View File

@ -260,7 +260,6 @@ en:
company_full_name: "The full name of the company that runs this site, used in legal documents like the /tos" company_full_name: "The full name of the company that runs this site, used in legal documents like the /tos"
company_short_name: "The short name of the company that runs this site, used in legal documents like the /tos" company_short_name: "The short name of the company that runs this site, used in legal documents like the /tos"
company_domain: "The domain name owned by the company that runs this site, used in legal documents like the /tos" company_domain: "The domain name owned by the company that runs this site, used in legal documents like the /tos"
restrict_access: "Restrict forum access unless a password is entered"
access_password: "When restricted access is enabled, this password must be entered" access_password: "When restricted access is enabled, this password must be entered"
queue_jobs: "Queue various jobs in sidekiq, if false queues are inline" queue_jobs: "Queue various jobs in sidekiq, if false queues are inline"
crawl_images: "Enable retrieving images from third party sources to insert width and height dimensions" crawl_images: "Enable retrieving images from third party sources to insert width and height dimensions"
@ -270,7 +269,6 @@ en:
imgur_endpoint: "End point for uploading imgur.com images" imgur_endpoint: "End point for uploading imgur.com images"
max_image_width: "Maximum allowed width of images in a post" max_image_width: "Maximum allowed width of images in a post"
category_featured_topics: "Number of topics displayed per category in the /categories page" category_featured_topics: "Number of topics displayed per category in the /categories page"
popup_delay: "Milliseconds of hover time before popups appear on the screen"
add_rel_nofollow_to_user_content: "Add rel nofollow to all submitted user content, except for internal links (including parent domains) changing this requires you update all your baked markdown" add_rel_nofollow_to_user_content: "Add rel nofollow to all submitted user content, except for internal links (including parent domains) changing this requires you update all your baked markdown"
exclude_rel_nofollow_domains: "A comma delimited list of domains where nofollow is not added (tld.com will automatically allow sub.tld.com as well)" exclude_rel_nofollow_domains: "A comma delimited list of domains where nofollow is not added (tld.com will automatically allow sub.tld.com as well)"

View File

@ -245,7 +245,6 @@ fr:
discourse_org_access_key: "La clé d'accès utilisée pour le registre de pseudos de discourse.org" discourse_org_access_key: "La clé d'accès utilisée pour le registre de pseudos de discourse.org"
educate_until_posts: "Afficher les aides à la saisie tant que l'utilisateur n'a pas posté ce nombre de messages" educate_until_posts: "Afficher les aides à la saisie tant que l'utilisateur n'a pas posté ce nombre de messages"
title: "titre de ce site internet" title: "titre de ce site internet"
restrict_access: "restreindre l'acces au forum à ceux qui possèdent ce mot de passe"
access_password: "Si l'accès restreint est activé, assurez-vous que le mot de passe soit saisi ici." access_password: "Si l'accès restreint est activé, assurez-vous que le mot de passe soit saisi ici."
queue_jobs: "mettre les différents jobs en attente sur différentes queues, si false les queues sont en file" queue_jobs: "mettre les différents jobs en attente sur différentes queues, si false les queues sont en file"
crawl_images: "permettre la récupération des images provenant de sources tierces" crawl_images: "permettre la récupération des images provenant de sources tierces"
@ -255,7 +254,6 @@ fr:
imgur_endpoint: "point d'arrêt pour le chargement d'images sur imgur.com" imgur_endpoint: "point d'arrêt pour le chargement d'images sur imgur.com"
max_image_width: "largeur maximale des images d'un message" max_image_width: "largeur maximale des images d'un message"
category_featured_topics: "nombre de discussions affichées dans la liste par catégories" category_featured_topics: "nombre de discussions affichées dans la liste par catégories"
popup_delay: "Laps de temps en ms avant l'affichage des popups à l'écran"
add_rel_nofollow_to_user_content: "Ajouter rel nofollow à tous les contenus des utilisateurs, sauf les liens internes (incluant les domaines parents) Modifier ceci requiert une mise à jour de tout votre markdown" add_rel_nofollow_to_user_content: "Ajouter rel nofollow à tous les contenus des utilisateurs, sauf les liens internes (incluant les domaines parents) Modifier ceci requiert une mise à jour de tout votre markdown"
exclude_rel_nofollow_domains: "Une liste séparée par des virgules contenant les noms de domaines de premier niveau pour lesquels il faut ajouter un attribut nofollow (exemple.com va automatiquement fonctionner aussi avec sous.domaine.exemple.com)" exclude_rel_nofollow_domains: "Une liste séparée par des virgules contenant les noms de domaines de premier niveau pour lesquels il faut ajouter un attribut nofollow (exemple.com va automatiquement fonctionner aussi avec sous.domaine.exemple.com)"
post_excerpt_maxlength: "Longueur maximale d'un extrait de message." post_excerpt_maxlength: "Longueur maximale d'un extrait de message."

View File

@ -239,7 +239,6 @@ nl:
discourse_org_access_key: "De toegangscode voor het discourse.org nickname-register" discourse_org_access_key: "De toegangscode voor het discourse.org nickname-register"
title: "titel van deze website" title: "titel van deze website"
restrict_access: "beperk forumtoegang aan gebruikers tenzij dit wachtwoord door hen is ingevuld"
access_password: "restrict_access (Beperk Toegang) staat aan. Zorg ervoor dat dit wachtwoord staat ingevuld" access_password: "restrict_access (Beperk Toegang) staat aan. Zorg ervoor dat dit wachtwoord staat ingevuld"
queue_jobs: "zet verschillende taken in een queue binnen sidekiq, als ongeldige queues zich op dezelfde lijn bevinden" queue_jobs: "zet verschillende taken in een queue binnen sidekiq, als ongeldige queues zich op dezelfde lijn bevinden"
crawl_images: "zet het ophalen van afbeeldingen van externe bronnen aan" crawl_images: "zet het ophalen van afbeeldingen van externe bronnen aan"
@ -249,7 +248,6 @@ nl:
imgur_endpoint: "endpoint voor het uploaden van imgur.com-afbeeldingen" imgur_endpoint: "endpoint voor het uploaden van imgur.com-afbeeldingen"
max_image_width: "maximale breedte voor een afbeelding in een post" max_image_width: "maximale breedte voor een afbeelding in een post"
category_featured_topics: "aantal topics die worden weergegeven in de categorie-lijst" category_featured_topics: "aantal topics die worden weergegeven in de categorie-lijst"
popup_delay: "Lengte van tijd in ms voordat popups zich tonen op het scherm"
add_rel_nofollow_to_user_content: "Voeg 'rel nofollow' toe aan alle gebruikers-content behalve voor interne links (inclusief parent domeinen). NB: Als je dit verandert moet je ook alle 'baked markdown' updaten" add_rel_nofollow_to_user_content: "Voeg 'rel nofollow' toe aan alle gebruikers-content behalve voor interne links (inclusief parent domeinen). NB: Als je dit verandert moet je ook alle 'baked markdown' updaten"
exclude_rel_nofollow_domains: "Een commagescheiden lijst van domeinen waar 'nofollow' niet is toegevoegd. (voorbeelddomein.com zal automatisch sub.voorbeelddomein.com toestaan)" exclude_rel_nofollow_domains: "Een commagescheiden lijst van domeinen waar 'nofollow' niet is toegevoegd. (voorbeelddomein.com zal automatisch sub.voorbeelddomein.com toestaan)"
post_excerpt_maxlength: "Maximale lengte in karakters van een post-uittreksel." post_excerpt_maxlength: "Maximale lengte in karakters van een post-uittreksel."

View File

@ -254,7 +254,6 @@ pseudo:
íɳ łéǧáł ďóčůɱéɳťš łíǩé ťĥé /ťóš ]]' íɳ łéǧáł ďóčůɱéɳťš łíǩé ťĥé /ťóš ]]'
company_domain: ! '[[ Ťĥé ďóɱáíɳ ɳáɱé óŵɳéď ƀý ťĥé čóɱƿáɳý ťĥáť řůɳš ťĥíš šíťé, company_domain: ! '[[ Ťĥé ďóɱáíɳ ɳáɱé óŵɳéď ƀý ťĥé čóɱƿáɳý ťĥáť řůɳš ťĥíš šíťé,
ůšéď íɳ łéǧáł ďóčůɱéɳťš łíǩé ťĥé /ťóš ]]' ůšéď íɳ łéǧáł ďóčůɱéɳťš łíǩé ťĥé /ťóš ]]'
restrict_access: ! '[[ Řéšťříčť ƒóřůɱ áččéšš ůɳłéšš á ƿáššŵóřď íš éɳťéřéď ]]'
access_password: ! '[[ Ŵĥéɳ řéšťříčťéď áččéšš íš éɳáƀłéď, ťĥíš ƿáššŵóřď ɱůšť ƀé access_password: ! '[[ Ŵĥéɳ řéšťříčťéď áččéšš íš éɳáƀłéď, ťĥíš ƿáššŵóřď ɱůšť ƀé
éɳťéřéď ]]' éɳťéřéď ]]'
queue_jobs: ! '[[ Ƣůéůé νáříóůš ʲóƀš íɳ šíďéǩíƣ, íƒ ƒáłšé ƣůéůéš ářé íɳłíɳé ]]' queue_jobs: ! '[[ Ƣůéůé νáříóůš ʲóƀš íɳ šíďéǩíƣ, íƒ ƒáłšé ƣůéůéš ářé íɳłíɳé ]]'
@ -270,8 +269,6 @@ pseudo:
max_image_width: ! '[[ Ϻáхíɱůɱ áłłóŵéď ŵíďťĥ óƒ íɱáǧéš íɳ á ƿóšť ]]' max_image_width: ! '[[ Ϻáхíɱůɱ áłłóŵéď ŵíďťĥ óƒ íɱáǧéš íɳ á ƿóšť ]]'
category_featured_topics: ! '[[ Ѝůɱƀéř óƒ ťóƿíčš ďíšƿłáýéď ƿéř čáťéǧóřý íɳ ťĥé category_featured_topics: ! '[[ Ѝůɱƀéř óƒ ťóƿíčš ďíšƿłáýéď ƿéř čáťéǧóřý íɳ ťĥé
/čáťéǧóříéš ƿáǧé ]]' /čáťéǧóříéš ƿáǧé ]]'
popup_delay: ! '[[ Ϻíłłíšéčóɳďš óƒ ĥóνéř ťíɱé ƀéƒóřé ƿóƿůƿš áƿƿéář óɳ ťĥé ščřééɳ
]]'
add_rel_nofollow_to_user_content: ! '[[ Áďď řéł ɳóƒółłóŵ ťó áłł šůƀɱíťťéď ůšéř add_rel_nofollow_to_user_content: ! '[[ Áďď řéł ɳóƒółłóŵ ťó áłł šůƀɱíťťéď ůšéř
čóɳťéɳť, éхčéƿť ƒóř íɳťéřɳáł łíɳǩš (íɳčłůďíɳǧ ƿářéɳť ďóɱáíɳš) čĥáɳǧíɳǧ ťĥíš čóɳťéɳť, éхčéƿť ƒóř íɳťéřɳáł łíɳǩš (íɳčłůďíɳǧ ƿářéɳť ďóɱáíɳš) čĥáɳǧíɳǧ ťĥíš
řéƣůířéš ýóů ůƿďáťé áłł ýóůř ƀáǩéď ɱářǩďóŵɳ ]]' řéƣůířéš ýóů ůƿďáťé áłł ýóůř ƀáǩéď ɱářǩďóŵɳ ]]'

View File

@ -101,6 +101,7 @@ module Search
return nil if term.blank? return nil if term.blank?
sanitized_term = PG::Connection.escape_string(term.gsub(/[:()&!]/,'')) # Instead of original term.gsub(/[^0-9a-zA-Z_ ]/, '') sanitized_term = PG::Connection.escape_string(term.gsub(/[:()&!]/,'')) # Instead of original term.gsub(/[^0-9a-zA-Z_ ]/, '')
# We are stripping only symbols taking place in FTS and simply sanitizing the rest. # We are stripping only symbols taking place in FTS and simply sanitizing the rest.
# really short terms are totally pointless # really short terms are totally pointless
@ -117,7 +118,7 @@ module Search
db_result = [] db_result = []
[user_query_sql, category_query_sql, topic_query_sql].each do |sql| [user_query_sql, category_query_sql, topic_query_sql].each do |sql|
db_result += ActiveRecord::Base.exec_sql(sql , query: terms.join(" & "),locale: current_locale_long, limit: (Search.per_facet + 1)).to_a db_result += ActiveRecord::Base.exec_sql(sql , query: terms.join(" & "), locale: current_locale_long, limit: (Search.per_facet + 1)).to_a
end end
end end

View File

@ -51,10 +51,12 @@ module SiteSettingExtension
# Retrieve all settings # Retrieve all settings
def all_settings def all_settings
@defaults.map do |s, v| @defaults.map do |s, v|
value = send(s)
{setting: s, {setting: s,
description: description(s), description: description(s),
default: v, default: v,
value: send(s).to_s} type: get_data_type_string(value),
value: value.to_s}
end end
end end
@ -169,6 +171,16 @@ module SiteSettingExtension
protected protected
# We're currently in the process of refactoring our Enums. When that's
# done we should pop back and fix this to something better.
def get_data_type_string(val)
case get_data_type(val)
when Types::String then 'string'
when Types::Fixnum then 'number'
when Types::Bool then 'bool'
end
end
def get_data_type(val) def get_data_type(val)
return Types::Null if val.nil? return Types::Null if val.nil?

View File

@ -23,7 +23,7 @@ class SystemMessage
params = defaults.merge(params) params = defaults.merge(params)
if SiteSetting.restrict_access? if SiteSetting.access_password.present?
params[:site_password] = MultisiteI18n.t('system_messages.site_password', access_password: SiteSetting.access_password) params[:site_password] = MultisiteI18n.t('system_messages.site_password', access_password: SiteSetting.access_password)
end end

View File

@ -125,15 +125,14 @@ describe InvitesController do
context 'access_required' do context 'access_required' do
it "doesn't set a cookie for access if there is no access required" do it "doesn't set a cookie for access if there is no access required" do
SiteSetting.expects(:restrict_access?).returns(false) SiteSetting.stubs(:access_password).returns(nil)
Invite.any_instance.expects(:redeem).returns(user) Invite.any_instance.expects(:redeem).returns(user)
get :show, id: invite.invite_key get :show, id: invite.invite_key
cookies[:_access].should be_blank cookies[:_access].should be_blank
end end
it "sets the cookie when access is required" do it "sets the cookie when access is required" do
SiteSetting.expects(:restrict_access?).returns(true) SiteSetting.stubs(:access_password).returns('adventure time!')
SiteSetting.expects(:access_password).returns('adventure time!')
Invite.any_instance.expects(:redeem).returns(user) Invite.any_instance.expects(:redeem).returns(user)
get :show, id: invite.invite_key get :show, id: invite.invite_key
cookies[:_access].should == 'adventure time!' cookies[:_access].should == 'adventure time!'

View File

@ -18,7 +18,7 @@ describe RobotsTxtController do
it "serves noindex when in private mode regardless of the configuration" do it "serves noindex when in private mode regardless of the configuration" do
SiteSetting.stubs(:allow_index_in_robots_txt).returns(true) SiteSetting.stubs(:allow_index_in_robots_txt).returns(true)
SiteSetting.stubs(:restrict_access).returns(true) SiteSetting.stubs(:access_password).returns('adventure time!')
get :index get :index
response.should render_template :no_index response.should render_template :no_index
end end

View File

@ -1,3 +1,5 @@
/*global waitsFor:true expect:true describe:true beforeEach:true it:true */
describe("Discourse.Composer", function() { describe("Discourse.Composer", function() {
describe("replyLength", function() { describe("replyLength", function() {