diff options
author | Mario Vavti <mario@mariovavti.com> | 2017-03-08 09:39:46 +0100 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2017-03-08 09:39:46 +0100 |
commit | bc2b948f1f6e62b1c277a4042200bb6678956f3f (patch) | |
tree | 8586c30e495607eee23f16c0aad40974f0711275 /doc | |
parent | 23e3e2c50499fab52769929a448e73012fd915af (diff) | |
parent | ff9442474d07cce24c8f66db39ec34471c3874a2 (diff) | |
download | volse-hubzilla-bc2b948f1f6e62b1c277a4042200bb6678956f3f.tar.gz volse-hubzilla-bc2b948f1f6e62b1c277a4042200bb6678956f3f.tar.bz2 volse-hubzilla-bc2b948f1f6e62b1c277a4042200bb6678956f3f.zip |
Merge branch 2.2RC2.2
Diffstat (limited to 'doc')
78 files changed, 721 insertions, 3686 deletions
diff --git a/doc/Privacy.md b/doc/Privacy.md deleted file mode 100644 index 1ac019f5a..000000000 --- a/doc/Privacy.md +++ /dev/null @@ -1,77 +0,0 @@ -Privacy Policy -============== - - -##Summary## - - -Q: Who can see my content? - -A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators. - -Q: Can my content be censored? - -A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. - - -##Definitions - -**$Projectname** - -Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network. - -**hub** - -An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free. - -**hub administrator** - -The system operator of an individual hub. - -##Policies - -**Public Information** - -Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it. - -Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items. - -You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in $Projectname and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information. - -**Content** - -Content you provide (status posts, photos, files, etc.) belongs to you. $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability. - -Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content. - -**Comments and Forum posts** - -Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation. - -**Private Information** - -$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. - -##Identity Privacy - -Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. - -A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking. - -* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people. - -*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case. - -* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. - -###Censorship - -$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. - -$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted. - -$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision. - -If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. - -#include doc/macros/main_footer.bb; diff --git a/doc/README.md b/doc/README.md index 10fba445b..54f80bebe 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,42 +1,29 @@ +![Hubzilla](images/hubzilla-banner.png) -Hubzilla -======== +Hubzilla - Community Server +=========================== -###Websites. Redefined. +<p align="center" markdown="1"> +<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em> +</p> -![Hubzilla](../images/hz-32.png) +**What is Hubzilla?** -**What are Hubs?** +Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online. -Hubs are independent general-purpose websites that not only connect with their associated members and viewers, but also connect together to exchange personal communications and other information with each other. -This allows hub members on any hub to securely and privately share anything; with anybody, on any hub - anywhere; or share stuff publicly with anybody on the internet if desired. +Hubzilla contains some social network bits, some cloud storage bits, some blog and forum bits, and some content management bits. These are all integrated within a common privacy framework - and it is all decentralised. -**Hubzilla** is the server software which makes this possible. It is a sophisticated and unique combination of an open source content management system and a decentralised identity, communications, and permissions framework and protocol suite, built using common webserver technology (PHP/MySQL/Apache, although Mariadb or Postgres and Nginx could also be used - we're pretty easy). The end result is a level of systems integration, privacy control, and communications features that you wouldn't think are possible in either a content management system or a decentralised communications network. It also brings a new level of cooperation and privacy to the web and introduces the concept of personally owned "single sign-on" to web services across the entire internet. +Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - even with channels on different servers or other communications services. -Hubzilla hubs are +Migration and live backups of your connections, settings, and everything you publish are built-in, so you never need worry about server failure. -* decentralised -* inherently social -* optionally inter-networked with other hubs -* privacy-enabled (privacy exclusions work across the entire internet to any registered identity on any compatible hubs) +Hubzilla is completely decentralised and open source, for you modify or adapt to your needs and desires. Plugins, themes, and numerous configuration options extend the overall capabilities to do anything you can imagine. -Possible website applications include -* decentralised social networking nodes -* personal cloud storage -* file dropboxes -* managing organisational communications and activities -* collaboration and community decision-making -* small business websites -* public and private media/file libraries -* blogs -* event promotion -* feed aggregation and republishing -* forums -* dating websites -* pretty much anything you can do on a traditional blog or community website, but that you could do better if you could easily connect it with other websites or privately share things across website boundaries. +**Who Are We?** +The Hubzilla community consists of passionate volunteers creating an open source commons of decentralised services which are highly integrated and can rival the feature set of large centralised providers. We do our best to provide ethical software which places you in control of your online communications and privacy expectations. -This project is under development and is not yet available for general use. +[![Build Status](https://travis-ci.org/redmatrix/hubzilla.svg)](https://travis-ci.org/redmatrix/hubzilla) diff --git a/doc/Tags-and-Mentions.md b/doc/Tags-and-Mentions.md deleted file mode 100644 index f01b0ee74..000000000 --- a/doc/Tags-and-Mentions.md +++ /dev/null @@ -1,26 +0,0 @@ -Tags and Mentions -================= - -Like many other platforms, Red uses a special notation inside messages to indicate "tags" or contextual links to other entities. - -**Mentions** - -Channels are tagged by simply preceding their name with the @ character. Unless their system blocks unsolicited "mentions", the person tagged will likely receive a "Mention" post/activity or become a direct participant in the conversation in the case of public posts. - -When you start to mention somebody, it will create an auto-complete box to select from your immediate connections. Select one as appropriate. Some connections will be displayed in different colours. A light blue entry (using the default theme) indicates a channel which will redeliver to others if tagged. This is generally a conversation group or forum. But be aware that when tagged, the message will also go to anybody they choose, in addition to anybody you choose. - -**Private Mentions** - -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 include them (and perhaps restrict the post from "everybody" if this was the default). You can have more than one privacy tag, for instance @!bob and @!linda will send the post only to Bob and Linda (in addition to any recipients you selected with the privacy selector - if any). - -You may also tag privacy groups which are "public". When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) @!Friends - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it. - - - -**Topical Tags** - -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, #cars 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. The same rules apply as with names that spaces within tags are represented by the underscore character. It is therefore not possible to create a tag whose target contains an underscore. - -Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numerica hashtag, please add some descriptive text such as #2012-elections. - -#include doc/macros/main_footer.bb; diff --git a/doc/about.bb b/doc/about.bb deleted file mode 100644 index 1ec1cf28e..000000000 --- a/doc/about.bb +++ /dev/null @@ -1,24 +0,0 @@ -[b]About[/b]
-
-$Projectname is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.
-
-$Projectname is free and open source. It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers. It can be used to support communication between a few individuals, or scale to many thousands and more.
-
-$Projectname aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.
-
-How you use it depends on how you want to use it.
-
-It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as [url=http://mediatemple.com/]Media Temple[/url] and [url=http://www.dreamhost.com/]Dreamhost[/url], or on virtual and dedicated servers, offered by the likes of [url=https://www.linode.com]Linode[/url], [url=http://greenqloud.com]GreenQloud[/url] or [url=https://aws.amazon.com]Amazon AWS[/url].
-
-In other words, $Projectname can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.
-
-Along the way, $Projectname offers a number of unique goodies:
-
-[b]Single-click user identification:[/b] meaning you can access sites on $Projectname 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.
-
-[b]Cloning:[/b] of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address. You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in $Projectname). Now, should your primary hub go down, no worries, your contacts, posts[i]*[/i], and messages[i]*[/i] will automagically continue to be available and accessible under your cloned channel. [i](*: only posts and messages as from the moment you cloned your channel)[/i]
-
-[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss.
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 3327e0b50..e9485ffa6 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -32,7 +32,7 @@ The $Projectname software stack is a relatively standard webserver application w [*= nomadic identity] The ability to authenticate and easily migrate an identity across independent hubs and web domains. Nomadic identity provides true ownership of an online identity, because the identities of the channels controlled by an account on a hub are not tied to the hub itself. A hub is more like a "host" for channels. With Hubzilla, you don't have an "account" on a server like you do on typical websites; you own an identity that you can take with you across the grid by using clones. -[*= [url=[baseurl]/help/developer/api_zot]Zot[/url]] The novel JSON-based protocol for implementing secure decentralised communications and services. It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet-scale distributed access control which is unobtrusive. +[*= [url=[baseurl]/help/developer/zot_protocol]Zot[/url]] The novel JSON-based protocol for implementing secure decentralised communications and services. It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet-scale distributed access control which is unobtrusive. [/dl] [h3]Features[/h3] diff --git a/doc/account_basics.bb b/doc/account_basics.bb deleted file mode 100644 index 664949d6e..000000000 --- a/doc/account_basics.bb +++ /dev/null @@ -1,38 +0,0 @@ -[b]Account Basics[/b]
-
-[b]Registration[/b]
-
-Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides.
-
-[b]Your Email Address[/b]
-
-Please provide a valid email address. Your email address is never published. This address will be used to (optionally) send email notifications for incoming messages or items, and used to recover lost passwords.
-
-[b]Password[/b]
-
-Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites.
-
-[b]Terms Of Service[/b]
-
-Click the link to read the site's terms of service. Once you've read them, tick the box in the register form to confirm.
-
-[b]Register[/b]
-
-Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval.
-
-[b]Create a Channel[/b]
-
-Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz*
-
-When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles.
-
-*Note: It is not possible to change this address after creating the channel.
-
-See Also
-
-[zrl=[baseurl]/help/permissions]Permissions[/zrl]
-[zrl=[baseurl]/help/privacy]Privacy[/zrl]
-[zrl=[baseurl]/help/profiles]Profiles[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/accounts.bb b/doc/accounts.bb deleted file mode 100644 index 7c0378504..000000000 --- a/doc/accounts.bb +++ /dev/null @@ -1,4 +0,0 @@ -This one still needs to be written. - -#include doc/macros/main_footer.bb; - diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md index f21c55327..c233d8564 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/admin/administrator_guide.md @@ -196,6 +196,70 @@ The installation script was originally designed for a small hardware server behi 1. `service apache2 reload` 1. Open your domain with a browser and step throught the initial configuration of $Projectname. +### Server Roles + +$Projectname can be configured in many different ways. One of the configurations available at installation is to select a 'server role'. There are currently three server roles. We highly recommend that you use 'standard' unless you have special needs. + + +#### Basic + +The 'basic' server role is designed to be relatively simple, and it doesn't present options +or complicated features. The hub admin may configure additional features at a site level. +This role is designed for simple social networking and social network federation. Many features +which do not federate easily have been removed, including (and this is somewhat important) +"nomadic identity". You may move a channel to or from a basic server, but you may not clone +it. Once moved, it becomes read-only on the origination site. No updates of any kind will be +provided. It is recommended that after the move, the original channel be deleted - as it is +no longer useable. The data remains only in case there are issues making a copy of the data. + +This role is supported by the hubzilla community. + +#### Standard + + +The 'standard' server role is recommended for most sites. All features of the software are +available to everybody unless locked by the hub administrator. Some features will not federate +easily with other networks, so there is often an increased support burden explaining why +sharing events with Diaspora (for instance) presents a different experience on that network. +Additionally any member can enable "advanced" or "expert" features, and these may be beyond +their technical skill level. This may also result in an increased support burden. + +This role is supported by the hubzilla community. + +#### Pro + +The 'pro' server role is primarily designed for communities which want to present a uniform +experience and be relieved of many federation support issues. In this role there is +**no federation with other networks**. Additional features **may** be provided, such +as channel ratings, premium channels, and e-commerce. + +By default a channel may set a "techlevel" appropriate to their technical skill. Higher +levels provide more features. Everybody starts with techlevel 0 (similar to the 'basic' +role) where all complicated features are hidden from view. Increasing the techlevel provides +more advanced or complex features. + +The hub admin may also lock individual channels or their entire site at a defined techlevel +which provides an installation with a selection of advanced features consistent with the +perceived technical skills of the members. For instance, a community for horse racing might +have a different techlevel than a community for Linux kernel developers. + +This role is not supported by the hubzilla community. + +### Techlevels + +Techlevels is a unique feature of Hubzilla 'pro'. It is not available in other server_roles, although it expands on the concepts introduced in $Projectname 'basic'. + +We've implemented several different mechanisms in order to reduce the apparent complexity and learning curve presented to new members. At the same time, we do not wish to limit any functionality for people who are able to grasp some slightly advanced technical technical features. The first mechanism was to move several features to an optional 'Features' page where they could be enabled at will; with the default interface kept somewhat lean. + +The problem we had now is that the number of features began to grow dramatically, and the Feature page is daunting in possibilities. There are also features present which probably should not be available to all members, but may be extremely useful to those with technical backgrounds. + +The techlevels seeeks to remedy this by grouping features within different levels of technical ability; starting at 0 (uncomfortable with technology), and up to 5 (Unix wizard or equivalent). + +When a new member registers, their account is provided a techlevel setting of 0. On the account settings page they may change this to any available level. A higher level opens more advanced features and possible interactions. + +The account administrator may also lock a particular level, lock a maximum level, or change/re-arrange the features available to any level. Those with the minimum level are typically not very exploratory and are unlikely to discover the advanced modes. This is by design. Those that look around and desire more interactions will find them. In the absence of administrator defaults they may choose any level. As they look at the features available to the level in question, it is generally expected that they will discover some features are beyond their comprehension and it is hoped they will back off to a level where the interface and features are comfortable to their skill level. This is somewhat experimental at present and for that reason is not part of the 'standard' server role. The standard server role is preset to level '5', and the basic server role is preset to level '0', with no possibility of change. Members in these roles may find themselves overwhelmed or underwhelmed by the feature set and complexity. + + ### Service Classes Service classes allow you to set limits on system resources by limiting what individual diff --git a/doc/api_zot.md b/doc/api_zot.md deleted file mode 100644 index 6da8cddbe..000000000 --- a/doc/api_zot.md +++ /dev/null @@ -1,84 +0,0 @@ -Zot API -======= - - - -channel/export/basic - - Export channel data - - - -channel/stream - - Fetch channel conversation items - -network/stream - - Fetch network conversation items - - -[files](help/api/api_files) - - List file storage - -filemeta - - Export file metadata for any uploaded file - - -[filedata](help/api/api_filedata) - - Fetch file contents or partial contents for any uploaded file - - -file/export - -file - -[albums](help/api/api_albums) - - List photo albums - - -photos - - list photo metadata - - -photo - - -[group](help/api/group) - - List privacy groups - -[group_members](help/api/group_members) - - List members of a privacy group - - -[xchan](help/api/api_xchan) - - Global extended channel (identity) information - -[item/update](help/api/api_item_update) - - Create or update an item (post, activity, webpage, etc.) - - -item/full - - Get all data associated with an item - -abook - - Connections - -abconfig - - Connection metadata (such as permissions) - -perm_allowed - - Check a permission for a given xchan diff --git a/doc/bbcode.html b/doc/bbcode.html deleted file mode 100644 index 36f40d3f4..000000000 --- a/doc/bbcode.html +++ /dev/null @@ -1,109 +0,0 @@ -<h3>BBcode reference</h3> -<div style="font-size: 14px;"> -<br /><br /> -<ul class="listdecimal" style="list-style-type: decimal;"> -<li>[b]bold[/b] - <strong>bold</strong><br /> -<li>[i]italic[/i] - <em>italic</em><br /> -<li>[u]underlined[/u] - <u>underlined</u><br /> -<li>[s]strike[/s] - <strike>strike</strike><br /> -<li>[color=red]red[/color] - <span style="color: red;">red</span><br /> -<li>[url=https://zothub.com]$Projectname[/url] <a href="https://zothub.com">$Projectname</a><br /> -<li>[img]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo" /><br /> -<li>[img float=left]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:left;" alt="Image/photo" /><br /> -<div style="clear:both;"></div> -<li>[img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br /> -<div style="clear:both;"></div> -<li>[code]code[/code] <code>code</code><br /> -<li>[code=xxx]syntax highlighted code[/code] <code>supported languages php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh</code><br /> -<li>[quote]quote[/quote] <blockquote>quote</blockquote><br /> -<li>[quote=Author]Author? Me? No, no, no...[/quote] <br /><strong class="author">Author wrote:</strong><blockquote>Author? Me? No, no, no...</blockquote><br /> -<li> [nobb] may be used to escape bbcode.</ul><br /> - -<br />You can make lists with:<br /> -<ul class="listbullet" style="list-style-type: circle;"> -<li>[list]<br /> -<li>[list=1]<br /> -<li>[list=i]<br /> -<li>[list=I] <br /> -<li>[list=a]<br /> -<li>[list=A] <br /> -<li>[ul]<br /> -<li>[ol]<br /> -<li>[dl]<br /> -<li>[dl terms="biumlh"] — where style of the terms can be any combination of: - <dl class="bb-dl dl-horizontal"> - <dt>b</dt><dd>bold</dd> - <dt>i</dt><dd>italic</dd> - <dt>u</dt><dd>underline</dd> - <dt>m</dt><dd>monospace</dd> - <dt>l</dt><dd>large</dd> - <dt>h</dt><dd>horizontal — like <em>this</em> defintion list</dd> - </dl> -</li> - -</ul>For example:<br />[ul]<br />[*] First list element<br />[*] Second list element<br />[/ul]<br /><br />Will render something like: <br /> -<ul class="listbullet" style="list-style-type: circle;"> -<li> First list element<br /> -<li> Second list element</ul> - -or<br /><br />[dl terms="b"]<br />[*= First element term] First element description<br />[*= Second element term] Second element description<br />[/dl]<br /><br />Will render something like: <br /><br /> -<dl class="bb-dl dl-terms-bold"> -<dt> First element term </dt><dd>First element description</dd> -<dt> Second element term </dt><dd>Second element description</dd> -</dl><br /> - - -<br />There's also:<br /> -<ul class="listloweralpha" style="list-style-type: lower-alpha;"> -<li>[hr]<br /> -<li>[video]video URL[/video]<br /> -<li>[audio]audio URL[/audio]<br /> -<li>[table]<br /> -<li>[th] <br /> -<li>[td]<br /> -<li>[tr]<br /> -<li>[center]<br /> -<li>[font=courier]some text[/font] <span style="font-family: courier;">some text</span><br /> -</ul><br /> -<br />Tables? Yes!<br /><br />[table border=1]<br /> [tr]<br /> [th]Tables now[/th]<br /> [/tr]<br /> [tr]<br /> [td]Have headers[/td]<br /> [/tr]<br />[/table]<br /><br /><table border="1" ><tr><th>Tables now</th></tr><tr><td>Have headers</td></tr></table><br />All sizes, <br />From the [size=xx-small] - <span style="font-size: xx-small;">xx-small</span>.<br />To the [size=xx-large] - <span style="font-size: xx-large;">xx-large</span>.<br />To fit exactly <span style="font-size: 20px;">20px</span> use [size=20].<br /><br /> - -<p>$Projectname specific codes</p> -<ul class="listbullet" style="list-style-type: circle;"> -<li>[&copy;] © This works for many HTML entities</li> -<li>[zrl]https://zothub.com[/zrl] Magic-auth version of [url] tag</li> -<li>[zmg]https://zothub.com/some/photo.jpg[/zmg] Magic-auth version of [img] tag<br /></li> - -<li>[observer=1]Text to display if observer is authenticated in the matrix[/observer]</li> -<li>[observer=0]Text to display if observer is <strong>not</strong> authenticated in the matrix[/observer]</li> -<li>[observer.baseurl] website of observer</li> -<li>[observer.url] channel URL of observer</li> -<li>[observer.name] name of observer</li> -<li>[observer.webname] short name in the url of the observer</li> -<li>[observer.address] address (zot-id) of observer</li> -<li>[observer.photo] profile photo of observer<br /></li> - -<li>[spoiler] for hiding spoilers<br /><br /></li> - -<li>[rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</li> -<li>[qr]text to post[/qr] - create a QR code (if the qrator plugin is installed).</li> -<li>[toc] - create a table of content in a webpage. Please refer to the <a href="http://ndabas.github.io/toc/" target="_blank">original jquery toc</a> to get more explanations. - <ul> - <li>Optional param: 'data-toc'. If ommited the default is 'body'</li> - <li>Optional param: 'data-toc-headings'. If ommited the default is 'h1,h2,h3'</li> - <li>Full example: [toc data-toc='div.page-body' data-toc-headings='h1,h2']</li> - </ul> -</li> -</ul> -<br /> -<p>These require a suitable map plugin/addon such as openstreetmap or else the result will be blank</p> -<ul> -<li>[map] Generate an inline map using the current browser coordinates of the poster, if browser location is enabled<br /> -<li>[map=latitude,longitude] Generate a map using global coordinates.<br /> -<li>[map]Place Name[/map] 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.<br /> -</ul> - -#include doc/macros/main_footer.bb; -</div> - - - diff --git a/doc/channels.bb b/doc/channels.bb deleted file mode 100644 index eca8dd0e6..000000000 --- a/doc/channels.bb +++ /dev/null @@ -1,39 +0,0 @@ -[h2]Channels[/h2]
-
-[h3]What are channels?[/h3]
-
-Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me".
-
-The most important features for a channel that represents "me" are:
-[ul]
-[*]Secure and private "spam free" communications
-
-[*]Identity and "single-signon" across the entire network
-
-[*]Privacy controls and permissions which extend to the entire network
-
-[*]Directory services (like a phone book)
-[/ul]
-In short, a channel that represents yourself is "me, on the internet".
-
-[h3]Creating channels[/h3]
-
-You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link.
-
-You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice.
-
-Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions.
-
-Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0]example.com/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts.
-
-[h3]The grid, permissions and delegation[/h3]
-
-The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts.
-
-As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl].
-
-You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources.
-
-#include doc/macros/main_footer.bb;
-
-
diff --git a/doc/cloud.bb b/doc/cloud.bb deleted file mode 100644 index 2ad22806b..000000000 --- a/doc/cloud.bb +++ /dev/null @@ -1,27 +0,0 @@ -[b]Personal Cloud Storage[/b]
-
-$Projectname provides an ability to store privately and/or share arbitrary files with friends.
-
-You may either upload files from your computer into your storage area, or copy them directly from the operating system using the WebDAV protocol.
-
-On many public servers there may be limits on disk usage.
-
-[b]File Attachments[/b]
-
-The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending.
-
-To delete attachments or change the permissions on the stored files, visit [observer.baseurl]/cloud/{{username}}" replacing {{username}} with the nickname you provided during channel creation.
-
-[b]Web Access[/b]
-
-Your files are visible on the web at the location "cloud/{{username}}" to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories.
-
-[b]WebDAV access[/b]
-
-See: [zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
-
-[b]Permissions[/b]
-
-When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit "filestorage/{{username}}"; select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/cloud_desktop_clients.bb b/doc/cloud_desktop_clients.bb deleted file mode 100644 index 2f099527f..000000000 --- a/doc/cloud_desktop_clients.bb +++ /dev/null @@ -1,21 +0,0 @@ -[b]Cloud Desktop Clients[/b]
-
-[b]Windows Clients[/b]
-
-[li][zrl=[baseurl]/help/dav_windows]Windows Internal Client[/zrl][/li]
-
-
-[b]Linux Clients[/b]
-
-[li][zrl=[baseurl]/help/dav_mount]Command Line as a Filesystem[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_dolphin]Dolphin[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_konqueror]Konqueror[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_nautilus]Nautilus[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_nemo]Nemo[/zrl][/li]
-
-
-[b]Server Notes[/b]
-
-Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/connecting_to_channels.bb b/doc/connecting_to_channels.bb deleted file mode 100644 index 291323f75..000000000 --- a/doc/connecting_to_channels.bb +++ /dev/null @@ -1,19 +0,0 @@ -[b]Connecting To Channels[/b]
-
-Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it?
-
-First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels.
-
-The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later.
-
-To connect with other $Projectname channels:
-
-Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit".
-
-You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions.
-
-[b]Premium Channels[/b]
-
-Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/connecting_to_channels.md b/doc/connecting_to_channels.md deleted file mode 100644 index 349f58b67..000000000 --- a/doc/connecting_to_channels.md +++ /dev/null @@ -1,34 +0,0 @@ -# Connecting To Channels # - -Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? - -First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels. - -The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later. - -To connect with other $Projectname channels: - -Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit". - -You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. - -## Block/Ignore/Archive/Hide channels ## - -Channels in your address book can have statuses such as *blocked*, *ignored*, *archived* and *hidden*. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel. - -Here's their meaning: - -**Blocked:** the channel can't read your items regardless of permissions, nor can it write to your channel. - -**Ignored:** the channel can read your items if it has permission, but can't write to your channel. - -**Hidden:** the channel does not show up in your profile's connections list, noone can see you're connected, but beware they may still show up to your other connections, for example in post replies. - -**Archived:** if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it. - - -## Premium Channels ## - -Some channels are designated "Premium Channels" and **may** require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this **may** involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. - -#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/plugins/assets/addon_repo_gui_1.png Binary files differnew file mode 100644 index 000000000..37139b345 --- /dev/null +++ b/doc/context/en/admin/plugins/assets/addon_repo_gui_1.png diff --git a/doc/context/en/admin/plugins/help.html b/doc/context/en/admin/plugins/help.html new file mode 100644 index 000000000..d57f4967f --- /dev/null +++ b/doc/context/en/admin/plugins/help.html @@ -0,0 +1,14 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>This page manages which plugins (also known as <i>addons</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> + 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 diff --git a/doc/context/en/settings/tokens/help.html b/doc/context/en/settings/tokens/help.html index d37a0fd2b..6d7e6b98d 100644 --- a/doc/context/en/settings/tokens/help.html +++ b/doc/context/en/settings/tokens/help.html @@ -1,5 +1,5 @@ <dl class="dl-horizontal"> - <dt>Guest Access Tokens</dt> + <dt><a href="/help/member/member_guide#Guest_Access_Tokens">Guest Access Tokens</a></dt> <dd> In order to facilitate sharing of private resources with non-members or members of federation nodes with limited identification discovery, Hubzilla should provide members with a mechanism to create and manage temporary ("throwaway") logins, aka "Zot Access Tokens". These tokens/credentials may be used to authenticate to a hubzilla site for the sole purpose of accessing privileged or access controlled resources (files, photos, posts, webpages, chatrooms, etc.). </dd> diff --git a/doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png b/doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png Binary files differnew file mode 100644 index 000000000..37139b345 --- /dev/null +++ b/doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png diff --git a/doc/context/es-es/admin/plugins/help.html b/doc/context/es-es/admin/plugins/help.html new file mode 100644 index 000000000..0096937fe --- /dev/null +++ b/doc/context/es-es/admin/plugins/help.html @@ -0,0 +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> + <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 + se puede añadir escribiendo la URL del repositorio + <span style="font-family: monospace;">https://github.com/redmatrix/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 diff --git a/doc/context/es-es/profiles/help.html b/doc/context/es-es/profiles/help.html new file mode 100644 index 000000000..9303e049c --- /dev/null +++ b/doc/context/es-es/profiles/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>. + </dd> + <dt>Cuenta</dt> + <dd> + Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su + perfil y su canal. <i>Piense en su cuenta como la vÃa para identificarse en un sitio Hubzilla. Le permite + hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i> + </dd> + <dt>Perfil</dt> + <dd> + Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en lÃnea. Para todos ellos + usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, paÃs, edad y gustos o preferencias. Frente a otros + servicios, Hubzilla le ofrece la ventaja de crear + <i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo + (su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica + básica que acerca de usted mismo muestra a otra gente,</i> + </dd> + <dt>Canal</dt> + <dd> + Durante el registro, creó su primer <i>canal</i>. SÃ, además de los varios perfiles, usted puede tener + varios canales. Esto podrÃa ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado + un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero + Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Asà que abre un <i>segundo canal</i> sólo + para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de + entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones + pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente + cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle + o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sà mismo, o mejor: a su otro + canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes + personas.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/es-es/settings/account/help.html b/doc/context/es-es/settings/account/help.html new file mode 100644 index 000000000..9303e049c --- /dev/null +++ b/doc/context/es-es/settings/account/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>. + </dd> + <dt>Cuenta</dt> + <dd> + Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su + perfil y su canal. <i>Piense en su cuenta como la vÃa para identificarse en un sitio Hubzilla. Le permite + hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i> + </dd> + <dt>Perfil</dt> + <dd> + Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en lÃnea. Para todos ellos + usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, paÃs, edad y gustos o preferencias. Frente a otros + servicios, Hubzilla le ofrece la ventaja de crear + <i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo + (su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica + básica que acerca de usted mismo muestra a otra gente,</i> + </dd> + <dt>Canal</dt> + <dd> + Durante el registro, creó su primer <i>canal</i>. SÃ, además de los varios perfiles, usted puede tener + varios canales. Esto podrÃa ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado + un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero + Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Asà que abre un <i>segundo canal</i> sólo + para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de + entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones + pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente + cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle + o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sà mismo, o mejor: a su otro + canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes + personas.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/es-es/settings/channel/help.html b/doc/context/es-es/settings/channel/help.html new file mode 100644 index 000000000..9303e049c --- /dev/null +++ b/doc/context/es-es/settings/channel/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>. + </dd> + <dt>Cuenta</dt> + <dd> + Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su + perfil y su canal. <i>Piense en su cuenta como la vÃa para identificarse en un sitio Hubzilla. Le permite + hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i> + </dd> + <dt>Perfil</dt> + <dd> + Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en lÃnea. Para todos ellos + usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, paÃs, edad y gustos o preferencias. Frente a otros + servicios, Hubzilla le ofrece la ventaja de crear + <i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo + (su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica + básica que acerca de usted mismo muestra a otra gente,</i> + </dd> + <dt>Canal</dt> + <dd> + Durante el registro, creó su primer <i>canal</i>. SÃ, además de los varios perfiles, usted puede tener + varios canales. Esto podrÃa ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado + un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero + Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Asà que abre un <i>segundo canal</i> sólo + para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de + entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones + pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente + cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle + o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sà mismo, o mejor: a su otro + canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes + personas.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/es-es/settings/tokens/help.html b/doc/context/es-es/settings/tokens/help.html new file mode 100644 index 000000000..6d6a8d81f --- /dev/null +++ b/doc/context/es-es/settings/tokens/help.html @@ -0,0 +1,23 @@ +<dl class="dl-horizontal"> + <dt><a href="/help/member/member_guide#Guest_Access_Tokens">Guest Access Tokens</a></dt> + <dd> + Para facilitar el intercambio de recursos privados con no miembros o miembros de otros nodos federados con una identificación limitada, Hubzilla debe proporcionar a los miembros un mecanismo para crear y administrar inicios de sesión temporales ("desechables"), también conocidos como "Zot Access Tokens". Estos tokens/credenciales se pueden utilizar para autenticarse en un sitio de hubzilla con el único propósito de acceder a recursos privilegiados o de acceso controlado (archivos, fotos, publicaciones, páginas web, salas de chat, etc.). + </dd> + <dt>Crear un token</dt> + <dd> + El formulario para crear / editar acepta tres parámetros, un nombre legible por el usuario, una contraseña o un token de acceso, y un + lÃmite de caducidad opcional. Una vez que ha caducado, el acceso mediante el token deja de ser válido, ya no puede usarse, y será + purgado automáticamente de la lista de cuentas temporales. El campo de la contraseña, en los formularios para crear/editar, + muestra el texto del token de acceso y no una displays the text of the access token and not una contraseña oscurecida. + </dd> + <dt>Compartir un token</dt> + <dd> + No especificamos mecanismos para compartir estos tokens con otros. Se puede usar cualquier método de comunicación. Cualquier token que haya creado se añade al selector de la Lista de Control y puede ser usado por cualquiera que esté en esa lista. + + <b>Ejemplo</b>: Una visitante llega a su sitio. Tiene un token de acceso que usted le ha proporcionado e intenta ver uno de sus álbumes de fotos (que está restringido para que solo lo puedan ver usted mismo y una identidad temporal). El permiso es denegado. + + La visitante, ahora, selecciona "Iniciar sesión" del menú de la barra de navegación, que muestra la página de inicio de sesión. Ella escribe el nombre y contraseña que usted le ha proporcionado: ahora ya puede ver el álbum privado de fotos. + + De forma alternativa, puede compartir un enlace a un fichero protegido, añadiendo un parámetro del tipo "&zat=abc123" a la dirección URL, en el que la cadena "abc123" es el token de acceso o contraseña para el inicio de sesión temporal. No se requiere ninguna negociación posterior: el fichero será mostrado. + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/es-es/webpages/help.html b/doc/context/es-es/webpages/help.html new file mode 100644 index 000000000..7cd7f7c11 --- /dev/null +++ b/doc/context/es-es/webpages/help.html @@ -0,0 +1,8 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Puede crear sitios web modulares, con identidad propia, compuestos de elementos compartibles. </dd> + <dt>Páginas</dt> + <dd>Esta página enumera sus "páginas", a las que se asignan URLs en las que la gente pueden visitar su sitio. La estructura de las páginas se describe tÃpicamente mediante una plantilla de diseño <b>asociada</b>, y su contenido se construye a partir de una colección de <b>bloques</b>.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#website-portation-tools", 1); return false;' title="Pulsar para resaltar el elmento...">Herramientas de portabilidad de sitios web</a></dt> + <dd>Las herramientas de portabilidad de sitios web le permiten importar y exportar múltiples elementos de páginas web (páginas, plantillas, bloques). Puede <b>importar</b> tanto de un fichero zip como de una carpeta de ficheros existente en la nube. Puede <b>exportar</b> tanto a un fichero zip que contenga un grupo seleccionado de elementos de páginas web, o exportarlos directamente a una carpeta de ficheros en la nube. <a target="_blank" href="help/webpages">Leer más...</a></dd> +</dl>
\ No newline at end of file diff --git a/doc/contributor/covenant.html b/doc/contributor/covenant.html deleted file mode 100644 index 4facac24e..000000000 --- a/doc/contributor/covenant.html +++ /dev/null @@ -1,106 +0,0 @@ -<!DOCTYPE html> - -<html lang="en"> -<head> - <meta charset="utf-8"/> - <title>Contributor Covenant 1.4.0</title> - <style> - body { - font-family: monospace; - padding: 4em; - } - a { - color: #990000; - } - </style> - <link rel="alternate" hreflang="de" href="version/1/3/0/de/" /> - <link rel="alternate" hreflang="es" href="version/1/4/es/" /> - <link rel="alternate" hreflang="fr" href="version/1/3/0/fr/" /> - <link rel="alternate" hreflang="hu" href="version/1/3/0/hu/" /> - <link rel="alternate" hreflang="it" href="version/1/3/0/it/" /> - <link rel="alternate" hreflang="ja" href="version/1/3/0/ja/" /> - <link rel="alternate" hreflang="pl" href="version/1/4/pl/" /> - <link rel="alternate" hreflang="pt" href="version/1/3/0/pt/" /> - <link rel="alternate" hreflang="pt" href="version/1/3/0/pt_br/" /> - <link rel="alternate" hreflang="ru" href="version/1/3/0/ru/" /> - <link rel="alternate" hreflang="sl" href="version/1/4/sl/" /> - <link rel="alternate" hreflang="uk" href="version/1/4/uk/" /> -</head> - -<body> - -<h1>Contributor Covenant Code of Conduct</h1> - -<h2>Our Pledge</h2> - -<p>In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation.</p> - -<h2>Our Standards</h2> - -<p>Examples of behavior that contributes to creating a positive environment -include:</p> - -<ul> - <li>Using welcoming and inclusive language</li> - <li>Being respectful of differing viewpoints and experiences</li> - <li>Gracefully accepting constructive criticism</li> - <li>Focusing on what is best for the community</li> - <li>Showing empathy towards other community members</li> -</ul> - -<p>Examples of unacceptable behavior by participants include:</p> - -<ul> - <li>The use of sexualized language or imagery and unwelcome sexual attention or advances</li> - <li>Trolling, insulting/derogatory comments, and personal or political attacks</li> - <li>Public or private harassment</li> - <li>Publishing others' private information, such as a physical or electronic address, without explicit permission</li> - <li>Other conduct which could reasonably be considered inappropriate in a professional setting</li> -</ul> - -<h2>Our Responsibilities</h2> - -<p>Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior.</p> - -<p>Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful.</p> - -<h2>Scope</h2> - -<p>This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers.</p> - -<h2>Enforcement</h2> - -<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at project@hubzilla.org. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately.</p> - -<p>Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership.</p> - -<h2>Attribution</h2> - -<p>This Code of Conduct is adapted from the <a href="http://contributor-covenant.org">Contributor Covenant</a>, version 1.4, -available at <a href="http://contributor-covenant.org/version/1/4/">http://contributor-covenant.org/version/1/4</a>.</p> - -</body> -</html> diff --git a/doc/credits.bb b/doc/credits.bb deleted file mode 100644 index 5219d7bf5..000000000 --- a/doc/credits.bb +++ /dev/null @@ -1,82 +0,0 @@ -[b]Credits[/b] - -Thanks to all who have helped and contributed to the project and its predecessors over the years. It is possible we missed in your name but this is unintentional. We also thank the community and its members for providing valuable input and without whom this entire effort would be meaningless. - -It is also worth acknowledging the contributions and solutions to problems which arose from discussions amongst members and developers of other somewhat related and competing projects; even if we have had our occasional disagreements. - -Mike Macgirvin -Fabio Comuni -Simon L'nu -marijus -Tobias Diekershoff -fabrixxm -tommy tomson -Simon -zottel -Christian Vogeley -Jeroen van Riet Paap (jeroenpraat) -Michael Vogel -erik -Zach Prezkuta -Paolo T -Michael Meer -Michael -Abinoam P. Marques Jr -Tobias Hößl -Alexander Kampmann -Olaf Conradi -Paolo Tacconi -tobiasd -Devlon Duthie -Zvi ben Yaakov (a.k.a rdc) -Alexandre Hannud Abdo -Olivier Migeot -Chris Case -Klaus Weidenbach -Michael Johnston -olivierm -Vasudev Kamath -pixelroot -Max Weller -duthied -Martin Schmitt -Sebastian Egbers -Erkan Yilmaz -sasiflo -Stefan Parviainen -Haakon Meland Eriksen -Oliver Hartmann (23n) -Erik Lundin -habeascodice -sirius -Charles -Tony Baldwin -Hauke Zuehl -Keith Fernie -Anne Walk -toclimb -Daniel Frank -Matthew Exon -Michal Supler -Tobias Luther -U-SOUND\mike -mrjive -nostupidzone -tonnerkiller -Antoine G -Christian Drechsler -Ludovic Grossard -RedmatrixCanada -Stanislav Lechev [0xAF] -aweiher -bufalo1973 -dsp1986 -felixgilles -ike -maase2 -mycocham -ndurchx -pafcu -Simó Albert i Beltran -Manuel Reva -Manuel Jiménez Friaza diff --git a/doc/database.bb b/doc/database.bb index 02a70e2c7..160ec505e 100644 --- a/doc/database.bb +++ b/doc/database.bb @@ -1,6 +1,4 @@ -[h2]Database Tables[/h2] -[table] -[tr][th]Table[/th][th]Description[/th][/tr] +[h2]Database Tables[/h2][table border=1][tr][th]Table[/th][th]Description[/th][/tr] [tr][td][zrl=[baseurl]/help/database/db_abconfig]abconfig[/zrl][/td][td]arbitrary storage for connections of local channels[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_abook]abook[/zrl][/td][td]connections of local channels[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_account]account[/zrl][/td][td]service provider account[/td][/tr] diff --git a/doc/dav_dolphin.bb b/doc/dav_dolphin.bb deleted file mode 100644 index ae60a6d52..000000000 --- a/doc/dav_dolphin.bb +++ /dev/null @@ -1,9 +0,0 @@ -[b]Using The Cloud - Dolphin[/b]
-
-Visit webdavs://example.com/dav where "example.com" is the URL of your hub.
-
-When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account.
-
-Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_konqueror.bb b/doc/dav_konqueror.bb deleted file mode 100644 index 97c046e46..000000000 --- a/doc/dav_konqueror.bb +++ /dev/null @@ -1,12 +0,0 @@ -[b]Using The Cloud - Konqueror[/b]
-
-Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub.
-
-No further authentication is required if you are logged in to your hub in the normal manner.
-
-Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session.
-
-This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE.
-
-#include doc/macros/cloud_footer.bb;
-
diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb deleted file mode 100644 index 94db18ac7..000000000 --- a/doc/dav_mount.bb +++ /dev/null @@ -1,83 +0,0 @@ -[b]Mounting As A Filesystem[/b]
-
-To install your cloud directory as a filesystem, you first need davfs2 installed. 99% of the time, this will be included in your distributions repositories. In Debian
-
-[code]apt-get install davfs2[/code]
-
-If you want to let normal users mount the filesystem
-
-[code] dpkg-reconfigure davfs2[/code]
-
-and select "yes" at the prompt.
-
-Now you need to add any user you want to be able to mount dav to the davfs2 group
-
-[code]usermod -aG davfs2 <DesktopUser>[/code]
-
-[b]Note:[/b] on some systems the user group may be different, i.e. - "network"
-on Arch Linux. If in doubt, check the davfs documentation for your
-particular OS.
-
-Edit /etc/fstab
-
-[code]nano /etc/fstab[/code]
-
- to include your cloud directory by adding
-
-[code]
-[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1
-[/code]
-
-Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory.
-
-For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be
-
-[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code]
-
-Now, create the mount point.
-
-[code]mkdir /home/bob/cloud[/code]
-
-and also create a directory file to store your credentials
-
-[code]mkdir /home/bob/.davfs2[/code]
-
-Create a file called 'secrets'
-
-[code]nano /home/bob/.davfs2/secrets[/code]
-
-and add your cloud login credentials
-
-[code]
-[baseurl]/dav <username> <password>
-[/code]
-
-Where <username> and <password> are the username and password [i]for your hub[/i].
-
-Don't let this file be writeable by anyone who doesn't need it with
-
-[code]chmod 600 /home/bob/.davfs2/secrets[/code]
-
-Finally, mount the drive.
-
-[code]mount [baseurl]/dav[/code]
-
-You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves.
-
-[b]Troubleshooting[/b]
-
-With some webservers and certain configurations, you may find davfs2 creating files with 0 bytes file size where other clients work just fine. This is generally caused by cache and locks. If you are affected by this issue, you need to edit your davfs2 configuration.
-
-[code]nano /etc/davfs2/davfs2.conf[/code]
-
-Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line.
-
-First step is to remove locks.
-
-Edit the use_locks line so it reads [code]use_locks 0[/code].
-
-Unmount your file system, remount your file system, and try copying over a file from the command line. Note you should copy a new file, and not overwrite an old one for this test. Leave it a minute or two then do [code]ls -l -h[/code] and check the file size of your new file is still greater than 0 bytes. If it is, stop there, and do nothing else.
-
-If that still doesn't work, disable the cache. Note that this has a performance impact so should only be done if disabling locks didn't solve your problem. Edit the cache_size and set it to [code]cache_size 0[/code] and also set file_refresh to [code]file_refresh 0[/code]. Unmount your filesystem, remount your file system, and test it again.
-
-If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes.
diff --git a/doc/dav_nautilus.bb b/doc/dav_nautilus.bb deleted file mode 100644 index c8911cda8..000000000 --- a/doc/dav_nautilus.bb +++ /dev/null @@ -1,9 +0,0 @@ -[b]Using The Cloud - Nautilus[/b]
-
-1. Open a File browsing window (that's Nautilus)
-2. Select File > Connect to server from the menu
-3. Type davs://<domain_name>/dav/<your_channelname> and click Connect
-4. You will be prompted for your channel name (same as above) and password
-5. Your personal DAV directory will be shown in the window
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_nemo.bb b/doc/dav_nemo.bb deleted file mode 100644 index f2d994fbb..000000000 --- a/doc/dav_nemo.bb +++ /dev/null @@ -1,19 +0,0 @@ -[b]Using The Cloud - Nemo[/b]
-
-For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there.
-
-1st way
-type "davs://<domain_name>/dav/<your_channelname>" in the address bar.
-
-2nd way
-Menu > file > connect to server
-Fill the dialog
-- Server: hubzilla_domain_name
-- Type: Secure WebDAV (https)
-- Folder: /dav
-- Username: yourchannelname
-- Password: yourpassword
-
-Once open you can set a bookmark.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_windows.bb b/doc/dav_windows.bb deleted file mode 100644 index 96862e2b5..000000000 --- a/doc/dav_windows.bb +++ /dev/null @@ -1,11 +0,0 @@ -[b]Using The Cloud - Windows Internal Client[/b]
-
-RedDav using Windows 7 graphical user interface wizard:
-1. Left-click the Start-button to open the start menu.
-2. Right-click the My computer icon to access its menu.
-3. Left-click Map network drive... to open the connection dialog wizard.
-4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub.
-5. Type your Hubzilla account's user name. IMPORTANT - NO at-sign or domain name.
-6. Type your Hubzilla password
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/developer/api_zot.bb b/doc/developer/api_zot.bb index f33faed17..1314f90b5 100644 --- a/doc/developer/api_zot.bb +++ b/doc/developer/api_zot.bb @@ -286,7 +286,7 @@ list photo metadata [h3]group[/h3] -`GET /api/z/1.0/group` +[code]GET /api/z/1.0/group[/code] Description: list privacy groups @@ -326,7 +326,7 @@ To use with API group_members, provide either 'group_id' from the id element ret [h3]group_members[/h3] -`GET /api/z/1.0/group_members` +[code]GET /api/z/1.0/group_members[/code] Required: @@ -462,7 +462,7 @@ group_member+abook+xchan (DB join) for each member of the privacy group An xchan is a global location independent channel and is the primary record for a network identity. It may refer to channels on other websites, networks, or services. -`GET /api/z/1.0/xchan` +[code]GET /api/z/1.0/xchan[/code] Required: one of [ address, hash, guid ] as GET parameters @@ -506,7 +506,7 @@ Returns: Create or update an item (post, activity, webpage, etc.) -Usage: `POST /api/z/1.0/item/update` +Usage: [code]POST /api/z/1.0/item/update[/code] Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. diff --git a/doc/developer/api_zot.md b/doc/developer/api_zot.md deleted file mode 100644 index d75012818..000000000 --- a/doc/developer/api_zot.md +++ /dev/null @@ -1,791 +0,0 @@ -### What is Zot? - -Zot is the revolutionary protocol that powers $Projectname, providing **communications**, **identity management**, and **access control** across a fully **decentralised** network of independent websites, often called "the grid". The resulting platform is a robust system that supports privacy and security while enabling the kind of rich web services typically seen only in centralized, proprietary solutions. - -#### Communications - -Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers. - -Zot supports a wide array of background services in the grid, from friend suggestions to directory services. New content and data updates are propagated in the background between hubs across the grid according to access control lists and permissions specified by both sender *and* receiver channels. Data is also synchronized between an arbitrary number of channel clones, allowing hub members to access data and continue collaborating seamlessly in the event that their primary hub is inaccessible or offline. - -#### Identity - -Zot's identity layer is unique. It provides **invisible single sign-on** across all sites in the grid. - -It also provides **nomadic identity**, so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently. - -The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact. - -Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship. - -Nomadic identity, single sign-on, and $Projectname's decentralisation of hubs, we believe, introduce a high degree of degree of **resiliency** and **persistence** in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship. - -As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. - -How does Zot do that? We call it **magic-auth**, because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and login names for every different sight that someone might visit online. - -You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control. - -You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it. - -#### Access Control - -Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. - -Currently, $Projectname supports access control for many types of data, including post/comment discussion threads, photo albums, events, cloud files, web pages, wikis, and more. Every object and how it is shared and with whom is completely under your control. - -This type of control is trivial on large corporate providers because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid **is** your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. - -Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. - -### Zot API - -The API endpoints detailed below are relative to `api/z/1.0`, meaning that if an -API is listed as `channel/stream` the full API URL is -`[baseurl]/api/z/1.0/channel/stream` - -### channel/export/basic - -Export channel data - - -### channel/stream - -Fetch channel conversation items - -### network/stream - - -Fetch network conversation items - - - -### files - - -List file storage (attach DB) - -GET /api/z/1.0/files - - -Options: - - - hash - return only entries matching hash (exactly) - - - filename - return only entries matching filename (substring) - - - filetype - return only entries matching filetype/mimetype (substring) - - - start - start at record (default 0) - - - records - number of records to return or 0 for unlimited - - - -Example: - -curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed - - -Returns: - - { - - "success": true, - "results": [ - { - "id": "1", - "aid": "1", - "uid": "2", - "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939", - "filename": "Profile Photos", - "filetype": "multipart/mixed", - "filesize": "0", - "revision": "0", - "folder": "", - "os_storage": "1", - "is_dir": "1", - "is_photo": "0", - "flags": "0", - "created": "2016-01-02 21:51:17", - "edited": "2016-01-02 21:51:17", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "" - }, - { - "id": "12", - "aid": "1", - "uid": "2", - "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998", - "filename": "Cover Photos", - "filetype": "multipart/mixed", - "filesize": "0", - "revision": "0", - "folder": "", - "os_storage": "1", - "is_dir": "1", - "is_photo": "0", - "flags": "0", - "created": "2016-01-15 00:24:33", - "edited": "2016-01-15 00:24:33", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "" - }, - { - "id": "16", - "aid": "1", - "uid": "2", - "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd", - "filename": "2016-01", - "filetype": "multipart/mixed", - "filesize": "0", - "revision": "0", - "folder": "", - "os_storage": "1", - "is_dir": "1", - "is_photo": "0", - "flags": "0", - "created": "2016-01-22 03:24:55", - "edited": "2016-01-22 03:26:57", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "" - } - ] - } - - - - -### filemeta - -Export file metadata for any uploaded file - - -### filedata - - -Provides the ability to download a file from cloud storage in chunks - -GET /api/z/1.0/filedata - - -Required: - - - file_id - attach.hash of desired file ('begins with' match) - - -Optional: - - - start - starting byte of returned data in file (counting from 0) - - - length - length (prior to base64 encoding) of chunk to download - - -Returns: - - attach (DB) structure with base64 encoded 'content' comprised of the desired chunk - - - -Example: - - https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48 - -Returns: - - { - - "attach": { - "id": "107", - "aid": "1", - "uid": "2", - "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207", - "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "filename": "pcxtopbm.c", - "filetype": "application/octet-stream", - "filesize": "3934", - "revision": "0", - "folder": "", - "flags": "0", - "is_dir": "0", - "is_photo": "0", - "os_storage": "1", - "os_path": "", - "display_path": "", - "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls", - "created": "2016-07-24 23:13:01", - "edited": "2016-07-24 23:13:01", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "", - "start": 0, - "length": 48 - } - - } - - -### file/export - - -### file - - -### albums - - -Description: list photo albums - -GET /api/z/1.0/albums - - -Output: - - text - textual name - - total - number of photos in this album - - url - web URL - - urlencode - textual name, urlencoded - - bin2hex - textual name using bin2hex (which is used in the web URL link) - - -Example: - - - { - - "success": true, - "albums": [ - { - "text": "/", - "total": "2", - "url": "https://xyz.macgirvin.com/photos/hubzilla/album/", - "urlencode": "", - "bin2hex": "" - }, - { - "text": "2016-01", - "total": "6", - "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031", - "urlencode": "2016-01", - "bin2hex": "323031362d3031" - }, - { - "text": "2016-02", - "total": "7", - "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032", - "urlencode": "2016-02", - "bin2hex": "323031362d3032" - }, - { - "text": "Cover Photos", - "total": "5", - "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73", - "urlencode": "Cover+Photos", - "bin2hex": "436f7665722050686f746f73" - }, - { - "text": "Profile Photos", - "total": "26", - "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73", - "urlencode": "Profile+Photos", - "bin2hex": "50726f66696c652050686f746f73" - } - ] - - } - - - -### photos - - -list photo metadata - - -### photo - - - -### group - - -`GET /api/z/1.0/group` - -Description: list privacy groups - -Returns: DB tables of all privacy groups. - -To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call. - - - [ - - { - "id": "1", - "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends", - "uid": "2", - "visible": "0", - "deleted": "0", - "gname": "Friends" - }, - { - "id": "2", - "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family", - "uid": "2", - "visible": "1", - "deleted": "0", - "gname": "Family" - }, - { - "id": "3", - "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers", - "uid": "2", - "visible": "0", - "deleted": "0", - "gname": "Co-workers" - } - ] - -### group_members - - -`GET /api/z/1.0/group_members` - -Required: - -group_id or group_name - - -Returns: - -group_member+abook+xchan (DB join) for each member of the privacy group - - - [ - - { - "id": "1", - "uid": "2", - "gid": "1", - "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "abook_id": "2", - "abook_account": "1", - "abook_channel": "2", - "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "abook_my_perms": "218555", - "abook_their_perms": "0", - "abook_closeness": "0", - "abook_created": "2016-01-02 21:16:26", - "abook_updated": "2016-01-02 21:16:26", - "abook_connected": "0000-00-00 00:00:00", - "abook_dob": "0000-00-00 00:00:00", - "abook_flags": "0", - "abook_blocked": "0", - "abook_ignored": "0", - "abook_hidden": "0", - "abook_archived": "0", - "abook_pending": "0", - "abook_unconnected": "0", - "abook_self": "1", - "abook_feed": "0", - "abook_profile": "", - "abook_incl": "", - "abook_excl": "", - "abook_instance": "", - "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", - "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA", - "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "xchan_photo_mimetype": "image/png", - "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2", - "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2", - "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2", - "xchan_addr": "teller@xyz.macgirvin.com", - "xchan_url": "https://xyz.macgirvin.com/channel/teller", - "xchan_connurl": "https://xyz.macgirvin.com/poco/teller", - "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", - "xchan_connpage": "", - "xchan_name": "Teller", - "xchan_network": "zot", - "xchan_instance_url": "", - "xchan_flags": "0", - "xchan_photo_date": "2016-10-19 01:26:50", - "xchan_name_date": "2016-01-02 21:16:26", - "xchan_hidden": "0", - "xchan_orphan": "0", - "xchan_censored": "0", - "xchan_selfcensored": "0", - "xchan_system": "0", - "xchan_pubforum": "0", - "xchan_deleted": "0" - }, - { - "id": "12", - "uid": "2", - "gid": "1", - "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", - "abook_id": "24", - "abook_account": "1", - "abook_channel": "2", - "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", - "abook_my_perms": "218555", - "abook_their_perms": "218555", - "abook_closeness": "80", - "abook_created": "2016-01-27 00:48:43", - "abook_updated": "2016-12-04 17:16:58", - "abook_connected": "2016-12-04 17:16:58", - "abook_dob": "0001-01-01 00:00:00", - "abook_flags": "0", - "abook_blocked": "0", - "abook_ignored": "0", - "abook_hidden": "0", - "abook_archived": "0", - "abook_pending": "0", - "abook_unconnected": "0", - "abook_self": "0", - "abook_feed": "0", - "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819", - "abook_incl": "", - "abook_excl": "", - "abook_instance": "", - "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", - "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA", - "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E", - "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "xchan_photo_mimetype": "image/png", - "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4", - "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5", - "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6", - "xchan_addr": "cloner@xyz.macgirvin.com", - "xchan_url": "http://abc.macgirvin.com/channel/cloner", - "xchan_connurl": "http://abc.macgirvin.com/poco/cloner", - "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", - "xchan_connpage": "", - "xchan_name": "Karen", - "xchan_network": "zot", - "xchan_instance_url": "", - "xchan_flags": "0", - "xchan_photo_date": "2016-03-31 19:59:20", - "xchan_name_date": "2016-01-26 23:23:42", - "xchan_hidden": "0", - "xchan_orphan": "0", - "xchan_censored": "0", - "xchan_selfcensored": "0", - "xchan_system": "0", - "xchan_pubforum": "0", - "xchan_deleted": "0" - } - - ] - - -### xchan - - -An xchan is a global location independent channel and is the primary record for a network -identity. It may refer to channels on other websites, networks, or services. - -`GET /api/z/1.0/xchan` - -Required: one of [ address, hash, guid ] as GET parameters - -Returns a portable xchan structure - -Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com - -Returns: - - { - "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", - "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", - "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "photo_mimetype": "image/jpeg", - "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", - "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", - "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", - "address": "mike@macgirvin.com", - "url": "https://macgirvin.com/channel/mike", - "connurl": "https://macgirvin.com/poco/mike", - "follow": "https://macgirvin.com/follow?f=&url=%s", - "connpage": "https://macgirvin.com/connect/mike", - "name": "Mike Macgirvin", - "network": "zot", - "instance_url": "", - "flags": "0", - "photo_date": "2012-12-06 05:06:11", - "name_date": "2012-12-06 04:59:13", - "hidden": "1", - "orphan": "0", - "censored": "0", - "selfcensored": "0", - "system": "0", - "pubforum": "0", - "deleted": "0" - } - -### item/update - - -Create or update an item (post, activity, webpage, etc.) - -Usage: `POST /api/z/1.0/item/update` - -Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. - - -Required: - -- body - - text/bbcode contents by default. - - -Optional: - -- $_FILES['media'] - - uploaded media file to include with post - -- title - - title of post/item - -- contact_allow - - array of xchan.xchan_hash allowed to view this item - -- group_allow - - array of group.hash allowed to view this item - -- contact_deny - - array of xchan.xchan_hash not allowed to view this item - -- group_deny - - array of group.hash not allowed to view this item - -- coord - - geographic coordinates - -- location - - freefrom location - -- expire - - datetime this post will expire or be removed - -- mimetype - - mimetype if not text/bbcode - -- parent - - item.id of parent to this post (makes it a comment) - -- parent_mid - - alternate form of parent using message_id - -- remote_xchan - - xchan.xchan_hash of this message author if not the channel owner - -- consensus - - boolean set to true if this is a consensus or voting item (default false) - -- nocomment - - boolean set to true if comments are to be disabled (default false) - -- origin - - do not use this without reading the code - -- namespace - - persistent identity for a remote network or service - -- remote_id - - message_id of this resource on a remote network or service - -- message_id - - message_id of this item (leave unset to generate one) - -- created - - datetime of message creation - -- post_id - - existing item.id if this is an edit operation - -- app - - application or network name to display with item - -- categories - - comma separated categories for this item - -- webpage - - item.page_type if not 0 - -- pagetitle - - for webpage and design elements, the 'page name' - -- layout_mid - - item.mid of layout for this design element - -- plink - - permalink for this item if different than the default - -- verb - - activitystream verb for this item/activity - -- obj_type - - activitystream object type for this item/activity - - - -Example: - - curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" - - -Returns: - - - { - - "success": true, - "item_id": "2245", - "item": { - "id": "2245", - "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "aid": "1", - "uid": "2", - "parent": "2245", - "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "created": "2016-12-03 20:00:12", - "edited": "2016-12-03 20:00:12", - "expires": "0001-01-01 00:00:00", - "commented": "2016-12-03 20:00:12", - "received": "2016-12-03 20:00:12", - "changed": "2016-12-03 20:00:12", - "comments_closed": "0001-01-01 00:00:00", - "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "source_xchan": "", - "mimetype": "text/bbcode", - "title": "", - "body": "hello world", - "html": "", - "app": "", - "lang": "", - "revision": "0", - "verb": "http://activitystrea.ms/schema/1.0/post", - "obj_type": "http://activitystrea.ms/schema/1.0/note", - "obj": "", - "tgt_type": "", - "target": "", - "layout_mid": "", - "postopts": "", - "route": "", - "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "resource_id": "", - "resource_type": "", - "attach": "", - "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", - "diaspora_meta": "", - "location": "", - "coord": "", - "public_policy": "", - "comment_policy": "contacts", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "", - "item_restrict": "0", - "item_flags": "0", - "item_private": "0", - "item_origin": "1", - "item_unseen": "0", - "item_starred": "0", - "item_uplink": "0", - "item_consensus": "0", - "item_wall": "1", - "item_thread_top": "1", - "item_notshown": "0", - "item_nsfw": "0", - "item_relay": "0", - "item_mentionsme": "0", - "item_nocomment": "0", - "item_obscured": "0", - "item_verified": "1", - "item_retained": "0", - "item_rss": "0", - "item_deleted": "0", - "item_type": "0", - "item_hidden": "0", - "item_unpublished": "0", - "item_delayed": "0", - "item_pending_remove": "0", - "item_blocked": "0" - } - - } - -### item/full - - -Get all data associated with an item - -### abook - - -Connections - -### abconfig - - -Connection metadata (such as permissions) - -### perm_allowed - - -Check a permission for a given xchan diff --git a/doc/developer/covenant.bb b/doc/developer/covenant.bb new file mode 100644 index 000000000..431cc74e9 --- /dev/null +++ b/doc/developer/covenant.bb @@ -0,0 +1,47 @@ +[size=large]Contributor Covenant Code of Conduct[/size] + +[h3]Our Pledge[/h3] + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +[h3]Our Standards[/h3] + +Examples of behavior that contributes to creating a positive environment +include: + +[list] + [*]Using welcoming and inclusive language + [*]Being respectful of differing viewpoints and experiences + [*]Gracefully accepting constructive criticism + [*]Focusing on what is best for the community + [*]Showing empathy towards other community members +[/list] + +Examples of unacceptable behavior by participants include: + +[list] + [*]The use of sexualized language or imagery and unwelcome sexual attention or advances + [*]Trolling, insulting/derogatory comments, and personal or political attacks + [*]Public or private harassment + [*]Publishing others' private information, such as a physical or electronic address, without explicit permission + [*]Other conduct which could reasonably be considered inappropriate in a professional setting +[/list] + +[h3]Our Responsibilities[/h3] + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +[h3]Scope[/h3] + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +[h3]Enforcement[/h3] + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at project@hubzilla.org. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +[h3]Attribution[/h3] + +This Code of Conduct is adapted from the [url=http://contributor-covenant.org]Contributor Covenant[/url], version 1.4, available at [url=http://contributor-covenant.org/version/1/4/]http://contributor-covenant.org/version/1/4[/url]. + diff --git a/doc/developer/developer_guide.bb b/doc/developer/developer_guide.bb new file mode 100644 index 000000000..f8ba0c1d8 --- /dev/null +++ b/doc/developer/developer_guide.bb @@ -0,0 +1,178 @@ +[h3]Who is a $Projectname developer? Should I read this?[/h3] + +Anyone who contributes to making $Projectname better is a developer. There are many different and important ways you can contribute to this amazing technology, [i]even if you do not know how to write code[/i]. The software itself is only a part of the $Projectname project. You can contribute by +[list] +[*] translating text to your language so that people around the world have the opportunity to use $Projectname +[*] promoting $Projectname and spreading awareness of the platform through blog posts, articles, and word-of-mouth +[*] creating artwork and graphics for project assets such as icons and marketing material +[*] supporting project infrastructure like the project website and demo servers +[/list] +[i]Software[/i] developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The $Projectname code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas. + +We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. All developers are expected to abide by our [zrl=[baseurl]/help/developer/covenant]code of conduct[/zrl]. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine. + +This document will help you get started learning and contributing to $Projectname. + +[h3]Versions and Releases[/h3] + +$Projectname currently uses a standard version numbering sequence of $x.$y(.$z), for instance '1.12' or '1.12.1'. The first digit is the major version number. Major versions are released "roughly" once per year; often in December. + +The second digit is the minor release number. If this number is odd, it is a development version. If the number is even, it is a released version. Minor versions are released (moved from dev to master) typically once per month when development is 'stable', but this is likely to increase. Going forward minor releases will be made somewhere between one and three months; corresponding to a stable code point and when there is general community consensus that the current code base is stable enough to consider a release. + +The final digit is an interface or patch designator. + +The release process involves changing the version number (by definition the minor version number will be odd, and the minor number will be incremented). Once a year for a major release the major version will be incremented, and the minor number reset to 0. + +The release candidate is moved to a new branch; and testing will commence/continue for a period of 1-2 weeks afterward or until any significant issues have been resolved. This branch is usually labelled with RC (release candidate); for instance 1.8RC represents the pending release of version 1.8. At this time, the minor version number on the dev branch is incremented to the next odd number. (For instance 1.9). New development can then take place in the dev branch. + +Bug fixes should always be applied to 'dev' and from there merged forward (typically with git cherry-pick) to the RC branch and if necessary applied to the master or official release branch. + +At the time a release candidate is produced, the language strings file is frozen until a release is made. Translation work may continue, but all translations should be submitted to 'dev' and merged forward to RC. + +Once RC testing is completed, RC is merged to 'master' and the RC version designator removed; resulting in one final checkin to change the version number. The CHANGELOG file should also be updated at or just prior to this time. If there are merge conflicts during this final merge, the merge will be abandoned; and 'git merge -s ours' applied. This results in a replacement of master with the contents of the RC branch. Conflicts often arise with string updates which were made to master after the last release and cannot easily be resolved without hand editing. Since this is a release of tested code, hand editing is discouraged, and the replacement merge strategy should be used instead. It is assumed that RC now contains the most recent well-tested code. + +Once the release is live and merged to master, the RC branch may be removed. + +Fixes may be made to master after release. Where possible these should be made to dev and 'git cherry-pick' used to merge forward; which preserves the commit info and prevents merge conflicts in the next cycle. Only rarely does a patch only apply to the master branch. If necessary this can be made. If the change is severe, the interface version number should be incremented. This is at the discretion of the community. In any event, a 'git pull' of the master branch should always result in the latest release with any post-release patches applied. + +The interface number (the $z in $x.$y.$z) should be incremented in dev whenever a change is made which changes the interfaces or API in incompatible ways so that any external packages (especially addons and API clients) relying on a the current behaviour can discover and change their own interfaces accordingly at the point that it changed. + +[h3]Git repository branches[/h3] + +There are two official branches of the $Projectname git repo. +[list] +[*] The stable version is maintained on the [b]master[/b] branch. The latest commit in this branch is considered to be suitable for production hubs. +[*] Experimental development occurs on the [b]dev[/b] branch, which is merged into [b]master[/b] when it is deemed tested and stable enough. +[/list] + +[h3]Developer tools and workflows[/h3] + +[h4]Hub Snapshots[/h4] + +The [url=[baseurl]/help/admin/hub_snapshots]hub snapshots[/url] page provides instructions and scripts for taking complete snapshots of a hub to support switching between consistent and completely known states. This is useful to prevent situations where the content or database schema might be incompatible with the code. + +[h3]Translations[/h3] + +Our translations are managed through Transifex. If you wish to help out translating $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/Friendica/red-matrix/]Transifex[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. + +[h4]Translation Process[/h4] + +The strings used in the UI of $Projectname is translated at [url=https://www.transifex.com/Friendica/red-matrix/]Transifex[/url] and then +included in the git repository at github. If you want to help with translation +for any language, be it correcting terms or translating $Projectname to a +currently not supported language, please register an account at transifex.com +and contact the Redmatrix translation team there. + +Translating $Projectname is simple. Just use the online tool at transifex. If you +don't want to deal with git & co. that is fine, we check the status of the[/td][/tr] +[tr]ranslations regularly and import them into the source tree at github so that +others can use them. + +We do not include every translation from transifex in the source tree to avoid +a scattered and disturbed overall experience. As an uneducated guess we have a +lower limit of 50% translated strings before we include the language. This +limit is judging only by the amount of translated strings under the assumption[/td][/tr] +[tr]hat the most prominent strings for the UI will be translated first by a[/td][/tr] +[tr]ranslation team. If you feel your translation useable before this limit, +please contact us and we will probably include your teams work in the source[/td][/tr] +[tr]ree. + +If you want to get your work into the source tree yourself, feel free to do so +and contact us with and question that arises. The process is simple and +$Projectname ships with all the tools necessary. + +The location of the translated files in the source tree is + /view/LNG-CODE/ +where LNG-CODE is the language code used, e.g. de for German or fr for French. +For the email templates (the *.tpl files) just place them into the directory +and you are done. The translated strings come as a "hmessages.po" file from[/td][/tr] +[tr]ransifex which needs to be translated into the PHP file $Projectname uses. To do +so, place the file in the directory mentioned above and use the "po2php" +utility from the util directory of your $Projectname installation. + +Assuming you want to convert the German localization which is placed in +view/de/hmessages.po you would do the following. + +1. Navigate at the command prompt to the base directory of your + $Projectname installation + +2. Execute the po2php script, which will place the translation + in the hstrings.php file that is used by $Projectname. + + $> php util/po2php.php view/de/hmessages.po + + The output of the script will be placed at view/de/hstrings.php where + froemdoca os expecting it, so you can test your translation mmediately. + +3. Visit your $Projectname page to check if it still works in the language you + just translated. If not try to find the error, most likely PHP will give + you a hint in the log/warnings.about the error. + + For debugging you can also try to "run" the file with PHP. This should + not give any output if the file is ok but might give a hint for + searching the bug in the file. + + $> php view/de/hstrings.php + +4. commit the two files with a meaningful commit message to your git + repository, push it to your fork of the $Projectname repository at github and + issue a pull request for that commit. + +[h4]Utilities[/h4] + +Additional to the po2php script there are some more utilities for translation +in the "util" directory of the $Projectname source tree. If you only want to[/td][/tr] +[tr]ranslate $Projectname into another language you wont need any of these tools most +likely but it gives you an idea how the translation process of $Projectname +works. + +For further information see the utils/README file. + +[h4]Known Problems[/h4] + +* $Projectname uses the language setting of the visitors browser to determain the + language for the UI. Most of the time this works, but there are some known + quirks. +* the early translations are based on the friendica translations, if you + some rough translations please let us know or fix them at Transifex. + +[h3]Licensing[/h3] + +All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. + +[h3]Coding Style[/h3] + +In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. +[list] +[*]All comments should be in English. +[*]We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. +[*]Indentation is accomplished primarily with tabs using a tab-width of 4. +[*]String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" +[*]Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. +[*]Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. +[*]Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. +[*]Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home". +[/list] + +[h3]File system layout[/h3] +[table border=0] +[th]Directory[/th][th]Description[/th][/tr] +[tr][td]addon[/td][td]optional addons/plugins[/td][/tr] +[tr][td]boot.php[/td][td]Every process uses this to bootstrap the application structure[/td][/tr] +[tr][td]doc[/td][td]Help Files[/td][/tr] +[tr][td]images[/td][td]core required images[/td][/tr] +[tr][td]include[/td][td]The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing[/td][/tr] +[tr][td]index.php[/td][td]The front-end controller for web access[/td][/tr] +[tr][td]install[/td][td]Installation and upgrade files and DB schema[/td][/tr] +[tr][td]library[/td][td]Third party modules (must be license compatible)[/td][/tr] +[tr][td]mod[/td][td]Controller modules based on URL pathname (e.g. [url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)[/td][/tr] +[tr][td]mod/site/[/td][td]site-specific mod overrides, excluded from git[/td][/tr] +[tr][td]util[/td][td]translation tools, main English string database and other miscellaneous utilities[/td][/tr] +[tr][td]version.inc[/td][td]contains current version (auto-updated via cron for the master repository and distributed via git)[/td][/tr] +[tr][td]view[/td][td]theming and language files[/td][/tr] +[tr][td]view/(css,js,img,php,tpl)[/td][td]default theme files[/td][/tr] +[tr][td]view/(en,it,es ...)[/td][td]language strings and resources[/td][/tr] +[tr][td]view/theme/[/td][td]individual named themes containing (css,js,img,php,tpl) over-rides[/td][/tr] +[/table] + +[b][url=[baseurl]/help/developer/unorganized]More information needing re-organization and updating...[/url][/b] diff --git a/doc/developer/developer_guide.md b/doc/developer/developer_guide.md deleted file mode 100644 index fa50de8a1..000000000 --- a/doc/developer/developer_guide.md +++ /dev/null @@ -1,422 +0,0 @@ -### Who is a Hubzilla developer? Should I read this? - -Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, _even if you do not know how to write code_. The software itself is only a part of the Hubzilla project. You can contribute by - -* translating text to your language so that people around the world have the opportunity to use Hubzilla -* promoting Hubzilla and spreading awareness of the platform through blog posts, articles, and word-of-mouth -* creating artwork and graphics for project assets such as icons and marketing material -* supporting project infrastructure like the project website and demo servers - -_Software_ developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The Hubzilla code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas. - -This document will help you get started learning and contributing to Hubzilla. - -### Versioning system - -The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control. - -### Git repository branches - -There are two official branches of the Hubzilla git repo. - -* The stable version is maintained on the **master** branch. The latest commit in this branch is considered to be suitable for production hubs. -* Experimental development occurs on the **dev** branch, which is merged into **master** when it is deemed tested and stable enough. - -### Developer tools and workflows - -#### Hub Snapshots - -The [hub snapshots](/help/admin/hub_snapshots) page provides instructions and scripts for taking complete -snapshots of a hub to support switching between consistent and completely known -states. This is useful to prevent situations where the content or database schema -might be incompatible with the code. - -### Translations - -Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit [https://www.transifex.com/projects/p/red-matrix/](https://www.transifex.com/projects/p/red-matrix/) and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. - -#### Translation Process - -The strings used in the UI of Hubzilla is translated at [Transifex][1] and then -included in the git repository at github. If you want to help with translation -for any language, be it correcting terms or translating Hubzilla to a -currently not supported language, please register an account at transifex.com -and contact the Redmatrix translation team there. - -Translating Hubzilla is simple. Just use the online tool at transifex. If you -don't want to deal with git & co. that is fine, we check the status of the -translations regularly and import them into the source tree at github so that -others can use them. - -We do not include every translation from transifex in the source tree to avoid -a scattered and disturbed overall experience. As an uneducated guess we have a -lower limit of 50% translated strings before we include the language. This -limit is judging only by the amount of translated strings under the assumption -that the most prominent strings for the UI will be translated first by a -translation team. If you feel your translation useable before this limit, -please contact us and we will probably include your teams work in the source -tree. - -If you want to get your work into the source tree yourself, feel free to do so -and contact us with and question that arises. The process is simple and -Hubzilla ships with all the tools necessary. - -The location of the translated files in the source tree is - /view/LNG-CODE/ -where LNG-CODE is the language code used, e.g. de for German or fr for French. -For the email templates (the *.tpl files) just place them into the directory -and you are done. The translated strings come as a "hmessages.po" file from -transifex which needs to be translated into the PHP file Hubzilla uses. To do -so, place the file in the directory mentioned above and use the "po2php" -utility from the util directory of your Hubzilla installation. - -Assuming you want to convert the German localization which is placed in -view/de/hmessages.po you would do the following. - -1. Navigate at the command prompt to the base directory of your - Hubzilla installation - -2. Execute the po2php script, which will place the translation - in the hstrings.php file that is used by Hubzilla. - - $> php util/po2php.php view/de/hmessages.po - - The output of the script will be placed at view/de/hstrings.php where - froemdoca os expecting it, so you can test your translation mmediately. - -3. Visit your Hubzilla page to check if it still works in the language you - just translated. If not try to find the error, most likely PHP will give - you a hint in the log/warnings.about the error. - - For debugging you can also try to "run" the file with PHP. This should - not give any output if the file is ok but might give a hint for - searching the bug in the file. - - $> php view/de/hstrings.php - -4. commit the two files with a meaningful commit message to your git - repository, push it to your fork of the Hubzilla repository at github and - issue a pull request for that commit. - -#### Utilities - -Additional to the po2php script there are some more utilities for translation -in the "util" directory of the Hubzilla source tree. If you only want to -translate Hubzilla into another language you wont need any of these tools most -likely but it gives you an idea how the translation process of Hubzilla -works. - -For further information see the utils/README file. - -#### Known Problems - -* Hubzilla uses the language setting of the visitors browser to determain the - language for the UI. Most of the time this works, but there are some known - quirks. -* the early translations are based on the friendica translations, if you - some rough translations please let us know or fix them at Transifex. - -### To-be-organized information - -**Here is how you can join us.** - -First, get yourself a working git package on the system where you will be -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). - -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 - -Then go to your github page and create a "Pull request" when you are ready -to notify us to merge your work. - - -**Important** - -Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. - -Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. - - -**Licensing** - -All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. - -**Coding Style** - -In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. - -* All comments should be in English. - -* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. - -* Indentation is accomplished primarily with tabs using a tab-width of 4. - -* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" - -* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. - -* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. - -* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. - - -**File system layout:** - -[addon] optional addons/plugins - -[boot.php] Every process uses this to bootstrap the application structure - -[doc] Help Files - -[images] core required images - -[include] The "model" in MVC - (back-end functions), also contains PHP "executables" 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 - -**The Database:** - - -| Table | Description | -|-------------------------|--------------------------------------------------------| -| abconfig | contact table, replaces Friendica 'contact' | -| abook | | -| account | service provider account | -| addon | | -| addressbookchanges | | -| addressbooks | | -| app | | -| atoken | | -| attach | | -| auth_codes | | -| cache | | -| cal | | -| calendarchanges | | -| calendarinstances | | -| calendarobjects | | -| calendars | | -| calendarsubscriptions | | -| cards | | -| channel | | -| chat | | -| chatpresence | | -| chatroom | | -| clients | | -| config | | -| conv | | -| dreport | | -| event | | -| group_member | | -| groupmembers | | -| groups | | -| hook | | -| hubloc | | -| iconfig | | -| issue | | -| item | | -| item_id | | -| likes | | -| locks | | -| mail | | -| menu | | -| menu_item | | -| notify | | -| obj | | -| outq | | -| pconfig | personal (per channel) configuration storage | -| photo | | -| poll | | -| poll_elm | | -| principals | | -| profdef | | -| profext | | -| profile | | -| profile_check | | -| propertystorage | | -| register | | -| schedulingobjects | | -| session | | -| shares | | -| sign | | -| site | | -| source | | -| sys_perms | | -| term | | -| tokens | | -| updates | | -| users | | -| verify | | -| vote | | -| xchan | | -| xchat | | -| xconfig | | -| xign | | -| xlink | | -| xperm | | -| xprof | | -| xtag | | - - - * abook - contact table, replaces Friendica 'contact' - * account - service provider account - * addon - registered plugins - * app - peronal app data - * attach - file attachments - * auth_codes - OAuth usage - * cache - OEmbed cache - * channel - replaces Friendica 'user' - * chat - chat room content - * chatpresence - channel presence information for chat - * chatroom - data for the actual chat room - * clients - OAuth usage - * config - main configuration storage - * conv - Diaspora private messages - * event - Events - * fcontact - friend suggestion stuff - * ffinder - friend suggestion stuff - * fserver - obsolete - * fsuggest - friend suggestion stuff - * groups - privacy groups - * group_member - privacy groups - * hook - plugin hook registry - * hubloc - Red location storage, ties a location to an xchan - * item - posts - * item_id - other identifiers on other services for posts - * likes - likes of 'things' - * mail - private messages - * menu - channel menu data - * menu_item - items uses by channel menus - * notify - notifications - * notify-threads - need to factor this out and use item thread info on notifications - * obj - object data for things (x has y) - * outq - output queue - * pconfig - personal (per channel) configuration storage - * photo - photo storage - * poll - data for polls - * poll_elm - data for poll elements - * profdef - custom profile field definitions - * profext - custom profile field data - * profile - channel profiles - * profile_check - DFRN remote auth use, may be obsolete - * register - registrations requiring admin approval - * session - web session storage - * shares - shared item information - * sign - Diaspora signatures. To be phased out. - * site - site table to find directory peers - * source - channel sources data - * spam - unfinished - * sys_perms - extensible permissions for the sys channel - * term - item taxonomy (categories, tags, etc.) table - * tokens - OAuth usage - * updates - directory sync updates - * verify - general purpose verification structure - * vote - vote data for polls - * xchan - replaces 'gcontact', list of known channels in the universe - * xchat - bookmarked chat rooms - * xconfig - as pconfig but for channels with no local account - * xlink - "friends of friends" linkages derived from poco - * xprof - if this hub is a directory server, contains basic public profile info of everybody in the network - * xtag - if this hub is a directory server, contains tags or interests of everybody in the network - - -**How to theme Hubzilla** - -This is a short documentation on what I found while trying to modify Hubzilla'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 "register" 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. - - -We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine. - -**Here is how you can join us.** - -First, get yourself a working git package on the system where you will be -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] - -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 - -Then go to your github page and create a "Pull request" when you are ready -to notify us to merge your work. - -**Translations** - -Our translations are managed through Transifex. If you wish to help out translating the $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/projects/p/red-matrix/]https://www.transifex.com/projects/p/red-matrix/[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. - - -**Important** - -Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. - -Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. - -Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url] - -**Licensing** - -All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. - -**Concensus Building** - -Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature. - -We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues. - -There are places where opposition cannot be resolved. In these cases, please consider making your feature **optional** or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off. - -If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work. - - -**Coding Style** - -In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. - -* All comments should be in English. - -* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. - -* Indentation is accomplished primarily with tabs using a tab-width of 4. - -* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" - -* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. - -* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. - -* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. - -* Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".
\ No newline at end of file diff --git a/doc/developer/unorganized.md b/doc/developer/unorganized.md new file mode 100644 index 000000000..74d914aaf --- /dev/null +++ b/doc/developer/unorganized.md @@ -0,0 +1,73 @@ +### To-be-organized information + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +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). + +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 + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + +**How to theme Hubzilla** + +This is a short documentation on what I found while trying to modify Hubzilla'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 "register" 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. + + +We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine. + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +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] + +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 + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + +Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url] + +**Concensus Building** + +Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature. + +We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues. + +There are places where opposition cannot be resolved. In these cases, please consider making your feature **optional** or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off. + +If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work. + diff --git a/doc/faq_members.bb b/doc/faq_members.bb deleted file mode 100644 index c7f50314d..000000000 --- a/doc/faq_members.bb +++ /dev/null @@ -1,18 +0,0 @@ -[size=large][b]$Projectname FAQ[/b][/size] - -[toc] - - -[h3]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h3] -Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other $Projectname servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to $Projectname posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it. -If a posting is public this is even harder, as $Projectname is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post. - -[h3]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h3] -Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental". When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :) -[h3]I can't see private resources[/h3] -You have probably disabled third party cookies. You need to enable them for remote authentication to work. -[h3]There are a lot of foreign language posts. Let's auto-translate them.[/h3] -There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. - - -#include doc/macros/main_footer.bb; diff --git a/doc/feature/saved_search.bb b/doc/feature/saved_search.bb deleted file mode 100644 index 1e75f5a85..000000000 --- a/doc/feature/saved_search.bb +++ /dev/null @@ -1,19 +0,0 @@ -[h2]Saved Searches[/h2] - -In order to quickly find information, the 'saved search' widget may be used. This widget may be presented as a sidebar tool on your network page and possibly from your channel page. It is differentiated from the 'navigation bar' search tool in that it does not search the entire site, but only the subset of information available to your channel. - -Additionally the search terms you provide may activate a one-tme search or be saved in a list for re-use. Saving the search item also invokes the search in addition to adding it to the saved list (which is displayed below the search text entry box). Any item in the list may be discarded if it is no longer needed. - -The saved search widget will provide autocompletion of channels (the results are prefixed with '@'), and hashtags (prefixed with '#'). You do not need to enter these tags; although entering the desired tag will reduce the autocomplete results to only hold the relevant information. The behaviour maps as follows: - -[ul] - -[li]@name - search your network stream for posts or comments written by 'name'. This will also change the post editor permissions to include only 'name'; as if this was a privacy group.[/li] - -[li]#hashtag - search you network stream for posts containing #hashtag.[/li] - -[li]text - search your network stream for posts containing 'text'.[/li] - - -[/li] - diff --git a/doc/feature/techlevels.bb b/doc/feature/techlevels.bb deleted file mode 100644 index 9b07f086f..000000000 --- a/doc/feature/techlevels.bb +++ /dev/null @@ -1,15 +0,0 @@ -[h2]Techlevels[/h2] - -Techlevels is a unique feature of Hubzilla 'pro'. It is not available in other server_roles, although it expands on the concepts introduced in Hubzilla 'basic'. - -[h3]Background[/h3] - -We've implemented several different mechanisms in order to reduce the apparent complexity and learning curve presented to new members. At the same time, we do not wish to limit any functionality for people who are able to grasp some slightly advanced technical technical features. The first mechanism was to move several features to an optional 'Features' page where they could be enabled at will; with the default interface kept somewhat lean. - -The problem we had now is that the number of features began to grow dramatically, and the Feature page is daunting in possibilities. There are also features present which probably should not be available to all members, but may be extremely useful to those with technical backgrounds. - -The techlevels seeeks to remedy this by grouping features within different levels of technical ability; starting at 0 (uncomfortable with technology), and up to 5 (Unix wizard or equivalent). - -When a new member registers, their account is provided a techlevel setting of 0. On the account settings page they may change this to any available level. A higher level opens more advanced features and possible interactions. - -The account administrator may also lock a particular level, lock a maximum level, or change/re-arrange the features available to any level. Those with the minimum level are typically not very exploratory and are unlikely to discover the advanced modes. This is by design. Those that look around and desire more interactions will find them. In the absence of administrator defaults they may choose any level. As they look at the features available to the level in question, it is generally expected that they will discover some features are beyond their comprehension and it is hoped they will back off to a level where the interface and features are comfortable to their skill level. This is somewhat experimental at present and for that reason is not part of the 'standard' server role. The standard server role is preset to level '5', and the basic server role is preset to level '0', with no possibility of change. Members in these roles may find themselves overwhelmed or underwhelmed by the feature set and complexity. diff --git a/doc/features.bb b/doc/features.bb deleted file mode 100644 index 578af6050..000000000 --- a/doc/features.bb +++ /dev/null @@ -1,211 +0,0 @@ -[b][size=20]Features[/size][/b]
-
-[b][size=24]$Projectname in a Nutshell[/size][/b]
-
-TL;DR
-
-$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b].
-
-So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.
-
-$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.
-
-$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.
-
-[b][size=24]$Projectname Features[/size][/b]
-
-
-$Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.
-
-This page lists some of the core features of $Projectname that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.
-
-[b][size=20]Built for Privacy and Freedom[/size][/b]
-
-One of the design goals of $Projectname is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, $Projectname includes a number of features allowing arbitrary levels of privacy:
-
-[b]Affinity Slider[/b]
-
-When adding connnections in $Projectname, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection. For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".
-
-On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".
-
-At this point, $Projectname [i]Affinity Slider[/i] tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.
-
-The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.
-
-[b]Connection Filtering[/b]
-
-You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.
-
-[b]Access Control Lists[/b]
-
-When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.
-
-Once sent, the message will be viewable only by the sender and the selected recipients. In other words, the message will not appear on any public walls.
-
-Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.
-
-[b]Single Sign-on[/b]
-
-Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other $Projectname sites and used to control access to private resources. You login once to your home hub. After that, authentication to all $Projectname resources is "magic".
-
-
-[b]WebDAV enabled File Storage[/b]
-
-Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of $Projectname members (including some third party network members) or make them public.
-
-[b]Photo Albums[/b]
-
-Store photos in albums. All your photos may be protected by Access Control Lists.
-
-[b]Events Calendar[/b]
-
-Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.
-
-[b]Chatrooms[/b]
-
-You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.
-
-[b]Webpage Building[/b]
-
-$Projectname has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.
-
-[b]Apps[/b]
-
-Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in $Projectname are free and can be created easily by those with no programming skills.
-
-[b]Layout[/b]
-
-Page layout is based on a description language called Comanche. $Projectname is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".
-
-[b]Bookmarks[/b]
-
-Share and save/manage bookmarks from links provided in conversations.
-
-
-[b]Private Message Encryption and Privacy Concerns[/b]
-
-Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.
-
-Each $Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.
-
-Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by $Projectname operators or ISPs or anybody who does not know the passcode.
-
-Public messages are generally not encrypted in transit or in storage.
-
-Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.
-
-Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.
-
-
-[b]Service Federation[/b]
-
-In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as $Projectname and may present privacy risks.
-
-There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your $Projectname hub may be used as an OpenID provider to authenticate you to external services which use this technology.
-
-Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.
-
-[b]Privacy Groups[/b]
-
-Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).
-
-
-[b]Directory Services[/b]
-
-We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal $Projectname sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).
-
-
-[b]TLS/SSL[/b]
-
-For $Projectname hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.
-
-[b]Channel Settings[/b]
-
-When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.
-
-If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.
-
-The options are:
-
- - Nobody except yourself.
- - Only those you specifically allow.
- - Anybody in your address book.
- - Anybody on this website.
- - Anybody in this network.
- - Anybody authenticated.
- - Specific people you provide a Guest Access Token to in order to access a specific item.
- - Anybody on the Internet.
-
-
-[b]Public and Private Forums[/b]
-
-Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.
-
-
-[b]Account Cloning[/b]
-
-Accounts in $Projectname are referred to as [i]nomadic identities[/i], because a member's identity is not bound to the hub where the identity was originally created. For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com.
-
-By contrast, say you've created a $Projectname identity called [b]tina@$Projectnamehub.com[/b]. You can clone it to another $Projectname hub by choosing the same, or a different name: [b]liveForever@Some$ProjectnameHub.info[/b]
-
-Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone. It doesn't matter whether you send a post from your original hub, or the new hub. Posts will be mirrored on both accounts.
-
-This is a rather revolutionary feature, if we consider some scenarios:
-
- - What happens if the hub where an identity is based suddenly goes offline? Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale"). With cloning, you just log into your cloned account, and life goes on happily ever after.
-
- - The administrator of your hub can no longer afford to pay for his free and public $Projectname hub. He announces that the hub will be shutting down in two weeks. This gives you ample time to clone your identity(ies) and preserve your$Projectname relationships, friends and content.
-
- - What if your identity is subject to government censorship? Your hub provider may be compelled to delete your account, along with any identities and associated data. With cloning, $Projectname offers [b]censorship resistance[/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.
-
-$Projectname offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.
-
-Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.
-
-[b]Multiple Profiles[/b]
-
-Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.
-
-[b]Account Backup[/b]
-
-Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).
-
-Backups can then be used to clone or restore a profile.
-
-[b]Account Deletion[/b]
-
-Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.
-
-[b][size=20]Content Creation[/size][/b]
-
-[b]Writing Posts[/b]
-
-$Projectname supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in $Projectname. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for $Projectname had some serious issues and has since been removed. We are currently looking for a replacement.
-
-When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.
-
-[b]Deletion of content[/b]
-Any content created in $Projectname remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot ($Projectname communication and authentication protocol).
-
-[b]Media[/b]
-Similar to any other modern blogging system, social network, or a micro-blogging service, $Projectname supports the uploading of files, embedding of videos, linking web pages.
-
-[b]Previewing/Editing[/b]
-Post can be previewed prior to sending and edited after sending.
-
-[b]Voting/Consensus[/b]
-Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.
-
-
-[b]Extending $Projectname[/b]
-
-$Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.
-
-[b]API[/b]
-
-An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided.
-
-
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/hook/build_pagehead.bb b/doc/hook/build_pagehead.bb new file mode 100644 index 000000000..8fc3486c7 --- /dev/null +++ b/doc/hook/build_pagehead.bb @@ -0,0 +1,2 @@ +[b]build_pagehead[/b] + diff --git a/doc/hook/daemon_addon.bb b/doc/hook/daemon_addon.bb new file mode 100644 index 000000000..b60b25748 --- /dev/null +++ b/doc/hook/daemon_addon.bb @@ -0,0 +1,15 @@ +[h2]daemon_addon[/h2] + + +A foreground plugin can create a background process by invoking: + +[code] +\Zotlabs\Daemon\Master::Summon([ 'Addon', 'myplugin', 'something' ]); +[/code] + +This starts up a background process (called 'Addon') specifically for addons to use. + +Then if your plugin is also catching the daemon_addon hook that handler will be called with the +argv array of the background process. In this case [ 'myplugin', 'something' ]; + +We recommend using this convention so that plugins can share this hook without causing conflicts; that is check to see if your plugin is the first array argument and if not, return from the hook. Otherwise you can initiate background processing. Something to remember is that during background processes there is no session. You are detached from the web page which created the background process.
\ No newline at end of file diff --git a/doc/hook/get_default_export_sections b/doc/hook/get_default_export_sections new file mode 100644 index 000000000..09b146643 --- /dev/null +++ b/doc/hook/get_default_export_sections @@ -0,0 +1,10 @@ +[h3]get_default_export_sections[/h3] + +The get_default_export_sections call returns the basic functional groups of data to export using channel_export_basic(). + +The hook is passed an array + [ + 'sections' => [ 'channel', 'connections', 'config', 'apps', 'chatrooms', 'events', 'webpages', 'mail', 'wikis' ] + ] + +If you desire the export to contain three months of items, add 'items' to the 'sections' array diff --git a/doc/hook/identity_basic_export.bb b/doc/hook/identity_basic_export.bb index 3f4e88799..71329ba1e 100644 --- a/doc/hook/identity_basic_export.bb +++ b/doc/hook/identity_basic_export.bb @@ -1 +1,10 @@ [h2]identity_basic_export[/h2] + +Called when exporting data for a channel +Passed array contains + + [ + 'channel_id' => channel_id being exported + 'sections' => array of functional export sections which are being exported + 'data' => the export data array which has been generated + ] diff --git a/doc/hooklist.bb b/doc/hooklist.bb index 863824590..fcd0e2aff 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -76,12 +76,18 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/bb_translate_video]bb_translate_video[/zrl] Called when extracting embedded services from bbcode video elements (rarely used) +[zrl=[baseurl]/help/hook/build_pagehead]build_pagehead[/zrl] + Called when creating the HTML page header + [zrl=[baseurl]/help/hook/change_channel]change_channel[/zrl] Called when logging in to a channel (either during login or afterward through the channel manager) [zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl] Called when removing a channel +[zrl=[baseurl]/help/hook/channel_settings]channel_settings[/zrl] + Called when displaying the channel settings page + [zrl=[baseurl]/help/hook/chat_message]chat_message[/zrl] Called to create a chat message. @@ -148,6 +154,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/crypto_methods]crypto_methods[/zrl] Called when generating a list of crypto algorithms in the locally preferred order +[zrl=[baseurl]/help/hook/daemon_addon]daemon_addon[/zrl] + Called when invoking the extensible background daemon + [zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl] Called when generating a directory listing for display @@ -239,6 +248,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/get_best_language]get_best_language[/zrl] called when choosing the preferred language for the page +[zrl=[baseurl]/help/hook/get_default_export_sections]get_default_export_sections[/zrl] + Called to get the default list of functional data groups to export in identity_basic_export() + [zrl=[baseurl]/help/hook/get_features]get_features[/zrl] Called when get_features() is called diff --git a/doc/hooks.html b/doc/hooks.html index f4a5a7630..6009127f6 100644 --- a/doc/hooks.html +++ b/doc/hooks.html @@ -1 +1 @@ -<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a->module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a->module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a->module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a->module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/channel.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/channel.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a->user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a->user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a->account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a->page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a->page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a->page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/channel.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div>
\ No newline at end of file +<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a->module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a->module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a->module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a->module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a->module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/markdown.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/channel.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/channel.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a->user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a->user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a->account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a->page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a->page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a->page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/channel.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div>
\ No newline at end of file diff --git a/doc/install.bb b/doc/install.bb deleted file mode 100644 index e68b4a230..000000000 --- a/doc/install.bb +++ /dev/null @@ -1,4 +0,0 @@ -#include install/INSTALL.txt;
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/main.bb b/doc/main.bb deleted file mode 100644 index 8ba5d481b..000000000 --- a/doc/main.bb +++ /dev/null @@ -1,13 +0,0 @@ -
-[zrl=[baseurl]/help/about][b]What is $Projectname?[/b][/zrl]
-$Projectname is a decentralized communication and publishing platform that enables you to keep in control of your communication needs by automatic encryption and finely grained access control. It's you, and only you who decides who is allowed to see your stuff.
-
-[zrl=[baseurl]/help/features][b]$Projectname Features[/b][/zrl]
-
-$Projectname is already running as a global distributed network and proves its versatility and scalability from standalone to huge sites on a daily basis.
-Think of standalone family communication platforms, distributed online communities, support forums, blogs and homepages. Or professional content providers with commercial premium channels and targeted content acces. Whatever you want, $Projectname is there to cater to your creativity.
-
-[zrl=[baseurl]/help/what_is_zot][b]Got Zot? Well, you should.[/b][/zrl]
-Zot is the great new communicaton protocol invented especially for $Projectname. As a member you are no longer bound to a single site or hub thanks to "Nomadic Identities". Migrate easily to another server and keep your contacts intact, or clone it and run the same channel on several servers. Just in case one of them might shut down, you don't lose out. Plus once you are inside $Projectname there is no need for you to authenticate twice, even when accessing another $Projectname site. Zot is what sets $Projectname apart.
-
-
diff --git a/doc/member/bbcode.html b/doc/member/bbcode.html index 99d0ce6bc..a4bc813d8 100644 --- a/doc/member/bbcode.html +++ b/doc/member/bbcode.html @@ -230,6 +230,22 @@ in some text </code></td><td> <tr> <td> <code> + [nobb][observer.language=en]Text to display if observer language is English[/observer][/nobb] + </code> + </td> + <td></td> + </tr> + <tr> + <td> + <code> + [nobb][observer.language!=de]Text to display if observer language is not German[/observer][/nobb] + </code> + </td> + <td></td> + </tr> + <tr> + <td> + <code> [nobb][observer.url][/nobb] </code> </td> diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb index c0ded4614..2edaa321b 100644 --- a/doc/member/member_guide.bb +++ b/doc/member/member_guide.bb @@ -53,7 +53,7 @@ To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Set Then select "Edit Profiles" 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 "clone" 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 "Clone this profile" there. -In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" 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. +In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" next to the profile in question (only available for the profiles that are not your default profile) and then click on specific connections 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. @@ -290,12 +290,15 @@ The slider on the matrix page has both a minimum and maximum value. Posts will o [h3]Guest Access Tokens[/h3] Guest access tokens (sometimes called "Zot access tokens") allow you to share a file, folder, photo, album, or channel with a specific person or group of people who are not $Projectname members. These tokens allow you to share individual items by sending a link that includes the token in the URL; alternatively, people can actually [i]log in[/i] using the token credentials, after which they can seamlessly view whatever content has been shared with that token. -To create and manage guest tokens, open the [zrl=[baseurl]/settings/tokens/]Guest Access Tokens[/zrl] settings page. A random token is generate with each page load, allowing you to create one by inputting an associated user name and optionally specifying an expiration date. Existing tokens are listed below the dialog and can be edited by selecting them or deleted by pressing the trash icon. +To create and manage guest tokens, open the [zrl=[baseurl]/settings/tokens/]Guest Access Tokens[/zrl] settings page. A random token is generate with each page load, allowing you to create one by inputting an associated login name and optionally specifying an expiration date. Existing tokens are listed below the dialog and can be edited by selecting them or deleted by pressing the trash icon. Additional permissions may be granted to the guest token by expanding the [b]Individual Permissions[/b] options and selecting privacy settings such as [b]Can view my channel stream and posts[/b] or [b]Can chat with me[/b]. +[url=[baseurl]/help/feature/access_tokens]More details can be found here...[/url] + [img][baseurl]/doc/member/assets/zat_dialog.png[/img] + [h3]Markup Languages[/h3] $Projectname supports several markup languages for advanced formatting of content. The default markup language is a [url=[baseurl]/help/member/bbcode]custom variant of BBcode[/url], tailored for use in $Projectname. [url=[baseurl]/help/member/bbcode]BBcode[/url] is supported for posts, wiki pages, and web page elements. Wiki pages and webpage elements may also be written using standard Markdown. [table border=0] @@ -305,13 +308,71 @@ $Projectname supports several markup languages for advanced formatting of conten [tr][td]Webpage element[/td][td][url=[baseurl]/help/member/bbcode]BBcode[/url], Markdown, HTML[/td][/tr] [/table] +[h3]Tags And Mentions[/h3] +Like many other platforms, $Projectname uses a special notation inside messages to indicate "tags" or contextual links to other entities. + +[h4]Mentions[/h4] +Channels are tagged by simply preceding their name with the @ character. + +[code] +@Jack +[/code] + +When you start to mention somebody, it will create an auto-complete box to select from your immediate connections. Select one as appropriate. + +If the person mentioned is in the list of recipients for the post, they will receive a tag notification. + +[h4]Deliverable Mentions[/h4] + +Some connections in the mention auto-complete box behave differently than others. If you mention a channel which provides "re-delivery of mentions" it will also send the post to all of that channel's default delivery connections. This is how one posts to "forums". The auto-complete box will provide two entries for these channels, one will mention just the channel. The other will invoke re-delivery and be listed as the channel's "network". + +[code] +@Gardening - mention the Gardening forum +[/code] + +[code] +@Gardening+ - mention the Gardening Forum and also post to the Gardening "network" (e.g. all the forum members; if you have permission to do so) +[/code] + +[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. + +You may also tag privacy groups which are "public". When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) @!Friends - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it. + +[h4]Mentions and Comments[/h4] +The above mechanisms only apply to "top-level" posts you create. Mentioning a channel with any of the above mechanisms has no effect in comments, except that the mentioned channel may receive a notification if they were already included as a recipient in the conversation. + +[h4]Topical Tags[/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. + +[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 generatd 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] +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 +[/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. + +[code] +@"Blind Lemon Jefferson" +@Blind_Lemon_Jefferson +[/code] + +are both equivalent. + [h3]Web Pages[/h3] -$Projectname enables users to create static webpages. To activate this feature, enable the [b]Web Pages[/b] feature in your [b][url=[baseurl]/settings/features/]Additional Features[/url][/b] section. +$Projectname allows members and allowed connections to create static webpages. To activate this feature, enable the [b]Web Pages[/b] feature in your [b][url=[baseurl]/settings/features/]Additional Features[/url][/b] section. Once enabled, a new tab will appear on your channel page labeled "Webpages". Clicking this link will take you to the webpage editor. Pages will be accessible at [b][baseurl]/page/[observer=1][observer.webname][/observer][observer=0]channelname[/observer]/pagelinktitle[/b] -The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. +The "page link title" box allows you to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. @@ -755,24 +816,28 @@ To delete attachments or change the permissions on the stored files, visit [obse [h4]Web Access[/h4] -Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. +Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. This should only be used for smaller files and photos (up to a few megabytes) as it uses internal memory. For larger files (videos, music, etc.), please upload using WebDAV. These files may still be retrieved via web access. [h4]WebDAV access[/h4] -See: [zrl=[baseurl]/help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] +WebDAV provides a way to copy files directly to or from your computer's operating system, where your cloud files appear as a virtual disk drive. This should be used to upload large files such as video and audio; as it is not limited to available memory. See [zrl=help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] below. + [h4]Permissions[/h4] When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups. +[h3]Cloud Desktop Clients[/h3] + + [h4]Cloud Desktop Clients - Windows[/h4] -RedDav using Windows 7 graphical user interface wizard: +WebDAV using Windows 7 graphical user interface wizard: 1. Left-click the Start-button to open the start menu. 2. Right-click the My computer icon to access its menu. 3. Left-click Map network drive... to open the connection dialog wizard. 4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub. -5. Type your $Projectname account's user name. IMPORTANT - NO at-sign or domain name. +5. Type your $Projectname channel nickname. IMPORTANT - NO at-sign or domain name. 6. Type your $Projectname password [h4]Cloud Desktop Clients - Linux[/h4] @@ -911,6 +976,21 @@ Once open you can set a bookmark. Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. +[h3]Saved Searches[/h3] + +In order to quickly find information, the 'saved search' widget may be used. This widget may be presented as a sidebar tool on your network page and possibly from your channel page. It is differentiated from the 'navigation bar' search tool in that it does not search the entire site, but only the subset of information available to your channel. + +Additionally the search terms you provide may activate a one-time search or be saved in a list for re-use. Saving the search item also invokes the search in addition to adding it to the saved list (which is displayed below the search text entry box). Any item in the list may be discarded if it is no longer needed. + +The saved search widget will provide autocompletion of channels (the results are prefixed with '@'), and hashtags (prefixed with '#'). You do not need to enter these tags; although entering the desired tag will reduce the autocomplete results to only hold the relevant information. The behaviour maps as follows: + +[list] +[*]@name - search your network stream for posts or comments written by 'name'. This will also change the post editor permissions to include only 'name'; as if this was a privacy group. +[*]#hashtag - search you network stream for posts containing #hashtag. +[*]text - search your network stream for posts containing 'text'. +[/list] + + [h3]Remove Channel or Account[/h3] [h4]Remove Channel[/h4] diff --git a/doc/members.bb b/doc/members.bb deleted file mode 100644 index bf5b09898..000000000 --- a/doc/members.bb +++ /dev/null @@ -1,25 +0,0 @@ -[h2]Documentation for hub members[/h2] -[h3]Getting started[/h3] -[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/roles]Permission roles and Channel types[/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]Members help[/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] -[zrl=[baseurl]/help/bugs]Bugs, Issues, and things that go bump in the night...[/zrl] - -#include doc/macros/main_footer.bb; diff --git a/doc/nomadic-identity.bb b/doc/nomadic-identity.bb deleted file mode 100644 index a062e58c8..000000000 --- a/doc/nomadic-identity.bb +++ /dev/null @@ -1 +0,0 @@ -This still needs to be written. diff --git a/doc/permissions.bb b/doc/permissions.bb deleted file mode 100644 index 64690d608..000000000 --- a/doc/permissions.bb +++ /dev/null @@ -1,84 +0,0 @@ -[h1]Permissions[/h1]
-Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere.
-
-[b]Permission Roles[/b]
-
-When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire.
-
-
-[b]Default Permission Limits[/b]
-
-There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends.
-
-[b]Access Control[/b]
-
-Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish.
-
-We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around.
-
-
-[dl terms="l"]
-[*= The scopes of permissions are:]
-[dl terms="i"]
- [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access.
-
- [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen.
-
- [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions.
-
- [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied.
-
- [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied.
-
- [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks.
-
- [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be Hubzilla members. You can set an expiration for the Access Token.
-
- [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all.
-[/dl]
-[*= The individual permissions are:]
-[dl terms="i"]
- [*= Can view my "public" stream and posts. ] This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in.
-
- [*= Can view my "public" channel profile. ] This permission determines who can view your channel's profile. This refers to the "about" tab
-
- [*= Can view my "public" photo albums. ] This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience.
-
- [*= Can view my "public" address book. ] This permission determines who can view your contacts. These are the connections displayed in the "View connections" section.
-
- [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud.
-
- [*= Can view my "public" pages. ] This permission determines who can view your public web pages.
-
- [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery.
-
- [*= Can post on my channel page ("wall"). ] This permission determines who can write to your wall when clicking through to your channel.
-
- [*= Can comment on my posts. ] This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission
-
- [*= Can send me private mail messages. ] This determines who can send you private messages (zotmail).
-
- [*= Can post photos to my photo albums. ] This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other.
-
- [*= Can forward to all my channel contacts via post tags. ] Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way.
-
- [*= Can chat with me (when available). ] This determines who can join the public chat rooms created by your channel.
-
- [*= Can write to my "public" file storage. ] This determines who can upload files to your public file storage, or 'cloud'.
-
- [*= Can edit my "public" pages. ] This determines who can edit your webpages. This is useful for wikis or sites with multiple editors.
-
- [*= Can administer my channel resources. ] This determines who can have full control of your channel. This should normally be set to "nobody except myself".
-[/dl][/dl]
-[i]Note:[/i]
-Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here.
-
-If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen.
-
-[b]Affinity[/b]
-
-The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number.
-
-The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/profiles.bb b/doc/profiles.bb deleted file mode 100644 index 513bf5fed..000000000 --- a/doc/profiles.bb +++ /dev/null @@ -1,37 +0,0 @@ -[b]Profiles[/b]
-
-$Projectname has unlimited profiles. You may use different profiles to show different "sides of yourself" 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 "sides" of each channel. For example, your default public profile might say "Hello, I'm Fred, and I like laughing". You may show your close friends a profile that adds "and I also enjoy dwarf tossing".
-
-You always have a profile known as your "default" or "public" 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 "Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like.
-
-To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings > Additional Features[/zrl] and enable "Multiple Profiles" there, otherwise you won't have the ability to use more than just your default profile.
-
-Then select "Edit Profiles" 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 "clone" 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 "Clone this profile" there.
-
-In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" 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 "Settings" 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 "Suggestions" or "Channel Suggestions", 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/project/governance.bb b/doc/project/governance.bb deleted file mode 100644 index 4c1538b4b..000000000 --- a/doc/project/governance.bb +++ /dev/null @@ -1,29 +0,0 @@ -[h2]$Projectname Governance[/h2] - -Governance relates to the management of a project and particularly how this relates to conflict resolution. - -[h3]Community Governance[/h3] - -The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: - -[ol] -[*] Lazy Consensus - -If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved. - -[*] Veto - -Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. - -[*] Community Vote - -A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums. At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules. -[/ol] - -Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is [b]strongly recommended[/b] that the proposer take steps to address any concerns that were raised and re-submit. - - - - - - diff --git a/doc/project/toc.html b/doc/project/toc.html deleted file mode 100644 index e264e014d..000000000 --- a/doc/project/toc.html +++ /dev/null @@ -1,5 +0,0 @@ -<h3>Project Information</h3> -<ul> -<li><a href="help/project/governance">Project Governance</a></li> -<li><a href="help/project/versions">Versions and Versioning</a></li> -</ul> diff --git a/doc/project/versions.bb b/doc/project/versions.bb deleted file mode 100644 index 451cd0448..000000000 --- a/doc/project/versions.bb +++ /dev/null @@ -1,30 +0,0 @@ -[h2]Versions and Releases[/h2] - -$Projectname currently uses a standard version numbering sequence of $x.$y(.$z), for instance '1.12' or '1.12.1'. The first digit is the major version number. Major versions are released "roughly" once per year; often in December. - -The second digit is the minor release number. If this number is odd, it is a development version. If the number is even, it is a released version. Minor versions are released (moved from dev to master) typically once per month when development is 'stable', but this is likely to increase. Going forward minor releases will be made somewhere between one and three months; corresponding to a stable code point and when there is general community consensus that the current code base is stable enough to consider a release. - -The final digit is an interface or patch designator. - -The release process involves changing the version number (by definition the minor version number will be odd, and the minor number will be incremented). Once a year for a major release the major version will be incremented, and the minor number reset to 0. - -The release candidate is moved to a new branch; and testing will commence/continue for a period of 1-2 weeks afterward or until any significant issues have been resolved. This branch is usually labelled with RC (release candidate); for instance 1.8RC represents the pending release of version 1.8. At this time, the minor version number on the dev branch is incremented to the next odd number. (For instance 1.9). New development can then take place in the dev branch. - -Bug fixes should always be applied to 'dev' and from there merged forward (typically with git cherry-pick) to the RC branch and if necessary applied to the master or official release branch. - -At the time a release candidate is produced, the language strings file is frozen until a release is made. Translation work may continue, but all translations should be submitted to 'dev' and merged forward to RC. - - -Once RC testing is completed, RC is merged to 'master' and the RC version designator removed; resulting in one final checkin to change the version number. The CHANGELOG file should also be updated at or just prior to this time. If there are merge conflicts during this final merge, the merge will be abandoned; and 'git merge -s ours' applied. This results in a replacement of master with the contents of the RC branch. Conflicts often arise with string updates which were made to master after the last release and cannot easily be resolved without hand editing. Since this is a release of tested code, hand editing is discouraged, and the replacement merge strategy should be used instead. It is assumed that RC now contains the most recent well-tested code. - -Once the release is live and merged to master, the RC branch may be removed. - -Fixes may be made to master after release. Where possible these should be made to dev and 'git cherry-pick' used to merge forward; which preserves the commit info and prevents merge conflicts in the next cycle. Only rarely does a patch only apply to the master branch. If necessary this can be made. If the change is severe, the interface version number should be incremented. This is at the discretion of the community. In any event, a 'git pull' of the master branch should always result in the latest release with any post-release patches applied. - -The interface number (the $z in $x.$y.$z) should be incremented in dev whenever a change is made which changes the interfaces or API in incompatible ways so that any external packages (especially addons and API clients) relying on a the current behaviour can discover and change their own interfaces accordingly at the point that it changed. - - - - - -
\ No newline at end of file diff --git a/doc/registration.bb b/doc/registration.bb deleted file mode 100644 index f656eeaa6..000000000 --- a/doc/registration.bb +++ /dev/null @@ -1,35 +0,0 @@ -[size=large][b]Registration[/b][/size]
-
-Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides.
-
-[b]Your Email Address[/b]
-
-Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i].
-
-[b]Password[/b]
-
-Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites.
-
-[b]Terms Of Service[/b]
-
-Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm.
-
-[b]Register[/b]
-
-Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval.
-
-[b]Create a Channel[/b]
-
-Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz
-
-When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles.
-
-See Also
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]The Basics about Identities within $Projectname[/zrl]
-[zrl=[baseurl]/help/accounts]Accounts[/zrl]
-[zrl=[baseurl]/help/profiles]Profiles[/zrl]
-[zrl=[baseurl]/help/permissions]Permissions[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/remove_account.bb b/doc/remove_account.bb deleted file mode 100644 index 704f0b94c..000000000 --- a/doc/remove_account.bb +++ /dev/null @@ -1,27 +0,0 @@ -[b]Remove Channel or Account[/b]
-
-[b]Remove Channel[/b]
-
-Go to the bottom of your channel settings page or visit the URL:
-
- [baseurl]/removeme
-
-You will need to confirm your password and the channel you are currently logged into will be removed.
-
-This is irreversible.
-
-If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub.
-
-[b]Remove Account[/b]
-
-Go to the bottom of your account settings page or visit the URL:
-
- [baseurl]/removeaccount
-
-You will need to confirm your password and the account you are currently logged into will be removed.
-
-This is irreversible.
-
-All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/roles.md b/doc/roles.md deleted file mode 100644 index a7608ff90..000000000 --- a/doc/roles.md +++ /dev/null @@ -1,66 +0,0 @@ -Account Permission Roles -======================== - - -##Social - -**Mostly Public** - -The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. - - -**Restricted** - -By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers. - -**Private** - -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. - - -##Forum - -**Mostly Public** - -The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically. - - -**Restricted** - -By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. - -**Private** - -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. - - -##Feed - - -**Public** - -Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. - - -**Restricted** - -Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. - - -##Special - -**Celebrity/Soapbox** - -Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. - - -**Group Repository** - -A public forum which allows members to post files/photos/webpages. - - -##Custom/Expert Mode - -Set all the privacy and permissions manually to suit your specific needs. - -#include doc/macros/main_footer.bb; diff --git a/doc/server_roles.bb b/doc/server_roles.bb deleted file mode 100644 index ef6ec28ae..000000000 --- a/doc/server_roles.bb +++ /dev/null @@ -1,27 +0,0 @@ -[h2]Server Roles[/h2] - -$Projectname can be configured in many different ways. One of the configurations available at installation is to select a 'server role'. There are currently three server roles. We highly recommend that you use 'standard' unless you have special needs. - - -[h3]Basic[/h3] - -The 'basic' server role is designed to be relatively simple, and it doesn't present options or complicated features. The hub admin may configure additional features at a site level. This role is designed for simple social networking and social network federation. Many features which do not federate easily have been removed, including (and this is somewhat important) "nomadic identity". You may move a channel to or from a basic server, but you may not clone it. Once moved, it becomes read-only on the origination site. No updates of any kind will be provided. It is recommended that after the move, the original channel be deleted - as it is no longer useable. The data remains only in case there are issues making a copy of the data. - -This role is supported by the hubzilla community. - -[h3]Standard[/h3] - - -The 'standard' server role is recommended for most sites. All features of the software are available to everybody unless locked by the hub administrator. Some features will not federate easily with other networks, so there is often an increased support burden explaining why sharing events with Diaspora (for instance) presents a different experience on that network. Additionally any member can enable "advanced" or "expert" features, and these may be beyond their technical skill level. This may also result in an increased support burden. - -This role is supported by the hubzilla community. - -[h3]Pro[/h3] - -The 'pro' server role is primarily designed for communities which want to present a uniform experience and be relieved of many federation support issues. In this role there is [b]no federation with other networks[/b]. Additional features [b]may[/b] be provided, such as channel ratings, premium channels, and e-commerce. - -By default a channel may set a "techlevel" appropriate to their technical skill. Higher levels provide more features. Everybody starts with techlevel 0 (similar to the 'basic' role) where all complicated features are hidden from view. Increasing the techlevel provides more advanced or complex features. - -The hub admin may also lock individual channels or their entire site at a defined techlevel which provides an installation with a selection of advanced features consistent with the perceived technical skills of the members. For instance, a community for horse racing might have a different techlevel than a community for Linux kernel developers. - -This role is not supported by the hubzilla community.
\ No newline at end of file diff --git a/doc/service_classes.bb b/doc/service_classes.bb deleted file mode 100644 index 4dead5d29..000000000 --- a/doc/service_classes.bb +++ /dev/null @@ -1,38 +0,0 @@ -[b]Service Classes[/b] - -Service classes allow you to set limits on system resources. A GUI to configure this is currently under development. - -As a temporary measure, the following commandline utilities can be used: - -Usage: - -[code]util/service_class[/code] -list service classes - -[code]util/config system default_service_class firstclass[/code] -set the default service class to 'firstclass' - -[code]util/service_class firstclass[/code] -list the services that are part of 'firstclass' service class - -[code]util/service_class firstclass photo_upload_limit 10000000[/code] -set firstclass total photo disk usage to 10 million bytes - -[code]util/service_class --account=5 firstclass[/code] -set account id 5 to service class 'firstclass' (with confirmation) - -[code]util/service_class --channel=blogchan firstclass[/code] -set the account that owns channel 'blogchan' to service class 'firstclass' (with confirmation) - -[b]current limits[/b] -photo_upload_limit - maximum total bytes for photos -total_items - maximum total toplevel posts -total_pages - maximum comanche pages -total_identities - maximum number of channels owned by account -total_channels - maximum number of connections -total_feeds - maximum number of rss feed connections -attach_upload_limit - maximum file upload storage (bytes) -minimum_feedcheck_minutes - lowest setting allowed for polling rss feeds -chatrooms - maximum chatrooms -chatters_inroom - maximum chatters per room -access_tokens - maximum number of Guest Access Tokens per channel
\ No newline at end of file diff --git a/doc/tags_and_mentions.bb b/doc/tags_and_mentions.bb deleted file mode 100644 index 29dfe0fbe..000000000 --- a/doc/tags_and_mentions.bb +++ /dev/null @@ -1,69 +0,0 @@ -[b]Tags And Mentions[/b]
-
-Like many other platforms, Red uses a special notation inside messages to indicate "tags" or contextual links to other entities.
-
-[b]Mentions[/b]
-
-Channels are tagged by simply preceding their name with the @ character.
-
-[code]
-@Jack
-[/code]
-
-When you start to mention somebody, it will create an auto-complete box to select from your immediate connections. Select one as appropriate.
-
-If the person mentioned is in the list of recipients for the post, they will receive a tag notification.
-
-
-[b]Deliverable Mentions[/b]
-
-Some connections in the mention auto-complete box behave differently than others. If you mention a channel which provides "re-delivery of mentions" it will also send the post to all of that channel's default delivery connections. This is how one posts to "forums". The auto-complete box will provide two entries for these channels, one will mention just the channel. The other will invoke re-delivery and be listed as the channel's "network".
-
-[code]
-@Gardening - mention the Gardening forum
-[/code]
-
-[code]
-@Gardening+ - mention the Gardening Forum and also post to the Gardening "network" (e.g. all the forum members; if you have permission to do so)
-[/code]
-
-
-
-[b]Private Mentions[/b]
-
-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.
-
-You may also tag privacy groups which are "public". When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) @!Friends - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it.
-
-
-[b]Mentions and Comments[/b]
-
-The above mechanisms only apply to "top-level" posts you create. Mentioning a channel with any of the above mechanisms has no effect in comments, except that the mentioned channel may receive a notification if they were already included as a recipient in the conversation.
-
-
-
-
-[b]Topical Tags[/b]
-
-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=https://friendicared.net/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 #[zrl=https://friendicared.net/search?tag=2012-elections]2012-elections[/zrl].
-
-
-[b]Spaces in Tags and Mentions[/b]
-
-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
-[/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.
-
-[code]
-@"Blind Lemon Jefferson"
-@Blind_Lemon_Jefferson
-[/code]
-
-are both equivalent.
-#include doc/macros/main_footer.bb;
diff --git a/doc/theme_management.bb b/doc/theme_management.bb deleted file mode 100644 index 5691f7c48..000000000 --- a/doc/theme_management.bb +++ /dev/null @@ -1,10 +0,0 @@ -[h1]Theme Management[/h1]
-$Projectname allows hub admins to easily add and update themes hosted in common git repositories.
-[h2]Add new theme repo to your hub[/h2]
-1. Navigate to your hub web root
-[code]root@hub:~# cd /var/www[/code]
-2. Add the theme repo and give it a name
-[code][nobb]root@hub:/var/www# util/add_theme_repo https://github.com/username/theme-repo.git UniqueThemeRepoName[/nobb][/code]
-[h2]Update existing theme repo[/h2]
-Update the repo by using
-[code]root@hub:/var/www# util/update_theme_repo UniqueThemeRepoName[/code]
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb deleted file mode 100644 index b1c4923b1..000000000 --- a/doc/to_do_code.bb +++ /dev/null @@ -1,42 +0,0 @@ -[b]Project Code To-Do List[/b]
-
-We need much more than this, but here are areas where developers can help. Please edit this page when items are finished. Another place for developers to start is with the issues list.
-
-[li]Documentation - see Red Documentation Project To-Do List[/li]
-[li]Include TOS link in registration/verification email[/li]
-[li]Auto preview posts/comments (configurable timer kicks in the preview if not 0)[/li]
-[li]SAML 2.0 and OpenID Connect provider functionality[/li]
-[li]relmeauth (aka indieauth) support[/li]
-[li]Create bug tracker module[/li]
-[li]Filing posts - provide a dropdown menu integrated with the 'post actions menu'[/li]
-[li]translation plugins - moses or apertium[/li]
-[li]plugins - provide 'disable' which is softer than 'uninstall' for those plugins which create additional DB tables[/li]
-[li]Infinite scroll improvements (i.e. embedded page links) see http://scrollsample.appspot.com/items [/li]
-[li]Finish the anti-spam bayesian engine[/li]
-[li]implement an email permission denied bounce message from the sys channel[/li]
-[li]provide a way for xchans with a certain network type to upgrade (unknown to rss, rss to statusnet, friendica-over-diaspora to friendica, for instance) based on new knowledge and/or redmatrix ability[/li]
-[li]Integrate the "open site" list with the register page[/li]
-[li]Support comments and member notes on documentation pages (to achieve an effect similar to php.net)[/li]
-[li]Support comments on webpages[/li]
-[li]Write more webpage layouts[/li]
-[li]Write more webpage widgets[/li]
-[li]restricted access OAuth clients[/li]
-[li](Advanced) create a UI for building Comanche pages[/li]
-[li](less advanced) create a way to preview Comanche results on a preview page while editing on another page[/li]
-[li]External post connectors - create standard interface[/li]
-[li]External post connectors, add popular services[/li]
-[li]service classes - provide a pluggable subscription payment gateway for premium accounts[/li]
-[li]service classes - account overview page showing resources consumed by channel. With special consideration this page can also be accessed at a meta level by the site admin to drill down on problematic accounts/channels.[/li]
-[li]Uploads - integrate #^[url=https://github.com/blueimp/jQuery-File-Upload]https://github.com/blueimp/jQuery-File-Upload[/url][/li]
-[li]API extensions, for Twitter API - search, friending, threading. For Red API, lots of stuff[/li]
-[li]Import channel from Diaspora/Friendica (Diaspora partially done)[/li]
-[li]MediaGoblin photo "crosspost" connector[/li]
-[li]provide a visual editor[/li]
-[li]Create mobile clients for the top platforms - which involves extending the API so that we can do stuff far beyond the current crop of Twitter/Statusnet clients. Ditto for mobile themes. We can probably use something like the Friendica Android app as a base to start from.[/li]
-[li]Implement owned and exchangeable "things".[/li]
-[li]Family Account creation - using service classes (an account holder can create a certain number of sub-accounts which are all tied to their subscription - if the subscription lapses they all go away).[/li]
-
-
-In many cases some of the work has already been started and code exists so that you needn't start from scratch. Please contact one of the developer channels like Channel One (one@zothub.com) before embarking and we can tell you what we already have and provide some insights on how we envision these features fitting together.
-
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
diff --git a/doc/to_do_doco.md b/doc/to_do_doco.md deleted file mode 100644 index 018b9efa2..000000000 --- a/doc/to_do_doco.md +++ /dev/null @@ -1,31 +0,0 @@ -# Documentation To-Do List #
-
-## How to contribute documentation ##
-
-Documentation files are in */doc*.
-
-When help is first accessed, the file loaded is *main.bb*. That file contains case sensitive links without an extension. The extensions is added automatically if the file is found, first *.md* then *.bb*.
-
-For translating documentation, create a directory in */doc* named by the language code, copy the files and translate the content.
-
-## Documentation we need to write ##
-
-* Database schema detailed descriptions
-
-* Complete plugin hook documentation
-
-* API documentation
-
-* Function and code documentation (doxygen)
-
-* New Member guide
-
-* "Extra Feature" reference, description of each
-
-* Detailed Personal Settings Documentation
-
-* Administration Guide (post-install)
-
-* Administration Guide (pre-install)
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/toc.html b/doc/toc.html index eeb0fe437..3c9c5c299 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -37,6 +37,7 @@ <ul class="list-group"> <li class="doco-list-group-item"><a href="/help/admin/administrator_guide">Guide</a></li> <li class="doco-list-group-item"><a href="/help/admin/hub_snapshots">Hub Snapshots</a></li> + <li class="doco-list-group-item"><a href="/help/database">Database Tables</a></li> </ul> </div> </div> @@ -49,8 +50,10 @@ <div id="developers" class="panel-collapse collapse in"> <ul class="list-group"> <li class="doco-list-group-item"><a href="/help/developer/developer_guide">Guide</a></li> + <li class="doco-list-group-item"><a href="/help/developer/covenant">Code of Conduct</a></li> <li class="doco-list-group-item"><a href="/help/developer/zot_protocol">Zot Protocol</a></li> <li class="doco-list-group-item"><a href="/help/developer/api_zot">Zot API</a></li> + <li class="doco-list-group-item"><a href="/help/hooklist">Hooks</a></li> </ul> </div> </div> @@ -72,13 +75,10 @@ // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) $(document).ready(function () { $(".panel-collapse.in").find('a').each(function(){ - window.console.log($(this).attr('href')); var url = document.createElement('a'); url.href = window.location; - var pageName = url.href.split('/').pop().split('#').shift(); - window.console.log('pageName: ' + pageName); + var pageName = url.href.split('/').pop().split('#').shift().split('?').shift(); var linkName = $(this).attr('href').split('/').pop(); - window.console.log('linkName: ' + linkName); if(pageName === linkName) { var tocUl = $(this).closest('li').append('<ul>').find('ul'); tocUl.removeClass(); // Classes are automatically added to <ul> elements by something else @@ -110,8 +110,24 @@ $('#doco-side-toc li') .removeClass('selected-doco-nav') .eq(i).addClass('selected-doco-nav'); + if (typeof($('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]) !== 'undefined') { + window.history.pushState({}, '', location.href.split('#')[0] + '#' + $('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]); + } } }); }); + + // When the page loads, it does not scroll to the section specified in the URL because it + // has not been constructed yet by the script. This will reload the URL + if (typeof(location.href.split('#')[1]) !== 'undefined') { + var p = document.createElement('a'); + p.href = location.href; + var portstr = ''; + if(p.port !== '') { + portstr = ':'+ p.port; + } + var newref = p.protocol + '//'+ p.hostname + portstr + p.pathname + p.hash.split('?').shift(); + location.replace(newref) + } }); </script> diff --git a/doc/troubleshooting.bb b/doc/troubleshooting.bb deleted file mode 100644 index 023d3c8b1..000000000 --- a/doc/troubleshooting.bb +++ /dev/null @@ -1,22 +0,0 @@ -[h2]Troubleshooting[/h2]
-
-When reporting issues, please try to provide as much detail as may be necessary for developers to reproduce the issue and provide the complete text of all error messages.
-
-The system logfile is an extremely useful resource for tracking down things that go wrong. This can be enabled in the admin/log configuration page. A loglevel setting of LOGGER_DEBUG is preferred for stable production sites. Most things that go wrong with communications or storage are listed here. A setting of LOGGER_DATA provides [b]much[/b] more detail, but may fill your disk. In either case we recommend the use of logrotate on your operating system to cycle logs and discard older entries.
-
-At the bottom of your .htconfig.php file are several lines (commented out) which enable PHP error logging. This reports issues with code syntax and executing the code and is the first place you should look for issues which result in a "white screen" or blank page. This is typically the result of code/syntax problems.
-Database errors are reported to the system logfile, but we've found it useful to have a file in your top-level directory called dbfail.out which [b]only[/b] collects database related issues. If the file exists and is writable, database errors will be logged to it as well as to the system logfile.
-
-In the case of "500" errors, the issues may often be logged in your webserver logs, often /var/log/apache2/error.log or something similar. Consult your operating system documentation.
-
-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.
-
-[h3]Troubleshooting updates[/h3]
-[ul]
-[li][zrl=[baseurl]/help/problems-following-an-update]Problems following an update[/zrl][/li]
-[/ul]
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/webpage-element-import.md b/doc/webpage-element-import.md deleted file mode 100644 index 4330227c2..000000000 --- a/doc/webpage-element-import.md +++ /dev/null @@ -1,94 +0,0 @@ -## <a href="#webpage-element-import"></a>Webpage element import - -There are two methods of importing webpage elements: uploading a zip file or -referencing a local cloud files folder. Both methods require that the webpage -elements are specified using a specific folder structure. The import tool makes -it possible to import all the elements necessary to construct an entire website -or set of websites. The goal is to accommodate external development of webpages -as well as tools to simplify and automate deployment on a hub. - -### Folder structure -Element definitions must be stored in the repo root under folders called - - /pages/ - /blocks/ - /layouts/ - - -Each element of these types must be defined in an individual subfolder using two files: one JSON-formatted file for the metadata and one plain text file for the element content. - -### Page elements -Page element metadata is specified in a JSON-formatted file called `page.json` with the following properties: - - * title - * pagelink - * mimetype - * layout - * contentfile - -**Example** - -Files: - - /pages/my-page/page.json - /pages/my-page/my-page.bbcode - -Content of `page.json`: - - { - "title": "My Page", - "pagelink": "mypage", - "mimetype": "text/bbcode", - "layout": "my-layout", - "contentfile": "my-page.bbcode" - } - - -### Layout elements -Layout element metadata is specified in a JSON-formatted file called `layout.json` with the following properties: - - * name - * description - * contentfile - -**Example** - -Files: - - /layouts/my-layout/layout.json - /layouts/my-layout/my-layout.bbcode - -Content of `layout.json`: - - { - "name": "my-layout", - "description": "Layout for my project page", - "contentfile": "my-layout.bbcode" - } - - -### Block elements -Block element metadata is specified in a JSON-formatted file called `block.json` with the following properties: - - * name - * title - * mimetype - * contentfile - -**Example** - -Files: - - /blocks/my-block/block.json - /blocks/my-block/my-block.html - -Content of `block.json`: - - - { - "name": "my-block", - "title": "", - "mimetype": "text/html", - "contentfile": "my-block.html" - } -
\ No newline at end of file diff --git a/doc/webpages.bb b/doc/webpages.bb deleted file mode 100644 index 2b909dc63..000000000 --- a/doc/webpages.bb +++ /dev/null @@ -1,93 +0,0 @@ -[b]Creating Web Pages[/b]
-
-Hubzilla enables users to create static webpages. To activate this feature, enable the web pages feature in your Additional Features section.
-
-Once enabled, a new tab will appear on your channel page labelled "Webpages". Clicking this link will take you to the webpage editor.
-Pages will be accessible at mydomain/page/username/pagelinktitle
-
-The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item.
-
-Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages.
-
-See also:
-
-[zrl=[baseurl]/help/webpage-element-import]Webpage element import tool[/zrl]
-
-[b]Using Blocks[/b]
-
-Blocks can be parts of webpages. The basic HTML of a block looks like this
-[code]
- <div>
- Block Content
- </div>
-
-[/code]
-
-If a block has text/html content type it can also contain menu elements. Sample content of
-[code]
- <p>HTML block content</p>
- [menu]menuname[/menu]
-
-[/code]
-will produce HTML like this
-[code]
- <div>
- <p>HTML block content</p>
- <div>
- <ul>
- <li><a href="#">Link 1</a></li>
- <li><a href="#">Link 2</a></li>
- <li><a href="#">Link 3</a></li>
- </ul>
- </div>
- </div>
-
-[/code]
-
-Via the $content macro a block can also contain the actual webpage content. For this create a block with only
-[code]
- $content
-
-[/code]as content.
-
-To make a block appear in the webpage it must be defined in the page layout inside a region.
-[code]
- [region=aside]
- [block]blockname[/block]
- [/region]
-
-[/code]
-
-The block appearance can be manipulated in the page layout.
-
-Custom classes can be assigned
-[code]
- [region=aside]
- [block=myclass]blockname[/block]
- [/region]
-
-[/code]
-will produce this HTML
-[code]
- <div class="myclass">
- Block Content
- </div>
-
-[/code]
-
-Via the wrap variable a block can be stripped off its wrapping <div></div> tag
-[code]
- [region=aside]
- [block][var=wrap]none[/var]blockname[/block]
- [/region]
-
-[/code]
-will produce this HTML
-[code]
- Block Content
-
-[/code]
-
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/webpages.md b/doc/webpages.md deleted file mode 100644 index 05c16f2bb..000000000 --- a/doc/webpages.md +++ /dev/null @@ -1,17 +0,0 @@ -Creating Webpages -================= - -Hubzilla enables users to create static webpages. To activate this feature, enable the web pages feature in your Additional Features section. - -Once enabled, a new tab will appear on your channel page labelled "Webpages". Clicking this link will take you to the webpage editor. Here you can create a post using either BBCode or the rich text editor. - -Pages will be accessible at mydomain/page/username/pagelinktitle - -The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. - -Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. - -If you are the admin of a site, you can specify a channel whose webpages we will use at key points around the site. Presently, the only place this is implemented is the home page. If you specify the channel "admin" and then the channel called "admin" creates a webpage called "home", we will display it's content on your websites home page. We expect this functionality to be extended to other areas in future. - -#include doc/webpage-element-import.md; -#include doc/macros/main_footer.bb; diff --git a/doc/what_is_zot.bb b/doc/what_is_zot.bb deleted file mode 100644 index 9285f4ec6..000000000 --- a/doc/what_is_zot.bb +++ /dev/null @@ -1,61 +0,0 @@ -[b]What is Zot?[/b]
-
-Zot is the protocol that powers $Projectname, providing three core capabilities: Communications, Identity, and Access Control.
-
-The functionality it provides can also be described as follows:
-
- - a relationship online is just a bunch of permissions
- - the internet is just another folder
-
-[b][size=20]Communications[/size][/b]
-
-Zot is a revolutionary protocol which provides [i]decentralised communications[/i] and [i]identity management[/i] across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality.
-
-Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers.
-
-Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the [i]Affinity Slider[/i].
-
-You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of [i]decentralized identity[/i] services.
-
-[b][size=20]Identity[/size][/b]
-
-Zot's identity layer is unique. It provides [i]invisible single sign-on[/i] across all sites in the grid.
-
-It also provides [i]nomadic identity[/i], so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently.
-
-The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact.
-
-Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship.
-
-Nomadic identity, single sign-on, and $Projectname's decentralization of hubs, we believe, introduce a high degree of degree of [i]resiliency[/i] and [i]persistence[/i] in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship.
-
-As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit.
-
-How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online.
-
-You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control.
-
-You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it.
-
-[b][size=20]Access Control[/size][/b]
-
-Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create.
-
-Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control.
-
-This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers.
-
-Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it.
-
-[b][size=18]Additional Resources and Links[/size][/b]
-
-For more detailed, technical information about Zot, check out the following links:
-
- - [url=https://github.com/friendica/red/wiki/Zot---A-High-Level-Overview]A high level overview[/url]
-
- - [url=https://github.com/friendica/red/wiki/zot]Zot development specification[/url]
-
- - [url=https://github.com/redmatrix/hubzilla/blob/master/include/zot.php]Zot reference implementation in PHP[/url]
-
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/zot.md b/doc/zot.md deleted file mode 100644 index 06c4d6083..000000000 --- a/doc/zot.md +++ /dev/null @@ -1,405 +0,0 @@ -Intro to Zot -============ - -Zot is a JSON-based web framework for implementing secure decentralised communications and services. - -It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. - -The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet scale distributed access control which is unobtrusive. - -For example, - -Jaquelina wishes to share photos with Roberto from her blog at "jaquelina.com.xyz", but to nobody else. Roberto maintains his own family website at "roberto.com.xyz". Zot allows Jaquelina to create an access list containing "Roberto" and allow Roberto unhindered access to the photos but without allowing Roberto's brother Marco to see the photos. - -Roberto will only login once to his own website at roberto.com.xyz using his password. After this, no further passwords will be asked for. Marco may also have an account on roberto.com.xyz, but he is not allowed to see Jaquelina's photos. - - -Additionally, zot allows Roberto to use another site - gadfly.com.xyz, and after login to gadfly.com.xyz he can also access Jaquelina's private photos. Jaquelina does not have to do anything extra to allow this, as she has already given access rights of her private photos to Roberto - no matter what site he is logged into. - -Zot also allows basic messaging and communications with anybody else on the Zot network. - -In order to provide this functionality, zot creates a decentralised globally unique identifier for each node on the network. This global identifier is not linked inextricably to DNS, providing the requisite mobility. Many existing decentralised communications frameworks provide the communication aspect, but do not provide remote access control and authentication. Additionally most of these are based on 'webfinger' such that in our example, Roberto would only be recognised if he accessed Jaquelina's photos from roberto.com.xyz - but not from gadfly.com.xyz. - - -The primary issues zot addresses are - -* completely decentralised communications -* insulation from DNS based identity -* node mobility -* invisible or reduced "interaction" remote authentication -* high performance - -We will rely on DNS-based user@host addresses as a "user-friendly" mechanism to let people know where you are, specifically on a named host with a given username, and communication will be carried out to DNS entities using TCP and the web. - -But the underlying protocol will provide an abstraction layer on top of this, so that a communications node (e.g. "identity") can move to an alternate DNS location and (to the best of our ability) gracefully recover from site re-locations and/or maintain pre-existing communication relationships. A side effect of this requirement is the ability to communicate from alternate/multiple DNS locations and service providers and yet maintain a single online identity. - -We will call this overlay network the "grid". Servers attached to this network are known as "hubs" and may support any number of individual identities. - -An identity does not necessarily correspond to a person. It is just something which requires the ability to communicate within the grid. - -The ability to recover will be accomplished by communication to the original location when creating a new or replacement identity, or as a fallback from a stored file describing the identity and their contacts in the case where the old location no longer responds. - -At least on the short term, the mobility of existing content is not a top priority. This may or may not take place at a later stage. The most important things we want to keep are your identity and your friends. - -Addresses which are shared amongst people are user@host, and which describe the **current** local account credentials for a given identity. These are DNS based addresses and used as a seed to locate a given identity within the grid. The machine communications will bind this address to a globally unique ID. A single globally unique ID may be attached or bound to any number of DNS locations. Once an identity has been mapped or bound to a DNS location, communications will consist of just knowing the globally unique address, and what DNS (url) is being used currently (in order to call back and verify/complete the current communication). These concepts will be specified in better detail. - -In order for an identity to persist across locations, one must be able to provide or recover - -* the globally unique ID for that identity -* the private key assigned to that identity -* (if the original server no longer exists) an address book of contacts for that identity. - -This information will be exportable from the original server via API, and/or downloadable to disk or thumb-drive. - -We may also attempt to recover with even less information, but doing so is prone to account hijacking and will require that your contacts confirm the change. - -In order to implement high performance communications, the data transfer format for all aspects of zot is JSON. XML communications require way too much overhead. - -Bi-directional encryption is based on RSA 4096-bit keys expressed in DER/ASN.1 format using the PKCS#8 encoding variant, with AES-256-CBC used for block encryption of variable length or large items. - -Some aspects of well known "federation protocols" (webfinger, salmon, activitystreams, portablecontacts, etc.) may be used in zot, but we are not tied to them and will not be bound by them. $Projectname project is attempting some rather novel developments in decentralised communications and if there is any need to diverge from such "standard protocols" we will do so without question or hesitation. - -In order to create a globally unique ID, we will base it on a whirlpool hash of the identity URL of the origination node and a psuedo-random number, which should provide us with a 256 bit ID with an extremely low probability of collision (256 bits represents approximately 115 quattuorviginitillion or 1.16 X 10^77 unique numbers). This will be represented in communications as a base64url-encoded string. We will not depend on probabilities however and the ID must also be attached to a public key with public key cryptography used to provide an assurance of identity which has not been copied or somehow collided in whirlpool hash space. - -Basing this ID on DNS provides a globally unique seed, which would not be the case if it was based completely on psuedo-random number generation. - -We will refer to the encoded globally unique uid string as zot_uid - -As there may be more than one DNS location attached/bound to a given zot_uid identity, delivery processes should deliver to all of them - as we do not know for sure which hub instance may be accessed at any given time. However we will designate one DNS location as "primary" and which will be the preferred location to view web profile information. - -We must also provide the ability to change the primary to a new location. A look-up of information on the current primary location may provide a "forwarding pointer" which will tell us to update our records and move everything to the new location. There is also the possibility that the primary location is defunct and no longer responding. In that case, a location which has already been mapped to this zot_uid can seize control, and declare itself to be primary. In both cases the primary designation is automatically approved and moved. A request can also be made from a primary location which requests that another location be removed. - -In order to map a zot_uid to a second (or tertiary) location, we require a secure exchange which verifies that the new location is in possession of the private key for this zot_uid. Security of the private key is thus essential to avoid hijacking of identities. - -Communications will then require - -* zot_uid (string) -* uid_sig -* callback (current location zot endpoint url) -* callback_sig -* spec (int) - -passed with every communique. The spec is a revision number of the applicable zot spec so that communications can be maintained with hubs using older and perhaps incompatible protocol specifications. Communications are verified using a stored public key which was copied when the connection to this zot_uid was first established. - -Key revocation and replacement must take place from the primary hub. The exact form for this is still being worked out, but will likely be a notification to all other bound hubs to "phone home" (to the primary hub) and request a copy of the new key. This communique should be verified using a site or hub key; as the original identity key may have been compromised and cannot be trusted. - -In order to eliminate confusion, there should be exactly one canonical url for any hub, so that these can be indexed and referenced without ambiguity. - -So as to avoid ambiguity of scheme, it is strongly encouraged that all addresses to be https with a "browser valid" cert and a single valid host component (either www.domain.ext or domain.ext, but not both), which is used in all communications. Multiple URLs may be provided locally, but only one unique URL should be used for all zot communications within the grid. - -Test installation which do not connect to the public grid may use non-SSL, but all traffic flowing over public networks should be safe from session-hijacking, preferably with a "browser recognised" cert. - -Where possible, zot encourages the use of "batching" to minimise network traffic between two hubs. This means that site 'A' can send multiple messages to site 'B' in a single transaction, and also consolidate deliveries of identical messages to multiple recipients on the same hub. - -Messages themselves may or may not be encrypted in transit, depending on the private nature of the messages. SSL (strongly encouraged) provides unconditional encryption of the data stream, however there is little point in encrypting public communications which have been designated as having unrestricted visibility. The encryption of data storage and so-called "end-to-end encryption" is outside the scope of zot. It is presumed that hub operators will take adequate safeguards to ensure the security of their data stores and these are functions of application and site integrity as opposed to protocol integrity. - - -## Messages - -Given the constraints listed previously, a zot communique should therefore be a json array of individual messages. These can be mixed and combined within the same transmission. - -Each message then requires: - -* type -* (optional) recipient list - -Lack of a recipient list would indicate an unencrypted public or site level message. The recipient list would contain an array of zot_uid with an individual decryption key, and a common iv. The decryption key is encoded with the recipient identity's public key. The iv is encrypted with the sender's private key. - -All messages should be digitally signed by the sender. - -The type can be one of (this list is extensible): - -* post (or activity) -* mail -* identity -* authenticate - -Identity messages have no recipients and notify the system social graph of an identity update, which could be a new or deleted identity, a new or deleted location, or a change in primary hub. The signature for these messages uses system keys as opposed to identity-specific keys. - -Posts include many different types of activities, such as top-level posts, likes/dislikes, comments, tagging activities, etc. These types are indicated within the message sturcture. - -authenticate messages result in mutual authentication and browser redirect to protected resources on the remote hub such as the ability to post wall-to-wall messages and view private photo albums and events, etc. - -## Discovery - -A well-known url is used to probe a hub for zot capabilities and identity lookups, including the discovery of public keys, profile locations, profile photos, and primary hub location. - -The location for this service is /.well-known/zot-info - and must be available at the root of the chosen domain. - -To perform a lookup, a POST request is made to the discovery location with the following parameters: - -Required: - -address => an address on the target system such as "john" - -Optional - -target => the zot "guid" of the observer for evaluating permissions - -target_sig => an RSA signature (base64url encoded) of the guid - -key => The public key needed to verify the signature - -token => a string (possibly random) chosen by the requesting service. If provided, an entry in the discovered packet will be provided called 'signed_token' which consists of the base64url_encoded RSA signature of the concatenation of the string 'token.' and the provided token using the private key of the discovered channel. This can be verified using the provided 'key' entry, and provides assurance that the server is in possession of the private key for the discovered identity. After 2017-01-01 it is **required** that a server provide a signed_token *if* a token was provided in the request. - -With no target provided, the permissions returned will be generic permissions -for unknown or unauthenticated observers - -Example of discovery packet for 'mike@zothub.com' - - { - - "success": true, - "signed_token": "KBJrKTq1qrctNuxF3GwVh3GAGRqmgkirlXANPcJZAeWlvSt_9TMV097slR4AYnYCBEushbVqHEJ9Rb5wHTa0HzMbfRo8cRdl2yAirvvv5d98dtwHddQgX1jB0xEypXtmIYMdPGDLvhI1RNdIBhHkkrRcNreRzoy4xD--HM6m1W0-A8PJJJ9BcNxmGPcBtLzW08wzoP9trJ3M7DQ6Gkk6j7iwVsyApw1ZBaDvabGTdc_SFV-Iegtqw3rjzT_xXWsfzMlKBy-019MYn_KS-gu23YzjvGu5tS_zDfkQb8DMUlPLz5yyxM0yOMlUDtG2qQgIJAU2O0X6T5xDdJ6mtolNyhepg845PvFDEqBQGMIH1nc47CNumeudDi8IWymEALhjG_U8KAK7JVlQTJj2EKUb0au1g6fpiBFab5mmxCMtZEX3Jreyak5GOcFFz-WpxuXJD9TdSoIvaBfBFOoJnXkg2zE4RHXeQzZ2FotmrbBG5dm8B-_6byYGoHBc08ZsWze1K96JIeRnLpBaj6ifUDcVHxZMPcGHHT27dvU2PNbgLiBjlAsxhYqkhN5qOHN8XBcg2KRjcMBaI3V0YMxlzXz5MztmZq3fcB1p-ccIoIyMPMzSj3yMB7J9CEU2LYPSTHMdPkIeDE6GaCkQKviaQQJQde346tK_YjA2k7_SOBmvPYE", - "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", - "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", - "key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "name": "Mike Macgirvin", - "name_updated": "2012-12-06 04:59:13", - "address": "mike@zothub.com", - "photo_mimetype": "image/jpeg", - "photo": "https://zothub.com/photo/profile/l/1", - "photo_updated": "2012-12-06 05:06:11", - "url": "https://zothub.com/channel/mike", - "connections_url": "https://zothub.com/poco/mike", - "target": "", - "target_sig": "", - "searchable": false, - "permissions": { - "view_stream": true, - "view_profile": true, - "view_photos": true, - "view_contacts": true, - "view_storage": true, - "view_pages": true, - "send_stream": false, - "post_wall": false, - "post_comments": false, - "post_mail": false, - "post_photos": false, - "tag_deliver": false, - "chat": false, - "write_storage": false, - "write_pages": false, - "delegate": false - }, - "profile": { - "description": "Freedom Fighter", - "birthday": "0000-05-14", - "next_birthday": "2013-05-14 00:00:00", - "gender": "Male", - "marital": "It's complicated", - "sexual": "Females", - "locale": "", - "region": "", - "postcode": "", - "country": "Australia" - }, - "locations": [ - { - "host": "zothub.com", - "address": "mike@zothub.com", - "primary": true, - "url": "https://zothub.com", - "url_sig": "eqkB_9Z8nduBYyyhaSQPPDN1AhSm5I4R0yfcFxPeFpuu17SYk7jKD7QzvmsyahM5Kq7vDW6VE8nx8kdFYpcNaurqw0_IKI2SWg15pGrhkZfrCnM-g6A6qbCv_gKCYqXvwpSMO8SMIO2mjQItbBrramSbWClUd2yO0ZAceq3Z_zhirCK1gNm6mGRJaDOCuuTQNb6D66TF80G8kGLklv0o8gBfxQTE12Gd0ThpUb5g6_1L3eDHcsArW_RWM2XnNPi_atGNyl9bS_eLI2TYq0fuxkEdcjjYx9Ka0-Ws-lXMGpTnynQNCaSFqy-Fe1aYF7X1JJVJIO01LX6cCs-kfSoz29ywnntj1I8ueYldLB6bUtu4t7eeo__4t2CUWd2PCZkY3PKcoOrrnm3TJP5_yVFV_VpjkcBCRj3skjoCwISPcGYrXDufJxfp6bayGKwgaCO6QoLPtqqjPGLFm-fbn8sVv3fYUDGilaR3sFNxdo9mQ3utxM291XE2Pd0jGgeUtpxZSRzBuhYeOybu9DPusID320QbgNcbEbEImO8DuGIxuVRartzEXQF4WSYRdraZzbOqCzmU0O55P836JAfrWjgxTQkXlYCic-DBk-iE75JeT72smCtZ4AOtoFWCjZAABCw42J7JELY9APixZXWriKtjy6JI0G9d3fs6r7SrXr1JMy0", - "callback": "https://zothub.com/post", - "sitekey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1IWXwd/BZuevq8jzNFoR\n3VkenduQH2RpR3Wy9n4+ZDpbrUKGJddUGm/zUeWEdKMVkgyllVA/xHdB7jdyKs1X\nuIet9mIdnzvhdLO/JFD5hgbNG2wpSBIUY6aSNeCFTzszqXmuSXMW5U0Ef5pCbzEA\nnhoCoGL1KAgPqyxnGKUlj7q2aDwC9IRNtAqNyFQL67oT91vOQxuMThjlDhbR/29Q\ncYR4i1RzyahgEPCnHCPkT2GbRrkAPjNZAdlnk9UesgP16o8QB3tE2j50TVrbVc/d\nYRbzC56QMPP9UgUsapNeSJBHji75Ip/E5Eg/kfJC/HEQgyCqjCGfb7XeUaeQ7lLO\nqc7CGuMP+Jqr/cE54/aSHg8boTwxkMp11Ykb+ng17fl57MHTM2RJ99qZ1KBkXezR\nuH1lyvjzeJPxEFr9rkUqc4GH74/AgfbgaFvQc8TS7ovEa5I/7Pg04m7vLSEYc6UF\nYJYxXKrzmZT2TDoKeJzaBBx5MFLhW19l68h9dQ8hJXIpTP0hJrpI+Sr6VUAEfFQC\ndIDRiFcgjz6j7T/x8anqh63/hpsyf2PMYph1+4/fxtSCWJdvf+9jCRM8F1IDfluX\n87gm+88KBNaklYpchmGIohbjivJyru41CsSLe0uinQFvA741W00w6JrcrOAX+hkS\nRQuK1dDVwGKoIY85KtTUiMcCAwEAAQ==\n-----END PUBLIC KEY-----\n" - } - ], - "site": { - "url": "https://zothub.com", - "directory_mode": "primary", - "directory_url": "https://zothub.com/dirsearch" - } - - } - - - -Discovery returns a JSON array with the following components: - -'success' => ('1' or '') Operation was successful if '1'. Otherwise an optional 'message' may be present indicating the source of error. - -'signed_token' => If a token parameter was provided in the request, it is prepended with the text 'token.' and then RSA signed with the channel private key and base64url encoded and returned as 'signed_token'. - -'guid' => the guid of the address on the target system - -'guid_sig' => the base64url encoded RSA signature of the guid, signed with the private key associated with that guid. - -'key' => the public key associated with that guid - -'name' => channel name - -'name_updated' => MySQL style timestamp '2012-01-01 00:00:00' when the name was last changed (UTC) - -'address' => "webbie" or user@host address associated with this channel - -'photo' => URL of a profile photo for this channel (ideally 175x175) - -'photo_mimetype' => content-type of the profile photo - -'photo_updated' => MySQL style timestamp when photo was last updated (UTC) - -'url' => location of channel homepage - -'connections_url' => location of Portable Contacts (extended for zot) URL for this channel - -'target' => if a permissions target was specified, it is mirrored - -'target_sig' => if a permissions target was specified, the signature is mirrored. - -'searchable' => ('1' or '') '1' indicates this entry can be searched in a directory - -###Permissions - - -'permisssions' => extensible array of permissions appropriate to this target, values are '1' or '' - - Permissions may include: - -* view_stream - -* view_profile - -* view_photos - -* view_contacts - -* view_storage - -* view_pages - -* send_stream - -* post_wall - -* post_comments - -* post_mail - -* post_photos - -* tag_deliver - -* chat - -* write_storage - -* write_pages - -* delegate - - - -###Profile - - -'profile' => array of important profile fields - -* description - -* birthday YYYY-MM-DD , all fields are optional, any field (such as year) may be zero - -* next_birthday => MySQL datetime string representing the next upcoming birthday, converted from the channel's default timezone to UTC. - -* gender (free form) - -* marital (marital status) - -* sexual (preference) - -* locale (city) - -* region (state) - -* postcode - -* country - - -###Locations - - -'locations' => array of registered locations (DNS locations) this channel may be visible or may be posting from - -Each location is an array of - -'host' => DNS hostname, e.g. example.com - -'address' => the webbie or user@host identifier associated with this location - -'primary' => ('1' or '') whether or not this is the primary location for this channel where files and web pages are generally found - -'url' => url of the root of this DNS location e.g. https://example.com - -'url_sig' => base64url encoded RSA signature of the URL, signed with the channel private key - -'callback' => zot communications endpoint on this site, usually https://example.com/post - -'sitekey' => public key of this site/host - - -###Site - - -'site' => array providing the directory role of the site responding to this request - -'url' => url of this site e.g. https://example.com - -'directory_mode' => one of 'primary', 'secondary', 'normal', or 'standalone' - -'directory_url' => if this is a directory server or standalone, the URL for the directory search module - - - -Magic Auth -========== - - -So-called "magic auth" takes place by a special exchange. On the remote computer, a redirection is made to the zot endpoint with special GET parameters. - -Endpoint: https://example.com/post/name - -where 'name' is the left hand side of the channel webbie, for instance 'mike' where the webbie is 'mike@zothub.com' - -Additionally four parameters are supplied: - -* auth => the webbie of the person requesting access -* dest => the desired destination URL (urlencoded) -* sec => a random string which is also stored locally for use during the verification phase. -* version => the zot revision - -When this packet is received, a zot message is initiated to the auth identity: - - - { - "type":"auth_check", - "sender":{ - "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA", - "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q", - "url":"http:\/\/podunk.edu", - "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY" - }, - "recipients":{ - { - "guid":"ZHSqb3yGar3TYV_o9S-JkD-6o_V4DhUcxtv0VeyX8Kj_ENHPI_M3SyAUucU835-mIayGMmTpqJz3ujPkcavVhA", - "guid_sig":"JsAAXigNghTkkbq8beGMJjj9LBKZn28hZ-pHSsoQuwYWvBJ2lSnfc4r9l--WgO6sucH-SR6RiBo78eWn1cZrh_cRMu3x3LLx4y-tjixg-oOOgtZakkBg4vmOhkKPkci0mFtzvUrpY4YHySqsWTuPwRx_vOlIYIGEY5bRXpnkNCoC8J4EJnRucDrgSARJvA8QQeQQL0H4mWEdGL7wlsZp_2VTC6nEMQ48Piu6Czu5ThvLggGPDbr7PEMUD2cZ0jE4SeaC040REYASq8IdXIEDMm6btSlGPuskNh3cD0AGzH2dMciFtWSjmMVuxBU59U1I6gHwcxYEV6BubWt_jQSfmA3EBiPhKLyu02cBMMiOvYIdJ3xmpGoMY1Cn__vhHnx_vEofFOIErb6nRzbD-pY49C28AOdBA5ffzLW3ss99d0A-6GxZmjsyYhgJu4tFUAa7JUl84tMbq28Tib0HW6qYo6QWw8K1HffxcTpHtwSL5Ifx0PAoGMJsGDZDD1y_r9a4vH5pjqmGrjL3RXJJUy-m4eLV5r7xMWXsxjqu3D8r04_dcw4hwwexpMT1Nwf8CTB0TKb8ElgeOpDFjYVgrqMYWP0XdhatcFtAJI7gsS-JtzsIwON9Kij66-VAkqy_z1IXI0ziyqV1yapSVYoUV1vMScRZ_nMqwiB5rEDx-XLfzko" - } - } - "callback":"\/post", - "version":1, - "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", - "secret_sig":"eKV968b1sDkOVdSMi0tLRtOhQw4otA8yFKaVg6cA4I46_zlAQGbFptS-ODiZlSAqR7RiiZQv4E2uXCKar52dHo0vvNKbpOp_ezWYcwKRu1shvAlYytsflH5acnDWL-FKOOgz5zqLLZ6cKXFMoR1VJGG_Od-DKjSwajyV9uVzTry58Hz_w0W2pjxwQ-Xv11rab5R2O4kKSW77YzPG2R5E6Q7HN38FrLtyWD_ai3K9wlsFOpwdYC064dk66X7BZtcIbKtM6zKwMywcfJzvS5_0U5yc5GGbIY_lY6SViSfx9shOKyxkEKHfS29Ynk9ATYGnwO-jnlMqkJC7t149H-sI9hYWMkLuCzaeLP56k2B2TmtnYvE_vHNQjzVhTwuHCIRVr-p6nplQn_P3SkOpYqPi3k_tnnOLa2d3Wtga8ClEY90oLWFJC3j2UkBf_VEOBNcg-t5XO3T-j9O4Sbk96k1Qoalc-QlznbGx4bOVsGkRBBMiH4YUqiiWB_OkFHtdqv7dqGeC-u-B4u9IxzYst46vvmyA3O-Q4APSZ1RY8ITUH0jLTbh6EAV7Oki8pIbOg0t56p-8RlanOZqmFvR-grVSc7Ak1ZcD8NACmvidUpa1B7WEvRcOeffx9lype0bt5XenDnMyx6szevwxZIiM8qGM2lsSk4fu8HI9cW0mLywzZT0" - } - - -auth_check messages MUST be encrypted with AES256CBC. This message is sent to the origination site, which checks the 'secret' to see if it is the same as the 'sec' which it passed originally. It also checks the secret_sig which is the secret signed by the destination channel's private key and base64url encoded. If everything checks out, a json packet is returned: - - { - "success":1, - "confirm":"q0Ysovd1uQRsur2xG9Tg6bC23ynzw0191SkVd7CJcYoaePy6e_v0vnmPg2xBUtIaHpx_aSuhgAkd3aVjPeaVBmts6aakT6a_yAEy7l2rBydntu2tvrHhoVqRNOmw0Q1tI6hwobk1BgK9Pm0lwOeAo8Q98BqIJxf47yO9pATa0wktOg6a7LMogC2zkkhwOV5oEqjJfeHeo27TiHr1e2WaphfCusjmk27V_FAYTzw05HvW4SPCx55EeeTJYIwDfQwjLfP4aKV-I8HQCINt-2yxJvzH7Izy9AW-7rYU0Il_gW5hrhIS5MTM12GBXLVs2Ij1CCLXIs4cO0x6e8KEIKwIjf7iAu60JPmnb_fx4QgBlF2HLw9vXMwZokor8yktESoGl1nvf5VV5GHWSIKAur3KPS2Tb0ekNh-tIk9u-xob4d9eIf6tge_d3aq1LcAtrDBDLk8AD0bho5zrVuTmZ9k-lBVPr_DRHSV_dlpu088j3ThaBsuV1olHK3vLFRhYCDIO0CqqK5IuhqtRNnRaqhlNN6fQUHpXk2SwHiJ2W36RCYMTnno6ezFk_tN-RA2ly-FomNZoC5FPA9gFwoJR7ZmVFDmUeK3bW-zYTA5vu15lpBPnt7Up_5rZKkr0WQVbhWJmylqOuwuNWbn3SrMQ8rYFZ23Tv300cOfKVgRBaePWQb4" - } - -'confirm' in this case is the base64url encoded RSA signature of the concatenation of 'secret' with the base64url encoded whirlpool hash of the source guid and guid_sig; signed with the source channel private key. This prevents a man-in-the-middle from inserting a rogue success packet. Upon receipt and successful verification of this packet, the destination site will redirect to the original destination URL and indicate a successful remote login. - -#include doc/macros/main_footer.bb; diff --git a/doc/zot_structures.md b/doc/zot_structures.md deleted file mode 100644 index e8a65ff1f..000000000 --- a/doc/zot_structures.md +++ /dev/null @@ -1,62 +0,0 @@ -Zot Structures -============== - -**Zot signatures** -All signed data in zot is accomplished by performing an RSA sign operation using the private key of the initiator. The binary result is then base64url encoded for transport. - -**Zot encryption** - -Encryption is currently provided by AES256CBC, though additional algorithms MAY be supported. A 32-octet key and 16-octet initialisation vector are randomly generated. The desired data is then encrypted using these generated strings and the result base64url encoded. Then we build an array: - - data: the base64url encoded encrypted data - alg: The chosen algorithm, in this case the string 'aes256cbc'. - key: The randomly generated key, RSA encrypted using the recipients public key, and the result base64url encoded - iv: The randomly generated IV, RDSA encrypted using the recipient's public key, and the result base64url encoded - - - -**The zot basic packet** - -Used for initiating a dialogue with another zot site. This packet MAY be encrypted. The presence of an array element 'iv' indicates encryption has been applied. When sending an 'auth_check' packet type, this packet MUST be encrypted, using the public key of the destination site (the site key, as opposed to a sender key). - - - { - "type":"notify", - "sender":{ - "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA", - "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q", - "url":"http:\/\/podunk.edu", - "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY" - }, - "callback":"\/post", - "version":1, - "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", - "secret_sig":"0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q" - } - - -Type: is the message type. One of 'notify', 'purge' refresh' 'force_refresh', 'auth_check', 'ping' or 'pickup'. The packet contents vary by message type. Here we will describe the 'notify' packet. - -Sender is an array of four components. - -The guid of the sender is typically a 64 character base64url encoded string. This is generated when an identity is created and an attempt is made that it be unique; though this isn't required. - -The guid_sig is the RSA signature of the guid, signed by the sender's private key. - -url is the base url of the location this post is originating from. - -url_sig is the RSA signature of url, signed by the sender's private key. - - -These four elements provide a portable identity. We can contact the URL provided and download a zot info packet to obtain the public key of the sender, and use that to verify the sender guid and the posting URL signatures. - - -callback is a string to be appended onto the url which identifies the zot communications endpoint on this system. It is typically the string "/post". - -version is the zot protocol identifier, to allow future protocol revisions to co-exist. - -secret is a 64-char string which is randomly generated by the sending site. - -secret_sig is the RSA signature of the secret, signed with the sender's private key. - -#include doc/macros/main_footer.bb; |