[TEMPLATES] Fix identation

This commit is contained in:
Diogo Peralta Cordeiro 2021-04-30 02:51:03 +01:00 committed by Hugo Sales
parent 8cb64ede7f
commit 5bd16a509e
Signed by: someonewithpc
GPG Key ID: 7D0C7EAFC9D835A0
37 changed files with 750 additions and 681 deletions

View File

@ -1,43 +1,43 @@
{% extends 'stdgrid.html.twig' %}
{% block meta %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block title %}Welcome!{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_small.css') }}"
media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/poll/poll.css') }}"
media="screen">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_small.css') }}"
media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/poll/poll.css') }}"
media="screen">
{% endblock %}
{% block header %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block left %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block body %}
{{ parent() }}
<div class="content">
<div class="content">
<div class="create-notice">
<div class="create-poll-notice">
{% block form %}
<div class='form-single'>
{{ form(form) }}
<div class="create-poll-notice">
{% block form %}
<div class='form-single'>
{{ form(form) }}
</div>
{% endblock form %}
</div>
{% endblock form %}
</div>
</div>
{% endblock body %}
{% endblock body %}
{% block javascripts %}{% endblock %}

View File

@ -29,9 +29,9 @@
<div class="poll">
<p class="poll-question">Q. {{ question }}</p>
{% block form %}
<div class='form-single'>
{{ form(form) }}
</div>
<div class='form-single'>
{{ form(form) }}
</div>
{% endblock form %}
</div>
</div>

View File

@ -1,4 +1,3 @@
<div class="poll">
<p class="poll-question">Q. {{ vars.question }}</p>
{% if vars.form is not null %}
@ -7,14 +6,14 @@
{{ form(vars.form) }}
</div>
{% endblock form %}
{% else %}
{% else %}
<ul>
{% for question, votes in vars.responses %}
<li class="result">
<p class="result-option">{{ question }}</p>
<p class="result-vote">{{ votes }} </p>
</li>
{% endfor %}
{% for question, votes in vars.responses %}
<li class="result">
<p class="result-option">{{ question }}</p>
<p class="result-vote">{{ votes }} </p>
</li>
{% endfor %}
</ul>
{% endif %}
</div>

View File

@ -11,11 +11,11 @@
{% endblock %}
{% block body %}
<div class="content">
<div style="display: block">
<p> {{ title | escape }} </p>
<a href="{{download}}"> {{ 'Download link' | trans }}</a>
{% include '/attachments/view.html.twig' with {'attachment': attachment} only %}
<div class="content">
<div style="display: block">
<p> {{ title | escape }} </p>
<a href="{{ download }}"> {{ 'Download link' | trans }}</a>
{% include '/attachments/view.html.twig' with {'attachment': attachment} only %}
</div>
</div>
</div>
{% endblock body %}

View File

@ -1,25 +1,28 @@
{% set thumbnail_parameters = {'id': attachment.getId(), 'w': config('thumbnail','width'), 'h': config('thumbnail','height')} %}
{% if attachment.mimetype starts with 'image/' %}
<div>
<figure>
<img src="{{ path('attachment_thumbnail', thumbnail_parameters) }}" alt="{{ attachment.getTitle() }}">
<figcaption> <a href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a> </figcaption>
</figure>
</div>
<div>
<figure>
<img src="{{ path('attachment_thumbnail', thumbnail_parameters) }}" alt="{{ attachment.getTitle() }}">
<figcaption><a
href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a>
</figcaption>
</figure>
</div>
{% elseif attachment.mimetype starts with 'video/' %}
<div>
<video src="{{ path('attachment_view', {'id': attachment.getId()}) }}" controls poster="{{ path('attachment_thumbnail') }}, thumbnail_parameters">
<i> <a href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a> </i>
</video>
</div>
<div>
<video src="{{ path('attachment_view', {'id': attachment.getId()}) }}" controls
poster="{{ path('attachment_thumbnail') }}, thumbnail_parameters">
<i> <a href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a> </i>
</video>
</div>
{% else %}
{% for show in handle_event('ShowAttachment', attachment) %}
<div>
{{ show | raw }}
</div>
{% else %}
<div>
<i> <a href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a> </i>
</div>
{% endfor %}
{% for show in handle_event('ShowAttachment', attachment) %}
<div>
{{ show | raw }}
</div>
{% else %}
<div>
<i> <a href="{{ path('attachment_show', {'id': attachment.getId()}) }}">{{ attachment.getTitle() }}</a> </i>
</div>
{% endfor %}
{% endif %}

View File

@ -1,54 +1,58 @@
<!DOCTYPE html>
<html>
<head>
{% block meta %}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% endblock %}
<title>
{% block title %}{% endblock %}
</title>
{% block stylesheets %}
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@800&family=Open+Sans&display=swap" rel="stylesheet">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base_small.css') }}" media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/reset.css') }}">
{% for stylesheet in show_stylesheets() %}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/' ~ stylesheet) }}">
{% endfor %}
{% endblock %}
{% for arr in handle_event('ShowHeadElements', app.request) %}
{# Only one element, but has dynamic value, can't access it directly #}
{% for type, element in arr %}
<{{type}} rel="{{element['rel']}}" type="{{element['type']}}" href="{{element['href']}}" title="{{element['title']}}">
{% endfor %}
{% endfor %}
</head>
<body>
<head>
{% block meta %}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% endblock %}
<title>
{% block title %}{% endblock %}
</title>
{% block stylesheets %}
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@800&family=Open+Sans&display=swap"
rel="stylesheet">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/base_small.css') }}"
media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/reset.css') }}">
{% for stylesheet in show_stylesheets() %}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/' ~ stylesheet) }}">
{% endfor %}
{% endblock %}
{% for arr in handle_event('ShowHeadElements', app.request) %}
{# Only one element, but has dynamic value, can't access it directly #}
{% for type, element in arr %}
<{{ type }} rel="{{ element['rel'] }}" type="{{ element['type'] }}" href="{{ element['href'] }}" title="{{ element['title'] }}">
{% endfor %}
{% endfor %}
</head>
<body>
<div class="container">
{% block header %}
<div id='header'>
<div id='top'>
{% block leftpanel %}
{% endblock leftpanel %}
<nav id='instance'>
<a href="{{ path('main_public') }}">
{{ icon('logo', 'icon icon-logo') | raw }}
<b> {{ config('site', 'name') }} </b>
</a>
</nav>
{% block rightpanel %}
{% endblock rightpanel %}
</div>
</div>
{% endblock header%}
<div class="container">
{% block header %}
<div id='header'>
<div id='top'>
{% block leftpanel %}
{% endblock leftpanel %}
<nav id='instance'>
<a href="{{ path('main_public') }}">
{{ icon('logo', 'icon icon-logo') | raw }}
<b> {{ config('site', 'name') }} </b>
</a>
</nav>
{% block rightpanel %}
{% endblock rightpanel %}
</div>
</div>
{% endblock header %}
{% block nav %}{% endblock %}
{% block body %}{% endblock %}
{% block javascripts %}{% endblock javascripts%}
</div>
</body>
{% block nav %}{% endblock %}
{% block body %}{% endblock %}
{% block javascripts %}{% endblock javascripts %}
</div>
</body>
</html>

View File

@ -1,27 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Admin Configuration page!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<style>
body {
background-color: #333;
color: #ddd;
}
</style>
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
<head>
<meta charset="UTF-8">
<title>{% block title %}Admin Configuration page!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<style>
body {
background-color: #333;
color: #ddd;
}
</style>
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
{{ form(form) }}
{{ form(form) }}
{% if old_value is defined and default is defined %}
Old value: {{ old_value }} <br>
Default value: {{ default }}
Configuration dumped to <code> social.local.yaml </code>
Backup of previous configuration in <code> social.local.yaml.back </code> will be overridden with the next change
{% endif %}
</body>
{% if old_value is defined and default is defined %}
Old value: {{ old_value }} <br>
Default value: {{ default }}
Configuration dumped to <code> social.local.yaml </code>
Backup of previous configuration in <code> social.local.yaml.back </code> will be overridden with the next change
{% endif %}
</body>
</html>

View File

@ -3,17 +3,17 @@
{% block title %}Cover Settings{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock body %}
{% block form %}
<div class='form-single'>
{{ form(form) }}
</div>
{% if remove_form is not null %}
<div class='form-single'>
{{ form(remove_form) }}
{{ form(form) }}
</div>
{% endif %}
{% if remove_form is not null %}
<div class='form-single'>
{{ form(remove_form) }}
</div>
{% endif %}
{% endblock form %}

View File

@ -1,8 +1,7 @@
<a class="cover">
{% if vars is not empty %}
<img class="cover-img" src='{{ vars.img }}' alt="Your cover." class="">
{% else %}
<div class="no-cover" ></div>
{% endif %}
</a>
<a class="cover">
{% if vars is not empty %}
<img class="cover-img" src='{{ vars.img }}' alt="Your cover." class="">
{% else %}
<div class="no-cover"></div>
{% endif %}
</a>

View File

@ -1,24 +1,27 @@
{% extends 'stdgrid.html.twig' %}
{% block meta %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block title %}{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc_small.css') }}" media="screen and (max-width: 750px)">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/doc/doc_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block header %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block left %}
{{ parent() }}
{{ parent() }}
{% endblock %}

View File

@ -3,15 +3,15 @@
{% block title %}Help{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block markdown %}
{% apply markdown_to_html %}
## Bugs
If you think you've found a bug in the underlying [GNU social](https://gnu.io/social/) software, or if there's a new feature you'd like to see, add it into the [GNU social task list](https://git.gnu.io/gnu/gnu-social/issues). Don't forget to
check the list of existing bugs to make sure it hasn't already been reported! ## Post a notice If you have a question about how to do something, just post a notice with your question, preferably tagged with #NewHere. Watch your inbox for replies.
## Post a notice
If you have a question about how to do something, just post a notice with your question, preferably tagged with #NewHere. Watch your inbox for replies.
{% endapply %}
{% apply markdown_to_html %}
## Bugs
If you think you've found a bug in the underlying [GNU social](https://gnu.io/social/) software, or if there's a new feature you'd like to see, add it into the [GNU social task list](https://git.gnu.io/gnu/gnu-social/issues). Don't forget to
check the list of existing bugs to make sure it hasn't already been reported! ## Post a notice If you have a question about how to do something, just post a notice with your question, preferably tagged with #NewHere. Watch your inbox for replies.
## Post a notice
If you have a question about how to do something, just post a notice with your question, preferably tagged with #NewHere. Watch your inbox for replies.
{% endapply %}
{% endblock %}

View File

@ -5,46 +5,51 @@
{% block header %}{{ parent() }}{% endblock %}
{% block body %}
<div class='content'>
<nav class='faq-nav'>
<ul>
<li>
<a href="{{ path('doc_faq') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_faq' %}active{% endif %}'>FAQ</a>
</li>
<li>
<a href="{{ path('doc_contact') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_contact' %}active{% endif %}'>Contact</a>
</li>
<li>
<a href="{{ path('doc_tags') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Tags</a>
</li>
<li>
<a href="{{ path('doc_groups') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_groups' %}active{% endif %}'>Groups</a>
</li>
<li>
<a href="{{ path('doc_openid') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_openid' %}active{% endif %}'>OpenID</a>
</li>
</ul>
</nav>
<div class='markd'>
{% block markdown %}
{% apply markdown_to_html %}
## What is this site?
This is a social network, running the GNU social software.
<div class='content'>
<nav class='faq-nav'>
<ul>
<li>
<a href="{{ path('doc_faq') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_faq' %}active{% endif %}'>FAQ</a>
</li>
<li>
<a href="{{ path('doc_contact') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_contact' %}active{% endif %}'>Contact</a>
</li>
<li>
<a href="{{ path('doc_tags') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Tags</a>
</li>
<li>
<a href="{{ path('doc_groups') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_groups' %}active{% endif %}'>Groups</a>
</li>
<li>
<a href="{{ path('doc_openid') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_openid' %}active{% endif %}'>OpenID</a>
</li>
</ul>
</nav>
<div class='markd'>
{% block markdown %}
{% apply markdown_to_html %}
## What is this site?
This is a social network, running the GNU social software.
You can use it to make connections between friends, family and colleagues -- writing short notices about yourself, where you are, and what you're doing, and those notices will be sent to all your contacts.
You can use it to make connections between friends, family and colleagues -- writing short notices about yourself, where you are, and what you're doing, and those notices will be sent to all your contacts.
In the future, we'll be adding support for photo, video and file sharing, as well as events, better contact management and mobile devices.
In the future, we'll be adding support for photo, video and file sharing, as well as events, better contact management and mobile devices.
## Help
GNU social is a **social service**. Users can post short status messages which are shared to their friends and colleagues on the service and (optionally) onto the Web.
## Help
GNU social is a **social service**. Users can post short status messages which are shared to their friends and colleagues on the service and (optionally) onto the Web.
You can also share other types of data, like bookmarks, event invitations, polls, and questions.
You can also share other types of data, like bookmarks, event invitations, polls, and questions.
If you'd like to try it out, first register a new account. Then, on the public timeline, enter your message into the text box at the top of the page, and click "Send". It will go out on the public timeline and to anyone who is subscribed to your notices.
If you'd like to try it out, first register a new account. Then, on the public timeline, enter your message into the text box at the top of the page, and click "Send". It will go out on the public timeline and to anyone who is subscribed to your notices.
To subscribe to other people's notifications, go to their profile page and click the "subscribe" button. They'll get a notice that you're now subscribed to their notifications.
{% endapply %}
{% endblock %}
</div>
</div>
To subscribe to other people's notifications, go to their profile page and click the "subscribe" button. They'll get a notice that you're now subscribed to their notifications.
{% endapply %}
{% endblock %}
</div>
</div>
{% endblock %}

View File

@ -2,36 +2,36 @@
{% block title %}Help{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block markdown %}
{% apply markdown_to_html %}
## Groups
Users on GNU social can create groups that other users can join. Groups can be a great way to share information and entertainment with a group of people who have a common interest or background; who work together on a team; or who have a particular knowledge or skill.
{% apply markdown_to_html %}
## Groups
Users on GNU social can create groups that other users can join. Groups can be a great way to share information and entertainment with a group of people who have a common interest or background; who work together on a team; or who have a particular knowledge or skill.
You can find out about groups on the server on the Groups page. You can join a group by clicking on the "Join" button either in the group list or on the group's home page.
You can find out about groups on the server on the Groups page. You can join a group by clicking on the "Join" button either in the group list or on the group's home page.
## Starting a new group
You can start a new group for friends and colleagues. Note that all groups are free for anyone to join.
## Starting a new group
You can start a new group for friends and colleagues. Note that all groups are free for anyone to join.
To start a new group, use the new group tool and fill out the form. Describe your group as best you can if you want people to be able to find it.
To start a new group, use the new group tool and fill out the form. Describe your group as best you can if you want people to be able to find it.
When choosing the nickname for your group, try to keep it short. The nickname is sometimes included in messages to and from the group, so the less chars the better. Try using acronyms for organizations, or airport codes for places (like 'pdx' instead of 'portland').
When choosing the nickname for your group, try to keep it short. The nickname is sometimes included in messages to and from the group, so the less chars the better. Try using acronyms for organizations, or airport codes for places (like 'pdx' instead of 'portland').
## Sending messages to a group
You can send a message to a group using the syntax "!groupName" anywhere in the message. If you have more than one group named, the notice will go to each group. Only members can send notices to a group, and groups do not respond to direct messages (DMs).
## Sending messages to a group
You can send a message to a group using the syntax "!groupName" anywhere in the message. If you have more than one group named, the notice will go to each group. Only members can send notices to a group, and groups do not respond to direct messages (DMs).
You can also select the group from the "To:" drop down when posting.
You can also select the group from the "To:" drop down when posting.
You can make a group message private by clicking the "private" button before posting.
You can make a group message private by clicking the "private" button before posting.
## Receiving messages
New group messages will appear in your inbox, and will also come to your phone or IM client if you've set them up to receive notices.
## Receiving messages
New group messages will appear in your inbox, and will also come to your phone or IM client if you've set them up to receive notices.
## Private groups
The administrator can make a group private. For a private group, all notices will marked as private for group members only. Also, administrators will have to approve all new members to the group.
## Private groups
The administrator can make a group private. For a private group, all notices will marked as private for group members only. Also, administrators will have to approve all new members to the group.
Private groups are visible in the group directory.
{% endapply %}
Private groups are visible in the group directory.
{% endapply %}
{% endblock %}

View File

@ -3,27 +3,27 @@
{% block title %}Help{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block markdown %}
{% apply markdown_to_html %}
## Openid
GNU social supports the OpenID standard for single signon between Web sites. OpenID lets you log into many different Web sites without using a different password for each. (See Wikipedia's OpenID article for more information.)
{% apply markdown_to_html %}
## Openid
GNU social supports the OpenID standard for single signon between Web sites. OpenID lets you log into many different Web sites without using a different password for each. (See Wikipedia's OpenID article for more information.)
If you already have an account on GNU social, you can login with your username and password as usual. To use OpenID in the future, you can add an OpenID to your account after you have logged in normally.
If you already have an account on GNU social, you can login with your username and password as usual. To use OpenID in the future, you can add an OpenID to your account after you have logged in normally.
There are many Public OpenID providers, and you may already have an OpenID-enabled account on another service.
There are many Public OpenID providers, and you may already have an OpenID-enabled account on another service.
- **On wikis:** If you have an account on an OpenID-enabled wiki, like Wikitravel, wikiHow, Vinismo, AboutUs or Keiki, you can log in to GNU social by entering the full URL of your user page on that other wiki in the box above. For example, http://kei.ki/en/User:Evan.
- **On wikis:** If you have an account on an OpenID-enabled wiki, like Wikitravel, wikiHow, Vinismo, AboutUs or Keiki, you can log in to GNU social by entering the full URL of your user page on that other wiki in the box above. For example, http://kei.ki/en/User:Evan.
- **Yahoo!:** If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID in the box above. Yahoo! OpenID URLs have the form https://me.yahoo.com/yourusername.
- **Yahoo!:** If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID in the box above. Yahoo! OpenID URLs have the form https://me.yahoo.com/yourusername.
- **AOL:** If you have an account with AOL, like an AIM account, you can log in to GNU social by entering your AOL-provided OpenID in the box above. AOL OpenID URLs have the form http://openid.aol.com/yourusername. Your username should be all lowercase, no spaces.
- **AOL:** If you have an account with AOL, like an AIM account, you can log in to GNU social by entering your AOL-provided OpenID in the box above. AOL OpenID URLs have the form http://openid.aol.com/yourusername. Your username should be all lowercase, no spaces.
- **Blogger, Wordpress.com, LiveJournal, Vox:** If you have a blog on any of these services, enter your blog URL in the box above. For example, http://yourusername.blogspot.com/, http://yourusername.wordpress.com/, http://yourusername.livejournal.com/, or http://yourusername.vox.com/.
- **Blogger, Wordpress.com, LiveJournal, Vox:** If you have a blog on any of these services, enter your blog URL in the box above. For example, http://yourusername.blogspot.com/, http://yourusername.wordpress.com/, http://yourusername.livejournal.com/, or http://yourusername.vox.com/.
Additionally, once you have an account on GNU social, you can use your profile's URL (https://gnusocial.org/yourusername) as an OpenID elsewhere as well.
Additionally, once you have an account on GNU social, you can use your profile's URL (https://gnusocial.org/yourusername) as an OpenID elsewhere as well.
{% endapply %}
{% endapply %}
{% endblock %}

View File

@ -3,28 +3,28 @@
{% block title %}Help{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block markdown %}
{% apply markdown_to_html %}
## Tags
GNU social supports tags to help you organize your activities here. You can use tags for people and for notices.
{% apply markdown_to_html %}
## Tags
GNU social supports tags to help you organize your activities here. You can use tags for people and for notices.
## Tagging a notice
You can tag a notice using a hashtag; a # character followed by letters and numbers as well as '.', '-', and '_'. Note that accented latin characters are not supported, and non-roman scripts are right out.
## Tagging a notice
You can tag a notice using a hashtag; a # character followed by letters and numbers as well as '.', '-', and '_'. Note that accented latin characters are not supported, and non-roman scripts are right out.
The HTML for the notice will link to a stream of all the other notices with that tag. This can be a great way to keep track of a conversation.
The HTML for the notice will link to a stream of all the other notices with that tag. This can be a great way to keep track of a conversation.
## Tagging yourself
You can also add tags for yourself on your profile settings page or by using the edit tags button on your profile page. Use single words to describe yourself, your experiences and your interest. The tags will become links on your profile page to a list of all the users on the site who use that same tag. It can be a nice way to find people who are related to you geographically or who have a common interest.
## Tagging yourself
You can also add tags for yourself on your profile settings page or by using the edit tags button on your profile page. Use single words to describe yourself, your experiences and your interest. The tags will become links on your profile page to a list of all the users on the site who use that same tag. It can be a nice way to find people who are related to you geographically or who have a common interest.
## Tagging others
You can also tag other users by using the edit tags button next to their profile. Such tags are called people tags. Once you have created a people tag, you can add or remove users from it using the tag's edit form. This makes it easy to organize your subscriptions into groups and sort through them separately. Also, it will let you create custom lists of people that others can subscribe to.
## Tagging others
You can also tag other users by using the edit tags button next to their profile. Such tags are called people tags. Once you have created a people tag, you can add or remove users from it using the tag's edit form. This makes it easy to organize your subscriptions into groups and sort through them separately. Also, it will let you create custom lists of people that others can subscribe to.
You can also send a notice "to the attention of" your subscribers whom you've marked with a particular tag (note: not people who've marked themselves with that tag). "@#family hello" will send a notice to all your subscribers you've marked with the tag 'family'.
You can also send a notice "to the attention of" your subscribers whom you've marked with a particular tag (note: not people who've marked themselves with that tag). "@#family hello" will send a notice to all your subscribers you've marked with the tag 'family'.
## Private and public people tags
A private people tag is only visible to the creator, it cannot be subscribed to, but the timeline can be viewed. To create a new private prepend a '.' to the tag in the tags editing box. To set an existing public tag as private or vice-versa, go to the tag's edit page.
{% endapply %}
## Private and public people tags
A private people tag is only visible to the creator, it cannot be subscribed to, but the timeline can be viewed. To create a new private prepend a '.' to the tag in the tags editing box. To set an existing public tag as private or vice-versa, go to the tag's edit page.
{% endapply %}
{% endblock %}

View File

@ -2,34 +2,34 @@
{% block title %}Privacy{% endblock %}
{% block body %}
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## Privacy
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## Privacy
This document outlines this service's respect for your personal privacy as a user of the service.
This document outlines this service's respect for your personal privacy as a user of the service.
- Almost all the text and files that users upload to this site is available under the site license (see the license block at the bottom of this page). Users agree to the license when they register to use the site for the first time. Typically that means that the data can be copied far and wide, for commercial and non-commercial purposes, and in modified or unmodified form. If you're not OK with that, don't use the service.
The following data items are considered private data that won't be shared with other users, business partners, or the public at large:
- your password
- your email address
- your IM address (AIM, Jabber, or other instant messaging address)
- your phone number
- your "private messages"
- your login credentials (username and password) for other services (Twitter, Facebook, etc.)
- Some private data may be published in aggregate, e.g. "30% of our users are registered with Hotmail addresses."
- Your notices (including files) can be downloaded and re-used by other services, either one-by-one or in bulk as RSS files.
- Your profile information (including subscriptions and avatars) can be downloaded and re-used by other services, either scraped from the HTML interface or in bulk as FOAF files.
- Your notices will be forwarded to users who subscribe to them, including users on another microblogging service.
- Your profile information will be sent to microblogging services for users who subscribe to you or to whom you subscribe.
- Based on your email preferences, you may receive automated email messages for important system events, such as when others subscribe to your notices.
- Based on your email preferences, you may receive an email newsletter. You can opt out of the newsletter if you don't want to receive it.
- In urgent situations, administrators may send you email directly to your registered email address, even if you've requested no notices or newsletter. Administrators will use digitally-signed email.
- This service will comply with court orders to turn over your private information.
{% endapply %}
{% endblock %}
- Almost all the text and files that users upload to this site is available under the site license (see the license block at the bottom of this page). Users agree to the license when they register to use the site for the first time. Typically that means that the data can be copied far and wide, for commercial and non-commercial purposes, and in modified or unmodified form. If you're not OK with that, don't use the service.
The following data items are considered private data that won't be shared with other users, business partners, or the public at large:
- your password
- your email address
- your IM address (AIM, Jabber, or other instant messaging address)
- your phone number
- your "private messages"
- your login credentials (username and password) for other services (Twitter, Facebook, etc.)
- Some private data may be published in aggregate, e.g. "30% of our users are registered with Hotmail addresses."
- Your notices (including files) can be downloaded and re-used by other services, either one-by-one or in bulk as RSS files.
- Your profile information (including subscriptions and avatars) can be downloaded and re-used by other services, either scraped from the HTML interface or in bulk as FOAF files.
- Your notices will be forwarded to users who subscribe to them, including users on another microblogging service.
- Your profile information will be sent to microblogging services for users who subscribe to you or to whom you subscribe.
- Based on your email preferences, you may receive automated email messages for important system events, such as when others subscribe to your notices.
- Based on your email preferences, you may receive an email newsletter. You can opt out of the newsletter if you don't want to receive it.
- In urgent situations, administrators may send you email directly to your registered email address, even if you've requested no notices or newsletter. Administrators will use digitally-signed email.
- This service will comply with court orders to turn over your private information.
{% endapply %}
{% endblock %}
</div>
</div>
</div>
{% endblock %}

View File

@ -2,23 +2,23 @@
{% block title %}Source{% endblock %}
{% block body %}
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## Source
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## Source
This service uses a Free microblogging tool called GNU social. GNU social is available under the GNU Affero General Public License Version 3.0, a Free Software license for network services.
This service uses a Free microblogging tool called GNU social. GNU social is available under the GNU Affero General Public License Version 3.0, a Free Software license for network services.
You can get a copy of the software by following links from the GNU social main site¹. The version of the software that runs on this site is unmodified from that version. The site also depends on certain libraries and other software; these are all bundled in the GNU social repository² and release archive files.
You can get a copy of the software by following links from the GNU social main site¹. The version of the software that runs on this site is unmodified from that version. The site also depends on certain libraries and other software; these are all bundled in the GNU social repository² and release archive files.
## References
## References
- GNU social main site, https://gnu.io
- GNU social repository, https://notabug.org/gnu/gnu-social
{% endapply %}
{% endblock %}
</div>
</div>
- GNU social main site, https://gnu.io
- GNU social repository, https://notabug.org/gnu/gnu-social
{% endapply %}
{% endblock %}
</div>
</div>
{% endblock %}

View File

@ -2,88 +2,88 @@
{% block title %}TOS{% endblock %}
{% block body %}
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## TOS
## The gist
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## TOS
## The gist
We run a service called GNU social and would love for you to use it. Our service is designed to give you as much control and ownership over what goes in your notice stream as possible and encourage you to express yourself freely. However, be responsible in what you post. In particular, make sure that none of the prohibited items listed below appear in your notice stream or get linked to from your notice stream (things like spam, viruses, or hate content).
We run a service called GNU social and would love for you to use it. Our service is designed to give you as much control and ownership over what goes in your notice stream as possible and encourage you to express yourself freely. However, be responsible in what you post. In particular, make sure that none of the prohibited items listed below appear in your notice stream or get linked to from your notice stream (things like spam, viruses, or hate content).
You can review our Public Stream to get a sense of the types of notices that are welcome on our service (or not!). If you find a GNU social account that you believe violates our terms of service, please check our Contact documentation.
You can review our Public Stream to get a sense of the types of notices that are welcome on our service (or not!). If you find a GNU social account that you believe violates our terms of service, please check our Contact documentation.
##Terms of Service
##Terms of Service
The following terms and conditions govern all use of the GNU social website and all content, services and products available at or through the website (taken together, the Website). The Website is owned and operated by xrevan86, saintfury, pztrn (“Operator”). The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, Operators Privacy Policy) and procedures that may be published from time to time on this Site by Operator (collectively, the “Agreement”).
The following terms and conditions govern all use of the GNU social website and all content, services and products available at or through the website (taken together, the Website). The Website is owned and operated by xrevan86, saintfury, pztrn (“Operator”). The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, Operators Privacy Policy) and procedures that may be published from time to time on this Site by Operator (collectively, the “Agreement”).
Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by Operator, acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old.
Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by Operator, acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old.
1. *Your GNU social Account and Site.* If you create a notice stream on the Website, you are responsible for maintaining the security of your account and notice stream, and you are fully responsible for all activities that occur under the account and any other actions taken in connection with the notice stream. You must not describe or assign keywords to your notice stream in a misleading or unlawful manner, including in a manner intended to trade on the name or reputation of others, and Operator may change or remove any description or keyword that it considers inappropriate or unlawful, or otherwise likely to cause Operator liability. You must immediately notify Operator of any unauthorized uses of your notice stream, your account or any other breaches of security. Operator will not be liable for any acts or omissions by You, including any damages of any kind incurred as a result of such acts or omissions.
1. *Your GNU social Account and Site.* If you create a notice stream on the Website, you are responsible for maintaining the security of your account and notice stream, and you are fully responsible for all activities that occur under the account and any other actions taken in connection with the notice stream. You must not describe or assign keywords to your notice stream in a misleading or unlawful manner, including in a manner intended to trade on the name or reputation of others, and Operator may change or remove any description or keyword that it considers inappropriate or unlawful, or otherwise likely to cause Operator liability. You must immediately notify Operator of any unauthorized uses of your notice stream, your account or any other breaches of security. Operator will not be liable for any acts or omissions by You, including any damages of any kind incurred as a result of such acts or omissions.
2. *Responsibility of Contributors.* If you operate a notice stream, comment on a notice stream, post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, “Content”), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that:
2. *Responsibility of Contributors.* If you operate a notice stream, comment on a notice stream, post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, “Content”), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that:
- the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party;
- the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party;
- if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content;
- if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content;
- you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms;
- you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms;
- the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content;
- the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content;
- the Content is not spam, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing);
- the Content is not spam, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing);
- if the Content is machine- or randomly-generated, it is for purposes of direct entertainment, information and/or utility for you or other users, and not for spam,
- if the Content is machine- or randomly-generated, it is for purposes of direct entertainment, information and/or utility for you or other users, and not for spam,
- the Content is not libelous or defamatory (more info on what that means), does not contain threats or incite violence towards individuals or entities, and does not violate the privacy or publicity rights of any third party;
- the Content is not libelous or defamatory (more info on what that means), does not contain threats or incite violence towards individuals or entities, and does not violate the privacy or publicity rights of any third party;
- your notice stream is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, other notice streams and web sites, and similar unsolicited promotional methods;
- your notice stream is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, other notice streams and web sites, and similar unsolicited promotional methods;
- your notice stream is not named in a manner that misleads your readers into thinking that you are another person or company. For example, your notice streams URL or name is not the name of a person other than yourself or company other than your own and you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Operator or otherwise.
- your notice stream is not named in a manner that misleads your readers into thinking that you are another person or company. For example, your notice streams URL or name is not the name of a person other than yourself or company other than your own and you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Operator or otherwise.
By submitting Content to Operator for inclusion on your Website, you grant Operator a world-wide, royalty-free, and non-exclusive license to reproduce, modify, adapt and publish the Content solely for the purpose of displaying, distributing and promoting your notice stream.
By submitting Content to Operator for inclusion on your Website, you grant Operator a world-wide, royalty-free, and non-exclusive license to reproduce, modify, adapt and publish the Content solely for the purpose of displaying, distributing and promoting your notice stream.
By submitting Content to Operator for inclusion on your Website, you grant all readers the right to use, re-use, modify and/or re-distribute the Content under the terms of the CC-BY-3.0.
By submitting Content to Operator for inclusion on your Website, you grant all readers the right to use, re-use, modify and/or re-distribute the Content under the terms of the CC-BY-3.0.
If you delete Content, Operator will use reasonable efforts to remove it from the Website, but you acknowledge that caching or references to the Content may not be made immediately unavailable.
If you delete Content, Operator will use reasonable efforts to remove it from the Website, but you acknowledge that caching or references to the Content may not be made immediately unavailable.
Without limiting any of those representations or warranties, Operator has the right (though not the obligation) to, in Operators sole discretion (i) refuse or remove any content that, in Operators reasonable opinion, violates any Operator policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in Operators sole discretion.
Without limiting any of those representations or warranties, Operator has the right (though not the obligation) to, in Operators sole discretion (i) refuse or remove any content that, in Operators reasonable opinion, violates any Operator policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in Operators sole discretion.
## Responsibility of Website Visitors.
## Responsibility of Website Visitors.
Operator has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that materials content, use or effects. By operating the Website, Operator does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. Operator disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted.
Operator has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that materials content, use or effects. By operating the Website, Operator does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. Operator disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted.
## Content Posted on Other Websites.
## Content Posted on Other Websites.
We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which GNU social links, and that link to GNU social. Operator does not have any control over those external websites and webpages, and is not responsible for their contents or their use. By linking to a external website or webpage, Operator does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. Operator disclaims any responsibility for any harm resulting from your use of external websites and webpages.
Copyright Infringement and DMCA Policy. As Operator asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by GNU social violates your copyright, you are encouraged to notify Operator in accordance with Operators Digital Millennium Copyright Act (”DMCA”) Policy. Operator will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. In the case of a visitor who may infringe or repeatedly infringes the copyrights or other intellectual property rights of Operator or others, Operator may, in its discretion, terminate or deny access to and use of the Website. In the case of such termination, Operator will have no obligation to provide a refund of any amounts previously paid to Operator.
We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which GNU social links, and that link to GNU social. Operator does not have any control over those external websites and webpages, and is not responsible for their contents or their use. By linking to a external website or webpage, Operator does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. Operator disclaims any responsibility for any harm resulting from your use of external websites and webpages.
Copyright Infringement and DMCA Policy. As Operator asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by GNU social violates your copyright, you are encouraged to notify Operator in accordance with Operators Digital Millennium Copyright Act (”DMCA”) Policy. Operator will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. In the case of a visitor who may infringe or repeatedly infringes the copyrights or other intellectual property rights of Operator or others, Operator may, in its discretion, terminate or deny access to and use of the Website. In the case of such termination, Operator will have no obligation to provide a refund of any amounts previously paid to Operator.
## Intellectual Property.
## Intellectual Property.
This Agreement does not transfer from Operator to you any Operator or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with Operator. GNU social, the GNU social logo, and all other trademarks, service marks, graphics and logos used in connection with GNU social, or the Website are trademarks or registered trademarks of Operator or Operators licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any Operator or third-party trademarks.
Changes. Operator reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. Operator may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement.
This Agreement does not transfer from Operator to you any Operator or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with Operator. GNU social, the GNU social logo, and all other trademarks, service marks, graphics and logos used in connection with GNU social, or the Website are trademarks or registered trademarks of Operator or Operators licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any Operator or third-party trademarks.
Changes. Operator reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. Operator may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement.
## Termination.
## Termination.
Operator may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your GNU social account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.
Disclaimer of Warranties. The Website is provided “as is”. Operator and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither Operator nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. If youre actually reading this, heres a treat. You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk.
Operator may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your GNU social account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.
Disclaimer of Warranties. The Website is provided “as is”. Operator and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither Operator nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. If youre actually reading this, heres a treat. You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk.
## Limitation of Liability.
## Limitation of Liability.
In no event will Operator, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement or substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to Operator under this agreement during the twelve (12) month period prior to the cause of action. Operator shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law.
General Representation and Warranty. You represent and warrant that (i) your use of the Website will be in strict accordance with the Operator Privacy Policy, with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party.
In no event will Operator, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement or substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to Operator under this agreement during the twelve (12) month period prior to the cause of action. Operator shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law.
General Representation and Warranty. You represent and warrant that (i) your use of the Website will be in strict accordance with the Operator Privacy Policy, with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party.
## Indemnification.
## Indemnification.
You agree to indemnify and hold harmless Operator, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys fees, arising out of your use of the Website, including but not limited to out of your violation this Agreement.
## Miscellaneous.
You agree to indemnify and hold harmless Operator, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys fees, arising out of your use of the Website, including but not limited to out of your violation this Agreement.
## Miscellaneous.
This Agreement constitutes the entire agreement between Operator and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of Operator, or by the posting by Operator of a revised version. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; Operator may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns.
This Agreement constitutes the entire agreement between Operator and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of Operator, or by the posting by Operator of a revised version. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; Operator may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns.
Originally published by Automattic, Inc. as the WordPress.com Terms of Service and made available by them under the Creative Commons Attribution-ShareAlike 3.0 License. Modifications to remove reference to "VIP services", rename "blog" to "notice stream", remove the choice-of-venue clause, and add variables specific to instances of this software made by Control Yourself, Inc. and made available under the terms of the same license.
{% endapply %}
{% endblock %}
</div>
</div>
Originally published by Automattic, Inc. as the WordPress.com Terms of Service and made available by them under the Creative Commons Attribution-ShareAlike 3.0 License. Modifications to remove reference to "VIP services", rename "blog" to "notice stream", remove the choice-of-venue clause, and add variables specific to instances of this software made by Control Yourself, Inc. and made available under the terms of the same license.
{% endapply %}
{% endblock %}
</div>
</div>
{% endblock %}

