Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Levelbuilder Clean Up: Code Area Editors #35037

Merged
merged 25 commits into from
Jun 2, 2020
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e91ccd4
Move the audit log to the bottom of the level edit page
dmcavoy May 29, 2020
2f675be
Move levelbuilder documentation to top of page
dmcavoy May 29, 2020
685dbff
Group help and tips tab content and move next to instructions editing
dmcavoy May 29, 2020
a6abd05
Group together Design Mode controls for applab
dmcavoy May 29, 2020
727f286
Group together Data controls
dmcavoy May 29, 2020
2efb5d0
Group everything related to the instructions area together and move t…
dmcavoy May 29, 2020
b6f4066
Move notes to deprecated area
dmcavoy May 29, 2020
8b84674
Merge branch 'levelbuilder-clean-up-1' into help-tips-levelbuilder
dmcavoy May 29, 2020
f126a7a
Merge branch 'help-tips-levelbuilder' into applab-edit-org
dmcavoy May 29, 2020
11b8c5c
Group together debugger controls
dmcavoy May 29, 2020
de8db6a
Put all instructions area stuff inside one header
dmcavoy May 29, 2020
09160e9
Merge branch 'help-tips-levelbuilder' into applab-edit-org
dmcavoy May 29, 2020
bd2491e
Make a separate area for editing the code part of level
dmcavoy May 29, 2020
09b313c
Use the same debugger file for applab as is used for gamelab, dance, …
dmcavoy May 29, 2020
0dc742b
Merge branch 'applab-edit-org' into code-area-edit
dmcavoy May 29, 2020
528334a
Organize code area into sub groups and bring in applab specific controls
dmcavoy May 29, 2020
953ad8c
Merge branch 'staging' into code-area-edit
dmcavoy May 29, 2020
688d733
Merge branch 'staging' into levelbuilder-clean-up-1
dmcavoy May 29, 2020
dda202d
Merge branch 'levelbuilder-clean-up-1' into help-tips-levelbuilder
dmcavoy May 29, 2020
cd95a2e
Merge branch 'help-tips-levelbuilder' into applab-edit-org
dmcavoy May 29, 2020
628e1a2
Merge branch 'applab-edit-org' into code-area-edit
dmcavoy May 29, 2020
1b23439
Merge branch 'staging' into levelbuilder-clean-up-1
dmcavoy Jun 1, 2020
59dfbcb
Merge branch 'levelbuilder-clean-up-1' into help-tips-levelbuilder
dmcavoy Jun 1, 2020
b2f463b
Merge branch 'help-tips-levelbuilder' into applab-edit-org
dmcavoy Jun 1, 2020
7522373
Merge branch 'applab-edit-org' into code-area-edit
dmcavoy Jun 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 7 additions & 3 deletions dashboard/app/views/levels/edit.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@

= form_for [@level], method: @level.new_record? ? :post : :patch, remote: true do |f|
= f.hidden_field :type, value: @type_class.to_s.presence || @level.type

Find documentation for levelbuilder and its processes
= link_to 'here', 'https://github.com/code-dot-org/code-dot-org/wiki/%5BLevelbuilder%5D-Welcome-to-Levelbuilder', target: '_blank'

.field
/ dsl-defined levels specify a name directly in the DSL text
- unless @level.is_a? DSLDefined
Expand All @@ -21,6 +25,8 @@

/ Only enter name to create new records of certain level types.
- unless @level.new_record? && @level.is_a?(Blockly)
= render partial: 'levels/editors/instructions_area', locals: {f: f} unless @level.is_a? EvaluationMulti
= render partial: 'levels/editors/code_area', locals: {f: f} if @level.uses_droplet? || @level.is_a?(Blockly)
= render partial: 'levels/editors/all', locals: {f: f} unless @level.is_a? EvaluationMulti
= render partial: 'levels/editors/flappy', locals: {f: f} if @level.is_a? Flappy
= render partial: 'levels/editors/bounce', locals: {f: f} if @level.is_a? Bounce
Expand Down Expand Up @@ -49,9 +55,7 @@
= render partial: 'levels/editors/frequency_analysis', locals: {f: f} if @level.is_a? FrequencyAnalysis
= render partial: 'levels/editors/public_key_cryptography', locals: {f: f} if @level.is_a? PublicKeyCryptography
= render partial: 'levels/editors/curriculum_reference', locals: {f: f} if @level.is_a? CurriculumReference
= render partial: 'levels/editors/fields/mini_rubric', locals: {f: f} if (@level.uses_droplet?) || @level.is_a?(Blockly) || @level.is_a?(Weblab)
// Note that many DSL levels also use this partial. See _dsl.html.haml
= render partial: 'levels/editors/fields/teacher_only_markdown', locals: {f: f} if (@level.include_teacher_only_markdown_editor?)
= render partial: 'levels/editors/fields/audit_log', locals: {f: f} unless @level.is_a? EvaluationMulti
= render partial: 'levels/editors/fields/deprecated', locals: {f: f} unless @level.is_a? EvaluationMulti
.field
= f.hidden_field :published
Expand Down
41 changes: 0 additions & 41 deletions dashboard/app/views/levels/editors/_all.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,6 @@
- script_data = { editorall: { video_infos: video_infos }.to_json }
%script{src: webpack_asset_path('js/levels/editors/_all.js'), data: script_data}

