aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2018-07-25 10:19:19 +0200
committerMario Vavti <mario@mariovavti.com>2018-07-25 10:19:19 +0200
commit1b1d11dcf1091158232e98abad966d4900e2ccc9 (patch)
tree380d5e04c73391089bf3d658ea4b27eecffa4916 /doc
parentb655d04b3474893ee3dea99b77f2e7dd764729a0 (diff)
parent35200e5f1b10cdd18af8f0ea646996e438b97011 (diff)
downloadvolse-hubzilla-1b1d11dcf1091158232e98abad966d4900e2ccc9.tar.gz
volse-hubzilla-1b1d11dcf1091158232e98abad966d4900e2ccc9.tar.bz2
volse-hubzilla-1b1d11dcf1091158232e98abad966d4900e2ccc9.zip
Merge branch '3.6RC'
Diffstat (limited to 'doc')
-rw-r--r--doc/Hubzilla_on_OpenShift.bb4
-rw-r--r--doc/README.md2
-rw-r--r--doc/TermsOfService.md6
-rw-r--r--doc/about/about.bb2
-rw-r--r--doc/addons.bb2
-rw-r--r--doc/addons_gnusocial.bb2
-rw-r--r--doc/admin/administrator_guide.md22
-rw-r--r--doc/api/api_functions.bb266
-rw-r--r--doc/bugs.bb2
-rw-r--r--doc/ca/general.bb4
-rw-r--r--doc/ca/profiles.bb74
-rw-r--r--doc/ca/what_is_zot.bb2
-rw-r--r--doc/campaign.bb474
-rw-r--r--doc/checking_account_quota_usage.bb40
-rw-r--r--doc/comanche.bb522
-rw-r--r--doc/context/en/admin/addons/assets/addon_repo_gui_1.png (renamed from doc/context/en/admin/plugins/assets/addon_repo_gui_1.png)bin16983 -> 16983 bytes
-rw-r--r--doc/context/en/admin/addons/help.html (renamed from doc/context/en/admin/plugins/help.html)10
-rw-r--r--doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png (renamed from doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png)bin16983 -> 16983 bytes
-rw-r--r--doc/context/es-es/admin/addons/help.html (renamed from doc/context/es-es/admin/plugins/help.html)12
-rw-r--r--doc/de/general.bb4
-rw-r--r--doc/dev_beginner.bb838
-rw-r--r--doc/developer/unorganized.md4
-rw-r--r--doc/developer_function_primer.bb86
l---------doc/es2
-rw-r--r--doc/es-es/about/about.bb65
-rw-r--r--doc/es-es/about/project.bb25
-rw-r--r--doc/es-es/git_for_non_developers.bb156
-rw-r--r--doc/es-es/main.bb1
-rw-r--r--doc/external-resource-links.bb42
-rw-r--r--doc/extra_features.bb196
-rw-r--r--doc/feature/additional/access.md6
-rw-r--r--doc/fr/TermsOfService.md10
-rw-r--r--doc/fr/about/about.bb2
-rw-r--r--doc/fr/gdpr1.md77
-rw-r--r--doc/gdpr1.md114
-rw-r--r--doc/general.bb4
-rw-r--r--doc/git_for_non_developers.bb142
-rw-r--r--doc/intro_for_developers.bb226
-rw-r--r--doc/member/bbcode.html10
-rw-r--r--doc/member/member_guide.bb18
-rw-r--r--doc/plugins.bb624
-rw-r--r--doc/problems-following-an-update.bb76
-rw-r--r--doc/red2pi.bb684
-rw-r--r--doc/roadmap.bb45
-rw-r--r--doc/roadmap_hz3.md27
-rw-r--r--doc/roadmapv4.bb29
-rw-r--r--doc/schema_development.bb156
-rw-r--r--doc/sv/main.bb160
48 files changed, 2705 insertions, 2570 deletions
diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/Hubzilla_on_OpenShift.bb
index bdc8bf9bf..7bdd70955 100644
--- a/doc/Hubzilla_on_OpenShift.bb
+++ b/doc/Hubzilla_on_OpenShift.bb
@@ -1,11 +1,11 @@
[b]$Projectname 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 with plugins and extra themes.
+You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://framagit.org/hubzilla/core.git]https://framagit.org/hubzilla/core.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift with plugins and extra themes.
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]rhc app-create your_app_name php-5.4 mysql-5.5 cron phpmyadmin --namespace your_domain --from-code https://framagit.org/hubzilla/core.git -l your@email.address -p your_account_password
[/code]
Make a note of the database username and password OpenShift creates for your instance, and use these at [url=https://your_app_name-your_domain.rhcloud.com/]https://your_app_name-your_domain.rhcloud.com/[/url] to complete the setup. You MUST change server address from 127.0.0.1 to localhost.
diff --git a/doc/README.md b/doc/README.md
index 54f80bebe..8de107877 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -4,7 +4,7 @@ Hubzilla - Community Server
===========================
<p align="center" markdown="1">
-<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
+<em><a href="https://framagit.org/hubzilla/core/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
</p>
diff --git a/doc/TermsOfService.md b/doc/TermsOfService.md
index 97e9881aa..1e085559e 100644
--- a/doc/TermsOfService.md
+++ b/doc/TermsOfService.md
@@ -1,3 +1,9 @@
+Privacy Policy
+==============
+
+#include doc/gdpr1.md;
+
+
Terms of Service
================
diff --git a/doc/about/about.bb b/doc/about/about.bb
index b927e80c0..e909f54cd 100644
--- a/doc/about/about.bb
+++ b/doc/about/about.bb
@@ -13,7 +13,7 @@ From the practical perspective of hub members who use the software, $Projectname
While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! In typical web apps, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. $Projectname solves this problem with an advanced system of [i]remote authentication[/i] that validates the identity of visitors by employing techniques that include public key cryptography.
[h3]Software Stack[/h3]
-The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt]requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language[/url]. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools.
+The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and [url=https://framagit.org/hubzilla/core/blob/master/install/INSTALL.txt]requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language[/url]. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools.
[h3]Glossary[/h3]
[dl terms="b"]
diff --git a/doc/addons.bb b/doc/addons.bb
index e6841d3d0..4bfa7a9fd 100644
--- a/doc/addons.bb
+++ b/doc/addons.bb
@@ -106,7 +106,7 @@ For these reasons we [b]strongly recommend[/b] that you do NOT install addons fr
We also recognise that some developers prefer working on their own and do not wish their code to be mingled with the project repository for a variety of reasons. These developers can ease troubleshooting and debugging by providing a README file in their respective code repository outlining the process for submitting patches and bug fixes. It is also recommended that these projects provide both a 'dev' (development) and 'master' (production) branch which tracks the current project branches of those names. This is because dev and master are often not compatible from the viewpoint of library interfaces. It is also highly recommended that your repository versions are tagged and moved forward within 24 hours of project releases. This is a major inconvenience for everybdy involved, and can present downtime for production sites while this process is being carried out; which is one more reason why we [b]strongly recommend[/b] that addons be submitted to the project addon repository and that you do NOT install such third-party addons.
-[url=https://github.com/redmatrix/hubzilla-addons]https://github.com/redmatrix/hubzilla-addons[/url] Main project addon repository
+[url=https://framagit.org/hubzilla/addons]https://framagit.org/hubzilla/addons[/url] Main project addon repository
[url=https://github.com/23n/red-addons]https://github.com/23n/red-addons[/url] Oliver's repository (mayan_places and flip)
diff --git a/doc/addons_gnusocial.bb b/doc/addons_gnusocial.bb
index d9aed9ac5..fbb387476 100644
--- a/doc/addons_gnusocial.bb
+++ b/doc/addons_gnusocial.bb
@@ -10,7 +10,7 @@ Next, click the link to Register a new application. That brings up the new appli
Icon. I uploaded $Projectname icon located at this link, after saving it to my computer:
-https://github.com/redmatrix/hubzilla/blob/master/images/rm-32.png
+https://framagit.org/hubzilla/core/blob/master/images/rm-32.png
Name. Give the application an appropriate name. I called mine hubzilla. You might prefer r2g.
diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md
index 939dc18a7..5f1d40428 100644
--- a/doc/admin/administrator_guide.md
+++ b/doc/admin/administrator_guide.md
@@ -19,7 +19,7 @@ we welcome patches if you manage to get it working.
### Where to find more help
If you encounter problems or have issues not addressed in this documentation,
please let us know via the [Github issue
-tracker](https://github.com/redmatrix/hubzilla/issues). Please be as clear as you
+tracker](https://framagit.org/hubzilla/core/issues). Please be as clear as you
can about your operating environment and provide as much detail as possible
about any error messages you may see, so that we can prevent it from happening
in the future. Due to the large variety of operating systems and PHP platforms
@@ -120,7 +120,7 @@ repository rather than to use a packaged tar or zip file. This makes the
software much easier to update. The Linux command to clone the repository
into a directory "mywebsite" would be:
- git clone https://github.com/redmatrix/hubzilla.git mywebsite
+ git clone https://framagit.org/hubzilla/core.git mywebsite
and then you can pick up the latest changes at any time with:
@@ -153,7 +153,7 @@ web-based administrative tools to function:
Navigate to your website. Then you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames::
cd mywebsite
- util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
+ util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons
##### Updating
For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository::
@@ -185,7 +185,7 @@ The installation script was originally designed for a small hardware server behi
1. `apt-get install git`
1. `mkdir -p /var/www/html`
1. `cd /var/www/html`
-1. `git clone https://github.com/redmatrix/hubzilla.git .`
+1. `git clone https://framagit.org/hubzilla/core.git .`
1. `nano .homeinstall/hubzilla-config.txt`
1. `cd .homeinstall/`
1. `./hubzilla-setup.sh`
@@ -331,16 +331,6 @@ empty:
util/config system directory_server ""
-### Upgrading from RedMatrix to $Projectname
-
-#### How to migrate an individual channel from RedMatrix to $Projectname
-
-1. Clone the channel by opening an account on a $Projectname hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings.
-1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary.
-1. Import the JSON data files sequentially in chronological order into the $Projectname clone using the new.hub/import_items tool.
-1. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address.
-1. After successful import (check!) delete your channel on the old RedMatrix Server.
-1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid.
### Administration
@@ -396,7 +386,7 @@ To immediately clear out all the extra logging stuff you added. Use the informa
##### Rotating log files
-1. Enable the **logrot** addon in the official [hubzilla-addons](https://github.com/redmatrix/hubzilla-addons) repo
+1. Enable the **logrot** addon in the official [hubzilla-addons](https://framagit.org/hubzilla/addons) repo
1. Create a directory in your web root called `log` with webserver write permissions
1. Go to the **logrot** admin settings and enter this folder name as well as the max size and number of retained log files.
@@ -407,6 +397,6 @@ When reporting issues, please try to provide as much detail as may be necessary
We encourage you to try to the best of your abilities to use these logs combined with the source code in your possession to troubleshoot issues and find their cause. The community is often able to help, but only you have access to your site logfiles and it is considered a security risk to share them.
-If a code issue has been uncovered, please report it on the project bugtracker (https://github.com/redmatrix/hubzilla/issues). Again provide as much detail as possible to avoid us going back and forth asking questions about your configuration or how to duplicate the problem, so that we can get right to the problem and figure out what to do about it. You are also welcome to offer your own solutions and submit patches. In fact we encourage this as we are all volunteers and have little spare time available. The more people that help, the easier the workload for everybody. It's OK if your solution isn't perfect. Every little bit helps and perhaps we can improve on it.
+If a code issue has been uncovered, please report it on the project bugtracker (https://framagit.org/hubzilla/core/issues). Again provide as much detail as possible to avoid us going back and forth asking questions about your configuration or how to duplicate the problem, so that we can get right to the problem and figure out what to do about it. You are also welcome to offer your own solutions and submit patches. In fact we encourage this as we are all volunteers and have little spare time available. The more people that help, the easier the workload for everybody. It's OK if your solution isn't perfect. Every little bit helps and perhaps we can improve on it.
diff --git a/doc/api/api_functions.bb b/doc/api/api_functions.bb
index e6cde3dc6..fe7cb11ba 100644
--- a/doc/api/api_functions.bb
+++ b/doc/api/api_functions.bb
@@ -1,133 +1,133 @@
-[b]Red Twitter API[/b]
-
-The &quot;basic&quot; Red web API is based on the Twitter API, as this provides instant compatibility with a huge number of third-party clients and applications without requiring any code changes on their part. It is also a super-set of the StatusNet version of the Twitter API, as this also has existing wide support.
-
-Red has a lot more capability that isn't exposed in the Twitter interfaces or where we are forced to &quot;dumb-down&quot; the API functions to work with the primitive Twitter/StatusNet communications and privacy model. So we plan to extend the Twitter API in ways that will allow Red-specific clients to make full use of Red features without being crippled.
-
-A dedicated Red API is also being developed to work with native data structures and permissions and which do not require translating to different privacy and permission models and storage formats. This will be described in other documents. The prefix for all of the native endpoints is 'api/red'.
-
-Red provides multiple channels accesible via the same login account. With Red, any API function which requires authentication will accept a parameter &amp;channel={channel_nickname} - and will select that channel and make it current before executing the API command. By default, the default channel associated with an account is selected.
-
-Red also provides an extended permission model. In the absence of any Red specific API calls to set permissions, they will be set to the default permissions settings which are associated with the current channel.
-
-Red will probably never be able to support the Twitter 'api/friendships' functions fully because Red is not a social network and has no concept of &quot;friendships&quot; - it only recognises permissions to do stuff (or not do stuff as the case may be).
-
-Legend: T= Twitter, S= StatusNet, F= Friendica, R= Red, ()=Not yet working, J= JSON only (XML formats deprecated)
-
-Twitter API compatible functions:
-
- api/account/verify_credentials T,S,F,R
- api/statuses/update T,S,F,R
- api/users/show T,S,F,R
- api/statuses/home_timeline T,S,F,R
- api/statuses/friends_timeline T,S,F,R
- api/statuses/public_timeline T,S,F,R
- api/statuses/show T,S,F,R
- api/statuses/retweet T,S,F,R
- api/statuses/destroy T,S,F,(R)
- api/statuses/mentions T,S,F,(R)
- api/statuses/replies T,S,F,(R)
- api/statuses/user_timeline T,S,F,(R)
- api/favorites T,S,F,R
- api/account/rate_limit_status T,S,F,R
- api/help/test T,S,F,R
- api/statuses/friends T,S,F,R
- api/statuses/followers T,S,F,R
- api/friends/ids T,S,F,R
- api/followers/ids T,S,F,R
- api/direct_messages/new T,S,F,R
- api/direct_messages/conversation T,S,F,R
- api/direct_messages/all T,S,F,R
- api/direct_messages/sent T,S,F,R
- api/direct_messages T,S,F,R
- api/oauth/request_token T,S,F,R
- api/oauth/access_token T,S,F,R
- api/favorites T,S,R
- api/favorites/create T,S,R
- api/favorites/destroy T,S,R
-
-Twitter API functions supported by StatusNet but not currently by Friendica or Red
-
- api/statuses/retweets_of_me T,S
- api/friendships/create T,S
- api/friendships/destroy T,S
- api/friendships/exists T,S
- api/friendships/show T,S
- api/account/update_location T,S
- api/account/update_profile_background_image T,S
- api/account/update_profile_image T,S
- api/blocks/create T,S
- api/blocks/destroy T,S
-
-Twitter API functions not currently supported by StatusNet
-
- api/statuses/retweeted_to_me T
- api/statuses/retweeted_by_me T
- api/direct_messages/destroy T
- api/account/end_session T,(R)
- api/account/update_delivery_device T
- api/notifications/follow T
- api/notifications/leave T
- api/blocks/exists T
- api/blocks/blocking T
- api/lists T
-
-Statusnet compatible extensions to the Twitter API supported in both Friendica and Red
-
- api/statusnet/version S,F,R
- api/statusnet/config S,F,R
-
-Friendica API extensions to the Twitter API supported in both Friendica and Red
-
- api/statuses/mediap F,R
-
-Red specific API extensions to the Twitter API not supported in Friendica
-
- api/account/logout R
- api/export/basic R,J
- api/friendica/config R
- api/red/config R
- api/friendica/version R
-
- api/red/version R
-
- api/red/channel/export/basic R,J
- api/red/channel/stream R,J (currently post only)
- api/red/albums R,J
- api/red/photos R,J (option album=xxxx)
-
-Red proposed API extensions to the Twitter API
-
- api/statuses/edit (R),J
- api/statuses/permissions (R),J
- api/statuses/permissions/update (R),J
- api/statuses/ids (R),J # search for existing message_id before importing a foreign post
- api/files/show (R),J
- api/files/destroy (R),J
- api/files/update (R),J
- api/files/permissions (R),J
- api/files/permissions/update (R),J
- api/pages/show (R),J
- api/pages/destroy (R),J
- api/pages/update (R),J
- api/pages/permissions (R),J
- api/pages/permissions/update (R),J
- api/events/show (R),J
- api/events/update (R),J
- api/events/permissions (R),J
- api/events/permissions/update (R),J
- api/events/destroy (R),J
- api/photos/show (R),J
- api/photos/update (R),J
- api/photos/permissions (R),J
- api/photos/permissions/update (R),J
- api/albums/destroy (R),J
- api/albums/show (R),J
- api/albums/update (R),J
- api/albums/permissions (R),J
- api/albums/permissions/update (R),J
- api/albums/destroy (R),J
- api/friends/permissions (R),J
-
-#include doc/macros/main_footer.bb;
-
+[b]Red Twitter API[/b]
+
+The &quot;basic&quot; Red web API is based on the Twitter API, as this provides instant compatibility with a huge number of third-party clients and applications without requiring any code changes on their part. It is also a super-set of the StatusNet version of the Twitter API, as this also has existing wide support.
+
+Red has a lot more capability that isn't exposed in the Twitter interfaces or where we are forced to &quot;dumb-down&quot; the API functions to work with the primitive Twitter/StatusNet communications and privacy model. So we plan to extend the Twitter API in ways that will allow Red-specific clients to make full use of Red features without being crippled.
+
+A dedicated Red API is also being developed to work with native data structures and permissions and which do not require translating to different privacy and permission models and storage formats. This will be described in other documents. The prefix for all of the native endpoints is 'api/red'.
+
+Red provides multiple channels accesible via the same login account. With Red, any API function which requires authentication will accept a parameter &amp;channel={channel_nickname} - and will select that channel and make it current before executing the API command. By default, the default channel associated with an account is selected.
+
+Red also provides an extended permission model. In the absence of any Red specific API calls to set permissions, they will be set to the default permissions settings which are associated with the current channel.
+
+Red will probably never be able to support the Twitter 'api/friendships' functions fully because Red is not a social network and has no concept of &quot;friendships&quot; - it only recognises permissions to do stuff (or not do stuff as the case may be).
+
+Legend: T= Twitter, S= StatusNet, F= Friendica, R= Red, ()=Not yet working, J= JSON only (XML formats deprecated)
+
+Twitter API compatible functions:
+
+ api/account/verify_credentials T,S,F,R
+ api/statuses/update T,S,F,R
+ api/users/show T,S,F,R
+ api/statuses/home_timeline T,S,F,R
+ api/statuses/friends_timeline T,S,F,R
+ api/statuses/public_timeline T,S,F,R
+ api/statuses/show T,S,F,R
+ api/statuses/retweet T,S,F,R
+ api/statuses/destroy T,S,F,(R)
+ api/statuses/mentions T,S,F,(R)
+ api/statuses/replies T,S,F,(R)
+ api/statuses/user_timeline T,S,F,(R)
+ api/favorites T,S,F,R
+ api/account/rate_limit_status T,S,F,R
+ api/help/test T,S,F,R
+ api/statuses/friends T,S,F,R
+ api/statuses/followers T,S,F,R
+ api/friends/ids T,S,F,R
+ api/followers/ids T,S,F,R
+ api/direct_messages/new T,S,F,R
+ api/direct_messages/conversation T,S,F,R
+ api/direct_messages/all T,S,F,R
+ api/direct_messages/sent T,S,F,R
+ api/direct_messages T,S,F,R
+ api/oauth/request_token T,S,F,R
+ api/oauth/access_token T,S,F,R
+ api/favorites T,S,R
+ api/favorites/create T,S,R
+ api/favorites/destroy T,S,R
+
+Twitter API functions supported by StatusNet but not currently by Friendica or Red
+
+ api/statuses/retweets_of_me T,S
+ api/friendships/create T,S
+ api/friendships/destroy T,S
+ api/friendships/exists T,S
+ api/friendships/show T,S
+ api/account/update_location T,S
+ api/account/update_profile_background_image T,S
+ api/account/update_profile_image T,S
+ api/blocks/create T,S
+ api/blocks/destroy T,S
+
+Twitter API functions not currently supported by StatusNet
+
+ api/statuses/retweeted_to_me T
+ api/statuses/retweeted_by_me T
+ api/direct_messages/destroy T
+ api/account/end_session T,(R)
+ api/account/update_delivery_device T
+ api/notifications/follow T
+ api/notifications/leave T
+ api/blocks/exists T
+ api/blocks/blocking T
+ api/lists T
+
+Statusnet compatible extensions to the Twitter API supported in both Friendica and Red
+
+ api/statusnet/version S,F,R
+ api/statusnet/config S,F,R
+
+Friendica API extensions to the Twitter API supported in both Friendica and Red
+
+ api/statuses/mediap F,R
+
+Red specific API extensions to the Twitter API not supported in Friendica
+
+ api/account/logout R
+ api/export/basic R,J
+ api/friendica/config R
+ api/red/config R
+ api/friendica/version R
+
+ api/red/version R
+
+ api/red/channel/export/basic R,J
+ api/red/channel/stream R,J (currently post only)
+ api/red/albums R,J
+ api/red/photos R,J (option album=xxxx)
+
+Red proposed API extensions to the Twitter API
+
+ api/statuses/edit (R),J
+ api/statuses/permissions (R),J
+ api/statuses/permissions/update (R),J
+ api/statuses/ids (R),J # search for existing message_id before importing a foreign post
+ api/files/show (R),J
+ api/files/destroy (R),J
+ api/files/update (R),J
+ api/files/permissions (R),J
+ api/files/permissions/update (R),J
+ api/pages/show (R),J
+ api/pages/destroy (R),J
+ api/pages/update (R),J
+ api/pages/permissions (R),J
+ api/pages/permissions/update (R),J
+ api/events/show (R),J
+ api/events/update (R),J
+ api/events/permissions (R),J
+ api/events/permissions/update (R),J
+ api/events/destroy (R),J
+ api/photos/show (R),J
+ api/photos/update (R),J
+ api/photos/permissions (R),J
+ api/photos/permissions/update (R),J
+ api/albums/destroy (R),J
+ api/albums/show (R),J
+ api/albums/update (R),J
+ api/albums/permissions (R),J
+ api/albums/permissions/update (R),J
+ api/albums/destroy (R),J
+ api/friends/permissions (R),J
+
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/bugs.bb b/doc/bugs.bb
index cc1ea3a20..f6e14b659 100644
--- a/doc/bugs.bb
+++ b/doc/bugs.bb
@@ -23,7 +23,7 @@ If you get a blank white screen when doing something, this is almost always a co
At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. At this time, the 'Hubzilla Support' channel (support@gravizot.de) is the recommended forum for discussing bugs.
-If community members with software engineering training/expertise can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues . Create an issue here and provide all the same information that you provided online. Don't leave out anything.
+If community members with software engineering training/expertise can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://framagit.org/hubzilla/core/issues . Create an issue here and provide all the same information that you provided online. Don't leave out anything.
Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works.
diff --git a/doc/ca/general.bb b/doc/ca/general.bb
index 682b1ff52..fb54f0abc 100644
--- a/doc/ca/general.bb
+++ b/doc/ca/general.bb
@@ -5,9 +5,9 @@
[h3]Recursos Externs[/h3]
[zrl=[baseurl]/help/external-resource-links]Enllaços a Recursos Externs[/zrl]
-[url=https://github.com/redmatrix/hubzilla]Lloc Web Principal[/url]
+[url=https://framagit.org/hubzilla/core/]Lloc Web Principal[/url]
-[url=https://github.com/redmatrix/hubzilla-addons]Complements del Lloc Web[/url]
+[url=https://framagit.org/hubzilla/addons]Complements del Lloc Web[/url]
[url=[baseurl]/help/credits]Credits en $Projectname[/url]
diff --git a/doc/ca/profiles.bb b/doc/ca/profiles.bb
index 513bf5fed..5aa04e706 100644
--- a/doc/ca/profiles.bb
+++ b/doc/ca/profiles.bb
@@ -1,37 +1,37 @@
-[b]Profiles[/b]
-
-$Projectname has unlimited profiles. You may use different profiles to show different &quot;sides of yourself&quot; to different audiences. This is different to having different channels. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded &quot;sides&quot; of each channel. For example, your default public profile might say &quot;Hello, I'm Fred, and I like laughing&quot;. You may show your close friends a profile that adds &quot;and I also enjoy dwarf tossing&quot;.
-
-You always have a profile known as your &quot;default&quot; or &quot;public&quot; profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile.
-
-That said, if you want other friends to be able to find you, it helps to have the following information in your public profile...
-
-[ul][*]Your real name or at least a nickname everybody knows
-[*]A photo of you
-[*]Your location on the planet, at least to a country level.[/ul]
-
-In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some &quot;Keywords&quot; to your profile. Such as &quot;music, linux, photography&quot; or whatever. You can add as many keywords as you like.
-
-To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings &gt; Additional Features[/zrl] and enable &quot;Multiple Profiles&quot; there, otherwise you won't have the ability to use more than just your default profile.
-
-Then select &quot;Edit Profiles&quot; from the menu of your $Projectname site. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a &quot;clone&quot; of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose &quot;Clone this profile&quot; there.
-
-In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on &quot;Edit visibility&quot; next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile.
-
-Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile.
-
-There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the &quot;Settings&quot; page.
-
-If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished.
-
-[b]Keywords and Directory Search[/b]
-
-On the directory page, you may search for people with published profiles. Currently, only the name field and the keywords are searched. You may also include such keywords in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page.
-
-On your Connnections page and in the directory there is a link to &quot;Suggestions&quot; or &quot;Channel Suggestions&quot;, respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance.
-
-See Also
-
-[zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl]
-
-#include doc/macros/main_footer.bb;
+[b]Profiles[/b]
+
+$Projectname has unlimited profiles. You may use different profiles to show different &quot;sides of yourself&quot; to different audiences. This is different to having different channels. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded &quot;sides&quot; of each channel. For example, your default public profile might say &quot;Hello, I'm Fred, and I like laughing&quot;. You may show your close friends a profile that adds &quot;and I also enjoy dwarf tossing&quot;.
+
+You always have a profile known as your &quot;default&quot; or &quot;public&quot; profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile.
+
+That said, if you want other friends to be able to find you, it helps to have the following information in your public profile...
+
+[ul][*]Your real name or at least a nickname everybody knows
+[*]A photo of you
+[*]Your location on the planet, at least to a country level.[/ul]
+
+In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some &quot;Keywords&quot; to your profile. Such as &quot;music, linux, photography&quot; or whatever. You can add as many keywords as you like.
+
+To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings &gt; Additional Features[/zrl] and enable &quot;Multiple Profiles&quot; there, otherwise you won't have the ability to use more than just your default profile.
+
+Then select &quot;Edit Profiles&quot; from the menu of your $Projectname site. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a &quot;clone&quot; of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose &quot;Clone this profile&quot; there.
+
+In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on &quot;Edit visibility&quot; next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile.
+
+Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile.
+
+There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the &quot;Settings&quot; page.
+
+If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished.
+
+[b]Keywords and Directory Search[/b]
+
+On the directory page, you may search for people with published profiles. Currently, only the name field and the keywords are searched. You may also include such keywords in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page.
+
+On your Connnections page and in the directory there is a link to &quot;Suggestions&quot; or &quot;Channel Suggestions&quot;, respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance.
+
+See Also
+
+[zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/ca/what_is_zot.bb b/doc/ca/what_is_zot.bb
index df1f15921..83d9614a3 100644
--- a/doc/ca/what_is_zot.bb
+++ b/doc/ca/what_is_zot.bb
@@ -55,7 +55,7 @@ Per més detalla, informació tècnica sobre Zot, clica sobre algún dels següe
- [url=https://github.com/friendica/red/wiki/zot]Especificació pel desenvolupament de Zot (en anglès)[/url]
- - [url=https://github.com/redmatrix/hubzilla/blob/master/include/zot.php]Referència per la implementació de Zot en PHP (en anglès)[/url]
+ - [url=https://framagit.org/hubzilla/core/blob/master/include/zot.php]Referència per la implementació de Zot en PHP (en anglès)[/url]
#include doc/macros/main_footer.bb;
diff --git a/doc/campaign.bb b/doc/campaign.bb
index 750412ba3..dddc614f9 100644
--- a/doc/campaign.bb
+++ b/doc/campaign.bb
@@ -1,237 +1,237 @@
-[b]Initial Indiegg pitch[/b]
-
-[b][color= grey][size=20]What have we done, and what we hope to achieve[/size][/color][/b]
-
-[b][color= grey][size=18]Single-click sign on, nomadic identity, censorship-resistance, privacy, self-hosting[/size][/color][/b]
-
-We started $Projectname project by asking ourselves a few questions:
-
-- Imagine if it was possible to just access the content of different web sites, without the need to enter usernames and passwords for every site. Such a feature would permit Single-Click user identification: the ability to access sites simply by clicking on links to remote sites.
-Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.
-
-We liked this idea and went ahead with coding it immediately. Today, single-click sign is in alpha state. It needs more love, which means a solid three months of full-time development efforts.
-
-- Think of your Facebook, Twitter, WordPress, or any other website where you currently have an account. Now imagine being able to clone your account, to make an exact duplicate of it (with all of your friends, posts and settings), then export your cloned account into another server that is part of this communication network. After you're done, both of your accounts are synced from the time they were cloned. It doesn't matter where you log in (at your original location, or where you imported your clone). You see the same content, the same friends, posts, and account settings.
-At that point, it is more appropriate to call your account an identity that is nomadic (it is not tied to one home, unless you choose to do so!).
-It's 2013, our online presence no longer has to be tied to a single server, domain name or IP address. We should be able to clone and import our identities to other servers. In such a network, it should only matter who you are, not where you are.
-
-We're very intrigued by the possibilities nomadic identities open up for freedom, censorship-resistance, and identity resilience. Consider the following scenarios:
-
- -- Should a repressive government or corporation decide to delete your account, your cloned identity lives on, because it is located on another server, across the world, which is part of the same communication network. You can't be silenced!
-
- -- What if there is a server meltdown, and your identity goes off line. No problem, you log into your clone and all is good.
-
- -- Your server administrator can no longer afford to keep paying to support a free service (a labor love and principle, which all of us have participating in as system administrators of Friendica sites!). She notifies you that you must clone your account before the shutoff date. Rather than loose all your friends, and start from scratch by creating a new identity somewhere, you clone and move to another server.
-We feel this is especially helpful for the free web, where administrators of FOSS community sites are often faced with difficult financial decisions. Since many of them rely on donations, sometimes servers have to be taken offline, when costs become prohibitive for the brave DIY souls running those server. Nomadic identities should relieve some of the pressures associated with such situations.
-
-At the same time, we are also thinking of solutions that would make it possible for people running Red hubs to be financially sustainable. To that end, we're starting to implement service classes in our code, which would allow administrators to structure paid levels of service, if they choose to do so.
-
-Today, nomadic identity is currently in alpha state. It also needs more love, which means a solid three months of full-time development efforts.
-
-- Imagine a social network that is censorship-resistant, and privacy-respecting by design. It is not controlled by one mega-corporation, and where users cannot be easily censored by oppressive governments. So, in addition to nomadic identities, we are talking about decentralization, open source, freely software, that can run on any hardware that supports a database and a modern web browser. And we mean &quot;any hardware&quot;, from a self-hosted $35 Raspberry Pi, to the very latest Intel Xeon and AMD Bulldozer-powered server behemoths.
-
-We've realized that privacy requires full control over content. We should be able to delete, backup and download all of our content, as well as associated account/identity information. To this end, we have already implemented the initial version of account export and backup.
-
-Concerned about pages and pages of posts from months and years past? The solution should be simple: visit your settings page, specify that all content older than 7 days, with the exception of starred posts, should be automatically deleted. Done, the clutter is gone! (Consider also the privacy and anti-mass surveillance implications of this feature. PRISM disclosures have hinted that three-letter spying agencies around the world are recording all internet traffic and storing it for a few days at a time. We feel that automatic post expiration becomes a rather useful feature in this context, and implementing it is one of our near future priorities.)
-
-[b][color= grey][size=18]The Affinity Slider and Access Control Lists[/size][/color][/b]
-
-- What if the permissions and access control lists that help secure modern operating systems were extended into a communication network that lived on the internet? This means somebody could log into this network from their home site, and with the simple click of a few buttons dynamically sort who can have access to their online content on a very fine level: from restricting others from seeing your latest blog post, to sharing your bookmarks with the world.
-
-We've coded the initial version of such a new feature. It is called the &quot;Affinity Slider&quot;, and in our very-alpha user interface it looks like this.
-[img]https://friendicared.net/photo/b07b0262e3146325508b81a9d1ae4a1e-0.png[/img]
-
-{INSERT SCREENSHOT OF A MATRIX PAGE}
-
-Think of it as an easy way to filter content that you see, based on the degree of &quot;closeness&quot; to you. Move the slider to Friends, and only content coming from contacts you've tagged as friends is displayed on your home page. Uncluttering thousands of contacts, friends, RSS feeds, and other content should be a basic feature of modern communication on the web, but not at the expense of ease of use.
-
-In addition to the Affinity Slider, we also have the ACL (Access Control List). Say you want to share something with only 5 of your contacts (a blog, two friends from college, and two forums). You click on the padlock, choose the recipients, and that's it. Only those identities will recieve their posts. Furthermore, the post will be encrypted via PKI (pulic key encryption) to help maintain privacy. In the age of PRISM, we don't know all the details on what's safe out there, but we still think that privacy by design should be automatically present, invisible to the user, and easy to use.
-Attaching permissions to any data that lives on this network, potentially solves a great many headaches, while achieving simplicity in communication.
-
-Think of it this way: the internet is nothing, but a bunch of permissions and a folder of data. You, the user controls the permissions and thus the data that is relevant to you.
-
-[b][color= grey][size=20]The Matrix is Born![/size][/color][/b]
-
-After asking and striving to answer a number of such questions, we realized that we were imagining a general purpose communication network with a number of unique, and potentially game-changing, features. We called it $Projectname and started thinking of it as an over-lay on top of the internet as it exists today; an operating system re-invented as a communication network, with its own permissions, access control lists, protocol, connectors to others services, and open-ended possibilities via its API. The sum of the matrix is greater than it's parts. We're not building website, but a way for websites to link together and grow into something that is unique and ever-changing, with autonomy and privacy.
-
-It's a lot of work, for anyone. So far, we've got a team of a handful of volunteers, code geeks, brave early adopters, system administrators and other good people, willing to give the project a shot. We're motivated by our commitment to a free web, where privacy is built-in, and corporations don't have a stranglehold on our daily communication.
-
-We need your help to finish it and release it to the world!
-
-[b][color= grey][size=20]What have we written so far[/size][/color][/b]
-
-As of the today, $Projectname is in developer preview (alpha) state. It is not ready for everyday use, but some of the initial set of core features are implemented (again, in alpha state). These include:
-
-- Zot, the protocol powering the matrix
-- Single-signon logins.
-- Nomadic identities
-- Basic content manipulation: creation, deletion, rudimentary handling of photos, and media files
-- A bare-bones outline of the API and user documentation.
-
-
-[b][color= grey][size=20]Our TO-DO List[/size][/color][/b]
-
-However, in addition to finishing and polishing the above, there are a number of features that have to implemented to make $Projectname ready for daily use. If we meet our fundraising goal, we hope to dive into the following road map, by order of priority:
-
-- A professionally designed user interface (UI), interface that is adaptive to any user level, from end users who want to use the Matrix as a social network, to tinkerers who will put together a customized blog using Comanche, to hackers who will develop and extend the matrix using a built-in code editor, that hooks to the API and the git.
-
-- Comanche, our new markup language, similar to BBCode, with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. You can read more about it on our github wiki: https://github.com/friendica/red/wiki/Comanche
-
-- A unique help system that lives in the matrix, but is not based on the principles of a search engine. We have some interesting ideas about decentralizing help documentation, without going down the road of distributed search engines. Here's a hint: We shouldn't be searching at all, we should just be filtering what's already there in new, and cunning ways.
-
-- An appropriate logo, along with professionally done documentation system, both for our API, as well as users.
-
-- WordPress-like single button software upgrades
-
-- A built-in development environment, using an integrated web-based code editor such as Ace9
-
-[b][color= grey][size=20]What will the money be used for[/size][/color][/b]
-
-If we raise our targeted amount of funds, we plan to use it as follows:
-
-1) Fund 6 months {OR WHATEVER} of full time work for our current core developers, Mike, Thomas, and Tobias {ANYONE ELSE?]
-
-2) Pay a professional web developer to design an kick ass reference theme, along with a project logo.
-
-3) {WHAT ELSE?}
-
-[b][color= grey][size=20]Deadlines[/size][/color][/b]
-
-[b]March, 2014: $Projectname Beta with the following features[/b]
-
-- {LIST FEATURES}
-
-[b][color= grey][size=20]Who We Are[/size][/color][/b]
-
-Mike: {FILL IN BIO, reference Friendica, etc.}
-
-Thomas: {bio blurb}
-
-Tobias: {bio blurb}
-
-Arto: {documentation, etc.}
-
-{WHO ELSE? WE NEED A TEAM, AT LEAST 3-4 PEOPLE}
-
-[b][color= grey][size=20]What Do I Get as a Supporter?[/size][/color][/b]
-
-Our ability to reach 1.0 stable release depends on your generosity and support. We appreciate your help, regardless of the amount! Here's what we're thinking as far as different contribution levels go:
-
-[b]$1: {CATCHY TAGLINE}[/b]
-
-We'll list your name on our initial supporters list, a Hall of Fame of the matrix!
-
-[b]$5:[/b]
-
-[b]$10: [/b]
-
-[b]$16: [/b]
-
-You get one of your $Projectname t-shirts, as well as our undying gratitude.
-
-[b]$32: [/b]
-
-[b]$64 [/b]
-
-[b]128 [/b]
-
-[b]$256: [/b]
-
-[b]$512: [/b]
-
-[b]$1024 [/b]
-
-[b]$2048[/b]
-
-Each contributor at this level gets their own $Projectname virtual private server, installed, hosted and supported by us for a period of 1 year.
-
-[b][color= grey][size=20]Why are we so excited about $Projectname?[/size][/color][/b]
-
-{SOMETHING ABOUT THE POTENTIAL IMPACT OF RED, ITS INNOVATIONS, ETC&gt;
-
-[b][color= grey][size=20]Other Ways to Help[/size][/color][/b]
-
-We're a handful of volunteers, and we understand that not everyone can contribute by donating money. There are many other ways you can in getting the Matrix to version 1.0!
-
-First, you can checkout our source code on github: https://github.com/redmatrix/hubzilla
-
-Maybe you can dive in and help us out with some development.
-
-Second, you can install the current developer preview on a server and start compiling bug reports.
-
-Third, register at one of the public alpha Red hubs, and get a feel for what Red is trying to do!
-
-Perhaps you're good at writing and documenting stuff. Grab an account at one of the public alphas and give us a hand.
-
-[b][color= grey][size=20]Frequently Asked Questions[/size][/color][/b]
-
-[b]1. Is Red a social network?[/b]
-
-$Projectname is not a social network. We're thinking of it as a general purpose communication network, with sharing, and public/private communications built into the matrix.
-
-[b]2. What is the difference between Red and Friendica?[/b]
-
-What's the difference between a passport, and a postcard?
-
-Friendica is really, really good at sending postcards. It can do all sorts of things with postcards. It can send them to your friends. It can send them to people you don't know. It can put them in an envelope and send them privately. It can run them through a photocopier and plaster them all over the internet. It can even take postcards in one language and convert them to many others so your friends who speak a different language can read them.
-
-What Friendica can't do, is wave a postcard at somebody and expect them to believe that holding this postcard prove you are who you say you are. Sure, if you've been sending somebody postcards, they might accept that it is you in the picture, but somebody who has never heard of you will not accept ownership of a postcard as proof of identity.
-
-$Projectname offers a passport.
-
-You can still use it to send postcards. At the same time, when you wave your passport at somebody, they do accept it as proof of identity. No longer do you need to register at every single site you use. You already have an account - it's just not necessarily at our site - so we'll ask to see your passport instead.
-
-Once you've proven your identity, a Red hub lets you use our services, as though you'd registered with directly, and we'd verified your credentials as would have happened in the olden days. These resources can, of course, be anything at all.
-
-[b]2. Why did you choose PHP, instead of Ruby or Python?[/b]
-
-The reference implementation is in PHP. We chose PHP, because it is available everywhere, and is easily configurable. We understand the debates between proponents and opponents of PHP, Ruby and Python. Nothing prevents implementations of Zot and the matrix in those languages. In fact, people on the matrix have already started developing a version of Red in Python [SOURCE?], and there is talk about future implementations in C (aiming for blazing native performance) and Java. It's free and open source, so we feel it's only a matter of time, once Red is initially completed.
-
-[b]4. Other than PHP, what other technology does Red use?[/b]
-
-We use MySQL as our database (this include any forks such as, MariaDB or Percona), and any modern webserver (Apache, nginx, etc.).
-
-[b]5. How is the Affinity Slider different from Mozilla's Persona?[/b]
-{COMPLETE}
-
-[b]6. Does $Projectname use encryption? Details please![/b]
-
-Yes, we do our best to use free and open source encryption libraries to help achieve privacy from general, mass surveillance.
-
-Communication between web browsers and Red hubs is encrypted using SSL certificates.
-
-Private communication on the matrix is protected by AES symmetric encryption, which is itself protected by RSA PKI (public key encryption). By default, we use AES-256-CBC, and our RSA keys are set to 4096-bits.
-
-For more info on our initial implementation of encrypted communication, check out our source code at Github: https://github.com/friendica/red/blob/master/include/crypto.php
-
-[b]7. What do you mean by decentralization? [/b]
-
-
-[b]8. Can I build my own website with in $Projectname?[/b]
-
-Yes. The short explanation: We've got this spiffy idea we're calling &quot;Comanche&quot;, which will allow non-programmers to build complete custom websites, and any such website will be able to connect to any other website or channel in the matrix. The goal of Comanche is to hide the technical complexities of communicating in the matrix, while encouraging people to use their creativity and put together their own unique presence on the matrix.
-
-The longer explanation: Comanche is a markup language, similar to bbcode, with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. Comanche uses a Page Description Language file (&quot;.pdl&quot;, pronounced &quot;puddle&quot;) to create these pages. Bbcode is not a requirement; an XML PDL file could also be used. The tag delimiters would be different. Usage is the same.
-
-Additional information is available on our Github project wiki: https://github.com/friendica/red/wiki/Comanche
-
-Comanche is another one of our priorities for the next six months.
-
-[b]9. Where can I see some technical description of Zot?[/b]
-
-Our github wiki contains a number of high-level and technical descriptions of Zot, Comanche, and Red in general: https://github.com/friendica/red/wiki
-
-[b]10. What happens if you raise more than {TARGETED NUMBER}?[/b]
-
-Raising more than our initial goal of funds, will speed up our development efforts. More developers will be able to take time off from other jobs, and concentrate efforts on finishing Red.
-
-[b]11 Can I make a contribution via Bitcoin?[/b]
-
-{YES/NO}
-
-[b]12. I have additional Questions[/]
-
-Awesome. We'd be more than happy to chat. You can find us {HERE}
-
-#include doc/macros/main_footer.bb;
-
+[b]Initial Indiegg pitch[/b]
+
+[b][color= grey][size=20]What have we done, and what we hope to achieve[/size][/color][/b]
+
+[b][color= grey][size=18]Single-click sign on, nomadic identity, censorship-resistance, privacy, self-hosting[/size][/color][/b]
+
+We started $Projectname project by asking ourselves a few questions:
+
+- Imagine if it was possible to just access the content of different web sites, without the need to enter usernames and passwords for every site. Such a feature would permit Single-Click user identification: the ability to access sites simply by clicking on links to remote sites.
+Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.
+
+We liked this idea and went ahead with coding it immediately. Today, single-click sign is in alpha state. It needs more love, which means a solid three months of full-time development efforts.
+
+- Think of your Facebook, Twitter, WordPress, or any other website where you currently have an account. Now imagine being able to clone your account, to make an exact duplicate of it (with all of your friends, posts and settings), then export your cloned account into another server that is part of this communication network. After you're done, both of your accounts are synced from the time they were cloned. It doesn't matter where you log in (at your original location, or where you imported your clone). You see the same content, the same friends, posts, and account settings.
+At that point, it is more appropriate to call your account an identity that is nomadic (it is not tied to one home, unless you choose to do so!).
+It's 2013, our online presence no longer has to be tied to a single server, domain name or IP address. We should be able to clone and import our identities to other servers. In such a network, it should only matter who you are, not where you are.
+
+We're very intrigued by the possibilities nomadic identities open up for freedom, censorship-resistance, and identity resilience. Consider the following scenarios:
+
+ -- Should a repressive government or corporation decide to delete your account, your cloned identity lives on, because it is located on another server, across the world, which is part of the same communication network. You can't be silenced!
+
+ -- What if there is a server meltdown, and your identity goes off line. No problem, you log into your clone and all is good.
+
+ -- Your server administrator can no longer afford to keep paying to support a free service (a labor love and principle, which all of us have participating in as system administrators of Friendica sites!). She notifies you that you must clone your account before the shutoff date. Rather than loose all your friends, and start from scratch by creating a new identity somewhere, you clone and move to another server.
+We feel this is especially helpful for the free web, where administrators of FOSS community sites are often faced with difficult financial decisions. Since many of them rely on donations, sometimes servers have to be taken offline, when costs become prohibitive for the brave DIY souls running those server. Nomadic identities should relieve some of the pressures associated with such situations.
+
+At the same time, we are also thinking of solutions that would make it possible for people running Red hubs to be financially sustainable. To that end, we're starting to implement service classes in our code, which would allow administrators to structure paid levels of service, if they choose to do so.
+
+Today, nomadic identity is currently in alpha state. It also needs more love, which means a solid three months of full-time development efforts.
+
+- Imagine a social network that is censorship-resistant, and privacy-respecting by design. It is not controlled by one mega-corporation, and where users cannot be easily censored by oppressive governments. So, in addition to nomadic identities, we are talking about decentralization, open source, freely software, that can run on any hardware that supports a database and a modern web browser. And we mean &quot;any hardware&quot;, from a self-hosted $35 Raspberry Pi, to the very latest Intel Xeon and AMD Bulldozer-powered server behemoths.
+
+We've realized that privacy requires full control over content. We should be able to delete, backup and download all of our content, as well as associated account/identity information. To this end, we have already implemented the initial version of account export and backup.
+
+Concerned about pages and pages of posts from months and years past? The solution should be simple: visit your settings page, specify that all content older than 7 days, with the exception of starred posts, should be automatically deleted. Done, the clutter is gone! (Consider also the privacy and anti-mass surveillance implications of this feature. PRISM disclosures have hinted that three-letter spying agencies around the world are recording all internet traffic and storing it for a few days at a time. We feel that automatic post expiration becomes a rather useful feature in this context, and implementing it is one of our near future priorities.)
+
+[b][color= grey][size=18]The Affinity Slider and Access Control Lists[/size][/color][/b]
+
+- What if the permissions and access control lists that help secure modern operating systems were extended into a communication network that lived on the internet? This means somebody could log into this network from their home site, and with the simple click of a few buttons dynamically sort who can have access to their online content on a very fine level: from restricting others from seeing your latest blog post, to sharing your bookmarks with the world.
+
+We've coded the initial version of such a new feature. It is called the &quot;Affinity Slider&quot;, and in our very-alpha user interface it looks like this.
+[img]https://friendicared.net/photo/b07b0262e3146325508b81a9d1ae4a1e-0.png[/img]
+
+{INSERT SCREENSHOT OF A MATRIX PAGE}
+
+Think of it as an easy way to filter content that you see, based on the degree of &quot;closeness&quot; to you. Move the slider to Friends, and only content coming from contacts you've tagged as friends is displayed on your home page. Uncluttering thousands of contacts, friends, RSS feeds, and other content should be a basic feature of modern communication on the web, but not at the expense of ease of use.
+
+In addition to the Affinity Slider, we also have the ACL (Access Control List). Say you want to share something with only 5 of your contacts (a blog, two friends from college, and two forums). You click on the padlock, choose the recipients, and that's it. Only those identities will recieve their posts. Furthermore, the post will be encrypted via PKI (pulic key encryption) to help maintain privacy. In the age of PRISM, we don't know all the details on what's safe out there, but we still think that privacy by design should be automatically present, invisible to the user, and easy to use.
+Attaching permissions to any data that lives on this network, potentially solves a great many headaches, while achieving simplicity in communication.
+
+Think of it this way: the internet is nothing, but a bunch of permissions and a folder of data. You, the user controls the permissions and thus the data that is relevant to you.
+
+[b][color= grey][size=20]The Matrix is Born![/size][/color][/b]
+
+After asking and striving to answer a number of such questions, we realized that we were imagining a general purpose communication network with a number of unique, and potentially game-changing, features. We called it $Projectname and started thinking of it as an over-lay on top of the internet as it exists today; an operating system re-invented as a communication network, with its own permissions, access control lists, protocol, connectors to others services, and open-ended possibilities via its API. The sum of the matrix is greater than it's parts. We're not building website, but a way for websites to link together and grow into something that is unique and ever-changing, with autonomy and privacy.
+
+It's a lot of work, for anyone. So far, we've got a team of a handful of volunteers, code geeks, brave early adopters, system administrators and other good people, willing to give the project a shot. We're motivated by our commitment to a free web, where privacy is built-in, and corporations don't have a stranglehold on our daily communication.
+
+We need your help to finish it and release it to the world!
+
+[b][color= grey][size=20]What have we written so far[/size][/color][/b]
+
+As of the today, $Projectname is in developer preview (alpha) state. It is not ready for everyday use, but some of the initial set of core features are implemented (again, in alpha state). These include:
+
+- Zot, the protocol powering the matrix
+- Single-signon logins.
+- Nomadic identities
+- Basic content manipulation: creation, deletion, rudimentary handling of photos, and media files
+- A bare-bones outline of the API and user documentation.
+
+
+[b][color= grey][size=20]Our TO-DO List[/size][/color][/b]
+
+However, in addition to finishing and polishing the above, there are a number of features that have to implemented to make $Projectname ready for daily use. If we meet our fundraising goal, we hope to dive into the following road map, by order of priority:
+
+- A professionally designed user interface (UI), interface that is adaptive to any user level, from end users who want to use the Matrix as a social network, to tinkerers who will put together a customized blog using Comanche, to hackers who will develop and extend the matrix using a built-in code editor, that hooks to the API and the git.
+
+- Comanche, our new markup language, similar to BBCode, with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. You can read more about it on our github wiki: https://github.com/friendica/red/wiki/Comanche
+
+- A unique help system that lives in the matrix, but is not based on the principles of a search engine. We have some interesting ideas about decentralizing help documentation, without going down the road of distributed search engines. Here's a hint: We shouldn't be searching at all, we should just be filtering what's already there in new, and cunning ways.
+
+- An appropriate logo, along with professionally done documentation system, both for our API, as well as users.
+
+- WordPress-like single button software upgrades
+
+- A built-in development environment, using an integrated web-based code editor such as Ace9
+
+[b][color= grey][size=20]What will the money be used for[/size][/color][/b]
+
+If we raise our targeted amount of funds, we plan to use it as follows:
+
+1) Fund 6 months {OR WHATEVER} of full time work for our current core developers, Mike, Thomas, and Tobias {ANYONE ELSE?]
+
+2) Pay a professional web developer to design an kick ass reference theme, along with a project logo.
+
+3) {WHAT ELSE?}
+
+[b][color= grey][size=20]Deadlines[/size][/color][/b]
+
+[b]March, 2014: $Projectname Beta with the following features[/b]
+
+- {LIST FEATURES}
+
+[b][color= grey][size=20]Who We Are[/size][/color][/b]
+
+Mike: {FILL IN BIO, reference Friendica, etc.}
+
+Thomas: {bio blurb}
+
+Tobias: {bio blurb}
+
+Arto: {documentation, etc.}
+
+{WHO ELSE? WE NEED A TEAM, AT LEAST 3-4 PEOPLE}
+
+[b][color= grey][size=20]What Do I Get as a Supporter?[/size][/color][/b]
+
+Our ability to reach 1.0 stable release depends on your generosity and support. We appreciate your help, regardless of the amount! Here's what we're thinking as far as different contribution levels go:
+
+[b]$1: {CATCHY TAGLINE}[/b]
+
+We'll list your name on our initial supporters list, a Hall of Fame of the matrix!
+
+[b]$5:[/b]
+
+[b]$10: [/b]
+
+[b]$16: [/b]
+
+You get one of your $Projectname t-shirts, as well as our undying gratitude.
+
+[b]$32: [/b]
+
+[b]$64 [/b]
+
+[b]128 [/b]
+
+[b]$256: [/b]
+
+[b]$512: [/b]
+
+[b]$1024 [/b]
+
+[b]$2048[/b]
+
+Each contributor at this level gets their own $Projectname virtual private server, installed, hosted and supported by us for a period of 1 year.
+
+[b][color= grey][size=20]Why are we so excited about $Projectname?[/size][/color][/b]
+
+{SOMETHING ABOUT THE POTENTIAL IMPACT OF RED, ITS INNOVATIONS, ETC&gt;
+
+[b][color= grey][size=20]Other Ways to Help[/size][/color][/b]
+
+We're a handful of volunteers, and we understand that not everyone can contribute by donating money. There are many other ways you can in getting the Matrix to version 1.0!
+
+First, you can checkout our source code on github: https://framagit.org/hubzilla/core/
+
+Maybe you can dive in and help us out with some development.
+
+Second, you can install the current developer preview on a server and start compiling bug reports.
+
+Third, register at one of the public alpha Red hubs, and get a feel for what Red is trying to do!
+
+Perhaps you're good at writing and documenting stuff. Grab an account at one of the public alphas and give us a hand.
+
+[b][color= grey][size=20]Frequently Asked Questions[/size][/color][/b]
+
+[b]1. Is Red a social network?[/b]
+
+$Projectname is not a social network. We're thinking of it as a general purpose communication network, with sharing, and public/private communications built into the matrix.
+
+[b]2. What is the difference between Red and Friendica?[/b]
+
+What's the difference between a passport, and a postcard?
+
+Friendica is really, really good at sending postcards. It can do all sorts of things with postcards. It can send them to your friends. It can send them to people you don't know. It can put them in an envelope and send them privately. It can run them through a photocopier and plaster them all over the internet. It can even take postcards in one language and convert them to many others so your friends who speak a different language can read them.
+
+What Friendica can't do, is wave a postcard at somebody and expect them to believe that holding this postcard prove you are who you say you are. Sure, if you've been sending somebody postcards, they might accept that it is you in the picture, but somebody who has never heard of you will not accept ownership of a postcard as proof of identity.
+
+$Projectname offers a passport.
+
+You can still use it to send postcards. At the same time, when you wave your passport at somebody, they do accept it as proof of identity. No longer do you need to register at every single site you use. You already have an account - it's just not necessarily at our site - so we'll ask to see your passport instead.
+
+Once you've proven your identity, a Red hub lets you use our services, as though you'd registered with directly, and we'd verified your credentials as would have happened in the olden days. These resources can, of course, be anything at all.
+
+[b]2. Why did you choose PHP, instead of Ruby or Python?[/b]
+
+The reference implementation is in PHP. We chose PHP, because it is available everywhere, and is easily configurable. We understand the debates between proponents and opponents of PHP, Ruby and Python. Nothing prevents implementations of Zot and the matrix in those languages. In fact, people on the matrix have already started developing a version of Red in Python [SOURCE?], and there is talk about future implementations in C (aiming for blazing native performance) and Java. It's free and open source, so we feel it's only a matter of time, once Red is initially completed.
+
+[b]4. Other than PHP, what other technology does Red use?[/b]
+
+We use MySQL as our database (this include any forks such as, MariaDB or Percona), and any modern webserver (Apache, nginx, etc.).
+
+[b]5. How is the Affinity Slider different from Mozilla's Persona?[/b]
+{COMPLETE}
+
+[b]6. Does $Projectname use encryption? Details please![/b]
+
+Yes, we do our best to use free and open source encryption libraries to help achieve privacy from general, mass surveillance.
+
+Communication between web browsers and Red hubs is encrypted using SSL certificates.
+
+Private communication on the matrix is protected by AES symmetric encryption, which is itself protected by RSA PKI (public key encryption). By default, we use AES-256-CBC, and our RSA keys are set to 4096-bits.
+
+For more info on our initial implementation of encrypted communication, check out our source code at Github: https://github.com/friendica/red/blob/master/include/crypto.php
+
+[b]7. What do you mean by decentralization? [/b]
+
+
+[b]8. Can I build my own website with in $Projectname?[/b]
+
+Yes. The short explanation: We've got this spiffy idea we're calling &quot;Comanche&quot;, which will allow non-programmers to build complete custom websites, and any such website will be able to connect to any other website or channel in the matrix. The goal of Comanche is to hide the technical complexities of communicating in the matrix, while encouraging people to use their creativity and put together their own unique presence on the matrix.
+
+The longer explanation: Comanche is a markup language, similar to bbcode, with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. Comanche uses a Page Description Language file (&quot;.pdl&quot;, pronounced &quot;puddle&quot;) to create these pages. Bbcode is not a requirement; an XML PDL file could also be used. The tag delimiters would be different. Usage is the same.
+
+Additional information is available on our Github project wiki: https://github.com/friendica/red/wiki/Comanche
+
+Comanche is another one of our priorities for the next six months.
+
+[b]9. Where can I see some technical description of Zot?[/b]
+
+Our github wiki contains a number of high-level and technical descriptions of Zot, Comanche, and Red in general: https://github.com/friendica/red/wiki
+
+[b]10. What happens if you raise more than {TARGETED NUMBER}?[/b]
+
+Raising more than our initial goal of funds, will speed up our development efforts. More developers will be able to take time off from other jobs, and concentrate efforts on finishing Red.
+
+[b]11 Can I make a contribution via Bitcoin?[/b]
+
+{YES/NO}
+
+[b]12. I have additional Questions[/]
+
+Awesome. We'd be more than happy to chat. You can find us {HERE}
+
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/checking_account_quota_usage.bb b/doc/checking_account_quota_usage.bb
index ca7e070ad..7612d03d8 100644
--- a/doc/checking_account_quota_usage.bb
+++ b/doc/checking_account_quota_usage.bb
@@ -1,20 +1,20 @@
-[b]Checking your account quota usage (service limits usage)[/b]
-
-Your hub might implement service class limits, assigning limits to the total size of file, photo, channels, top-level posts, etc., that can be created by an account holder for a specific service level.
-
-Here's how you can quickly check how much of your assigned quota you're currently using:
-
-[b]Check file storage quota levels[/b]
-Visit the following URL in your browser:
-[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
-[observer=0]example.com/filestorage/username[/observer]
-
-[b]Check uploaded photos storage quota levels[/b]
-[observer=1][observer.baseurl]/photos/[observer.webname][/observer]
-[observer=0]example.com/photos/username[/observer]
-
-Example:
-[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
-[observer=0]example.com/filestorage/username[/observer]
-
-#include doc/macros/main_footer.bb;
+[b]Checking your account quota usage (service limits usage)[/b]
+
+Your hub might implement service class limits, assigning limits to the total size of file, photo, channels, top-level posts, etc., that can be created by an account holder for a specific service level.
+
+Here's how you can quickly check how much of your assigned quota you're currently using:
+
+[b]Check file storage quota levels[/b]
+Visit the following URL in your browser:
+[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
+[observer=0]example.com/filestorage/username[/observer]
+
+[b]Check uploaded photos storage quota levels[/b]
+[observer=1][observer.baseurl]/photos/[observer.webname][/observer]
+[observer=0]example.com/photos/username[/observer]
+
+Example:
+[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
+[observer=0]example.com/filestorage/username[/observer]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/comanche.bb b/doc/comanche.bb
index 4b198d657..faf7e695e 100644
--- a/doc/comanche.bb
+++ b/doc/comanche.bb
@@ -1,261 +1,261 @@
-[b]Comanche Page Description Language[/b]
-
-Comanche is a markup language similar to bbcode with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. Comanche uses a Page Decription Language to create these pages.
-
-Comanche primarily chooses what content will appear in various regions of the page. The various regions have names and these names can change depending on what layout template you choose.
-
-[b]Page Templates[/b]
-Currently there are five layout templates, unless your site provides additional layouts.
-
-[code]
- [b]default[/b]
- The default template defines a &quot;nav&quot; region across the top, &quot;aside&quot; as a fixed width sidebar,
- &quot;content&quot; for the main content region, and &quot;footer&quot; for a page footer.
-
-
- [b]full[/b]
- The full template defines the same as the default template with the exception that there is no &quot;aside&quot; region.
-
-
- [b]choklet[/b]
- The choklet template provides a number of fluid layout styles which can be specified by flavour:
-
- (default flavour) - a two column layout similar to the "default" template, but more fluid
- bannertwo - a two column layout with a banner region, compatible with the "default" template on small displays
- three - three column layout (adds a "right_aside" region to the default template)
- edgestwo - two column layout with fixed side margins
- edgesthree - three column layout with fixed side margins
- full - three column layout with fixed side margins and adds a "header" region beneath the navigation bar
-
- [b]redable[/b] (sic)
- A template for reading longer texts full screen (so without navigation bar). Three columns: aside, content and right_aside.
- For maximum readability it is advised to only use the middle content column.
-
- [b]zen[/b]
- Gives you the freedom to do everything yourself. Just a blank page with a content region.
-
-[/code]
-
-To choose a layout template, use the 'template' tag.
-
-[code]
- [template]full[/template]
-
-[/code]
-
-To choose the "choklet" template with the "three" flavour:
-
-[code]
- [template=three]choklet[/template]
-
-[/code]
-
-The default template will be used if no other template is specified. The template can use any names it desires for content regions. You will be using 'region' tags to decide what content to place in the respective regions.
-
-Three &quot;macros&quot; have been defined for your use.
-[code]
- $htmlhead - replaced with the site head content.
- $nav - replaced with the site navigation bar content.
- $content - replaced with the main page content.
-
-[/code]
-
-By default, $nav is placed in the &quot;nav&quot; page region and $content is placed in the &quot;content&quot; region. You only need to use these macros if you wish to re-arrange where these items appear, either to change the order or to move them to other regions.
-
-
-To select a theme for your page, use the 'theme' tag.
-[code]
- [theme]suckerberg[/theme]
-
-[/code]
-This will select the theme named &quot;suckerberg&quot;. By default your channel's preferred theme will be used.
-
-[code]
- [theme=passion]suckerberg[/theme]
-
-[/code]
-This will select the theme named &quot;suckerberg&quot; and select the &quot;passion&quot; schema (theme variant). Alternatively it may be possible to use a condensed theme notation for this.
-
-[code]
- [theme]suckerberg:passion[/theme]
-
-[/code]
-
-The condensed notation isn't part of Comanche itself but is recognised by $Projectname platform as a theme specifier.
-
-[b]Regions[/b]
-Each region has a name, as noted above. You will specify the region of interest using a 'region' tag, which includes the name. Any content you wish placed in this region should be placed between the opening region tag and the closing tag.
-
-[code]
- [region=htmlhead]....content goes here....[/region]
- [region=aside]....content goes here....[/region]
- [region=nav]....content goes here....[/region]
- [region=content]....content goes here....[/region]
-
-[/code]
-
-[b]CSS and Javascript[/b]
-We have the possibility to include javascript and css libraries in the htmlhead region. At present we make use of jquery (js), bootstrap (css/js) and foundation (css/js).
-This will overwrite the selected themes htmlhead.
-
-[code]
- [region=htmlhead]
- [css]bootstrap[/css]
- [js]jquery[/js]
- [js]bootstrap[/js]
- [/region]
-
-[/code]
-
-[b]Menus and Blocks[/b]
-Your webpage creation tools allow you to create menus and blocks, in addition to page content. These provide a chunk of existing content to be placed in whatever regions and whatever order you specify. Each of these has a name which you define when the menu or block is created.
-
-[code]
- [menu]mymenu[/menu]
-
-[/code]
-This places the menu called &quot;mymenu&quot; at this location on the page, which must be inside a region.
-
-[code]
- [menu=horizontal]mymenu[/menu]
-
-[/code]
-This places the menu called &quot;mymenu&quot; at this location on the page, which must be inside a region. Additionally it applies the "horizontal" class to the menu. "horizontal" is defined in the redbasic theme. It may or may not be available in other themes.
-
-[code]
- [menu][var=wrap]none[/var]mymenu[/menu]
-
-[/code]
-The variable [var=wrap]none[/var] in a block removes the wrapping div element from the menu.
-
-[code]
- [block]contributors[/block]
-[/code]
-This places a block named &quot;contributors&quot; in this region.
-
-[code]
- [block=someclass]contributors[/block]
-
-[/code]
-This places a block named &quot;contributors&quot; in this region. Additionally it applies the &quot;someclass&quot; class to the block. This replaces the default block classes &quot;bblock widget&quot;.
-
-[code]
- [block][var=wrap]none[/var]contributors[/block]
-
-[/code]
-The variable [var=wrap]none[/var] in a block removes the wrapping div element from the block.
-
-[b]Widgets[/b]
-Widgets are executable apps provided by the system which you can place on your page. Some widgets take arguments which allows you to tailor the widget to your purpose. (TODO: list available widgets and arguments). The base system provides
-
-[code]
- profile - widget which duplicates the profile sidebar of your channel page. This widget takes no arguments
- tagcloud - provides a tag cloud of categories
- count - maximum number of category tags to list
-
-[/code]
-
-Widgets and arguments are specified with the 'widget' and 'var' tags.
-[code]
- [widget=recent_visitors][var=count]24[/var][/widget]
-
-[/code]
-
-This loads the &quot;recent_visitors&quot; widget and supplies it with the argument &quot;count&quot; set to &quot;24&quot;.
-
-[b]Comments[/b]
-The 'comment' tag is used to delimit comments. These comments will not appear on the rendered page.
-
-[code]
- [comment]This is a comment[/comment]
-
-[/code]
-
-[b]Conditional Execution[/b]
-You can use an 'if' construct to make decisions. These are currently based on system configuration variable or the current observer.
-
-[code]
- [if $config.system.foo]
- ... the configuration variable system.foo evaluates to 'true'.
- [else]
- ... the configuration variable system.foo evaluates to 'false'.
- [/if]
-
- [if $observer]
- ... this content will only be show to authenticated viewers
- [/if]
-
-[/code]
-
- The 'else' clause is optional.
-
- Several tests are supported besides boolean evaluation.
-
-[code]
- [if $config.system.foo == bar]
- ... the configuration variable system.foo is equal to the string 'bar'
- [/if]
- [if $config.system.foo != bar]
- ... the configuration variable system.foo is not equal to the string 'bar'
- [/if]
- [if $config.system.foo {} bar ]
- ... the configuration variable system.foo is a simple array containing a value 'bar'
- [/if]
- [if $config.system.foo {*} bar]
- ... the configuration variable system.foo is a simple array containing a key named 'bar'
- [/if]
-[/code]
-
-[b]Complex Example[/b]
-[code]
- [comment]use an existing page template which provides a banner region plus 3 columns beneath it[/comment]
-
- [template]3-column-with-header[/template]
-
- [comment]Use the &quot;darknight&quot; theme[/comment]
-
- [theme]darkknight[/theme]
-
- [comment]Use the existing site navigation menu[/comment]
-
- [region=nav]$nav[/region]
-
- [region=side]
-
- [comment]Use my chosen menu and a couple of widgets[/comment]
-
- [menu]myfavouritemenu[/menu]
-
- [widget=recent_visitors]
- [var=count]24[/var]
- [var=names_only]1[/var]
- [/widget]
-
- [widget=tagcloud][/widget]
- [block]donate[/block]
-
- [/region]
-
-
-
- [region=middle]
-
- [comment]Show the normal page content[/comment]
-
- $content
-
- [/region]
-
-
-
- [region=right]
-
- [comment]Show my condensed channel &quot;wall&quot; feed and allow interaction if the observer is allowed to interact[/comment]
-
- [widget]channel[/widget]
-
- [/region]
-
-[/code]
-
-#include doc/macros/main_footer.bb;
+[b]Comanche Page Description Language[/b]
+
+Comanche is a markup language similar to bbcode with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. Comanche uses a Page Decription Language to create these pages.
+
+Comanche primarily chooses what content will appear in various regions of the page. The various regions have names and these names can change depending on what layout template you choose.
+
+[b]Page Templates[/b]
+Currently there are five layout templates, unless your site provides additional layouts.
+
+[code]
+ [b]default[/b]
+ The default template defines a &quot;nav&quot; region across the top, &quot;aside&quot; as a fixed width sidebar,
+ &quot;content&quot; for the main content region, and &quot;footer&quot; for a page footer.
+
+
+ [b]full[/b]
+ The full template defines the same as the default template with the exception that there is no &quot;aside&quot; region.
+
+
+ [b]choklet[/b]
+ The choklet template provides a number of fluid layout styles which can be specified by flavour:
+
+ (default flavour) - a two column layout similar to the "default" template, but more fluid
+ bannertwo - a two column layout with a banner region, compatible with the "default" template on small displays
+ three - three column layout (adds a "right_aside" region to the default template)
+ edgestwo - two column layout with fixed side margins
+ edgesthree - three column layout with fixed side margins
+ full - three column layout with fixed side margins and adds a "header" region beneath the navigation bar
+
+ [b]redable[/b] (sic)
+ A template for reading longer texts full screen (so without navigation bar). Three columns: aside, content and right_aside.
+ For maximum readability it is advised to only use the middle content column.
+
+ [b]zen[/b]
+ Gives you the freedom to do everything yourself. Just a blank page with a content region.
+
+[/code]
+
+To choose a layout template, use the 'template' tag.
+
+[code]
+ [template]full[/template]
+
+[/code]
+
+To choose the "choklet" template with the "three" flavour:
+
+[code]
+ [template=three]choklet[/template]
+
+[/code]
+
+The default template will be used if no other template is specified. The template can use any names it desires for content regions. You will be using 'region' tags to decide what content to place in the respective regions.
+
+Three &quot;macros&quot; have been defined for your use.
+[code]
+ $htmlhead - replaced with the site head content.
+ $nav - replaced with the site navigation bar content.
+ $content - replaced with the main page content.
+
+[/code]
+
+By default, $nav is placed in the &quot;nav&quot; page region and $content is placed in the &quot;content&quot; region. You only need to use these macros if you wish to re-arrange where these items appear, either to change the order or to move them to other regions.
+
+
+To select a theme for your page, use the 'theme' tag.
+[code]
+ [theme]suckerberg[/theme]
+
+[/code]
+This will select the theme named &quot;suckerberg&quot;. By default your channel's preferred theme will be used.
+
+[code]
+ [theme=passion]suckerberg[/theme]
+
+[/code]
+This will select the theme named &quot;suckerberg&quot; and select the &quot;passion&quot; schema (theme variant). Alternatively it may be possible to use a condensed theme notation for this.
+
+[code]
+ [theme]suckerberg:passion[/theme]
+
+[/code]
+
+The condensed notation isn't part of Comanche itself but is recognised by $Projectname platform as a theme specifier.
+
+[b]Regions[/b]
+Each region has a name, as noted above. You will specify the region of interest using a 'region' tag, which includes the name. Any content you wish placed in this region should be placed between the opening region tag and the closing tag.
+
+[code]
+ [region=htmlhead]....content goes here....[/region]
+ [region=aside]....content goes here....[/region]
+ [region=nav]....content goes here....[/region]
+ [region=content]....content goes here....[/region]
+
+[/code]
+
+[b]CSS and Javascript[/b]
+We have the possibility to include javascript and css libraries in the htmlhead region. At present we make use of jquery (js), bootstrap (css/js) and foundation (css/js).
+This will overwrite the selected themes htmlhead.
+
+[code]
+ [region=htmlhead]
+ [css]bootstrap[/css]
+ [js]jquery[/js]
+ [js]bootstrap[/js]
+ [/region]
+
+[/code]
+
+[b]Menus and Blocks[/b]
+Your webpage creation tools allow you to create menus and blocks, in addition to page content. These provide a chunk of existing content to be placed in whatever regions and whatever order you specify. Each of these has a name which you define when the menu or block is created.
+
+[code]
+ [menu]mymenu[/menu]
+
+[/code]
+This places the menu called &quot;mymenu&quot; at this location on the page, which must be inside a region.
+
+[code]
+ [menu=horizontal]mymenu[/menu]
+
+[/code]
+This places the menu called &quot;mymenu&quot; at this location on the page, which must be inside a region. Additionally it applies the "horizontal" class to the menu. "horizontal" is defined in the redbasic theme. It may or may not be available in other themes.
+
+[code]
+ [menu][var=wrap]none[/var]mymenu[/menu]
+
+[/code]
+The variable [var=wrap]none[/var] in a block removes the wrapping div element from the menu.
+
+[code]
+ [block]contributors[/block]
+[/code]
+This places a block named &quot;contributors&quot; in this region.
+
+[code]
+ [block=someclass]contributors[/block]
+
+[/code]
+This places a block named &quot;contributors&quot; in this region. Additionally it applies the &quot;someclass&quot; class to the block. This replaces the default block classes &quot;bblock widget&quot;.
+
+[code]
+ [block][var=wrap]none[/var]contributors[/block]
+
+[/code]
+The variable [var=wrap]none[/var] in a block removes the wrapping div element from the block.
+
+[b]Widgets[/b]
+Widgets are executable apps provided by the system which you can place on your page. Some widgets take arguments which allows you to tailor the widget to your purpose. (TODO: list available widgets and arguments). The base system provides
+
+[code]
+ profile - widget which duplicates the profile sidebar of your channel page. This widget takes no arguments
+ tagcloud - provides a tag cloud of categories
+ count - maximum number of category tags to list
+
+[/code]
+
+Widgets and arguments are specified with the 'widget' and 'var' tags.
+[code]
+ [widget=recent_visitors][var=count]24[/var][/widget]
+
+[/code]
+
+This loads the &quot;recent_visitors&quot; widget and supplies it with the argument &quot;count&quot; set to &quot;24&quot;.
+
+[b]Comments[/b]
+The 'comment' tag is used to delimit comments. These comments will not appear on the rendered page.
+
+[code]
+ [comment]This is a comment[/comment]
+
+[/code]
+
+[b]Conditional Execution[/b]
+You can use an 'if' construct to make decisions. These are currently based on system configuration variable or the current observer.
+
+[code]
+ [if $config.system.foo]
+ ... the configuration variable system.foo evaluates to 'true'.
+ [else]
+ ... the configuration variable system.foo evaluates to 'false'.
+ [/if]
+
+ [if $observer]
+ ... this content will only be show to authenticated viewers
+ [/if]
+
+[/code]
+
+ The 'else' clause is optional.
+
+ Several tests are supported besides boolean evaluation.
+
+[code]
+ [if $config.system.foo == bar]
+ ... the configuration variable system.foo is equal to the string 'bar'
+ [/if]
+ [if $config.system.foo != bar]
+ ... the configuration variable system.foo is not equal to the string 'bar'
+ [/if]
+ [if $config.system.foo {} bar ]
+ ... the configuration variable system.foo is a simple array containing a value 'bar'
+ [/if]
+ [if $config.system.foo {*} bar]
+ ... the configuration variable system.foo is a simple array containing a key named 'bar'
+ [/if]
+[/code]
+
+[b]Complex Example[/b]
+[code]
+ [comment]use an existing page template which provides a banner region plus 3 columns beneath it[/comment]
+
+ [template]3-column-with-header[/template]
+
+ [comment]Use the &quot;darknight&quot; theme[/comment]
+
+ [theme]darkknight[/theme]
+
+ [comment]Use the existing site navigation menu[/comment]
+
+ [region=nav]$nav[/region]
+
+ [region=side]
+
+ [comment]Use my chosen menu and a couple of widgets[/comment]
+
+ [menu]myfavouritemenu[/menu]
+
+ [widget=recent_visitors]
+ [var=count]24[/var]
+ [var=names_only]1[/var]
+ [/widget]
+
+ [widget=tagcloud][/widget]
+ [block]donate[/block]
+
+ [/region]
+
+
+
+ [region=middle]
+
+ [comment]Show the normal page content[/comment]
+
+ $content
+
+ [/region]
+
+
+
+ [region=right]
+
+ [comment]Show my condensed channel &quot;wall&quot; feed and allow interaction if the observer is allowed to interact[/comment]
+
+ [widget]channel[/widget]
+
+ [/region]
+
+[/code]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/context/en/admin/plugins/assets/addon_repo_gui_1.png b/doc/context/en/admin/addons/assets/addon_repo_gui_1.png
index 37139b345..37139b345 100644
--- a/doc/context/en/admin/plugins/assets/addon_repo_gui_1.png
+++ b/doc/context/en/admin/addons/assets/addon_repo_gui_1.png
Binary files differ
diff --git a/doc/context/en/admin/plugins/help.html b/doc/context/en/admin/addons/help.html
index d57f4967f..bfb5e416a 100644
--- a/doc/context/en/admin/plugins/help.html
+++ b/doc/context/en/admin/addons/help.html
@@ -1,14 +1,14 @@
<dl class="dl-horizontal">
<dt>General</dt>
- <dd>This page manages which plugins (also known as <i>addons</i>) are installed.</dd>
+ <dd>This page manages which addons (also known as <i>plugins</i>) are installed.</dd>
<dt>Manage Repos</dt>
<dd>If your webserver has the necessary write permissions, you will see a button labeled <b>Manage Repos</b>,
which opens a control panel for managing what plugin <i>repositories</i> are installed. These repos are
stored in <span style="font-family: monospace;">extend/addon/[repo name]/</span>. The official Hubzilla
- plugin repo can be added by entering the repo URL
- <span style="font-family: monospace;">https://github.com/redmatrix/hubzilla-addons.git</span>
+ addon repo can be added by entering the repo URL
+ <span style="font-family: monospace;">https://framagit.org/hubzilla/addons.git</span>
and choosing a name for the repo such as <b>official</b>. You should see this repo in the list similar
to the following:
<br>
- <img class="img-responsive" src="doc/context/en/admin/plugins/assets/addon_repo_gui_1.png"></dd>
-</dl> \ No newline at end of file
+ <img class="img-responsive" src="doc/context/en/admin/addons/assets/addon_repo_gui_1.png"></dd>
+</dl>
diff --git a/doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png b/doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png
index 37139b345..37139b345 100644
--- a/doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png
+++ b/doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png
Binary files differ
diff --git a/doc/context/es-es/admin/plugins/help.html b/doc/context/es-es/admin/addons/help.html
index 0096937fe..49a047f5e 100644
--- a/doc/context/es-es/admin/plugins/help.html
+++ b/doc/context/es-es/admin/addons/help.html
@@ -1,14 +1,14 @@
<dl class="dl-horizontal">
<dt>General</dt>
- <dd>Esta página gestiona qué plugins (también llamados <i>addons</i> o <i>complementos</i>) están instalados.</dd>
+ <dd>Esta página gestiona qué addons (también llamados <i>plugins</i> o <i>complementos</i>) están instalados.</dd>
<dt>Gestión de los repositorios</dt>
<dd>Si su servidor web tiene los permisos de escritura necesarios, verá un botón etiquetado como <b>Gestión de repositorios</b>,
- que abre un panel de control para administrar qué <i>repositorios</i> de plugins están instalados. Estos repositorios están
- almacenados en <span style="font-family: monospace;">extend/addon/[nombre del repositorio]/</span>. El repositorio de plugins oficial de Hubzilla
+ que abre un panel de control para administrar qué <i>repositorios</i> de addons están instalados. Estos repositorios están
+ almacenados en <span style="font-family: monospace;">extend/addon/[nombre del repositorio]/</span>. El repositorio de addons oficial de Hubzilla
se puede añadir escribiendo la URL del repositorio
- <span style="font-family: monospace;">https://github.com/redmatrix/hubzilla-addons.git</span>
+ <span style="font-family: monospace;">https://framagit.org/hubzilla/addons.git</span>
y eligiendo un nombre para el repositorio como <b>oficial</b>. Debería ver este repositorio en una lista parecida
a esta:
<br>
- <img class="img-responsive" src="doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png"></dd>
-</dl> \ No newline at end of file
+ <img class="img-responsive" src="doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png"></dd>
+</dl>
diff --git a/doc/de/general.bb b/doc/de/general.bb
index b9b75f161..2ce5533f1 100644
--- a/doc/de/general.bb
+++ b/doc/de/general.bb
@@ -5,8 +5,8 @@
[h3]Externe Ressourcen[/h3]
[zrl=[baseurl]/help/external-resource-links]Links zu externen Ressourcen[/zrl]
-[url=https://github.com/redmatrix/hubzilla]Haupt-Website[/url]
-[url=https://github.com/redmatrix/hubzilla-addons]Addons-Website[/url]
+[url=https://framagit.org/hubzilla/core/]Haupt-Website[/url]
+[url=https://framagit.org/hubzilla/addons]Addons-Website[/url]
[url=[baseurl]/help/credits]$Projectname Credits[/url]
diff --git a/doc/dev_beginner.bb b/doc/dev_beginner.bb
index 4cf1ca591..4ac69c301 100644
--- a/doc/dev_beginner.bb
+++ b/doc/dev_beginner.bb
@@ -1,419 +1,419 @@
-[h2]You want to contribute code?[/h2]
-[b]...and don't know how to start to...[/b]
-[list]
-[*] debug the red#matrix (php on the webserver),
-[*] contribute code to the project,
-[*] optionally - do it all from inside a virtual machine
-[/list]
-This manual was tested for Debian (Wheezy) as virtual machine on Lubuntu (Ubuntu 14.0) as host.
-
-Content
-
-[toc]
-
-[h2]Install a Virtual Machine (KVM)[/h2]
-
-[url=https://wiki.debian.org/KVM]Here[/url] the installation guide for Linux Debian.
-The summary:
-[list=1]
-[*] install KVM
-[code]# apt-get install qemu-kvm libvirt-bin[/code]
-[*] add yourself to the group libvirt [code]# adduser <youruser> libvirt[/code]
-[*] install gui to manage virtual machines [code]# apt-get install virt-manager[/code]
-[*] download an operating system to run inside the vm ([url=http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/mini.iso]mini.iso[/url])
-[*] start the virt manager
-- create new virtual machine (click on icon)
-- choose your iso image (just downloaded) as installation source
-- optional: configure the new vm: ram, cpu's,...
-- start virtual machine > result: linux debian starts in a new window.
-[*] (optional) avoid network errors after restart of host os
-[code]# virsh net-start default
-# virsh net-autostart default[/code]
-[/list]
-
-
-[h2]Install Apache Webserver[/h2]
-
-Open a terminal and make yourself root
-[code]su -l[/code]
-
-Create the standard group for the Apache webserver
-[code]groupadd www-data[/code]
-might exist already
-
-[code]usermod -a -G www-data www-data[/code]
-
-Check if the system is really up to date
-[code]apt-get update
-apt-get upgrade[/code]
-
-Optional restart services after installation
-[code]reboot[/code]
-
-If you restarted, make yourself root
-[code]su -l[/code]
-
-Install Apache: [code]
-apt-get install apache2 apache2-doc apache2-utils[/code]
-
-Open webbrowser on PC and check [url=localhost]localhost[/url]
-Should show you a page like "It works"
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[h2]Install PHP, MySQL, phpMyAdmin[/h2]
-
-[h3]PHP, MySQL[/h3]
-
-[code]su -l
-apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-xdebug
-apt-get install php5-mysql
-apt-get install mysql-server mysql-client[/code]
-enter and note the mysql passwort
-
-Optional since its already enabled during phpmyadmin setup
-[code]
-php5enmod mcrypt
-[/code]
-
-[h3]phpMyAdmin[/h3]
-
-Install php myadmin
-[code]apt-get install phpmyadmin[/code]
-
-Configuring phpmyadmin
-- Select apache2 (hint: use the tab key to select)
-- Configure database for phpmyadmin with dbconfig-common?: Choose Yes
-
-(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-[h3]Enable rewrite[/h3]
-
-The default installation of Apache2 comes with mod_rewrite installed. To check whether this is the case, verify the existence of /etc/apache2/mods-available/rewrite.load
-
-[code]
-root@debian /var/www $ nano /etc/apache2/mods-available/rewrite.load
-[/code]
-
- (You should find the content: LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so)
-To enable and load mod_rewrite, do the rest of steps.
-Create a symbolic link in /etc/apache2/mods-enabled
-
-[code]
-cd /var/www
-root@debian /var/www $ a2enmod rewrite
-[/code]
-
-Then open up the following file, and replace every occurrence of "AllowOverride None" with "AllowOverride all".
-
-[code]
-root@debian /var/www $nano /etc/apache2/apache2.conf
-[/code]
-or
-[code]
-root@debian:/var# gedit /etc/apache2/sites-enabled/000-default
-[/code]
-
-Finally, restart Apache2.
-
-[code]
-root@debian /var/www $service apache2 restart
-[/code]
-
-[h3]Test installation[/h3]
-
-[code]cd /var/www[/code]
-
-create a php file to test the php installation[code]nano phpinfo.php[/code]
-
-Insert into the file:
-[code]
-<?php
- phpinfo();
-?>
-[/code]
-(save CTRL+0, ENTER, CTRL+X)
-
-open webbrowser on PC and try #^[url=http://localhost/phpinfo.php]http://localhost/phpinfo.php[/url] (page shows infos on php)
-
-connect phpMyAdmin with MySQL database [code]nano /etc/apache2/apache2.conf
-[/code]
-- CTRL+V... to the end of the file
-- Insert at the end of the file: (save CTRL+0, ENTER, CTRL+X)[code]Include /etc/phpmyadmin/apache.conf[/code]
-
-restart apache
-[code]/etc/init.d/apache2 restart
-apt-get update
-apt-get upgrade
-reboot[/code]
-
-[b]phpMyAdmin[/b]
-
-open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhost/phpmyadmin[/url]
-
-(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-[h3]Create an empty database... that is later used by the red#matrix[/h3]
-
-
-open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhost/phpmyadmin[/url]
-
-Create an empty database, for example named "red".
-Create a database user, for example "red".
-Grant all rights for the user "red" to the database "red".
-
-Note the access details (hostname, username, password, database name).
-
-
-[h2]Fork the project on github[/h2]
-
-Please follow the instruction in the offiical [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project] documentation[/url] of git.
-It is a good idea to read the whole manual! Git is different to other version control systems in many ways.
-
-Now you should
-[list]
-[*] create an account at github.com
-[*] fork https://github.com/redmatrix/hubzilla
-[*] fork https://github.com/redmatrix/hubzilla-addons
-[/list]
-
-If you not want to use GIT from the command line - there is a usefull Eclipse plugin named ""Eclipse Mylyn to GitHub connector".
-
-
-[h2]Install RED and its Addons[/h2]
-
-[h3]Git at your computer / vm[/h3]
-
-You should have created an account on github and forked the projects befor you procceed.
-
-Delete the directory www
-[code]root@debian:/var# rm -R www/
-[/code]
-
-Install git (and optionally git-gui a client gui)
-[code]apt-get install git git-gui[/code]
-
-[h3]Download red#matri and addons[/h3]
-
-Download the main project red and red-addons
-[code]
-root@debian:/var# git clone https://github.com/yourname/red www
-root@debian:/var# cd www/
-root@debian:/var/www# git clone https://github.com/yourname/red-addons addon
-[/code]
-
-Make this extra folder
-[code]
-root@debian:/var/www# mkdir -p "store/[data]/smarty3"
-[/code]
-
-Create .htconfig.php and make it writable by the webserver
-[code]
-root@debian:/var/www# touch .htconfig.php
-root@debian:/var/www# chmod ou+w .htconfig.php
-[/code]
-
-Make user www-data (webserver) is the owner all the project files
-[code]
-root@debian:/var/www# cd ..
-root@debian:/var# chown -R www-data:www-data www/
-[/code]
-
-Add yourself ("surfer" in this example) to the group www-data. Why? Later you want to modify files in eclipse or in another editor.
-Then make all files writable by the group www-date you are now a member of.
-[code]
-root@debian:/var# cd www/
-root@debian:/var/www# usermod -G www-data surfer
-root@debian:/var# chmod -R g+w www/
-[/code]
-
-Restart the computer (or vm)
-If you are still not able to modify the project files you can check the members of the group www-data with
-[code]
-cat /etc/group
-[/code]
-
-[h3]Register yourself as admin[/h3]
-
-Open http://localhost and init the matrix
-
-Befor you register a first user switch off the registration mails.
-Open /var/www/.htconfig.php
-and make sure "0" is set in this line
-[code]
-App::$config['system']['verify_email'] = 0;
-[/code]
-You should be able to change the file as "yourself" (instead of using root or www-data).
-
-[h3]Cron and the poller[/h3]
-
-Important!
-Run the poller to pick up the recent "public" postings of your friends
-Set up a cron job or scheduled task to run the poller once every 5-10
-minutes to pick up the recent "public" postings of your friends
-
-[code]
-crontab -e
-[/code]
-
-Add
-[code]
-*/10 * * * * cd /var/www/; /usr/bin/php include/poller.php
-[/code]
-
-If you don't know the path to PHP type
-[code]
-whereis php
-[/code]
-
-
-[h2]Debug the server via eclipse[/h2]
-
-[h3]Check the configuration of xdebug[/h3]
-
-You shoud already have installed xdebug in the steps befor
-[code]
-apt-get install php5-xdebug
-[/code]
-
-Configuring Xdebug
-
-Open your terminal and type as root (su -l)
-[code]
-gedit /etc/php5/mods-available/xdebug.ini
-[/code]
-
-if the file is empty try this location
-[code]
-gedit /etc/php5/conf.d/xdebug.ini
-[/code]
-
-That command should open the text editor gedit with the Xdebug configuration file
-At the end of the file content append the following text
-
-xdebug.remote_enable=on
-xdebug.remote_handler=dbgp
-xdebug.remote_host=localhost
-xdebug.remote_port=9000
-
-Save changes and close the editor.
-In you terminal type to restart the web server.
-[code]
-service apache2 restart
-[/code]
-
-
-[h3]Install Eclipse and start debugging[/h3]
-
-Install eclipse.
-Start eclipse with default worspace (or as you like)
-
-Install the PHP plugin
-Menu > Help > Install new software...
-Install "PHP Developnent Tools ..."
-
-Optionally - Install the GitHub connector plugin
-Menu > Help > Install new software...
-Install "Eclipse Mylyn to GitHub connector"
-
-Configure the PHP plugin
-Menu > Window > Preferences...
-> General > Webbrowser > Change to "Use external web browser"
-> PHP > Debug > Debug Settings > PHP Debugger > Change to "XDebug"
-
-Create a new PHP project
-Menu > File > New Project > Choose PHP > "PHP Project"
-> Choose Create project at existing location" and "/var/www"
-
-Start debugging
-Open index.php and "Debug as..."
-Choose as Launch URL: "http://localhost/"
-
-Expected:
-[list]
-[*] The web browser starts
-[*] The debugger will stop at the first php line
-[/list]
-
-
-[h2]Contribute your changes via github[/h2]
-
-[h3]Preparations[/h3]
-
-There is a related page in this docs: [zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl].
-As stated befor it is recommended to read the official documentation [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project]GitHub-Contributing-to-a-Project[/url] of git.
-
-Eclipse has a usefull plugin for GIT: "Eclipse Mylyn to GitHub connector".
-
-Make sure you have set your data
-[code]
-surfer@debian:/var/www$ git config --global user.name "Your Name"
-surfer@debian:/var/www$ git config --global user.email "your@mail.com"
-[/code]
-
-[h3]Your first contribution[/h3]
-
-Create a descriptive topic branch
-[code]
-surfer@debian:/var/www$ git checkout -b dev_beginning
-[/code]
-
-Make sure your local repository is up-to-date with the main project.
-Add the original repository as a remote named “upstream” if not done yet
-[code]
-surfer@debian:/var/www$ git remote add upstream https://github.com/redmatrix/hubzilla
-[/code]
-
-Fetch the newest work from that remote
-[code]
-surfer@debian:/var/www$ git fetch upstream
-surfer@debian:/var/www$ git merge upstream/master
-[/code]
-
-Hint: You can list the branches
-[code]
-surfer@debian:/var/www$ git branch -v
-[/code]
-
-Make your changes. In this example it is a new doc file.
-
-Check your modifications
-[code]
-surfer@debian:/var/www$ git status
-[/code]
-
-Add (stage) the new file
-[code]
-surfer@debian:/var/www$ git add doc/dev_beginner.bb
-[/code]
-
-Commit the changes to your local branch. This will open an editor to provide a message.
-[code]
-surfer@debian:/var/www$ git commit -a
-[/code]
-
-Push back up to the same topic branch online
-[code]
-surfer@debian:/var/www$ git push
-[/code]
-
-Now you can go to your (online) account at github and create the pull request.
-
-[h3]Following contributions[/h3]
-
-In case the main devolpers want you to change something.
-Fetch the newest work from the remote upstream/master to be sure you have the latest changes.
-[code]
-surfer@debian:/var/www$ git fetch upstream
-surfer@debian:/var/www$ git merge upstream/master
-[/code]
-Make your changes, test them, commit (to local repository), push (to online repository)
-[code]
-surfer@debian:/var/www$ git status
-surfer@debian:/var/www$ git commit -a -m "added modification of branch"
-surfer@debian:/var/www$ git push
-[/code]
-
-
-#include doc/macros/main_footer.bb; \ No newline at end of file
+[h2]You want to contribute code?[/h2]
+[b]...and don't know how to start to...[/b]
+[list]
+[*] debug the red#matrix (php on the webserver),
+[*] contribute code to the project,
+[*] optionally - do it all from inside a virtual machine
+[/list]
+This manual was tested for Debian (Wheezy) as virtual machine on Lubuntu (Ubuntu 14.0) as host.
+
+Content
+
+[toc]
+
+[h2]Install a Virtual Machine (KVM)[/h2]
+
+[url=https://wiki.debian.org/KVM]Here[/url] the installation guide for Linux Debian.
+The summary:
+[list=1]
+[*] install KVM
+[code]# apt-get install qemu-kvm libvirt-bin[/code]
+[*] add yourself to the group libvirt [code]# adduser <youruser> libvirt[/code]
+[*] install gui to manage virtual machines [code]# apt-get install virt-manager[/code]
+[*] download an operating system to run inside the vm ([url=http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/mini.iso]mini.iso[/url])
+[*] start the virt manager
+- create new virtual machine (click on icon)
+- choose your iso image (just downloaded) as installation source
+- optional: configure the new vm: ram, cpu's,...
+- start virtual machine > result: linux debian starts in a new window.
+[*] (optional) avoid network errors after restart of host os
+[code]# virsh net-start default
+# virsh net-autostart default[/code]
+[/list]
+
+
+[h2]Install Apache Webserver[/h2]
+
+Open a terminal and make yourself root
+[code]su -l[/code]
+
+Create the standard group for the Apache webserver
+[code]groupadd www-data[/code]
+might exist already
+
+[code]usermod -a -G www-data www-data[/code]
+
+Check if the system is really up to date
+[code]apt-get update
+apt-get upgrade[/code]
+
+Optional restart services after installation
+[code]reboot[/code]
+
+If you restarted, make yourself root
+[code]su -l[/code]
+
+Install Apache: [code]
+apt-get install apache2 apache2-doc apache2-utils[/code]
+
+Open webbrowser on PC and check [url=localhost]localhost[/url]
+Should show you a page like "It works"
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[h2]Install PHP, MySQL, phpMyAdmin[/h2]
+
+[h3]PHP, MySQL[/h3]
+
+[code]su -l
+apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-xdebug
+apt-get install php5-mysql
+apt-get install mysql-server mysql-client[/code]
+enter and note the mysql passwort
+
+Optional since its already enabled during phpmyadmin setup
+[code]
+php5enmod mcrypt
+[/code]
+
+[h3]phpMyAdmin[/h3]
+
+Install php myadmin
+[code]apt-get install phpmyadmin[/code]
+
+Configuring phpmyadmin
+- Select apache2 (hint: use the tab key to select)
+- Configure database for phpmyadmin with dbconfig-common?: Choose Yes
+
+(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+[h3]Enable rewrite[/h3]
+
+The default installation of Apache2 comes with mod_rewrite installed. To check whether this is the case, verify the existence of /etc/apache2/mods-available/rewrite.load
+
+[code]
+root@debian /var/www $ nano /etc/apache2/mods-available/rewrite.load
+[/code]
+
+ (You should find the content: LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so)
+To enable and load mod_rewrite, do the rest of steps.
+Create a symbolic link in /etc/apache2/mods-enabled
+
+[code]
+cd /var/www
+root@debian /var/www $ a2enmod rewrite
+[/code]
+
+Then open up the following file, and replace every occurrence of "AllowOverride None" with "AllowOverride all".
+
+[code]
+root@debian /var/www $nano /etc/apache2/apache2.conf
+[/code]
+or
+[code]
+root@debian:/var# gedit /etc/apache2/sites-enabled/000-default
+[/code]
+
+Finally, restart Apache2.
+
+[code]
+root@debian /var/www $service apache2 restart
+[/code]
+
+[h3]Test installation[/h3]
+
+[code]cd /var/www[/code]
+
+create a php file to test the php installation[code]nano phpinfo.php[/code]
+
+Insert into the file:
+[code]
+<?php
+ phpinfo();
+?>
+[/code]
+(save CTRL+0, ENTER, CTRL+X)
+
+open webbrowser on PC and try #^[url=http://localhost/phpinfo.php]http://localhost/phpinfo.php[/url] (page shows infos on php)
+
+connect phpMyAdmin with MySQL database [code]nano /etc/apache2/apache2.conf
+[/code]
+- CTRL+V... to the end of the file
+- Insert at the end of the file: (save CTRL+0, ENTER, CTRL+X)[code]Include /etc/phpmyadmin/apache.conf[/code]
+
+restart apache
+[code]/etc/init.d/apache2 restart
+apt-get update
+apt-get upgrade
+reboot[/code]
+
+[b]phpMyAdmin[/b]
+
+open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhost/phpmyadmin[/url]
+
+(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+[h3]Create an empty database... that is later used by the red#matrix[/h3]
+
+
+open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhost/phpmyadmin[/url]
+
+Create an empty database, for example named "red".
+Create a database user, for example "red".
+Grant all rights for the user "red" to the database "red".
+
+Note the access details (hostname, username, password, database name).
+
+
+[h2]Fork the project on github[/h2]
+
+Please follow the instruction in the offiical [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project] documentation[/url] of git.
+It is a good idea to read the whole manual! Git is different to other version control systems in many ways.
+
+Now you should
+[list]
+[*] create an account at github.com
+[*] fork https://framagit.org/hubzilla/core
+[*] fork https://framagit.org/hubzilla/addons
+[/list]
+
+If you not want to use GIT from the command line - there is a usefull Eclipse plugin named ""Eclipse Mylyn to GitHub connector".
+
+
+[h2]Install RED and its Addons[/h2]
+
+[h3]Git at your computer / vm[/h3]
+
+You should have created an account on github and forked the projects befor you procceed.
+
+Delete the directory www
+[code]root@debian:/var# rm -R www/
+[/code]
+
+Install git (and optionally git-gui a client gui)
+[code]apt-get install git git-gui[/code]
+
+[h3]Download red#matri and addons[/h3]
+
+Download the main project red and red-addons
+[code]
+root@debian:/var# git clone https://github.com/yourname/red www
+root@debian:/var# cd www/
+root@debian:/var/www# git clone https://github.com/yourname/red-addons addon
+[/code]
+
+Make this extra folder
+[code]
+root@debian:/var/www# mkdir -p "store/[data]/smarty3"
+[/code]
+
+Create .htconfig.php and make it writable by the webserver
+[code]
+root@debian:/var/www# touch .htconfig.php
+root@debian:/var/www# chmod ou+w .htconfig.php
+[/code]
+
+Make user www-data (webserver) is the owner all the project files
+[code]
+root@debian:/var/www# cd ..
+root@debian:/var# chown -R www-data:www-data www/
+[/code]
+
+Add yourself ("surfer" in this example) to the group www-data. Why? Later you want to modify files in eclipse or in another editor.
+Then make all files writable by the group www-date you are now a member of.
+[code]
+root@debian:/var# cd www/
+root@debian:/var/www# usermod -G www-data surfer
+root@debian:/var# chmod -R g+w www/
+[/code]
+
+Restart the computer (or vm)
+If you are still not able to modify the project files you can check the members of the group www-data with
+[code]
+cat /etc/group
+[/code]
+
+[h3]Register yourself as admin[/h3]
+
+Open http://localhost and init the matrix
+
+Befor you register a first user switch off the registration mails.
+Open /var/www/.htconfig.php
+and make sure "0" is set in this line
+[code]
+App::$config['system']['verify_email'] = 0;
+[/code]
+You should be able to change the file as "yourself" (instead of using root or www-data).
+
+[h3]Cron and the poller[/h3]
+
+Important!
+Run the poller to pick up the recent "public" postings of your friends
+Set up a cron job or scheduled task to run the poller once every 5-10
+minutes to pick up the recent "public" postings of your friends
+
+[code]
+crontab -e
+[/code]
+
+Add
+[code]
+*/10 * * * * cd /var/www/; /usr/bin/php include/poller.php
+[/code]
+
+If you don't know the path to PHP type
+[code]
+whereis php
+[/code]
+
+
+[h2]Debug the server via eclipse[/h2]
+
+[h3]Check the configuration of xdebug[/h3]
+
+You shoud already have installed xdebug in the steps befor
+[code]
+apt-get install php5-xdebug
+[/code]
+
+Configuring Xdebug
+
+Open your terminal and type as root (su -l)
+[code]
+gedit /etc/php5/mods-available/xdebug.ini
+[/code]
+
+if the file is empty try this location
+[code]
+gedit /etc/php5/conf.d/xdebug.ini
+[/code]
+
+That command should open the text editor gedit with the Xdebug configuration file
+At the end of the file content append the following text
+
+xdebug.remote_enable=on
+xdebug.remote_handler=dbgp
+xdebug.remote_host=localhost
+xdebug.remote_port=9000
+
+Save changes and close the editor.
+In you terminal type to restart the web server.
+[code]
+service apache2 restart
+[/code]
+
+
+[h3]Install Eclipse and start debugging[/h3]
+
+Install eclipse.
+Start eclipse with default worspace (or as you like)
+
+Install the PHP plugin
+Menu > Help > Install new software...
+Install "PHP Developnent Tools ..."
+
+Optionally - Install the GitHub connector plugin
+Menu > Help > Install new software...
+Install "Eclipse Mylyn to GitHub connector"
+
+Configure the PHP plugin
+Menu > Window > Preferences...
+> General > Webbrowser > Change to "Use external web browser"
+> PHP > Debug > Debug Settings > PHP Debugger > Change to "XDebug"
+
+Create a new PHP project
+Menu > File > New Project > Choose PHP > "PHP Project"
+> Choose Create project at existing location" and "/var/www"
+
+Start debugging
+Open index.php and "Debug as..."
+Choose as Launch URL: "http://localhost/"
+
+Expected:
+[list]
+[*] The web browser starts
+[*] The debugger will stop at the first php line
+[/list]
+
+
+[h2]Contribute your changes via github[/h2]
+
+[h3]Preparations[/h3]
+
+There is a related page in this docs: [zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl].
+As stated befor it is recommended to read the official documentation [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project]GitHub-Contributing-to-a-Project[/url] of git.
+
+Eclipse has a usefull plugin for GIT: "Eclipse Mylyn to GitHub connector".
+
+Make sure you have set your data
+[code]
+surfer@debian:/var/www$ git config --global user.name "Your Name"
+surfer@debian:/var/www$ git config --global user.email "your@mail.com"
+[/code]
+
+[h3]Your first contribution[/h3]
+
+Create a descriptive topic branch
+[code]
+surfer@debian:/var/www$ git checkout -b dev_beginning
+[/code]
+
+Make sure your local repository is up-to-date with the main project.
+Add the original repository as a remote named “upstream” if not done yet
+[code]
+surfer@debian:/var/www$ git remote add upstream https://framagit.org/hubzilla/core/
+[/code]
+
+Fetch the newest work from that remote
+[code]
+surfer@debian:/var/www$ git fetch upstream
+surfer@debian:/var/www$ git merge upstream/master
+[/code]
+
+Hint: You can list the branches
+[code]
+surfer@debian:/var/www$ git branch -v
+[/code]
+
+Make your changes. In this example it is a new doc file.
+
+Check your modifications
+[code]
+surfer@debian:/var/www$ git status
+[/code]
+
+Add (stage) the new file
+[code]
+surfer@debian:/var/www$ git add doc/dev_beginner.bb
+[/code]
+
+Commit the changes to your local branch. This will open an editor to provide a message.
+[code]
+surfer@debian:/var/www$ git commit -a
+[/code]
+
+Push back up to the same topic branch online
+[code]
+surfer@debian:/var/www$ git push
+[/code]
+
+Now you can go to your (online) account at github and create the pull request.
+
+[h3]Following contributions[/h3]
+
+In case the main devolpers want you to change something.
+Fetch the newest work from the remote upstream/master to be sure you have the latest changes.
+[code]
+surfer@debian:/var/www$ git fetch upstream
+surfer@debian:/var/www$ git merge upstream/master
+[/code]
+Make your changes, test them, commit (to local repository), push (to online repository)
+[code]
+surfer@debian:/var/www$ git status
+surfer@debian:/var/www$ git commit -a -m "added modification of branch"
+surfer@debian:/var/www$ git push
+[/code]
+
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/developer/unorganized.md b/doc/developer/unorganized.md
index 74d914aaf..5ba719226 100644
--- a/doc/developer/unorganized.md
+++ b/doc/developer/unorganized.md
@@ -7,7 +7,7 @@ doing development.
Create your own github account.
-You may fork/clone the Red repository from [https://github.com/redmatrix/hubzilla.git](https://github.com/redmatrix/hubzilla.git).
+You may fork/clone the Red repository from [https://framagit.org/hubzilla/core.git](https://framagit.org/hubzilla/core.git).
Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/)
to create and use your own tracking fork on github
@@ -44,7 +44,7 @@ doing development.
Create your own github account.
-You may fork/clone the Red repository from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url]
+You may fork/clone the Red repository from [url=https://framagit.org/hubzilla/core.git]https://framagit.org/hubzilla/core.git[/url]
Follow the instructions provided here: [url=http://help.github.com/fork-a-repo/]http://help.github.com/fork-a-repo/[/url]
to create and use your own tracking fork on github
diff --git a/doc/developer_function_primer.bb b/doc/developer_function_primer.bb
index 183581361..48af9523d 100644
--- a/doc/developer_function_primer.bb
+++ b/doc/developer_function_primer.bb
@@ -1,43 +1,43 @@
-[b]$Projectname development - some useful basic functions[/b]
-
-[b]get_account_id()[/b]
-
-Returns numeric account_id if authenticated or 0. It is possible to be authenticated and not connected to a channel.
-
-[b]local_channel()[/b]
-
-Returns authenticated numeric channel_id if authenticated and connected to a channel or 0. Sometimes referred to as $uid in the code.
-
-[b]remote_channel()[/b]
-
-Returns authenticated string hash of Red global identifier, if authenticated via remote auth, or an empty string.
-
-[b]App::get_observer()[/b]
-
-returns an xchan structure representing the current viewer if authenticated (locally or remotely).
-
-[b]get_config($family,$key), get_pconfig($uid,$family,$key), get_xconfig($xchan_hash,$family,$key)[/b]
-
-Returns the config setting for $family and $key or false if unset.
-
-[b] set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value)[/b]
-
-Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). The xconfig version get/sets the value for a specific xchan hash - generally used for remote users.
-
-[b]dbesc()[/b]
-
-Always escape strings being used in DB queries. This function returns the escaped string. Integer DB parameters should all be proven integers by wrapping with intval()
-
-[b]q($sql,$var1...)[/b]
-
-Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't.
-
-[b]t($string)[/b]
-
-Returns the translated variant of $string for the current language or $string (default 'en' language) if the language is unrecognised or a translated version of the string does not exist.
-
-[b]x($var), $x($array,$key)[/b]
-
-Shorthand test to see if variable $var is set and is not empty. Tests vary by type. Returns false if $var or $key is not set. If variable is set, returns 1 if has 'non-zero' value, otherwise returns 0. -- e.g. x('') or x(0) returns 0;
-
-#include doc/macros/main_footer.bb;
+[b]$Projectname development - some useful basic functions[/b]
+
+[b]get_account_id()[/b]
+
+Returns numeric account_id if authenticated or 0. It is possible to be authenticated and not connected to a channel.
+
+[b]local_channel()[/b]
+
+Returns authenticated numeric channel_id if authenticated and connected to a channel or 0. Sometimes referred to as $uid in the code.
+
+[b]remote_channel()[/b]
+
+Returns authenticated string hash of Red global identifier, if authenticated via remote auth, or an empty string.
+
+[b]App::get_observer()[/b]
+
+returns an xchan structure representing the current viewer if authenticated (locally or remotely).
+
+[b]get_config($family,$key), get_pconfig($uid,$family,$key), get_xconfig($xchan_hash,$family,$key)[/b]
+
+Returns the config setting for $family and $key or false if unset.
+
+[b] set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value)[/b]
+
+Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). The xconfig version get/sets the value for a specific xchan hash - generally used for remote users.
+
+[b]dbesc()[/b]
+
+Always escape strings being used in DB queries. This function returns the escaped string. Integer DB parameters should all be proven integers by wrapping with intval()
+
+[b]q($sql,$var1...)[/b]
+
+Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't.
+
+[b]t($string)[/b]
+
+Returns the translated variant of $string for the current language or $string (default 'en' language) if the language is unrecognised or a translated version of the string does not exist.
+
+[b]x($var), $x($array,$key)[/b]
+
+Shorthand test to see if variable $var is set and is not empty. Tests vary by type. Returns false if $var or $key is not set. If variable is set, returns 1 if has 'non-zero' value, otherwise returns 0. -- e.g. x('') or x(0) returns 0;
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/es b/doc/es
index a170c77bc..c8ba7666b 120000
--- a/doc/es
+++ b/doc/es
@@ -1 +1 @@
-doc/es-es \ No newline at end of file
+es-es \ No newline at end of file
diff --git a/doc/es-es/about/about.bb b/doc/es-es/about/about.bb
index 731bdef85..1d5f3a4a2 100644
--- a/doc/es-es/about/about.bb
+++ b/doc/es-es/about/about.bb
@@ -12,31 +12,32 @@ Desde la perspectiva práctica de los miembros del hub que utilizan el software,
[li]y más...[/li][/ul]
Aunque todas estas aplicaciones y servicios se pueden encontrar en otros paquetes de software, sólo $Projectname le permite establecer permisos para grupos e individuos que pueden no tener cuentas en tu hub. En las aplicaciones web típicas, si desea compartir cosas en privado en Internet, las personas con las que comparte deben tener cuentas en el servidor que aloja sus datos; de lo contrario, no hay una forma sólida para que su servidor[i]autentifique[/i] a los visitantes del sitio para saber si les concede acceso. $Projectname resuelve este problema con un sistema avanzado de[i]autenticación remota[/i] que valida la identidad de los visitantes empleando técnicas que incluyen criptografía de clave pública.
-
[h3]El software[/h3]
-$Projectname es, básicamente, una aplicación de servidor web relativamente estándar escrita principalmente en PHP/MySQL [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt][/url], que requiere poco más que un servidor web, una base de datos compatible con MySQL y el lenguaje de scripting PHP. Está diseñado para ser fácilmente instalable por aquellos con habilidades básicas de administración de sitios web en plataformas típicas de alojamiento compartido con una amplia gama de hardware informático. También se puede extender fácilmente a través de plugins y temas y otras herramientas de terceros.
+$Projectname es, básicamente, una aplicación de servidor web relativamente estándar escrita principalmente en PHP/MySQL [url=https://framagit.org/hubzilla/core/blob/master/install/INSTALL.txt][/url], que requiere poco más que un servidor web, una base de datos compatible con MySQL y el lenguaje de scripting PHP. Está diseñado para ser fácilmente instalable por aquellos con habilidades básicas de administración de sitios web en plataformas típicas de alojamiento compartido con una amplia gama de hardware informático. También se puede extender fácilmente a través de plugins y temas y otras herramientas de terceros.
[h3]Glosario[/h3]
[dl terms="b"]
-Una instancia de este software ejecutándose en un servidor web estándar
+[*= Hub] Una instancia de este software ejecutándose en un servidor web estándar
-[grid] Red global de hubs que intercambian información entre sí utilizando el protocolo Zot.
+[*= Grid] Red global de hubs que intercambian información entre sí utilizando el protocolo Zot.
-La identidad fundamental en la cuadrícula. Un canal puede representar a una persona, un blog o un foro, por nombrar algunos. Los canales pueden hacer conexiones con otros canales para compartir información con permisos muy detallados.
+[*= Canal] La identidad fundamental en la cuadrícula. Un canal puede representar a una persona, un blog o un foro, por nombrar algunos. Los canales pueden hacer conexiones con otros canales para compartir información con permisos muy detallados.
-Los canales pueden tener clones asociados con cuentas separadas y otras cuentas no relacionadas en hubs independientes. Las comunicaciones compartidas con un canal se sincronizan entre los clones del canal, permitiendo que un canal envíe y reciba mensajes y acceda a contenido compartido desde múltiples hubs. Esto proporciona resistencia contra fallas en la red y en el hardware, lo que puede ser un problema significativo para los servidores web autohospedados o de recursos limitados. La clonación le permite mover completamente un canal de un hub a otro, llevando sus datos y conexiones con usted. Ver identidad nómada.
+[*= Clones] Los canales pueden tener clones asociados con cuentas separadas y otras cuentas no relacionadas en hubs independientes. Las comunicaciones compartidas con un canal se sincronizan entre los clones del canal, permitiendo que un canal envíe y reciba mensajes y acceda a contenido compartido desde múltiples hubs. Esto proporciona resistencia contra fallas en la red y en el hardware, lo que puede ser un problema significativo para los servidores web autohospedados o de recursos limitados. La clonación le permite mover completamente un canal de un hub a otro, llevando sus datos y conexiones con usted. Ver identidad nómada.
-Identidad nómada] La capacidad de autenticar y migrar fácilmente una identidad a través de concentradores y dominios web independientes. La identidad nómada proporciona una verdadera propiedad de una identidad en línea, porque las identidades de los canales controlados por una cuenta en un hub no están vinculadas al propio hub. Un hub es más como un "host" para canales. Con Hubzilla, no tienes una "cuenta" en un servidor como lo haces en sitios web típicos; tienes una identidad que puedes llevarte a través de la rejilla usando clones.
+[*= Identidad nómada] La capacidad de autenticar y migrar fácilmente una identidad a través de hubs y dominios web independientes. La identidad nómada proporciona una verdadera propiedad de una identidad en línea, porque las identidades de los canales controlados por una cuenta en un hub no están vinculadas al propio hub. Un hub es más como un "host" para canales. Con Hubzilla, no tienes una "cuenta" en un servidor como lo haces en sitios web típicos; tienes una identidad que puedes llevarte a través de la rejilla usando clones.
-Traducción y sincronización: El novedoso protocolo basado en JSON para la implementación de comunicaciones y servicios descentralizados seguros. Se diferencia de muchos otros protocolos de comunicación en que construye las comunicaciones sobre un marco de identidad y autenticación descentralizado. El componente de autenticación es similar a OpenID conceptualmente pero está aislado de las identidades basadas en DNS. Cuando es posible, la autenticación remota es silenciosa e invisible. Esto proporciona un mecanismo para el control de acceso distribuido a escala de Internet que es discreto.
+[*= Zot] El novedoso protocolo basado en JSON para la implementación de comunicaciones y servicios descentralizados seguros. Se diferencia de muchos otros protocolos de comunicación en que construye las comunicaciones sobre un marco de identidad y autenticación descentralizado. El componente de autenticación es similar a OpenID conceptualmente pero está aislado de las identidades basadas en DNS. Cuando es posible, la autenticación remota es silenciosa e invisible. Esto proporciona un mecanismo para el control de acceso distribuido a escala de Internet que es discreto.
[/dl]
+
[h3]Características[/h3]
Esta página enumera algunas de las características principales de $Projectname que se incluyen en la versión oficial. $Projectname es una plataforma altamente extensible, por lo que se pueden añadir más características y capacidades a través de temas y plugins adicionales.
+
[h4]Control deslizante de afinidad[/h4]
Cuando se añaden conexiones en $Projectname, los miembros tienen la opción de asignar niveles de "afinidad" (cuán cerca está su amigo).
@@ -46,6 +47,7 @@ En este punto, la herramienta $Projectname [i]Control deslizante de afinidad[/i]
El control deslizante de afinidad permite el filtrado instantáneo de grandes cantidades de contenido, agrupado por niveles de cercanía.
+
[h4]Filtrado de conexiones[/h4]
Usted tiene la capacidad de controlar con precisión lo que aparece en su flujo usando el "Filtro de conexión" opcional. Cuando está habilitado, el Editor de conexión proporciona entradas para seleccionar los criterios que deben coincidir para incluir o excluir un mensaje específico de un canal específico. Una vez que un mensaje ha sido permitido, todos los comentarios a ese mensaje son permitidos sin importar si coinciden o no con los criterios de selección. Puede seleccionar las palabras que, si están presentes, bloquean el mensaje o se aseguran de que esté incluido en su stream. Se pueden utilizar expresiones regulares para un control aún más preciso, así como hashtags o incluso el idioma detectado del mensaje.
@@ -81,19 +83,23 @@ Puede crear cualquier número de salas de chat personales y permitir el acceso a
[h4]Construcción de Páginas Web[/h4]
-El nombre del proyecto tiene muchas herramientas de creación de "Gestión de contenidos" para construir páginas web, incluyendo edición de diseño, menús, bloques, widgets y regiones de página/contenido. Todo esto puede ser controladospara que las páginas resultantes sean privadas para la audiencia a la que están destinadas.
+$Projectname tiene muchas herramientas de creación de "Gestión de contenidos" para construir páginas web, incluyendo edición de diseño, menús, bloques, widgets y regiones de página/contenido. Todo esto puede ser controladospara que las páginas resultantes sean privadas para la audiencia a la que están destinadas.
+
[h4]Aplicaciones[/h4]
Las aplicaciones pueden ser construidas y distribuidas por los miembros. Éstas se diferencian de las aplicaciones tradicionales de "bloqueo de proveedores" porque están completamente controladas por el autor, que puede proporcionar control de acceso en las páginas de aplicaciones de destino y cobrar en consecuencia por este acceso. La mayoría de las aplicaciones en $Projectname son gratuitas y pueden ser creadas fácilmente por aquellos sin conocimientos de programación.
-[h4]Diseño[/h4
-El diseño de la página se basa en un lenguaje de descripción llamado comanche. El propio nombre del proyecto está escrito en diseños comanches que se pueden cambiar. Esto permite un nivel de personalización que no se encuentra normalmente en los llamados "entornos multiusuario".
+[h4]Diseño[/h4]
+
+El diseño de la página se basa en un lenguaje de descripción llamado comanche. La propia $Projectname está escrito en diseños comanches que se pueden cambiar. Esto permite un nivel de personalización que no se encuentra normalmente en los llamados "entornos multiusuario".
+
[h4]Marcadores[/h4]
-Comparta y guarde/maneje los marcadores de los enlaces proporcionados en las conversaciones.
+Comparta y guarde/maneje los marcadores de los enlaces proporcionados en las conversaciones.
+
[h4]Cifrado privado de mensajes y cuestiones de privacidad[/h4]
@@ -101,7 +107,7 @@ El correo privado se almacena en un formato "oscuro". Aunque este no es a prueba
Cada canal $Projectname tiene su propio conjunto único de claves RSA 4096-bit privadas y públicas asociadas, generadas cuando se crean los canales por primera vez. Se utiliza para proteger mensajes privados y mensajes en tránsito.
-Además, los mensajes pueden crearse utilizando "encriptación de extremo a extremo" que no puede ser leída por los operadores de nombres de proyecto o ISPs o cualquier persona que no conozca el código de acceso.
+Además, los mensajes pueden crearse utilizando "encriptación de extremo a extremo" que no puede ser leída por los operadores de $Projectname o ISPs o cualquier persona que no conozca el código de acceso.
Por lo general, los mensajes públicos no se cifran durante el transporte ni durante el almacenamiento.
@@ -130,7 +136,8 @@ Proporcionamos un acceso fácil a un directorio de miembros y proporcionamos her
[h4]TLS/SSL[/h4]
-En el caso de los concentradores de nombres de proyecto que utilizan TLS/SSL, las comunicaciones de cliente a servidor se cifran mediante TLS/SSL. Dadas las recientes revelaciones en los medios de comunicación con respecto a la vigilancia global generalizada y la elusión del cifrado por parte de NSA y GCHQ, es razonable asumir que las comunicaciones protegidas por HTTPS pueden verse comprometidas de varias maneras. Por consiguiente, las comunicaciones privadas se cifran a un nivel superior antes de enviarlas fuera del sitio.
+En el caso de los hubs de $Projectname que utilizan TLS/SSL, las comunicaciones de cliente a servidor se cifran mediante TLS/SSL. Dadas las recientes revelaciones en los medios de comunicación con respecto a la vigilancia global generalizada y la elusión del cifrado por parte de NSA y GCHQ, es razonable asumir que las comunicaciones protegidas por HTTPS pueden verse comprometidas de varias maneras. Por consiguiente, las comunicaciones privadas se cifran a un nivel superior antes de enviarlas fuera del sitio.
+
[h4]Ajustes de canal[/h4]
@@ -140,13 +147,13 @@ Si elige una función de privacidad "personalizada", cada canal permite establec
Las opciones son:
- Nadie excepto usted mismo.
- Sólo aquellos que usted permita específicamente.
- Cualquiera en sus conexiones aprobadas.
- Cualquiera en este sitio web.
- Cualquiera en esta red.
- Cualquiera autentificado.
- Cualquiera en Internet.
+ - Nadie excepto usted mismo.
+ - Sólo aquellos que usted permita específicamente.
+ - Cualquiera en sus conexiones aprobadas.
+ - Cualquiera en este sitio web.
+ - Cualquiera en esta red.
+ - Cualquiera autentificado.
+ - Cualquiera en Internet.
[h4]Foros Públicos y Privados[/h4]
@@ -173,37 +180,45 @@ $Projectname ofrece nuevas e interesantes posibilidades de privacidad. Puede lee
Se aplican algunas advertencias. Para una explicación completa de la clonación de identidad, lea el documento <HOW TO CLONE MY IDENTITY>.
+
[h4]Perfiles Múltiples[/h4]
Se puede crear cualquier número de perfiles que contengan información diferente y éstos pueden hacerse visibles para algunas de sus conexiones/amigos. Un perfil "predeterminado" puede ser visto por cualquiera y puede contener información limitada, con más información disponible para seleccionar grupos o personas. Esto significa que el perfil (y el contenido del sitio) que ven sus compañeros de trabajo puede ser diferente de lo que ven sus compañeros de trabajo, y también completamente diferente de lo que es visible para el público en general.
+
[h4]Copia de seguridad de la cuenta[/h4]
$Projectname ofrece una sencilla copia de seguridad de la cuenta con un solo clic, en la que puede descargar una copia de seguridad completa de su(s) perfil(es). Las copias de seguridad se pueden utilizar para clonar o restaurar un perfil.
+
[h4]Borrado de cuenta[/h4]
Las cuentas se pueden eliminar inmediatamente haciendo clic en un enlace. Eso es todo. Todo el contenido asociado se elimina de la rejilla (esto incluye los mensajes y cualquier otro contenido producido por el perfil eliminado). Dependiendo del número de conexiones que tenga, el proceso de eliminación de contenido remoto podría llevar algún tiempo, pero está previsto que ocurra tan rápido como sea posible.
[h4]Supresión de contenido[/h4]
-Cualquier contenido creado en $Projectname permanece bajo el control del miembro (o canal) que lo creó originalmente. En cualquier momento, un miembro puede borrar un mensaje o un rango de mensajes. El proceso de eliminación garantiza que el contenido se elimine, independientemente de si se publicó en el concentrador principal (doméstico) de un canal o en otro concentrador, donde el canal se autenticó de forma remota a través de Zot (protocolo de autenticación y comunicación de $Projectname).
+Cualquier contenido creado en $Projectname permanece bajo el control del miembro (o canal) que lo creó originalmente. En cualquier momento, un miembro puede borrar un mensaje o un rango de mensajes. El proceso de eliminación garantiza que el contenido se elimine, independientemente de si se publicó en el hub principal de un canal o en otro hub, donde el canal se autenticó de forma remota a través de Zot (protocolo de autenticación y comunicación de $Projectname).
+
[h4]Medios[/h4]
Al igual que cualquier otro sistema moderno de blogging, red social, o un servicio de micro-blogging, $Projectname soporta la carga de archivos, incrustación de video y vinculación de páginas web.
+
[h4]Previsualización/Edición[/h4]
+
Los mensajes y comentarios se pueden previsualizar antes de enviarlos y editarlos después de enviarlos.
+
[h4]Votación/Consenso[/h4]
Los mensajes pueden convertirse en elementos de "consenso" que permiten a los lectores ofrecer retroalimentación, que se recopila en contadores de "acuerdo", "desacuerdo" y "abstención". Esto le permite medir el interés por las ideas y crear encuestas informales.
-[h4]Extendiendo $Nombre del proyecto[/h4]
+[h4]Extendiendo $Projectname[/h4]
-El nombre del proyecto se puede ampliar de varias maneras, a través de la personalización del sitio, personalización, configuración de opciones, temas y complementos/plugins.
-[h4]API[/h4]
+$Projectname se puede ampliar de varias maneras, a través de la personalización del sitio, personalización, configuración de opciones, temas y complementos/plugins.
+[h4]API[/h4]
+
Una API está disponible para su uso por parte de servicios de terceros. Un plugin también proporciona una implementación básica de Twitter (para los que existen cientos de herramientas de terceros). El acceso puede ser proporcionado por login/contraseña o OAuth, y el registro del cliente de las aplicaciones de OAuth es proporcionado. \ No newline at end of file
diff --git a/doc/es-es/about/project.bb b/doc/es-es/about/project.bb
index 6871869d5..5f493af1d 100644
--- a/doc/es-es/about/project.bb
+++ b/doc/es-es/about/project.bb
@@ -1,4 +1,4 @@
-[h3]$Nombre del proyecto Gobernanza[/h3]
+[h3]Gobernanza de $Projectname[/h3]
La gobernanza se relaciona con la gestión de un proyecto y, en particular, con su relación con la resolución de conflictos.
@@ -7,7 +7,7 @@ La gobernanza se relaciona con la gestión de un proyecto y, en particular, con
El proyecto es mantenido y las decisiones tomadas por la "comunidad". La estructura de gobernanza sigue evolucionando. Hasta que se finalice la estructura, las decisiones se toman en el siguiente orden:
[ol]
-Consenso perezoso
+[*] Consenso perezoso
Si se presenta una propuesta de proyecto a uno de los foros de gobierno de la comunidad y no hay objeciones serias en un plazo "razonable" desde la fecha de la propuesta (por lo general, disponemos de 2 a 3 días para que todas las partes interesadas puedan opinar), no es necesario votar y la propuesta se considerará aprobada. En este momento se pueden plantear algunas preocupaciones, pero si éstas se abordan durante la discusión y se proporcionan soluciones provisionales, se considerarán aprobadas.
@@ -17,12 +17,12 @@ Si se presenta una propuesta de proyecto a uno de los foros de gobierno de la co
Los desarrolladores senior con un historial significativo de proyectos se comprometen a vetar cualquier decisión. La decisión no podrá adoptarse hasta que se retire el veto o se presente una propuesta alternativa.
-Voto Comunitario
+[*] Voto Comunitario
Una decisión que no tiene un mandato claro o un consenso claro, pero que no es vetada, puede ser llevada a votación comunitaria. En la actualidad se trata de un simple voto popular en uno de los foros comunitarios aplicables. En este momento, el voto popular decide el resultado. Esto puede cambiar en el futuro si la comunidad adopta un modelo de gobierno de "consejo". Este documento se actualizará en ese momento con las reglas de gobierno actualizadas.
[/ol]
-El Voto Comunitario no siempre proporciona un resultado agradable y puede generar facciones polarizadas en la comunidad (de ahí la razón por la que se están considerando otros modelos). Si la propuesta es "rechazada" todavía hay varias cosas que se pueden hacer y la propuesta se vuelve a presentar con parámetros ligeramente diferentes (convertir a un complemento, convertir a una característica opcional que está desactivada por defecto, etc.). Si el interés en la película es alto y la votación es "cercana", puede generar muchos malos sentimientos entre los votantes perdedores. En estas votaciones tan reñidas, se[b]recomienda encarecidamente[/b] que el proponente tome medidas para abordar cualquier inquietud que se haya planteado y vuelva a presentar.
+El Voto Comunitario no siempre proporciona un resultado agradable y puede generar facciones polarizadas en la comunidad (de ahí la razón por la que se están considerando otros modelos). Si la propuesta es "rechazada" todavía hay varias cosas que se pueden hacer y la propuesta se vuelve a presentar con parámetros ligeramente diferentes (convertir a un complemento, convertir a una característica opcional que está desactivada por defecto, etc.). Si el interés en la película es alto y la votación es "cercana", puede generar muchos malos sentimientos entre los votantes perdedores. En estas votaciones tan reñidas, se [b]recomienda encarecidamente[/b] que el proponente tome medidas para abordar cualquier inquietud que se haya planteado y vuelva a presentar.
@@ -30,24 +30,24 @@ El Voto Comunitario no siempre proporciona un resultado agradable y puede genera
P: ¿Quién puede ver mi contenido?
-R: Por defecto CUALQUIER PERSONA en Internet, A MENOS que usted lo restrinja. El nombre del proyecto le permite elegir el nivel de privacidad que desea. El contenido restringido NO será visible para las "redes de espionaje" y los anunciantes. Estará protegido contra las escuchas de personas ajenas a la empresa, en la medida de nuestras posibilidades. Los administradores de los hubs con suficientes habilidades y paciencia PUEDEN ser capaces de escuchar a escondidas algunas comunicaciones privadas, pero deben hacer un esfuerzo para hacerlo. Los modos de privacidad existen dentro de $Projectname que son incluso resistentes a las escuchas por parte de administradores de hubs cualificados y decididos.
+R: Por defecto CUALQUIER PERSONA en Internet, A MENOS que usted lo restrinja. $Projectname le permite elegir el nivel de privacidad que desea. El contenido restringido NO será visible para las "redes de espionaje" y los anunciantes. Estará protegido contra las escuchas de personas ajenas a la empresa, en la medida de nuestras posibilidades. Los administradores de los hubs con suficientes habilidades y paciencia PUEDEN ser capaces de escuchar a escondidas algunas comunicaciones privadas, pero deben hacer un esfuerzo para hacerlo. Los modos de privacidad existen dentro de $Projectname que son incluso resistentes a las escuchas por parte de administradores de hubs cualificados y decididos.
P: ¿Se puede censurar mi contenido?
-R: $Nombre del proyecto (la red) NO PUEDE censurar su contenido. Los administradores de servidores y hubs están sujetos a las leyes locales y PUEDEN eliminar contenido objetable de su sitio o hub. Cualquiera PUEDE convertirse en administrador del hub, incluyéndote a ti; y por lo tanto publicar contenido que de otra manera podría ser censurado. Usted aún PUEDE estar sujeto a las leyes locales.
+R: $Projectname (la red) NO PUEDE censurar su contenido. Los administradores de servidores y hubs están sujetos a las leyes locales y PUEDEN eliminar contenido objetable de su sitio o hub. Cualquiera PUEDE convertirse en administrador del hub, incluyéndote a ti; y por lo tanto publicar contenido que de otra manera podría ser censurado. Usted aún PUEDE estar sujeto a las leyes locales.
[h5]Definiciones[/h5]
-**$$Nombre del proyecto**
+**$Projectname**
También conocido como "la red", $Projectname es una colección de ordenadores/servidores individuales (aka **hubs**) que se conectan para formar una red cooperativa más grande.
-*Hub*
+**Hub**
Una computadora individual o servidor conectado a $Projectname. Estos son proporcionados por un administrador de **hub y pueden ser públicos o privados, de pago o gratuitos.
-El administrador del hub.
+**El administrador del hub**
El operador del sistema de un hub individual.
@@ -82,11 +82,11 @@ La privacidad para su identidad es otro aspecto. Debido a que tiene una identida
Una identidad descentralizada tiene muchas ventajas y le ofrece muchas características interesantes, pero debe tener en cuenta que su identidad es conocida por otros hubs de la red $Projectname. Una de esas ventajas es que otros canales pueden servirte contenido personalizado y permitirte ver cosas privadas (como fotos privadas que otros desean compartir contigo). Por eso esos canales necesitan saber quién eres. Pero entendemos que a veces esos otros canales saben más de ti de lo que deseas. Por ejemplo el plug-in Visage que puede decirle al propietario de un canal la última vez que visites su perfil. Usted puede fácilmente OPT-OUT de este bajo nivel y, pensamos, seguimiento inofensivo.
-Puede habilitar [No rastrear (DNT)](http://donottrack.us/) en su navegador web. Respetamos esta nueva propuesta de política de privacidad. Todos los navegadores modernos soportan DNT. Lo encontrarás en la configuración de privacidad de tus navegadores o bien puedes consultar el manual del navegador. Esto no afectará a la funcionalidad de $Projectname. Este ajuste es probablemente suficiente para la mayoría de las personas.
+* Puede habilitar [No rastrear (DNT)](http://donottrack.us/)] en su navegador web. Respetamos esta nueva propuesta de política de privacidad. Todos los navegadores modernos soportan DNT. Lo encontrarás en la configuración de privacidad de tus navegadores o bien puedes consultar el manual del navegador. Esto no afectará a la funcionalidad de $Projectname. Este ajuste es probablemente suficiente para la mayoría de las personas.
-Puede [desactivar la publicación](configuración) de su canal en nuestro directorio de canales. Si quieres que la gente encuentre tu canal, debes darles la dirección de tu canal directamente a ellos. Creemos que esto es una buena indicación de que prefieres privacidad extra y habilitar automáticamente "No rastrear" si este es el caso.
+* Puede [desactivar la publicación](configuración) de su canal en nuestro directorio de canales. Si quieres que la gente encuentre tu canal, debes darles la dirección de tu canal directamente a ellos. Creemos que esto es una buena indicación de que prefieres privacidad extra y habilitar automáticamente "No rastrear" si este es el caso.
-Puedes tener un hub bloqueado. Esto significa que todos los canales y contenidos de ese hub no son públicos y no son visibles para el mundo exterior. Esto es algo que sólo el administrador del hub puede hacer. También respetamos esto y activamos automáticamente "No rastrear" si está configurado.
+* Puede tener un hub bloqueado. Esto significa que todos los canales y contenidos de ese hub no son públicos y no son visibles para el mundo exterior. Esto es algo que sólo el administrador del hub puede hacer. También respetamos esto y activamos automáticamente "No rastrear" si está configurado.
[h5]Censura[/h5]
@@ -97,6 +97,7 @@ $Projectname RECOMIENDA que los administradores de hubs proporcionen un período
Si usted típica y regularmente publica contenido de naturaleza adulta u ofensiva, se le recomienda encarecidamente que marque su cuenta "NSFW" (No es seguro para el trabajo). Esto evitará que se muestre la foto de tu perfil en el directorio, excepto a los espectadores que hayan optado por desactivar el "modo seguro". Si los administradores del directorio consideran que la foto de tu perfil es adulta u ofensiva, el administrador del directorio PUEDE marcar tu foto de perfil como NSFW. Actualmente no existe ningún mecanismo oficial para impugnar o revertir esta decisión, razón por la cual DEBERÍA usted marcar su propia cuenta NSFW si es probable que sea inapropiada para el público en general.
+
[h3]Créditos[/h3]
Gracias a todos los que han ayudado y contribuido al proyecto y a sus predecesores a lo largo de los años.
diff --git a/doc/es-es/git_for_non_developers.bb b/doc/es-es/git_for_non_developers.bb
index 7a3ab980b..904826f94 100644
--- a/doc/es-es/git_for_non_developers.bb
+++ b/doc/es-es/git_for_non_developers.bb
@@ -1,78 +1,78 @@
-[b]Git para no desarrolladores[/b]
-
-Así que está manejando una traducción, o está contribuyendo a un tema, y cada vez que hace un pull request tiene que hablar con uno de los desarrolladores antes de que sus cambios puedan ser fusionados?
-
-Lo más probable es que no haya encontrado una forma rápida de explicar cómo mantener las cosas sincronizadas en su lado. Es realmente muy fácil.
-
-Después de crear un fork del repositorio (sólo tiene que hacer clic en "fork" en github), necesita clonar su propia copia.
-
-Por ejemplo, asumiremos que está trabajando en un tema llamado redexample (que no existe).
-
-[code]git clone https://github.com/username/red.git[/code]
-
-Así que está manejando una traducción, o está contribuyendo a un tema, y cada vez que hace un pull request tiene que hablar con uno de los desarrolladores antes de que sus cambios puedan ser fusionados?
-
-Lo más probable es que no haya encontrado una forma rápida de explicar cómo mantener las cosas sincronizadas en su lado. Es realmente muy fácil.
-
-Después de crear un fork del repositorio (sólo tiene que hacer clic en "fork" en github), necesita clonar su propia copia.
-
-Por ejemplo, asumiremos que está trabajando en un tema llamado redexample (que no existe).
-
-Una vez que lo haya hecho, cd en el directorio, y añadir un upstream.
-
-[code]
-cd red
-git remote add upstream https://github.com/redmatrix/hubzilla
-[/code]
-
-A partir de ahora, puede realizar cambios en el upstream con el comando
-[code]git fetch upstream[/code]
-
-Antes de que sus cambios puedan fusionarse automáticamente, a menudo necesitará fusionar los cambios anteriores.
-
-[code]
-git merge upstream/master
-[/code]
-
-Siempre debe fusionar upstream antes de subir cualquier cambio, y [i]debe[/i] fusionar upstream con cualquier pull request para que se fusionen automáticamente.
-
-El 99% de las veces, todo irá bien. La única vez que no lo hará es si alguien más ha estado editando los mismos ficheros que usted y, a menudo, sólo si ha estado editando las mismas líneas de los mismos archivos. Si eso sucede, ese sería un buen momento para solicitar ayuda hasta que se acostumbre a manejar sus propios conflictos de fusión.
-
-Entonces sólo necesitas añadir tus cambios [code]git añadir vista/tema/redexample/[/code]
-
-Esto agregará todos los archivos en la vista/tema/redexample y cualquier subdirectorio. Si sus archivos particulares se mezclan a través del código, usted debe agregar uno a la vez. Trata de no hacer git add -a, ya que esto lo agregará todo, incluyendo archivos temporales (mayormente, pero no siempre atrapamos a aquellos con un.gitignore) y cualquier cambio local que tenga, pero que no intente confirmar.
-
-Una vez que haya agregado todos los archivos que ha cambiado, necesita confirmarlos. [code]git commit[/code]
-
-Esto abrirá un editor donde podrá describir los cambios que ha realizado. Guarde este archivo y salga del editor.
-
-Finalmente, suba los cambios en su propio git
-[code]git push[/code]
-
-Y eso es todo, su repo está al día!
-
-Todo lo que necesita hacer ahora es crear la petición pull. Hay dos maneras de hacerlo.
-
-La forma más fácil, si está utilizando Github, es simplemente hacer clic en el botón verde en la parte superior de su propia copia del repositorio, introducir una descripción de los cambios, y hacer clic en `crear pull request'. El repositorio principal, los temas y los complementos tienen su rama principal en Github, por lo que este método se puede utilizar la mayor parte del tiempo.
-
-La mayoría de la gente puede parar aquí.
-
-Algunos proyectos en la ecosfera extendida de RedMatrix no tienen presencia en Github, para un pull request, los pasos son un poco diferentes: usted tendrá que crear su pull request manualmente. Afortunadamente, esto no es
-mucho más difícil.
-
-[code]git request-pull -p <start> <url>[/code]
-
-Start es el nombre de un commit por el que empezar. Esto debe existir en el upstream. Normalmente, sólo querr'a la rama master.
-
-URL es la URL de[i]su[/i] repo.
-
-También se puede especificar <end>. Este valor predeterminado es HEAD.
-
-Ejemplo:
-[código]
-git request-pull master https://ejemplo.com/proyecto
-[/código]
-
-Y simplemente envíe la salida al mantenedor del proyecto.
-
-#include doc/macros/main_footer.bb;
+[b]Git para no desarrolladores[/b]
+
+Así que está manejando una traducción, o está contribuyendo a un tema, y cada vez que hace un pull request tiene que hablar con uno de los desarrolladores antes de que sus cambios puedan ser fusionados?
+
+Lo más probable es que no haya encontrado una forma rápida de explicar cómo mantener las cosas sincronizadas en su lado. Es realmente muy fácil.
+
+Después de crear un fork del repositorio (sólo tiene que hacer clic en "fork" en github), necesita clonar su propia copia.
+
+Por ejemplo, asumiremos que está trabajando en un tema llamado redexample (que no existe).
+
+[code]git clone https://github.com/username/red.git[/code]
+
+Así que está manejando una traducción, o está contribuyendo a un tema, y cada vez que hace un pull request tiene que hablar con uno de los desarrolladores antes de que sus cambios puedan ser fusionados?
+
+Lo más probable es que no haya encontrado una forma rápida de explicar cómo mantener las cosas sincronizadas en su lado. Es realmente muy fácil.
+
+Después de crear un fork del repositorio (sólo tiene que hacer clic en "fork" en github), necesita clonar su propia copia.
+
+Por ejemplo, asumiremos que está trabajando en un tema llamado redexample (que no existe).
+
+Una vez que lo haya hecho, cd en el directorio, y añadir un upstream.
+
+[code]
+cd red
+git remote add upstream https://framagit.org/hubzilla/core/
+[/code]
+
+A partir de ahora, puede realizar cambios en el upstream con el comando
+[code]git fetch upstream[/code]
+
+Antes de que sus cambios puedan fusionarse automáticamente, a menudo necesitará fusionar los cambios anteriores.
+
+[code]
+git merge upstream/master
+[/code]
+
+Siempre debe fusionar upstream antes de subir cualquier cambio, y [i]debe[/i] fusionar upstream con cualquier pull request para que se fusionen automáticamente.
+
+El 99% de las veces, todo irá bien. La única vez que no lo hará es si alguien más ha estado editando los mismos ficheros que usted y, a menudo, sólo si ha estado editando las mismas líneas de los mismos archivos. Si eso sucede, ese sería un buen momento para solicitar ayuda hasta que se acostumbre a manejar sus propios conflictos de fusión.
+
+Entonces sólo necesitas añadir tus cambios [code]git añadir vista/tema/redexample/[/code]
+
+Esto agregará todos los archivos en la vista/tema/redexample y cualquier subdirectorio. Si sus archivos particulares se mezclan a través del código, usted debe agregar uno a la vez. Trata de no hacer git add -a, ya que esto lo agregará todo, incluyendo archivos temporales (mayormente, pero no siempre atrapamos a aquellos con un.gitignore) y cualquier cambio local que tenga, pero que no intente confirmar.
+
+Una vez que haya agregado todos los archivos que ha cambiado, necesita confirmarlos. [code]git commit[/code]
+
+Esto abrirá un editor donde podrá describir los cambios que ha realizado. Guarde este archivo y salga del editor.
+
+Finalmente, suba los cambios en su propio git
+[code]git push[/code]
+
+Y eso es todo, su repo está al día!
+
+Todo lo que necesita hacer ahora es crear la petición pull. Hay dos maneras de hacerlo.
+
+La forma más fácil, si está utilizando Github, es simplemente hacer clic en el botón verde en la parte superior de su propia copia del repositorio, introducir una descripción de los cambios, y hacer clic en `crear pull request'. El repositorio principal, los temas y los complementos tienen su rama principal en Github, por lo que este método se puede utilizar la mayor parte del tiempo.
+
+La mayoría de la gente puede parar aquí.
+
+Algunos proyectos en la ecosfera extendida de RedMatrix no tienen presencia en Github, para un pull request, los pasos son un poco diferentes: usted tendrá que crear su pull request manualmente. Afortunadamente, esto no es
+mucho más difícil.
+
+[code]git request-pull -p <start> <url>[/code]
+
+Start es el nombre de un commit por el que empezar. Esto debe existir en el upstream. Normalmente, sólo querr'a la rama master.
+
+URL es la URL de[i]su[/i] repo.
+
+También se puede especificar <end>. Este valor predeterminado es HEAD.
+
+Ejemplo:
+[código]
+git request-pull master https://ejemplo.com/proyecto
+[/código]
+
+Y simplemente envíe la salida al mantenedor del proyecto.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/es-es/main.bb b/doc/es-es/main.bb
index 00d2e47bb..dff1717e4 100644
--- a/doc/es-es/main.bb
+++ b/doc/es-es/main.bb
@@ -2,7 +2,6 @@
[zrl=[baseurl]/help/about][b]¿Qué es $Projectname?[/b][/zrl]
$Projectname est un software de publicación y comunicación descentralizadas que le permite tener el control de sus necesidades y datos. Es ustedm y solo usted, quien decide a quién permite ver sus publicaciones.
-
[zrl=[baseurl]/help/features][b]Funcionaliades de $Projectname[/b][/zrl]
$Projectname es una red global distribuida que es flexible, pero puede crecer en potencia desde in pequeño sitio personal hasta albergar una comunidad de numerosas personas.
diff --git a/doc/external-resource-links.bb b/doc/external-resource-links.bb
index a679e9381..338db8023 100644
--- a/doc/external-resource-links.bb
+++ b/doc/external-resource-links.bb
@@ -1,21 +1,21 @@
-[h2]External resource links[/h2]
-[h3]Third-Party Themes[/h3]
-[ul]
-[*][url=https://github.com/omigeot/redstrap3]Redstrap[/url]
-[*][url=https://bitbucket.org/tobiasd/red-clean]Clean[/url]
-[*][url=https://github.com/tonybaldwin/redmatrixthemes/]nubasic[/url]
-[*][url=https://github.com/deadsuperhero/redmatrix-themes]Sean Tilley's themes[/url]
-[/ul]
-[h3]Third-Party addons[/h3]
-[ul]
-[*][url=https://abcentric.net/git/abcjsplugin.git]ABCjs integration - display scores in posts (WIP)[/url]
-[/ul]
-[h3]Related projects[/h3]
-[ul]
-[*][url=https://addons.mozilla.org/en-US/firefox/addon/redshare/]Redshare for Firefox[/url]
-[*][url=https://github.com/cvogeley/red-for-android]Red for Android[/url]
-[*][url=https://github.com/zzottel/feed2red]feed2red.pl (posts Atom/RSS feeds to channel)[/url]
-[*][url=https://wordpress.org/plugins/hubzilla-wp/]WordPress gateway (combine with wppost addon for full features)[/url]
-[/ul]
-
-#include doc/macros/main_footer.bb;
+[h2]External resource links[/h2]
+[h3]Third-Party Themes[/h3]
+[ul]
+[*][url=https://github.com/omigeot/redstrap3]Redstrap[/url]
+[*][url=https://bitbucket.org/tobiasd/red-clean]Clean[/url]
+[*][url=https://github.com/tonybaldwin/redmatrixthemes/]nubasic[/url]
+[*][url=https://github.com/deadsuperhero/redmatrix-themes]Sean Tilley's themes[/url]
+[/ul]
+[h3]Third-Party addons[/h3]
+[ul]
+[*][url=https://abcentric.net/git/abcjsplugin.git]ABCjs integration - display scores in posts (WIP)[/url]
+[/ul]
+[h3]Related projects[/h3]
+[ul]
+[*][url=https://addons.mozilla.org/en-US/firefox/addon/redshare/]Redshare for Firefox[/url]
+[*][url=https://github.com/cvogeley/red-for-android]Red for Android[/url]
+[*][url=https://github.com/zzottel/feed2red]feed2red.pl (posts Atom/RSS feeds to channel)[/url]
+[*][url=https://wordpress.org/plugins/hubzilla-wp/]WordPress gateway (combine with wppost addon for full features)[/url]
+[/ul]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/extra_features.bb b/doc/extra_features.bb
index 0044a06a7..17d85228e 100644
--- a/doc/extra_features.bb
+++ b/doc/extra_features.bb
@@ -1,98 +1,98 @@
-// multiple of these have been enabled by default. should we note this here somewhere, move it or remove them from this file?
-[b]Features[/b]
-
-The default interface of $Projectname was designed to be uncluttered. There are a huge number of extra features (some of which are extremely useful) which you can turn on and get the most of the application. These are found under the Extra Features link of your Settings page.
-
-[b]Content Expiration[/b]
-
-Remove posts/comments and/or private messages at a future time. An extra button is added to the post editor which asks you for an expiration. Typically this in &quot;yyyy-mm-dd hh:mm&quot; format, but in the English language you have a bit more freedom and can use most any recognisable date reference such as &quot;next Thursday&quot; or &quot;+1 day&quot;. At the specified time (give or take approximately ten minutes based on the remote system's checking frequency) the post is removed.
-
-[b]Multiple Profiles[/b]
-
-The ability to create multiple profiles which are visible only to specific persons or groups. Your default profile may be visible to anybody, but secondary profiles can all contain different or additional information and can only be seen by those to whom that profile is assigned.
-
-[b]Web Pages[/b]
-
-Provides the ability to use web page design feaures and create custom webpages from your own content and also to design the pages with page layouts, custom menus, and content blocks.
-
-[b]Private Notes[/b]
-
-On pages where it is available (your matrix page and personal web pages) provide a &quot;widget&quot; to create and store personal reminders and notes.
-
-[b]Extended Identity Sharing[/b]
-
-By default your identity travels with you as you browse the matrix to remote sites - and they know who you are and can show you content that only you can see. With Extended Identity Sharing you can provide this information to any website you visit from within the matrix.
-
-[b]Expert Mode[/b]
-
-This allows you to see some advanced configuration options that would confuse some people or cause support issues. In particular this can give you full control over theme features and colours - so that you can tweak a large number of settings of the display theme to your liking.
-
-[b]Premium Channel[/b]
-
-This allows you to set restrictions and terms on those that connect with your channel. This may be used by celebrities or anybody else who wishes to describe their channel to people who wish to connect with it. In certain cases you may be asked for payment in order to connect.
-
-[b]Post Preview[/b]
-
-Allows previewing posts and comments exactly as they would look on the page before publishing them.
-
-[b]Channel Sources[/b]
-
-Automatically import and re-publish channel content from other channels or feeds. This allows you to create sub-channels and super-channels from content provided elsewhere. The rules are that the content must be public, and the channel owner must give you permission to source their channel.
-
-[b]Even More Encryption[/b]
-
-Private messages are encrypted during transport and storage. In this day and age, this encyption may not be enough if your communications are extremely sensitive. This options lets you provide optional encryption of content &quot;end-to-end&quot; with a shared secret key. How the recipient learns the secret key is completely up to you. You can provide a hint such as &quot;the name of aunt Claire's first dog&quot;.
-
-[b]Search by Date[/b]
-
-This provides the ability to select posts by date ranges
-
-[b]Privacy Group Filter[/b]
-
-Enable widget to display stream posts only from selected privacy groups. This also toggles the outbound permissions while you are viewing a group. This is analogous to Google &quot;circles&quot; or Disapora &quot;aspects&quot;.
-
-[b]Saved Searches[/b]
-
-Provides a search widget on your matrix page which can save selected search terms for re-use.
-
-[b]Personal Tab[/b]
-
-Enable tab to display only matrix posts that you've interacted with in some way, as an author or a contributor to the conversation.
-
-[b]New Tab[/b]
-
-Enables a tab to display all new matrix activity as a firehose or timeline.
-
-[b]Affinity Tool[/b]
-
-Filter matrix stream activity by the depth of your relationships
-
-[b]Edit Sent Posts[/b]
-
-Edit and correct posts and comments after sending
-
-[b]Tagging[/b]
-
-Ability to tag existing posts, including those written by others.
-
-[b]Post Categories[/b]
-
-Add categories to your channel posts
-
-[b]Saved Folders[/b]
-
-Ability to file posts under folders or tags for later recall
-
-[b]Dislike Posts[/b]
-
-Ability to dislike posts/comments
-
-[b]Star Posts[/b]
-
-Ability to mark special posts with a star indicator
-
-[b]Tag Cloud[/b]
-
-Provide a personal tag cloud on your channel page
-
-#include doc/macros/main_footer.bb;
+// multiple of these have been enabled by default. should we note this here somewhere, move it or remove them from this file?
+[b]Features[/b]
+
+The default interface of $Projectname was designed to be uncluttered. There are a huge number of extra features (some of which are extremely useful) which you can turn on and get the most of the application. These are found under the Extra Features link of your Settings page.
+
+[b]Content Expiration[/b]
+
+Remove posts/comments and/or private messages at a future time. An extra button is added to the post editor which asks you for an expiration. Typically this in &quot;yyyy-mm-dd hh:mm&quot; format, but in the English language you have a bit more freedom and can use most any recognisable date reference such as &quot;next Thursday&quot; or &quot;+1 day&quot;. At the specified time (give or take approximately ten minutes based on the remote system's checking frequency) the post is removed.
+
+[b]Multiple Profiles[/b]
+
+The ability to create multiple profiles which are visible only to specific persons or groups. Your default profile may be visible to anybody, but secondary profiles can all contain different or additional information and can only be seen by those to whom that profile is assigned.
+
+[b]Web Pages[/b]
+
+Provides the ability to use web page design feaures and create custom webpages from your own content and also to design the pages with page layouts, custom menus, and content blocks.
+
+[b]Private Notes[/b]
+
+On pages where it is available (your matrix page and personal web pages) provide a &quot;widget&quot; to create and store personal reminders and notes.
+
+[b]Extended Identity Sharing[/b]
+
+By default your identity travels with you as you browse the matrix to remote sites - and they know who you are and can show you content that only you can see. With Extended Identity Sharing you can provide this information to any website you visit from within the matrix.
+
+[b]Expert Mode[/b]
+
+This allows you to see some advanced configuration options that would confuse some people or cause support issues. In particular this can give you full control over theme features and colours - so that you can tweak a large number of settings of the display theme to your liking.
+
+[b]Premium Channel[/b]
+
+This allows you to set restrictions and terms on those that connect with your channel. This may be used by celebrities or anybody else who wishes to describe their channel to people who wish to connect with it. In certain cases you may be asked for payment in order to connect.
+
+[b]Post Preview[/b]
+
+Allows previewing posts and comments exactly as they would look on the page before publishing them.
+
+[b]Channel Sources[/b]
+
+Automatically import and re-publish channel content from other channels or feeds. This allows you to create sub-channels and super-channels from content provided elsewhere. The rules are that the content must be public, and the channel owner must give you permission to source their channel.
+
+[b]Even More Encryption[/b]
+
+Private messages are encrypted during transport and storage. In this day and age, this encyption may not be enough if your communications are extremely sensitive. This options lets you provide optional encryption of content &quot;end-to-end&quot; with a shared secret key. How the recipient learns the secret key is completely up to you. You can provide a hint such as &quot;the name of aunt Claire's first dog&quot;.
+
+[b]Search by Date[/b]
+
+This provides the ability to select posts by date ranges
+
+[b]Privacy Group Filter[/b]
+
+Enable widget to display stream posts only from selected privacy groups. This also toggles the outbound permissions while you are viewing a group. This is analogous to Google &quot;circles&quot; or Disapora &quot;aspects&quot;.
+
+[b]Saved Searches[/b]
+
+Provides a search widget on your matrix page which can save selected search terms for re-use.
+
+[b]Personal Tab[/b]
+
+Enable tab to display only matrix posts that you've interacted with in some way, as an author or a contributor to the conversation.
+
+[b]New Tab[/b]
+
+Enables a tab to display all new matrix activity as a firehose or timeline.
+
+[b]Affinity Tool[/b]
+
+Filter matrix stream activity by the depth of your relationships
+
+[b]Edit Sent Posts[/b]
+
+Edit and correct posts and comments after sending
+
+[b]Tagging[/b]
+
+Ability to tag existing posts, including those written by others.
+
+[b]Post Categories[/b]
+
+Add categories to your channel posts
+
+[b]Saved Folders[/b]
+
+Ability to file posts under folders or tags for later recall
+
+[b]Dislike Posts[/b]
+
+Ability to dislike posts/comments
+
+[b]Star Posts[/b]
+
+Ability to mark special posts with a star indicator
+
+[b]Tag Cloud[/b]
+
+Provide a personal tag cloud on your channel page
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/feature/additional/access.md b/doc/feature/additional/access.md
index 3581ca11d..b7f0df717 100644
--- a/doc/feature/additional/access.md
+++ b/doc/feature/additional/access.md
@@ -17,10 +17,10 @@ Ability to create multiple profiles.
Minimum required technical skill level to see this feature: 3
-### Permission Groups
+### Permission Categories
-Provide alternate connection permission roles.
-<!-- TODO: full description for Permission Groups -->
+Provide alternate connection permission limits.
+<!-- TODO: full description for Permission Categories -->
Minimum required technical skill level to see this feature: 2
diff --git a/doc/fr/TermsOfService.md b/doc/fr/TermsOfService.md
new file mode 100644
index 000000000..c51224e14
--- /dev/null
+++ b/doc/fr/TermsOfService.md
@@ -0,0 +1,10 @@
+Politique de confidentialité
+==============
+
+#include doc/gdpr1.md;
+
+
+Conditions d'utilisation
+================
+
+#include doc/SiteTOS.md;
diff --git a/doc/fr/about/about.bb b/doc/fr/about/about.bb
index de736bff2..0c0463d7c 100644
--- a/doc/fr/about/about.bb
+++ b/doc/fr/about/about.bb
@@ -14,7 +14,7 @@ Du point de vue pratique des membres du hub qui utilisent le logiciel, $Projectn
Alors que toutes ces applications et services peuvent être trouvés dans d'autres progiciels, seul $Projectname vous permet de définir des permissions pour des groupes et des individus qui n'ont peut-être même pas de comptes sur votre hub ! Dans les applications web typiques, si vous voulez partager des choses en privé sur Internet, les personnes avec qui vous partagez doivent avoir des comptes sur le serveur hébergeant vos données ; autrement, il n'y a pas de moyen robuste pour votre serveur [i]d'authentifier[/i] les visiteurs du site pour savoir s'ils doivent leur accorder l'accès. $Projectname résout ce problème avec un système avancé [i]d'authentification à distance[/i] qui valide l'identité des visiteurs en employant des techniques qui incluent la cryptographie à clé publique.
[h3]Pile logicielle[/h3].
-La pile logicielle $Projectname est une application serveur web relativement standard écrite principalement en PHP/MySQL et [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt] nécessitant un peu plus qu'un serveur web, une base de données compatible MySQL, et le langage de script PHP[/url]. Il est conçu pour être facilement installable par ceux qui ont des compétences de base en administration de sites Web sur des plates-formes d'hébergement mutualisé typiques avec une large gamme de matériel informatique. Il est aussi facilement extensible via des plugins et des thèmes et d'autres outils tiers.
+La pile logicielle $Projectname est une application serveur web relativement standard écrite principalement en PHP/MySQL et [url=https://framagit.org/hubzilla/core/blob/master/install/INSTALL.txt] nécessitant un peu plus qu'un serveur web, une base de données compatible MySQL, et le langage de script PHP[/url]. Il est conçu pour être facilement installable par ceux qui ont des compétences de base en administration de sites Web sur des plates-formes d'hébergement mutualisé typiques avec une large gamme de matériel informatique. Il est aussi facilement extensible via des plugins et des thèmes et d'autres outils tiers.
[h3]Glossaire[/h3].
[dl terms="b"]
diff --git a/doc/fr/gdpr1.md b/doc/fr/gdpr1.md
new file mode 100644
index 000000000..bc0dfe056
--- /dev/null
+++ b/doc/fr/gdpr1.md
@@ -0,0 +1,77 @@
+Avis de confidentialité Mai 2018
+
+Comment vos informations seront utilisées
+=================================
+
+Les informations que vous fournissez à ce site Web peuvent être stockées et utilisées pour vous fournir des services.
+
+Nous avons besoin d'une adresse e-mail pour identifier le titulaire du compte. Ceci ne sera pas partagé avec tout autre site Web ou service. Il est utilisé pour vous envoyer des notifications concernant votre compte et effectuer des tâches administratives telles que la réinitialisation de votre mot de passe. Vous avez la possibilité de refuser toutes les notifications par courriel par le biais de vos paramètres.
+
+Les canaux de communication créés sur ce site web nécessitent un nom et une photo ou un avatar. Un avatar par défaut sera choisi si vous n'en fournissez pas. Le nom, l'avatar, et un lien vers la page web du canal sera partagée avec d'autres serveurs et services afin de se référer à cette identité. Le nom n'a pas besoin d'être votre vrai nom et la photo ou l'avatar n'a pas besoin de vous ressembler.
+
+Toutes les autres informations que vous fournissez à ce site Web sont facultatives.
+
+En tant que service de communication sociale et de stockage dans les nuages, vous utiliserez généralement ce site Web pour partager des informations avec d'autres personnes. Nous fournissons une gamme d'options de confidentialité pour vous permettre de limiter ce partage à ceux que vous choisissez.
+
+Traitement de vos informations
+==============================
+
+Notre traitement de vos informations est limité à leur stockage pour que vous puissiez les utiliser. Nous POUVONS tenir des registres d'activité pour aider à diagnostiquer les problèmes de logiciel et à maintenir la sécurité du système contre
+intrusion. Ces journaux sont régulièrement effacés après quelques jours.
+
+Nous PEUVONS (si vous avez fourni cette permission) essayer de suggérer des amitiés ou des connexions basées sur des amitiés
+sur l'analyse des informations accessibles au public concernant vos connexions. Il s'agit actuellement du "traitement" de données le plus avancé effectué sur ce site Web. Vous pouvez restreindre l'accès à ces informations si ce traitement n'est pas souhaité.
+
+S'il est fourni, nous PEUVONS utiliser votre sexe pour formuler des messages texte dans votre langue maternelle.
+
+Dans tous les autres cas, vos données sont stockées dans le cadre de la politique de confidentialité de votre choix et au mieux.
+de notre capacité n'est partagée qu'avec ceux avec qui vous avez choisi de la partager.
+
+Nous ne partageons pas vos informations personnelles avec des tiers et n'analysons pas votre comportement ou vos informations personnelles.
+Nous n'avons pas de publicité ou de relations d'affaires avec les annonceurs.
+
+Nous PEUVONS être invités ou forcés de divulguer les informations que vous nous avez fournies en réponse à des procédures pénales et judiciaires légitimes. Dans la mesure du possible, nous vous en aviserons si cela se produit.
+
+Accès à vos informations
+==========================
+
+Certaines communications sont partagées avec d'autres sites Web. Ceux qui utilisent le même logiciel vont généralement
+ont des politiques similaires en matière de protection de la vie privée.
+
+Il se peut que l'on vous montre des vidéos intégrées et des liens fournis pour visiter d'autres sites Web dans le cadre de vos activités quotidiennes à l'aide de ce site Web. Cette mai vous exposer à la surveillance par des services externes, tels que (mais non limité à) Facebook, Twitter et Google. Chaque opérateur de site Web est autorisé à configurer si le contenu intégré est autorisé ou non.
+
+L'accès à vos données personnelles et aux fichiers stockés est sous votre contrôle.
+
+Notre stockage de vos données est fourni sous votre consentement implicite par le biais de votre utilisation continue du service. Vous pouvez retirer ce consentement à tout moment et, en cas de suppression de compte, nous supprimerons toutes les toutes les données qui vous appartiennent. Le processus de suppression peut prendre plusieurs jours, car nous faisons également tout notre possible pour le supprimer de tous les sites Internet qui ont reçu une copie.
+
+Toutes les données et tous les fichiers stockés pour un canal de communication sont à votre disposition pour
+télécharger pour les pupilles d'archives ou pour les transférer sur un autre site Web compatible.
+
+Vos droits
+===========
+
+En vertu du règlement général sur la protection des données
+(GDPR) et la Loi sur la protection des données 2018 (DPA) , vous disposez d'un certain nombre de droits en ce qui concerne vos données personnelles.
+Vous avez le droit de nous demander l'accès et la rectification ou l'effacement de vos données personnelles, le droit de restreindre le traitement, de s'opposer au traitement ainsi que, dans certaines circonstances, le droit à la portabilité des données.
+
+Si vous avez donné votre consentement au traitement de vos données, vous avez le droit (dans certaines circonstances) de retirer ce consentement à tout moment, ce qui n'affectera pas la licéité du traitement avant le retrait de votre consentement.
+
+Vous avez le droit de déposer une plainte auprès du Commissariat à l'information si vous estimez que nous n'avons pas respecté les exigences du GDPR ou de la DPA 18 en ce qui concerne vos données personnelles.
+
+Identité et coordonnées du responsable du traitement et du délégué à la protection des données
+
+[NOM DE L'ENTREPRISE]
+est le contrôleur [et le processeur]
+des données aux fins de la LPD 18 et du RDPPIB. 3
+
+Si vous avez des questions sur la manière dont vos données sont traitées, vous pouvez nous contacter :
+
+[NOM]
+Offre de protection des données à
+[COURRIEL]
+
+[NOM] [TITRE]
+[COURRIEL]
+
+ou vous pouvez écrire à l'adresse suivante []
diff --git a/doc/gdpr1.md b/doc/gdpr1.md
new file mode 100644
index 000000000..daa401a3d
--- /dev/null
+++ b/doc/gdpr1.md
@@ -0,0 +1,114 @@
+
+Privacy Notice May 2018
+
+How your information will be used
+=================================
+
+Information you provide to this website may be stored and used to provide services to you.
+
+We require an email address to idenitfy the account holder. This will not be shared with
+any other website or service. It is used to send you notifications about your account and
+perform administrative tasks such as resetting your password. You have the option to
+opt-out of all email notifications through your settings.
+
+Communication channels created on this website require a name and a photo or avatar. A
+default avatar will be chosen if you do not supply one. The name, avatar, and a link to
+the channel webpage will be shared with other servers and services in order to refer to
+this identity. The name does not need to be your real name and the photo or avatar does
+not need to resemble you.
+
+All other information you supply to this website is optional.
+
+As a social communication and cloud storage service, you will usually be using this website
+to share information with others. We provide a range of privacy options to allow you to
+restrict this sharing to only those you choose.
+
+
+Processing of your information
+==============================
+
+Our processing of your information is limited to storing it for you to use. We MAY keep logs
+of activity to help diagnose software issues and to maintain security of the system against
+intrusion. These logs are routinely deleted after a few days.
+
+We MAY (if you have provided this permission) try to suggest frendships or connections based
+on analysing publicly available information about your connections. This is currently the most
+advanced data "processing" performed at this website. You may restrict access to this information
+if this processing is undesired.
+
+If supplied, we MAY use your gender to formulate text messages in your native language, for
+instance "Bob commented on HIS post."
+
+In all other cases, your data is stored under your desired privacy policy and to the best
+of our ability is only shared with those who you have elected to share it with.
+
+We do not share your private information with third parties or analyse your behaviour or personal
+characteristics. We have no advertisements or business relationships with advertisers.
+
+We MAY be asked or forced to divulge information provided by you in response to legitimate
+criminal and legal proceedings. Where possible we will notify you if this happens.
+
+
+Access to your information
+==========================
+
+Some communications are shared with other websites. Those using the same software will usually
+have similar privacy policies.
+
+
+You may be shown embedded videos and provided links to visit other websites as part of your
+day-to-day activities using this website. This MAY expose you to monitoring by external services, such
+as (but not limited to) Facebook, Twitter, and Google. Each website operator is allowed to configure
+whether or not embedded content is permitted.
+
+Further access to your personal data and stored files is under your control.
+
+Our storage of your data is provided under your implied consent through your continued use of
+the service. You may withdraw this consent at any time and on account deletion we will remove
+all data which belongs to you. The process of deletion may take several days as we also make a good faith
+effort to delete it from any internetworked websites that have been provided a copy.
+
+
+All data and files stored for a communications channel are available for you to
+download for either archival puposes or to transfer to another compatible website.
+
+
+
+Your rights
+===========
+
+Under the General Data Protection Regulation
+(GDPR) and The Data Protection Act 2018
+(DPA) you have a number of rights with regard to your personal data.
+You have the right to request from us access to and rectification or erasure of your personal data,
+the right to restrict processing, object to processing as well as in certain circumstances the right
+to data portability.
+
+If you have provided consent for the processing of your data you have the right (in certain
+circumstances) to withdraw that consent at any time which will not affect the lawfulness of
+the processing before your consent was withdrawn.
+
+You have the right to lodge a complaint to the Information Commissioners’ Office if you
+believe that we have not complied with the requirements of the GDPR or DPA 18 with regard
+to your personal data.
+
+Identity and contact details of controller and data protection officer
+
+[NAME OF COMPANY]
+is the controller
+[and processor]
+of data for the purposes of the DPA 18 and GDPR. 3
+
+If you have any concerns as to how your data is processed you can contact:
+
+[
+[NAME]
+Data Protection Offer at
+[EMAIL ADDRESS]
+]
+[NAME] [JOB TITLE]
+at
+[EMAIL ADDRESS]
+or you can write to these
+individuals using the address of
+[]
diff --git a/doc/general.bb b/doc/general.bb
index 8390aceb3..0b80db756 100644
--- a/doc/general.bb
+++ b/doc/general.bb
@@ -6,8 +6,8 @@
[h3]External resources[/h3]
[zrl=[baseurl]/help/external-resource-links]List of external resources[/zrl]
-[url=https://github.com/redmatrix/hubzilla]Main Website[/url]
-[url=https://github.com/redmatrix/hubzilla-addons]Addon Website[/url]
+[url=https://framagit.org/hubzilla/core/]Main Website[/url]
+[url=https://framagit.org/hubzilla/addons]Addon Website[/url]
[url=[baseurl]/help/credits]$Projectname Credits[/url]
[h3]About this $Projectname hub[/h3]
[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
diff --git a/doc/git_for_non_developers.bb b/doc/git_for_non_developers.bb
index 80c11024b..5fba17439 100644
--- a/doc/git_for_non_developers.bb
+++ b/doc/git_for_non_developers.bb
@@ -1,71 +1,71 @@
-[b]Git For Non-Developers[/b]
-
-So you're handling a translation, or you're contributing to a theme, and every time you make a pull request you have to talk to one of the developers before your changes can be merged in?
-
-Chances are, you just haven't found a quick how-to explaining how to keep things in sync on your end. It's really very easy.
-
-After you've created a fork of the repo (just click &quot;fork&quot; at github), you need to clone your own copy.
-
-For the sake of examples, we'll assume you're working on a theme called redexample (which does not exist).
-
-[code]git clone https://github.com/username/red.git[/code]
-
-Once you've done that, cd into the directory, and add an upstream.
-
-[code]
-cd red
-git remote add upstream https://github.com/redmatrix/hubzilla
-[/code]
-
-From now on, you can pull upstream changes with the command
-[code]git fetch upstream[/code]
-
-Before your changes can be merged automatically, you will often need to merge upstream changes.
-
-[code]
-git merge upstream/master
-[/code]
-
-You should always merge upstream before pushing any changes, and [i]must[/i] merge upstream with any pull requests to make them automatically mergeable.
-
-99% of the time, this will all go well. The only time it won't is if somebody else has been editing the same files as you - and often, only if they have been editing the same lines of the same files. If that happens, that would be a good time to request help until you get the hang of handling your own merge conflicts.
-
-Then you just need to add your changes [code]git add view/theme/redexample/[/code]
-
-This will add all the files in view/theme/redexample and any subdirectories. If your particular files are mixed throughout the code, you should add one at a time. Try not to do git add -a, as this will add everything, including temporary files (we mostly, but not always catch those with a .gitignore) and any local changes you have, but did not intend to commit.
-
-Once you have added all the files you have changed, you need to commit them. [code]git commit[/code]
-
-This will open up an editor where you can describe the changes you have made. Save this file, and exit the editor.
-
-Finally, push the changes to your own git
-[code]git push[/code]
-
-And that's it, your repo is up to date!
-
-All you need to do now is actually create the pull request. There are two ways to do this.
-
-The easy way, if you're using Github is to simply click the green button at the top of your own copy of the repository, enter a description of the changes, and click 'create pull request'. The
-main repository, themes, and addons all have their main branch at Github, so this method can be used most of the time.
-
-Most people can stop here.
-
-Some projects in the extended RedMatrix ecosphere have no Github presence, to pull request these is a bit different - you'll have to create your pull request manually. Fortunately, this isn't
-much harder.
-
-[code]git request-pull -p <start> <url>[/code]
-
-Start is the name of a commit to start at. This must exist upstream. Normally, you just want master.
-
-URL is the URL of [i]your[/i] repo.
-
-One can also specify <end>. This defaults to HEAD.
-
-Example:
-[code]
-git request-pull master https://example.com/project
-[/code]
-
-And simply send the output to the project maintainer.
-
-#include doc/macros/main_footer.bb;
+[b]Git For Non-Developers[/b]
+
+So you're handling a translation, or you're contributing to a theme, and every time you make a pull request you have to talk to one of the developers before your changes can be merged in?
+
+Chances are, you just haven't found a quick how-to explaining how to keep things in sync on your end. It's really very easy.
+
+After you've created a fork of the repo (just click &quot;fork&quot; at github), you need to clone your own copy.
+
+For the sake of examples, we'll assume you're working on a theme called redexample (which does not exist).
+
+[code]git clone https://github.com/username/red.git[/code]
+
+Once you've done that, cd into the directory, and add an upstream.
+
+[code]
+cd red
+git remote add upstream https://framagit.org/hubzilla/core/
+[/code]
+
+From now on, you can pull upstream changes with the command
+[code]git fetch upstream[/code]
+
+Before your changes can be merged automatically, you will often need to merge upstream changes.
+
+[code]
+git merge upstream/master
+[/code]
+
+You should always merge upstream before pushing any changes, and [i]must[/i] merge upstream with any pull requests to make them automatically mergeable.
+
+99% of the time, this will all go well. The only time it won't is if somebody else has been editing the same files as you - and often, only if they have been editing the same lines of the same files. If that happens, that would be a good time to request help until you get the hang of handling your own merge conflicts.
+
+Then you just need to add your changes [code]git add view/theme/redexample/[/code]
+
+This will add all the files in view/theme/redexample and any subdirectories. If your particular files are mixed throughout the code, you should add one at a time. Try not to do git add -a, as this will add everything, including temporary files (we mostly, but not always catch those with a .gitignore) and any local changes you have, but did not intend to commit.
+
+Once you have added all the files you have changed, you need to commit them. [code]git commit[/code]
+
+This will open up an editor where you can describe the changes you have made. Save this file, and exit the editor.
+
+Finally, push the changes to your own git
+[code]git push[/code]
+
+And that's it, your repo is up to date!
+
+All you need to do now is actually create the pull request. There are two ways to do this.
+
+The easy way, if you're using Github is to simply click the green button at the top of your own copy of the repository, enter a description of the changes, and click 'create pull request'. The
+main repository, themes, and addons all have their main branch at Github, so this method can be used most of the time.
+
+Most people can stop here.
+
+Some projects in the extended RedMatrix ecosphere have no Github presence, to pull request these is a bit different - you'll have to create your pull request manually. Fortunately, this isn't
+much harder.
+
+[code]git request-pull -p <start> <url>[/code]
+
+Start is the name of a commit to start at. This must exist upstream. Normally, you just want master.
+
+URL is the URL of [i]your[/i] repo.
+
+One can also specify <end>. This defaults to HEAD.
+
+Example:
+[code]
+git request-pull master https://example.com/project
+[/code]
+
+And simply send the output to the project maintainer.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/intro_for_developers.bb b/doc/intro_for_developers.bb
index 99dd8f8f3..6ef7a4d9e 100644
--- a/doc/intro_for_developers.bb
+++ b/doc/intro_for_developers.bb
@@ -1,113 +1,113 @@
-[b]$Projectname Developer Guide[/b]
-
-[b]File system layout:[/b]
-
-[addon] optional addons/plugins
-
-[boot.php] Every process uses this to bootstrap the application structure
-
-[doc] Help Files
-
-[images] core required images
-
-[include] The &quot;model&quot; in MVC - (back-end functions), also contains PHP &quot;executables&quot; for background processing
-
-[index.php] The front-end controller for web access
-
-[install] Installation and upgrade files and DB schema
-
-[library] Third party modules (must be license compatible)
-
-[mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)
-
-[mod/site/] site-specific mod overrides, excluded from git
-
-[util] translation tools, main English string database and other miscellaneous utilities
-
-[version.inc] contains current version (auto-updated via cron for the master repository and distributed via git)
-
-[view] theming and language files
-
-[view/(css,js,img,php,tpl)] default theme files
-
-[view/(en,it,es ...)] language strings and resources
-
-[view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides
-
-[b]The Database:[/b]
-
- [li]abook - contact table, replaces Friendica 'contact'[/li]
- [li]account - service provider account[/li]
- [li]addon - registered plugins[/li]
- [li]app - peronal app data[/li]
- [li]attach - file attachments[/li]
- [li]auth_codes - OAuth usage[/li]
- [li]cache - OEmbed cache[/li]
- [li]channel - replaces Friendica 'user'[/li]
- [li]chat - chat room content[/li]
- [li]chatpresence - channel presence information for chat[/li]
- [li]chatroom - data for the actual chat room[/li]
- [li]clients - OAuth usage[/li]
- [li]config - main configuration storage[/li]
- [li]conv - Diaspora private messages[/li]
- [li]event - Events[/li]
- [li]fcontact - friend suggestion stuff[/li]
- [li]ffinder - friend suggestion stuff[/li]
- [li]fserver - obsolete[/li]
- [li]fsuggest - friend suggestion stuff[/li]
- [li]groups - privacy groups[/li]
- [li]group_member - privacy groups[/li]
- [li]hook - plugin hook registry[/li]
- [li]hubloc - Red location storage, ties a location to an xchan[/li]
- [li]item - posts[/li]
- [li]item_id - other identifiers on other services for posts[/li]
- [li]likes - likes of 'things'[/li]
- [li]mail - private messages[/li]
- [li]menu - channel menu data[/li]
- [li]menu_item - items uses by channel menus[/li]
- [li]notify - notifications[/li]
- [li]notify-threads - need to factor this out and use item thread info on notifications[/li]
- [li]obj - object data for things (x has y)[/li]
- [li]outq - output queue[/li]
- [li]pconfig - personal (per channel) configuration storage[/li]
- [li]photo - photo storage[/li]
- [li]poll - data for polls[/li]
- [li]poll_elm - data for poll elements[/li]
- [li]profdef - custom profile field definitions[/li]
- [li]profext - custom profile field data[/li]
- [li]profile - channel profiles[/li]
- [li]profile_check - DFRN remote auth use, may be obsolete[/li]
- [li]register - registrations requiring admin approval[/li]
- [li]session - web session storage[/li]
- [li]shares - shared item information[/li]
- [li[sign - Diaspora signatures. To be phased out.[/li]
- [li]site - site table to find directory peers[/li]
- [li]source - channel sources data[/li]
- [li]spam - unfinished[/li]
- [li]sys_perms - extensible permissions for the sys channel[/li]
- [li]term - item taxonomy (categories, tags, etc.) table[/li]
- [li]tokens - OAuth usage[/li]
- [li]updates - directory sync updates[/li]
- [li]verify - general purpose verification structure[/li]
- [li]vote - vote data for polls[/li]
- [li]xchan - replaces 'gcontact', list of known channels in the universe[/li]
- [li]xchat - bookmarked chat rooms[/li]
- [li]xconfig - as pconfig but for channels with no local account[/li]
- [li]xlink - &quot;friends of friends&quot; linkages derived from poco[/li]
- [li]xprof - if this hub is a directory server, contains basic public profile info of everybody in the network[/li]
- [li]xtag - if this hub is a directory server, contains tags or interests of everybody in the network[/li]
-
-
-[b]How to theme $Projectname - by Olivier Migeot[/b]
-
-This is a short documentation on what I found while trying to modify $Projectname's appearance.
-
-First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it .
-
-Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init().
-
-At that point, if you need to add javascript or css files, add them to /js or /css, and then &quot;register&quot; them in _init() through head_add_js('file.js') and head_add_css('file.css').
-
-Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.
-
-#include doc/macros/main_footer.bb;
+[b]$Projectname Developer Guide[/b]
+
+[b]File system layout:[/b]
+
+[addon] optional addons/plugins
+
+[boot.php] Every process uses this to bootstrap the application structure
+
+[doc] Help Files
+
+[images] core required images
+
+[include] The &quot;model&quot; in MVC - (back-end functions), also contains PHP &quot;executables&quot; for background processing
+
+[index.php] The front-end controller for web access
+
+[install] Installation and upgrade files and DB schema
+
+[library] Third party modules (must be license compatible)
+
+[mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)
+
+[mod/site/] site-specific mod overrides, excluded from git
+
+[util] translation tools, main English string database and other miscellaneous utilities
+
+[version.inc] contains current version (auto-updated via cron for the master repository and distributed via git)
+
+[view] theming and language files
+
+[view/(css,js,img,php,tpl)] default theme files
+
+[view/(en,it,es ...)] language strings and resources
+
+[view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides
+
+[b]The Database:[/b]
+
+ [li]abook - contact table, replaces Friendica 'contact'[/li]
+ [li]account - service provider account[/li]
+ [li]addon - registered plugins[/li]
+ [li]app - peronal app data[/li]
+ [li]attach - file attachments[/li]
+ [li]auth_codes - OAuth usage[/li]
+ [li]cache - OEmbed cache[/li]
+ [li]channel - replaces Friendica 'user'[/li]
+ [li]chat - chat room content[/li]
+ [li]chatpresence - channel presence information for chat[/li]
+ [li]chatroom - data for the actual chat room[/li]
+ [li]clients - OAuth usage[/li]
+ [li]config - main configuration storage[/li]
+ [li]conv - Diaspora private messages[/li]
+ [li]event - Events[/li]
+ [li]fcontact - friend suggestion stuff[/li]
+ [li]ffinder - friend suggestion stuff[/li]
+ [li]fserver - obsolete[/li]
+ [li]fsuggest - friend suggestion stuff[/li]
+ [li]groups - privacy groups[/li]
+ [li]group_member - privacy groups[/li]
+ [li]hook - plugin hook registry[/li]
+ [li]hubloc - Red location storage, ties a location to an xchan[/li]
+ [li]item - posts[/li]
+ [li]item_id - other identifiers on other services for posts[/li]
+ [li]likes - likes of 'things'[/li]
+ [li]mail - private messages[/li]
+ [li]menu - channel menu data[/li]
+ [li]menu_item - items uses by channel menus[/li]
+ [li]notify - notifications[/li]
+ [li]notify-threads - need to factor this out and use item thread info on notifications[/li]
+ [li]obj - object data for things (x has y)[/li]
+ [li]outq - output queue[/li]
+ [li]pconfig - personal (per channel) configuration storage[/li]
+ [li]photo - photo storage[/li]
+ [li]poll - data for polls[/li]
+ [li]poll_elm - data for poll elements[/li]
+ [li]profdef - custom profile field definitions[/li]
+ [li]profext - custom profile field data[/li]
+ [li]profile - channel profiles[/li]
+ [li]profile_check - DFRN remote auth use, may be obsolete[/li]
+ [li]register - registrations requiring admin approval[/li]
+ [li]session - web session storage[/li]
+ [li]shares - shared item information[/li]
+ [li[sign - Diaspora signatures. To be phased out.[/li]
+ [li]site - site table to find directory peers[/li]
+ [li]source - channel sources data[/li]
+ [li]spam - unfinished[/li]
+ [li]sys_perms - extensible permissions for the sys channel[/li]
+ [li]term - item taxonomy (categories, tags, etc.) table[/li]
+ [li]tokens - OAuth usage[/li]
+ [li]updates - directory sync updates[/li]
+ [li]verify - general purpose verification structure[/li]
+ [li]vote - vote data for polls[/li]
+ [li]xchan - replaces 'gcontact', list of known channels in the universe[/li]
+ [li]xchat - bookmarked chat rooms[/li]
+ [li]xconfig - as pconfig but for channels with no local account[/li]
+ [li]xlink - &quot;friends of friends&quot; linkages derived from poco[/li]
+ [li]xprof - if this hub is a directory server, contains basic public profile info of everybody in the network[/li]
+ [li]xtag - if this hub is a directory server, contains tags or interests of everybody in the network[/li]
+
+
+[b]How to theme $Projectname - by Olivier Migeot[/b]
+
+This is a short documentation on what I found while trying to modify $Projectname's appearance.
+
+First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it .
+
+Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init().
+
+At that point, if you need to add javascript or css files, add them to /js or /css, and then &quot;register&quot; them in _init() through head_add_js('file.js') and head_add_css('file.css').
+
+Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/member/bbcode.html b/doc/member/bbcode.html
index 9b7080a32..e3e079b4d 100644
--- a/doc/member/bbcode.html
+++ b/doc/member/bbcode.html
@@ -193,7 +193,7 @@ If a rendering plugin is not installed or an unsupported language is specified,
<td><code>[url=https://hubzilla.org]Hubzilla[/url]</code></td><td><a href="https://hubzilla.org" target="_blank">Hubzilla</a></td>
</tr>
<tr>
- <td><code>An image [img]url/of/image.jpg[/img]
+ <td><code>An image [img]https://example.org/image.jpg[/img]
in some text </code></td><td>
An image <img src="/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo"> in some text
</td>
@@ -315,17 +315,17 @@ Create a table of content in a webpage or wiki page. Please refer to the <a href
The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</td><td><a href="[baseurl]/rpost?f=&amp;title=title&amp;body=Text+to+post" target="_blank">[baseurl]/rpost?f=&amp;title=title&amp;body=Text+to+post</a></td>
</tr>
<tr>
- <td>This requires the <a href="https://github.com/redmatrix/hubzilla-addons/tree/master/qrator"><strong>qrator</strong></a> plugin.<br><code>[qr]text to post[/qr]</code></td><td><img src="/doc/member/assets/qr_text_to_post.png"></td>
+ <td>This requires the <a href="https://framagit.org/hubzilla/addons/tree/master/qrator"><strong>qrator</strong></a> plugin.<br><code>[qr]text to post[/qr]</code></td><td><img src="/doc/member/assets/qr_text_to_post.png"></td>
</tr>
<tr>
- <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>.
+ <td>This requires a suitable map plugin such as <strong><a href="https://framagit.org/hubzilla/addons/tree/master/openstreetmap">openstreetmap</a></strong>.
<code>[map]</code></td><td>Generate an inline map using the current browser coordinates of the poster, if browser location is enabled</td>
</tr>
<tr>
- <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>.
+ <td>This requires a suitable map plugin such as <strong><a href="https://framagit.org/hubzilla/addons/tree/master/openstreetmap">openstreetmap</a></strong>.
<code>[map=latitude,longitude]</code></td><td>Generate a map using global coordinates.</td></tr>
<tr>
- <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>.
+ <td>This requires a suitable map plugin such as <strong><a href="https://framagit.org/hubzilla/addons/tree/master/openstreetmap">openstreetmap</a></strong>.
<code>[map]Place Name[/map]</code></td><td>
Generate a map for a given named location. The first matching location is returned. For instance "Sydney" will usually return Sydney, Australia and not Sydney, Nova Scotia, Canada unless the more precise location is specified. It is highly recommended to use the post preview utility to ensure you have the correct location before submitting the post.
</td>
diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb
index e36e1c497..2b772d1c5 100644
--- a/doc/member/member_guide.bb
+++ b/doc/member/member_guide.bb
@@ -203,7 +203,7 @@ Some communications offer more than one protocol. If you wish to connect with so
[ostatus]foobar@foo.bar
[diaspora]foobar@foo.bar
[zot]foobar@foo.bar
-[rss]https://foo.bar/foobar
+[feed]https://foo.bar/foobar
[/code]
@@ -359,7 +359,7 @@ The [b]![/b] character designates a deliverable mention to a forum or special ch
!Gardening - mention the Gardening Forum and also post to the Gardening "network" (e.g. send to all the forum members; if you have permission to do so)
[/code]
-Note: In previous releases, forums were delivered by using @forum+ with a plus sign at the end. This mechanism is still used occasionally but is deprecated and !forum is now preferred.
+Note: In previous releases, forums were delivered by using @forum+ with a plus sign at the end. This mechanism is no longer supported.
[h4]Private Mentions[/h4]
If you wish to restrict a post to a single person or a number of people, you can do this by selecting channels or privacy groups from the privacy tool. You can also just tag them with a privacy tag. A privacy tag is a name preceded by the two characters @! - and in addition to tagging these channels, will also change the privacy permissions of the post to only include them. You can have more than one privacy tag, for instance @!bob and @!linda will send the post only to Bob and Linda. This mechanism over-rides the privacy selector.
@@ -374,26 +374,26 @@ The above mechanisms only apply to "top-level" posts you create. Mentioning a ch
[h4]Topical Tags (also known as Hashtags)[/h4]
Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #[zrl=[baseurl]/search?tag=cars]cars[/zrl] will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration.
-Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections.
+Topical tags are also not normally linked if they are purely numeric, e.g. #1. If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections or enclose the entire tag in double quotes (for example #"2012"). Doubles quotes are also required if the tag contains spaces (#"My Tag") and may be required if the tag contains punctuation characters (#"EndsWithPeriod." or #"Exciting!!!").
[h4]Bookmarks[/h4]
Bookmarks indicate a link which can be saved to your bookmark folder. They use the sequence #^ followed by the link. Often these are generated automatically. If the 'bookmarker' addon is installed, this sequence will be converted to a bookmark icon when viewing the post or comment online, and clicking the icon will save the bookmark. If the bookmarker addon is not installed, the post 'dropdown menu' contains a link for saving the bookmark or bookmarks.
-[h4]Spaces in Tags and Mentions[/h4]
+[h4]Manual Mentions[/h4]
Where possible please use the auto-complete window to select tag and mention recipients, because it will generate a coded tag which uniquely identifies one channel. Names are sometimes ambiguous. However, you can "manually" tag a channel by matching the channel name or address.
[code]
-@Robert Johnson
+@billy
[/code]
-will tag Robert Johnson, but we can only match one space. If the name was "Blind Lemon Jefferson" it won't be found unless you enclose the entire name in double quotes or change the spaces to underscores.
+will tag a connection whose name or network address is 'billy' (exact match). If you have two connections with a name or network address of billy, for instance billy@server1.hubzilla.org and billy@server2.hubzilla2.org, you will need to supply the complete address or the results will be ambiguous and the wrong person may be tagged.
[code]
-@"Blind Lemon Jefferson"
-@Blind_Lemon_Jefferson
+@"Robert Johnson"
[/code]
-are both equivalent.
+will tag Robert Johnson. The double quotes are required if the tagged name contains space characters.
+
[h3]Web Pages[/h3]
diff --git a/doc/plugins.bb b/doc/plugins.bb
index a320de790..3aecc458f 100644
--- a/doc/plugins.bb
+++ b/doc/plugins.bb
@@ -1,312 +1,312 @@
-[b]Plugins[/b]
-
-So you want to make $Projectname do something it doesn't already do. There are lots of ways. But let's learn how to write a plugin or addon.
-
-
-In your $Projectname folder/directory, you will probably see a sub-directory called 'addon'. If you don't have one already, go ahead and create it.
-[code]
- mkdir addon
-[/code]
-Then figure out a name for your addon. You probably have at least a vague idea of what you want it to do. For our example I'm going to create a plugin called 'randplace' that provides a somewhat random location for each of your posts. The name of your plugin is used to find the functions we need to access and is part of the function names, so to be safe, use only simple text characters.
-
-Once you've chosen a name, create a directory beneath 'addon' to hold your working file or files.
-[code]
- mkdir addon/randplace
-[/code]
-Now create your plugin file. It needs to have the same name, and it's a PHP script, so using your favourite editor, create the file
-[code]
- addon/randplace/randplace.php
-[/code]
-The very first line of this file needs to be
-[code]
- &lt;?php
-[/code]
-Then we're going to create a comment block to describe the plugin. There's a special format for this. We use /* ... */ comment-style and some tagged lines consisting of
-[code]
- /**
- *
- * Name: Random Place (here you can use better descriptions than you could in the filename)
- * Description: Sample $Projectname plugin, Sets a random place when posting.
- * Version: 1.0
- * Author: Mike Macgirvin &lt;mike@zothub.com&gt;
- *
- */
-[/code]
-These tags will be seen by the site administrator when he/she installs or manages plugins from the admin panel. There can be more than one author. Just add another line starting with 'Author:'.
-
-The typical plugin will have at least the following functions:
-[code]
- pluginname_load()
- pluginname_unload()
-[/code]
-In our case, we'll call them randplace_load() and randplace_unload(), as that is the name of our plugin. These functions are called whenever we wish to either initialise the plugin or remove it from the current webpage. Also if your plugin requires things like altering the database schema before it can run for the very first time, you would likely place these instructions in the functions named
-[code]
- pluginname_install()
- pluginname_uninstall()
-[/code]
-
-Next we'll talk about [b]hooks[/b]. Hooks are places in $Projectname code where we allow plugins to do stuff. There are a [url=[baseurl]/help/hooklist]lot of these[/url], and they each have a name. What we normally do is use the pluginname_load() function to register a &quot;handler function&quot; for any hooks you are interested in. Then when any of these hooks are triggered, your code will be called.
-
-We register hook handlers with the 'Zotlabs\Extend\Hook::register()' function. It typically takes 3 arguments. The first is the hook we wish to catch, the second is the filename of the file to find our handler function (relative to the base of your $Projectname installation), and the third is the function name of your handler function. So let's create our randplace_load() function right now.
-
-[code]
- function randplace_load() {
- Zotlabs\Extend\Hook::register('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook');
-
- Zotlabs\Extend\Hook::register('feature_settings', 'addon/randplace/randplace.php', 'randplace_settings');
- Zotlabs\Extend\Hook::register('feature_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post');
-
- }
-[/code]
-
-So we're going to catch three events, 'post_local' which is triggered when a post is made on the local system, 'feature_settings' to set some preferences for our plugin, and 'feature_settings_post' to store those settings.
-
-Next we'll create an unload function. This is easy, as it just unregisters our hooks. It takes exactly the same arguments.
-[code]
- function randplace_unload() {
- Zotlabs\Extend\Hook::unregister('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook');
-
- Zotlabs\Extend\Hook::unregister('feature_settings', 'addon/randplace/randplace.php', 'randplace_settings');
- Zotlabs\Extend\Hook::unregister('feature_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post');
- }
-[/code]
-
-Hooks are always called with one argument which is specific to the hook you're calling. It contains information relevant to that particular place in the program, and often allows you to look at, and even change it. In order to change it, you need to add '&amp;' to the variable name so it is passed to your function by reference. Otherwise it will create a copy and any changes you make will be lost when the hook process returns. Usually (but not always) the passed data is a named array of data structures. Please see the &quot;hook reference&quot; (not yet written as of this date) for details on any specific hook. Occasionally you may need to view the program source to see precisely how a given hook is called and how the results are processed.
-
-Let's go ahead and add some code to implement our post_local hook handler.
-[code]
- function randplace_post_hook(&amp;$item) {
-
- /**
- *
- * An item was posted on the local system.
- * We are going to look for specific items:
- * - A status post by a profile owner
- * - The profile owner must have allowed our plugin
- *
- */
-
- logger('randplace invoked');
-
- if(! local_channel()) /* non-zero if this is a logged in user of this system */
- return;
-
- if(local_channel() != $item['uid']) /* Does this person own the post? */
- return;
-
- if(($item['parent']) || (! is_item_normal($item))) {
- /* If the item has a parent, or is not "normal", this is a comment or something else, not a status post. */
- return;
- }
-
- /* Retrieve our personal config setting */
-
- $active = get_pconfig(local_channel(), 'randplace', 'enable');
-
- if(! $active)
- return;
- /**
- *
- * OK, we're allowed to do our stuff.
- * Here's what we are going to do:
- * load the list of timezone names, and use that to generate a list of world cities.
- * Then we'll pick one of those at random and put it in the &quot;location&quot; field for the post.
- *
- */
-
- $cities = array();
- $zones = timezone_identifiers_list();
- foreach($zones as $zone) {
- if((strpos($zone,'/')) &amp;&amp; (! stristr($zone,'US/')) &amp;&amp; (! stristr($zone,'Etc/')))
- $cities[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1));
- }
-
- if(! count($cities))
- return;
- $city = array_rand($cities,1);
- $item['location'] = $cities[$city];
-
- return;
- }
-[/code]
-
-Now let's add our functions to create and store preference settings.
-[code]
- /**
- *
- * Callback from the settings post function.
- * $post contains the global $_POST array.
- * We will make sure we've got a valid user account
- * and that only our own submit button was clicked
- * and if so set our configuration setting for this person.
- *
- */
-
- function randplace_settings_post($post) {
- if(! local_channel())
- return;
- if($_POST['randplace-submit'])
- set_pconfig(local_channel(),'randplace','enable',intval($_POST['randplace']));
- }
-
-
-
- /**
- *
- * Called from the Feature Setting form.
- * The second argument is a string in this case, the HTML content region of the page.
- * Add our own settings info to the string.
- *
- * For uniformity of settings pages, we use the following convention
- * &lt;div class=&quot;settings-block&quot;&gt;
- * &lt;h3&gt;title&lt;/h3&gt;
- * .... settings html - many elements will be floated...
- * &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt; &lt;!-- generic class which clears all floats --&gt;
- * &lt;input type=&quot;submit&quot; name=&quot;pluginnname-submit&quot; class=&quot;settings-submit&quot; ..... /&gt;
- * &lt;/div&gt;
- */
-
-
-
- function randplace_settings(&amp;$s) {
-
- if(! local_channel())
- return;
-
- /* Add our stylesheet to the page so we can make our settings look nice */
-
- head_add_css(/addon/randplace/randplace.css');
-
- /* Get the current state of our config variable */
-
- $enabled = get_pconfig(local_channel(),'randplace','enable');
-
- $checked = (($enabled) ? ' checked=&quot;checked&quot; ' : '');
-
- /* Add some HTML to the existing form */
-
- $s .= '&lt;div class=&quot;settings-block&quot;&gt;';
- $s .= '&lt;h3&gt;' . t('Randplace Settings') . '&lt;/h3&gt;';
- $s .= '&lt;div id=&quot;randplace-enable-wrapper&quot;&gt;';
- $s .= '&lt;label id=&quot;randplace-enable-label&quot; for=&quot;randplace-checkbox&quot;&gt;' . t('Enable Randplace Plugin') . '&lt;/label&gt;';
- $s .= '&lt;input id=&quot;randplace-checkbox&quot; type=&quot;checkbox&quot; name=&quot;randplace&quot; value=&quot;1&quot; ' . $checked . '/&gt;';
- $s .= '&lt;/div&gt;&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;';
-
- /* provide a submit button */
-
- $s .= '&lt;div class=&quot;settings-submit-wrapper&quot; &gt;&lt;input type=&quot;submit&quot; name=&quot;randplace-submit&quot; class=&quot;settings-submit&quot; value=&quot;' . t('Submit') . '&quot; /&gt;&lt;/div&gt;&lt;/div&gt;';
-
- }
-
-[/code]
-
-
-
-[h2]Advanced Plugins[/h2]
-
-Sometimes your plugins want to provide a range of new functionality which isn't provided at all or is clumsy to provide using hooks. In this case your plugin can also act as a 'module'. A module in our case refers to a structured webpage handler which responds to a given URL. Then anything which accesses that URL will be handled completely by your plugin.
-
-There are two ways to accomplish this. To create a module object use the following model:
-[code]
-<?php /* file: addon/randplace/Mod_Randplace.php */
-namespace Zotlabs\Module;
-
- // Your module will consist of the name of your addon with an uppercase first character, within the Zotlabs\Module namespace
- // To avoid namespace conflicts with your plugin, the convention we're using is to name the module file Mod_Addonname.php
- // In this case 'Mod_Randplace.php' and then include it from within your main plugin file 'randplace.php' with the line:
- //
- // require_once('addon/randplace/Mod_Randplace.php');
-
- class Randplace extends \Zotlabs\Web\Controller {
- function init() {
- // init method is always called first if it exists
- }
- function post() {
- // the post method is only called if there are $_POST variables present (e.g. the page request method is "post")
- }
- function get() {
- // The get method is used to display normal content on the page
- // whatever this function returns will be displayed in the page body
- }
- }
-[/code]
-
-The other option is to use a procedural interface. The $a argument to these function is obsolete, but must be present.
-The key to this is to create a simple function named pluginname_module() which does nothing. These lines and this interface
-can be used inside your addon file without causing a namespace conflict, as the object method will.
-
-[code]
- function randplace_module() { return; }
-[/code]
-Once this function exists, the URL #^[url=https://yoursite/randplace]https://yoursite/randplace[/url] will access your plugin as a module. Then you can define functions which are called at various points to return or process a structured webpage just like system modules. The typical functions and the order which they are called is
-[code]
- modulename_init($a) // (e.g. randplace_init($a);) called first - if you wish to emit json or xml,
- // you should do it here, followed by killme() which will avoid the default action of building a webpage
- modulename_post($a) // Called whenever the page is accessed via the &quot;post&quot; method
- modulename_content($a) // called to generate the central page content. This function should return a string
- // consisting of the central page content.
-[/code]
-Your module functions have access to the URL path as if they were standalone programs in the Unix operating system. For instance if you visit the page
-[code]
- https://yoursite/randplace/something/somewhere/whatever
-[/code]
-we will create an argc/argv list for use by your module functions
-[code]
- $x = argc(); // $x will be 4, the number of path arguments after the sitename
-
- for($x = 0; $x &lt; argc(); $x ++)
- echo $x . ' ' . argv($x);
-
-
- 0 randplace
- 1 something
- 2 somewhere
- 3 whatever
-[/code]
-
-[h3]Using class methods as hook handler functions[/h3]
-
-To register a hook using a class method as a callback, a couple of things need to be considered. The first is that the functions need to be declared static public so that they are available from all contexts, and they need to have a namespace attached because they can be called from within multiple namespaces. You can then register them as strings or arrays (using the PHP internal calling method).
-
-[code]
-<?php
-/*
- * plugin info block goes here
- */
-
-function myplugin_load() {
- Zotlabs\Extend\Hook::register('hook_name','addon/myplugin/myplugin.php','\\Myplugin::foo');
-[b]or[/b]
- Zotlabs\Extend\Hook::register('hook_name','addon/myplugin/myplugin.php',array('\\Myplugin','foo'));
-}
-
-class Myplugin {
-
- public static function foo($params) {
- // handler for 'hook_name'
- }
-}
-[/code]
-
-If you want to keep your plugin hidden from the siteinfo page, simply create a file called '.hidden' in your addon directory
-[code]
- touch addon/<addon name>/.hidden
-[/code]
-
-***Porting Friendica Plugins***
-
-$Projectname uses a similar plugin architecture to the Friendica project. The authentication, identity, and permissions systems are completely different. Many Friendica can be ported reasonably easily by renaming a few functions - and then ensuring that the permissions model is adhered to. The functions which need to be renamed are:
-
-[li] Friendica's pluginname_install() is pluginname_load()[/li]
-
-[li] Friendica's pluginname_uninstall() is pluginname_unload()[/li]
-
-$Projectname has _install and _uninstall functions but these are used differently.
-
-[li] Friendica's &quot;plugin_settings&quot; hook is called &quot;feature_settings&quot;[/li]
-
-[li] Friendica's &quot;plugin_settings_post&quot; hook is called &quot;feature_settings_post&quot;[/li]
-
-Changing these will often allow your plugin to function, but please double check all your permission and identity code because the concepts behind it are completely different in $Projectname. Many structured data names (especially DB schema columns) are also quite different.
-
-#include doc/macros/main_footer.bb;
+[b]Plugins[/b]
+
+So you want to make $Projectname do something it doesn't already do. There are lots of ways. But let's learn how to write a plugin or addon.
+
+
+In your $Projectname folder/directory, you will probably see a sub-directory called 'addon'. If you don't have one already, go ahead and create it.
+[code]
+ mkdir addon
+[/code]
+Then figure out a name for your addon. You probably have at least a vague idea of what you want it to do. For our example I'm going to create a plugin called 'randplace' that provides a somewhat random location for each of your posts. The name of your plugin is used to find the functions we need to access and is part of the function names, so to be safe, use only simple text characters.
+
+Once you've chosen a name, create a directory beneath 'addon' to hold your working file or files.
+[code]
+ mkdir addon/randplace
+[/code]
+Now create your plugin file. It needs to have the same name, and it's a PHP script, so using your favourite editor, create the file
+[code]
+ addon/randplace/randplace.php
+[/code]
+The very first line of this file needs to be
+[code]
+ &lt;?php
+[/code]
+Then we're going to create a comment block to describe the plugin. There's a special format for this. We use /* ... */ comment-style and some tagged lines consisting of
+[code]
+ /**
+ *
+ * Name: Random Place (here you can use better descriptions than you could in the filename)
+ * Description: Sample $Projectname plugin, Sets a random place when posting.
+ * Version: 1.0
+ * Author: Mike Macgirvin &lt;mike@zothub.com&gt;
+ *
+ */
+[/code]
+These tags will be seen by the site administrator when he/she installs or manages plugins from the admin panel. There can be more than one author. Just add another line starting with 'Author:'.
+
+The typical plugin will have at least the following functions:
+[code]
+ pluginname_load()
+ pluginname_unload()
+[/code]
+In our case, we'll call them randplace_load() and randplace_unload(), as that is the name of our plugin. These functions are called whenever we wish to either initialise the plugin or remove it from the current webpage. Also if your plugin requires things like altering the database schema before it can run for the very first time, you would likely place these instructions in the functions named
+[code]
+ pluginname_install()
+ pluginname_uninstall()
+[/code]
+
+Next we'll talk about [b]hooks[/b]. Hooks are places in $Projectname code where we allow plugins to do stuff. There are a [url=[baseurl]/help/hooklist]lot of these[/url], and they each have a name. What we normally do is use the pluginname_load() function to register a &quot;handler function&quot; for any hooks you are interested in. Then when any of these hooks are triggered, your code will be called.
+
+We register hook handlers with the 'Zotlabs\Extend\Hook::register()' function. It typically takes 3 arguments. The first is the hook we wish to catch, the second is the filename of the file to find our handler function (relative to the base of your $Projectname installation), and the third is the function name of your handler function. So let's create our randplace_load() function right now.
+
+[code]
+ function randplace_load() {
+ Zotlabs\Extend\Hook::register('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook');
+
+ Zotlabs\Extend\Hook::register('feature_settings', 'addon/randplace/randplace.php', 'randplace_settings');
+ Zotlabs\Extend\Hook::register('feature_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post');
+
+ }
+[/code]
+
+So we're going to catch three events, 'post_local' which is triggered when a post is made on the local system, 'feature_settings' to set some preferences for our plugin, and 'feature_settings_post' to store those settings.
+
+Next we'll create an unload function. This is easy, as it just unregisters our hooks. It takes exactly the same arguments.
+[code]
+ function randplace_unload() {
+ Zotlabs\Extend\Hook::unregister('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook');
+
+ Zotlabs\Extend\Hook::unregister('feature_settings', 'addon/randplace/randplace.php', 'randplace_settings');
+ Zotlabs\Extend\Hook::unregister('feature_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post');
+ }
+[/code]
+
+Hooks are always called with one argument which is specific to the hook you're calling. It contains information relevant to that particular place in the program, and often allows you to look at, and even change it. In order to change it, you need to add '&amp;' to the variable name so it is passed to your function by reference. Otherwise it will create a copy and any changes you make will be lost when the hook process returns. Usually (but not always) the passed data is a named array of data structures. Please see the &quot;hook reference&quot; (not yet written as of this date) for details on any specific hook. Occasionally you may need to view the program source to see precisely how a given hook is called and how the results are processed.
+
+Let's go ahead and add some code to implement our post_local hook handler.
+[code]
+ function randplace_post_hook(&amp;$item) {
+
+ /**
+ *
+ * An item was posted on the local system.
+ * We are going to look for specific items:
+ * - A status post by a profile owner
+ * - The profile owner must have allowed our plugin
+ *
+ */
+
+ logger('randplace invoked');
+
+ if(! local_channel()) /* non-zero if this is a logged in user of this system */
+ return;
+
+ if(local_channel() != $item['uid']) /* Does this person own the post? */
+ return;
+
+ if(($item['parent']) || (! is_item_normal($item))) {
+ /* If the item has a parent, or is not "normal", this is a comment or something else, not a status post. */
+ return;
+ }
+
+ /* Retrieve our personal config setting */
+
+ $active = get_pconfig(local_channel(), 'randplace', 'enable');
+
+ if(! $active)
+ return;
+ /**
+ *
+ * OK, we're allowed to do our stuff.
+ * Here's what we are going to do:
+ * load the list of timezone names, and use that to generate a list of world cities.
+ * Then we'll pick one of those at random and put it in the &quot;location&quot; field for the post.
+ *
+ */
+
+ $cities = array();
+ $zones = timezone_identifiers_list();
+ foreach($zones as $zone) {
+ if((strpos($zone,'/')) &amp;&amp; (! stristr($zone,'US/')) &amp;&amp; (! stristr($zone,'Etc/')))
+ $cities[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1));
+ }
+
+ if(! count($cities))
+ return;
+ $city = array_rand($cities,1);
+ $item['location'] = $cities[$city];
+
+ return;
+ }
+[/code]
+
+Now let's add our functions to create and store preference settings.
+[code]
+ /**
+ *
+ * Callback from the settings post function.
+ * $post contains the global $_POST array.
+ * We will make sure we've got a valid user account
+ * and that only our own submit button was clicked
+ * and if so set our configuration setting for this person.
+ *
+ */
+
+ function randplace_settings_post($post) {
+ if(! local_channel())
+ return;
+ if($_POST['randplace-submit'])
+ set_pconfig(local_channel(),'randplace','enable',intval($_POST['randplace']));
+ }
+
+
+
+ /**
+ *
+ * Called from the Feature Setting form.
+ * The second argument is a string in this case, the HTML content region of the page.
+ * Add our own settings info to the string.
+ *
+ * For uniformity of settings pages, we use the following convention
+ * &lt;div class=&quot;settings-block&quot;&gt;
+ * &lt;h3&gt;title&lt;/h3&gt;
+ * .... settings html - many elements will be floated...
+ * &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt; &lt;!-- generic class which clears all floats --&gt;
+ * &lt;input type=&quot;submit&quot; name=&quot;pluginnname-submit&quot; class=&quot;settings-submit&quot; ..... /&gt;
+ * &lt;/div&gt;
+ */
+
+
+
+ function randplace_settings(&amp;$s) {
+
+ if(! local_channel())
+ return;
+
+ /* Add our stylesheet to the page so we can make our settings look nice */
+
+ head_add_css(/addon/randplace/randplace.css');
+
+ /* Get the current state of our config variable */
+
+ $enabled = get_pconfig(local_channel(),'randplace','enable');
+
+ $checked = (($enabled) ? ' checked=&quot;checked&quot; ' : '');
+
+ /* Add some HTML to the existing form */
+
+ $s .= '&lt;div class=&quot;settings-block&quot;&gt;';
+ $s .= '&lt;h3&gt;' . t('Randplace Settings') . '&lt;/h3&gt;';
+ $s .= '&lt;div id=&quot;randplace-enable-wrapper&quot;&gt;';
+ $s .= '&lt;label id=&quot;randplace-enable-label&quot; for=&quot;randplace-checkbox&quot;&gt;' . t('Enable Randplace Plugin') . '&lt;/label&gt;';
+ $s .= '&lt;input id=&quot;randplace-checkbox&quot; type=&quot;checkbox&quot; name=&quot;randplace&quot; value=&quot;1&quot; ' . $checked . '/&gt;';
+ $s .= '&lt;/div&gt;&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;';
+
+ /* provide a submit button */
+
+ $s .= '&lt;div class=&quot;settings-submit-wrapper&quot; &gt;&lt;input type=&quot;submit&quot; name=&quot;randplace-submit&quot; class=&quot;settings-submit&quot; value=&quot;' . t('Submit') . '&quot; /&gt;&lt;/div&gt;&lt;/div&gt;';
+
+ }
+
+[/code]
+
+
+
+[h2]Advanced Plugins[/h2]
+
+Sometimes your plugins want to provide a range of new functionality which isn't provided at all or is clumsy to provide using hooks. In this case your plugin can also act as a 'module'. A module in our case refers to a structured webpage handler which responds to a given URL. Then anything which accesses that URL will be handled completely by your plugin.
+
+There are two ways to accomplish this. To create a module object use the following model:
+[code]
+<?php /* file: addon/randplace/Mod_Randplace.php */
+namespace Zotlabs\Module;
+
+ // Your module will consist of the name of your addon with an uppercase first character, within the Zotlabs\Module namespace
+ // To avoid namespace conflicts with your plugin, the convention we're using is to name the module file Mod_Addonname.php
+ // In this case 'Mod_Randplace.php' and then include it from within your main plugin file 'randplace.php' with the line:
+ //
+ // require_once('addon/randplace/Mod_Randplace.php');
+
+ class Randplace extends \Zotlabs\Web\Controller {
+ function init() {
+ // init method is always called first if it exists
+ }
+ function post() {
+ // the post method is only called if there are $_POST variables present (e.g. the page request method is "post")
+ }
+ function get() {
+ // The get method is used to display normal content on the page
+ // whatever this function returns will be displayed in the page body
+ }
+ }
+[/code]
+
+The other option is to use a procedural interface. The $a argument to these function is obsolete, but must be present.
+The key to this is to create a simple function named pluginname_module() which does nothing. These lines and this interface
+can be used inside your addon file without causing a namespace conflict, as the object method will.
+
+[code]
+ function randplace_module() { return; }
+[/code]
+Once this function exists, the URL #^[url=https://yoursite/randplace]https://yoursite/randplace[/url] will access your plugin as a module. Then you can define functions which are called at various points to return or process a structured webpage just like system modules. The typical functions and the order which they are called is
+[code]
+ modulename_init($a) // (e.g. randplace_init($a);) called first - if you wish to emit json or xml,
+ // you should do it here, followed by killme() which will avoid the default action of building a webpage
+ modulename_post($a) // Called whenever the page is accessed via the &quot;post&quot; method
+ modulename_content($a) // called to generate the central page content. This function should return a string
+ // consisting of the central page content.
+[/code]
+Your module functions have access to the URL path as if they were standalone programs in the Unix operating system. For instance if you visit the page
+[code]
+ https://yoursite/randplace/something/somewhere/whatever
+[/code]
+we will create an argc/argv list for use by your module functions
+[code]
+ $x = argc(); // $x will be 4, the number of path arguments after the sitename
+
+ for($x = 0; $x &lt; argc(); $x ++)
+ echo $x . ' ' . argv($x);
+
+
+ 0 randplace
+ 1 something
+ 2 somewhere
+ 3 whatever
+[/code]
+
+[h3]Using class methods as hook handler functions[/h3]
+
+To register a hook using a class method as a callback, a couple of things need to be considered. The first is that the functions need to be declared static public so that they are available from all contexts, and they need to have a namespace attached because they can be called from within multiple namespaces. You can then register them as strings or arrays (using the PHP internal calling method).
+
+[code]
+<?php
+/*
+ * plugin info block goes here
+ */
+
+function myplugin_load() {
+ Zotlabs\Extend\Hook::register('hook_name','addon/myplugin/myplugin.php','\\Myplugin::foo');
+[b]or[/b]
+ Zotlabs\Extend\Hook::register('hook_name','addon/myplugin/myplugin.php',array('\\Myplugin','foo'));
+}
+
+class Myplugin {
+
+ public static function foo($params) {
+ // handler for 'hook_name'
+ }
+}
+[/code]
+
+If you want to keep your plugin hidden from the siteinfo page, simply create a file called '.hidden' in your addon directory
+[code]
+ touch addon/<addon name>/.hidden
+[/code]
+
+***Porting Friendica Plugins***
+
+$Projectname uses a similar plugin architecture to the Friendica project. The authentication, identity, and permissions systems are completely different. Many Friendica can be ported reasonably easily by renaming a few functions - and then ensuring that the permissions model is adhered to. The functions which need to be renamed are:
+
+[li] Friendica's pluginname_install() is pluginname_load()[/li]
+
+[li] Friendica's pluginname_uninstall() is pluginname_unload()[/li]
+
+$Projectname has _install and _uninstall functions but these are used differently.
+
+[li] Friendica's &quot;plugin_settings&quot; hook is called &quot;feature_settings&quot;[/li]
+
+[li] Friendica's &quot;plugin_settings_post&quot; hook is called &quot;feature_settings_post&quot;[/li]
+
+Changing these will often allow your plugin to function, but please double check all your permission and identity code because the concepts behind it are completely different in $Projectname. Many structured data names (especially DB schema columns) are also quite different.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/problems-following-an-update.bb b/doc/problems-following-an-update.bb
index 2d1fefc5b..7376d6163 100644
--- a/doc/problems-following-an-update.bb
+++ b/doc/problems-following-an-update.bb
@@ -1,38 +1,38 @@
-[b]Problems Following An Update[/b]
-
-A good 90% of all bugs encountered immediately after updating the code to the latest version are simple cache errors of one sort or another. If you update and find something very obvious is broken - like your matrix page doesn't load, notifications are missing, or comment boxes are missing - the chances are it's not a bug at all. Breaking basic functionality is the kind of thing developers tend to notice.
-
-If this happens to you, there are a few simple steps to take before resorting to the support forums:
-
-[b]Browser Cache[/b]
-
-Symptoms: Menus do not expand, ACL selector does not open, progress indicator does not display (or loops forever), Matrix and channel pages do not load.
-
-Force reload the page. Shift reload, or ctrl+f5. Occasionally, but very, very rarely, you will also need to clear the session data - which is achieved by restarting the browser.
-
-[b]FastCGI[/b]
-
-Symptoms: Incorrect variables. The basic UI mostly works, but displays incorrect content or is missing content entirely.
-
-If you're using php5-fpm, this problem is usually resolved with [code]service php5-fpm restart[/code]
-
-[b]Smarty Cache[/b]
-
-Symptoms:
-
-1) White Screen Of Death. This is most prevalent on the settings and admin pages.
-
-2) Missing icons, tabs, menus or features.
-
-We use the Smarty3 template engine to generate pages. These templates are compiled before they are displayed. Occasionally, a new or modified template will fail to overwrite the old compiled version. To clear the Smarty cache, delete all the files in store/[data]/smarty3/compiled [b]but do not delete the directory itself[/b]. Templates will then be recompiled on their next access.
-
-[b]Theme Issues[/b]
-
-There are many themes for $Projectname. Only Redbasic is officialy supported by the core developers. This applies [i]even if a core developer happens to support an additional theme[/i]. This means new features are only guaranteed to work in Redbasic.
-
-Redbasic uses a few javascript libraries that are done differently, or entirely absent in other themes. This means new features may only work properly in Redbasic. Before reporting an issue, therefore, you should switch to Redbasic to see if it exists there. If the issue goes away, this is not a bug - it's a theme that isn't up to date.
-
-Should you report an issue with the theme developers then? No. Theme developers use their themes. Chances are, they know. Give them two or three days to catch up and [i]then[/i] report the issue if it's still not fixed. There are two workarounds for this situation. Firstly, you can temporarily use Redbasic. Secondly, most themes are open source too - open a pull request and make yourself a friend.
-
-#include doc/macros/troubleshooting_footer.bb;
-
+[b]Problems Following An Update[/b]
+
+A good 90% of all bugs encountered immediately after updating the code to the latest version are simple cache errors of one sort or another. If you update and find something very obvious is broken - like your matrix page doesn't load, notifications are missing, or comment boxes are missing - the chances are it's not a bug at all. Breaking basic functionality is the kind of thing developers tend to notice.
+
+If this happens to you, there are a few simple steps to take before resorting to the support forums:
+
+[b]Browser Cache[/b]
+
+Symptoms: Menus do not expand, ACL selector does not open, progress indicator does not display (or loops forever), Matrix and channel pages do not load.
+
+Force reload the page. Shift reload, or ctrl+f5. Occasionally, but very, very rarely, you will also need to clear the session data - which is achieved by restarting the browser.
+
+[b]FastCGI[/b]
+
+Symptoms: Incorrect variables. The basic UI mostly works, but displays incorrect content or is missing content entirely.
+
+If you're using php5-fpm, this problem is usually resolved with [code]service php5-fpm restart[/code]
+
+[b]Smarty Cache[/b]
+
+Symptoms:
+
+1) White Screen Of Death. This is most prevalent on the settings and admin pages.
+
+2) Missing icons, tabs, menus or features.
+
+We use the Smarty3 template engine to generate pages. These templates are compiled before they are displayed. Occasionally, a new or modified template will fail to overwrite the old compiled version. To clear the Smarty cache, delete all the files in store/[data]/smarty3/compiled [b]but do not delete the directory itself[/b]. Templates will then be recompiled on their next access.
+
+[b]Theme Issues[/b]
+
+There are many themes for $Projectname. Only Redbasic is officialy supported by the core developers. This applies [i]even if a core developer happens to support an additional theme[/i]. This means new features are only guaranteed to work in Redbasic.
+
+Redbasic uses a few javascript libraries that are done differently, or entirely absent in other themes. This means new features may only work properly in Redbasic. Before reporting an issue, therefore, you should switch to Redbasic to see if it exists there. If the issue goes away, this is not a bug - it's a theme that isn't up to date.
+
+Should you report an issue with the theme developers then? No. Theme developers use their themes. Chances are, they know. Give them two or three days to catch up and [i]then[/i] report the issue if it's still not fixed. There are two workarounds for this situation. Firstly, you can temporarily use Redbasic. Secondly, most themes are open source too - open a pull request and make yourself a friend.
+
+#include doc/macros/troubleshooting_footer.bb;
+
diff --git a/doc/red2pi.bb b/doc/red2pi.bb
index 28db7dc70..8ae087fbf 100644
--- a/doc/red2pi.bb
+++ b/doc/red2pi.bb
@@ -1,342 +1,342 @@
-[b]How to install $Projectname on a Raspberry Pi[/b]
-
-You just bought a Raspberry Pi and want to run the RED Matrix with your own domain name?
-
-Then this page is for you! You will:
-[list=1]
-[*] Install Raspberry OS (Debian Linux) on a Raspberry
-[*] Install Apache Web Server, PHP, MaySQL, phpMyAdmin
-[*] Register a free domain (dynamic DNS) and use it for your hub
-[*] Install $Projectname
-[*] Keep your Raspberry Pi and $Projectname up-to-date
-[*] TODO Setting up SSL
-[*] TODO Running with SSL
-[*] TODO Make the webserver less vulnarable to attacks
-[/list]
-
-[size=large]1. Install Raspberry OS (Debian Linux)[/size]
-
-instructions under [url=http://www.raspberrypi.org/downloads]http://www.raspberrypi.org/downloads[/url]
-This page links to the quick start containing detailed instruction.
-
-[b]Format SD card[/b]
-
-using the program gparted under Linux Mint 15
-
-format as FAT32
-
-[b]Download NOOBS (offline and network install)[/b]
-
-[url=http://downloads.raspberrypi.org/noobs]http://downloads.raspberrypi.org/noobs[/url]
-
-unzip
-
-copy unzipped files to SD card
-
-[b]Install Raspbian as OS on the Rasperry Pi[/b]
-
-connect with keyboard via USB
-
-connect with monitor via HDMI
-
-Insert SD card into Rasperry Pi
-
-Connect with power supply to switch on the Rasperry
-
-choose Raspbian as OS (&gt; installs Raspbian....)
-
-wait for the coniguration program raspi-config (you can later start it by sudo raspi-config)
-
-[b]Configure Raspbian[/b]
-
-in raspi-config &gt; advanced &gt; choose to use ssh (!! You need this to connect to administrate your Pi from your PC !!)
-
-in raspi-config &gt; change the password (of default user &quot;pi&quot; from &quot;raspberry&quot; to your password)
-
-in raspi-config (optional) &gt; Internationalisation options &gt; Change Locale &gt; to de_DE.utf-8 utf-8 (for example)
-
-in raspi-config (optional) &gt; Internationalisation options &gt; Change Timezoe &gt; set your timezone
-
-in raspi-config (optional) &gt; Overlock &gt; medium
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[b]More[/b]
-
-[code]sudo reboot[/code]
-
-Now its time to connect the Pi to the network.
-[ul]
-[*] pull out keyboard
-[*] pull out monitor
-[*] you even can pull out the power supply (USB)
-[*] plug-in the network cable to the router
-[*] plug-in the power supply again
-[*] wait for a minute or to give the Pi time to boot and start ssh...
-[/ul]
-
-On your PC connect to the Pi to administrate (here update it).
-Open the console on the PC (Window: Start &gt; cmd, Linux: Shell)
-
-Hint: use the router admin tool to find out the IP of your PI[code]ssh pi@192.168.178.37
-sudo apt-get update
-sudo apt-get dist-upgrade[/code]
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-
-[size=large]2. Install Apache Web Server, PHP, MaySQL, phpMyAdmin[/size]
-
-[b]Install Apache Webserver[/b]
-
-[code]sudo bash
-sudo groupadd www-data[/code] might exist already
-
-[code]sudo usermod -a -G www-data www-data
-sudo apt-get update
-sudo reboot[/code]
-
-wait...
-reconnect via ssh, example: [code]ssh pi@192.168.178.37
-sudo apt-get install apache2 apache2-doc apache2-utils[/code]
-
-Open webbrowser on PC and check [url=http://192.168.178.37]http://192.168.178.37[/url]
-Should show you a page like &quot;It works&quot;
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[b]Install PHP, MaySQL, phpMyAdmin[/b]
-
-[code]sudo bash
-apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-curl
-apt-get install php5-mysql
-apt-get install mysql-server mysql-client[/code] enter and note the mysql passwort
-
-[code]apt-get install phpmyadmin[/code]
-
-Configuring phpmyadmin
-- Select apache2
-- Configure database for phpmyadmin with dbconfig-common?: Choose Yes
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[b]Test installation[/b]
-
-[code]cd /var/www[/code]
-
-create a php file to test the php installation[code]sudo nano phpinfo.php[/code]
-
-Insert into the file:[code]
-&lt;?php
- phpinfo();
-?&gt;
-[/code]
-(save CTRL+0, ENTER, CTRL+X)
-
-open webbrowser on PC and try [url=http://192.168.178.37/phpinfo.php]http://192.168.178.37/phpinfo.php[/url] (page shows infos on php)
-
-connect phpMyAdmin with MySQL database [code]nano /etc/apache2/apache2.conf[/code]
-- CTRL+V... to the end of the file
-- Insert at the end of the file: (save CTRL+0, ENTER, CTRL+X)[code]Include /etc/phpmyadmin/apache.conf[/code]
-
-restart apache[code]/etc/init.d/apache2 restart
-sudo apt-get update
-sudo apt-get upgrade
-sudo reboot[/code]
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[b]phpMyAdmin[/b]
-
-open webbrowser on PC and try #^[url=http://192.168.178.37/phpmyadmin]http://192.168.178.37/phpmyadmin[/url]
-
-(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-
-
-[b]Create an empty database... that is later used by RED[/b]
-
-open webbrowser on PC and try #^[url=http://192.168.178.37/phpmyadmin]http://192.168.178.37/phpmyadmin[/url]
-
-Create an empty database
-
-Note the access details (hostname, username, password, database name).
-
-
-[size=large]3. Selfhost[/size]
-
-(Source: #^[url=http://www.techjawab.com/2013/06/setup-dynamic-dns-dyndns-for-free-on.html]http://www.techjawab.com/2013/06/setup-dynamic-dns-dyndns-for-free-on.html[/url])
-
-[url=http://freedns.afraid.org/signup/]http://freedns.afraid.org/signup/[/url]
-
-[b]Step 1[/b]
-Register for a Free domain at #^[url=http://freedns.afraid.org/signup/]http://freedns.afraid.org/signup/[/url]
-(We will take techhome.homenet.org in this guide)
-
-[b]Step 2[/b]
-
-Logon to FreeDNS (where you just registered) and goto #^[url=http://freedns.afraid.org/dynamic/]http://freedns.afraid.org/dynamic/[/url]
-Right click on &quot;Direct Link&quot; and copy the URL and paste it somewhere.
-You should notice a large and unique alpha-numeric key in the URL, make a note of it as shown below:
-[code]http://freedns.afraid.org/dynamic/update.php?alphanumeric-key[/code]
-
-
-[b]Step 3[/b]
-Install inadyn using the following command:[code]sudo apt-get install inadyn[/code]
-
-[b]Step 4[/b]
-Configure inadyn using the below steps:[code]sudo nano /etc/inadyn.conf[/code]
-And add the following contains in it replacing the actual values:
-[code]
---username [color=red]techhome[/color]
---password [color=red]mypassword[/color]
---update_period 3600
---forced_update_period 14400
---alias [color=red]techhome.homenet.org&lt;/b&gt;,[color=red]alphanumeric key[/color]
---background
---dyndns_system default@freedns.afraid.org
---syslog
- [/code]
-
-
-[b]Step 5[/b]
-
-Now, we need to ensure that the DNS updater (Inadyn) runs automatically after every re-boot[code]export EDITOR=gedit &amp;&amp; sudo crontab -e[/code]
-Add the following line:[code]@reboot /usr/sbin/inadyn[/code]
-
-
-[b]Step 6[/b]
-
-Reboot system and then run the following command to ensure inadyn is running:[code]
-sudo reboot
-ps -A | grep inadyn
-[/code]
-Now your host is ready and up for accessing from internet...
-You can trying ssh-ing from another computer over the internet
-[code]ssh username@techhome.homenet.org[/code]
-Or, if any web server is running, then simply browse to #^[url=http://techhome.homenet.org]http://techhome.homenet.org[/url]
-Or, you can just ping it to test ping techhome.homenet.org
-To check the logs you can use this:
-[code]more /var/log/messages |grep INADYN[/code]
-
-
-[size=large]4. Install $Projectname[/size]
-
-(Source: [zrl=[baseurl]/help/Install][baseurl]/help/Install[/zrl])
-
-Linux Appache document root is /var/www/
-Two files exist there (created by the steps above): index.html, phpinfo.php
-
-
-[b]Install $Projectname and its Addons[/b]
-
-Cleanup: Remove the directory www/ (Git will not create files and folders in directories that are not empty.) Make sure you are in directory var[code]pi@pi /var $ cd /var[/code]
-
-Remove directory[code]pi@pi /var $ sudo rm -rf www/[/code]
-
-Download the sources of $Projectname from GIT
-[code]pi@pi /var $ sudo git clone https://github.com/redmatrix/hubzilla.git www[/code]
-
-Download the sources of the addons from GIT
-[code]pi@pi /var/www $ sudo git clone https://github.com/redmatrix/hubzilla-addons.git addon[/code]
-
-Make user www-data the owner of the whole web directory (including subdirectories and files)
-(TODO: This step has to be proofed by the next installation.)
-[code]pi@pi /var $ chown -R www-data:www-data /var/www/[/code]
-
-Check if you can update the sources from git[code]
-pi@pi /var $ cd www
-pi@pi /var/www $ git pull
-[/code]
-
-Check if you can update the addons
-[code]pi@pi /var/www $ cd addon/
-pi@pi /var/www/addon $ sudo git pull[/code]
-
-Make sure folder store/[data]/smarty3 exists and is writable by the webserver
-[code]pi@pi /var/www $ sudo chmod ou+w "store/\[data\]/smarty3"[/code]
-
-Create .htconfig.php and is writable by the webserver
-[code]pi@pi /var/www $ sudo touch .htconfig.php
-pi@pi /var/www $ sudo chmod ou+w .htconfig.php[/code]
-
-[b]First start and initial configuration of your RED Matrix hub[/b]
-
-In browser open #^[zrl=http://einervonvielen.mooo.com/]http://einervonvielen.mooo.com/[/zrl]
-(Replace einervonvielen.mooo.com by your domain, see chapter selfhost. Be patient. It takes time.)
-(#^[zrl=http://einervonvielen.mooo.com/index.php?q=setup]http://einervonvielen.mooo.com/index.php?q=setup[/zrl])
-
-There might be errors like the following.
-
-Error: libCURL PHP module required but not installed.
-Solution:
-apt-get install php5-curl
-
-Error: Apache webserver mod-rewrite module is required but not installed.
-Solution
-(Source: [url=http://xmodulo.com/2013/01/how-to-enable-mod_rewrite-in-apache2-on-debian-ubuntu.html]http://xmodulo.com/2013/01/how-to-enable-mod_rewrite-in-apache2-on-debian-ubuntu.html[/url])
-The default installation of Apache2 comes with mod_rewrite installed. To check whether this is the case, verify the existence of /etc/apache2/mods-available/rewrite.load
-- pi@pi /var/www $ nano /etc/apache2/mods-available/rewrite.load
- (You should find the contendt: LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so)
-To enable and load mod_rewrite, do the rest of steps.
-Create a symbolic link in /etc/apache2/mods-enabled
-- pi@pi /var/www $ sudo a2enmod rewrite
-Then open up the following file, and replace every occurrence of &quot;AllowOverride None&quot; with &quot;AllowOverride all&quot;.
-- pi@pi /var/www $ sudo nano /etc/apache2/sites-available/default
-Finally, restart Apache2.
-- pi@pi /var/www $ sudo service apache2 restart
-
-Error store is writable (not checked)
-Solution:
-(TODO: Make writeable to group www-data only?)
-pi@pi /var/www $ sudo mkdir store
-pi@pi /var/www $ chown -R www-data:www-data /var/www/red/
-pi@pi /var/www $ sudo chmod ou+w view
-
-[b]More[/b]
-
-Set up a cron job to run the poller once every 15 minutes in order to perform background processing.
-- pi@pi /var/www $ which php
-Make sure you are in the document root directory of the webserver
-- pi@pi /var/www $ cd /var/www/
-Try to execute the poller in order to make sure it works
-- pi@pi /var/www $ /usr/bin/php include/poller.php
-Create the cronjob
-- pi@pi /var/www $ crontab -e
-Enter
-- */15 * * * * cd /var/www/; /usr/bin/php include/poller.php
-- Save and exit.
-
-Prevent search engines from indexing your search pages. Why? This can cause heavy resource use.
-
-[code]
-php util/config system block_public_search 1
-[/code]
-
-
-
-[size=large]5. Keep your Raspberry Pi and your $Projectname up-to-date[/size]
-
-Git update every day at 4 am and addons at 5 am every day
-Try if the command is working
-- pi@pi /var/www $ sudo git pull
-Create the cronjob
-- pi@pi /var/www $ crontab -e
-Enter the following to update at 4:01 am every day
-- 01 04 * * * cd /var/www/; sudo git pull
-Enter the following to update the addons at 5:01 am every day
-- 01 05 * * * cd /var/www/addon/; sudo git pull
-Enter the following to update the Raspberry Pi (Raspbian OS = Debian) at 6:01 am every day
-- 01 06 * * * sudo aptitude -y update &amp;&amp; sudo aptitude -y safe-upgrade
-Save and exit.
-
-[size=large]6. Running with SSL[/size]
-
-Follow the instructions here:
-[url=https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL]https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL[/url]
-
-#include doc/macros/main_footer.bb;
+[b]How to install $Projectname on a Raspberry Pi[/b]
+
+You just bought a Raspberry Pi and want to run the RED Matrix with your own domain name?
+
+Then this page is for you! You will:
+[list=1]
+[*] Install Raspberry OS (Debian Linux) on a Raspberry
+[*] Install Apache Web Server, PHP, MaySQL, phpMyAdmin
+[*] Register a free domain (dynamic DNS) and use it for your hub
+[*] Install $Projectname
+[*] Keep your Raspberry Pi and $Projectname up-to-date
+[*] TODO Setting up SSL
+[*] TODO Running with SSL
+[*] TODO Make the webserver less vulnarable to attacks
+[/list]
+
+[size=large]1. Install Raspberry OS (Debian Linux)[/size]
+
+instructions under [url=http://www.raspberrypi.org/downloads]http://www.raspberrypi.org/downloads[/url]
+This page links to the quick start containing detailed instruction.
+
+[b]Format SD card[/b]
+
+using the program gparted under Linux Mint 15
+
+format as FAT32
+
+[b]Download NOOBS (offline and network install)[/b]
+
+[url=http://downloads.raspberrypi.org/noobs]http://downloads.raspberrypi.org/noobs[/url]
+
+unzip
+
+copy unzipped files to SD card
+
+[b]Install Raspbian as OS on the Rasperry Pi[/b]
+
+connect with keyboard via USB
+
+connect with monitor via HDMI
+
+Insert SD card into Rasperry Pi
+
+Connect with power supply to switch on the Rasperry
+
+choose Raspbian as OS (&gt; installs Raspbian....)
+
+wait for the coniguration program raspi-config (you can later start it by sudo raspi-config)
+
+[b]Configure Raspbian[/b]
+
+in raspi-config &gt; advanced &gt; choose to use ssh (!! You need this to connect to administrate your Pi from your PC !!)
+
+in raspi-config &gt; change the password (of default user &quot;pi&quot; from &quot;raspberry&quot; to your password)
+
+in raspi-config (optional) &gt; Internationalisation options &gt; Change Locale &gt; to de_DE.utf-8 utf-8 (for example)
+
+in raspi-config (optional) &gt; Internationalisation options &gt; Change Timezoe &gt; set your timezone
+
+in raspi-config (optional) &gt; Overlock &gt; medium
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[b]More[/b]
+
+[code]sudo reboot[/code]
+
+Now its time to connect the Pi to the network.
+[ul]
+[*] pull out keyboard
+[*] pull out monitor
+[*] you even can pull out the power supply (USB)
+[*] plug-in the network cable to the router
+[*] plug-in the power supply again
+[*] wait for a minute or to give the Pi time to boot and start ssh...
+[/ul]
+
+On your PC connect to the Pi to administrate (here update it).
+Open the console on the PC (Window: Start &gt; cmd, Linux: Shell)
+
+Hint: use the router admin tool to find out the IP of your PI[code]ssh pi@192.168.178.37
+sudo apt-get update
+sudo apt-get dist-upgrade[/code]
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+
+[size=large]2. Install Apache Web Server, PHP, MaySQL, phpMyAdmin[/size]
+
+[b]Install Apache Webserver[/b]
+
+[code]sudo bash
+sudo groupadd www-data[/code] might exist already
+
+[code]sudo usermod -a -G www-data www-data
+sudo apt-get update
+sudo reboot[/code]
+
+wait...
+reconnect via ssh, example: [code]ssh pi@192.168.178.37
+sudo apt-get install apache2 apache2-doc apache2-utils[/code]
+
+Open webbrowser on PC and check [url=http://192.168.178.37]http://192.168.178.37[/url]
+Should show you a page like &quot;It works&quot;
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[b]Install PHP, MaySQL, phpMyAdmin[/b]
+
+[code]sudo bash
+apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-curl
+apt-get install php5-mysql
+apt-get install mysql-server mysql-client[/code] enter and note the mysql passwort
+
+[code]apt-get install phpmyadmin[/code]
+
+Configuring phpmyadmin
+- Select apache2
+- Configure database for phpmyadmin with dbconfig-common?: Choose Yes
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[b]Test installation[/b]
+
+[code]cd /var/www[/code]
+
+create a php file to test the php installation[code]sudo nano phpinfo.php[/code]
+
+Insert into the file:[code]
+&lt;?php
+ phpinfo();
+?&gt;
+[/code]
+(save CTRL+0, ENTER, CTRL+X)
+
+open webbrowser on PC and try [url=http://192.168.178.37/phpinfo.php]http://192.168.178.37/phpinfo.php[/url] (page shows infos on php)
+
+connect phpMyAdmin with MySQL database [code]nano /etc/apache2/apache2.conf[/code]
+- CTRL+V... to the end of the file
+- Insert at the end of the file: (save CTRL+0, ENTER, CTRL+X)[code]Include /etc/phpmyadmin/apache.conf[/code]
+
+restart apache[code]/etc/init.d/apache2 restart
+sudo apt-get update
+sudo apt-get upgrade
+sudo reboot[/code]
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[b]phpMyAdmin[/b]
+
+open webbrowser on PC and try #^[url=http://192.168.178.37/phpmyadmin]http://192.168.178.37/phpmyadmin[/url]
+
+(Source [url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+
+
+[b]Create an empty database... that is later used by RED[/b]
+
+open webbrowser on PC and try #^[url=http://192.168.178.37/phpmyadmin]http://192.168.178.37/phpmyadmin[/url]
+
+Create an empty database
+
+Note the access details (hostname, username, password, database name).
+
+
+[size=large]3. Selfhost[/size]
+
+(Source: #^[url=http://www.techjawab.com/2013/06/setup-dynamic-dns-dyndns-for-free-on.html]http://www.techjawab.com/2013/06/setup-dynamic-dns-dyndns-for-free-on.html[/url])
+
+[url=http://freedns.afraid.org/signup/]http://freedns.afraid.org/signup/[/url]
+
+[b]Step 1[/b]
+Register for a Free domain at #^[url=http://freedns.afraid.org/signup/]http://freedns.afraid.org/signup/[/url]
+(We will take techhome.homenet.org in this guide)
+
+[b]Step 2[/b]
+
+Logon to FreeDNS (where you just registered) and goto #^[url=http://freedns.afraid.org/dynamic/]http://freedns.afraid.org/dynamic/[/url]
+Right click on &quot;Direct Link&quot; and copy the URL and paste it somewhere.
+You should notice a large and unique alpha-numeric key in the URL, make a note of it as shown below:
+[code]http://freedns.afraid.org/dynamic/update.php?alphanumeric-key[/code]
+
+
+[b]Step 3[/b]
+Install inadyn using the following command:[code]sudo apt-get install inadyn[/code]
+
+[b]Step 4[/b]
+Configure inadyn using the below steps:[code]sudo nano /etc/inadyn.conf[/code]
+And add the following contains in it replacing the actual values:
+[code]
+--username [color=red]techhome[/color]
+--password [color=red]mypassword[/color]
+--update_period 3600
+--forced_update_period 14400
+--alias [color=red]techhome.homenet.org&lt;/b&gt;,[color=red]alphanumeric key[/color]
+--background
+--dyndns_system default@freedns.afraid.org
+--syslog
+ [/code]
+
+
+[b]Step 5[/b]
+
+Now, we need to ensure that the DNS updater (Inadyn) runs automatically after every re-boot[code]export EDITOR=gedit &amp;&amp; sudo crontab -e[/code]
+Add the following line:[code]@reboot /usr/sbin/inadyn[/code]
+
+
+[b]Step 6[/b]
+
+Reboot system and then run the following command to ensure inadyn is running:[code]
+sudo reboot
+ps -A | grep inadyn
+[/code]
+Now your host is ready and up for accessing from internet...
+You can trying ssh-ing from another computer over the internet
+[code]ssh username@techhome.homenet.org[/code]
+Or, if any web server is running, then simply browse to #^[url=http://techhome.homenet.org]http://techhome.homenet.org[/url]
+Or, you can just ping it to test ping techhome.homenet.org
+To check the logs you can use this:
+[code]more /var/log/messages |grep INADYN[/code]
+
+
+[size=large]4. Install $Projectname[/size]
+
+(Source: [zrl=[baseurl]/help/Install][baseurl]/help/Install[/zrl])
+
+Linux Appache document root is /var/www/
+Two files exist there (created by the steps above): index.html, phpinfo.php
+
+
+[b]Install $Projectname and its Addons[/b]
+
+Cleanup: Remove the directory www/ (Git will not create files and folders in directories that are not empty.) Make sure you are in directory var[code]pi@pi /var $ cd /var[/code]
+
+Remove directory[code]pi@pi /var $ sudo rm -rf www/[/code]
+
+Download the sources of $Projectname from GIT
+[code]pi@pi /var $ sudo git clone https://framagit.org/hubzilla/core.git www[/code]
+
+Download the sources of the addons from GIT
+[code]pi@pi /var/www $ sudo git clone https://framagit.org/hubzilla/addons.git addon[/code]
+
+Make user www-data the owner of the whole web directory (including subdirectories and files)
+(TODO: This step has to be proofed by the next installation.)
+[code]pi@pi /var $ chown -R www-data:www-data /var/www/[/code]
+
+Check if you can update the sources from git[code]
+pi@pi /var $ cd www
+pi@pi /var/www $ git pull
+[/code]
+
+Check if you can update the addons
+[code]pi@pi /var/www $ cd addon/
+pi@pi /var/www/addon $ sudo git pull[/code]
+
+Make sure folder store/[data]/smarty3 exists and is writable by the webserver
+[code]pi@pi /var/www $ sudo chmod ou+w "store/\[data\]/smarty3"[/code]
+
+Create .htconfig.php and is writable by the webserver
+[code]pi@pi /var/www $ sudo touch .htconfig.php
+pi@pi /var/www $ sudo chmod ou+w .htconfig.php[/code]
+
+[b]First start and initial configuration of your RED Matrix hub[/b]
+
+In browser open #^[zrl=http://einervonvielen.mooo.com/]http://einervonvielen.mooo.com/[/zrl]
+(Replace einervonvielen.mooo.com by your domain, see chapter selfhost. Be patient. It takes time.)
+(#^[zrl=http://einervonvielen.mooo.com/index.php?q=setup]http://einervonvielen.mooo.com/index.php?q=setup[/zrl])
+
+There might be errors like the following.
+
+Error: libCURL PHP module required but not installed.
+Solution:
+apt-get install php5-curl
+
+Error: Apache webserver mod-rewrite module is required but not installed.
+Solution
+(Source: [url=http://xmodulo.com/2013/01/how-to-enable-mod_rewrite-in-apache2-on-debian-ubuntu.html]http://xmodulo.com/2013/01/how-to-enable-mod_rewrite-in-apache2-on-debian-ubuntu.html[/url])
+The default installation of Apache2 comes with mod_rewrite installed. To check whether this is the case, verify the existence of /etc/apache2/mods-available/rewrite.load
+- pi@pi /var/www $ nano /etc/apache2/mods-available/rewrite.load
+ (You should find the contendt: LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so)
+To enable and load mod_rewrite, do the rest of steps.
+Create a symbolic link in /etc/apache2/mods-enabled
+- pi@pi /var/www $ sudo a2enmod rewrite
+Then open up the following file, and replace every occurrence of &quot;AllowOverride None&quot; with &quot;AllowOverride all&quot;.
+- pi@pi /var/www $ sudo nano /etc/apache2/sites-available/default
+Finally, restart Apache2.
+- pi@pi /var/www $ sudo service apache2 restart
+
+Error store is writable (not checked)
+Solution:
+(TODO: Make writeable to group www-data only?)
+pi@pi /var/www $ sudo mkdir store
+pi@pi /var/www $ chown -R www-data:www-data /var/www/red/
+pi@pi /var/www $ sudo chmod ou+w view
+
+[b]More[/b]
+
+Set up a cron job to run the poller once every 15 minutes in order to perform background processing.
+- pi@pi /var/www $ which php
+Make sure you are in the document root directory of the webserver
+- pi@pi /var/www $ cd /var/www/
+Try to execute the poller in order to make sure it works
+- pi@pi /var/www $ /usr/bin/php include/poller.php
+Create the cronjob
+- pi@pi /var/www $ crontab -e
+Enter
+- */15 * * * * cd /var/www/; /usr/bin/php include/poller.php
+- Save and exit.
+
+Prevent search engines from indexing your search pages. Why? This can cause heavy resource use.
+
+[code]
+php util/config system block_public_search 1
+[/code]
+
+
+
+[size=large]5. Keep your Raspberry Pi and your $Projectname up-to-date[/size]
+
+Git update every day at 4 am and addons at 5 am every day
+Try if the command is working
+- pi@pi /var/www $ sudo git pull
+Create the cronjob
+- pi@pi /var/www $ crontab -e
+Enter the following to update at 4:01 am every day
+- 01 04 * * * cd /var/www/; sudo git pull
+Enter the following to update the addons at 5:01 am every day
+- 01 05 * * * cd /var/www/addon/; sudo git pull
+Enter the following to update the Raspberry Pi (Raspbian OS = Debian) at 6:01 am every day
+- 01 06 * * * sudo aptitude -y update &amp;&amp; sudo aptitude -y safe-upgrade
+Save and exit.
+
+[size=large]6. Running with SSL[/size]
+
+Follow the instructions here:
+[url=https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL]https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL[/url]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/roadmap.bb b/doc/roadmap.bb
index 9ef9f146a..dce19848a 100644
--- a/doc/roadmap.bb
+++ b/doc/roadmap.bb
@@ -1,49 +1,28 @@
+Roadmap
-Roadmap for $Projectname V3
-*HZ = Hubzilla repository
+Platform
+ Convert E2EE and select Javascript resources to dynamic loading using jQuery.getScript() [or other methods].
-Crypto
- Convert E2EE to dynamic loading (on demand) using jQuery.getScript() [or other methods] to only load encryption libs when you require them. This should also support multiple encryption libraries (e.g. SJCL, others) triggered from the choice of algorithm and remain pluggable.
+Webpages
-Subscriptions and business models
- Build enough into core(/addons) to generate income (or at least try and cover costs) out of the box
+ Make webpage building easy, with point-n-click selectors to build PDLs
- Resolve the "every photo has an item" confusion, perhaps every file should also - but only if we can explain it and separate them conceptually.
-Migration tools
- Friendica importer
- Diaspora importer (channel and connection import done, conversations and photos still in progress and waiting for support from Diaspora)
+Events
-Webpage design UI improvements
- If practical, separate "conversation" sub-themes from overall themes so one can choose different conversation and content layouts within a base theme.
- Make webpage building easy, with point-n-click selectors to build PDLs
- bring back WYSIWYG, which ideally requires a JS abstraction layer so we can use any editor and change it based on mimetype
+ Recurring events
+ Integrate Hubzilla events with CalDAV
-Social Networking Federation
- Friendica native mode?
- Pump.io?
- Others?
-Lists
- Create a list object to contain arbitrary things for system use
- Create a list object to contain arbitrary things for personal use
+Connections
-Events
- Recurring events
+ CardDAV integration with abook and profiles
-Zot
- Provide a way to sync web resources. This could be built on DAV except for preserving resource naming (guids) instead of filenames.
-API extensions
- More, more, more.
+Issues manager
-Evangelism
- More documentation. More, more, more.
- Libzot
+ Provide easy(easier) channel move (as opposed to channel copy or clone)
-DNS abstraction for V3
- Allow a channel to live in an arbitrary "DNS" namespace, for instance "mike@core.hubzilla". Use our directories and zot to find the actual DNS location via redirection. This could potentially allow hubs to be hidden behind tor or alt-roots and accessible only via the matrix.
- \ No newline at end of file
diff --git a/doc/roadmap_hz3.md b/doc/roadmap_hz3.md
deleted file mode 100644
index a64fb2d5c..000000000
--- a/doc/roadmap_hz3.md
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Hubzilla III
-============
-
-Due: December 2017
-Codename:
-
-
-Wishlist:
-
-- Move CalDAV/CardDAV server to core
-
-- Integrate Hubzilla events with CalDAV
-
-- Connection 'roles' allows you to select different permission roles for your connections; such as follower, friend, contributor, etc.
-
-- CardDAV integration with abook and profiles
-
-- App tray
-
-- issues manager
-
-- wiki cloning
-
-- provide easy channel move (as opposed to channel copy or clone), which is currently supported only by the basic server role.
-
-- provide RSA keychange operation; which cannot affect the primary identity (which is based on the channel keys), so add a secondary dynamic key pair which will be used for all other operations and can be upgraded or revoked at any time. \ No newline at end of file
diff --git a/doc/roadmapv4.bb b/doc/roadmapv4.bb
deleted file mode 100644
index 419cd8d4c..000000000
--- a/doc/roadmapv4.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-[h1]Project Roadmap V4[/h1]
-
-[h2]Hubzilla 2.0 - code name "Universal Thunder"[/h2]
-
-[h3]Project Core Development[/h3]
-
-Goals/Highlights:
-
-
-Focus on visual website design tools, widgets, and sharing mechanisms
-
-[x] App organisation.
-
-[x] Conversion of core application to a composer format living under the namespace "Zotlabs"
-
-[x] Conversion of Modules to a more general purpose Controllers layout with DB/memory based
-controller routing as opposed to filesystem routing.
-
-[x] (partial) Conversion of core Zot Protocol to a class library
-
-[x] Abstraction of nomadic identity so that sending/receiving to/from singleton networks to/from any clone works flawlessly - [b]provided[/b] the clone physically connected to that singleton identity is up.
-
-[h3]Community Development[/h3]
-
-[x] CalDAV/CardDAV
-
-E-Commerce
-
-Auto Updater \ No newline at end of file
diff --git a/doc/schema_development.bb b/doc/schema_development.bb
index 3d4c84e85..10832684a 100644
--- a/doc/schema_development.bb
+++ b/doc/schema_development.bb
@@ -1,78 +1,78 @@
-[b]Red Development - A Guide To The Schema System[/b]
-
-A schema, in a nutshell, is a collection of settings for a bunch of variables to define
-certain elements of a theme. A schema is loaded as though it were part of config.php
-and has access to all the same information. Importantly, this means it is identity aware,
-and can be used to do some interesting things. One could, for example, restrict options
-by service class, or present different options to different members.
-
-By default, we filter only by whether or not expert mode is enabled. If expert mode is
-enabled, all options are presented to the member. If it is not, only scheme, background
-image, font face, and iconset are available as choices.
-
-A schema is loaded *after* the member's personal settings. Therefore, to allow a member
-to overwrite a particular aspect of a schema you would use the following syntax:
-[code]
- if (! $foo)
- $foo = 'bar';
-[/code]
-However, there are circumstances - particularly with positional elements - where it
-may be desirable (or necessary) to override a member's settings. In this case, the syntax
-is even simpler:
-[code]
- $foo = 'bar';
-[/code]
-Members will not thank you for this, however, so only use it when it is required.
-
-If no personal options are set, and no schema is selected, we will first try to load a schema
-with the file name &quot;default.php&quot;. This file should never be included with a theme. If it
-is, merge conflicts will occur as people update their code. Rather, this should be defined
-by administrators on a site by site basis.
-default.php and default.css MUST be symlinks to existing scheme files.
-
-You schema does not need to - and should not - contain all of these values. Only the values
-that differ from the defaults should be listed. This gives you some very powerful options
-with very few lines of code.
-
-Note the options available differ with each theme. The options available with the Redbasic
-theme are as follows:
-
-[li] nav_colour
- The colour of the navigation bar. Options are red, black and silver. Alternatively,
- one can set $nav_bg_1, $nav_bg_2, $nav_bg_3 and $nav_bg_4 to provide gradient and
- hover effects.[/li]
-[li] banner_colour
- The font colour of the banner element. Accepts an RGB or Hex value.[/li]
-[li] bgcolour
- Set the body background colour. Accepts an RGB or Hex value.[/li]
-[li] background_image
- Sets a background image. Accepts a URL or path.[/li]
-[li] item_colour
- Set the background colour of items. Accepts an RGB or Hex value.[/li]
-[li] item_opacity
- Set the opacity of items. Accepts a value from 0.01 to 1[/li]
-[li] toolicon_colour
- Set the colour of tool icons. Accepts an RGB or Hex value.[/li]
-[li] toolicon_activecolour
- Set the colour of active or hovered icon tools.[/li]
-[li] font_size
- Set the size of fonts in items and posts. Accepts px or em.[/li]
-[li] body_font_size
- Sets the size of fonts at the body level. Accepts px or em.[/li]
-[li] font_colour
- Sets the font colour. Accepts an RGB or Hex value.[/li]
-[li] radius
- Set the radius of corners. Accepts a numeral, and is always in px.[/li]
-[li] shadow
- Set the size of shadows shown with inline images. Accepts a numerical
- value. Note shadows are not applied to smileys.[/li]
-[li] converse_width
- Set the maximum width of the content region in px.[/li]
-[li] nav_min_opacity[/li]
-[li] top_photo[/li]
-[li] reply_photo[/li]
-
-If a your_schema_name.css file is found, the content of this file will be attached to the end of style.css.
-This gives the schem developer the possiblity to override any style component.
-
-#include doc/macros/main_footer.bb;
+[b]Red Development - A Guide To The Schema System[/b]
+
+A schema, in a nutshell, is a collection of settings for a bunch of variables to define
+certain elements of a theme. A schema is loaded as though it were part of config.php
+and has access to all the same information. Importantly, this means it is identity aware,
+and can be used to do some interesting things. One could, for example, restrict options
+by service class, or present different options to different members.
+
+By default, we filter only by whether or not expert mode is enabled. If expert mode is
+enabled, all options are presented to the member. If it is not, only scheme, background
+image, font face, and iconset are available as choices.
+
+A schema is loaded *after* the member's personal settings. Therefore, to allow a member
+to overwrite a particular aspect of a schema you would use the following syntax:
+[code]
+ if (! $foo)
+ $foo = 'bar';
+[/code]
+However, there are circumstances - particularly with positional elements - where it
+may be desirable (or necessary) to override a member's settings. In this case, the syntax
+is even simpler:
+[code]
+ $foo = 'bar';
+[/code]
+Members will not thank you for this, however, so only use it when it is required.
+
+If no personal options are set, and no schema is selected, we will first try to load a schema
+with the file name &quot;default.php&quot;. This file should never be included with a theme. If it
+is, merge conflicts will occur as people update their code. Rather, this should be defined
+by administrators on a site by site basis.
+default.php and default.css MUST be symlinks to existing scheme files.
+
+You schema does not need to - and should not - contain all of these values. Only the values
+that differ from the defaults should be listed. This gives you some very powerful options
+with very few lines of code.
+
+Note the options available differ with each theme. The options available with the Redbasic
+theme are as follows:
+
+[li] nav_colour
+ The colour of the navigation bar. Options are red, black and silver. Alternatively,
+ one can set $nav_bg_1, $nav_bg_2, $nav_bg_3 and $nav_bg_4 to provide gradient and
+ hover effects.[/li]
+[li] banner_colour
+ The font colour of the banner element. Accepts an RGB or Hex value.[/li]
+[li] bgcolour
+ Set the body background colour. Accepts an RGB or Hex value.[/li]
+[li] background_image
+ Sets a background image. Accepts a URL or path.[/li]
+[li] item_colour
+ Set the background colour of items. Accepts an RGB or Hex value.[/li]
+[li] item_opacity
+ Set the opacity of items. Accepts a value from 0.01 to 1[/li]
+[li] toolicon_colour
+ Set the colour of tool icons. Accepts an RGB or Hex value.[/li]
+[li] toolicon_activecolour
+ Set the colour of active or hovered icon tools.[/li]
+[li] font_size
+ Set the size of fonts in items and posts. Accepts px or em.[/li]
+[li] body_font_size
+ Sets the size of fonts at the body level. Accepts px or em.[/li]
+[li] font_colour
+ Sets the font colour. Accepts an RGB or Hex value.[/li]
+[li] radius
+ Set the radius of corners. Accepts a numeral, and is always in px.[/li]
+[li] shadow
+ Set the size of shadows shown with inline images. Accepts a numerical
+ value. Note shadows are not applied to smileys.[/li]
+[li] converse_width
+ Set the maximum width of the content region in px.[/li]
+[li] nav_min_opacity[/li]
+[li] top_photo[/li]
+[li] reply_photo[/li]
+
+If a your_schema_name.css file is found, the content of this file will be attached to the end of style.css.
+This gives the schem developer the possiblity to override any style component.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/sv/main.bb b/doc/sv/main.bb
index 1c6ad3f63..e304a84cd 100644
--- a/doc/sv/main.bb
+++ b/doc/sv/main.bb
@@ -1,80 +1,80 @@
-[img][baseurl]/images/hubzilla-banner.png[/img]
-
-[zrl=[baseurl]/help/about][b]Vad är $Projectname?[/b][/zrl]
-$Projectname är en decentraliserad publicerings- och kommunikationsplattform som möjliggör att du behåller kontrollen över dina kommunikationer med hjälp av automatisk kryptering och fininställbar behörighetskontroll. Det är du, och bara du, som beslutar vem som är behörig att ta del av ditt innehåll.
-
-[zrl=[baseurl]/help/features][b]$Projectname funktioner[/b][/zrl]
-$Projectname används redan och bildar ett globalt distribuerad närverk och bevisar* dagligen sin skalbarhet och diversitet i allt från installationer med en kanal till installationer med många användare och många kanaler med en stor mängd innehåll.
-Föreställ dig isolerade familjekommunikationsplatformer, distribuerade nätforum med fildelning, hjälpforum, bloggar och hemsidor. Eller proffesionellt anpassade innehållsleverantörer med kommersiella premium* kanaler och målriktat innehållsstyrning. Vad du än önskar så finns $Projectname för att stödja dig i förverkligande av din kreativitet.
-
-[zrl=[baseurl]/help/what_is_zot][b]Har du Zot? Skaffa det, direkt.[/b][/zrl]
-Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Projectname. Som medlem är du inte längre bunden till en enskild sida eller hub tack vara "nomadiska identiteter". Flytt lätt till en annan server och håll dina kontakter och förbindelser intakta eller klona och kör den samma kanal på flera servrar simultant. I tillfälle av att en av dem stänger ner så går du inte miste om något. Plus när du är loggat in i $Projectname så är det inga flera inloggningar även när du kontakter andra hubbar i nätverket. Zot är det som gör $Projectname till något särskilt värdefullt/som urskiljer $Projectname från mängden.
-
-[h3]Kom igång[/h3]
-[zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl]
-[zrl=[baseurl]/help/registration]Account Registration[/zrl]
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at $Projectname: accounts, profiles and channels in short[/zrl]
-[zrl=[baseurl]/help/profiles]Profiles[/zrl]
-[zrl=[baseurl]/help/channels]Channels[/zrl]
-[zrl=[baseurl]/help/sv/roles]Behörighetsförval för kanaler[/zrl]
-[zrl=[baseurl]/help/first-post]Your first posting[/zrl]
-[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl]
-[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl]
-[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl]
-
-[h3]Hjälp till medlemmar[/h3]
-[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl]
-[zrl=[baseurl]/help/webpages]Web Pages[/zrl]
-[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl]
-[zrl=[baseurl]/help/checking_account_quota_usage]Checking Account Quota Usage[/zrl]
-[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
-[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl]
-[zrl=[baseurl]/help/addons]Help With Addons[/zrl]
-[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl]
-[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl]
-
-[h3]Hjälp till administratorer[/h3]
-[zrl=[baseurl]/help/install]Install[/zrl]
-[zrl=[baseurl]/help/debian_install]Easy Install on Debian via script[/zrl]
-[zrl=[baseurl]/help/red2pi]Installing Red on the Raspberry Pi[/zrl]
-[zrl=[baseurl]/help/troubleshooting]Troubleshooting Tips[/zrl]
-[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
-[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
-
-[h3]Teknisk dokumentation[/h3]
-[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
-[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
-[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
-[zrl=[baseurl]/help/comanche]Comanche Page Descriptions[/zrl]
-[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
-[zrl=[baseurl]/help/Widgets]Core Widgets[/zrl]
-[zrl=[baseurl]/help/plugins]Plugins[/zrl]
-[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
-[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
-[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
-[zrl=[baseurl]/help/Translations]Translations[/zrl]
-[zrl=[baseurl]/help/developers]Developers[/zrl]
-[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
-[zrl=[baseurl]/help/api_functions]API functions[/zrl]
-[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
-[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
-[zrl=[baseurl]/doc/html/]Code Reference (doxygen generated - sets cookies)[/zrl]
-[zrl=[baseurl]/help/to_do_doco]To-Do list for the Red Documentation Project[/zrl]
-[zrl=[baseurl]/help/to_do_code]To-Do list for Developers[/zrl]
-[zrl=[baseurl]/help/roadmap]Version 3 roadmap[/zrl]
-[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
-[zrl=[baseurl]/help/dev_beginner]Sep-for-step manual for beginning developers[/zrl]
-
-[h3]Externa resurser[/h3]
-[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
-[url=https://github.com/friendica/red]Main Website[/url]
-[url=https://github.com/friendica/red-addons]Addon Website[/url]
-[url=https://zothub.com/channel/one]Development Channel[/url]
-
-[url=[baseurl]/help/credits]$Projectname Credits[/url]
-
-[h3]About This $Projectname Hub[/h3]
-[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
-[zrl=[baseurl]/siteinfo]Hub Information (/siteinfo)[/zrl]
-[zrl=[baseurl]/siteinfo_json]Detailed Technical Hub Information (/siteinfo_json)[/zrl]
+[img][baseurl]/images/hubzilla-banner.png[/img]
+
+[zrl=[baseurl]/help/about][b]Vad är $Projectname?[/b][/zrl]
+$Projectname är en decentraliserad publicerings- och kommunikationsplattform som möjliggör att du behåller kontrollen över dina kommunikationer med hjälp av automatisk kryptering och fininställbar behörighetskontroll. Det är du, och bara du, som beslutar vem som är behörig att ta del av ditt innehåll.
+
+[zrl=[baseurl]/help/features][b]$Projectname funktioner[/b][/zrl]
+$Projectname används redan och bildar ett globalt distribuerad närverk och bevisar* dagligen sin skalbarhet och diversitet i allt från installationer med en kanal till installationer med många användare och många kanaler med en stor mängd innehåll.
+Föreställ dig isolerade familjekommunikationsplatformer, distribuerade nätforum med fildelning, hjälpforum, bloggar och hemsidor. Eller proffesionellt anpassade innehållsleverantörer med kommersiella premium* kanaler och målriktat innehållsstyrning. Vad du än önskar så finns $Projectname för att stödja dig i förverkligande av din kreativitet.
+
+[zrl=[baseurl]/help/what_is_zot][b]Har du Zot? Skaffa det, direkt.[/b][/zrl]
+Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Projectname. Som medlem är du inte längre bunden till en enskild sida eller hub tack vara "nomadiska identiteter". Flytt lätt till en annan server och håll dina kontakter och förbindelser intakta eller klona och kör den samma kanal på flera servrar simultant. I tillfälle av att en av dem stänger ner så går du inte miste om något. Plus när du är loggat in i $Projectname så är det inga flera inloggningar även när du kontakter andra hubbar i nätverket. Zot är det som gör $Projectname till något särskilt värdefullt/som urskiljer $Projectname från mängden.
+
+[h3]Kom igång[/h3]
+[zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl]
+[zrl=[baseurl]/help/registration]Account Registration[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at $Projectname: accounts, profiles and channels in short[/zrl]
+[zrl=[baseurl]/help/profiles]Profiles[/zrl]
+[zrl=[baseurl]/help/channels]Channels[/zrl]
+[zrl=[baseurl]/help/sv/roles]Behörighetsförval för kanaler[/zrl]
+[zrl=[baseurl]/help/first-post]Your first posting[/zrl]
+[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl]
+[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl]
+[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl]
+[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl]
+
+[h3]Hjälp till medlemmar[/h3]
+[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl]
+[zrl=[baseurl]/help/webpages]Web Pages[/zrl]
+[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl]
+[zrl=[baseurl]/help/checking_account_quota_usage]Checking Account Quota Usage[/zrl]
+[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
+[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl]
+[zrl=[baseurl]/help/addons]Help With Addons[/zrl]
+[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl]
+[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl]
+
+[h3]Hjälp till administratorer[/h3]
+[zrl=[baseurl]/help/install]Install[/zrl]
+[zrl=[baseurl]/help/debian_install]Easy Install on Debian via script[/zrl]
+[zrl=[baseurl]/help/red2pi]Installing Red on the Raspberry Pi[/zrl]
+[zrl=[baseurl]/help/troubleshooting]Troubleshooting Tips[/zrl]
+[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
+[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
+
+[h3]Teknisk dokumentation[/h3]
+[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
+[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
+[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
+[zrl=[baseurl]/help/comanche]Comanche Page Descriptions[/zrl]
+[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
+[zrl=[baseurl]/help/Widgets]Core Widgets[/zrl]
+[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
+[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
+[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
+[zrl=[baseurl]/help/Translations]Translations[/zrl]
+[zrl=[baseurl]/help/developers]Developers[/zrl]
+[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
+[zrl=[baseurl]/help/api_functions]API functions[/zrl]
+[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
+[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
+[zrl=[baseurl]/doc/html/]Code Reference (doxygen generated - sets cookies)[/zrl]
+[zrl=[baseurl]/help/to_do_doco]To-Do list for the Red Documentation Project[/zrl]
+[zrl=[baseurl]/help/to_do_code]To-Do list for Developers[/zrl]
+[zrl=[baseurl]/help/roadmap]Version 3 roadmap[/zrl]
+[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
+[zrl=[baseurl]/help/dev_beginner]Sep-for-step manual for beginning developers[/zrl]
+
+[h3]Externa resurser[/h3]
+[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
+[url=https://github.com/friendica/red]Main Website[/url]
+[url=https://github.com/friendica/red-addons]Addon Website[/url]
+[url=https://zothub.com/channel/one]Development Channel[/url]
+
+[url=[baseurl]/help/credits]$Projectname Credits[/url]
+
+[h3]About This $Projectname Hub[/h3]
+[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
+[zrl=[baseurl]/siteinfo]Hub Information (/siteinfo)[/zrl]
+[zrl=[baseurl]/siteinfo_json]Detailed Technical Hub Information (/siteinfo_json)[/zrl]