#1753 - Improved cross-file editing
0 guests and 0 members have recently viewed this.
The top 3 point earners from 14th Dec 2025 to 21st Dec 2025.
| PDStig |
|
|
|---|---|---|
| Gabri |
|
|
| sholzy |
|
|
There are no events at this time
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 understand. Sounds good to wait for 10.1
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
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.
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
(Click to enlarge)
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.
I don't know when v11 will be out, but anyone can test this within the feature__code_editing_update git branch.