#1753 - Improved cross-file editing

This is a spacer post for a website comment topic. The content this topic relates to: #1753 - Improved cross-file editing
I am very excited about implementing this. Thank you for the sponsorship :).

Practically though, I don't think we can do this as sponsored on v9 (too large a change, and contingent on various things already done for v10), and maybe not v10 (I don't want to delay v10 any further if possible). I am thinking doing it within a 10.1 release.
I could see this would be an important step in the ongoing process of simplifying website editing for admins who are not trained in coding (me:)), so definitely want to help these steps move forward.

I understand. Sounds good to wait for 10.1
We make want to also support .less files within the editor, if the new less addon is installed.
Hello,

I just wanted to drop a quick acknowledgement of how long this has been sitting around. Of course it's because v10 has been taking a long time, and this is set for 10.1.

I very much appreciate the sponsorship and I still very much look forward to implementing this. It's not forgotten (along with related editing issues).

Best,
Chris
yes, looking forward :)
All of part '1' is now implemented.

Here's a sample on-disk meta-tree for the default home page...

./screens/root
./screens/root/start
./screens/root/start/GLOBAL_HTML_WRAP.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/ajax.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/ajax.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/ajax_people_lists.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/ajax_people_lists.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_NOTIFICATIONS.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_NOTIFICATIONS.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_NOTIFICATIONS.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl/HYPERLINK.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl/HYPERLINK.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINE_COMPLEX.tpl/HYPERLINK.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINK.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINK.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LINK.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LOGOUT.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LOGOUT.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_PERSONAL_STATS.tpl/BLOCK_SIDE_PERSONAL_STATS_LOGOUT.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_SEARCH.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_SEARCH.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/BLOCK_TOP_SEARCH.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/button_commandr.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/button_commandr.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_COMCODE_PAGE_CHILDREN.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_COMCODE_PAGE_CHILDREN.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_COMCODE_PAGE_CHILDREN.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_QUOTES.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_QUOTES.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_QUOTES.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_SCREEN_ACTIONS.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_SCREEN_ACTIONS.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_MAIN_SCREEN_ACTIONS.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_NO_ENTRIES.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_NO_ENTRIES.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/BLOCK_NO_ENTRIES.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl/HYPERLINK.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl/HYPERLINK.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/COMCODE_SURROUND.tpl/HYPERLINK.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/PARAGRAPH.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/PARAGRAPH.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/PARAGRAPH.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/SCREEN_TITLE.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/SCREEN_TITLE.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/COMCODE_SURROUND.tpl/SCREEN_TITLE.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/PARAGRAPH.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/PARAGRAPH.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/PARAGRAPH.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl/POINTS_LEADER_BOARD_ROW.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl/POINTS_LEADER_BOARD_ROW.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/POINTS_LEADER_BOARD.tpl/POINTS_LEADER_BOARD_ROW.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/SCREEN_TITLE.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/SCREEN_TITLE.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/SCREEN_TITLE.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/STAFF_ACTIONS.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/COMCODE_PAGE_SCREEN.tpl/STAFF_ACTIONS.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/custom_globals.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/custom_globals.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/email.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/email.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/facebook.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/facebook.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/font_sizer.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/font_sizer.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/FONT_SIZER.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/FONT_SIZER.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/global.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/global.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/global.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/global.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/GLOBAL_HTML_WRAP_mobile.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/GLOBAL_HTML_WRAP_mobile.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED_INLINE.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED_INLINE.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/CSS_NEED_INLINE.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/JAVASCRIPT_NEED.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/JAVASCRIPT_NEED.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/HTML_HEAD.tpl/JAVASCRIPT_NEED.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/JAVASCRIPT_NEED.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/JAVASCRIPT_NEED.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/JAVASCRIPT_NEED.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/menu__dropdown.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/menu__dropdown.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_BRANCH_dropdown.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_BRANCH_dropdown.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_BRANCH_dropdown.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_BRANCH_dropdown.tpl/MENU_LINK_PROPERTIES.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_BRANCH_dropdown.tpl/MENU_LINK_PROPERTIES.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_LINK_PROPERTIES.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_dropdown.tpl/MENU_LINK_PROPERTIES.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_LINK_PROPERTIES.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_LINK_PROPERTIES.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/menu_popup.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/menu_popup.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_STAFF_LINK.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_STAFF_LINK.tpl/_instance_calls.txt
./screens/root/start/GLOBAL_HTML_WRAP.tpl/MENU_STAFF_LINK.tpl/_self.tpl
./screens/root/start/GLOBAL_HTML_WRAP.tpl/modalwindow.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/modalwindow.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/news.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/news.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/no_cache.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/no_cache.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/notification_poller.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/notification_poller.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/notifications.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/notifications.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/personal_stats.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/personal_stats.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/points.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/points.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/polls.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/polls.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/random_quotes.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/random_quotes.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/screen_actions.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/screen_actions.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/search.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/search.css/_self.css
./screens/root/start/GLOBAL_HTML_WRAP.tpl/staff.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/staff.js/_self.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/transitions.js
./screens/root/start/GLOBAL_HTML_WRAP.tpl/transitions.js/_self.js

This is very useful to power-users, but the relationship data now saved can be used for the remaining parts of this task.
I have this mostly implemented now. What remains is the specifics about previewing, live previewing, and some very minor details

TODO...

Get resize dragging working when multiple tabs are open

Add show templates by addon sections to the file tree

List related templates underneath template editing tabs, with buttons to load them

If people want to manipulate individual files without browser JavaScript support, they can use /code_editor.php -- put out an accessibility message about this

Navigating away would present a window.confirm, checking that you are okay with losing unsaved changes (only if there are unsaved changes though).

Multiple preview buttons, works with all tabs at once
- Lorem ipsum [may not be available]
- Preview via selected screen [may not be available]
- Preview via live [may not be available]

The template editing would not have live preview, but hovering over the selection tree would result in highlighting of any HTML DOM nodes directly under the template being edited. This might work with a glow effect.

All the "Change page rendering tools" stuff

Re-take screenshots for documentation, and update text

Image

(Click to enlarge)

More is now done. The TODO is now...

Multiple preview buttons, works with all tabs at once
- Lorem ipsum [may not be available]
- Preview via selected screen [may not be available]
- Preview via live [may not be available]

The template editing would not have live preview, but hovering over the selection tree would result in highlighting of any HTML DOM nodes directly under the template being edited. This might work with a glow effect.

All the "Change page rendering tools" stuff

Re-take screenshots for documentation, and update text

Fix template editor revision history - currently I think it is broken, and it should work via AJAX

Make sure that "Theme editor" is always used to refer to the overall admin_themes module and "template editor" or "edit templates" for the template editor. It may use "Theme editor" instead of "template editor" in some places, and needs to be consistent. CSS files are now considered templates.

It's finally all done, and it's glorious!

I don't know when v11 will be out, but anyone can test this within the feature__code_editing_update git branch.
Congratulations!
0 guests and 0 members have recently viewed this.