mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 11:23:25 +08:00
FIX: Prevent duplicate params for raw template theme handlebars helpers
This commit is contained in:
parent
e3324737ee
commit
95b5c5898e
|
@ -64,7 +64,7 @@ class ThemeField < ActiveRecord::Base
|
|||
validates :name, format: { with: /\A[a-z_][a-z0-9_-]*\z/i },
|
||||
if: Proc.new { |field| ThemeField.theme_var_type_ids.include?(field.type_id) }
|
||||
|
||||
COMPILER_VERSION = 9
|
||||
COMPILER_VERSION = 10
|
||||
|
||||
belongs_to :theme
|
||||
|
||||
|
|
|
@ -64,11 +64,13 @@ class ThemeJavascriptCompiler
|
|||
function manipulateNode(node) {
|
||||
// Magically add theme id as the first param for each of these helpers
|
||||
if (node.path.parts && ["theme-i18n", "theme-prefix", "theme-setting"].includes(node.path.parts[0])) {
|
||||
node.params.unshift({
|
||||
type: "NumberLiteral",
|
||||
value: #{@theme_id},
|
||||
original: #{@theme_id}
|
||||
})
|
||||
if(node.params.length === 1){
|
||||
node.params.unshift({
|
||||
type: "NumberLiteral",
|
||||
value: #{@theme_id},
|
||||
original: #{@theme_id}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Override old themeSetting syntax when it's in its own node
|
||||
|
|
|
@ -62,6 +62,12 @@ describe ThemeJavascriptCompiler do
|
|||
expect(render("{{dummy-helper themeSettings.setting_key}}")).
|
||||
to eq('dummy(setting(22:setting_key))')
|
||||
end
|
||||
|
||||
it "doesn't duplicate number parameter inside {{each}}" do
|
||||
expect(compiler.compile("{{#each item as |test test2|}}{{theme-setting 'setting_key'}}{{/each}}")).
|
||||
to include('{"name":"theme-setting","hash":{},"hashTypes":{},"hashContexts":{},"types":["NumberLiteral","StringLiteral"]')
|
||||
# Fail would be if theme-setting is defined with types:["NumberLiteral","NumberLiteral","StringLiteral"]
|
||||
end
|
||||
end
|
||||
|
||||
describe ThemeJavascriptCompiler::EmberTemplatePrecompiler do
|
||||
|
|
Loading…
Reference in New Issue
Block a user