.field
= f.label 'Documentation'
Find documentation for levelbuilder and its processes
= link_to 'here', 'https://github.com/code-dot-org/code-dot-org/wiki/%5BLevelbuilder%5D-Welcome-to-Levelbuilder', target: '_blank'

- unless @level.is_a?(DSLDefined) || @level.is_a?(Unplugged)
.field
= f.label 'notes'
%p
Notes for yourself or other Levelbuilders. Viewable here and here alone.
= f.text_area :notes, rows: 6, class: "input-block-level"

.field
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#audit_log_info"}}
Audit Log
%p A log of the people who most recently edited this level (up to the last 10 people)
#audit_log_info.collapse
= render partial: 'levels/editors/fields/audit_log', locals: {f: f}

- if !@level.is_a?(BubbleChoice)
= render partial: 'levels/editors/fields/bubble_choice_sublevel', locals: {f: f}

Expand All @@ -42,25 +23,6 @@
= f.select :video_key, options_for_select(video_key_choices, @level.video_key), {include_blank: true}, {class: 'video-dropdown'}
.video-preview{style: 'display: block'}

-# Deprecated for Sprite Lab and Dance
- if !(@level.is_a?(GamelabJr) || @level.is_a?(Dancelab) || @level.is_a?(BubbleChoice))
.field
= f.label :map_reference, 'Map Reference'
%p If there is a key resource you want to reference in the instructions, add the link here. It will show up under the 'Help & Tips' tab.
%p This should be a string representing the URL on studio.code.org/docs you want to embed, i.e. '/docs/csd/maker_leds/index.html'.
= f.text_field :map_reference, placeholder: 'Map Reference'


.field
= f.label :reference_link, 'Reference Links'
%p Add links to pages on Curriculum Builder below. They will show up in the 'Help & Tips' tab below any videos and the map reference.
%p These should be strings representing the URL on [docs|curriculum].code.org you want to embed, i.e. '/docs/csd/maker_leds/index.html' or '/curriculum/path/to/file'.
%p Put each link on a new line
.row
.span8
- @level.reference_links = [''] unless @level.reference_links.try(:present?)
= text_area_tag 'level[reference_links]', @level.reference_links.join("\r\n"), rows: 6, class: "input-block-level", placeholder: 'Additional Reference Link'

=render partial: 'levels/editors/fields/callouts', locals: {f: f}
- if @level.respond_to? :free_play
.field
Expand All @@ -86,7 +48,4 @@
%p If specified, users with this experiment on the levelbuilder machine will be able to edit this level.
= f.text_field :editor_experiment, placeholder: 'Editor Experiment'

= render partial: 'levels/editors/fields/instructions', locals: {f: f} unless @level.is_a?(DSLDefined) || @level.is_a?(Unplugged)
= render partial: 'levels/editors/droplet', locals: {f: f} if @level.uses_droplet?
= render partial: 'levels/editors/fields/curriculum_specific', locals: {f: f} if (@level.uses_droplet?) || @level.is_a?(Blockly)
= render partial: 'levels/editors/blockly', locals: {f: f} if !(@level.uses_droplet?) && @level.is_a?(Blockly)
62 changes: 5 additions & 57 deletions dashboard/app/views/levels/editors/_applab.html.haml
Original file line number Diff line number Diff line change
@@ -1,48 +1,23 @@
- content_for(:head) do
%script{src: webpack_asset_path('js/levels/editors/_applab.js')}

= render partial: 'levels/editors/fields/debugger', locals: {f: f}