View File

@ -2,28 +2,28 @@
{% block title %}Version{% endblock %}
{% block body %}
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## GNU social 3
{{ parent() }}
<div class='content'>
<div class='markd markd-single'>
{% block markdown %}
{% apply markdown_to_html %}
## GNU social 3
This site is powered by GNU social version 3, Copyright 2010 Free Software Foundation, Inc.
This site is powered by GNU social version 3, Copyright 2010 Free Software Foundation, Inc.
## Contributors
## Contributors
See https://notabug.org/diogo/gnu-social/src/nightly/CREDITS.md for a full list of contributors.
See https://notabug.org/diogo/gnu-social/src/nightly/CREDITS.md for a full list of contributors.
##License
##License
GNU social 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 3 of the License, or (at your option) any later version.
GNU social 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 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 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 this program. If not, see https://www.gnu.org/licenses/agpl.html.
{% endapply %}
{% endblock %}
</div>
</div>
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/agpl.html.
{% endapply %}
{% endblock %}
</div>
</div>
{% endblock %}

View File

@ -72,7 +72,8 @@
<nav class='main-nav'>
<ul>
<li>
<a href="{{ path('main_public') }}" class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'>Timeline</a>
<a href="{{ path('main_public') }}"
class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'>Timeline</a>
</li>
</ul>
</nav>
@ -80,11 +81,13 @@
<nav class='main-nav'>
<ul>
<li>
<a href="{{ path('main_public') }}" class='hover-effect {{ active('main_public') }}'>Public</a>
<a href="{{ path('main_public') }}"
class='hover-effect {{ active('main_public') }}'>Public</a>
</li>
{% if user_nickname is defined %}
<li>
<a href="{{ path("home_all", {'nickname' : user_nickname}) }}" class='hover-effect {{ active("home_all") }}'>Home</a>
<a href="{{ path("home_all", {'nickname' : user_nickname}) }}"
class='hover-effect {{ active("home_all") }}'>Home</a>
</li>
{% endif %}
<li>

