\\\\_\ ·
· \\) \____) ·
· ·
· ·
· ·
· Qvitter is free software: you can redistribute it and / or modify it ·
· under the terms of the GNU Affero General Public License as published by ·
· the Free Software Foundation, either version three of the License or (at ·
· your option) any later version. ·
· ·
· Qvitter is distributed in hope that it will be useful but WITHOUT ANY ·
· WARRANTY; without even the implied warranty of MERCHANTABILTY or FITNESS ·
· FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for ·
· more details. ·
· ·
· You should have received a copy of the GNU Affero General Public License ·
· along with Qvitter. If not, see . ·
· ·
· Contact h@nnesmannerhe.im if you have any questions. ·
· ·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */
class QvitterAction extends ApiAction
{
function isReadOnly($args)
{
return true;
}
protected function prepare(array $args=array())
{
parent::prepare($args);
$user = common_current_user();
return true;
}
protected function handle()
{
parent::handle();
$this->showQvitter();
}
function showQvitter()
{
$logged_in_user_nickname = '';
$logged_in_user_obj = false;
$logged_in_user = common_current_user();
if($logged_in_user) {
$logged_in_user_nickname = $logged_in_user->nickname;
$logged_in_user_obj = ApiAction::twitterUserArray($logged_in_user->getProfile());
}
$registrationsclosed = false;
if(common_config('site','closed') == 1 || common_config('site','inviteonly') == 1) {
$registrationsclosed = true;
}
$sitetitle = common_config('site','name');
$siterootdomain = common_config('site','server');
$qvitterpath = Plugin::staticPath('Qvitter', '');
$apiroot = common_path('api/', true);
$instanceurl = common_path('', true);
common_set_returnto(''); // forget this
// if this is a profile we add a link header for LRDD Discovery (see WebfingerPlugin.php)
if(substr_count($_SERVER['REQUEST_URI'], '/') == 1) {
$nickname = substr($_SERVER['REQUEST_URI'],1);
if(preg_match("/^[a-zA-Z0-9]+$/", $nickname) == 1) {
$acct = 'acct:'. $nickname .'@'. common_config('site', 'server');
$url = common_local_url('webfinger') . '?resource='.$acct;
foreach (array(Discovery::JRD_MIMETYPE, Discovery::XRD_MIMETYPE) as $type) {
header('Link: <'.$url.'>; rel="'. Discovery::LRDD_REL.'"; type="'.$type.'"');
}
}
}
?>
{instance-name} Howto
This an incomplete guide for all {instance-name} users, but especially for newcomers. It concentrates on how to get along, without going too much into details. For specific technical questions (e.g., how to set up a GNU Social instance) please ask in the groups !gnusocial and !sn, or on {instance-name}'s Public Timeline. You may also find technical information at http://federation.skilledtests.com/
Other GNU Social / StatusNet FAQs & wikis:
https://wiki.loadaverage.org/gnusocial/begin_to_be_social
http://wiki.gnusocial.de
Table of contents
What is {instance-name}?
{instance-name} is one of many GNU Social/StatusNet instances.
{instance-name} is a project using the GNU Social / StatusNet system, combined with a familiar user interface (UI).
The original GNU Social/StatusNet web UI is available as "Classic {instance-name}", selectable under your header avatar (upper right).
What is GNU Social/StatusNet and the Federation?
GNU Social/StatusNet is a decentralised microblogging platform.
Users of one instance can follow, be followed by, and talk with users of any other instance.
Other instances are, e.g., loadaverage.org, status.vinilox.eu, micro.fragdev.com, gnusocial.de, indy.im, quitter.no, rainbowdash.net, etc. The current number of micro-blogging instances using the GNU Social/StatusNet software is probably about 50, {instance-name} is one of them. As they all use the same software (GNU Social/StatusNet) and protocol (OStatus), they can talk to each other, just like e-mail servers can talk to each other, even though they are independant and run by different operators.
There is no central "point" of possible breaking. If one instance goes down or the admin starts doing things you don't like, you can create your account on another instance. You would still be on the GNU Social network and would still be able to communicate with your GNU Social friends. You just need to tell your contacts your new address.
Addresses on GNU Social look like this:
@user@instance.org
Your address is:
{nickname}@{instance-url}
If you follow another user, or if the user is on the same instance, you may omit the ...@instance.org part and just use the short address
@user
How to create an Avatar image
In New {instance-name}, go to your profile
"Edit profile" → Camera icon on top of your avatar
Use the + and - buttons to zoom in. Crop the image by dragging it with the mouse.
Why can't I find any "{instance-name} app" in Google Play Store or Apple's AppStore?
The network's name is GNU Social or StatusNet, so what you want is a GNU Social / StatusNet app.
({instance-name} is just one instance of the GNU Social or StatusNet federation.)
What clients are there for GNUsocial / StatusNet / {instance-name}?
You can find information on clients and links to downloads here:
http://federation.skilledtests.com/Statusnet_clients.html
http://wiki.gnusocial.de/gnusocial:clients
Android clients
— Andstatus (currently in active development by @andstatus@loadaverage.org)
has great conversation view as hierarchical tree
Image upload and display of image attachments
oversized notices can be opened via web browser
— Mustard 0.3.5c (Android 2.x - current) (← many prefer this one, worth trying: GreyBubble theme)
— Mustard 0.4.1 (Android 3.x - current) (a rather experimental new approach with newer look)
— Mustard{MOD} (Android 3.x - current)
All Mustards support: geolocation, upload and display of image attachments, display of oversized notices from instances with larger character limit (open as attachment)
Some usable Android Twitter clients (some features like sending DM / img upload may not work):
— Twidere
— Seesmic 1.7.6 (use only this version!) (closed source)
— Zwitscher
— Twydroid (closed source)
iPhone clients
— Mayo aka Mayonnaise
— Meteoric (payware)
Windows clients
Some Twitter clients (some features like sending DM / img upload not working):
— Tweetdeck 0.38.2 (closed source) (last version before Twitter took over TweetDeck) is usable for basic functions. Instructions: http://qttr.at/dmm http://qttr.at/dmn
— Qwit
Mac OSX clients
— Tweetdeck 0.38.2 (closed source)
— Adium
GNU/Linux clients
— Choqok
— Hotot (use 0.9.7.32, that's the version that comes with Debian Wheezy)
— Heybuddy
— more: http://federation.skilledtests.com/Statusnet_clients.html
Where is the URL shortener?
In New {instance-name}:
Links needs to be shortened manually before posting the notice. The "URL ><"-button will shorten any URLs pasted or written in the notice form.
In Classic {instance-name}:
Links are shortened automatically after the notice is posted. The settings are personal.
Profile > "Edit" (in the top right corner) > URL
Best use the settings:
- qttr.at
- URL longer than 30
- Text longer than 139
Screenshot: http://quitter.se/attachment/710078
How to set email preferences
On New {instance-name} go to
Your header avatar (upper right) → Settings → Email
check accordingly:
— Send me notifications of new subscriptions through email.
— Send me email when someone adds my notice as a favorite.
— Send me email when someone sends me a private message.
— Send me email when someone sends me an "@-reply".
— Allow friends to nudge me and send me an email.
New {instance-name} and Classic {instance-name}
New {instance-name} is the default user interface. It is visually very similiar to other well known commercial microblogging services. It's technical name is "Qvitter". In discussions "Qvitter" and "New {instance-name}" might mean the same thing, but Qvitter mostly refers to the software and New {instance-name} refers to the installation of the Qvitter software on {instance-name}.
Classic {instance-name} is the canonical GNU Social / StatusNet interface. At the moment some settings and features (e.g., creating a group) have to be done in Classic {instance-name} as they are not yet implemented in New {instance-name}.
To switch to Classic {instance-name}, go to
Your header avatar (upper right) → Classic {instance-name}
What are those three Timelines on New {instance-name}?
There are three timelines that show differerent notices (depending on the sources):
Timeline ("Home"):
all notices from the people you follow (not just the ones they send to people you happen to follow as well).
Public Timeline:
all notices posted by {instance-name} accounts.
The Whole Known Network:
not only all notices of the Public Timeline but also those of all people on other ("remote") instances of the StatusNet federation who are followed by at least one {instance-name} user (i.e. accounts known to {instance-name}).
How to manage follower requests
Usually you will want to stick with the default settings:
yes to "let anyone follow me" (1)
no to "Make updates visible only to my followers"
If you really want to change these settings in New {instance-name} go to:
Your header avatar (upper right) → Settings → Profile
(1): Change to "Ask me first" and you will receive e-mail notifications when someone wants to follow you. It leaves the subscription request pending until you either confirm or reject it. (But this does not work in New {instance-name} yet, so be careful with this setting)
Can I delete my {instance-name} account?
You can delete your account, but your all notices will be deleted on {instance-name} as well -- and this will break conversation threads. If you re-create your account on another instance, it's better to rename your {instance-name} account to something like MyNickhasmovedtoFragdev, instead of deleting it.
To delete your account go to:
Your header avatar (upper right) → Settings → Delete account (right column)
How to connect your {instance-name} account to your Twitter account
You can forward your notices to Twitter
In New {instance-name}:
Your header avatar (upper right) → Settings → Twitter
You are forwarded to Twitter and have to authorise {instance-name} to use your Twitter account.
According to user reports this doesn't always work on the first or second attempt. If it doesn't, you may have to try again later. The cause of the problem may be on Twitter's side. Your browser must not block Javascript or Cookies.
How to write Direct Messages
Direct Messages are only supported in Classic {instance-name} at the time of writing (Messages in the left menu).
You can use apps like Mustard and Mayo to send DMs.
Note:
- DM only works within the same instance ({instance-name} in this case)
- to send DMs you need to mutually follow each other
Favourites and Repeats/requeets
In all the three timelines you can click on a notice to expand it and see who has favourited or repeated it.
(You can setup E-mail Notifications to notify you when your notices have been fav'ed.
Favs and repeats/requeets look like this in New {instance-name}: http://qttr.at/du6 and like this in Classic {instance-name}: http://qttr.at/du5
What does the "My colleagues at {instance-name}" option do?
In Classic {instance-name}, there is an option to post to "My colleagues at {instance-name}". This will stop the notice from federating. It will only be visible to your followers on {instance-name}.
Groups
Public Groups
You can create a group for any topic, like Feminism, Football, FreeBSD.
People can be members of as many groups as they like. As a member of a group one can post to the whole group by including ! + group name, e.g., !feminism, in the notice. All group members, whether or not they follow you, will get the notice in their Home Timelines. One follows and unfollows a group like one follows and unfollows a person.
A list of groups hosted on {instance-name} can be found here:
{instance-url-with-protocol}groups
A list of groups hosted also on remote instances can be found here:
http://www.skilledtests.com/wiki/List_of_federated_Statusnet_groups
To create a group go to:
{instance-url-with-protocol}groups → Create new group
Private Groups
An admin of a group has the option to declare it "private". This means:
1) new members must be approved by the admin, and
2) all notices are forced to be private, i.e.,
notices in the group are only visible to the group members (they don't appear in the Public Timeline), and
it's not possible for other instances' users to be members of a private group on {instance-name}.
Lists
Lists are available on Classic {instance-name}.
Adding users to lists:
When browsing users on e.g. {instance-url-with-protocol}{nickname}/subscriptions, there's a small edit-button in the bottom. Click the button, and type in the name of the list you wich to add the user to. If the list doesn't exist, it will be created.
Managing your lists
Go to your profile. Your lists are listed in the right column.
How to block
To block a {instance-name} user, go to their profile in Classic {instance-name}
{instance-url-with-protocol}[nickname]
and click "block" below their profile desription
We don't recommend blocking people from remote instances as there are still issues with this feature.
How to follow someone on a remote instance
If you click a remote nickname in New {instance-name} you are brought to a small profile window showing the full remote address @blabla@status.vinilox.eu
Click the button "Follow". In New {instance-name} that should be all.
In Classic {instance-name} you're forwarded to the remote instance's user profile (which may differ in layout and theme from Classic {instance-name}). Look for the Subscribe-button (usually in the upper right). A subscription box opens in which you're prompted to enter your own "webfinger address", i.e., {nickname}@{instance-domain} Subscribe and you're redirected to your Classic {instance-name} page where you have to confirm the subscription.
How to manage the visibility of your notices
There are several ways to make notices visible only to selected people, not to the public. None of these work in New {instance-name} yet.
(All four methods only work within the same instance. Users outside {instance-name} won't be able to see the notice.)
a. Direct Messages → The notice will only be visible to its recipient in his DM inbox (there are no Direct Messages to more than one person).
b. Set your account to "Make updates visible only to my followers" and "Ask me first if someone wants to follow me" (Classic {instance-name} → Profile → Edit)
c. Post to a private group of which you are a member → The post will only be visible to the group members (see above under "Groups")
(Note to c: You can use any client to post to a private group by using the !group tag.)
d. Post to a public group and close the lock on the right of the drop-down menu beneath the message field → The post will only be visible to the group members. (Although at the time of writing, this does not work. The post will be visible to everyone.)
(Note to d: Make sure you don't leave "Everyone" or "My Colleagues at {instance-name}" selected, otherwise your post will go to the timelines of every {instance-name} user, which is not what you want if you close the lock)
(Note to d: The lock method is only available in Classic {instance-name}. There is no lock feature in New {instance-name} or any known client, at the time of writing.)
How to cite conversations or parts of them
Sometimes in a blog-post or email, you don't want to cite just one post but a whole conversation. Each post, each reply, and each conversation has its own, URL, and the ways to find them differ slightly in Classic {instance-name} and in New {instance-name}.
New {instance-name}
In New {instance-name} click on the time stamp of a post, or "details" if you have expanded the post. This will show the notice page, with the conversation expanded.
Classic {instance-name}
Click on the the timestamp of any post. The post will reappear on a separate, individual page. Click "in context". The whole conversation that depends on this note will be displayed on a new page, with the selected post as its visible top.
How to follow keywords and hashtags
Similar to following a person or group you can, in Classic {instance-name}, subscribe to (or follow) hashtags and search words. Notices containing them will then appear in your timeline.
Following search words and hashtags is not limited to notices from accounts on {instance-name} but includes notices from remote instances as well
To follow hashtags (# + ...), put the word with the hashtag-symbol "#" prefixed into the search box of Classic {instance-name} and press Enter. You'll arrive at the search result page. Similiar, to subscribe to search words, put them without hashtag-symbol into the search box. You'll get a much larger list because the search not only covers individual words but also looks for occurrences of the phrase inside larger phrases. To follow the search, click on the tiny "Subscribe"-button on the upper right corner of the lists. You'll then receive the messages in your timeline.
Following one word often yields too many results, so it is expedient to combine words and follow them as complete phrases.
You can unfollow those notices by unfollowing the hashtags & search phrases.
For an overview which phrases you follow, enter the URLs
hashtags: {instance-url-with-protocol}{nickname}/tag-subscriptions
search words and phrases: {instance-url-with-protocol}{nickname}/search-subscriptions
On those pages you can manage your subscriptions, that is, add more phrases and hashtags or unfollow them.
Why doesn't my repeat/requeet show up on other instances?
In the latest versions of GNU Social, repeats/requeets do not get sent to your followers on other instances. This was possible in StatusNet, but this feature has been removed due to a security issue. GNU Social developers are working on a solution. In the meantime, if you really want your repeat/requeet to federate, you can always to a "manual repeat", i.e. write RQ @username, and then copy-paste the notice.
Thanks to @simsa0 and @mcscx for their work on this FAQ. Any errors are due to bad editing by @hannes2peer.
'.QvitterPlugin::settings('js').'';
}
?>