.field
= f.label :slider_speed, 'Slider speed'
%p Number from 0.0 to 1.0 for how fast Applab runs by default while in the IDE. If not set, default is 1.0
= f.number_field :slider_speed, :step => 0.1

.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :show_turtle_before_run, description: "Show turtle before Run is pressed"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :design_mode_at_start, description: "Start in Design Mode"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :widget_mode, description: "Enable Widget Mode: Creates an embeded level with a double-width app screen that auto-runs on page load. The coding workspace, design mode, data mode, the reset button, and sharing are all disabled in widget mode."}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :hide_design_mode, description: "Hide Design Mode"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :makerlab_enabled, description: "Enable Maker APIs"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :expand_debugger, description: "Expand Debugger by Default"}

= render partial: 'levels/editors/fields/watchers_ui', locals: {f: f}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :autocomplete_palette_apis_only, description: "Autocomplete palette APIs only"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :execute_palette_apis_only, description: "Execute palette APIs only"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :beginner_mode, description: "Beginner mode for loops"}

= render partial: 'levels/editors/fields/submittable', locals: {f: f}

.field
= f.label :start_html, 'Starting design mode html'
%p
This should be equivalent to the level html created by design mode. Learn how to how to make them
=link_to 'here', 'https://github.com/code-dot-org/code-dot-org/wiki/%5BLevelbuilder%5D-Adding-Preloaded-Design-Elements-in-App-Lab', target: '_blank'
= render partial: 'levels/editors/fields/applab_design_mode', locals: {f: f}

%p
IMPORTANT WARNING: If you have referenced images in the HTML and/or CODE, then you need to get fully-qualified
code.org https URLS for these assets and update the HTML and the code to reflect these. You can quickly get full
image urls by drag-dropping the image into the markdown section of a dummy level in levelbuilder.
Copy the result and paste it here (it should start with something like
#{html_escape("<div xmlns='http://www.w3.org/1999/xhtml' id='divApplab'")}...)
= f.text_area :start_html, placeholder: 'Start html', rows: 4, value: @level.start_html
:javascript
levelbuilder.initializeCodeMirror('level_start_html', 'html');
= render partial: 'levels/editors/fields/applab_data', locals: {f: f}

= render partial: 'levels/editors/fields/encrypted_examples', locals: {f: f, level_type: 'applab'}

Expand All @@ -66,33 +41,6 @@
%p
Lint warnings and errors (in the editor's gutter area) will prevent the student from continuing when the Finish button is pressed.

.field
= f.label 'Table Data'
Step 1: Create a project at studio.code.org/p/applab and edit the data for a table in the data browser. Step 2: Copy the data via the debug area at the bottom of the table. Step 3: Paste the data below in the format { "tablename": <paste> }
%pre
= preserve do
:escaped
Example:
{
"table_name": [{ "name": "Trevor", "age": 30 }, { "name": "Hadi", "age": 72}],
"table_name2": [{ "city": "Seattle", "state": "WA" }, { "city": "Chicago", "state": "IL"}]
}
= f.text_area 'data_tables', placeholder: 'Insert JSON Data', rows: 4, value: @level.data_tables or ''
:javascript
levelbuilder.initializeCodeMirror('level_data_tables', 'javascript');

= render partial: 'levels/editors/fields/key_value_data', locals: {f: f}

.field
= f.label :data_library_tables,'Dataset Libraries'
= f.text_area :data_library_tables, value: @level.data_library_tables, readonly: true

.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :hide_view_data_button, description: "Hide Data Button"}

.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :debugger_disabled, description: "Disable code debugger (Console is still enabled)"}

= render partial: 'levels/editors/fields/helper_libraries', locals: {f: f}

:ruby
Expand Down
6 changes: 6 additions & 0 deletions dashboard/app/views/levels/editors/_code_area.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#instructions_area"}}
Code Area

#instructions_area.in.collapse
= render partial: 'levels/editors/droplet', locals: {f: f} if @level.uses_droplet?
= render partial: 'levels/editors/blockly', locals: {f: f} if !(@level.uses_droplet?) && @level.is_a?(Blockly)
61 changes: 38 additions & 23 deletions dashboard/app/views/levels/editors/_droplet.html.haml
Original file line number Diff line number Diff line change
@@ -1,23 +1,36 @@
.field
= f.label :edit_code,'Droplet level'
.field
= f.label :code_functions, 'Edit Droplet Palette'
= f.text_area :code_functions, placeholder: 'Droplet Palette', rows: 4, value: @level.code_functions ? JSON.pretty_generate(@level.code_functions) : ''