View File

@ -28,51 +28,52 @@
<div class="content">
{% if post_form is defined %}
{{ form_start(post_form) }}
<div class="create-notice">
<div class="target">
<div class="target-top">
{{ form_label(post_form.to) }}
<div class="create-notice">
<div class="target">
<div class="target-top">
{{ form_label(post_form.to) }}
</div>
<div class="target-bot">
{{ form_widget(post_form.to) }}
</div>
</div>
<div class="create-right">
<div class="create-top-right">
<div class="scope">
{{ form_row(post_form.visibility) }}
</div>
<div class="target-bot">
{{ form_widget(post_form.to) }}
<div class="tabs">
{% for tab in tabs %}
<a href={{ path(tab['href']) }}>{{ tab['title'] }}</a>
{% endfor %}
</div>
</div>
<div class="create-right">
<div class="create-top-right">
<div class="scope">
{{ form_row(post_form.visibility) }}
</div>
<div class="tabs">
{% for tab in tabs %}
<a href={{ path(tab['href']) }}>{{ tab['title'] }}</a>
{% endfor %}
</div>
<div class="input-wrapper">
<div class="content-input">
{{ form_row(post_form.content) }}
</div>
<div class="input-wrapper">
<div class="content-input">
{{ form_row(post_form.content) }}
</div>
</div>
<div class="notice-options">
<div class="attachments">
{{ form_widget(post_form.attachments) }}
<label for="{{ post_form.attachments.vars.id }}">
{{ icon('attach', 'icon icon-attach') | raw }}
</label>
</div>
<div class="notice-options">
<div class="attachments">
{{ form_widget(post_form.attachments) }}
<label for="{{ post_form.attachments.vars.id }}">
{{ icon('attach', 'icon icon-attach') | raw }}
</label>
</div>
<div class="post">
{{ form_row(post_form.post) }}
</div>
<div class="post">
{{ form_row(post_form.post) }}
</div>
</div>
</div>
</div>
{{ form_end(post_form) }}
{% endif %}
<div class="main">
<nav class='main-nav'>
<ul>
<li>
<a href="{{ path('main_public') }}" class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'>Timeline</a>
<a href="{{ path('main_public') }}"
class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'>Timeline</a>
</li>
</ul>
</nav>
@ -80,20 +81,23 @@
<nav class='main-nav'>
<ul>
<li>
<a href="{{ path('main_public') }}" class='hover-effect {{ active('main_public') }}'>Public</a>
<a href="{{ path('main_public') }}"
class='hover-effect {{ active('main_public') }}'>Public</a>
</li>
{% if user_nickname is defined %}
<li>
<a href="{{ path("home_all", {'nickname' : user_nickname}) }}" class='hover-effect {{ active("home_all") }}'>Home</a>
</li>
<li>
<a href="{{ path("home_all", {'nickname' : user_nickname}) }}"
class='hover-effect {{ active("home_all") }}'>Home</a>
</li>
{% endif %}
<li>
<a href="{{ path('main_all') }}" class='hover-effect {{ active('main_all') }}'>Network</a>
</li>
{% if main_nav_tabs is defined %}
{% if main_nav_tabs is defined %}
{% for tab in main_nav_tabs %}
<li>
<a href="{{ path(tab['route']) }}" class='hover-effect {{ active(tab['route']) }}' >{{ tab['title'] }}</a>
<a href="{{ path(tab['route']) }}"
class='hover-effect {{ active(tab['route']) }}'>{{ tab['title'] }}</a>
</li>
{% endfor %}
{% endif %}
@ -103,7 +107,7 @@
<div class="notes">
{% if notes is defined and notes is not empty %}
{% for conversation in notes %}
{% include '/note/view.html.twig' with {'note': conversation['note'], 'have_user': have_user, 'replies': conversation['replies']} only %}
{% include '/note/view.html.twig' with {'note': conversation['note'], 'have_user': have_user, 'replies': conversation['replies']} only %}
{% endfor %}
{% else %}
<h1>{% trans %}No notes here.{% endtrans %}</h1>

