aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Hooks.md136
-rw-r--r--doc/Hubzilla_on_OpenShift.bb6
-rw-r--r--doc/README.md4
-rw-r--r--doc/addons.bb2
-rw-r--r--doc/admins.bb1
-rw-r--r--doc/credits.bb2
-rw-r--r--doc/de/main.bb28
-rw-r--r--doc/develop.bb2
-rw-r--r--doc/developers.bb2
-rw-r--r--doc/directories.bb95
-rw-r--r--doc/faq_developers.bb421
-rw-r--r--doc/features.bb6
-rw-r--r--doc/hidden_configs.bb42
-rw-r--r--doc/hook/about_hook.bb1
-rw-r--r--doc/hook/accept_follow.bb1
-rw-r--r--doc/hook/account_downgrade.bb1
-rw-r--r--doc/hook/account_settings.bb1
-rw-r--r--doc/hook/account_settings_post.bb1
-rw-r--r--doc/hook/activity_received.bb1
-rw-r--r--doc/hook/affinity_labels.bb1
-rw-r--r--doc/hook/api_perm_is_allowed.bb1
-rw-r--r--doc/hook/app_menu.bb1
-rw-r--r--doc/hook/atom_author.bb1
-rw-r--r--doc/hook/atom_entry.bb1
-rw-r--r--doc/hook/atom_feed.bb1
-rw-r--r--doc/hook/atom_feed_end.bb1
-rw-r--r--doc/hook/attach_upload_file.bb1
-rw-r--r--doc/hook/authenticate.bb29
-rw-r--r--doc/hook/avatar_lookup.bb1
-rw-r--r--doc/hook/bb2diaspora.bb1
-rw-r--r--doc/hook/bbcode.bb1
-rw-r--r--doc/hook/channel_remove.bb1
-rw-r--r--doc/hook/chat_message.bb1
-rw-r--r--doc/hook/chat_post.bb1
-rw-r--r--doc/hook/check_account_email.bb1
-rw-r--r--doc/hook/check_account_invite.bb1
-rw-r--r--doc/hook/check_account_password.bb1
-rw-r--r--doc/hook/connect_premium.bb1
-rw-r--r--doc/hook/connector_settings.bb1
-rw-r--r--doc/hook/construct_page.bb1
-rw-r--r--doc/hook/contact_block_end.bb1
-rw-r--r--doc/hook/contact_edit.bb1
-rw-r--r--doc/hook/contact_edit_post.bb1
-rw-r--r--doc/hook/contact_select_options.bb1
-rw-r--r--doc/hook/conversation_start.bb1
-rw-r--r--doc/hook/create_identity.bb1
-rw-r--r--doc/hook/cron.bb1
-rw-r--r--doc/hook/cron_daily.bb1
-rw-r--r--doc/hook/cron_weekly.bb1
-rw-r--r--doc/hook/directory_item.bb1
-rw-r--r--doc/hook/discover_by_webbie.bb1
-rw-r--r--doc/hook/display_item.bb1
-rw-r--r--doc/hook/display_settings.bb1
-rw-r--r--doc/hook/display_settings_post.bb1
-rw-r--r--doc/hook/donate_contributors.bb1
-rw-r--r--doc/hook/donate_plugin.bb1
-rw-r--r--doc/hook/donate_sponsors.bb1
-rw-r--r--doc/hook/dreport_is_storable.bb1
-rw-r--r--doc/hook/drop_item.bb1
-rw-r--r--doc/hook/enotify.bb1
-rw-r--r--doc/hook/enotify_mail.bb1
-rw-r--r--doc/hook/enotify_store.bb1
-rw-r--r--doc/hook/event_created.bb1
-rw-r--r--doc/hook/event_updated.bb1
-rw-r--r--doc/hook/externals_url_select.bb1
-rw-r--r--doc/hook/feature_enabled.bb1
-rw-r--r--doc/hook/feature_settings.bb1
-rw-r--r--doc/hook/feature_settings_post.bb1
-rw-r--r--doc/hook/follow.bb1
-rw-r--r--doc/hook/follow_allow.bb1
-rw-r--r--doc/hook/gender_selector.bb1
-rw-r--r--doc/hook/gender_selector_min.bb1
-rw-r--r--doc/hook/generate_map.bb1
-rw-r--r--doc/hook/generate_named_map.bb1
-rw-r--r--doc/hook/get_all_api_perms.bb1
-rw-r--r--doc/hook/get_all_perms.bb1
-rw-r--r--doc/hook/get_features.bb1
-rw-r--r--doc/hook/get_role_perms.bb1
-rw-r--r--doc/hook/get_widgets.bb1
-rw-r--r--doc/hook/global_permissions.bb1
-rw-r--r--doc/hook/home_content.bb1
-rw-r--r--doc/hook/home_init.bb1
-rw-r--r--doc/hook/hostxrd.bb1
-rw-r--r--doc/hook/html2bbcode.bb1
-rw-r--r--doc/hook/identity_basic_export.bb1
-rw-r--r--doc/hook/import_author_xchan.bb1
-rw-r--r--doc/hook/import_channel.bb1
-rw-r--r--doc/hook/import_directory_profile.bb1
-rw-r--r--doc/hook/import_xchan.bb1
-rw-r--r--doc/hook/item_photo_menu.bb1
-rw-r--r--doc/hook/item_store.bb1
-rw-r--r--doc/hook/item_store_update.bb1
-rw-r--r--doc/hook/item_translate.bb1
-rw-r--r--doc/hook/jot_networks.bb1
-rw-r--r--doc/hook/jot_tool.bb1
-rw-r--r--doc/hook/load_pdl.bb1
-rw-r--r--doc/hook/local_dir_update.bb1
-rw-r--r--doc/hook/logged_in.bb1
-rw-r--r--doc/hook/logging_out.bb1
-rw-r--r--doc/hook/login_hook.bb1
-rw-r--r--doc/hook/magic_auth.bb1
-rw-r--r--doc/hook/magic_auth_openid_success.bb1
-rw-r--r--doc/hook/magic_auth_success.bb1
-rw-r--r--doc/hook/main_slider.bb1
-rw-r--r--doc/hook/marital_selector.bb1
-rw-r--r--doc/hook/marital_selector_min.bb1
-rw-r--r--doc/hook/module_loaded.bb1
-rw-r--r--doc/hook/module_mod_aftercontent.bb12
-rw-r--r--doc/hook/module_mod_content.bb10
-rw-r--r--doc/hook/module_mod_init.bb1
-rw-r--r--doc/hook/module_mod_post.bb1
-rw-r--r--doc/hook/mood_verbs.bb1
-rw-r--r--doc/hook/nav.bb1
-rw-r--r--doc/hook/network_content_init.bb1
-rw-r--r--doc/hook/network_ping.bb1
-rw-r--r--doc/hook/network_tabs.bb1
-rw-r--r--doc/hook/network_to_name.bb1
-rw-r--r--doc/hook/notifier_end.bb1
-rw-r--r--doc/hook/notifier_hub.bb1
-rw-r--r--doc/hook/notifier_normal.bb1
-rw-r--r--doc/hook/obj_verbs.bb1
-rw-r--r--doc/hook/oembed_probe.bb1
-rw-r--r--doc/hook/page_content_top.bb1
-rw-r--r--doc/hook/page_end.bb1
-rw-r--r--doc/hook/page_header.bb1
-rw-r--r--doc/hook/parse_atom.bb1
-rw-r--r--doc/hook/parse_link.bb1
-rw-r--r--doc/hook/pdl_selector.bb1
-rw-r--r--doc/hook/perm_is_allowed.bb1
-rw-r--r--doc/hook/permissions_create.bb1
-rw-r--r--doc/hook/permissions_update.bb1
-rw-r--r--doc/hook/personal_xrd.bb1
-rw-r--r--doc/hook/photo_post_end.bb1
-rw-r--r--doc/hook/photo_upload_begin.bb1
-rw-r--r--doc/hook/photo_upload_end.bb1
-rw-r--r--doc/hook/photo_upload_file.bb1
-rw-r--r--doc/hook/photo_upload_form.bb1
-rw-r--r--doc/hook/poke_verbs.bb1
-rw-r--r--doc/hook/post_local.bb1
-rw-r--r--doc/hook/post_local_end.bb1
-rw-r--r--doc/hook/post_local_start.bb1
-rw-r--r--doc/hook/post_mail.bb1
-rw-r--r--doc/hook/post_mail_end.bb1
-rw-r--r--doc/hook/post_remote.bb1
-rw-r--r--doc/hook/post_remote_end.bb1
-rw-r--r--doc/hook/post_remote_update.bb1
-rw-r--r--doc/hook/post_remote_update_end.bb1
-rw-r--r--doc/hook/prepare_body.bb1
-rw-r--r--doc/hook/prepare_body_final.bb1
-rw-r--r--doc/hook/prepare_body_init.bb1
-rw-r--r--doc/hook/probe_well_known.bb1
-rw-r--r--doc/hook/proc_run.bb1
-rw-r--r--doc/hook/process_channel_sync_delivery.bb1
-rw-r--r--doc/hook/profile_advanced.bb1
-rw-r--r--doc/hook/profile_edit.bb1
-rw-r--r--doc/hook/profile_photo_content_end.bb1
-rw-r--r--doc/hook/profile_post.bb1
-rw-r--r--doc/hook/profile_sidebar.bb1
-rw-r--r--doc/hook/profile_sidebar_enter.bb1
-rw-r--r--doc/hook/profile_tabs.bb1
-rw-r--r--doc/hook/register_account.bb1
-rw-r--r--doc/hook/render_location.bb1
-rw-r--r--doc/hook/replace_macros.bb1
-rw-r--r--doc/hook/reverse_magic_auth.bb1
-rw-r--r--doc/hook/settings_form.bb1
-rw-r--r--doc/hook/settings_post.bb1
-rw-r--r--doc/hook/sexpref_selector.bb1
-rw-r--r--doc/hook/sexpref_selector_min.bb1
-rw-r--r--doc/hook/smilie.bb1
-rw-r--r--doc/hook/tagged.bb1
-rw-r--r--doc/hook/validate_channelname.bb1
-rw-r--r--doc/hook/webfinger.bb1
-rw-r--r--doc/hook/well_known.bb1
-rw-r--r--doc/hook/zid.bb1
-rw-r--r--doc/hook/zid_init.bb1
-rw-r--r--doc/hook/zot_finger.bb1
-rw-r--r--doc/hooklist.bb494
-rw-r--r--doc/hooks.html1
-rw-r--r--doc/html/index.php8
-rw-r--r--doc/to_do_code.bb8
180 files changed, 1294 insertions, 175 deletions
diff --git a/doc/Hooks.md b/doc/Hooks.md
deleted file mode 100644
index 90edff623..000000000
--- a/doc/Hooks.md
+++ /dev/null
@@ -1,136 +0,0 @@
-Hooks - Complete List
-=====================
-
-
-* 'about_hook'
-* 'account_settings'
-* 'app_menu'
-* 'atom_author'
-* 'atom_entry'
-* 'atom_feed'
-* 'atom_feed_end'
-* 'authenticate'
-* 'avatar_lookup'
-* 'bb2diaspora'
-* 'bbcode'
-* 'channel_remove'
-* 'check_account_email'
-* 'check_account_invite'
-* 'check_account_password'
-* 'connect_premium'
-* 'connector_settings'
-* 'contact_block_end'
-* 'contact_edit'
-* 'contact_edit_post'
-* 'contact_photo_menu'
-* 'contact_select_options'
-* 'conversation_start'
-* 'cron'
-* 'directory_item'
-* 'display_item'
-* 'display_item'
-* 'display_settings'
-* 'display_settings_post'
-* 'enotify'
-* 'enotify_mail'
-* 'enotify_store'
-* 'event_created'
-* 'event_updated'
-* 'feature_enabled'
-* 'feature_settings'
-* 'feature_settings_post'
-* 'follow'
-* 'gender_selector'
-* 'get_all_perms'
-* 'get_features'
-* 'get_widgets'
-* 'global_permissions'
-* 'home_content'
-* 'home_init'
-* 'html2bbcode'
-* 'import_directory_profile'
-* 'init_1'
-* 'item_photo_menu'
-* 'item_translate'
-* 'jot_networks'
-* 'jot_tool'
-* 'logged_in'
-* 'login_hook'
-* 'logging_out'
-* 'magic_auth'
-* 'magic_auth_success'
-* 'main_slider'
-* 'marital_selector'
-* 'mood_verbs'
-* 'network_content_init'
-* 'network_ping'
-* 'network_tabs'
-* 'network_to_name'
-* 'notifier_end'
-* 'notifier_normal'
-* 'obj_verbs'
-* 'oembed_probe'
-* 'page_content_top'
-* 'page_end'
-* 'page_header'
-* 'parse_atom'
-* 'parse_link'
-* 'pdl_selector'
-* 'perm_is_allowed'
-* 'personal_xrd'
-* 'photo_post_end'
-* 'photo_post_end'
-* 'photo_upload_begin'
-* 'photo_upload_end'
-* 'photo_upload_file'
-* 'photo_upload_form'
-* 'poke_verbs'
-* 'post_local'
-* 'post_local_end'
-* 'post_local_start'
-* 'post_mail'
-* 'post_mail_end'
-* 'post_remote'
-* 'post_remote_end'
-* 'post_remote_update'
-* 'post_remote_update_end'
-* 'prepare_body'
-* 'prepare_body_final'
-* 'prepare_body_init'
-* 'proc_run'
-* 'profile_advanced'
-* 'profile_edit'
-* 'profile_post'
-* 'profile_sidebar'
-* 'profile_sidebar_enter'
-* 'profile_tabs'
-* 'register_account'
-* 'render_location'
-* 'settings_account'
-* 'settings_form'
-* 'settings_post'
-* 'sexpref_selector'
-* 'smilie'
-* 'validate_channelname'
-* 'webfinger'
-* 'zid'
-* 'zid_init'
-
-***General Module Hooks***
-
-* $a->module . '_mod_aftercontent'
-* $a->module . '_mod_aside'
-* $a->module . '_mod_content'
-* $a->module . '_mod_init'
-* $a->module . '_mod_post'
-
-***General Selector Hooks***
-
-* $a->module . '_post_' . $selname
-* $a->module . '_post_' . $selname
-* $a->module . '_post_' . $selname
-* $a->module . '_pre_' . $selname
-* $a->module . '_pre_' . $selname
-* $a->module . '_pre_' . $selname
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/Hubzilla_on_OpenShift.bb
index f33eee98c..9b2c539dc 100644
--- a/doc/Hubzilla_on_OpenShift.bb
+++ b/doc/Hubzilla_on_OpenShift.bb
@@ -1,7 +1,9 @@
[b]Hubzilla on OpenShift[/b]
-You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift.
+You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift with plugins and extra themes.
-Create an account on OpenShift, then use the registration e-mail and password to create your first Hubzilla instance. Install git and RedHat's command line tools - rhc - if you have not already done so.
+As of this writing, 2015-10-28, you do not have to pay for OpenShift on the Free plan, which gives you three gears at no cost. The Bronze plan gives you three gears at no cost too, but you can expand to 16 gears by paying, and this requires you to register your payment card. The three gears can give three instances of Hubzilla with one gear each, or you can combine two gears into one high-availability Hubzilla instance and one extra gear. The main difference to be aware of is this: gears on the Free plan will go into hibernation if left idle for too long, this does not happen on the Bronze plan.
+
+Create an account on OpenShift, then use the registration e-mail and password to create your first Hubzilla instance. Install git and RedHat's command line tools - rhc - if you have not already done so. See for example https://developers.openshift.com/en/getting-started-debian-ubuntu.html on how to do this on Debian GNU/Linux, or in the menu on that page for other GNU/Linux distributions or other operating systems.
[code]rhc app-create your_app_name php-5.4 mysql-5.5 cron phpmyadmin --namespace your_domain --from-code https://github.com/redmatrix/hubzilla.git -l your@email.address -p your_account_password
[/code]
diff --git a/doc/README.md b/doc/README.md
index 09503efd7..10fba445b 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -5,7 +5,7 @@ Hubzilla
###Websites. Redefined.
-![Hubzilla](images/hz-32.png)
+![Hubzilla](../images/hz-32.png)
**What are Hubs?**
@@ -39,4 +39,4 @@ Possible website applications include
-This project is under development and is not yet available for general use. \ No newline at end of file
+This project is under development and is not yet available for general use.
diff --git a/doc/addons.bb b/doc/addons.bb
index 1be88150d..a6d2cfc2f 100644
--- a/doc/addons.bb
+++ b/doc/addons.bb
@@ -42,7 +42,7 @@
[*] qrator - generate QR code images
[*] rainbowtag - display your tag and category clouds in colours
[*] randpost - post/reply bot based on and requires fortunate
-[*] redred - Crosspost to another Redmatrix or Hubzilla channel
+[*] redred - Crosspost to another Red Matrix or Hubzilla channel
[*] rtof - Crosspost to Friendica
[*] smiley_pack - extend the built-in smilie (emoticon) support
[*] smileybutton - provides a smiley selector on the post window
diff --git a/doc/admins.bb b/doc/admins.bb
index c77b004a4..484212024 100644
--- a/doc/admins.bb
+++ b/doc/admins.bb
@@ -9,6 +9,7 @@
[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
[zrl=[baseurl]/help/service_classes]Service Classes[/zrl]
+[zrl=[baseurl]/help/directories]Working with and configuring Directories[/zrl]
[zrl=[baseurl]/help/theme_management]Theme Management[/zrl]
diff --git a/doc/credits.bb b/doc/credits.bb
index 200f1fc85..5219d7bf5 100644
--- a/doc/credits.bb
+++ b/doc/credits.bb
@@ -14,7 +14,7 @@ tommy tomson
Simon
zottel
Christian Vogeley
-jeroenpraat
+Jeroen van Riet Paap (jeroenpraat)
Michael Vogel
erik
Zach Prezkuta
diff --git a/doc/de/main.bb b/doc/de/main.bb
index f310d0ab5..dab34c19a 100644
--- a/doc/de/main.bb
+++ b/doc/de/main.bb
@@ -1,19 +1,19 @@
[img][baseurl]/assets/hashlogo.png[/img]
-[zrl=[baseurl]/help/about]Was ist die RedMatrix?[/zrl]
-Die RedMatrix ist eine dezentrale Kommunikations- und Publishing-Plattform. Sie ermöglicht Dir die volle Kontrolle über all Deine Kommunikation mit Hilfe von automatischer Verschlüsselung und detaillierter Zugriffskontrolle. Du, und [i]nur[/i] Du, entscheidest, wer Deine Beiträge sehen darf.
+[zrl=[baseurl]/help/about]Was ist Hubzilla?[/zrl]
+Hubzilla ist eine dezentrale Kommunikations- und Publishing-Plattform. Sie ermöglicht Dir die volle Kontrolle über all Deine Kommunikation mit Hilfe von automatischer Verschlüsselung und detaillierter Zugriffskontrolle. Du, und [i]nur[/i] Du, entscheidest, wer Deine Beiträge sehen darf. Hubzilla ist der Nachfolger, der seit einigen Jahren erfolgreichen Plattformen Firendica und Red Matrix.
-[zrl=[baseurl]/help/features]Features der RedMatrix[/zrl]
-Die RedMatrix funktioniert schon heute als ein globales verteiltes Netzwerk und beweist täglich ihre Vielseitigkeit und Skalierbarkeit auf kleinen Privatservern wie auch auf riesigen Sites.
-Kommunikationsplattformen für Familien, verteilte Online-Communities, Support-Foren, Blogs und Homepages. Oder auch professionelle Inhalte-Anbieter mit kommerziellen Premium-Kanälen und eingeschränktem Zugriff – was immer Du willst, die RedMatrix unterstützt Dich in Deinem kreativen Schaffen.
+[zrl=[baseurl]/help/features]Features von Hubzilla[/zrl]
+Hubzilla, basierend auf der Red Matrix, funktioniert schon heute als ein globales verteiltes Netzwerk und beweist täglich ihre Vielseitigkeit und Skalierbarkeit - auf kleinen Privatservern wie auch auf riesigen Sites.
+Kommunikationsplattformen für Familien, verteilte Online-Communities, Support-Foren, Blogs und Homepages. Oder auch professionelle Inhalte-Anbieter mit kommerziellen Premium-Kanälen und eingeschränktem Zugriff – was immer Du willst, Hubzilla unterstützt Dich in Deinem kreativen Schaffen.
[zrl=[baseurl]/help/what_is_zot]Got Zot? Hast Du schon Zot? Wenn nicht wird es Zeit.[/zrl]
-Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatrix entwickelt wurde. Als Mitglied bist Du dank „Nomadischer Identität“ nicht länger an einen einzigen Server oder Anbieter gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil der RedMatrix, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Red-Server betrachtest. Zot ist, was die RedMatrix besonders macht.
+Zot ist ein großartiges neues Kommunikationsprotokoll, das für Hubzilla - und vorher die Red Matrix - entwickelt wurde. Als Mitglied bist Du dank „Nomadischer Identität“ nicht länger an einen einzigen Server oder einen einzigen Anbieter gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil des Hubzilla-Netzwerkes, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Hub (den Hubzilla-Servern) betrachtest. Zot ist es, was das Hubzilla-Netzwerk besonders macht.
[h3]Erste Schritte[/h3]
[zrl=[baseurl]/help/Privacy]Datenschutz[/zrl]
[zrl=[baseurl]/help/registration]Ein Konto registrieren[/zrl]
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]Du in der RedMatrix: Konten, Profile und Kanäle kurz erklärt[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]Du im Hubzilla-Netzwerk: Konten, Profile und Kanäle kurz erklärt[/zrl]
[zrl=[baseurl]/help/profiles]Profile[/zrl]
[zrl=[baseurl]/help/channels]Kanäle[/zrl]
[zrl=[baseurl]/help/roles]Zugriffsrechte-Kategorien und Kanaltypen[/zrl]
@@ -26,7 +26,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[h3]Hilfe für $Projectname-Mitglieder[/h3]
[zrl=[baseurl]/help/tags_and_mentions]Tags und Erwähnungen[/zrl]
[zrl=[baseurl]/help/webpages]Webseiten[/zrl]
-[zrl=[baseurl]/help/bbcode]BBcode-Referenz für Posts und Kommentare[/zrl]
+[zrl=[baseurl]/help/bbcode]BBcode-Referenz für Beiträge und Kommentare[/zrl]
[zrl=[baseurl]/help/checking_account_quota_usage]Überprüfung der Kontenlimits[/zrl]
[zrl=[baseurl]/help/cloud_desktop_clients]Desktop-Anwendungen und die Cloud[/zrl]
[zrl=[baseurl]/help/AdvancedSearch]Fortgeschrittene Suche im Kanalverzeichnis[/zrl]
@@ -36,7 +36,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[h3]Hilfe für Administratoren[/h3]
[zrl=[baseurl]/help/install]Installation[/zrl]
-[zrl=[baseurl]/help/red2pi]Red auf einem Raspberry Pi installieren[/zrl]
+[zrl=[baseurl]/help/red2pi]Hubzilla auf einem Raspberry Pi installieren[/zrl]
[zrl=[baseurl]/help/troubleshooting]Troubleshooting-Tipps[/zrl]
[zrl=[baseurl]/help/hidden_configs]Versteckte Konfigurations-Optionen[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ für Admins[/zrl]
@@ -60,9 +60,9 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[zrl=[baseurl]/help/database]Datenbank-Schema[/zrl]
[zrl=[baseurl]/help/api_functions]API-Funktionen[/zrl]
[zrl=[baseurl]/help/api_posting]Mit der API einen Beitrag erstellen[/zrl]
-[zrl=[baseurl]/help/developer_function_primer]Ãœbersicht der wichtigsten Red-Funktionen[/zrl]
+[zrl=[baseurl]/help/developer_function_primer]Ãœbersicht der wichtigsten Hubzilla-Funktionen[/zrl]
[zrl=[baseurl]/doc/html/]Code-Referenz (mit doxygen generiert - setzt Cookies)[/zrl]
-[zrl=[baseurl]/help/to_do_doco]To-Do-Liste für das Projekt Red-Dokumentation[/zrl]
+[zrl=[baseurl]/help/to_do_doco]To-Do-Liste für das Projekt Hubzilla-Dokumentation[/zrl]
[zrl=[baseurl]/help/to_do_code]To-Do-Liste für Entwickler[/zrl]
[zrl=[baseurl]/help/roadmap]Roadmap für Version 3[/zrl]
[zrl=[baseurl]/help/git_for_non_developers]Git für Nicht-Entwickler[/zrl]
@@ -80,7 +80,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[url=[baseurl]/help/credits]$Projectname Credits[/url]
-[h3]Ãœber diesen Red-Server[/h3]
-[zrl=[baseurl]/help/TermsOfService]Nutzungsbedingungen dieses Red-Servers[/zrl]
-[zrl=[baseurl]/siteinfo]Informationen zu diesem Server und der Red-Version[/zrl]
+[h3]Ãœber diesen Hub (Hubzilla-Server)[/h3]
+[zrl=[baseurl]/help/TermsOfService]Nutzungsbedingungen dieses Hubs (Hubzilla-Servers)[/zrl]
+[zrl=[baseurl]/siteinfo]Informationen zu diesem Server und der Hubzilla-Version[/zrl]
[zrl=[baseurl]/siteinfo/json]Detaillierte technische Informationen zu diesem Server im JSON-Format[/zrl]
diff --git a/doc/develop.bb b/doc/develop.bb
index c46447cce..09ea1ee71 100644
--- a/doc/develop.bb
+++ b/doc/develop.bb
@@ -8,6 +8,8 @@
[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
[zrl=[baseurl]/help/Widgets]Widgets[/zrl]
[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/hooks]Hooks[/zrl]
+[zrl=[baseurl]/help/hooklist]Hooks (detailed - under construction)[/zrl]
[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
diff --git a/doc/developers.bb b/doc/developers.bb
index e9dddc695..6f7752577 100644
--- a/doc/developers.bb
+++ b/doc/developers.bb
@@ -64,6 +64,8 @@ In the interests of consistency we adopt the following code styling. We may acce
[li] Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. [/li]
+[li] Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".[/li]
+
[b]See Also[/b]
[zrl=[baseurl]/help/sql_conventions]SQL Conventions[/zrl]
diff --git a/doc/directories.bb b/doc/directories.bb
new file mode 100644
index 000000000..d81dd84c5
--- /dev/null
+++ b/doc/directories.bb
@@ -0,0 +1,95 @@
+[h3]Directory Configuration[/h3]
+
+Directories in $Projectname serve the purpose of searching and locating members anywhere in the network. They are also used to store and query "ratings" of members and sites. The directory services are distributed and mirrored so that a failure of one will not take down or disrupt the entire network.
+
+[b]Standard Configuration[/b]
+
+New sites operating as directory clients will automatically select from a hard-coded list of directory servers during their first directory access. You may examine or over-ride this decision using
+
+[code]
+util/config system directory_server
+[/code]
+
+To set a different server,
+
+[code]
+util/config system directory_server https://newdirectory.something
+[/code]
+
+
+[b]Standalone configuration[/b]
+
+Some sites may wish to operate in 'standalone' mode and not connect to any external directory services. This is useful for isolated sites ("off the gird") and test sites, but can also be useful for small organisations who do not wish to connect with other sites in the network.
+
+To configure this, please look in your .htconfig.php file for the following text and set the configuration accordingly.
+
+[code]
+// Configure how we communicate with directory servers.
+// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
+// DIRECTORY_MODE_SECONDARY = caching directory or mirror
+// DIRECTORY_MODE_PRIMARY = main directory server
+// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
+
+$a->config['system']['directory_mode'] = DIRECTORY_MODE_STANDALONE;
+[/code]
+
+
+[b]Secondary server configuration[/b]
+
+You may also configure your site as a secondary server. This operates as a mirror of the primary directory and allows disitribution of the load amongst available servers. There is very little functional difference between a primary and secondary sever, however there may only be *one* primary directory server per realm (realms are discussed later in this document).
+
+Before choosing to be a directory server, please be advised that you should be an active member of the network and have the resources and time available to manage these services. They don't typically require management, but the requirement is more for stability as losing a directory server can cause issues to directory clients which are reliant on it.
+
+
+[b]Changing the directory server[/b]
+
+If a directory server indicates that it is no longer a directory server, this should be detected by the software and the configuration for that server will be removed (blanked). If it goes offline permanently without warning, you will only know if site members report that directory services are unavailable. Currently this can only be repaired manually by the site administrator by selecting a new directory and performing:
+
+[code]
+util/config system directory_server https://newdirectory.something
+[/code]
+
+Eventually we hope to make this a selectable box from the site admin panel.
+
+
+[h2]Directory realms[/h2]
+
+Large organisations may wish to use directory 'realms' rather than a single standalone directory. The standard and default realm is known as RED_GLOBAL. By creating a new realm, your organisation has the ability to create its own hierarchy of primary and secondary servers and clients.
+
+[code]
+util/config system directory_realm MY_REALM
+[/code]
+
+Your realm *must* have a primary directory. Create this first. Then set the realm the same on all sites within your directory realm (servers and clients).
+
+You may also provide a "sub-realm" that operates indepently from the RED_GLOBAL realm (or any other realm) but allows cross membership and some ability to lookup members of the entire directory space. This has only undergone light testing so be prepared to help out and fix any issues that may arise. A sub-realm contains its parent realm within the realm name.
+
+
+[code]
+util/config system directory_realm RED_GLOBAL:MY_REALM
+[/code]
+
+
+[b]Realm access[/b]
+
+You may wish that your directory servers and services are only used by members of your realm. To do this a token or password must be supplied to access the realm directory services. This token is not encrypted during transit, but is sufficient to prevent casual access to your directory servers. The following must be configured for all sites (clients and directory servers) within the realm:
+
+[code]
+util/config system realm_token my-secret-realm-password
+[/code]
+
+
+
+[h2]Directory mirrors[/h2]
+
+Mirroring occurs with a daily transaction log of activities which are shared between directory servers. In the case of directory and profile updates, the channel address performing the update is transmitted, and the other directory servers probe that channel at its source for changes. We do not and should not trust any information given us by other directory servers. We always check the information at the source.
+
+Ratings are handled slightly differently - an encrypted packet (signed by the channel that created the rating) is passed between the servers. This signature needs to be verified before the rating is accepted. Ratings are always published to the primary directory server and propagated to all other directory servers from there. For this reason there can only be one primary server in a realm. If a misconfigured site claims to be a primary directory, it is ignored in the RED_GLOBAL realm. For other realms there is currently no such protection. Be aware of this when working with alternate realms.
+
+Newly created directory servers are not provided a "full dump", but for performance reasons and minimal disruption to the other servers in the network, they are brought online slowly. It may take up to a month for a new secondary directory server to provide a full view of the network. Please do not add any secondary servers to the hard-coded list of fallback directory servers until it has been operating as a directory for at least a month.
+
+All channels are configured to "ping" their directory server once a month, at somewhat random times during the month. This gives the ability for the directory to discover dead channels and sites (they stop pinging). Subsequently they are marked dead or unreachable and over time will be removed from the directory results.
+
+Channels may be configured to be "hidden" from the directory. These channels may still exist in the directory but will be un-searchable and some "sensitive" personal information will not be stored at all.
+
+ \ No newline at end of file
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
index 027efe8f4..c74ec3c56 100644
--- a/doc/faq_developers.bb
+++ b/doc/faq_developers.bb
@@ -28,6 +28,427 @@ function foo() {
[/code]
+An example (large) &$a object showing some of its many members and structures-- in JSON format for easier readability-- is here:
+
+[code] {
+ "category": null,
+ "nav_sel": {
+ "home": null,
+ "community": null,
+ "contacts": null,
+ "directory": null,
+ "settings": null,
+ "notifications": null,
+ "intros": null,
+ "messages": null,
+ "register": null,
+ "manage": null,
+ "profiles": null,
+ "network": null,
+ "help": "active"
+ },
+ "argc": 2,
+ "install": false,
+ "is_mobile": false,
+ "timezone": "America/Los_Angeles",
+ "sourcename": "",
+ "module_loaded": true,
+ "contacts": null,
+ "interactive": true,
+ "config": {
+ "system": {
+ "max_import_size": 200000,
+ "logfile": "/tmp/hubzilla.log",
+ "channels_active_monthly_stat": "3",
+ "last_expire_day": "4",
+ "loglevel": "4",
+ "sitename": "Hubzilla",
+ "access_policy": 0,
+ "directory_mode": 0,
+ "debugging": "1",
+ "verify_email": 1,
+ "register_text": "",
+ "urlverify": "687474703a2f2f6875627a696c6c61",
+ "register_policy": 2,
+ "theme": "redbasic",
+ "smarty3_folder": "/home/src/hubzilla/store/[data]/smarty3",
+ "channels_total_stat": "4",
+ "admin_email": "foo@bar.com",
+ "channels_active_halfyear_stat": "3",
+ "location_hash": "910792b7bf75296cbf238ae29a5493f3c78805812652d3f0396e88763a26ce1b",
+ "local_posts_stat": "63",
+ "lastpollcheck": "2015-11-03 07:40:38",
+ "baseurl": "http://hubzilla",
+ "config_loaded": true,
+ "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuR4neYAxuWwZg34fqofU\nZg8y1YSTX39Tzhgcgn7QFCeH600NHJBHWXbPdS5imdYq6W+P1vtKxsVNLI9d01+j\ns3MF3amgEuJH0X+JLLjyittQksyAiukvh/o4MSit8mcYcXs8Dxaybe+KaY09N4ys\ndxKcn6EPlthUiQPJMPitybp4vYkw9LupWZOQWThz9ur6T5wnk9ehBIPFN8gYvKrT\nAG9RFfbq3y59rTOiSHNA2PIUMzo2HEh4QBVCvVolKt7GPhUM4Bze40VRe8ELZTPp\nyehNxEHyhHZfnC+XRVNlvSPXBU2vtE+zcok+5DXsKAqMt8YgFIThNEOLQKvff/lv\nsdGvk6jJZok7+9lKtYfwnNnRWf51aVVuSAO3aIIVLroLyhiji0KA7G5YRHeF1rNL\np88e8peMyUMCX2Svv1wudJzqOfWSvOpY0NLZrdGZXRN2/rXyHPRD/TtS3SNDdd7J\nYQUjyxGjF1/zB3xqvPr09s8tzXqJl9pZNcN9iz58oPBbTuGdUr8CJro/3nVHgkRf\nw7/zhapSW1UaroJjecrC9yWx5QUD3KNU51phsP9iHCFdMyPBdUHjmNvE5f7YJWBh\nO1rRKUoE3i+eHLYAWeYblFX7T+EKOCB2hd3NUrIqDL98OSpfDiZT7rf9PdcWCOY5\nuddm6KzwHjffl5kZd8MM8bMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "addon": "converse",
+ "lastpoll": "2015-11-04 07:40:01",
+ "php_path": "/usr/bin/php",
+ "allowed_themes": "redbasic",
+ "sellpage": "",
+ "prvkey": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
+ "directory_server": "https://red.zottel.red",
+ "curl_ssl_ciphers": "ALL:!eNULL",
+ "db_version": "1158"
+ },
+ "config": {
+ "config_loaded": true
+ },
+ "feature": {
+ "config_loaded": true
+ },
+ "2": {
+ "redbasic": {
+ "schema": "dark",
+ "comment_indent": "",
+ "toolicon_activecolour": "",
+ "item_colour": "",
+ "nav_gradient_top": "",
+ "nav_active_icon_colour": "",
+ "nav_active_gradient_top": "",
+ "top_photo": "",
+ "converse_width": "",
+ "nav_min_opacity": "",
+ "body_font_size": "",
+ "reply_photo": "",
+ "background_colour": "",
+ "radius": "",
+ "nav_gradient_bottom": "",
+ "toolicon_colour": "",
+ "nav_active_gradient_bottom": "",
+ "nav_icon_colour": "",
+ "narrow_navbar": "",
+ "nav_bg": "",
+ "comment_item_colour": "",
+ "config_loaded": true,
+ "banner_colour": "",
+ "comment_border_colour": "",
+ "align_left": "",
+ "font_size": "",
+ "font_colour": "",
+ "nav_bd": "",
+ "photo_shadow": "",
+ "background_image": "",
+ "link_colour": ""
+ },
+ "system": {
+ "network_list_mode": "0",
+ "post_joingroup": "0",
+ "channel_list_mode": "0",
+ "title_tosource": "0",
+ "blocktags": "0",
+ "photo_path": "%Y-%m",
+ "suggestme": "0",
+ "autoperms": "0",
+ "hide_presence": "0",
+ "channel_divmore_height": "400",
+ "network_divmore_height": "400",
+ "post_profilechange": "0",
+ "channel_menu": "",
+ "always_show_in_notices": "0",
+ "use_browser_location": "0",
+ "update_interval": "80000",
+ "itemspage": "20",
+ "attach_path": "%Y-%m",
+ "permissions_role": "social",
+ "vnotify": "2047",
+ "post_newfriend": "0",
+ "config_loaded": true,
+ "no_smilies": "0",
+ "evdays": "3",
+ "user_scalable": "1"
+ }
+ }
+ },
+ "layout": {
+ "region_aside": "\n<div class="widget"><h3>Documentation</h3><ul class="nav nav-pills nav-stacked"><li><a href="help/general">Project/Site Information</a></li><li><a href="help/members">For Members</a></li><li><a href="help/admins">For Administrators</a></li><li><a href="help/develop">For Developers</a></li></ul></div>\n"
+ },
+ "is_sys": false,
+ "content": null,
+ "cid": null,
+ "profile_uid": 0,
+ "hooks": {
+ "construct_page": [
+ [
+ "addon/converse/converse.php",
+ "converse_content"
+ ]
+ ]
+ },
+ "strings": [],
+ "js_sources": [
+ "jquery.js",
+ "library/justifiedGallery/jquery.justifiedGallery.min.js",
+ "library/sprintf.js/dist/sprintf.min.js",
+ "spin.js",
+ "jquery.spin.js",
+ "jquery.textinputs.js",
+ "autocomplete.js",
+ "library/jquery-textcomplete/jquery.textcomplete.js",
+ "library/jquery.timeago.js",
+ "library/readmore.js/readmore.js",
+ "library/jgrowl/jquery.jgrowl_minimized.js",
+ "library/cryptojs/components/core-min.js",
+ "library/cryptojs/rollups/aes.js",
+ "library/cryptojs/rollups/rabbit.js",
+ "library/cryptojs/rollups/tripledes.js",
+ "acl.js",
+ "webtoolkit.base64.js",
+ "main.js",
+ "crypto.js",
+ "library/jRange/jquery.range.js",
+ "library/colorbox/jquery.colorbox-min.js",
+ "library/jquery.AreYouSure/jquery.are-you-sure.js",
+ "library/tableofcontents/jquery.toc.js",
+ "library/bootstrap/js/bootstrap.min.js",
+ "library/bootbox/bootbox.min.js",
+ "library/bootstrap-tagsinput/bootstrap-tagsinput.js",
+ "library/datetimepicker/jquery.datetimepicker.js",
+ "library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
+ "view/theme/redbasic/js/redbasic.js",
+ "mod_help.js"
+ ],
+ "channel": {
+ "channel_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "channel_address": "testes",
+ "channel_primary": "1",
+ "channel_allow_gid": "",
+ "xchan_deleted": "0",
+ "xchan_connpage": "",
+ "channel_r_storage": "1",
+ "xchan_pubforum": "0",
+ "channel_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "xchan_flags": "0",
+ "channel_allow_cid": "",
+ "xchan_censored": "0",
+ "channel_w_pages": "128",
+ "xchan_instance_url": "",
+ "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
+ "channel_w_stream": "128",
+ "channel_timezone": "America/Los_Angeles",
+ "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "channel_w_chat": "128",
+ "xchan_connurl": "http://hubzilla/poco/testes",
+ "channel_guid_sig": "XXX",
+ "xchan_name_date": "2015-10-09 00:45:41",
+ "channel_expire_days": "0",
+ "xchan_system": "0",
+ "xchan_photo_date": "2015-10-09 00:45:41",
+ "channel_startpage": "",
+ "channel_deny_gid": "",
+ "channel_lastpost": "2015-10-09 02:53:23",
+ "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
+ "channel_passwd_reset": "",
+ "xchan_hidden": "0",
+ "xchan_selfcensored": "0",
+ "xchan_photo_mimetype": "image/jpeg",
+ "channel_a_republish": "128",
+ "channel_w_tagwall": "128",
+ "channel_r_stream": "1",
+ "channel_w_comment": "128",
+ "channel_system": "0",
+ "channel_w_mail": "128",
+ "channel_pageflags": "0",
+ "xchan_network": "zot",
+ "channel_id": "2",
+ "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "channel_removed": "0",
+ "channel_dirdate": "2015-10-09 00:46:00",
+ "channel_w_storage": "128",
+ "channel_w_photos": "0",
+ "channel_prvkey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n",
+ "channel_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "channel_max_friend_req": "0",
+ "channel_w_wall": "128",
+ "channel_r_abook": "1",
+ "channel_max_anon_mail": "0",
+ "channel_location": "",
+ "channel_a_delegate": "128",
+ "channel_deny_cid": "",
+ "channel_r_profile": "1",
+ "channel_name": "testes",
+ "xchan_guid_sig": "XXX",
+ "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "channel_notifyflags": "703",
+ "channel_theme": "redbasic",
+ "channel_w_like": "2",
+ "xchan_url": "http://hubzilla/channel/testes",
+ "channel_default_group": "",
+ "channel_r_photos": "0",
+ "channel_account_id": "1",
+ "xchan_addr": "testes@hubzilla",
+ "channel_r_pages": "1",
+ "channel_deleted": "0000-00-00 00:00:00",
+ "xchan_orphan": "0",
+ "xchan_follow": "http://hubzilla/follow?f=&url=%s",
+ "xchan_name": "testes",
+ "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
+ },
+ "page": {
+ "content": "<div id="help-content" class="generic-content-wrapper">\n\t<div class="section-title-wrapper">\n\t<h2>Hubzilla Documentation</h2>\n\t</div>\n\t<div class="section-content-wrapper">\n\t<h2>Documentation for Developers</h2><br /><br /><h3>Technical Documentation</h3><br /><a class="zrl" href="http://hubzilla/help/Zot---A-High-Level-Overview" target="_newwin" >A high level overview of Zot</a><br /><a class="zrl" href="http://hubzilla/help/zot" target="_newwin" >An introduction to Zot</a><br /><a class="zrl" href="http://hubzilla/help/zot_structures" target="_newwin" >Zot Stuctures</a><br /><a class="zrl" href="http://hubzilla/help/comanche" target="_newwin" >Comanche Page Descriptions</a><br /><a class="zrl" href="http://hubzilla/help/Creating-Templates" target="_newwin" >Creating Comanche Templates</a><br /><a class="zrl" href="http://hubzilla/help/Widgets" target="_newwin" >Widgets</a><br /><a class="zrl" href="http://hubzilla/help/plugins" target="_newwin" >Plugins</a><br /><a class="zrl" href="http://hubzilla/help/hooks" target="_newwin" >Hooks</a><br /><a class="zrl" href="http://hubzilla/help/doco" target="_newwin" >Contributing Documentation</a><br /><a class="zrl" href="http://hubzilla/help/DerivedTheme1" target="_newwin" >Creating Derivative Themes</a><br /><a class="zrl" href="http://hubzilla/help/schema_development" target="_newwin" >Schemas</a><br /><a class="zrl" href="http://hubzilla/help/Translations" target="_newwin" >Translations</a><br /><a class="zrl" href="http://hubzilla/help/developers" target="_newwin" >Developers</a><br /><a class="zrl" href="http://hubzilla/help/intro_for_developers" target="_newwin" >Intro for Developers</a><br /><a class="zrl" href="http://hubzilla/help/database" target="_newwin" >Database schema documantation</a><br /><a class="zrl" href="http://hubzilla/help/api_functions" target="_newwin" >API functions</a><br /><a class="zrl" href="http://hubzilla/help/api_posting" target="_newwin" >Posting to the red# using the API</a><br /><a class="zrl" href="http://hubzilla/help/developer_function_primer" target="_newwin" >Red Functions 101</a><br /><a class="zrl" href="http://hubzilla/doc/html/" target="_newwin" >Code Reference (Doxygen generated - sets cookies)</a><br /><a class="zrl" href="http://hubzilla/help/to_do_doco" target="_newwin" >To-Do list for the Red Documentation Project</a><br /><a class="zrl" href="http://hubzilla/help/to_do_code" target="_newwin" >To-Do list for Developers</a><br /><a class="zrl" href="http://hubzilla/help/roadmap" target="_newwin" >Version 3 roadmap</a><br /><a class="zrl" href="http://hubzilla/help/git_for_non_developers" target="_newwin" >Git for Non-Developers</a><br /><a class="zrl" href="http://hubzilla/help/dev_beginner" target="_newwin" >Step-for-step manual for beginning developers</a><br /><br /><h3>Frequently Asked Questions For Developers</h3><br /><a class="zrl" href="http://hubzilla/help/faq_developers" target="_newwin" >FAQ For Developers</a><br /><br /><h3>External Resources</h3><br /><br /><a href="https://zothub.com/channel/one" target="_newwin" >Development Channel</a><br /><a href="https://federated.social/channel/postgres" target="_newwin" >Postgres-specific Hubzilla Admin Support Channel</a><br />\n\t</div>\n</div>\n<script>var homebase = "http://hubzilla/channel/testes";</script>",
+ "page_title": "help",
+ "title": "Help: Develop",
+ "nav": "\t<div class="container-fluid">\n\t\t<div class="navbar-header">\n\t\t\t<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t</button>\n\t\t\t<button id="expand-tabs" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#tabs-collapse-1">\n\t\t\t\t<i class="icon-circle-arrow-down" id="expand-tabs-icon"></i>\n\t\t\t</button>\n\t\t\t<button id="expand-aside" type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#region_1">\n\t\t\t\t<i class="icon-circle-arrow-right" id="expand-aside-icon"></i>\n\t\t\t</button>\n\t\t\t\t\t\t\t<img class="dropdown-toggle fakelink" data-toggle="dropdown" id="avatar" src="http://hubzilla/photo/profile/m/2" alt="testes@hubzilla"><span class="caret" id="usermenu-caret"></span>\n\t\t\t\t\t\t\t\t\t<ul class="dropdown-menu" role="menu" aria-labelledby="avatar">\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="channel/testes" title="Your posts and conversations" role="menuitem" id="channel_nav_btn">Home</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="profile/testes" title="Your profile page" role="menuitem" id="profile_nav_btn">View Profile</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="profiles/2" title="Edit your profile" role="menuitem" id="profiles_nav_btn">Edit Profile</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="photos/testes" title="Your photos" role="menuitem" id="photos_nav_btn">Photos</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="cloud/testes" title="Your files" role="menuitem" id="cloud_nav_btn">Files</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="chat/testes/new" title="Your chatrooms" role="menuitem" id="chat_nav_btn">Chat</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="settings" title="Account/Channel Settings" role="menuitem" id="settings_nav_btn">Settings</a></li>\t\t\t\t\t\t<li role="presentation"><a href="manage" title="Manage Your Channels" role="menuitem" id="manage_nav_btn">Channel Manager</a></li>\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t<li role="presentation"><a href="admin/" title="Site Setup and Configuration" role="menuitem" id="admin_nav_btn">Admin</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t<li role="presentation"><a href="logout" title="End this session" role="menuitem" id="logout_nav_btn">Logout</a></li>\n\t\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t<div class="collapse navbar-collapse" id="navbar-collapse-1">\n\t\t\t<ul class="nav navbar-nav navbar-left">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a href="network" title="Your grid" id="network_nav_btn"><i class="icon-th"></i></a>\n\t\t\t\t\t<span class="net-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-network-menu"></span>\n\t\t\t\t\t<ul id="nav-network-menu" role="menu" class="dropdown-menu" rel="network">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li id="nav-network-mark-all"><a href="#" onclick="markRead('network'); return false;">Mark all grid notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a href="network" title="Your grid" ><i class="icon-th"></i></a>\n\t\t\t\t\t<span class="net-update badge" rel="#nav-network-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="channel/testes" title="Channel home" id="home_nav_btn"><i class="icon-home"></i></a>\n\t\t\t\t\t<span class="home-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-home-menu"></span>\n\t\t\t\t\t<ul id="nav-home-menu" class="dropdown-menu" rel="home">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li id="nav-home-mark-all"><a href="#" onclick="markRead('home'); return false;">Mark all channel notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="channel/testes" title="Channel home" ><i class="icon-home"></i></a>\n\t\t\t\t\t<span class="home-update badge" rel="#nav-home-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="mail/combined" title="Private mail" id="mail_nav_btn"><i class="icon-envelope"></i></a>\n\t\t\t\t\t<span class="mail-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-messages-menu"></span>\n\t\t\t\t\t<ul id="nav-messages-menu" class="dropdown-menu" rel="messages">\n\t\t\t\t\t\t<li id="nav-messages-see-all"><a href="mail/combined">See all private messages</a></li>\n\t\t\t\t\t\t<li id="nav-messages-mark-all"><a href="#" onclick="markRead('messages'); return false;">Mark all private messages seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="mail/combined" title="Private mail" ><i class="icon-envelope"></i></a>\n\t\t\t\t\t<span class="mail-update badge" rel="#nav-messages-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="events" title="Event Calendar" id='events_nav_btn'><i class="icon-calendar"></i></a>\n\t\t\t\t\t<span class="all_events-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-all_events-menu"></span>\n\t\t\t\t\t<ul id="nav-all_events-menu" class="dropdown-menu" rel="all_events">\n\t\t\t\t\t\t<li id="nav-all_events-see-all"><a href="events">See all events</a></li>\n\t\t\t\t\t\t<li id="nav-all_events-mark-all"><a href="#" onclick="markRead('all_events'); return false;">Mark all events seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="events" title="Event Calendar" ><i class="icon-calendar"></i></a>\n\t\t\t\t\t<span class="all_events-update badge" rel="#nav-all_events-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="connections/ifpending" title="Connections" id="connections_nav_btn"><i class="icon-user"></i></a>\n\t\t\t\t\t<span class="intro-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-intros-menu"></span>\n\t\t\t\t\t<ul id="nav-intros-menu" class="dropdown-menu" rel="intros">\n\t\t\t\t\t\t<li id="nav-intros-see-all"><a href=""></a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="connections/ifpending" title="Connections" ><i class="icon-user"></i></a>\n\t\t\t\t\t<span class="intro-update badge" rel="#nav-intros-menu"></span>\n\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a href="notifications/system" title="Notices" id="notifications_nav_btn"><i class="icon-exclamation"></i></a>\n\t\t\t\t\t<span class="notify-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-notify-menu"></span>\n\t\t\t\t\t<ul id="nav-notify-menu" class="dropdown-menu" rel="notify">\n\t\t\t\t\t\t<li id="nav-notify-see-all"><a href="notifications/system">See all notifications</a></li>\n\t\t\t\t\t\t<li id="nav-notify-mark-all"><a href="#" onclick="markRead('notify'); return false;">Mark all system notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a href="notifications/system" title="Notices"><i class="icon-exclamation"></i></a>\n\t\t\t\t\t<span class="notify-update badge" rel="#nav-notify-menu"></span>\n\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t<ul class="nav navbar-nav navbar-right">\n\t\t\t\t<li class="hidden-xs">\n\t\t\t\t\t<form method="get" action="search" role="search">\n\t\t\t\t\t\t<div id="nav-search-spinner"></div><input class="icon-search" id="nav-search-text" type="text" value="" placeholder=" @name, #tag, ?doc, content" name="search" title="Search site @name, #tag, ?docs, content" onclick="this.submit();"/>\n\t\t\t\t\t</form>\n\t\t\t\t</li>\n\t\t\t\t<li class="visible-xs">\n\t\t\t\t\t<a href="/search" title="Search site @name, #tag, ?docs, content"><i class="icon-search"></i></a>\n\t\t\t\t</li>\n\n\t\t\t\t\t\t\t\t\t\t<li class="">\n\t\t\t\t\t<a class="" href="directory" title="Channel Directory" id="directory_nav_btn"><i class="icon-sitemap"></i></a>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class="">\n\t\t\t\t\t<a class="" href="apps" title="Applications, utilities, links, games" id="apps_nav_btn"><i class="icon-cogs"></i></a>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class="active">\n\t\t\t\t\t<a class="" target="hubzilla-help" href="http://hubzilla/help?f=&cmd=help/develop" title="Help and documentation" id="help_nav_btn"><i class="icon-question"></i></a>\n\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t</div>\n\t</div>\n",
+ "htmlhead": "<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />\n<base href="http://hubzilla/" />\n<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=1" />\n<meta name="generator" content="hubzilla 2015-11-03.1205H" />\n\n<!--[if IE]>\n<script src="http://hubzilla/library/html5.js"></script>\n<![endif]-->\n\n<link rel="stylesheet" href="http://hubzilla/library/font_awesome/css/font-awesome.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap/css/bootstrap.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/bootstrap-red.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/datetimepicker/jquery.datetimepicker.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/tiptip/tipTip.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/jgrowl/jquery.jgrowl.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/jRange/jquery.range.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/conversation.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/widgets.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/colorbox.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/justifiedGallery/justifiedGallery.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/default.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/theme/redbasic/php/style.pcss" type="text/css" media="screen">\r\n\n\n<script>\n\n\tvar aStr = {\n\n\t\t'delitem' : "Delete this item?",\n\t\t'comment' : "Comment",\n\t\t'showmore' : "[+] show all",\n\t\t'showfewer' : "[-] show less",\n\t\t'divgrowmore' : "[+] expand",\n\t\t'divgrowless' : "[-] collapse",\n\t\t'pwshort' : "Password too short",\n\t\t'pwnomatch' : "Passwords do not match",\n\t\t'everybody' : "everybody",\n\t\t'passphrase' : "Secret Passphrase",\n\t\t'passhint' : "Passphrase hint",\n\t\t'permschange' : "Notice: Permissions have changed but have not yet been submitted.",\n\t\t'closeAll' : "close all",\n\t\t'nothingnew' : "Nothing new here",\n\t\t'rating_desc' : "Rate This Channel (this is public)",\n\t\t'rating_val' : "Rating",\n\t\t'rating_text' : "Describe (optional)",\n\t\t'submit' : "Submit",\n\t\t'linkurl' : "Please enter a link URL",\n\t\t'leavethispage' : "Unsaved changes. Are you sure you wish to leave this page?",\n\n\t\t't01' : "",\n\t\t't02' : "",\n\t\t't03' : "ago",\n\t\t't04' : "from now",\n\t\t't05' : "less than a minute",\n\t\t't06' : "about a minute",\n\t\t't07' : "%d minutes",\n\t\t't08' : "about an hour",\n\t\t't09' : "about %d hours",\n\t\t't10' : "a day",\n\t\t't11' : "%d days",\n\t\t't12' : "about a month",\n\t\t't13' : "%d months",\n\t\t't14' : "about a year",\n\t\t't15' : "%d years",\n\t\t't16' : " ",\n\t\t't17' : "[]",\n\n\t\t'monthNames' : [ "January","February","March","April","May","June","July","August","September","October","November","December" ],\n\t\t'monthNamesShort' : [ "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ],\n\t\t'dayNames' : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],\n\t\t'dayNamesShort' : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],\n\t\t'today' : "today",\n\t\t'month' : "month",\n\t\t'week' : "week",\n\t\t'day' : "day",\n\t\t'allday' : "All day"\n\t};\n\n</script>\n\t\t\n\n\n<script src="http://hubzilla/view/js/jquery.js" ></script>\r\n<script src="http://hubzilla/library/justifiedGallery/jquery.justifiedGallery.min.js" ></script>\r\n<script src="http://hubzilla/library/sprintf.js/dist/sprintf.min.js" ></script>\r\n<script src="http://hubzilla/view/js/spin.js" ></script>\r\n<script src="http://hubzilla/view/js/jquery.spin.js" ></script>\r\n<script src="http://hubzilla/view/js/jquery.textinputs.js" ></script>\r\n<script src="http://hubzilla/view/js/autocomplete.js" ></script>\r\n<script src="http://hubzilla/library/jquery-textcomplete/jquery.textcomplete.js" ></script>\r\n<script src="http://hubzilla/library/jquery.timeago.js" ></script>\r\n<script src="http://hubzilla/library/readmore.js/readmore.js" ></script>\r\n<script src="http://hubzilla/library/jgrowl/jquery.jgrowl_minimized.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/components/core-min.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/aes.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/rabbit.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/tripledes.js" ></script>\r\n<script src="http://hubzilla/view/js/acl.js" ></script>\r\n<script src="http://hubzilla/view/js/webtoolkit.base64.js" ></script>\r\n<script src="http://hubzilla/view/js/crypto.js" ></script>\r\n<script src="http://hubzilla/library/jRange/jquery.range.js" ></script>\r\n<script src="http://hubzilla/library/colorbox/jquery.colorbox-min.js" ></script>\r\n<script src="http://hubzilla/library/jquery.AreYouSure/jquery.are-you-sure.js" ></script>\r\n<script src="http://hubzilla/library/tableofcontents/jquery.toc.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap/js/bootstrap.min.js" ></script>\r\n<script src="http://hubzilla/library/bootbox/bootbox.min.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.js" ></script>\r\n<script src="http://hubzilla/library/datetimepicker/jquery.datetimepicker.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js" ></script>\r\n<script src="http://hubzilla/view/theme/redbasic/js/redbasic.js" ></script>\r\n\n\n<link rel="shortcut icon" href="http://hubzilla/images/hz-32.png" />\n<link rel="search"\n href="http://hubzilla/opensearch" \n type="application/opensearchdescription+xml" \n title="Search in the Hubzilla" />\n\n\n<script>\n\n\tvar updateInterval = 80000;\n\tvar localUser = 2;\n\tvar zid = 'testes@hubzilla';\n\tvar justifiedGalleryActive = false;\n\t\t\n</script>\n\n\n\n\n<script>$(document).ready(function() {\n\t$("#nav-search-text").search_autocomplete('http://hubzilla/acl');\n});\n\n</script><script src="http://hubzilla/view/js/main.js" ></script>\r\n<link rel="stylesheet" href="http://hubzilla/addon/converse/converse.min.js" media="all" /><script src="http://hubzilla/addon/converse/converse.min.js"></script>",
+ "header": "<div id="banner" class="hidden-sm hidden-xs">Hubzilla</div>\n\n<ul id="nav-notifications-template" style="display:none;" rel="template">\n\t<li class="{5}"><a href="{0}" title="{2} {3}"><img data-src="{1}"><span class="contactname">{2}</span><span class="dropdown-sub-text">{3}<br>{4}</span></a></li>\n</ul>\n"
+ },
+ "poi": null,
+ "force_max_items": 0,
+ "module": "help",
+ "template_engines": {
+ "smarty3": "FriendicaSmartyEngine",
+ "internal": "Template"
+ },
+ "account": {
+ "account_flags": "0",
+ "account_service_class": "",
+ "account_id": "1",
+ "account_salt": "9bf8c193c35a56c4c666f47728fe20da",
+ "account_expires": "0000-00-00 00:00:00",
+ "account_lastlog": "2015-11-04 07:47:55",
+ "account_password_changed": "0000-00-00 00:00:00",
+ "account_language": "en",
+ "account_default_channel": "2",
+ "account_password": "",
+ "account_parent": "1",
+ "account_expire_notified": "0000-00-00 00:00:00",
+ "account_reset": "",
+ "account_email": "foo@bar.com",
+ "account_level": "0",
+ "account_roles": "4096",
+ "account_external": "",
+ "account_created": "2015-10-09 00:44:51"
+ },
+ "theme_info": [],
+ "argv": [
+ "help",
+ "develop"
+ ],
+ "template_engine_instance": {
+ "smarty3": {}
+ },
+ "language": "en",
+ "pager": {
+ "page": 1,
+ "itemspage": 60,
+ "start": 0,
+ "total": 0
+ },
+ "plugins": [
+ "converse"
+ ],
+ "error": false,
+ "pdl": "[region=aside]\n[widget=helpindex][/widget]\n[/region]\n",
+ "query_string": "help/develop",
+ "cmd": "help/develop",
+ "groups": null,
+ "videowidth": 425,
+ "css_sources": [
+ [
+ "library/font_awesome/css/font-awesome.min.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap/css/bootstrap.min.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap-tagsinput/bootstrap-tagsinput.css",
+ "screen"
+ ],
+ [
+ "view/css/bootstrap-red.css",
+ "screen"
+ ],
+ [
+ "library/datetimepicker/jquery.datetimepicker.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css",
+ "screen"
+ ],
+ [
+ "library/tiptip/tipTip.css",
+ "screen"
+ ],
+ [
+ "library/jgrowl/jquery.jgrowl.css",
+ "screen"
+ ],
+ [
+ "library/jRange/jquery.range.css",
+ "screen"
+ ],
+ [
+ "view/css/conversation.css",
+ "screen"
+ ],
+ [
+ "view/css/widgets.css",
+ "screen"
+ ],
+ [
+ "view/css/colorbox.css",
+ "screen"
+ ],
+ [
+ "library/justifiedGallery/justifiedGallery.min.css",
+ "screen"
+ ],
+ [
+ "default.css",
+ "screen"
+ ],
+ [
+ "mod_help.css",
+ "screen"
+ ],
+ [
+ "view/theme/redbasic/php/style.pcss",
+ "screen"
+ ]
+ ],
+ "is_tablet": false,
+ "observer": {
+ "xchan_deleted": "0",
+ "xchan_connpage": "",
+ "xchan_pubforum": "0",
+ "xchan_flags": "0",
+ "xchan_censored": "0",
+ "xchan_instance_url": "",
+ "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
+ "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "xchan_connurl": "http://hubzilla/poco/testes",
+ "xchan_name_date": "2015-10-09 00:45:41",
+ "xchan_system": "0",
+ "xchan_photo_date": "2015-10-09 00:45:41",
+ "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
+ "xchan_hidden": "0",
+ "xchan_selfcensored": "0",
+ "xchan_photo_mimetype": "image/jpeg",
+ "xchan_network": "zot",
+ "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "xchan_guid_sig": "XXX",
+ "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "xchan_url": "http://hubzilla/channel/testes",
+ "xchan_addr": "testes@hubzilla",
+ "xchan_orphan": "0",
+ "xchan_follow": "http://hubzilla/follow?f=&url=%s",
+ "xchan_name": "testes",
+ "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
+ },
+ "contact": null,
+ "identities": null,
+ "user": null,
+ "videoheight": 350,
+ "profile": null,
+ "theme_thread_allow": true,
+ "data": {
+ "pageicon": "/images/hz-32.png"
+ }
+}[/code]
+
#include doc/macros/main_footer.bb;
diff --git a/doc/features.bb b/doc/features.bb
index 06b7fb6b0..2abf0ec30 100644
--- a/doc/features.bb
+++ b/doc/features.bb
@@ -85,11 +85,9 @@ Share and save/manage bookmarks from links provided in conversations.
[b]Private Message Encryption and Privacy Concerns[/b]
-Messages marked [b]private[/b] are encrypted with AES-CBC 256-bit symmetric cipher, which is then protected (encrypted in turn) by public key cryptography, based on 4096-bit RSA keys, associated with the channel that is sending the message.
+Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.
-These private messages are also stored in an encrypted form on remote systems.
-
-Each$Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created.
+Each $Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.
Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by $Projectname operators or ISPs or anybody who does not know the passcode.
diff --git a/doc/hidden_configs.bb b/doc/hidden_configs.bb
index 76213851c..44114967b 100644
--- a/doc/hidden_configs.bb
+++ b/doc/hidden_configs.bb
@@ -112,7 +112,7 @@ This document assumes you're an administrator.
[b]system > cron_hour[/b]
Specify an hour in which to run cron_daily. By default with no config, this will run at midnight UTC.
[b]system > minimum_feedcheck_minutes[/b]
- The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob
+ The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob. Defaults to 60 if not set. The site setting can also be over-ridden on a channel by channel basis by a service class setting aptly named 'minimum_feedcheck_minutes'.
[b]system > blacklisted_sites[/b]
An array of specific hubs to block from this hub completely.
[b]system > ignore_imagick[/b]
@@ -133,7 +133,45 @@ This document assumes you're an administrator.
How long to cache photos, in seconds. Default is 86400 (1 day).
Longer time increases performance, but it also means it takes longer for changed permissions to apply.
[b]system > poco_rating_enable[/b]
- Distributed reputation reporting and data collection may be disabled. If your site does not participate in distributed reputation you will also not be able to make use of the data from your connections on other sites. By default and in the absence of any setting it is enabled. Individual members can opt out by restricting who can see their connections or by not providing any reputation information for their connections.
+ Distributed reputation reporting and data collection may be disabled. If your site does not participate in distributed reputation you will also not be able to make use of the data from your connections on other sites. By default and in the absence of any setting it is enabled. Individual members can opt out by restricting who can see their connections or by not providing any reputation information for their connections.
+ [b]system > register_link[/b]
+ path to direct to from the "register" link on the login form. On closed sites this will direct to 'pubsites'. For open sites it will normally redirect to 'register' but you may change this to a custom site page offering subscriptions or whatever.
+ [b]system > max_import_size[/b]
+ If configured, the maximum length of an imported text message. This is normally left at 200Kbytes or more to accomodate Friendica private photos, which are embedded.
+ [b]system > tempdir[/b]
+ Place to store temporary files, default is defined in the PHP configuration
+ [b]system > uploaddir[/b]
+ Location to upload files (default is system.tempdir)
+ [b]system > disable_discover_tab[/b]
+ This allows you to completely disable the ability to discover public content from external sites.
+ [b]system > sys_expire_days[/b]
+ How many days to keep discovered public content from other sites
+ [b]system > openssl_encrypt[/b]
+ Use openssl encryption engine, default is false (uses mcrypt for AES encryption)
+ [b]system > max_tagged_forums[/b]
+ Spam prevention. Limits the number of tagged forums which are recognised in any post. Default is 2. Only the first 'n' tags will be delivered as forums, the others will not cause any delivery.
+ [b]system > openssl_conf_file[/b]
+ Needed in some Windows installations to locate the openssl configuration file on the system.
+
+
+[b]Directory config[/b]
+[b]Directory search defaults[/b]
+ [b]directory > safemode[/b]
+ 0 or 1.
+ [b]directory > globaldir[/b]
+ 0 or 1. Default 0. If you visit the directory on a site you'll just see the members of that site by default. You have to go through an extra step to see the people in the rest of the network; and by doing so there's a clear delineation that these people *aren't* members of that site but of a larger network.
+ [b]directory > pubforums[/b]
+ 0 or 1. Public forums *should* be default 0.
+[b]Directory server configuration (see [zrl=[baseurl]/help/directories]help/directories[/zrl])[/b]
+ [b]system > directory_server[/b]
+ [b]system > directory_primary[/b]
+ [b]system > directory_realm[/b]
+ [b]system > realm_token[/b]
+ [b]system > directory_mode[/b]
+
+
+
+
#include doc/macros/main_footer.bb;
diff --git a/doc/hook/about_hook.bb b/doc/hook/about_hook.bb
new file mode 100644
index 000000000..22b60d786
--- /dev/null
+++ b/doc/hook/about_hook.bb
@@ -0,0 +1 @@
+[h2]about_hook[/h2]
diff --git a/doc/hook/accept_follow.bb b/doc/hook/accept_follow.bb
new file mode 100644
index 000000000..e8b1ed0c4
--- /dev/null
+++ b/doc/hook/accept_follow.bb
@@ -0,0 +1 @@
+[h2]accept_follow[/h2]
diff --git a/doc/hook/account_downgrade.bb b/doc/hook/account_downgrade.bb
new file mode 100644
index 000000000..63bae0a58
--- /dev/null
+++ b/doc/hook/account_downgrade.bb
@@ -0,0 +1 @@
+[h2]account_downgrade[/h2]
diff --git a/doc/hook/account_settings.bb b/doc/hook/account_settings.bb
new file mode 100644
index 000000000..91b3a8385
--- /dev/null
+++ b/doc/hook/account_settings.bb
@@ -0,0 +1 @@
+[h2]account_settings[/h2]
diff --git a/doc/hook/account_settings_post.bb b/doc/hook/account_settings_post.bb
new file mode 100644
index 000000000..bbd7a57a8
--- /dev/null
+++ b/doc/hook/account_settings_post.bb
@@ -0,0 +1 @@
+[h2]account_settings_post[/h2]
diff --git a/doc/hook/activity_received.bb b/doc/hook/activity_received.bb
new file mode 100644
index 000000000..2e9d68bf3
--- /dev/null
+++ b/doc/hook/activity_received.bb
@@ -0,0 +1 @@
+[h2]activity_received[/h2]
diff --git a/doc/hook/affinity_labels.bb b/doc/hook/affinity_labels.bb
new file mode 100644
index 000000000..7234b7632
--- /dev/null
+++ b/doc/hook/affinity_labels.bb
@@ -0,0 +1 @@
+[h2]affinity_labels[/h2]
diff --git a/doc/hook/api_perm_is_allowed.bb b/doc/hook/api_perm_is_allowed.bb
new file mode 100644
index 000000000..862cbd653
--- /dev/null
+++ b/doc/hook/api_perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]api_perm_is_allowed[/h2]
diff --git a/doc/hook/app_menu.bb b/doc/hook/app_menu.bb
new file mode 100644
index 000000000..0458a692a
--- /dev/null
+++ b/doc/hook/app_menu.bb
@@ -0,0 +1 @@
+[h2]app_menu[/h2]
diff --git a/doc/hook/atom_author.bb b/doc/hook/atom_author.bb
new file mode 100644
index 000000000..c9d05a593
--- /dev/null
+++ b/doc/hook/atom_author.bb
@@ -0,0 +1 @@
+[h2]atom_author[/h2]
diff --git a/doc/hook/atom_entry.bb b/doc/hook/atom_entry.bb
new file mode 100644
index 000000000..0aec89f16
--- /dev/null
+++ b/doc/hook/atom_entry.bb
@@ -0,0 +1 @@
+[h2]atom_entry[/h2]
diff --git a/doc/hook/atom_feed.bb b/doc/hook/atom_feed.bb
new file mode 100644
index 000000000..69775ca5e
--- /dev/null
+++ b/doc/hook/atom_feed.bb
@@ -0,0 +1 @@
+[h2]atom_feed[/h2]
diff --git a/doc/hook/atom_feed_end.bb b/doc/hook/atom_feed_end.bb
new file mode 100644
index 000000000..4f019fc8f
--- /dev/null
+++ b/doc/hook/atom_feed_end.bb
@@ -0,0 +1 @@
+[h2]atom_feed_end[/h2]
diff --git a/doc/hook/attach_upload_file.bb b/doc/hook/attach_upload_file.bb
new file mode 100644
index 000000000..1f8056caa
--- /dev/null
+++ b/doc/hook/attach_upload_file.bb
@@ -0,0 +1 @@
+[h2]attach_upload_file[/h2]
diff --git a/doc/hook/authenticate.bb b/doc/hook/authenticate.bb
new file mode 100644
index 000000000..eb8071e73
--- /dev/null
+++ b/doc/hook/authenticate.bb
@@ -0,0 +1,29 @@
+[h2]authenticate[/h2]
+
+Invoked when a POST request is made with non-null $_POST['auth-params'] such as from the login form.
+If the hook handler does not set the 'authenticated' parameter of the passed array, normal login functions continue;
+
+The 'user_record' is in fact an account DB record. To provide automatic provisioning of accounts from other authentication realms, this record should be generated and stored during the verification phase.
+
+
+[code]
+ $addon_auth = array(
+ 'username' => trim($_POST['username']),
+ 'password' => trim($_POST['password']),
+ 'authenticated' => 0,
+ 'user_record' => null
+ );
+
+ /**
+ *
+ * A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record
+ * Plugins should never set 'authenticated' except to indicate success - as hooks may be chained
+ * and later plugins should not interfere with an earlier one that succeeded.
+ *
+ */
+
+ call_hooks('authenticate', $addon_auth);
+[/code]
+
+
+See include/auth.php
diff --git a/doc/hook/avatar_lookup.bb b/doc/hook/avatar_lookup.bb
new file mode 100644
index 000000000..abd84de5e
--- /dev/null
+++ b/doc/hook/avatar_lookup.bb
@@ -0,0 +1 @@
+[h2]avatar_lookup[/h2]
diff --git a/doc/hook/bb2diaspora.bb b/doc/hook/bb2diaspora.bb
new file mode 100644
index 000000000..c28f1883e
--- /dev/null
+++ b/doc/hook/bb2diaspora.bb
@@ -0,0 +1 @@
+[h2]bb2diaspora[/h2]
diff --git a/doc/hook/bbcode.bb b/doc/hook/bbcode.bb
new file mode 100644
index 000000000..2996a8528
--- /dev/null
+++ b/doc/hook/bbcode.bb
@@ -0,0 +1 @@
+[h2]bbcode[/h2]
diff --git a/doc/hook/channel_remove.bb b/doc/hook/channel_remove.bb
new file mode 100644
index 000000000..db9e9dd82
--- /dev/null
+++ b/doc/hook/channel_remove.bb
@@ -0,0 +1 @@
+[h2]channel_remove[/h2]
diff --git a/doc/hook/chat_message.bb b/doc/hook/chat_message.bb
new file mode 100644
index 000000000..ccc93bb2c
--- /dev/null
+++ b/doc/hook/chat_message.bb
@@ -0,0 +1 @@
+[h2]chat_message[/h2]
diff --git a/doc/hook/chat_post.bb b/doc/hook/chat_post.bb
new file mode 100644
index 000000000..7cb3c9fa1
--- /dev/null
+++ b/doc/hook/chat_post.bb
@@ -0,0 +1 @@
+[h2]chat_post[/h2]
diff --git a/doc/hook/check_account_email.bb b/doc/hook/check_account_email.bb
new file mode 100644
index 000000000..b309706a0
--- /dev/null
+++ b/doc/hook/check_account_email.bb
@@ -0,0 +1 @@
+[h2]check_account_email[/h2]
diff --git a/doc/hook/check_account_invite.bb b/doc/hook/check_account_invite.bb
new file mode 100644
index 000000000..8d4a40522
--- /dev/null
+++ b/doc/hook/check_account_invite.bb
@@ -0,0 +1 @@
+[h2]check_account_invite[/h2]
diff --git a/doc/hook/check_account_password.bb b/doc/hook/check_account_password.bb
new file mode 100644
index 000000000..53562ec6e
--- /dev/null
+++ b/doc/hook/check_account_password.bb
@@ -0,0 +1 @@
+[h2]check_account_password[/h2]
diff --git a/doc/hook/connect_premium.bb b/doc/hook/connect_premium.bb
new file mode 100644
index 000000000..ae3aafc66
--- /dev/null
+++ b/doc/hook/connect_premium.bb
@@ -0,0 +1 @@
+[h2]connect_premium[/h2]
diff --git a/doc/hook/connector_settings.bb b/doc/hook/connector_settings.bb
new file mode 100644
index 000000000..9b59c49da
--- /dev/null
+++ b/doc/hook/connector_settings.bb
@@ -0,0 +1 @@
+[h2]connector_settings[/h2]
diff --git a/doc/hook/construct_page.bb b/doc/hook/construct_page.bb
new file mode 100644
index 000000000..700d9256f
--- /dev/null
+++ b/doc/hook/construct_page.bb
@@ -0,0 +1 @@
+[h2]construct_page[/h2]
diff --git a/doc/hook/contact_block_end.bb b/doc/hook/contact_block_end.bb
new file mode 100644
index 000000000..30a7d2d76
--- /dev/null
+++ b/doc/hook/contact_block_end.bb
@@ -0,0 +1 @@
+[h2]contact_block_end[/h2]
diff --git a/doc/hook/contact_edit.bb b/doc/hook/contact_edit.bb
new file mode 100644
index 000000000..5fd31fb1d
--- /dev/null
+++ b/doc/hook/contact_edit.bb
@@ -0,0 +1 @@
+[h2]contact_edit[/h2]
diff --git a/doc/hook/contact_edit_post.bb b/doc/hook/contact_edit_post.bb
new file mode 100644
index 000000000..bc736f8b8
--- /dev/null
+++ b/doc/hook/contact_edit_post.bb
@@ -0,0 +1 @@
+[h2]contact_edit_post[/h2]
diff --git a/doc/hook/contact_select_options.bb b/doc/hook/contact_select_options.bb
new file mode 100644
index 000000000..65f9154ff
--- /dev/null
+++ b/doc/hook/contact_select_options.bb
@@ -0,0 +1 @@
+[h2]contact_select_options[/h2]
diff --git a/doc/hook/conversation_start.bb b/doc/hook/conversation_start.bb
new file mode 100644
index 000000000..7208c8d8f
--- /dev/null
+++ b/doc/hook/conversation_start.bb
@@ -0,0 +1 @@
+[h2]conversation_start[/h2]
diff --git a/doc/hook/create_identity.bb b/doc/hook/create_identity.bb
new file mode 100644
index 000000000..5c1da2d43
--- /dev/null
+++ b/doc/hook/create_identity.bb
@@ -0,0 +1 @@
+[h2]create_identity[/h2]
diff --git a/doc/hook/cron.bb b/doc/hook/cron.bb
new file mode 100644
index 000000000..ebbb64d50
--- /dev/null
+++ b/doc/hook/cron.bb
@@ -0,0 +1 @@
+[h2]cron[/h2]
diff --git a/doc/hook/cron_daily.bb b/doc/hook/cron_daily.bb
new file mode 100644
index 000000000..c5062330a
--- /dev/null
+++ b/doc/hook/cron_daily.bb
@@ -0,0 +1 @@
+[h2]cron_daily[/h2]
diff --git a/doc/hook/cron_weekly.bb b/doc/hook/cron_weekly.bb
new file mode 100644
index 000000000..8dc85e494
--- /dev/null
+++ b/doc/hook/cron_weekly.bb
@@ -0,0 +1 @@
+[h2]cron_weekly[/h2]
diff --git a/doc/hook/directory_item.bb b/doc/hook/directory_item.bb
new file mode 100644
index 000000000..cb710e0b4
--- /dev/null
+++ b/doc/hook/directory_item.bb
@@ -0,0 +1 @@
+[h2]directory_item[/h2]
diff --git a/doc/hook/discover_by_webbie.bb b/doc/hook/discover_by_webbie.bb
new file mode 100644
index 000000000..f9228932e
--- /dev/null
+++ b/doc/hook/discover_by_webbie.bb
@@ -0,0 +1 @@
+[h2]discover_by_webbie[/h2]
diff --git a/doc/hook/display_item.bb b/doc/hook/display_item.bb
new file mode 100644
index 000000000..a6bfd621d
--- /dev/null
+++ b/doc/hook/display_item.bb
@@ -0,0 +1 @@
+[h2]display_item[/h2]
diff --git a/doc/hook/display_settings.bb b/doc/hook/display_settings.bb
new file mode 100644
index 000000000..1f1e0b491
--- /dev/null
+++ b/doc/hook/display_settings.bb
@@ -0,0 +1 @@
+[h2]display_settings[/h2]
diff --git a/doc/hook/display_settings_post.bb b/doc/hook/display_settings_post.bb
new file mode 100644
index 000000000..d3bb39359
--- /dev/null
+++ b/doc/hook/display_settings_post.bb
@@ -0,0 +1 @@
+[h2]display_settings_post[/h2]
diff --git a/doc/hook/donate_contributors.bb b/doc/hook/donate_contributors.bb
new file mode 100644
index 000000000..f97c77efa
--- /dev/null
+++ b/doc/hook/donate_contributors.bb
@@ -0,0 +1 @@
+[h2]donate_contributors[/h2]
diff --git a/doc/hook/donate_plugin.bb b/doc/hook/donate_plugin.bb
new file mode 100644
index 000000000..db4a6f113
--- /dev/null
+++ b/doc/hook/donate_plugin.bb
@@ -0,0 +1 @@
+[h2]donate_plugin[/h2]
diff --git a/doc/hook/donate_sponsors.bb b/doc/hook/donate_sponsors.bb
new file mode 100644
index 000000000..3abd46d42
--- /dev/null
+++ b/doc/hook/donate_sponsors.bb
@@ -0,0 +1 @@
+[h2]donate_sponsors[/h2]
diff --git a/doc/hook/dreport_is_storable.bb b/doc/hook/dreport_is_storable.bb
new file mode 100644
index 000000000..9ca99b896
--- /dev/null
+++ b/doc/hook/dreport_is_storable.bb
@@ -0,0 +1 @@
+[h2]dreport_is_storable[/h2]
diff --git a/doc/hook/drop_item.bb b/doc/hook/drop_item.bb
new file mode 100644
index 000000000..35bb80f82
--- /dev/null
+++ b/doc/hook/drop_item.bb
@@ -0,0 +1 @@
+[h2]drop_item[/h2]
diff --git a/doc/hook/enotify.bb b/doc/hook/enotify.bb
new file mode 100644
index 000000000..703a3ffa0
--- /dev/null
+++ b/doc/hook/enotify.bb
@@ -0,0 +1 @@
+[h2]enotify[/h2]
diff --git a/doc/hook/enotify_mail.bb b/doc/hook/enotify_mail.bb
new file mode 100644
index 000000000..adeb8bd30
--- /dev/null
+++ b/doc/hook/enotify_mail.bb
@@ -0,0 +1 @@
+[h2]enotify_mail[/h2]
diff --git a/doc/hook/enotify_store.bb b/doc/hook/enotify_store.bb
new file mode 100644
index 000000000..dc44cc320
--- /dev/null
+++ b/doc/hook/enotify_store.bb
@@ -0,0 +1 @@
+[h2]enotify_store[/h2]
diff --git a/doc/hook/event_created.bb b/doc/hook/event_created.bb
new file mode 100644
index 000000000..222602e77
--- /dev/null
+++ b/doc/hook/event_created.bb
@@ -0,0 +1 @@
+[h2]event_created[/h2]
diff --git a/doc/hook/event_updated.bb b/doc/hook/event_updated.bb
new file mode 100644
index 000000000..69e3c72c1
--- /dev/null
+++ b/doc/hook/event_updated.bb
@@ -0,0 +1 @@
+[h2]event_updated[/h2]
diff --git a/doc/hook/externals_url_select.bb b/doc/hook/externals_url_select.bb
new file mode 100644
index 000000000..a542dcb29
--- /dev/null
+++ b/doc/hook/externals_url_select.bb
@@ -0,0 +1 @@
+[h2]externals_url_select[/h2]
diff --git a/doc/hook/feature_enabled.bb b/doc/hook/feature_enabled.bb
new file mode 100644
index 000000000..5630cc768
--- /dev/null
+++ b/doc/hook/feature_enabled.bb
@@ -0,0 +1 @@
+[h2]feature_enabled[/h2]
diff --git a/doc/hook/feature_settings.bb b/doc/hook/feature_settings.bb
new file mode 100644
index 000000000..d1691eb38
--- /dev/null
+++ b/doc/hook/feature_settings.bb
@@ -0,0 +1 @@
+[h2]feature_settings[/h2]
diff --git a/doc/hook/feature_settings_post.bb b/doc/hook/feature_settings_post.bb
new file mode 100644
index 000000000..eecf941ff
--- /dev/null
+++ b/doc/hook/feature_settings_post.bb
@@ -0,0 +1 @@
+[h2]feature_settings_post[/h2]
diff --git a/doc/hook/follow.bb b/doc/hook/follow.bb
new file mode 100644
index 000000000..a97632b06
--- /dev/null
+++ b/doc/hook/follow.bb
@@ -0,0 +1 @@
+[h2]follow[/h2]
diff --git a/doc/hook/follow_allow.bb b/doc/hook/follow_allow.bb
new file mode 100644
index 000000000..fdab1865c
--- /dev/null
+++ b/doc/hook/follow_allow.bb
@@ -0,0 +1 @@
+[h2]follow_allow[/h2]
diff --git a/doc/hook/gender_selector.bb b/doc/hook/gender_selector.bb
new file mode 100644
index 000000000..0b56b5c9b
--- /dev/null
+++ b/doc/hook/gender_selector.bb
@@ -0,0 +1 @@
+[h2]gender_selector[/h2]
diff --git a/doc/hook/gender_selector_min.bb b/doc/hook/gender_selector_min.bb
new file mode 100644
index 000000000..9d143855a
--- /dev/null
+++ b/doc/hook/gender_selector_min.bb
@@ -0,0 +1 @@
+[h2]gender_selector_min[/h2]
diff --git a/doc/hook/generate_map.bb b/doc/hook/generate_map.bb
new file mode 100644
index 000000000..33672d552
--- /dev/null
+++ b/doc/hook/generate_map.bb
@@ -0,0 +1 @@
+[h2]generate_map[/h2]
diff --git a/doc/hook/generate_named_map.bb b/doc/hook/generate_named_map.bb
new file mode 100644
index 000000000..5bacb846d
--- /dev/null
+++ b/doc/hook/generate_named_map.bb
@@ -0,0 +1 @@
+[h2]generate_named_map[/h2]
diff --git a/doc/hook/get_all_api_perms.bb b/doc/hook/get_all_api_perms.bb
new file mode 100644
index 000000000..eb41f8a02
--- /dev/null
+++ b/doc/hook/get_all_api_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_api_perms[/h2]
diff --git a/doc/hook/get_all_perms.bb b/doc/hook/get_all_perms.bb
new file mode 100644
index 000000000..149f8c78c
--- /dev/null
+++ b/doc/hook/get_all_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_perms[/h2]
diff --git a/doc/hook/get_features.bb b/doc/hook/get_features.bb
new file mode 100644
index 000000000..66e81f13c
--- /dev/null
+++ b/doc/hook/get_features.bb
@@ -0,0 +1 @@
+[h2]get_features[/h2]
diff --git a/doc/hook/get_role_perms.bb b/doc/hook/get_role_perms.bb
new file mode 100644
index 000000000..87830f8e3
--- /dev/null
+++ b/doc/hook/get_role_perms.bb
@@ -0,0 +1 @@
+[h2]get_role_perms[/h2]
diff --git a/doc/hook/get_widgets.bb b/doc/hook/get_widgets.bb
new file mode 100644
index 000000000..54b43858a
--- /dev/null
+++ b/doc/hook/get_widgets.bb
@@ -0,0 +1 @@
+[h2]get_widgets[/h2]
diff --git a/doc/hook/global_permissions.bb b/doc/hook/global_permissions.bb
new file mode 100644
index 000000000..fe998ee9c
--- /dev/null
+++ b/doc/hook/global_permissions.bb
@@ -0,0 +1 @@
+[h2]global_permissions[/h2]
diff --git a/doc/hook/home_content.bb b/doc/hook/home_content.bb
new file mode 100644
index 000000000..7f32b3547
--- /dev/null
+++ b/doc/hook/home_content.bb
@@ -0,0 +1 @@
+[h2]home_content[/h2]
diff --git a/doc/hook/home_init.bb b/doc/hook/home_init.bb
new file mode 100644
index 000000000..25dd72792
--- /dev/null
+++ b/doc/hook/home_init.bb
@@ -0,0 +1 @@
+[h2]home_init[/h2]
diff --git a/doc/hook/hostxrd.bb b/doc/hook/hostxrd.bb
new file mode 100644
index 000000000..2b67320cf
--- /dev/null
+++ b/doc/hook/hostxrd.bb
@@ -0,0 +1 @@
+[h2]hostxrd[/h2]
diff --git a/doc/hook/html2bbcode.bb b/doc/hook/html2bbcode.bb
new file mode 100644
index 000000000..3061f05f0
--- /dev/null
+++ b/doc/hook/html2bbcode.bb
@@ -0,0 +1 @@
+[h2]html2bbcode[/h2]
diff --git a/doc/hook/identity_basic_export.bb b/doc/hook/identity_basic_export.bb
new file mode 100644
index 000000000..3f4e88799
--- /dev/null
+++ b/doc/hook/identity_basic_export.bb
@@ -0,0 +1 @@
+[h2]identity_basic_export[/h2]
diff --git a/doc/hook/import_author_xchan.bb b/doc/hook/import_author_xchan.bb
new file mode 100644
index 000000000..e2340469d
--- /dev/null
+++ b/doc/hook/import_author_xchan.bb
@@ -0,0 +1 @@
+[h2]import_author_xchan[/h2]
diff --git a/doc/hook/import_channel.bb b/doc/hook/import_channel.bb
new file mode 100644
index 000000000..b220b7415
--- /dev/null
+++ b/doc/hook/import_channel.bb
@@ -0,0 +1 @@
+[h2]import_channel[/h2]
diff --git a/doc/hook/import_directory_profile.bb b/doc/hook/import_directory_profile.bb
new file mode 100644
index 000000000..e2fac59bc
--- /dev/null
+++ b/doc/hook/import_directory_profile.bb
@@ -0,0 +1 @@
+[h2]import_directory_profile[/h2]
diff --git a/doc/hook/import_xchan.bb b/doc/hook/import_xchan.bb
new file mode 100644
index 000000000..40e0783ce
--- /dev/null
+++ b/doc/hook/import_xchan.bb
@@ -0,0 +1 @@
+[h2]import_xchan[/h2]
diff --git a/doc/hook/item_photo_menu.bb b/doc/hook/item_photo_menu.bb
new file mode 100644
index 000000000..8f9860a90
--- /dev/null
+++ b/doc/hook/item_photo_menu.bb
@@ -0,0 +1 @@
+[h2]item_photo_menu[/h2]
diff --git a/doc/hook/item_store.bb b/doc/hook/item_store.bb
new file mode 100644
index 000000000..5d49b725c
--- /dev/null
+++ b/doc/hook/item_store.bb
@@ -0,0 +1 @@
+[h2]item_store[/h2]
diff --git a/doc/hook/item_store_update.bb b/doc/hook/item_store_update.bb
new file mode 100644
index 000000000..a7c58939a
--- /dev/null
+++ b/doc/hook/item_store_update.bb
@@ -0,0 +1 @@
+[h2]item_store_update[/h2]
diff --git a/doc/hook/item_translate.bb b/doc/hook/item_translate.bb
new file mode 100644
index 000000000..695494b9c
--- /dev/null
+++ b/doc/hook/item_translate.bb
@@ -0,0 +1 @@
+[h2]item_translate[/h2]
diff --git a/doc/hook/jot_networks.bb b/doc/hook/jot_networks.bb
new file mode 100644
index 000000000..4c1629ba7
--- /dev/null
+++ b/doc/hook/jot_networks.bb
@@ -0,0 +1 @@
+[h2]jot_networks[/h2]
diff --git a/doc/hook/jot_tool.bb b/doc/hook/jot_tool.bb
new file mode 100644
index 000000000..22ba9701e
--- /dev/null
+++ b/doc/hook/jot_tool.bb
@@ -0,0 +1 @@
+[h2]jot_tool[/h2]
diff --git a/doc/hook/load_pdl.bb b/doc/hook/load_pdl.bb
new file mode 100644
index 000000000..149a3e766
--- /dev/null
+++ b/doc/hook/load_pdl.bb
@@ -0,0 +1 @@
+[h2]load_pdl[/h2]
diff --git a/doc/hook/local_dir_update.bb b/doc/hook/local_dir_update.bb
new file mode 100644
index 000000000..d0b0f8ac1
--- /dev/null
+++ b/doc/hook/local_dir_update.bb
@@ -0,0 +1 @@
+[h2]local_dir_update[/h2]
diff --git a/doc/hook/logged_in.bb b/doc/hook/logged_in.bb
new file mode 100644
index 000000000..b01041576
--- /dev/null
+++ b/doc/hook/logged_in.bb
@@ -0,0 +1 @@
+[h2]logged_in[/h2]
diff --git a/doc/hook/logging_out.bb b/doc/hook/logging_out.bb
new file mode 100644
index 000000000..d47b9f1df
--- /dev/null
+++ b/doc/hook/logging_out.bb
@@ -0,0 +1 @@
+[h2]logging_out[/h2]
diff --git a/doc/hook/login_hook.bb b/doc/hook/login_hook.bb
new file mode 100644
index 000000000..156a0afcd
--- /dev/null
+++ b/doc/hook/login_hook.bb
@@ -0,0 +1 @@
+[h2]login_hook[/h2]
diff --git a/doc/hook/magic_auth.bb b/doc/hook/magic_auth.bb
new file mode 100644
index 000000000..80d6edb27
--- /dev/null
+++ b/doc/hook/magic_auth.bb
@@ -0,0 +1 @@
+[h2]magic_auth[/h2]
diff --git a/doc/hook/magic_auth_openid_success.bb b/doc/hook/magic_auth_openid_success.bb
new file mode 100644
index 000000000..810f2e06d
--- /dev/null
+++ b/doc/hook/magic_auth_openid_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_openid_success[/h2]
diff --git a/doc/hook/magic_auth_success.bb b/doc/hook/magic_auth_success.bb
new file mode 100644
index 000000000..d795e43e5
--- /dev/null
+++ b/doc/hook/magic_auth_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_success[/h2]
diff --git a/doc/hook/main_slider.bb b/doc/hook/main_slider.bb
new file mode 100644
index 000000000..a63c2170a
--- /dev/null
+++ b/doc/hook/main_slider.bb
@@ -0,0 +1 @@
+[h2]main_slider[/h2]
diff --git a/doc/hook/marital_selector.bb b/doc/hook/marital_selector.bb
new file mode 100644
index 000000000..0f76c3f5a
--- /dev/null
+++ b/doc/hook/marital_selector.bb
@@ -0,0 +1 @@
+[h2]marital_selector[/h2]
diff --git a/doc/hook/marital_selector_min.bb b/doc/hook/marital_selector_min.bb
new file mode 100644
index 000000000..f02d21f20
--- /dev/null
+++ b/doc/hook/marital_selector_min.bb
@@ -0,0 +1 @@
+[h2]marital_selector_min[/h2]
diff --git a/doc/hook/module_loaded.bb b/doc/hook/module_loaded.bb
new file mode 100644
index 000000000..cb0d2302d
--- /dev/null
+++ b/doc/hook/module_loaded.bb
@@ -0,0 +1 @@
+[h2]module_loaded[/h2]
diff --git a/doc/hook/module_mod_aftercontent.bb b/doc/hook/module_mod_aftercontent.bb
new file mode 100644
index 000000000..5d48435b8
--- /dev/null
+++ b/doc/hook/module_mod_aftercontent.bb
@@ -0,0 +1,12 @@
+[h2]module_mod_aftercontent[/h2]
+
+
+
+The hook data for this call consists of an array
+
+ $arr['content']
+
+This element contains the HTML content which was prepared for this page by calling the module_content() function. It is invoked after the content has been created. It does not contain the result of AJAX or asynchronous page load calls.
+
+ The current module may be determined by lookin at $a->module
+
diff --git a/doc/hook/module_mod_content.bb b/doc/hook/module_mod_content.bb
new file mode 100644
index 000000000..39f5743b1
--- /dev/null
+++ b/doc/hook/module_mod_content.bb
@@ -0,0 +1,10 @@
+[h2]module_mod_content[/h2]
+
+The hook data for this call consists of an array
+
+ $arr['content']
+
+This element contains the HTML content before calling the module_content() function. It is invoked before the content region has been populated. This may or may not be empty as there may be other processes or addons generating content prior to your hook handler is run. Be certain to preserve any current content. Typically anything you add here will be placed at the top of the content region of the page, but in any event prior to the main content region being generated.
+
+ The current module may be determined by lookin at $a->module
+
diff --git a/doc/hook/module_mod_init.bb b/doc/hook/module_mod_init.bb
new file mode 100644
index 000000000..52fe5a616
--- /dev/null
+++ b/doc/hook/module_mod_init.bb
@@ -0,0 +1 @@
+[h2]module_mod_init[/h2]
diff --git a/doc/hook/module_mod_post.bb b/doc/hook/module_mod_post.bb
new file mode 100644
index 000000000..3adb0e737
--- /dev/null
+++ b/doc/hook/module_mod_post.bb
@@ -0,0 +1 @@
+[h2]module_mod_post[/h2]
diff --git a/doc/hook/mood_verbs.bb b/doc/hook/mood_verbs.bb
new file mode 100644
index 000000000..67fb719dd
--- /dev/null
+++ b/doc/hook/mood_verbs.bb
@@ -0,0 +1 @@
+[h2]mood_verbs[/h2]
diff --git a/doc/hook/nav.bb b/doc/hook/nav.bb
new file mode 100644
index 000000000..847573620
--- /dev/null
+++ b/doc/hook/nav.bb
@@ -0,0 +1 @@
+[h2]nav[/h2]
diff --git a/doc/hook/network_content_init.bb b/doc/hook/network_content_init.bb
new file mode 100644
index 000000000..224da393a
--- /dev/null
+++ b/doc/hook/network_content_init.bb
@@ -0,0 +1 @@
+[h2]network_content_init[/h2]
diff --git a/doc/hook/network_ping.bb b/doc/hook/network_ping.bb
new file mode 100644
index 000000000..78deefe78
--- /dev/null
+++ b/doc/hook/network_ping.bb
@@ -0,0 +1 @@
+[h2]network_ping[/h2]
diff --git a/doc/hook/network_tabs.bb b/doc/hook/network_tabs.bb
new file mode 100644
index 000000000..677d7f2b9
--- /dev/null
+++ b/doc/hook/network_tabs.bb
@@ -0,0 +1 @@
+[h2]network_tabs[/h2]
diff --git a/doc/hook/network_to_name.bb b/doc/hook/network_to_name.bb
new file mode 100644
index 000000000..eea4a1841
--- /dev/null
+++ b/doc/hook/network_to_name.bb
@@ -0,0 +1 @@
+[h2]network_to_name[/h2]
diff --git a/doc/hook/notifier_end.bb b/doc/hook/notifier_end.bb
new file mode 100644
index 000000000..df9d852bd
--- /dev/null
+++ b/doc/hook/notifier_end.bb
@@ -0,0 +1 @@
+[h2]notifier_end[/h2]
diff --git a/doc/hook/notifier_hub.bb b/doc/hook/notifier_hub.bb
new file mode 100644
index 000000000..4255ce446
--- /dev/null
+++ b/doc/hook/notifier_hub.bb
@@ -0,0 +1 @@
+[h2]notifier_hub[/h2]
diff --git a/doc/hook/notifier_normal.bb b/doc/hook/notifier_normal.bb
new file mode 100644
index 000000000..0059baa47
--- /dev/null
+++ b/doc/hook/notifier_normal.bb
@@ -0,0 +1 @@
+[h2]notifier_normal[/h2]
diff --git a/doc/hook/obj_verbs.bb b/doc/hook/obj_verbs.bb
new file mode 100644
index 000000000..ca98229aa
--- /dev/null
+++ b/doc/hook/obj_verbs.bb
@@ -0,0 +1 @@
+[h2]obj_verbs[/h2]
diff --git a/doc/hook/oembed_probe.bb b/doc/hook/oembed_probe.bb
new file mode 100644
index 000000000..4f32ac267
--- /dev/null
+++ b/doc/hook/oembed_probe.bb
@@ -0,0 +1 @@
+[h2]oembed_probe[/h2]
diff --git a/doc/hook/page_content_top.bb b/doc/hook/page_content_top.bb
new file mode 100644
index 000000000..137e3abfd
--- /dev/null
+++ b/doc/hook/page_content_top.bb
@@ -0,0 +1 @@
+[h2]page_content_top[/h2]
diff --git a/doc/hook/page_end.bb b/doc/hook/page_end.bb
new file mode 100644
index 000000000..09293cf50
--- /dev/null
+++ b/doc/hook/page_end.bb
@@ -0,0 +1 @@
+[h2]page_end[/h2]
diff --git a/doc/hook/page_header.bb b/doc/hook/page_header.bb
new file mode 100644
index 000000000..ffaa791c9
--- /dev/null
+++ b/doc/hook/page_header.bb
@@ -0,0 +1 @@
+[h2]page_header[/h2]
diff --git a/doc/hook/parse_atom.bb b/doc/hook/parse_atom.bb
new file mode 100644
index 000000000..c8037317f
--- /dev/null
+++ b/doc/hook/parse_atom.bb
@@ -0,0 +1 @@
+[h2]parse_atom[/h2]
diff --git a/doc/hook/parse_link.bb b/doc/hook/parse_link.bb
new file mode 100644
index 000000000..1c328059c
--- /dev/null
+++ b/doc/hook/parse_link.bb
@@ -0,0 +1 @@
+[h2]parse_link[/h2]
diff --git a/doc/hook/pdl_selector.bb b/doc/hook/pdl_selector.bb
new file mode 100644
index 000000000..bee01c843
--- /dev/null
+++ b/doc/hook/pdl_selector.bb
@@ -0,0 +1 @@
+[h2]pdl_selector[/h2]
diff --git a/doc/hook/perm_is_allowed.bb b/doc/hook/perm_is_allowed.bb
new file mode 100644
index 000000000..aac647609
--- /dev/null
+++ b/doc/hook/perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]perm_is_allowed[/h2]
diff --git a/doc/hook/permissions_create.bb b/doc/hook/permissions_create.bb
new file mode 100644
index 000000000..22f80a80e
--- /dev/null
+++ b/doc/hook/permissions_create.bb
@@ -0,0 +1 @@
+[h2]permissions_create[/h2]
diff --git a/doc/hook/permissions_update.bb b/doc/hook/permissions_update.bb
new file mode 100644
index 000000000..40366b33d
--- /dev/null
+++ b/doc/hook/permissions_update.bb
@@ -0,0 +1 @@
+[h2]permissions_update[/h2]
diff --git a/doc/hook/personal_xrd.bb b/doc/hook/personal_xrd.bb
new file mode 100644
index 000000000..71d4bd8dd
--- /dev/null
+++ b/doc/hook/personal_xrd.bb
@@ -0,0 +1 @@
+[h2]personal_xrd[/h2]
diff --git a/doc/hook/photo_post_end.bb b/doc/hook/photo_post_end.bb
new file mode 100644
index 000000000..8a3291763
--- /dev/null
+++ b/doc/hook/photo_post_end.bb
@@ -0,0 +1 @@
+[h2]photo_post_end[/h2]
diff --git a/doc/hook/photo_upload_begin.bb b/doc/hook/photo_upload_begin.bb
new file mode 100644
index 000000000..5e441a12a
--- /dev/null
+++ b/doc/hook/photo_upload_begin.bb
@@ -0,0 +1 @@
+[h2]photo_upload_begin[/h2]
diff --git a/doc/hook/photo_upload_end.bb b/doc/hook/photo_upload_end.bb
new file mode 100644
index 000000000..956175f1d
--- /dev/null
+++ b/doc/hook/photo_upload_end.bb
@@ -0,0 +1 @@
+[h2]photo_upload_end[/h2]
diff --git a/doc/hook/photo_upload_file.bb b/doc/hook/photo_upload_file.bb
new file mode 100644
index 000000000..726622ac0
--- /dev/null
+++ b/doc/hook/photo_upload_file.bb
@@ -0,0 +1 @@
+[h2]photo_upload_file[/h2]
diff --git a/doc/hook/photo_upload_form.bb b/doc/hook/photo_upload_form.bb
new file mode 100644
index 000000000..70b8318b8
--- /dev/null
+++ b/doc/hook/photo_upload_form.bb
@@ -0,0 +1 @@
+[h2]photo_upload_form[/h2]
diff --git a/doc/hook/poke_verbs.bb b/doc/hook/poke_verbs.bb
new file mode 100644
index 000000000..54d68c3a2
--- /dev/null
+++ b/doc/hook/poke_verbs.bb
@@ -0,0 +1 @@
+[h2]poke_verbs[/h2]
diff --git a/doc/hook/post_local.bb b/doc/hook/post_local.bb
new file mode 100644
index 000000000..5aa723cb9
--- /dev/null
+++ b/doc/hook/post_local.bb
@@ -0,0 +1 @@
+[h2]post_local[/h2]
diff --git a/doc/hook/post_local_end.bb b/doc/hook/post_local_end.bb
new file mode 100644
index 000000000..380166fdb
--- /dev/null
+++ b/doc/hook/post_local_end.bb
@@ -0,0 +1 @@
+[h2]post_local_end[/h2]
diff --git a/doc/hook/post_local_start.bb b/doc/hook/post_local_start.bb
new file mode 100644
index 000000000..2f684f67a
--- /dev/null
+++ b/doc/hook/post_local_start.bb
@@ -0,0 +1 @@
+[h2]post_local_start[/h2]
diff --git a/doc/hook/post_mail.bb b/doc/hook/post_mail.bb
new file mode 100644
index 000000000..8f67ad4f0
--- /dev/null
+++ b/doc/hook/post_mail.bb
@@ -0,0 +1 @@
+[h2]post_mail[/h2]
diff --git a/doc/hook/post_mail_end.bb b/doc/hook/post_mail_end.bb
new file mode 100644
index 000000000..7f0085773
--- /dev/null
+++ b/doc/hook/post_mail_end.bb
@@ -0,0 +1 @@
+[h2]post_mail_end[/h2]
diff --git a/doc/hook/post_remote.bb b/doc/hook/post_remote.bb
new file mode 100644
index 000000000..f8e087eee
--- /dev/null
+++ b/doc/hook/post_remote.bb
@@ -0,0 +1 @@
+[h2]post_remote[/h2]
diff --git a/doc/hook/post_remote_end.bb b/doc/hook/post_remote_end.bb
new file mode 100644
index 000000000..0fef20cbf
--- /dev/null
+++ b/doc/hook/post_remote_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_end[/h2]
diff --git a/doc/hook/post_remote_update.bb b/doc/hook/post_remote_update.bb
new file mode 100644
index 000000000..fd358db28
--- /dev/null
+++ b/doc/hook/post_remote_update.bb
@@ -0,0 +1 @@
+[h2]post_remote_update[/h2]
diff --git a/doc/hook/post_remote_update_end.bb b/doc/hook/post_remote_update_end.bb
new file mode 100644
index 000000000..95f1e6f78
--- /dev/null
+++ b/doc/hook/post_remote_update_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_update_end[/h2]
diff --git a/doc/hook/prepare_body.bb b/doc/hook/prepare_body.bb
new file mode 100644
index 000000000..3f1eaef85
--- /dev/null
+++ b/doc/hook/prepare_body.bb
@@ -0,0 +1 @@
+[h2]prepare_body[/h2]
diff --git a/doc/hook/prepare_body_final.bb b/doc/hook/prepare_body_final.bb
new file mode 100644
index 000000000..96d1ae389
--- /dev/null
+++ b/doc/hook/prepare_body_final.bb
@@ -0,0 +1 @@
+[h2]prepare_body_final[/h2]
diff --git a/doc/hook/prepare_body_init.bb b/doc/hook/prepare_body_init.bb
new file mode 100644
index 000000000..f3de79970
--- /dev/null
+++ b/doc/hook/prepare_body_init.bb
@@ -0,0 +1 @@
+[h2]prepare_body_init[/h2]
diff --git a/doc/hook/probe_well_known.bb b/doc/hook/probe_well_known.bb
new file mode 100644
index 000000000..eff690f31
--- /dev/null
+++ b/doc/hook/probe_well_known.bb
@@ -0,0 +1 @@
+[h2]probe_well_known[/h2]
diff --git a/doc/hook/proc_run.bb b/doc/hook/proc_run.bb
new file mode 100644
index 000000000..a3759794a
--- /dev/null
+++ b/doc/hook/proc_run.bb
@@ -0,0 +1 @@
+[h2]proc_run[/h2]
diff --git a/doc/hook/process_channel_sync_delivery.bb b/doc/hook/process_channel_sync_delivery.bb
new file mode 100644
index 000000000..c0416c8cb
--- /dev/null
+++ b/doc/hook/process_channel_sync_delivery.bb
@@ -0,0 +1 @@
+[h2]process_channel_sync_delivery[/h2]
diff --git a/doc/hook/profile_advanced.bb b/doc/hook/profile_advanced.bb
new file mode 100644
index 000000000..65e56afd6
--- /dev/null
+++ b/doc/hook/profile_advanced.bb
@@ -0,0 +1 @@
+[h2]profile_advanced[/h2]
diff --git a/doc/hook/profile_edit.bb b/doc/hook/profile_edit.bb
new file mode 100644
index 000000000..e60663d4a
--- /dev/null
+++ b/doc/hook/profile_edit.bb
@@ -0,0 +1 @@
+[h2]profile_edit[/h2]
diff --git a/doc/hook/profile_photo_content_end.bb b/doc/hook/profile_photo_content_end.bb
new file mode 100644
index 000000000..518415c4d
--- /dev/null
+++ b/doc/hook/profile_photo_content_end.bb
@@ -0,0 +1 @@
+[h2]profile_photo_content_end[/h2]
diff --git a/doc/hook/profile_post.bb b/doc/hook/profile_post.bb
new file mode 100644
index 000000000..d22d8fbc7
--- /dev/null
+++ b/doc/hook/profile_post.bb
@@ -0,0 +1 @@
+[h2]profile_post[/h2]
diff --git a/doc/hook/profile_sidebar.bb b/doc/hook/profile_sidebar.bb
new file mode 100644
index 000000000..bfd059e4b
--- /dev/null
+++ b/doc/hook/profile_sidebar.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar[/h2]
diff --git a/doc/hook/profile_sidebar_enter.bb b/doc/hook/profile_sidebar_enter.bb
new file mode 100644
index 000000000..9d6726a30
--- /dev/null
+++ b/doc/hook/profile_sidebar_enter.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar_enter[/h2]
diff --git a/doc/hook/profile_tabs.bb b/doc/hook/profile_tabs.bb
new file mode 100644
index 000000000..5b3e9e707
--- /dev/null
+++ b/doc/hook/profile_tabs.bb
@@ -0,0 +1 @@
+[h2]profile_tabs[/h2]
diff --git a/doc/hook/register_account.bb b/doc/hook/register_account.bb
new file mode 100644
index 000000000..df4de2b30
--- /dev/null
+++ b/doc/hook/register_account.bb
@@ -0,0 +1 @@
+[h2]register_account[/h2]
diff --git a/doc/hook/render_location.bb b/doc/hook/render_location.bb
new file mode 100644
index 000000000..41501c087
--- /dev/null
+++ b/doc/hook/render_location.bb
@@ -0,0 +1 @@
+[h2]render_location[/h2]
diff --git a/doc/hook/replace_macros.bb b/doc/hook/replace_macros.bb
new file mode 100644
index 000000000..fac39dd7b
--- /dev/null
+++ b/doc/hook/replace_macros.bb
@@ -0,0 +1 @@
+[h2]replace_macros[/h2]
diff --git a/doc/hook/reverse_magic_auth.bb b/doc/hook/reverse_magic_auth.bb
new file mode 100644
index 000000000..4cbd84b93
--- /dev/null
+++ b/doc/hook/reverse_magic_auth.bb
@@ -0,0 +1 @@
+[h2]reverse_magic_auth[/h2]
diff --git a/doc/hook/settings_form.bb b/doc/hook/settings_form.bb
new file mode 100644
index 000000000..d65341181
--- /dev/null
+++ b/doc/hook/settings_form.bb
@@ -0,0 +1 @@
+[h2]settings_form[/h2]
diff --git a/doc/hook/settings_post.bb b/doc/hook/settings_post.bb
new file mode 100644
index 000000000..f72546c11
--- /dev/null
+++ b/doc/hook/settings_post.bb
@@ -0,0 +1 @@
+[h2]settings_post[/h2]
diff --git a/doc/hook/sexpref_selector.bb b/doc/hook/sexpref_selector.bb
new file mode 100644
index 000000000..b4dad6b38
--- /dev/null
+++ b/doc/hook/sexpref_selector.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector[/h2]
diff --git a/doc/hook/sexpref_selector_min.bb b/doc/hook/sexpref_selector_min.bb
new file mode 100644
index 000000000..6f49946af
--- /dev/null
+++ b/doc/hook/sexpref_selector_min.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector_min[/h2]
diff --git a/doc/hook/smilie.bb b/doc/hook/smilie.bb
new file mode 100644
index 000000000..cea3e0c94
--- /dev/null
+++ b/doc/hook/smilie.bb
@@ -0,0 +1 @@
+[h2]smilie[/h2]
diff --git a/doc/hook/tagged.bb b/doc/hook/tagged.bb
new file mode 100644
index 000000000..5add76713
--- /dev/null
+++ b/doc/hook/tagged.bb
@@ -0,0 +1 @@
+[h2]tagged[/h2]
diff --git a/doc/hook/validate_channelname.bb b/doc/hook/validate_channelname.bb
new file mode 100644
index 000000000..c78961017
--- /dev/null
+++ b/doc/hook/validate_channelname.bb
@@ -0,0 +1 @@
+[h2]validate_channelname[/h2]
diff --git a/doc/hook/webfinger.bb b/doc/hook/webfinger.bb
new file mode 100644
index 000000000..7cc24322f
--- /dev/null
+++ b/doc/hook/webfinger.bb
@@ -0,0 +1 @@
+[h2]webfinger[/h2]
diff --git a/doc/hook/well_known.bb b/doc/hook/well_known.bb
new file mode 100644
index 000000000..778b27a02
--- /dev/null
+++ b/doc/hook/well_known.bb
@@ -0,0 +1 @@
+[h2]well_known[/h2]
diff --git a/doc/hook/zid.bb b/doc/hook/zid.bb
new file mode 100644
index 000000000..2210c1342
--- /dev/null
+++ b/doc/hook/zid.bb
@@ -0,0 +1 @@
+[h2]zid[/h2]
diff --git a/doc/hook/zid_init.bb b/doc/hook/zid_init.bb
new file mode 100644
index 000000000..131dd8f72
--- /dev/null
+++ b/doc/hook/zid_init.bb
@@ -0,0 +1 @@
+[h2]zid_init[/h2]
diff --git a/doc/hook/zot_finger.bb b/doc/hook/zot_finger.bb
new file mode 100644
index 000000000..9383b4c31
--- /dev/null
+++ b/doc/hook/zot_finger.bb
@@ -0,0 +1 @@
+[h2]zot_finger[/h2]
diff --git a/doc/hooklist.bb b/doc/hooklist.bb
new file mode 100644
index 000000000..9e0220013
--- /dev/null
+++ b/doc/hooklist.bb
@@ -0,0 +1,494 @@
+[h2]Hooks[/h2]
+
+Hooks allow plugins/addons to "hook into" the code at many points and alter the behaviour or otherwise perform independent actions when an activity takes place or when certain data structures are accessed. There are many hooks which allow you to tie into the software at most any point and do something slightly different than the default thing. These hooks are passed two variables. The first is the App structure which contains details about the entire state of the page request as we build the resulting page. The second is unique to the specific hook that is called and provides specific detail about what is happening in the software at the time the hook is invoked.
+
+
+[zrl=[baseurl]/help/hook/module_mod_aftercontent]module_mod_aftercontent[/zrl]
+ General purpose hook for any module, executed after mod_content(). Replace 'module' with module name, e.g. 'photos_mod_aftercontent'.
+
+[zrl=[baseurl]/help/hook/module_mod_content]module_mod_content[/zrl]
+ General purpose hook for any module, executed before mod_content(). Replace 'module' with module name, e.g. 'photos_mod_content'.
+
+[zrl=[baseurl]/help/hook/module_mod_init]module_mod_init[/zrl]
+ General purpose hook for any module, executed before mod_init(). Replace 'module' with module name, e.g. 'photos_mod_init'.
+
+[zrl=[baseurl]/help/hook/module_mod_post]module_mod_post[/zrl]
+ General purpose hook for any module, executed before mod_post(). Replace 'module' with module name, e.g. 'photos_mod_post'.
+
+[zrl=[baseurl]/help/hook/about_hook]about_hook[/zrl]
+ Called from the siteinfo page
+
+[zrl=[baseurl]/help/hook/accept_follow]accept_follow[/zrl]
+ Called when accepting a connection (friend request)
+
+[zrl=[baseurl]/help/hook/account_downgrade]account_downgrade[/zrl]
+ Called when an account has expired, indicating a potential downgrade to "basic" service class
+
+[zrl=[baseurl]/help/hook/account_settings]account_settings[/zrl]
+ Called when generating the account settings form
+
+[zrl=[baseurl]/help/hook/settings_account]account_settings_post[/zrl]
+ Called when posting from the account settings form
+
+[zrl=[baseurl]/help/hook/activity_received]activity_received[/zrl]
+ Called when an activity (post, comment, like, etc.) has been received from a zot source
+
+[zrl=[baseurl]/help/hook/affinity_labels]affinity_labels[/zrl]
+ Used to generate alternate labels for the affinity slider.
+
+[zrl=[baseurl]/help/hook/api_perm_is_allowed]api_perm_is_allowed[/zrl]
+ Called when perm_is_allowed() is executed from an API call.
+
+[zrl=[baseurl]/help/hook/app_menu]app_menu[/zrl]
+ Used to register plugins as apps
+
+[zrl=[baseurl]/help/hook/atom_author]atom_author[/zrl]
+ Called when generating an author or owner element for an Atom ActivityStream feed
+
+[zrl=[baseurl]/help/hook/atom_entry]atom_entry[/zrl]
+ Called when generating each item entry of an Atom ActivityStreams feed
+
+[zrl=[baseurl]/help/hook/atom_feed]atom_feed[/zrl]
+ Called when generating an Atom ActivityStreams feed
+
+[zrl=[baseurl]/help/hook/atom_feed_end]atom_feed_end[/zrl]
+ Called when generation of an Atom ActivityStreams feed is completed
+
+[zrl=[baseurl]/help/hook/attach_upload_file]attach_upload_file[/zrl]
+ Called when uploading a file
+
+[zrl=[baseurl]/help/hook/authenticate]authenticate[/zrl]
+ Can provide alternate authentication mechanisms
+
+[zrl=[baseurl]/help/hook/avatar_lookup]avatar_lookup[/zrl]
+ Used for "gravatar" or libravatar profile photo lookup.
+
+[zrl=[baseurl]/help/hook/bb2diaspora]bb2diaspora[/zrl]
+ called when converting bbcode to markdown
+
+[zrl=[baseurl]/help/hook/bbcode]bbcode[/zrl]
+ Called when converting bbcode to HTML
+
+[zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl]
+ Called when removing a channel
+
+[zrl=[baseurl]/help/hook/chat_message]chat_message[/zrl]
+ Called to create a chat message.
+
+[zrl=[baseurl]/help/hook/chat_post]chat_post[/zrl]
+ Called when a chat message has been posted
+
+[zrl=[baseurl]/help/hook/check_account_email]check_account_email[/zrl]
+ Validate the email provided in an account registration
+
+[zrl=[baseurl]/help/hook/check_account_invite]check_account_invite[/zrl]
+ Validate an invitation code when using site invitations
+
+[zrl=[baseurl]/help/hook/check_account_password]check_account_password[/zrl]
+ Used to provide policy control over account passwords (minimum length, character set inclusion, etc.)
+
+[zrl=[baseurl]/help/hook/connect_premium]connect_premium[/zrl]
+ Called when connecting to a premium channel
+
+[zrl=[baseurl]/help/hook/connector_settings]connector_settings[/zrl]
+ Called when posting to the features/addon settings page
+
+[zrl=[baseurl]/help/hook/construct_page]construct_page[/zrl]
+ General purpose hook to provide content to certain page regions. Called when constructing the Comanche page.
+
+[zrl=[baseurl]/help/hook/contact_block_end]contact_block_end[/zrl]
+ Called when generating the sidebar "Connections" widget
+
+[zrl=[baseurl]/help/hook/contact_edit]contact_edit[/zrl]
+ Called when editing a connection via connedit
+
+[zrl=[baseurl]/help/hook/contact_edit_post]contact_edit_post[/zrl]
+ Called when posting to connedit
+
+[zrl=[baseurl]/help/hook/contact_select_options]contact_select_options[/zrl]
+ Deprecated/unused
+
+[zrl=[baseurl]/help/hook/conversation_start]conversation_start[/zrl]
+ Called in the beginning of rendering a conversation (message or message collection or stream)
+
+[zrl=[baseurl]/help/hook/create_identity]create_identity[/zrl]
+ Called when creating a channel
+
+[zrl=[baseurl]/help/hook/cron]cron[/zrl]
+ Called when scheduled tasks (poller) is executed
+
+[zrl=[baseurl]/help/hook/cron_daily]cron_daily[/zrl]
+ Called when daily scheduled tasks are executed
+
+[zrl=[baseurl]/help/hook/cron_weekly]cron_weekly[/zrl]
+ Called when weekly scheduled tasks are executed
+
+[zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl]
+ Called when generating a directory listing for display
+
+[zrl=[baseurl]/help/hook/discover_by_webbie]discover_by_webbie[/zrl]
+ Called when performing a webfinger lookup
+
+[zrl=[baseurl]/help/hook/display_item]display_item[/zrl]
+ Called for each item being displayed in a conversation thread
+
+[zrl=[baseurl]/help/hook/display_settings]display_settings[/zrl]
+ Called from settings module when displaying the 'display settings' section
+
+[zrl=[baseurl]/help/hook/display_settings_post]display_settings_post[/zrl]
+ Called when posting from the settings module 'display settings' form
+
+[zrl=[baseurl]/help/hook/donate_contributors]donate_contributors[/zrl]
+ called by the 'donate' addon when generating a list of donation recipients
+
+[zrl=[baseurl]/help/hook/donate_plugin]donate_plugin[/zrl]
+ called by the 'donate' addon
+
+[zrl=[baseurl]/help/hook/donate_sponsors]donate_sponsors[/zrl]
+ called by the 'donate' addon
+
+[zrl=[baseurl]/help/hook/dreport_is_storable]dreport_is_storable[/zrl]
+ called before storing a dreport record to determine whether to store it
+
+[zrl=[baseurl]/help/hook/drop_item]drop_item[/zrl]
+ called when an 'item' is removed
+
+[zrl=[baseurl]/help/hook/enotify]enotify[/zrl]
+ called before any notification
+
+[zrl=[baseurl]/help/hook/enotify_mail]enotify_mail[/zrl]
+ called when sending a notification email
+
+[zrl=[baseurl]/help/hook/enotify_store]enotify_store[/zrl]
+ called when storing a notification record
+
+[zrl=[baseurl]/help/hook/event_created]event_created[/zrl]
+ called when an event record is created
+
+[zrl=[baseurl]/help/hook/event_updated]event_updated[/zrl]
+ called when an event record is modified
+
+[zrl=[baseurl]/help/hook/externals_url_select]externals_url_select[/zrl]
+ called when generating a list of random sites to pull public posts from
+
+[zrl=[baseurl]/help/hook/feature_enabled]feature_enabled[/zrl]
+ called when 'feature_enabled()' is used
+
+[zrl=[baseurl]/help/hook/feature_settings]feature_settings[/zrl]
+ called from settings page when visiting 'addon/feature settings'
+
+[zrl=[baseurl]/help/hook/feature_settings_post]feature_settings_post[/zrl]
+ called from settings page when posting from 'addon/feature settings'
+
+[zrl=[baseurl]/help/hook/follow]follow[/zrl]
+ called when a follow operation takes place
+
+[zrl=[baseurl]/help/hook/follow_allow]follow_allow[/zrl]
+ called before storing the results of a follow operation
+
+[zrl=[baseurl]/help/hook/gender_selector]gender_selector[/zrl]
+ called when creating the 'gender' drop down list (advanced profile)
+
+[zrl=[baseurl]/help/hook/gender_selector_min]gender_selector_min[/zrl]
+ called when creating the 'gender' drop down list (normal profile)
+
+
+[zrl=[baseurl]/help/hook/generate_map]generate_map[/zrl]
+ called to generate the HTML for displaying a map location by coordinates
+
+[zrl=[baseurl]/help/hook/generate_named_map]generate_named_map[/zrl]
+ called to generate the HTML for displaying a map location by text location
+
+[zrl=[baseurl]/help/hook/get_all_api_perms]get_all_api_perms[/zrl]
+ Called when retrieving the permissions for API uses
+
+[zrl=[baseurl]/help/hook/get_all_perms]get_all_perms[/zrl]
+ called when get_all_perms() is used
+
+[zrl=[baseurl]/help/hook/get_features]get_features[/zrl]
+ Called when get_features() is called
+
+[zrl=[baseurl]/help/hook/get_role_perms]get_role_perms[/zrl]
+ Called when get_role_perms() is called to obtain permissions for named permission roles
+
+[zrl=[baseurl]/help/hook/get_widgets]get_widgets[/zrl]
+ No longer used - now widget placement is managed by Comanche
+
+[zrl=[baseurl]/help/hook/global_permissions]global_permissions[/zrl]
+ Called when the global permissions list is generated
+
+[zrl=[baseurl]/help/hook/home_content]home_content[/zrl]
+ Called from mod_home to replace the content of the home page
+
+[zrl=[baseurl]/help/hook/home_init]home_init[/zrl]
+ Called from the home page home_init() function
+
+[zrl=[baseurl]/help/hook/hostxrd]hostxrd[/zrl]
+ Called when generating .well-known/hosts-meta for "old webfinger" (used by Diaspora protocol)
+
+[zrl=[baseurl]/help/hook/html2bbcode]html2bbcode[/zrl]
+ Called when using the html2bbcode tranlsation
+
+[zrl=[baseurl]/help/hook/identity_basic_export]identity_basic_export[/zrl]
+ Called when exporting a channel's basic information for backup or transfer
+
+[zrl=[baseurl]/help/hook/import_author_xchan]import_author_xchan[/zrl]
+ Called when looking up an author of a post by xchan_hash to ensure they have an xchan record on our site
+
+[zrl=[baseurl]/help/hook/import_channel]import_channel[/zrl]
+ Called when importing a channel from a file or API source
+
+[zrl=[baseurl]/help/hook/import_directory_profile]import_directory_profile[/zrl]
+ Called when processing delivery of a profile structure from an external source (usually for directory storage)
+
+[zrl=[baseurl]/help/hook/import_xchan]import_xchan[/zrl]
+ Called when processing the result of zot_finger() to store the result
+
+[zrl=[baseurl]/help/hook/item_photo_menu]item_photo_menu[/zrl]
+ Called when generating the list of actions associated with a displayed conversation item
+
+[zrl=[baseurl]/help/hook/item_store]item_store[/zrl]
+ Called when item_store() stores a record of type item
+
+[zrl=[baseurl]/help/hook/item_store_update]item_store_update[/zrl]
+ Called when item_store_update() is called to update a stored item.
+
+[zrl=[baseurl]/help/hook/item_translate]item_translate[/zrl]
+ Called from item_store and item_store_update after the post language has been autodetected
+
+[zrl=[baseurl]/help/hook/jot_networks]jot_networks[/zrl]
+ Called to generate the list of additional post plugins to enable from the ACL form
+
+[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
+ Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
+
+[zrl=[baseurl]/help/hook/load_pdl]load_pdl[/zrl]
+ Called when we load a PDL file or description
+
+[zrl=[baseurl]/help/hook/local_dir_update]local_dir_update[/zrl]
+ Called when processing a directory update from a channel on the directory server
+
+[zrl=[baseurl]/help/hook/logged_in]logged_in[/zrl]
+ Called when authentication by any means has succeeeded
+
+[zrl=[baseurl]/help/hook/logging_out]logging_out[/zrl]
+ Called when logging out
+
+[zrl=[baseurl]/help/hook/login_hook]login_hook[/zrl]
+ Called when generating the login form
+
+[zrl=[baseurl]/help/hook/magic_auth]magic_auth[/zrl]
+ Called when processing a magic-auth sequence
+
+[zrl=[baseurl]/help/hook/magic_auth_openid_success]magic_auth_openid_success[/zrl]
+ Called when a magic-auth was successful due to openid credentials
+
+[zrl=[baseurl]/help/hook/magic_auth_success]magic_auth_success[/zrl]
+ Called when a magic-auth was successful
+
+[zrl=[baseurl]/help/hook/main_slider]main_slider[/zrl]
+ Called whne generating the affinity tool
+
+[zrl=[baseurl]/help/hook/marital_selector]marital_selector[/zrl]
+ Called when generating the list of choices for the 'marital status' profile dropdown (advanced profile)
+
+[zrl=[baseurl]/help/hook/marital_selector_min]marital_selector_min[/zrl]
+ Called when generating the list of choices for the 'marital status' profile dropdown (normal profile)
+
+[zrl=[baseurl]/help/hook/module_loaded]module_loaded[/zrl]
+ Called when a module has been successfully locate to server a URL request
+
+[zrl=[baseurl]/help/hook/mood_verbs]mood_verbs[/zrl]
+ Called when generating the list of moods
+
+[zrl=[baseurl]/help/hook/nav]nav[/zrl]
+ Called when generating the navigation bar
+
+[zrl=[baseurl]/help/hook/network_content_init]network_content_init[/zrl]
+ Called when loading cntent for the network page
+
+[zrl=[baseurl]/help/hook/network_ping]network_ping[/zrl]
+ Called during a ping request
+
+[zrl=[baseurl]/help/hook/network_tabs]network_tabs[/zrl]
+ Called when generating the list of tabs for the network page
+
+[zrl=[baseurl]/help/hook/network_to_name]network_to_name[/zrl]
+ Deprecated
+
+[zrl=[baseurl]/help/hook/notifier_end]notifier_end[/zrl]
+ Called when a delivery loop has completed
+
+[zrl=[baseurl]/help/hook/notifier_hub]notifier_hub[/zrl]
+ Called when a hub is delivered
+
+[zrl=[baseurl]/help/hook/notifier_normal]notifier_normal[/zrl]
+ Called when the notofoer is invoked for a 'normal' delivery
+
+[zrl=[baseurl]/help/hook/obj_verbs]obj_verbs[/zrl]
+ Called when creating the list of verbs available for profile "things".
+
+[zrl=[baseurl]/help/hook/oembed_probe]oembed_probe[/zrl]
+ Called when performing an oembed content lookup
+
+[zrl=[baseurl]/help/hook/page_content_top]page_content_top[/zrl]
+ Called when we generate a webpage (before calling the module content function)
+
+[zrl=[baseurl]/help/hook/page_end]page_end[/zrl]
+ Called after we have generated the page content
+
+[zrl=[baseurl]/help/hook/page_header]page_header[/zrl]
+ Called when generating the navigation bar
+
+[zrl=[baseurl]/help/hook/parse_atom]parse_atom[/zrl]
+ Called when parsing an atom/RSS feed item
+
+[zrl=[baseurl]/help/hook/parse_link]parse_link[/zrl]
+ Called when probing a URL to generate post content from it
+
+[zrl=[baseurl]/help/hook/pdl_selector]pdl_selector[/zrl]
+ Called when creating a layout selection in a form
+
+[zrl=[baseurl]/help/hook/perm_is_allowed]perm_is_allowed[/zrl]
+ Called during perm_is_allowed() to determine if a permission is allowed for this channel and observer
+
+[zrl=[baseurl]/help/hook/permissions_create]permissions_create[/zrl]
+ Called when an abook entry (connection) is created
+
+[zrl=[baseurl]/help/hook/permissions_update]permissions_update[/zrl]
+ Called when a permissions refresh is transmitted
+
+[zrl=[baseurl]/help/hook/personal_xrd]personal_xrd[/zrl]
+ Called when generating the personal XRD for "old webfinger" (Diaspora)
+
+[zrl=[baseurl]/help/hook/photo_post_end]photo_post_end[/zrl]
+ Called after uploading a photo
+
+[zrl=[baseurl]/help/hook/photo_upload_begin]photo_upload_begin[/zrl]
+ Called when attempting to upload a photo
+
+[zrl=[baseurl]/help/hook/photo_upload_end]photo_upload_end[/zrl]
+ Called when a photo upload has been processed
+
+[zrl=[baseurl]/help/hook/photo_upload_file]photo_upload_file[/zrl]
+ Called to generate alternate filenames for an upload
+
+[zrl=[baseurl]/help/hook/photo_upload_form]photo_upload_form[/zrl]
+ Called when generating a photo upload form
+
+[zrl=[baseurl]/help/hook/poke_verbs]poke_verbs[/zrl]
+ Called when generating the list of actions for "poke" module
+
+[zrl=[baseurl]/help/hook/post_local]post_local[/zrl]
+ Called when an item has been posted on this machine via mod/item.php (also via API)
+
+[zrl=[baseurl]/help/hook/post_local_end]post_local_end[/zrl]
+ Called after a local post operation has completed
+
+[zrl=[baseurl]/help/hook/post_local_start]post_local_start[/zrl]
+ Called when a local post operation is commencing
+
+[zrl=[baseurl]/help/hook/post_mail]post_mail[/zrl]
+ Called when a mail message has been composed
+
+[zrl=[baseurl]/help/hook/post_mail_end]post_mail_end[/zrl]
+ Called when a mail message has been delivered
+
+[zrl=[baseurl]/help/hook/post_remote]post_remote[/zrl]
+ Called when an activity arrives from another site
+
+[zrl=[baseurl]/help/hook/post_remote_end]post_remote_end[/zrl]
+ Called after processing a remote post
+
+[zrl=[baseurl]/help/hook/post_remote_update]post_remote_update[/zrl]
+ Called when processing a remote post that involved an edit or update
+
+[zrl=[baseurl]/help/hook/post_remote_update_end]post_remote_update_end[/zrl]
+ Called after processing a remote post that involved an edit or update
+
+[zrl=[baseurl]/help/hook/prepare_body]prepare_body[/zrl]
+ Called when generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/prepare_body_final]prepare_body_final[/zrl]
+ Called after generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/prepare_body_init]prepare_body_init[/zrl]
+ Called before generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/probe_well_known]probe_well_known[/zrl]
+ under construction
+
+[zrl=[baseurl]/help/hook/proc_run]proc_run[/zrl]
+ Called when invoking PHP sub processes
+
+[zrl=[baseurl]/help/hook/process_channel_sync_delivery]process_channel_sync_delivery[/zrl]
+ Called when accepting delivery of a 'sync packet' containing structure and table updates from a channel clone
+
+[zrl=[baseurl]/help/hook/profile_advanced]profile_advanced[/zrl]
+ Called when generating an advanced profile page
+
+[zrl=[baseurl]/help/hook/profile_edit]profile_edit[/zrl]
+ Called when editing a profile
+
+[zrl=[baseurl]/help/hook/profile_photo_content_end]profile_photo_content_end[/zrl]
+ Called when changing a profile photo
+
+[zrl=[baseurl]/help/hook/profile_post]profile_post[/zrl]
+ Called when posting an edited profile
+
+[zrl=[baseurl]/help/hook/profile_sidebar]profile_sidebar[/zrl]
+ Called when generating the 'channel sidebar' or mini-profile
+
+[zrl=[baseurl]/help/hook/profile_sidebar_enter]profile_sidebar_enter[/zrl]
+ Called before generating the 'channel sidebar' or mini-profile
+
+[zrl=[baseurl]/help/hook/profile_tabs]profile_tabs[/zrl]
+ Called when generating the tabs for channel related pages (channel,profile,files,etc.)
+
+[zrl=[baseurl]/help/hook/register_account]register_account[/zrl]
+ Called when an account has been created
+
+[zrl=[baseurl]/help/hook/render_location]render_location[/zrl]
+ Called to generate an ineractive inline map
+
+[zrl=[baseurl]/help/hook/replace_macros]replace_macros[/zrl]
+ Called before invoking the template processor
+
+[zrl=[baseurl]/help/hook/reverse_magic_auth]reverse_magic_auth[/zrl]
+ Called before invoking reverse magic auth to send you to your own site to authenticate on this site
+
+[zrl=[baseurl]/help/hook/settings_form]settings_form[/zrl]
+ Called when generating the channel settings form
+
+[zrl=[baseurl]/help/hook/settings_post]settings_post[/zrl]
+ Called when posting from the channel settings form
+
+[zrl=[baseurl]/help/hook/sexpref_selector]sexpref_selector[/zrl]
+ Called when generating a dropdown of sexual preference (advanced profile)
+
+[zrl=[baseurl]/help/hook/sexpref_selector_min]sexpref_selector_min[/zrl]
+ Called when generating a dropdown of sexual preference (normal profile)
+
+[zrl=[baseurl]/help/hook/smilie]smilie[/zrl]
+ Called when translating emoticons
+
+[zrl=[baseurl]/help/hook/tagged]tagged[/zrl]
+ Called when a delivery is processed which results in you being tagged
+
+[zrl=[baseurl]/help/hook/validate_channelname]validate_channelname[/zrl]
+ Used to validate the names used by a channel
+
+[zrl=[baseurl]/help/hook/webfinger]webfinger[/zrl]
+ Called when visiting the webfinger (RFC7033) service
+
+[zrl=[baseurl]/help/hook/well_known]well_known[/zrl]
+ Called when accessing the '.well-known' special site addresses
+
+[zrl=[baseurl]/help/hook/zid]zid[/zrl]
+ Called when adding the observer's zid to a URL
+
+[zrl=[baseurl]/help/hook/zid_init]zid_init[/zrl]
+ Called when authenticating a visitor who has used zid
+
+[zrl=[baseurl]/help/hook/zot_finger]zot_finger[/zrl]
+ Called when a zot-info packet has been requested (this is our webfinger discovery mechanism)
diff --git a/doc/hooks.html b/doc/hooks.html
new file mode 100644
index 000000000..c05de58ef
--- /dev/null
+++ b/doc/hooks.html
@@ -0,0 +1 @@
+<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/identity.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/identity.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/identity.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
diff --git a/doc/html/index.php b/doc/html/index.php
index 4ef28aada..2e1b4277c 100644
--- a/doc/html/index.php
+++ b/doc/html/index.php
@@ -1,17 +1,11 @@
<!DOCTYPE html>
<html>
<head>
-<<<<<<< HEAD
- <title>Hubzilla Doxygen API Documentation</title>
-</head>
-<body>
-<h1>Hubzilla Doxygen API Documentation not rendered</h1>
-=======
<title>$Projectname Doxygen API Documentation</title>
</head>
<body>
<h1>$Projectname Doxygen API Documentation not rendered</h1>
->>>>>>> f866a42a42b9e12756353f5bb39a0f31a64bb26a
+
To get the Doxygen API Documentation you must render it with the program <a href="http://www.doxygen.org">Doxygen</a> (included in most distributions).
<pre>
$ doxygen util/Doxyfile
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb
index f66797d8b..57f4b2e01 100644
--- a/doc/to_do_code.bb
+++ b/doc/to_do_code.bb
@@ -5,8 +5,8 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]Documentation - see Red Documentation Project To-Do List[/li]
[li]Include TOS link in registration/verification email[/li]
[li]Auto preview posts/comments (configurable timer kicks in the preview if not 0)[/li]
+[li]SAML 2.0 and OpenID Connect provider functionality[/li]
[li]Create bug tracker module[/li]
-[li]delivery tracking/reporting[/li]
[li]Filing posts - provide a dropdown menu integrated with the 'post actions menu'[/li]
[li]integrate Mozilla Persona (possibly via plugin) https://github.com/mozilla/id-specs/blob/prod/browserid/index.md and become an idP[/li]
[li]translation plugins - moses or apertium[/li]
@@ -15,9 +15,9 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]Finish the anti-spam bayesian engine[/li]
[li]implement an email permission denied bounce message from the sys channel[/li]
[li]provide a way for xchans with a certain network type to upgrade (unknown to rss, rss to statusnet, friendica-over-diaspora to friendica, for instance) based on new knowledge and/or redmatrix ability[/li]
-[li](done - HZ) If DAV folders exist, add an option to the Settings page to set a default folder for attachment uploads.[/li]
[li]Integrate the &quot;open site&quot; list with the register page[/li]
[li]Support comments and member notes on documentation pages (to achieve an effect similar to php.net)[/li]
+[li]Support comments on webpages[/li]
[li]implement oembed provider interface[/li]
[li]refactor the oembed client interface so that we can safely sandbox remote content[/li]
[li]Many modern social apps now have both a profile photo and a "cover photo". Add support for this. [/li]
@@ -26,21 +26,17 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]restricted access OAuth clients[/li]
[li](Advanced) create a UI for building Comanche pages[/li]
[li](less advanced) create a way to preview Comanche results on a preview page while editing on another page[/li]
-[li](done - HZ) Extend WebDAV to provide desktop access to photo albums[/li]
[li]External post connectors - create standard interface[/li]
[li]External post connectors, add popular services[/li]
[li](in progress Habeas Codice) service classes - provide a pluggable subscription payment gateway for premium accounts[/li]
[li](in progress Habeas Codice) service classes - account overview page showing resources consumed by channel. With special consideration this page can also be accessed at a meta level by the site admin to drill down on problematic accounts/channels.[/li]
[li]implement CalDAV/CardDAV sync[/li]
[li]Uploads - integrate #^[url=https://github.com/blueimp/jQuery-File-Upload]https://github.com/blueimp/jQuery-File-Upload[/url][/li]
-[li]Import/export - include events, things, etc.[/li]
[li]API extensions, for Twitter API - search, friending, threading. For Red API, lots of stuff[/li]
-[li]OAuth permission extensions[/li]
[li]Import channel from Diaspora/Friendica (Diaspora partially done)[/li]
[li]MediaGoblin photo "crosspost" connector[/li]
[li]Create management page/UI for extensible profile fields[/li]
[li]Create interface to include/exclude and re-order standard profile fields[/li]
-[li]Provide a mechanism to share page design elements in posts (just like apps) (done)[/li]
[li]App taxonomy[/li]
[li]Customisable App collection pages[/li]
[li]replace the tinymce visual editor and/or make the visual editor pluggable and responsive to different output formats. We probably want library/bbedit for bbcode. This needs a fair bit of work to catch up with our &quot;enhanced bbcode&quot;, but start with images, links, bold and highlight and work from there.[/li]