dispy-dark not experimental. start implementing fpostit
Signed-off-by: Simon L'nu <simon.lnu@gmail.com>
This commit is contained in:
parent
84686a2698
commit
2c43120129
|
@ -0,0 +1,4 @@
|
|||
{{ if $lastusers_title }}
|
||||
<h3>PostIt to Friendica</h3>
|
||||
<div style="padding-left: 8px;"><span >Post to Friendica from anywhere by bookmarking this <a href="$fostitJS" title="PostIt">Link</a>.</span></div>
|
||||
{{ endif }}
|
|
@ -0,0 +1,8 @@
|
|||
fpostit
|
||||
|
||||
original author: Devlon Duthied
|
||||
|
||||
see his blog posting:
|
||||
http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/
|
||||
|
||||
original published at github https://github.com/duthied/Friendika-Bookmarklet
|
|
@ -0,0 +1,14 @@
|
|||
javascript: (function() {
|
||||
the_url = 'view/theme/dispy-dark/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' +
|
||||
encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ?
|
||||
document.getSelection() : document.selection.createRange().text));
|
||||
a_funct = function() {
|
||||
if (!window.open(the_url, 'fpostit','location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) {
|
||||
location.href = the_url
|
||||
};
|
||||
if (/Firefox/.test(navigator.userAgent)) {
|
||||
setTimeout(a_funct, 0)
|
||||
} else {
|
||||
a_funct();
|
||||
}
|
||||
})();"
|
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
if (!isset($_POST["friendica_acct_name"])) $_POST["friendica_acct_name"] = '';
|
||||
if (!isset($_COOKIE['username'])) $_COOKIE['username'] = '';
|
||||
if (!isset($_COOKIE['password'])) $_COOKIE['password'] = '';
|
||||
if (!isset($hostname)) $hostname = '';
|
||||
if (!isset($username)) $username = '';
|
||||
|
||||
|
||||
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
|
||||
setcookie("username", $_POST["friendica_acct_name"], time()+60*60*24*300);
|
||||
setcookie("password", $_POST["friendica_password"], time()+60*60*24*300);
|
||||
}
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0px;
|
||||
}
|
||||
.wrap1 {
|
||||
padding: 2px 5px;
|
||||
background-color: #000;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.wrap2 {
|
||||
margin-left: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.logo {
|
||||
margin-left: 3px;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
h2 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.error {
|
||||
background-color: #FFFF66;
|
||||
font-size: 12px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
|
||||
if (isset($_GET['title'])) {
|
||||
$title = $_GET['title'];
|
||||
}
|
||||
if (isset($_GET['text'])) {
|
||||
$text = $_GET['text'];
|
||||
}
|
||||
if (isset($_GET['url'])) {
|
||||
$url = $_GET['url'];
|
||||
}
|
||||
|
||||
if ((isset($title)) && (isset($text)) && (isset($url))) {
|
||||
$content = "$title\nsource:$url\n\n$text";
|
||||
} else {
|
||||
$content = $_POST['content'];
|
||||
}
|
||||
|
||||
if (isset($_POST['submit'])) {
|
||||
|
||||
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
|
||||
$acctname = $_POST["friendica_acct_name"];
|
||||
$tmp_account_array = explode("@", $acctname);
|
||||
if (isset($tmp_account_array[1])) {
|
||||
$username = $tmp_account_array[0];
|
||||
$hostname = $tmp_account_array[1];
|
||||
}
|
||||
$password = $_POST["friendica_password"];
|
||||
$content = $_POST["content"];
|
||||
|
||||
$url = "http://" . $hostname . '/api/statuses/update';
|
||||
$data = array('status' => $content);
|
||||
|
||||
// echo "posting to: $url<br/>";
|
||||
|
||||
$c = curl_init();
|
||||
curl_setopt($c, CURLOPT_URL, $url);
|
||||
curl_setopt($c, CURLOPT_USERPWD, "$username:$password");
|
||||
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
|
||||
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
|
||||
$c_result = curl_exec($c);
|
||||
if(curl_errno($c)){
|
||||
$error = curl_error($c);
|
||||
showForm($error, $content);
|
||||
}
|
||||
|
||||
curl_close($c);
|
||||
if (!isset($error)) {
|
||||
echo '<script language="javascript" type="text/javascript">window.close();</script>';
|
||||
}
|
||||
|
||||
} else {
|
||||
$error = "Missing account name and/or password. Please try again.";
|
||||
showForm($error, $content);
|
||||
}
|
||||
|
||||
} else {
|
||||
showForm(null, $content);
|
||||
}
|
||||
|
||||
function showForm($error, $content) {
|
||||
$username_cookie = $_COOKIE['username'];
|
||||
$password_cookie = $_COOKIE['password'];
|
||||
|
||||
echo <<<EOF
|
||||
<div class="wrap1">
|
||||
<h2><img class="logo" src="friendica-32.png" align="middle" />Friendica Bookmarklet</h2>
|
||||
</div>
|
||||
|
||||
<div class="wrap2">
|
||||
<form method="post" action="{$_SERVER['PHP_SELF']}">
|
||||
Enter the email address of the Friendica Account that you want to cross-post to: (example: user@friendica.org)<br /><br />
|
||||
Account ID: <input type="text" name="friendica_acct_name" value="{$username_cookie}" size="50" /><br />
|
||||
Password: <input type="password" name="friendica_password" value="{$password_cookie}" size="50" /><br />
|
||||
<textarea name="content" id="content" rows="6" cols="70">{$content}</textarea><br />
|
||||
<input type="submit" value="PostIt!" name="submit" />  <span class="error">$error</span>
|
||||
</form>
|
||||
<p></p>
|
||||
</div>
|
||||
EOF;
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -60,6 +60,9 @@ option {
|
|||
padding: 3px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
li {
|
||||
padding: 0 0 0 2px;
|
||||
}
|
||||
/* remember to define focus styles! */
|
||||
:focus {
|
||||
outline: 0;
|
||||
|
@ -200,6 +203,10 @@ input[type=submit] {
|
|||
.action {
|
||||
margin: 5px 0;
|
||||
}
|
||||
.tool {
|
||||
margin: 5px 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -688,12 +695,17 @@ aside #viewcontacts {
|
|||
padding:.2em .5em;
|
||||
}
|
||||
#netsearch-box {
|
||||
margin: 30px 0px;
|
||||
margin: 20px 0px 30px;
|
||||
width: 150px;
|
||||
}
|
||||
#netsearch-box #search-submit {
|
||||
margin: 5px 0px 0px 0px;
|
||||
}
|
||||
.ttright {
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* contacts block
|
||||
*/
|
||||
|
@ -1819,10 +1831,12 @@ div[id$="wrapper"] br {
|
|||
* contacts selector
|
||||
*/
|
||||
.group-delete-wrapper {
|
||||
margin: -31px 122px 0 0;
|
||||
margin: -31px 50px 0 0;
|
||||
float: right;
|
||||
}
|
||||
|
||||
/*.group-delete-icon {
|
||||
margin: 0 0 0 10px;
|
||||
}*/
|
||||
#group-edit-submit-wrapper {
|
||||
margin: 0 0 10px 0;
|
||||
display: inline;
|
||||
|
@ -1862,6 +1876,7 @@ div[id$="wrapper"] br {
|
|||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* profile
|
||||
*/
|
||||
|
@ -2096,13 +2111,13 @@ div[id$="wrapper"] br {
|
|||
#group-sidebar {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.group-selected, .nets-selected {
|
||||
.group-selected, .nets-selected, .fileas-selected {
|
||||
padding: 3px;
|
||||
color: #2e2f2e;
|
||||
background: #88a9d2;
|
||||
font-weight: bold;
|
||||
}
|
||||
.group-selected:hover, .nets-selected:hover {
|
||||
.group-selected:hover, .nets-selected:hover, .fileas-selected:hover {
|
||||
color: #2e2f2e;
|
||||
}
|
||||
.groupsideedit {
|
||||
|
@ -2172,13 +2187,7 @@ div[id$="wrapper"] br {
|
|||
.nets-all {
|
||||
margin-left: 0px;
|
||||
}
|
||||
#netsearch-box {
|
||||
margin-top: 20px;
|
||||
width: 150px;
|
||||
}
|
||||
#netsearch-box #search-submit {
|
||||
margin: 5px 0px 0px 0px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ADMIN
|
||||
|
@ -2794,6 +2803,29 @@ footer {
|
|||
.network-star.icon.starred {
|
||||
display: inline-block;
|
||||
}
|
||||
#fileas-sidebar {
|
||||
|
||||
}
|
||||
.fileas-ul {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ADDONS THEMING
|
||||
*/
|
||||
|
||||
#sidebar-page-list {
|
||||
|
||||
}
|
||||
#sidebar-page-list ul {
|
||||
padding: 0;
|
||||
margin: 5px 0;
|
||||
}
|
||||
#sidebar-page-list li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
||||
@media handheld {
|
||||
|
|
|
@ -127,3 +127,30 @@ $(document).ready(function() {
|
|||
</script>
|
||||
EOT;
|
||||
|
||||
function dispy_community_info() {
|
||||
$a = get_app();
|
||||
|
||||
$fostitJS = "javascript: (function() {
|
||||
the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy-dark/fpostit/fpostit.php?url=' +
|
||||
encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' +
|
||||
encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ?
|
||||
document.getSelection() : document.selection.createRange().text));
|
||||
a_funct = function() {
|
||||
if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) {
|
||||
location.href = the_url;
|
||||
}
|
||||
if (/Firefox/.test(navigator.userAgent)) {
|
||||
setTimeout(a_funct, 0)
|
||||
} else {
|
||||
a_funct();
|
||||
}
|
||||
})();" ;
|
||||
|
||||
$aside['$fostitJS'] = $fostitJS;
|
||||
$url = $a->get_baseurl($ssl_state);
|
||||
$aside['$url'] = $url;
|
||||
|
||||
$tpl = file_get_contents(dirname(__file__).'/communityhome.tpl');
|
||||
$a->page['right_aside'] = replace_macros($tpl, $aside);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,9 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick
|
|||
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
|
||||
</div>
|
||||
{{ endif }}
|
||||
{{ if $item.filer }}
|
||||
<div class="wall-item-filer-wrapper"><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.star.filer"></a></div>
|
||||
{{ endif }}
|
||||
{{ if $item.plink }}
|
||||
<div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></div>
|
||||
{{ endif }}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
{{ if $lastusers_title }}
|
||||
<h3>PostIt to Friendica</h3>
|
||||
<div style="padding-left: 8px;"><span >Post to Friendica from anywhere by bookmarking this <a href="$fostitJS" title="PostIt">Link</a>.</span></div>
|
||||
{{ endif }}
|
|
@ -0,0 +1,8 @@
|
|||
fpostit
|
||||
|
||||
original author: Devlon Duthied
|
||||
|
||||
see his blog posting:
|
||||
http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/
|
||||
|
||||
original published at github https://github.com/duthied/Friendika-Bookmarklet
|
|
@ -0,0 +1,14 @@
|
|||
javascript: (function() {
|
||||
the_url = 'view/theme/dispy/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' +
|
||||
encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ?
|
||||
document.getSelection() : document.selection.createRange().text));
|
||||
a_funct = function() {
|
||||
if (!window.open(the_url, 'fpostit','location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) {
|
||||
location.href = the_url
|
||||
};
|
||||
if (/Firefox/.test(navigator.userAgent)) {
|
||||
setTimeout(a_funct, 0)
|
||||
} else {
|
||||
a_funct();
|
||||
}
|
||||
})();"
|
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
if (!isset($_POST["friendica_acct_name"])) $_POST["friendica_acct_name"] = '';
|
||||
if (!isset($_COOKIE['username'])) $_COOKIE['username'] = '';
|
||||
if (!isset($_COOKIE['password'])) $_COOKIE['password'] = '';
|
||||
if (!isset($hostname)) $hostname = '';
|
||||
if (!isset($username)) $username = '';
|
||||
|
||||
|
||||
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
|
||||
setcookie("username", $_POST["friendica_acct_name"], time()+60*60*24*300);
|
||||
setcookie("password", $_POST["friendica_password"], time()+60*60*24*300);
|
||||
}
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0px;
|
||||
}
|
||||
.wrap1 {
|
||||
padding: 2px 5px;
|
||||
background-color: #000;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.wrap2 {
|
||||
margin-left: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.logo {
|
||||
margin-left: 3px;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
h2 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.error {
|
||||
background-color: #FFFF66;
|
||||
font-size: 12px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
|
||||
if (isset($_GET['title'])) {
|
||||
$title = $_GET['title'];
|
||||
}
|
||||
if (isset($_GET['text'])) {
|
||||
$text = $_GET['text'];
|
||||
}
|
||||
if (isset($_GET['url'])) {
|
||||
$url = $_GET['url'];
|
||||
}
|
||||
|
||||
if ((isset($title)) && (isset($text)) && (isset($url))) {
|
||||
$content = "$title\nsource:$url\n\n$text";
|
||||
} else {
|
||||
$content = $_POST['content'];
|
||||
}
|
||||
|
||||
if (isset($_POST['submit'])) {
|
||||
|
||||
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
|
||||
$acctname = $_POST["friendica_acct_name"];
|
||||
$tmp_account_array = explode("@", $acctname);
|
||||
if (isset($tmp_account_array[1])) {
|
||||
$username = $tmp_account_array[0];
|
||||
$hostname = $tmp_account_array[1];
|
||||
}
|
||||
$password = $_POST["friendica_password"];
|
||||
$content = $_POST["content"];
|
||||
|
||||
$url = "http://" . $hostname . '/api/statuses/update';
|
||||
$data = array('status' => $content);
|
||||
|
||||
// echo "posting to: $url<br/>";
|
||||
|
||||
$c = curl_init();
|
||||
curl_setopt($c, CURLOPT_URL, $url);
|
||||
curl_setopt($c, CURLOPT_USERPWD, "$username:$password");
|
||||
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
|
||||
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
|
||||
$c_result = curl_exec($c);
|
||||
if(curl_errno($c)){
|
||||
$error = curl_error($c);
|
||||
showForm($error, $content);
|
||||
}
|
||||
|
||||
curl_close($c);
|
||||
if (!isset($error)) {
|
||||
echo '<script language="javascript" type="text/javascript">window.close();</script>';
|
||||
}
|
||||
|
||||
} else {
|
||||
$error = "Missing account name and/or password. Please try again.";
|
||||
showForm($error, $content);
|
||||
}
|
||||
|
||||
} else {
|
||||
showForm(null, $content);
|
||||
}
|
||||
|
||||
function showForm($error, $content) {
|
||||
$username_cookie = $_COOKIE['username'];
|
||||
$password_cookie = $_COOKIE['password'];
|
||||
|
||||
echo <<<EOF
|
||||
<div class="wrap1">
|
||||
<h2><img class="logo" src="friendica-32.png" align="middle" />Friendica Bookmarklet</h2>
|
||||
</div>
|
||||
|
||||
<div class="wrap2">
|
||||
<form method="post" action="{$_SERVER['PHP_SELF']}">
|
||||
Enter the email address of the Friendica Account that you want to cross-post to: (example: user@friendica.org)<br /><br />
|
||||
Account ID: <input type="text" name="friendica_acct_name" value="{$username_cookie}" size="50" /><br />
|
||||
Password: <input type="password" name="friendica_password" value="{$password_cookie}" size="50" /><br />
|
||||
<textarea name="content" id="content" rows="6" cols="70">{$content}</textarea><br />
|
||||
<input type="submit" value="PostIt!" name="submit" />  <span class="error">$error</span>
|
||||
</form>
|
||||
<p></p>
|
||||
</div>
|
||||
EOF;
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -2086,13 +2086,13 @@ div[id$="wrapper"] br {
|
|||
#group-sidebar {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.group-selected, .nets-selected {
|
||||
.group-selected, .nets-selected, .fileas-selected {
|
||||
padding: 3px;
|
||||
color: #111;
|
||||
background: #f8f8f8;
|
||||
font-weight: bold;
|
||||
}
|
||||
.group-selected:hover, .nets-selected:hover {
|
||||
.group-selected:hover, .nets-selected:hover, .fileas-selected:hover {
|
||||
color: #111;
|
||||
}
|
||||
.groupsideedit {
|
||||
|
@ -2784,6 +2784,29 @@ footer {
|
|||
.network-star.icon.starred {
|
||||
display: inline-block;
|
||||
}
|
||||
#fileas-sidebar {
|
||||
|
||||
}
|
||||
.fileas-ul {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ADDONS THEMING
|
||||
*/
|
||||
|
||||
#sidebar-page-list {
|
||||
|
||||
}
|
||||
#sidebar-page-list ul {
|
||||
padding: 0;
|
||||
margin: 5px 0;
|
||||
}
|
||||
#sidebar-page-list li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
||||
@media handheld {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
* Version: 1.0
|
||||
* Author: unknown
|
||||
* Maintainer: Simon <http://simon.kisikew.org/>
|
||||
* Screenshot: <a href="screenshot.png">Screenshot</a>
|
||||
*/
|
||||
|
||||
|
||||
|
@ -126,3 +127,30 @@ $(document).ready(function() {
|
|||
</script>
|
||||
EOT;
|
||||
|
||||
function dispy_community_info() {
|
||||
$a = get_app();
|
||||
|
||||
$fostitJS = "javascript: (function() {
|
||||
the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy-dark/fpostit/fpostit.php?url=' +
|
||||
encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' +
|
||||
encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ?
|
||||
document.getSelection() : document.selection.createRange().text));
|
||||
a_funct = function() {
|
||||
if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) {
|
||||
location.href = the_url;
|
||||
}
|
||||
if (/Firefox/.test(navigator.userAgent)) {
|
||||
setTimeout(a_funct, 0)
|
||||
} else {
|
||||
a_funct();
|
||||
}
|
||||
})();" ;
|
||||
|
||||
$aside['$fostitJS'] = $fostitJS;
|
||||
$url = $a->get_baseurl($ssl_state);
|
||||
$aside['$url'] = $url;
|
||||
|
||||
$tpl = file_get_contents(dirname(__file__).'/communityhome.tpl');
|
||||
$a->page['right_aside'] = replace_macros($tpl, $aside);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,9 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick
|
|||
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
|
||||
</div>
|
||||
{{ endif }}
|
||||
{{ if $item.filer }}
|
||||
<div class="wall-item-filer-wrapper"><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.star.filer"></a></div>
|
||||
{{ endif }}
|
||||
{{ if $item.plink }}
|
||||
<div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></div>
|
||||
{{ endif }}
|
||||
|
|
Loading…
Reference in New Issue
Block a user