View File

@ -32,7 +32,9 @@
<nav class='main-nav'>
<ul>
<li>
<a href="{{ path('main_public') }}" class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'><p>Reverse Favourites</p></a>
<a href="{{ path('main_public') }}"
class='hover-effect {{ active('main_public', 'main_all', "home_all") }}'><p>Reverse
Favourites</p></a>
</li>
</ul>
</nav>
@ -40,11 +42,12 @@
<div class="timeline">
{% if notes is defined and notes is not empty %}
{% for note in notes %}
{% set id = note.getId() - 1 %}
{% include '/note/view.html.twig' with {'note': note, 'have_user': have_user} only %}
{% set id = note.getId() - 1 %}
{% include '/note/view.html.twig' with {'note': note, 'have_user': have_user} only %}
{% endfor %}
{% else %}
<h1>This is {{ user_nickname }}'s reverse favorites stream, but nobody favored {{ user_nickname }}'s notes yet.</h1>
<h1>This is {{ user_nickname }}'s reverse favorites stream, but nobody
favored {{ user_nickname }}'s notes yet.</h1>
{% endif %}
</div>
</div>

View File

@ -1,36 +1,36 @@
{% extends 'stdgrid.html.twig' %}
{% block meta %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block title %}Welcome!{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/replies/replies.css') }}">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_small.css') }}"
media="screen and (max-width: 750px)">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/replies/replies.css') }}">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/network/public_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block header %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block left %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block body %}
{{ parent() }}
<div class="content">
<div class="main">
{% include '/note/view.html.twig' with {'note': note, 'have_user': have_user} only %}
{{ form(reply) }}
{{ parent() }}
<div class="content">
<div class="main">
{% include '/note/view.html.twig' with {'note': note, 'have_user': have_user} only %}
{{ form(reply) }}
</div>
</div>
</div>
{% endblock body %}