.field
= f.label :start_blocks, 'Edit Starting JavaScript Program'
.row
.span8
~ f.text_area :start_blocks, placeholder: 'Start Blocks', rows: 4, value: @level.uses_droplet? ? @level.start_blocks : @level.pretty_block('start')
#start-preview.span4
.field
= f.label :palette_category_at_start
= f.select :palette_category_at_start, options_for_select(@level.class.palette_categories, @level.palette_category_at_start), {include_blank: true}
.field
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#toolbox"}}
Toolbox

#toolbox.in.collapse
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :droplet_tooltips_disabled, description: "Hide droplet documentation tooltips"}
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :lock_zero_param_functions, description: "Don't allow parameters to be added to user-defined functions with no parameters"}
.field

- if @level.is_a? Applab
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :makerlab_enabled, description: "Enable Maker APIs"}
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :autocomplete_palette_apis_only, description: "Autocomplete palette APIs only"}
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :execute_palette_apis_only, description: "Execute palette APIs only"}
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :beginner_mode, description: "Beginner mode for loops"}
Comment on lines +8 to +12
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's a little weird to see fields pulled out of an applab-specific partial, only to be put behind an applab conditional. but it's more important to arrange the fields the way that the curriculum team wants than it is to keep conditionals out of our code, so this still seems like an improvement to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. I'm kinda trying to organize in small chunks that make sense and I think there will be some moving things to possibly move them again in order to get this right. The mistake I made last time was trying to make it right on the first go and that was too hard to follow for reviews.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries, makes sense! FWIW the most vocal feedback I recall receiving last time was from Elizabeth objecting to having things being hidden by default, since that broke her flow of doing a text search to find the field that she was looking for. I think you're doing a fine job of avoiding that here by making all the expand/collapse controls be expanded by default.


.field
= f.label :palette_category_at_start
= f.select :palette_category_at_start, options_for_select(@level.class.palette_categories, @level.palette_category_at_start), {include_blank: true}

.field
= f.label :code_functions, 'Edit Droplet Palette'
= f.text_area :code_functions, placeholder: 'Droplet Palette', rows: 4, value: @level.code_functions ? JSON.pretty_generate(@level.code_functions) : ''

%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#libraries"}}
Libraries

#libraries.in.collapse
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :libraries_enabled, description: "Enable Libraries"}
= f.label :start_libraries,'User-Created Toolbox Libraries (make sure that Enable Libraries ^ is checked)'
= f.text_area :start_libraries, value: @level.start_libraries

%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#starter-code"}}
Starter Code

#starter-code.in.collapse
= f.label :text_mode_at_start, 'Code View When Level Starts'
%p What mode the code is presented as when the level loads
.aligned-input-group
Expand All @@ -29,11 +42,13 @@
.aligned-input-group
= f.radio_button :text_mode_at_start, 'true'
= f.label :text_mode_at_start, 'Always start with text', :value => 'true'
.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :libraries_enabled, description: "Enable Libraries"}
.field
= f.label :start_libraries,'User-Created Toolbox Libraries (make sure that Enable Libraries ^ is checked)'
= f.text_area :start_libraries, value: @level.start_libraries
.field
= f.label :start_blocks, 'Edit Starting JavaScript Program'
.row
.span8
~ f.text_area :start_blocks, placeholder: 'Start Blocks', rows: 4, value: @level.uses_droplet? ? @level.start_blocks : @level.pretty_block('start')
#start-preview.span4

