I've build a custom panel (backend) field for the Kirby CMS.
It creates a html select which shows all invisible and visible pages:

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.