View File

@ -1,46 +1,46 @@
<div class="note">
<div class="note-info">
{% set nickname = note.getActorNickname() %}
<a href="{{ path('settings_avatar') }}">
<img class="avatar" src="{{ note.getAvatarUrl() }}" alt="{{ nickname }}'s avatar">
</a>
<b>{{ nickname }}</b>
{% set reply_to = note.getReplyToNickname() %}
{% if reply_to is not null and not skip_reply_to is defined %}
{% trans with {'%name%': reply_to}%} in reply to %name% {% endtrans %}
{% endif %}
</div>
<div class="note-content">
{% block markdown %}
{% apply markdown_to_html %}
{{ note.getContent() }}
{% endapply %}
{% endblock %}
<div class="note-other-content">
{% for other in get_note_other_content(note) %}
{% include '/'~ other.name ~ '/view.html.twig' with {'vars': other.vars} only %}
{% endfor %}
</div>
{% if hide_attachments is not defined %}
<div class="note-attachments">
{% for attachment in note.getAttachments() %}
{% include '/attachments/view.html.twig' with {'attachment': attachment} %}
{% endfor %}
</div>
{% endif %}
</div>
<div class="note-actions">
{# {% if have_user %} #}
{# {\#{% for act in get_note_actions(note) %}#\} #}
{# {\#{{ form(act) }}#\} #}
{# {\#{% endfor %}#\} #}
{# {% endif %} #}
</div>
{% if replies is defined %}
<div class="replies">
{% for conversation in replies %}
{% include '/note/view.html.twig' with {'note': conversation['note'], 'skip_reply_to': true, 'have_user': have_user, 'replies': conversation['replies']} only %}
{% endfor %}
<div class="note-info">
{% set nickname = note.getActorNickname() %}
<a href="{{ path('settings_avatar') }}">
<img class="avatar" src="{{ note.getAvatarUrl() }}" alt="{{ nickname }}'s avatar">
</a>
<b>{{ nickname }}</b>
{% set reply_to = note.getReplyToNickname() %}
{% if reply_to is not null and not skip_reply_to is defined %}
{% trans with {'%name%': reply_to} %} in reply to %name% {% endtrans %}
{% endif %}
</div>
{% endif %}
<div class="note-content">
{% block markdown %}
{% apply markdown_to_html %}
{{ note.getContent() }}
{% endapply %}
{% endblock %}
<div class="note-other-content">
{% for other in get_note_other_content(note) %}
{% include '/'~ other.name ~ '/view.html.twig' with {'vars': other.vars} only %}
{% endfor %}
</div>
{% if hide_attachments is not defined %}
<div class="note-attachments">
{% for attachment in note.getAttachments() %}
{% include '/attachments/view.html.twig' with {'attachment': attachment} %}
{% endfor %}
</div>
{% endif %}
</div>
<div class="note-actions">
{# {% if have_user %} #}
{# {\#{% for act in get_note_actions(note) %}#\} #}
{# {\#{{ form(act) }}#\} #}
{# {\#{% endfor %}#\} #}
{# {% endif %} #}
</div>
{% if replies is defined %}
<div class="replies">
{% for conversation in replies %}
{% include '/note/view.html.twig' with {'note': conversation['note'], 'skip_reply_to': true, 'have_user': have_user, 'replies': conversation['replies']} only %}
{% endfor %}
</div>
{% endif %}
</div>

View File

@ -3,11 +3,11 @@
{% block title %}Profile Color Settings{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock body %}
{% block form %}
<div class='form'>
{{ form(form) }}
</div>
<div class='form'>
{{ form(form) }}
</div>
{% endblock form %}

View File

@ -1,6 +1,5 @@
<a class="pcolor">
{% if vars is not empty %}
<div class="profile-color" style="border-color: {{ vars.color }}"></div>
{% endif %}
</a>
<a class="pcolor">
{% if vars is not empty %}
<div class="profile-color" style="border-color: {{ vars.color }}"></div>
{% endif %}
</a>

View File

@ -8,39 +8,39 @@
{% block title %}Log in!{% endblock %}
{% block body %}
<div class='content'>
<form method="post">
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<div class='content'>
<form method="post">
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
{% if app.user %}
<div class="mb-3">
You are logged in as {{ app.user.username }}, <a
href="{{ path('app_logout') }}">Logout</a>
</div>
{% endif %}
<div class="register-info">
<label for="inputNickname">Nickname</label>
<input type="text" value="{{ last_username }}" name="nickname" id="inputNickname"
class="form-control" required autofocus>
<label for="inputPassword">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" required>
</div>
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<div class="checkbox mb-3">
<label>
<input type="checkbox" name="_remember_me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary" type="submit">
Sign in
</button>
</form>
{% if app.user %}
<div class="mb-3">
You are logged in as {{ app.user.username }}, <a
href="{{ path('app_logout') }}">Logout</a>
</div>
{% endif %}
<div class="register-info">
<label for="inputNickname">Nickname</label>
<input type="text" value="{{ last_username }}" name="nickname" id="inputNickname"
class="form-control" required autofocus>
<label for="inputPassword">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" required>
</div>
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<div class="checkbox mb-3">
<label>
<input type="checkbox" name="_remember_me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary" type="submit">
Sign in
</button>
</form>
</div>
{% endblock body %}
{% block javascripts %}{% endblock %}

View File

@ -1,43 +1,53 @@
{% extends 'base.html.twig' %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}" media="screen and (max-width: 750px)">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block nav %}
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup and Restore</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup
and Restore</a>
</li>
</ul>
</nav>
{% endblock %}
{% block body %}
<div class="content">
{{ form(form) }}
</div>
<div class="content">
{{ form(form) }}
</div>
{% endblock %}

View File

@ -1,43 +1,53 @@
{% extends 'base.html.twig' %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}" media="screen and (max-width: 750px)">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block nav %}
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup and Restore</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup
and Restore</a>
</li>
</ul>
</nav>
{% endblock %}
{% block body %}
<div class="content">
{{ form(form) }}
</div>
<div class="content">
{{ form(form) }}
</div>
{% endblock %}

View File

@ -1,43 +1,53 @@
{% extends 'base.html.twig' %}
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}" media="screen and (max-width: 750px)">
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block nav %}
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_profile') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'settings_' %}active{% endif %}'>Settings</a>
</li>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_' %}active{% endif %}'>Account</a>
</li>
<li>
<a href="{{ path('doc_tags') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'doc_tags' %}active{% endif %}'>Misc</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}" class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup and Restore</a>
</li>
</ul>
</nav>
<nav class='set-nav2'>
<ul>
<li>
<a href="{{ path('account_email') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_email' %}active{% endif %}'>Email</a>
</li>
<li>
<a href="{{ path('account_pass') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_pass' %}active{% endif %}'>Password</a>
</li>
<li>
<a href="{{ path('account_bak') }}"
class='hover-effect {% if app.request.attributes.get('_route') starts with 'account_bak' %}active{% endif %}'>Backup
and Restore</a>
</li>
</ul>
</nav>
{% endblock %}
{% block body %}
<div class="content">
{{ form(form) }}
</div>
<div class="content">
{{ form(form) }}
</div>
{% endblock %}

View File

@ -3,24 +3,24 @@
{% block title %}Avatar Settings{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link href="{{ asset('assets/css/cropperjs/cropper.css') }}" rel="stylesheet">
<script src="{{ asset('assets/javascript/cropperjs/cropper.js') }}"></script>
{{ parent() }}
<link href="{{ asset('assets/css/cropperjs/cropper.css') }}" rel="stylesheet">
<script src="{{ asset('assets/javascript/cropperjs/cropper.js') }}"></script>
{% endblock %}
{% block body %}
{{ parent() }}
{{ parent() }}
{% endblock body %}
{% block form %}
<div class='form'>
{{ form(avatar) }}
<div id="img-container">
<img id="img-cropped">
</div>
</div>
<div class='form'>
{{ form(avatar) }}
<div id="img-container">
<img id="img-cropped">
</div>
</div>
{% endblock form %}
{% block javascripts %}
<script type="text/javascript" src="{{ asset('assets/javascript/cropping.js') }}"></script>
<script type="text/javascript" src="{{ asset('assets/javascript/cropping.js') }}"></script>
{% endblock javascripts %}

View File

@ -8,9 +8,12 @@
{% block stylesheets %}
{{ parent() }}
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}" media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/settings/settings_small.css') }}"
media="screen and (max-width: 750px)">
{% endblock %}
{% block header %}
@ -28,13 +31,16 @@
<nav class='set-nav'>
<ul>
<li>
<a href="{{ path('settings_personal_info') }}" class='hover-effect {{ active('settings_personal_info', 'settings_avatar', 'settings_profile_') }}'>Profile</a>
<a href="{{ path('settings_personal_info') }}"
class='hover-effect {{ active('settings_personal_info', 'settings_avatar', 'settings_profile_') }}'>Profile</a>
</li>
<li>
<a href="{{ path('settings_account') }}" class='hover-effect {{ active('settings_account') }}'>Account</a>
<a href="{{ path('settings_account') }}"
class='hover-effect {{ active('settings_account') }}'>Account</a>
</li>
<li>
<a href="{{ path('settings_notifications') }}" class='hover-effect {{ active('settings_notifications') }}'>Notifications</a>
<a href="{{ path('settings_notifications') }}"
class='hover-effect {{ active('settings_notifications') }}'>Notifications</a>
</li>
</ul>
</nav>

View File

@ -3,7 +3,7 @@
{% block title %}Notification Settings{% endblock %}
{% block stylesheets %}
{{ parent() }}
{{ parent() }}
{% endblock %}
{% block body %}
@ -18,7 +18,8 @@
<div id='form-tabs'>
<ul>
{% for transport, form in tabbed_forms %}
<input type="radio" id="toggle-{{ transport }}" name="tabs" value="toggle-{{ transport }}" {% if transport == "email" %} checked {% endif %}>
<input type="radio" id="toggle-{{ transport }}" name="tabs"
value="toggle-{{ transport }}" {% if transport == "email" %} checked {% endif %}>
<label for="toggle-{{ transport }}" id='tabs'>
{{ transport }}
</label>

View File

@ -18,11 +18,13 @@
class='hover-effect {{ active('settings_personal_info') }}'>Personal Info</a>
</li>
<li>
<a href="{{ path('settings_avatar') }}" class='hover-effect {{ active('settings_avatar') }}'>Avatar</a>
<a href="{{ path('settings_avatar') }}"
class='hover-effect {{ active('settings_avatar') }}'>Avatar</a>
</li>
{% for tab in profile_tabs %}
<li>
<a href="{{ path(tab['route']) }}" class='hover-effect {{ active(tab['route']) }}' >{{ tab['title'] }}</a>
<a href="{{ path(tab['route']) }}"
class='hover-effect {{ active(tab['route']) }}'>{{ tab['title'] }}</a>
</li>
{% endfor %}
</ul>

View File

@ -1,72 +1,74 @@
{% if app.user %}
{% if app.user %}
<div id='left-panel'>
<input type="checkbox" id="toggle" class="larger" autofocus>
<input type="checkbox" id="toggle" class="larger" autofocus>
<div class="icon-menu">
<label for="toggle" id='menu' tabindex="0"></label>
<label for="toggle" id='menu' tabindex="0"></label>
</div>
<div class='navbar'>
<div class="left-nav">
<div class='profile'>
{% for extra in profile_extras %}
{% include '/'~ extra.name ~ '/view.html.twig' with {'vars': extra.vars} only %}
{% endfor %}
<a href="{{ path('settings_avatar') }}">
<img src='{{ user_avatar }}' alt="Your avatar." class="icon icon-avatar">
</a>
<a href="{{ path('settings_personal_info') }}">
<div class="info">
<b id="nick">{{ user_nickname }}</b>
<div class="tags">
{% if user_tags %}
{% for tag in user_tags %}
<a href='#'><i> #{{ tag }} </i></a>
{% endfor %}
{% else %}
<i> {{ '(No tags)' | trans }} </i>
{% endif %}
</div>
<div class="stats">
<span> <b> {{ user_followers }} </b> {{'Followers' | trans}} </span>
<span> <b> {{ user_followed }} </b> {{'Followed' | trans}} </span>
</div>
</div>
</a>
</div>
<a href='#'>Messages</a>
<a href="{{ path("replies", {'nickname' : user_nickname}) }}" class='hover-effect {{ active("replies") }}'>Replies</a>
{% for link in handle_event('InsertLeftPanelLink', user_nickname) %}
{{ link | raw }}
{% endfor %}
<a href="{{ path('settings_personal_info') }}" class='hover-effect {{ active('settings_') }}'>Settings</a>
<a href='{{ path('logout') }}'>Logout</a>
</div>
<div class="footer">
<a href="{{ path('doc_faq') }}" class='hover-effect {{ active('doc_faq') }}'>FAQ</a>
<a href="{{ path('doc_tos') }}" class='hover-effect {{ active('doc_tos') }}'>TOS</a>
<a href="{{ path('doc_privacy') }}" class='hover-effect {{ active('doc_privacy') }}'>Privacy</a>
<a href="{{ path('doc_source') }}" class='hover-effect {{ active('doc_source') }}'>Source</a>
<a href="{{ path('doc_version') }}" class='hover-effect {{ active('doc_version') }}'>Version</a>
</div>
<div class="left-nav">
<div class='profile'>
{% for extra in profile_extras %}
{% include '/'~ extra.name ~ '/view.html.twig' with {'vars': extra.vars} only %}
{% endfor %}
<a href="{{ path('settings_avatar') }}">
<img src='{{ user_avatar }}' alt="Your avatar." class="icon icon-avatar">
</a>
<a href="{{ path('settings_personal_info') }}">
<div class="info">
<b id="nick">{{ user_nickname }}</b>
<div class="tags">
{% if user_tags %}
{% for tag in user_tags %}
<a href='#'><i> #{{ tag }} </i></a>
{% endfor %}
{% else %}
<i> {{ '(No tags)' | trans }} </i>
{% endif %}
</div>
<div class="stats">
<span> <b> {{ user_followers }} </b> {{ 'Followers' | trans }} </span>
<span> <b> {{ user_followed }} </b> {{ 'Followed' | trans }} </span>
</div>
</div>
</a>
</div>
<a href='#'>Messages</a>
<a href="{{ path("replies", {'nickname' : user_nickname}) }}"
class='hover-effect {{ active("replies") }}'>Replies</a>
{% for link in handle_event('InsertLeftPanelLink', user_nickname) %}
{{ link | raw }}
{% endfor %}
<a href="{{ path('settings_personal_info') }}"
class='hover-effect {{ active('settings_') }}'>Settings</a>
<a href='{{ path('logout') }}'>Logout</a>
</div>
<div class="footer">
<a href="{{ path('doc_faq') }}" class='hover-effect {{ active('doc_faq') }}'>FAQ</a>
<a href="{{ path('doc_tos') }}" class='hover-effect {{ active('doc_tos') }}'>TOS</a>
<a href="{{ path('doc_privacy') }}" class='hover-effect {{ active('doc_privacy') }}'>Privacy</a>
<a href="{{ path('doc_source') }}" class='hover-effect {{ active('doc_source') }}'>Source</a>
<a href="{{ path('doc_version') }}" class='hover-effect {{ active('doc_version') }}'>Version</a>
</div>
</div>
</div>
{% else %}
{% else %}
<div id='left-panel'>
<input type="checkbox" id="toggle">
<input type="checkbox" id="toggle">
<div class="icon-menu">
<label for="toggle" id='menu'></label>
<label for="toggle" id='menu'></label>
</div>
<div class='navbar'>
<div class="left-nav">
<a href="{{ path('login') }}" class='hover-effect {{ active('login') }}'>Login</a>
<a href="{{ path('register') }}">Register</a>
</div>
<div class="footer">
<a href="{{ path('doc_faq') }}" class='hover-effect {{ active('doc_faq') }}'>FAQ</a>
<a href="{{ path('doc_tos') }}" class='hover-effect {{ active('doc_tos') }}'>TOS</a>
<a href="{{ path('doc_privacy') }}" class='hover-effect {{ active('doc_privacy') }}'>Privacy</a>
<a href="{{ path('doc_source') }}" class='hover-effect {{ active('doc_source') }}'>Source</a>
<a href="{{ path('doc_version') }}" class='hover-effect {{ active('doc_version') }}'>Version</a>
</div>
<div class="left-nav">
<a href="{{ path('login') }}" class='hover-effect {{ active('login') }}'>Login</a>
<a href="{{ path('register') }}">Register</a>
</div>
<div class="footer">
<a href="{{ path('doc_faq') }}" class='hover-effect {{ active('doc_faq') }}'>FAQ</a>
<a href="{{ path('doc_tos') }}" class='hover-effect {{ active('doc_tos') }}'>TOS</a>
<a href="{{ path('doc_privacy') }}" class='hover-effect {{ active('doc_privacy') }}'>Privacy</a>
<a href="{{ path('doc_source') }}" class='hover-effect {{ active('doc_source') }}'>Source</a>
<a href="{{ path('doc_version') }}" class='hover-effect {{ active('doc_version') }}'>Version</a>
</div>
</div>
</div>
{% endif %}
{% endif %}

View File

@ -1,3 +1,6 @@
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left_small.css') }}" media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/left/left_small.css') }}"
media="screen and (max-width: 750px)">

View File

@ -1,3 +1,6 @@
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right.css') }}" media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right_mid.css') }}" media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right_small.css') }}" media="screen and (max-width: 750px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right.css') }}"
media="screen and (min-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right_mid.css') }}"
media="screen and (max-width: 1300px)">
<link rel='stylesheet' type='text/css' href="{{ asset('assets/css/right/right_small.css') }}"
media="screen and (max-width: 750px)">