:ruby
script_data = {
pageOptions: {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#instructions_area"}}
Instructions Area

#instructions_area.in.collapse
= render partial: 'levels/editors/fields/instructions', locals: {f: f} unless @level.is_a?(DSLDefined) || @level.is_a?(Unplugged)
= render partial: 'levels/editors/fields/help_and_tips', locals: {f: f}
// Note that many DSL levels also use this partial. See _dsl.html.haml
= render partial: 'levels/editors/fields/teacher_only_markdown', locals: {f: f} if (@level.include_teacher_only_markdown_editor?)
= render partial: 'levels/editors/fields/mini_rubric', locals: {f: f} if (@level.uses_droplet?) || @level.is_a?(Blockly) || @level.is_a?(Weblab)
26 changes: 26 additions & 0 deletions dashboard/app/views/levels/editors/fields/_applab_data.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
%legend.control-legend{data: {toggle: "collapse", target: "#data"}}
Data
#data.in.collapse
.field
= f.label 'Table Data'
Step 1: Create a project at studio.code.org/p/applab and edit the data for a table in the data browser. Step 2: Copy the data via the debug area at the bottom of the table. Step 3: Paste the data below in the format { "tablename": <paste> }
%pre
= preserve do
:escaped
Example:
{
"table_name": [{ "name": "Trevor", "age": 30 }, { "name": "Hadi", "age": 72}],
"table_name2": [{ "city": "Seattle", "state": "WA" }, { "city": "Chicago", "state": "IL"}]
}
= f.text_area 'data_tables', placeholder: 'Insert JSON Data', rows: 4, value: @level.data_tables or ''
:javascript
levelbuilder.initializeCodeMirror('level_data_tables', 'javascript');

= render partial: 'levels/editors/fields/key_value_data', locals: {f: f}

.field
= f.label :data_library_tables,'Dataset Libraries'
= f.text_area :data_library_tables, value: @level.data_library_tables, readonly: true

.field
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :hide_view_data_button, description: "Hide Data Button"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
%legend.control-legend{data: {toggle: "collapse", target: "#design_mode"}}
Design Mode
#design_mode.in.collapse

= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :design_mode_at_start, description: "Start in Design Mode"}
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :hide_design_mode, description: "Hide Design Mode"}

.field
= f.label :start_html, 'Starting design mode html'
%p
This should be equivalent to the level html created by design mode. Learn how to how to make them
=link_to 'here', 'https://github.com/code-dot-org/code-dot-org/wiki/%5BLevelbuilder%5D-Adding-Preloaded-Design-Elements-in-App-Lab', target: '_blank'

%p
IMPORTANT WARNING: If you have referenced images in the HTML and/or CODE, then you need to get fully-qualified
code.org https URLS for these assets and update the HTML and the code to reflect these. You can quickly get full
image urls by drag-dropping the image into the markdown section of a dummy level in levelbuilder.
Copy the result and paste it here (it should start with something like
#{html_escape("<div xmlns='http://www.w3.org/1999/xhtml' id='divApplab'")}...)
= f.text_area :start_html, placeholder: 'Start html', rows: 4, value: @level.start_html
:javascript
levelbuilder.initializeCodeMirror('level_start_html', 'html');
34 changes: 19 additions & 15 deletions dashboard/app/views/levels/editors/fields/_audit_log.html.haml
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
%table.audit_log
%tr
%th Date
%th What Was Changed
%th Who Changed It
- if(@level.audit_log != nil)
- aud_log = JSON.parse(@level.audit_log)
- aud_log.last(10).reverse_each do |log|
%tr
%td.aud_date= DateTime.parse(log["changed_at"]).strftime("%v at: %r")
%td.aud_changes
%ul
-log["changed"].each_with_index do |change, i|
%li= change
%td.aud_person= log["changed_by_email"]
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#audit_log_info"}}
Audit Log
%p A log of the people who most recently edited this level (up to the last 10 people)
#audit_log_info.collapse
%table.audit_log
%tr
%th Date
%th What Was Changed
%th Who Changed It
- if(@level.audit_log != nil)
- aud_log = JSON.parse(@level.audit_log)
- aud_log.last(10).reverse_each do |log|
%tr
%td.aud_date= DateTime.parse(log["changed_at"]).strftime("%v at: %r")
%td.aud_changes
%ul
-log["changed"].each_with_index do |change, i|
%li= change
%td.aud_person= log["changed_by_email"]
10 changes: 3 additions & 7 deletions dashboard/app/views/levels/editors/fields/_debugger.html.haml
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
%legend.control-legend.collapsed{data: {toggle: "collapse", target: "#debuggingTools"}}
Debugging
Debugger

#debuggingTools.collapse
#debuggingTools.in.collapse
= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :expand_debugger, description: "Expand Debugger by Default"}

= render partial: 'levels/editors/fields/checkboxes', locals: {f: f, field_name: :debugger_disabled, description: "Disable code debugger (Console is still enabled)"}
= render partial: 'levels/editors/fields/watchers_ui', locals: {f: f}

.field.aligned-input-group
= boolean_check_box f, :debugger_disabled
=f.label 'Disable code debugger (Console is still enabled)'
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@

#deprecated.collapse

- unless @level.is_a?(DSLDefined) || @level.is_a?(Unplugged)
.field
= f.label 'notes'
%p
Notes for yourself or other Levelbuilders. Viewable here and here alone.
= f.text_area :notes, rows: 6, class: "input-block-level"

.field
= f.label 'concepts'
%p
Expand Down