I've build a custom panel (backend) field for the Kirby CMS.

It creates a html select which shows all invisible and visible pages:

Kirby pageselect

After you have copied the required files from the kirbycms-pageselect repo to your site/panel/fields folder, you can add the new field by typing this in your blueprint file:

fields:
    myfield:
        label: My Page Select
        type: pageselect

Once you have selected something, the uri of the selected site will be stored in your .txt-file.

There are propably much better ways to write the php-part. But i think it's a good start, if you want to build something comparable.

Kirby 2 is already in beta. I haven't tested the plugin in Kirby 2. If someone needs it, just add an issue to my github repo or send me a pull-request, if you have migrated it yourself.