When a link points to an anchor within a page (like this ) the page opens with the target right at the top of the window which can make it a bit hard to follow.

A simple way to improve it is to add the following style

[id] {
	scroll-margin-top: 1.75ex;
}

I use 1.75ex as that makes the line immediately above the target not fully visible so the eye goes to the first complete line. Using 2ex makes the line above complete, which I still find confusing. 

It often annoys me (slightly) that many (most) sites don't provide any hint to the user if a link is set to open in a new window/tab or the same one.

I'm aware that there is a class of purists who believe that the end user should be always king and they should decide whether or not a link should open in the same tab or a fresh one.

There are two problems with this.

Finally I have discovered how to do this satisfactorily.

My requirement is to be able to create some tags - for example when installing xbCulture Components or when converting xbRefs Text References to Tag References in xbRefMan. These tags need to have a description and parent set as well as just a title so the simple function in TagsHelper::createTagsFromField(array()) does not cut the mustard. It only lets you create simple tags with just a title, and has a weird syntax whereby the title string has to be prefixed with #new# 

I was confused of exactly what order various functions of the install/unintsall script run with a package.

This is what my tests show (Joomla 3.10)

Assuming a package with a number of elements (plugins in this case)

On install the following order of functions:

  1. Package preflight()
  2. plugin1 preflight()
  3. plugin1 install()
  4. plugin1 postflight()
  5. plugin2 preflight()
  6. plugin2 install()
  7. plugin2 postflight()
  8. ... and so on for any other extensions in the order that they appear in the package xml
  9. Package install()
  10. Package postflight()

So the package install() and postflight() are run after all the extensions have installed

The extensions can generate messages $app->enqueueMessage() which will display, but any html output echo'd in their functions will not be shown (unless passed to the message queue

For a given message type the messages will appear in one block in the order in which they are generated.

 

For uninstall the following order applies

  1. Package uninstall()
  2. plugin1 preflight()
  3. plugin1 uninstall()
  4. plugin2 preflight()
  5. plugin2 uninstall()

Note that Package preflight() does not run, but the extension preflight()s do.

None of the postflights() run

The extension order is again as found in the package xml file

With two components it goes like this

Install:

  1. pkg preflight install
  2. people preflight install
  3. people install
  4. people postflight install
  5. book preflight install
  6. book install
  7. book postflight install
  8. pkg install
  9. pkg postflight install
 
Update:
  1. pkg preflight update
  2. people preflight update
  3. people update
  4. people postflight update
  5. book preflight update
  6. book update
  7. book postflight update
  8. pkg update
  9. pkg postflight update
 
Uninstall:
  1. pkg uninstall
  2. people uninstall
  3. book uninstall
 
In this case no preflights run at all, and again postflight doesn't run