commit mix - code incomplet
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
#? stdtmpl | standard
|
||||
#
|
||||
# import snippet_icons
|
||||
#proc dashboardHtml(columnLeftInfo: var ColomnLeftData): string =
|
||||
# result = ""
|
||||
<div class="panel">
|
||||
<div style="overflow: auto; position: relative; zoom: 1; height: 731px;">
|
||||
<div style="position: relative; zoom: 1;">
|
||||
<div class="apps">
|
||||
# var count: int = 1
|
||||
# var i: int
|
||||
# for i in 0 .. (columnLeftInfo.dashbord.position.len() - 1) :
|
||||
# count += 1
|
||||
<button type="button" class="glow-on-hover">
|
||||
|
||||
<div class="grid-container">
|
||||
|
||||
<div class="grid-container-title">
|
||||
${columnLeftInfo.dashbord.title[i]}
|
||||
</div>
|
||||
|
||||
# if columnLeftInfo.dashbord.ext_link[i] != "":
|
||||
<a class="grid-container-logo" href="${columnLeftInfo.dashbord.ext_link[i]}">
|
||||
# elif columnLeftInfo.dashbord.int_link[i] != "":
|
||||
<a class="grid-container-logo" href="${columnLeftInfo.dashbord.int_link[i]}">
|
||||
# else :
|
||||
<a class="grid-container-logo">
|
||||
# end if
|
||||
|
||||
<div class="grid-container-logo crossfade">
|
||||
|
||||
# if columnLeftInfo.dashbord.icon[i] == "":
|
||||
<img src="images\svg\internet.svg" class="brands"/>
|
||||
# else:
|
||||
<img src="images\svg\${columnLeftInfo.dashbord.icon[i]}.svg" class="brands"/>
|
||||
# end if
|
||||
|
||||
<img src="images\svg\bookmark.svg" class="bookmark"/>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
<div class="grid-container-description">
|
||||
<p class="grid-container-description">${columnLeftInfo.dashbord.description[i]}</p>
|
||||
</div>
|
||||
<div class="grid-container-info">
|
||||
# if columnLeftInfo.dashbord.server[i] != "":
|
||||
Serveur : ${columnLeftInfo.dashbord.server[i]}<br>
|
||||
# end if
|
||||
# if columnLeftInfo.dashbord.ip[i] != "":
|
||||
IP : ${columnLeftInfo.dashbord.ip[i]}<br>
|
||||
# end if
|
||||
# if columnLeftInfo.dashbord.port[i] > 0:
|
||||
Port : ${columnLeftInfo.dashbord.port[i]}<br>
|
||||
# end if
|
||||
</div>
|
||||
|
||||
<div class="grid-container-tags">
|
||||
# if columnLeftInfo.dashbord.tag[i].len() > 0:
|
||||
# var icon_tag = Tag_icon()
|
||||
# for j in 0 .. (columnLeftInfo.dashbord.tag[i].len() - 1) :
|
||||
# if columnLeftInfo.dashbord.tag[i][j] != "":
|
||||
${icon_tag}
|
||||
${columnLeftInfo.dashbord.tag[i][j]}
|
||||
# end if
|
||||
# end for
|
||||
# end if
|
||||
</div>
|
||||
|
||||
|
||||
<div class="grid-container-status">
|
||||
# if columnLeftInfo.dashbord.ssl[i] == true:
|
||||
# var icon_lock = Lock_icon()
|
||||
${icon_lock}
|
||||
# else:
|
||||
# var icon_lockopen = Lockopen_icon()
|
||||
${icon_lockopen}
|
||||
# end if
|
||||
|
||||
# if columnLeftInfo.dashbord.ext_link[i] != "":
|
||||
# var icon_internet = Internet_icon()
|
||||
<a href="${columnLeftInfo.dashbord.ext_link[i]}" class="status-logo" target="_blank">
|
||||
${icon_internet}</a>
|
||||
# end if
|
||||
|
||||
# if columnLeftInfo.dashbord.int_link[i] != "":
|
||||
# var icon_localnetwork = LocalNetwork_icon()
|
||||
<a href="${columnLeftInfo.dashbord.int_link[i]}" class="status-logo" target="_blank">
|
||||
${icon_localnetwork}</a>
|
||||
# end if
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</button>
|
||||
# end for
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="footer version">
|
||||
<div class="footer-Label">The NewWebJoplin V15 le 2022-10-28 10:56 par Bruno Charest.</div>
|
||||
</div>
|
||||
</div>
|
||||
#end proc
|
||||
@@ -212,3 +212,61 @@ proc SendFeedback_icon*(): string = tmpli html"""
|
||||
</g>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : Bookmark icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Bookmark_icon*(): string = tmpli html"""
|
||||
<svg class="bookmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : Docker icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Docker_icon*(): string = tmpli html"""
|
||||
<svg class="docker" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : Lock icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Lock_icon*(): string = tmpli html"""
|
||||
<svg class="lock" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : Lock-open icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Lockopen_icon*(): string = tmpli html"""
|
||||
<svg class="lockopen" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : tag icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Tag_icon*(): string = tmpli html"""
|
||||
<svg class="dashboard-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : internet icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc Internet_icon*(): string = tmpli html"""
|
||||
<svg class="status-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zm48 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z"/>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
# SVG : LocalNetwork icon
|
||||
# --==--==--==--==--==--==--==--==--==--==-- #
|
||||
proc LocalNetwork_icon*(): string = tmpli html"""
|
||||
<svg class="status-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z"/>
|
||||
</svg>
|
||||
"""
|
||||
+86
-23
@@ -1,5 +1,5 @@
|
||||
#? stdtmpl | standard
|
||||
#
|
||||
# import ../snippet_icons
|
||||
#proc test_bouton(columnLeftInfo: var ColomnLeftData): string =
|
||||
# result = ""
|
||||
<!DOCTYPE html>
|
||||
@@ -9,20 +9,22 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="css/bouton.css">
|
||||
<title>Bonton Dashboard</title>
|
||||
<link rel="stylesheet" href="css/dashboard.css">
|
||||
|
||||
<link href="js/viewtree/skin-win8/ui.fancytree.css" class="skinswitcher" rel="stylesheet">
|
||||
|
||||
<script src="js/viewtree.js" defer></script>
|
||||
|
||||
<script src="//code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script src="js/viewtree/jquery.fancytree-all-deps.min.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>TEST Bouton Dashbord</h2>
|
||||
<div>
|
||||
<a href="/test" class="test_ping"><h4>Back to Test Home page ...</h4></a>
|
||||
<a href="/test" class="bouton_dashbord"><h4>Back to Test Home page ...</h4></a>
|
||||
<a id="openWindow" href="http://www.yahoo.com">yahoo</a>
|
||||
|
||||
</div>
|
||||
<div class="panel">
|
||||
<div style="overflow: auto; position: relative; zoom: 1; height: 731px;">
|
||||
@@ -32,26 +34,87 @@
|
||||
# var i: int
|
||||
# for i in 0 .. (columnLeftInfo.dashbord.position.len() - 1) :
|
||||
# count += 1
|
||||
# if columnLeftInfo.dashbord.ext_link[i] == "" and columnLeftInfo.dashbord.int_link[i] == "":
|
||||
<button type="button" class="glow-on-hover" onclick="window.location.href='';">
|
||||
# elif columnLeftInfo.dashbord.ext_link[i] == "":
|
||||
<button type="button" class="glow-on-hover" onclick="window.location.href='${columnLeftInfo.dashbord.int_link[i]}';">
|
||||
# else:
|
||||
<button type="button" class="glow-on-hover" onclick="window.location.href='${columnLeftInfo.dashbord.ext_link[i]}';">
|
||||
# end if
|
||||
|
||||
<button type="button" id="openWindow" class="glow-on-hover">
|
||||
|
||||
<div class="grid-container">
|
||||
<div class="grid-container-title">${columnLeftInfo.dashbord.title[i]}</div>
|
||||
<div class="grid-container-logo crossfade">
|
||||
|
||||
<i class="fa fa-bookmark-o fa x5" aria-hidden="true"></i>
|
||||
<img class="top" alt="Logo" src="images/bookmarks.jpg">
|
||||
|
||||
</div>
|
||||
<div class="grid-container-description">${columnLeftInfo.dashbord.description[i]}
|
||||
|
||||
<div class="grid-container-title">
|
||||
${columnLeftInfo.dashbord.title[i]}
|
||||
</div>
|
||||
|
||||
# if columnLeftInfo.dashbord.ext_link[i] != "":
|
||||
<a id="openWindow" class="grid-container-logo" href="${columnLeftInfo.dashbord.ext_link[i]}">
|
||||
# elif columnLeftInfo.dashbord.int_link[i] != "":
|
||||
<a id="openWindow" class="grid-container-logo" href="${columnLeftInfo.dashbord.int_link[i]}">
|
||||
# else :
|
||||
<a class="grid-container-logo">
|
||||
# end if
|
||||
|
||||
<div class="grid-container-logo crossfade">
|
||||
|
||||
# if columnLeftInfo.dashbord.icon[i] == "":
|
||||
<img src="images\svg\internet.svg" class="brands"/>
|
||||
# else:
|
||||
<img src="images\svg\${columnLeftInfo.dashbord.icon[i]}.svg" class="brands"/>
|
||||
# end if
|
||||
|
||||
<img src="images\svg\bookmark.svg" class="bookmark"/>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
<div class="grid-container-description">
|
||||
<p class="grid-container-description">${columnLeftInfo.dashbord.description[i]}</p>
|
||||
</div>
|
||||
<div class="grid-container-info">
|
||||
# if columnLeftInfo.dashbord.server[i] != "":
|
||||
Serveur : ${columnLeftInfo.dashbord.server[i]}<br>
|
||||
# end if
|
||||
# if columnLeftInfo.dashbord.ip[i] != "":
|
||||
IP : ${columnLeftInfo.dashbord.ip[i]}<br>
|
||||
# end if
|
||||
# if columnLeftInfo.dashbord.port[i] > 0:
|
||||
Port : ${columnLeftInfo.dashbord.port[i]}<br>
|
||||
# end if
|
||||
</div>
|
||||
|
||||
<div class="grid-container-tags">
|
||||
# if columnLeftInfo.dashbord.tag[i].len() > 0:
|
||||
# var icon_tag = Tag_icon()
|
||||
# for j in 0 .. (columnLeftInfo.dashbord.tag[i].len() - 1) :
|
||||
# if columnLeftInfo.dashbord.tag[i][j] != "":
|
||||
${icon_tag}
|
||||
${columnLeftInfo.dashbord.tag[i][j]}
|
||||
# end if
|
||||
# end for
|
||||
# end if
|
||||
</div>
|
||||
|
||||
|
||||
<div class="grid-container-status">
|
||||
# if columnLeftInfo.dashbord.ssl[i] == true:
|
||||
# var icon_lock = Lock_icon()
|
||||
${icon_lock}
|
||||
# else:
|
||||
# var icon_lockopen = Lockopen_icon()
|
||||
${icon_lockopen}
|
||||
# end if
|
||||
|
||||
# if columnLeftInfo.dashbord.ext_link[i] != "":
|
||||
# var icon_internet = Internet_icon()
|
||||
<a href="${columnLeftInfo.dashbord.ext_link[i]}" class="status-logo" target="_blank">
|
||||
${icon_internet}</a>
|
||||
# end if
|
||||
|
||||
# if columnLeftInfo.dashbord.int_link[i] != "":
|
||||
# var icon_localnetwork = LocalNetwork_icon()
|
||||
<a href="${columnLeftInfo.dashbord.int_link[i]}" class="status-logo" target="_blank">
|
||||
${icon_localnetwork}</a>
|
||||
# end if
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</button>
|
||||
# end for
|
||||
</div>
|
||||
@@ -62,7 +125,7 @@
|
||||
<hr>
|
||||
</div>
|
||||
<div class="footer version">
|
||||
<div class="gwt-Label">The NewWebJoplin V15 le 2022-10-28 10:56 par Bruno Charest.</div>
|
||||
<div class="footer-Label">The NewWebJoplin V15 le 2022-10-28 10:56 par Bruno Charest.</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
<a href="/test_notebooks" class="test_notebooks"><h3>Test joplin Notebooks</h3></a>
|
||||
<a href="/test_notes" class="test_notes"><h3>Test Joplin Notes</h3></a>
|
||||
<a href="/test_tags" class="test_tags"><h3>Test Joplin Tags</h3></a>
|
||||
<a href="/test_viewtree" class="test_viewtree"><h3>Test View Tree</h3></a><a href="/test_bouton" class="test_bouton"><h3>Test Bouton</h3></a>
|
||||
<a href="/test_viewtree" class="test_viewtree"><h3>Test View Tree</h3></a>
|
||||
<a href="/test_bouton" class="test_bouton"><h3>Test Bouton</h3></a>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+9
-5
@@ -25,6 +25,7 @@
|
||||
<title>Joplin-TheNewWeb</title>
|
||||
<link rel="stylesheet" href="css/styles.css">
|
||||
<link rel="stylesheet" href="css/notif-bell.css">
|
||||
<link rel="stylesheet" href="css/dashboard.css">
|
||||
<script src="js/script.js" defer></script>
|
||||
|
||||
</head>
|
||||
@@ -32,13 +33,15 @@
|
||||
<body>
|
||||
<header class="header">
|
||||
<button class="menu-icon-btn" data-menu-icon-btn>
|
||||
|
||||
# var icon_menu = Menu_icon()
|
||||
${icon_menu}
|
||||
|
||||
|
||||
|
||||
</button>
|
||||
|
||||
<div class="search-wrapper">
|
||||
<label for="search"></label>
|
||||
<input type="search" id="search" data-search>
|
||||
</div>
|
||||
|
||||
<button class="notifBell-btn" data-notifBell-btn>
|
||||
# var notifBell = show_notification_bell(1)
|
||||
${notifBell}
|
||||
@@ -279,7 +282,8 @@
|
||||
<div class="force-overflow">
|
||||
<div class="ColomnLeftJoplinDashboard">
|
||||
|
||||
<p>DASHBORD</p>
|
||||
# var dashboardHTML = dashboardHtml(columnLeftInfo)
|
||||
${dashboardHTML}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user