What does the "update" element do in Magento layout XML?
The <update>
basically pulls in another handle.
Assume you have this:
<layout>
<foo>
<reference name="header">
<block type="cms/block" name="some_block" as="someBlock">
<action method="setBlockId"><block_id>some_block</block_id></action>
</block>
</reference>
<reference name="left">
<block type="cms/block" name="some_totally_different_block" as="someTotallyDifferentBlock">
<action method="setBlockId"><block_id>some_totally_different_block</block_id></action>
</block>
</reference>
</foo>
<bar>
<update handle="foo" />
<reference name="header">
<block type="cms/block" name="some_other_block" as="someOtherBlock">
<action method="setBlockId"><block_id>some_other_block</block_id></action>
</block>
</reference>
</bar>
</layout>
The resulting XML for bar
would be:
<layout>
<bar>
<reference name="header">
<!-- Start of part pulled in from foo -->
<block type="cms/block" name="some_block" as="someBlock">
<action method="setBlockId"><block_id>some_block</block_id></action>
</block>
<!-- End of part pulled in from foo -->
<block type="cms/block" name="some_other_block" as="someOtherBlock">
<action method="setBlockId"><block_id>some_other_block</block_id></action>
</block>
</reference>
<!-- Start of part pulled in from foo -->
<reference name="left">
<block type="cms/block" name="some_totally_different_block" as="someTotallyDifferentBlock">
<action method="setBlockId"><block_id>some_totally_different_block</block_id></action>
</block>
</reference>
<!-- End of part pulled in from foo -->
</bar>
</layout>
tl;dr: The update
handle is basically a "merge this layout with my current layout".
This handle is used for merging existing layout handles to your current layout.
In your example <update handle="editor"/>
will add to the <adminhtml_catalog_product_edit>
following content:
<editor>
<reference name="head">
<action method="setCanLoadExtJs"><flag>1</flag></action>
<action method="addJs"><script>mage/adminhtml/variables.js</script></action>
<action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action>
<action method="addJs"><script>lib/flex.js</script></action>
<action method="addJs"><script>lib/FABridge.js</script></action>
<action method="addJs"><script>mage/adminhtml/flexuploader.js</script></action>
<action method="addJs"><script>mage/adminhtml/browser.js</script></action>
<action method="addJs"><script>prototype/window.js</script></action>
<action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
<action method="addItem"><type>js_css</type><name>prototype/windows/themes/magento.css</name></action>
</reference>
</editor>
("editor" handle is defined in app/design/adminhtml/default/default/layout/main.xml
)