Browse Source

introduce #groupchat #UI

master
Simon Grim 9 years ago
parent
commit
3595a9d2c5
  1. 56
      css/profile.css
  2. 302
      css/style.css
  3. 156
      following.html
  4. 162
      home.html
  5. 121
      js/interface_common.js
  6. 221
      js/interface_localization.js
  7. 59
      js/mobile_abstract.js
  8. 308
      js/twister_directmsg.js
  9. 2
      js/twister_following.js
  10. 2
      js/twister_formatpost.js
  11. 37
      js/twister_newmsgs.js
  12. 61
      theme_calm/css/profile.css
  13. 333
      theme_calm/css/style.css
  14. 170
      theme_nin/css/style.css

56
css/profile.css

@ -58,34 +58,14 @@
color: #fff; color: #fff;
} }
.profile-card-buttons .profile-card-buttons {
{ padding: 4px 0;
position: absolute;
bottom: 30px;
right: 0;
} }
.profile-card-buttons .direct-messages-with-user, .twister-user-info .profile-card-buttons {
.profile-card-buttons .mentions-from-user, position: absolute;
.profile-card-buttons .follow, top: 0;
.profile-card-buttons .unfollow right: 0;
{
display: inline;
padding: 4px 12px;
font-size: 12px;
width: auto;
text-align: center;
color: rgba( 0, 0, 0, .7 );
background: rgba( 0, 0, 0, .1 );
border: none;
transition: all .2s linear;
}
.profile-card-buttons .direct-messages-with-user:hover,
.profile-card-buttons .mentions-from-user:hover
{
color: #fff;
background: #45474d;
} }
.profile-card.forEdition .profile-card.forEdition
@ -308,3 +288,27 @@ h1.profile-name {
h2.profile-screen-name { h2.profile-screen-name {
display: block; display: block;
} }
.group-messages-control .invite-form, .group-messages-control .secret-key {
display: none;
font-size: 12px;
text-align: center;
padding: 4px 0;
}
.group-messages-control .invite-form input {
vertical-align: middle;
width: 73%;
margin: 0 4px;
}
.group-messages-control .invite-form button {
color: #DDD;
background-color: #45474D;
border: medium none;
vertical-align: middle;
}
.group-messages-control .invite-form button:hover {
color: #FFF;
}

302
css/style.css

@ -96,28 +96,24 @@ h3
************** BUTTONS *************** ************** BUTTONS ***************
**************************************/ **************************************/
button button {
{ color: rgba(255, 255, 255, .8);
background: #45474d; background: #45474d;
color: rgba( 255, 255, 255, .8 );
border: none; border: none;
padding: 5px 10px; padding: 5px 10px;
cursor: pointer; cursor: pointer;
} }
button:hover button:hover {
{
color: #fff; color: #fff;
} }
button.disabled button:disabled, button.disabled {
{
opacity: .4; opacity: .4;
} }
button.disabled:hover button:disabled:hover, button.disabled:hover {
{ color: rgba(255, 255, 255, .8);
color: rgba( 255, 255, 255, .8 );
} }
button.follow, button.unfollow, .following-list button.private { button.follow, button.unfollow, .following-list button.private {
@ -151,11 +147,32 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
margin-right: 10px; margin-right: 10px;
} }
.b-buttons {
text-align: right;
padding: 4px;
}
.b-buttons button {
color: rgba(0, 0, 0, .7);
background-color: rgba(0, 0, 0, .08);
border: none;
font-size: 12px;
text-align: center;
width: auto;
padding: 4px 12px;
transition: all .1s linear;
}
.b-buttons button:hover {
color: #FFF;
background: #45474D;
}
/************************************* /*************************************
**************************** MENU ***** **************** MENU ****************
**************************************/ **************************************/
.userMenu
{ .userMenu {
width: 900px; width: 900px;
position: fixed; position: fixed;
left: 50%; left: 50%;
@ -164,12 +181,13 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
background: #45474d; background: #45474d;
z-index: 2; z-index: 2;
} }
.userMenu.w1200 { .userMenu.w1200 {
width: 1200px; width: 1200px;
margin-left: -600px; margin-left: -600px;
} }
.userMenu:after
{ .userMenu:after {
content: ""; content: "";
position: absolute; position: absolute;
right: 0; right: 0;
@ -177,16 +195,14 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
height: 54px; height: 54px;
background: url(../img/twister_mini.png) no-repeat right 5px; background: url(../img/twister_mini.png) no-repeat right 5px;
} }
.userMenu > ul
{ .userMenu > ul > li {
}
.userMenu > ul > li
{
float: left; float: left;
height: 40px;
margin: 0; margin: 0;
} }
.userMenu > ul > li > a
{ .userMenu > ul > li > a {
line-height: 40px; line-height: 40px;
height: 40px; height: 40px;
padding: 0 20px 0 45px; padding: 0 20px 0 45px;
@ -198,115 +214,89 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
transition: all .2s linear; transition: all .2s linear;
position: relative; position: relative;
} }
.userMenu li > a:hover
{ .userMenu li:hover, .userMenu li:active {
background-color: rgba(0, 0, 0 , .4);
}
.userMenu li:hover > a, .userMenu li:active > a {
text-decoration: none; text-decoration: none;
opacity: 1; opacity: 1;
} }
.userMenu li.current > a
{ .userMenu li.current {
background-color: #B43E34;
}
.userMenu li.current > a {
color: #fff; color: #fff;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-home > a
{ .userMenu li.userMenu-home > a {
background: url(../img/home.png) no-repeat 5px center; background: url(../img/home.png) no-repeat 5px center;
} }
.userMenu li.userMenu-home:hover > a
{ .userMenu li.userMenu-connections > a {
background: url(../img/home.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-home.current > a
{
background: url(../img/home.png) no-repeat 5px center #b43e34;
}
.userMenu li.userMenu-connections > a
{
background: url(../img/connections.png) no-repeat 5px center; background: url(../img/connections.png) no-repeat 5px center;
padding: 0 30px 0 20px; padding: 0 24px;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-connections:hover > a
{ .userMenu li.userMenu-network > a {
background: url(../img/connections.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-connections.current > a
{
background: url(../img/connections.png) no-repeat 5px center #b43e34;
}
.userMenu li.userMenu-network > a
{
background: url(../img/network.png) no-repeat 5px center; background: url(../img/network.png) no-repeat 5px center;
} }
.userMenu li.userMenu-network:hover > a
{ .userMenu li.userMenu-messages > a {
background: url(../img/network.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-network.current > a
{
background: url(../img/network.png) no-repeat 5px center #b43e34;
}
.userMenu li.userMenu-messages > a
{
background: url(../img/messages.png) no-repeat center center; background: url(../img/messages.png) no-repeat center center;
padding: 0 25px 0 35px; padding: 0 24px;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-messages:hover > a
{ .userMenu li.userMenu-messages > a:empty {
background: url(../img/messages.png) no-repeat center center rgba( 0, 0, 0 , .4 ); padding: 0 20px 0 30px;
opacity: .7;
} }
.userMenu li.userMenu-messages.current > a
{ .userMenu li.userMenu-groupmessages > a {
background: url(../img/messages.png) no-repeat center center #b43e34; background: url(../img/groupmessages.png) no-repeat center center;
background-size: 22px 22px;
padding: 0 24px;
opacity: 0.9;
} }
.userMenu li.userMenu-profile > a
{ .userMenu li.userMenu-profile > a {
background: url(../img/profile.png) no-repeat 5px center; background: url(../img/profile.png) no-repeat 5px center;
} }
.userMenu li.userMenu-profile:hover > a
{ .userMenu li.userMenu-config {
background: url(../img/profile.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-profile.current > a
{
background: url(../img/profile.png) no-repeat 5px center #b43e34;
}
.userMenu li.userMenu-config
{
float: right; float: right;
position: relative; position: relative;
margin-right: 40px; margin-right: 40px;
} }
.userMenu li.userMenu-search
{ .userMenu li.userMenu-search {
float: right; float: right;
position: relative; position: relative;
} }
.userMenu li.userMenu-config > a
{ .userMenu li.userMenu-search:hover {
background-color: transparent;
}
.userMenu li.userMenu-config > a {
background: url(../img/config.png) no-repeat 5px center; background: url(../img/config.png) no-repeat 5px center;
padding: 0 30px 0 45px; padding: 0 30px 0 45px;
} }
.userMenu li.userMenu-config > a:after
{ .userMenu li.userMenu-config > a:after {
content: "▼"; content: "▼";
position: absolute; position: absolute;
font-size: 10px; font-size: 10px;
transition: all .2 linear; transition: all .2 linear;
} }
.userMenu li.userMenu-config:hover > a,
.userMenu li.userMenu-config:active > a .wrapper {
{
background: url(../img/config.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-messages > a:empty
{
padding: 0 20px 0 30px;
opacity: .7;
}
.wrapper
{
width: 900px; width: 900px;
margin: 0 auto; margin: 0 auto;
background: #f8f5ee; background: #f8f5ee;
@ -315,10 +305,12 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
z-index: 1; z-index: 1;
min-height: 100%; min-height: 100%;
} }
.wrapper.w1200 { .wrapper.w1200 {
width: 1200px; width: 1200px;
padding: 55px 7px 15px 7px; padding: 55px 7px 15px 7px;
} }
.dashboard.left { .dashboard.left {
width: 320px; width: 320px;
position: fixed; position: fixed;
@ -332,8 +324,7 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
margin-left: 864px; margin-left: 864px;
} }
.module .module {
{
border: solid 1px rgba( 69, 71, 77, .1 ); border: solid 1px rgba( 69, 71, 77, .1 );
background: #fff; background: #fff;
} }
@ -342,8 +333,7 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
margin: 0 0 3%; margin: 0 0 3%;
} }
.messages-qtd .messages-qtd {
{
position: absolute; position: absolute;
background: #b43e34; background: #b43e34;
color: #fff; color: #fff;
@ -352,10 +342,11 @@ button.follow:hover, button.unfollow:hover, .following-list button.private:hover
font-size: 8px; font-size: 8px;
margin-top: 4px; margin-top: 4px;
} }
.userMenu-connections .messages-qtd
{ .userMenu-connections .messages-qtd {
margin: 4px 0 0 10px; margin: 4px 0 0 10px;
} }
/******************************************************* /*******************************************************
****************** CONFIG SUBMENU & SEARCH RESULTS ***** ****************** CONFIG SUBMENU & SEARCH RESULTS *****
*******************************************************/ *******************************************************/
@ -1581,6 +1572,98 @@ ol.toptrends-list {
content: '\2714'; content: '\2714';
} }
/*************************************
****** GM NEW GROUP SETUP MODAL ******
**************************************/
.group-messages-new-group.modal-wrapper {
height: auto; /*about 320px*/
margin-top: -160px;
}
.group-messages-new-group .modal-content .module {
margin: 4px;
}
.group-messages-new-group .modal-content div div {
width: 100%;
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-new-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-new-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-new-group .modal-content textarea {
border: solid 1px rgba(0, 0, 0, .3);
border-radius: 3px;
width: 500px;
height: 56px;
resize: none;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-new-group .modal-content textarea:focus {
border: solid 1px rgba(227, 79, 66, .5);
}
/*************************************
****** GM JOIN GROUP SETUP MODAL *****
**************************************/
.group-messages-join-group.modal-wrapper {
height: auto; /*about 360px*/
margin-top: -240px;
}
.group-messages-join-group .modal-content .module {
margin: 4px;
}
.group-messages-join-group .modal-content div div {
width: 100%;
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-join-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-join-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-join-group .modal-content input {
border: solid 1px rgba(0, 0, 0, .3);
border-radius: 3px;
width: 500px;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-join-group .modal-content input:focus {
border: solid 1px rgba(227, 79, 66, .5);
}
.group-messages-join-group .modal-content input[type='checkbox'] {
display: inline;
width: auto;
margin: 2px;
}
.group-messages-join-group .modal-content .groups-list {
height: 120px;
overflow-y: auto;
margin: 8px 8px 0;
}
/************************************* /*************************************
*********** NEW USER MODAL *********** *********** NEW USER MODAL ***********
**************************************/ **************************************/
@ -1693,6 +1776,7 @@ ol.toptrends-list {
.prompt-wrapper { .prompt-wrapper {
background: #fff; background: #fff;
font-size: 13px;
z-index: 5; z-index: 5;
position: fixed; position: fixed;
top: 50%; top: 50%;
@ -1713,6 +1797,20 @@ ol.toptrends-list {
margin: 4px; margin: 4px;
} }
/*************************************
*********** CONFIRM POPUP ************
**************************************/
.confirm-popup .message {
text-align: center;
margin: 12px;
}
.confirm-popup .modal-buttons {
text-align: center;
padding: 4px;
}
/************************************* /*************************************
****** FOLLOWING-CONFIG PROMPT ******* ****** FOLLOWING-CONFIG PROMPT *******
**************************************/ **************************************/

156
following.html

@ -36,7 +36,7 @@
<li class="userMenu-home"><a href="home.html"><span class="selectable_theme theme_original label">Home</span></a></li> <li class="userMenu-home"><a href="home.html"><span class="selectable_theme theme_original label">Home</span></a></li>
<li class="userMenu-network selectable_theme theme_original theme_nin"><a class="label" href="network.html">Network</a></li> <li class="userMenu-network selectable_theme theme_original theme_nin"><a class="label" href="network.html">Network</a></li>
<li class="userMenu-profile selectable_theme theme_original theme_nin"><a class="label" href="profile-edit.html">Profile</a></li> <li class="userMenu-profile selectable_theme theme_original theme_nin"><a class="label" href="profile-edit.html">Profile</a></li>
<li class="userMenu-config current"> <li class="userMenu-config">
<a class="userMenu-config-dropdown" href="#"> <a class="userMenu-config-dropdown" href="#">
<div class="config-menu dialog-modal"> <div class="config-menu dialog-modal">
<div class="mini-profile-info selectable_theme theme_original"> <div class="mini-profile-info selectable_theme theme_original">
@ -49,7 +49,8 @@
<a class="dropdown-menu-item" href="following.html">Following users</a> <a class="dropdown-menu-item" href="following.html">Following users</a>
<a class="dropdown-menu-item" href="network.html">Network config</a> <a class="dropdown-menu-item" href="network.html">Network config</a>
<a class="dropdown-menu-item" href="login.html">Change user</a> <a class="dropdown-menu-item" href="login.html">Change user</a>
<a class="direct-messages selectable_theme theme_original" href="#">Direct Messages</a> <a class="dropdown-menu-item direct-messages selectable_theme theme_original theme_calm" href="#">Direct Messages</a>
<a class="dropdown-menu-item groupmessages selectable_theme theme_original theme_calm" href="#">Group Messages</a>
</div> </div>
</a> </a>
</li> </li>
@ -63,6 +64,11 @@
<span class="messages-qtd" style="display:none;">0</span> <span class="messages-qtd" style="display:none;">0</span>
</a> </a>
</li> </li>
<li class="userMenu-groupmessages">
<a href="#">
<span class="messages-qtd" style="display:none;">0</span>
</a>
</li>
<li class="userMenu-dhtindicator selectable_theme theme_calm"><a href="network.html"></a></li> <li class="userMenu-dhtindicator selectable_theme theme_calm"><a href="network.html"></a></li>
<!-- BUSCA --> <!-- BUSCA -->
@ -95,21 +101,21 @@
<div class="wrapper"> <div class="wrapper">
<!-- LADO ESQUERDO DE MÓDULOS INIT --> <!-- LADO ESQUERDO DE MÓDULOS INIT -->
<div class="dashboard left"> <div class="dashboard left">
<!-- PROFILE MODULE INIT --> <!-- THEME NIN added sub-menu (mentions, messages and edit profile) -->
<div class="module mini-profile selectable_theme theme_nin">
<div class="mini-profile-info">
<!-- THEME NIN added user menu (mentions, messages and edit profile) -->
<ul class="mini-profile-indicators selectable_theme theme_nin"> <ul class="mini-profile-indicators selectable_theme theme_nin">
<li class="userMenu-connections"> <li class="userMenu-connections">
<a href="#" title="Mentions"><span class="messages-qtd" style="display:none;">0</span><span>Mentions</span></a> <a href="#" title="Mentions"><span class="messages-qtd" style="display:none;">0</span><span>Mentions</span></a>
</li> </li>
<li class="userMenu-groupmessages">
<a href="#" title="Group Messages"><span class="messages-qtd" style="display:none;">0</span><span>Group Messages</span></a>
</li>
<li class="userMenu-messages"> <li class="userMenu-messages">
<a href="#" title="Direct Messages"><span class="messages-qtd" style="display:none;">0</span><span>Messages</span></a> <a href="#" title="Direct Messages"><span class="messages-qtd" style="display:none;">0</span><span>Messages</span></a>
</li> </li>
<li class="userMenu-user">
<a href="profile-edit.html" title="Edit profile"><span>Edit profile</span></a>
</li>
</ul> </ul>
<!-- PROFILE MODULE INIT -->
<div class="module mini-profile selectable_theme theme_nin">
<div class="mini-profile-info">
<div class="mini-profile-photo"><img src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/></div> <div class="mini-profile-photo"><img src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/></div>
<a href="#" class="mini-profile-name open-profile-modal"></a> <a href="#" class="mini-profile-name open-profile-modal"></a>
<span class="mini-profile-view">View</span> <span class="mini-profile-view">View</span>
@ -211,7 +217,6 @@
</div> </div>
</div> </div>
<li id="post-template" class="module post" data-time=""> <li id="post-template" class="module post" data-time="">
<div class="post-data" data-userpost="" data-content_to_rt="" data-content_to_sigrt="" <div class="post-data" data-userpost="" data-content_to_rt="" data-content_to_sigrt=""
data-screen-name="" data-id="" data-text="" data-text-mentions=""> data-screen-name="" data-id="" data-text="" data-text-mentions="">
@ -247,8 +252,8 @@
<textarea placeholder="Reply..."></textarea> <textarea placeholder="Reply..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -293,12 +298,12 @@
<div class="modal-wrapper"> <div class="modal-wrapper">
<div class="modal-header"> <div class="modal-header">
<h3></h3> <h3></h3>
<span id="closeModal" class="modal-close cancel">&times;</span> <span id="closeModal" class="modal-close">&times;</span>
<span class="modal-back">&lt;</span> <span class="modal-back">&lt;</span>
<span class="mark-all-as-read"></span> <span class="mark-all-as-read"></span>
</div> </div>
<div class="modal-content"></div> <div class="modal-content"></div>
<div class="modal-blackout cancel"></div> <div class="modal-blackout"></div>
</div> </div>
<div class="prompt-wrapper"> <div class="prompt-wrapper">
@ -309,14 +314,22 @@
<div class="modal-content"></div> <div class="modal-content"></div>
</div> </div>
<div id="confirm-popup-template">
<div class="message"></div>
<div class="modal-buttons">
<button class="confirm"></button>
<button class="cancel"></button>
</div>
</div>
<div id="reTwist-modal-template"> <div id="reTwist-modal-template">
<div class="post-area"> <div class="post-area">
<form class="post-area-new open"> <form class="post-area-new open">
<textarea placeholder="New Post..."></textarea> <textarea placeholder="New Post..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
<div class="modal-buttons"> <div class="modal-buttons">
<span class="switch-mode">Switch to Reply</span> <span class="switch-mode">Switch to Reply</span>
@ -333,8 +346,8 @@
<div class="post-area-extras"> <div class="post-area-extras">
<span class="switch-mode">Switch to Retransmit</span> <span class="switch-mode">Switch to Retransmit</span>
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -378,13 +391,114 @@
<textarea placeholder="New direct message..."></textarea> <textarea placeholder="New direct message..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="dm-submit disabled" disabled="true">send</button> <button title="Direct messages are encrypted, only you and receiver can read them" style="margin-right:7.5%;" class="dm-submit disabled" disabled="disabled">send</button>
</div> </div>
</form> </form>
</div> </div>
<!-- MODAL DE DIRECT MESSAGES INIT --> <!-- MODAL DE DIRECT MESSAGES INIT -->
<div id="group-messages-profile-modal-control-template">
<div class="group-messages-control b-buttons">
<button class="new">New group</button>
<button class="join">Join group</button>
</div>
</div>
<div id="group-messages-messages-modal-control-template">
<div class="group-messages-control b-buttons">
<button class="profile">Profile</button>
<button class="invite">Invite peers</button>
<button class="leave">Leave group</button>
<div class="invite-form">
<input type="text"><button disabled="disabled">Invite</button>
</div>
</div>
</div>
<div id="group-profile-modal-template">
<div class="profile-card" data-screen-name="">
<div class="profile-card-main">
<div class="profile-bio"></div>
</div>
<div class="profile-card-buttons group-messages-control b-buttons">
<button class="direct-messages-with-user" disabled="disabled">Messages</button>
<button class="invite" disabled="disabled">Invite peers</button>
<button class="show-secret-key" disabled="disabled">Secret Key</button>
<button class="leave" disabled="disabled">Leave group</button>
<div class="invite-form">
<input type="text"><button disabled="disabled">Invite</button>
</div>
<div class="secret-key"></div>
</div>
</div>
<div class="members"></div>
</div>
<div id="group-profile-member-template">
<div class="twister-user">
<div>
<a class="twister-user-name open-profile-modal">
<img class="twister-user-photo" src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/>
</a>
</div>
<div class="twister-user-info" data-screen-name="">
<a class="twister-user-name open-profile-modal">
<span class="twister-user-full"></span>
<span class="twister-user-tag"></span>
</a>
<div class="bio"></div>
</div>
</div>
</div>
<div id="group-messages-new-group-template">
<div class="module">
<div>
<p class="label">Group description</p>
<textarea class="description" placeholder="Describe group"></textarea>
</div>
<div>
<p class="label">Peers to invite</p>
<textarea class="invite" placeholder="Invite somebody"></textarea>
</div>
<div>
<button class="create" disabled="disabled">Create</button>
</div>
</div>
</div>
<div id="group-messages-join-group-template">
<div class="module">
<div>
<p class="label">Select group(s)</p>
<ul class="groups-list"></ul>
</div>
<div>
<button class="join" disabled="disabled">Join</button>
</div>
</div>
<div class="module">
<div>
<p class="label">Import secret key</p>
<input class="secret-key-import" type="textbox" placeholder="52-characters secret" size="52" rows="1"></input>
</div>
<div>
<p class="label">With group alias</p>
<input class="username-import" type="textbox" placeholder="Type group alias here" size="16" rows="1"></input>
</div>
<div>
<button class="import-secret-key" disabled="disabled">Import key</button>
</div>
</div>
</div>
<div id="groups-list-item-template">
<li>
<input type="checkbox" /> <a class="twister-user-name open-profile-modal"></a> // <span class="description"></span>
</li>
</div>
<!-- MODAL DE PROFILE --> <!-- MODAL DE PROFILE -->
<div id="profile-modal-template"> <div id="profile-modal-template">
<!-- ÁREA DE PROFILE PHOTO INIT --> <!-- ÁREA DE PROFILE PHOTO INIT -->
@ -418,7 +532,7 @@
<li><a href="#"><span class="followers-count">&nbsp;</span><span class="label">Followers</span></a></li> <li><a href="#"><span class="followers-count">&nbsp;</span><span class="label">Followers</span></a></li>
</ul> </ul>
</div> </div>
<div class="profile-card-buttons"> <div class="profile-card-buttons b-buttons">
<button class="follow" href="#">Follow</button> <button class="follow" href="#">Follow</button>
<button class="direct-messages-with-user" href="#">Direct Messages</button> <button class="direct-messages-with-user" href="#">Direct Messages</button>
<button class="mentions-from-user" href="#">Mentions</button> <button class="mentions-from-user" href="#">Mentions</button>

162
home.html

@ -54,8 +54,9 @@
<a class="dropdown-menu-item" href="profile-edit.html">Setup account</a> <a class="dropdown-menu-item" href="profile-edit.html">Setup account</a>
<a class="dropdown-menu-item dropdown-menu-following" href="following.html">Following users</a> <a class="dropdown-menu-item dropdown-menu-following" href="following.html">Following users</a>
<a class="dropdown-menu-item" href="login.html">Change user</a> <a class="dropdown-menu-item" href="login.html">Change user</a>
<a class="dropdown-menu-item promoted-posts-only selectable_theme theme_original" href="#">Switch to Promoted posts</a> <a class="dropdown-menu-item promoted-posts-only selectable_theme theme_original theme_calm" href="#">Switch to Promoted posts</a>
<a class="direct-messages dropdown-menu-item selectable_theme theme_original" href="#">Direct Messages</a> <a class="dropdown-menu-item direct-messages selectable_theme theme_original theme_calm" href="#">Direct Messages</a>
<a class="dropdown-menu-item groupmessages selectable_theme theme_original theme_calm" href="#">Group Messages</a>
</div> </div>
</a> </a>
</li> </li>
@ -69,6 +70,11 @@
<span class="messages-qtd" style="display:none;">0</span> <span class="messages-qtd" style="display:none;">0</span>
</a> </a>
</li> </li>
<li class="userMenu-groupmessages">
<a href="#">
<span class="messages-qtd" style="display:none;">0</span>
</a>
</li>
<li class="userMenu-dhtindicator selectable_theme theme_calm"><a href="network.html"></a></li> <li class="userMenu-dhtindicator selectable_theme theme_calm"><a href="network.html"></a></li>
<!-- BUSCA --> <!-- BUSCA -->
@ -101,22 +107,21 @@
<div class="wrapper"> <div class="wrapper">
<!-- LADO ESQUERDO DE MÓDULOS INIT --> <!-- LADO ESQUERDO DE MÓDULOS INIT -->
<div class="dashboard left"> <div class="dashboard left">
<!-- PROFILE MODULE -->
<div class="module mini-profile">
<div class="mini-profile-info">
<!-- THEME NIN added sub-menu (mentions, messages and edit profile) --> <!-- THEME NIN added sub-menu (mentions, messages and edit profile) -->
<ul class="mini-profile-indicators selectable_theme theme_nin"> <ul class="mini-profile-indicators selectable_theme theme_nin">
<li class="userMenu-connections"> <li class="userMenu-connections">
<a href="#" title="Mentions"><span class="messages-qtd" style="display:none;">0</span><span>Mentions</span></a> <a href="#" title="Mentions"><span class="messages-qtd" style="display:none;">0</span><span>Mentions</span></a>
</li> </li>
<li class="userMenu-groupmessages">
<a href="#" title="Group Messages"><span class="messages-qtd" style="display:none;">0</span><span>Group Messages</span></a>
</li>
<li class="userMenu-messages"> <li class="userMenu-messages">
<a href="#" title="Direct Messages"><span class="messages-qtd" style="display:none;">0</span><span>Messages</span></a> <a href="#" title="Direct Messages"><span class="messages-qtd" style="display:none;">0</span><span>Messages</span></a>
</li> </li>
<li class="userMenu-user">
<a href="profile-edit.html" title="Edit profile"><span>Edit profile</span></a>
</li>
</ul> </ul>
<!--/sub-menu --> <!-- PROFILE MODULE -->
<div class="module mini-profile">
<div class="mini-profile-info">
<div class="mini-profile-photo"><img src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/></div> <div class="mini-profile-photo"><img src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/></div>
<a href="#" class="mini-profile-name open-profile-modal"></a> <a href="#" class="mini-profile-name open-profile-modal"></a>
<span class="mini-profile-view">View</span> <span class="mini-profile-view">View</span>
@ -132,8 +137,8 @@
<textarea placeholder="New Post..."></textarea> <textarea placeholder="New Post..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -169,8 +174,8 @@
<textarea placeholder="New Post..."></textarea> <textarea placeholder="New Post..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -338,8 +343,8 @@
<textarea placeholder="Reply..."></textarea> <textarea placeholder="Reply..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -385,12 +390,12 @@
<div class="modal-wrapper"> <div class="modal-wrapper">
<div class="modal-header"> <div class="modal-header">
<h3></h3> <h3></h3>
<span id="closeModal" class="modal-close cancel">&times;</span> <span id="closeModal" class="modal-close">&times;</span>
<span class="modal-back">&lt;</span> <span class="modal-back">&lt;</span>
<span class="mark-all-as-read"></span> <span class="mark-all-as-read"></span>
</div> </div>
<div class="modal-content"></div> <div class="modal-content"></div>
<div class="modal-blackout cancel"></div> <div class="modal-blackout"></div>
</div> </div>
<div class="prompt-wrapper"> <div class="prompt-wrapper">
@ -401,14 +406,22 @@
<div class="modal-content"></div> <div class="modal-content"></div>
</div> </div>
<div id="confirm-popup-template">
<div class="message"></div>
<div class="modal-buttons">
<button class="confirm"></button>
<button class="cancel"></button>
</div>
</div>
<div id="reTwist-modal-template"> <div id="reTwist-modal-template">
<div class="post-area"> <div class="post-area">
<form class="post-area-new open"> <form class="post-area-new open">
<textarea placeholder="New Post..."></textarea> <textarea placeholder="New Post..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
<div class="modal-buttons"> <div class="modal-buttons">
<span class="switch-mode">Switch to Reply</span> <span class="switch-mode">Switch to Reply</span>
@ -425,8 +438,8 @@
<div class="post-area-extras"> <div class="post-area-extras">
<span class="switch-mode">Switch to Retransmit</span> <span class="switch-mode">Switch to Retransmit</span>
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button class="post-submit disabled" disabled="true">post</button> <button class="post-submit disabled" disabled="disabled">post</button>
</div> </div>
</form> </form>
</div> </div>
@ -470,13 +483,114 @@
<textarea placeholder="New direct message..."></textarea> <textarea placeholder="New direct message..."></textarea>
<div class="post-area-extras"> <div class="post-area-extras">
<span class="post-area-remaining">140</span> <span class="post-area-remaining">140</span>
<button class="undo-unicode disabled" disabled="true">undo</button> <button class="undo-unicode disabled" disabled="disabled">undo</button>
<button title="Direct messages are encrypted, only you and receiver can read them" style="margin-right:7.5%;" class="dm-submit disabled" disabled="true">send</button> <button title="Direct messages are encrypted, only you and receiver can read them" style="margin-right:7.5%;" class="dm-submit disabled" disabled="disabled">send</button>
</div> </div>
</form> </form>
</div> </div>
<!-- MODAL DE DIRECT MESSAGES INIT --> <!-- MODAL DE DIRECT MESSAGES INIT -->
<div id="group-messages-profile-modal-control-template">
<div class="group-messages-control b-buttons">
<button class="new">New group</button>
<button class="join">Join group</button>
</div>
</div>
<div id="group-messages-messages-modal-control-template">
<div class="group-messages-control b-buttons">
<button class="profile">Profile</button>
<button class="invite">Invite peers</button>
<button class="leave">Leave group</button>
<div class="invite-form">
<input type="text" /><button disabled="disabled">Invite</button>
</div>
</div>
</div>
<div id="group-profile-modal-template">
<div class="profile-card" data-screen-name="">
<div class="profile-card-main">
<div class="profile-bio"></div>
</div>
<div class="profile-card-buttons group-messages-control b-buttons">
<button class="direct-messages-with-user" disabled="disabled">Messages</button>
<button class="invite" disabled="disabled">Invite peers</button>
<button class="show-secret-key" disabled="disabled">Secret Key</button>
<button class="leave" disabled="disabled">Leave group</button>
<div class="invite-form">
<input type="text" /><button disabled="disabled">Invite</button>
</div>
<div class="secret-key"></div>
</div>
</div>
<div class="members"></div>
</div>
<div id="group-profile-member-template">
<div class="twister-user">
<div>
<a class="twister-user-name open-profile-modal">
<img class="twister-user-photo" src="img/grayed_avatar_placeholder_24.png" alt="user-photo"/>
</a>
</div>
<div class="twister-user-info" data-screen-name="">
<a class="twister-user-name open-profile-modal">
<span class="twister-user-full"></span>
<span class="twister-user-tag"></span>
</a>
<div class="bio"></div>
</div>
</div>
</div>
<div id="group-messages-new-group-template">
<div class="module">
<div>
<p class="label">Group description</p>
<textarea class="description" placeholder="Describe group"></textarea>
</div>
<div>
<p class="label">Peers to invite</p>
<textarea class="invite" placeholder="Invite somebody"></textarea>
</div>
<div>
<button class="create" disabled="disabled">Create</button>
</div>
</div>
</div>
<div id="group-messages-join-group-template">
<div class="module">
<div>
<p class="label">Select group(s)</p>
<ul class="groups-list"></ul>
</div>
<div>
<button class="join" disabled="disabled">Join</button>
</div>
</div>
<div class="module">
<div>
<p class="label">Import secret key</p>
<input class="secret-key-import" type="textbox" placeholder="52-characters secret" size="52" rows="1"></input>
</div>
<div>
<p class="label">With group alias</p>
<input class="username-import" type="textbox" placeholder="Type group alias here" size="16" rows="1"></input>
</div>
<div>
<button class="import-secret-key" disabled="disabled">Import key</button>
</div>
</div>
</div>
<div id="groups-list-item-template">
<li>
<input type="checkbox" /> <a class="twister-user-name open-profile-modal"></a> // <span class="description"></span>
</li>
</div>
<!-- MODAL DE PROFILE --> <!-- MODAL DE PROFILE -->
<div id="profile-modal-template"> <div id="profile-modal-template">
<!-- ÁREA DE PROFILE PHOTO INIT --> <!-- ÁREA DE PROFILE PHOTO INIT -->
@ -510,7 +624,7 @@
<li><a href="#"><span class="followers-count">&nbsp;</span><span class="label">Followers</span></a></li> <li><a href="#"><span class="followers-count">&nbsp;</span><span class="label">Followers</span></a></li>
</ul> </ul>
</div> </div>
<div class="profile-card-buttons"> <div class="profile-card-buttons b-buttons">
<button class="follow" href="#">Follow</button> <button class="follow" href="#">Follow</button>
<button class="direct-messages-with-user" href="#">Direct Messages</button> <button class="direct-messages-with-user" href="#">Direct Messages</button>
<button class="mentions-from-user" href="#">Mentions</button> <button class="mentions-from-user" href="#">Mentions</button>

121
js/interface_common.js

@ -55,12 +55,56 @@ function closeModal() {
}); });
} }
function closePrompt() {
closeModalHandler('.prompt-wrapper');
}
function closeModalHandler(classBase) { function closeModalHandler(classBase) {
var modalWindows = $(classBase+':not(#templates *)'); var modalWindows = $(classBase+':not(#templates *)');
modalWindows.fadeOut('fast', function() {modalWindows.remove();}); modalWindows.fadeOut('fast', function() {modalWindows.remove();});
} }
function confirmPopup(event, req) {
event.stopPropagation();
var modal = openModal({
classBase: '.prompt-wrapper',
classAdd: 'confirm-popup',
content: $('#confirm-popup-template').children().clone(true),
title: req.titleTxt
});
if (req.messageTxt)
modal.content.find('.message').text(req.messageTxt);
var btn = modal.content.find('.confirm');
if (req.confirmTxt)
btn.text(req.confirmTxt);
else
btn.text(polyglot.t('Confirm'));
if (req.confirmFunc) {
btn.on('click', function () {
closePrompt();
req.confirmFunc(req.confirmFuncArgs);
});
} else
btn.on('click', closePrompt);
var btn = modal.content.find('.cancel');
if (req.cancelTxt)
btn.text(req.cancelTxt);
else
btn.text(polyglot.t('Cancel'));
if (req.cancelFunc) {
btn.on('click', function () {
closePrompt();
req.cancelFunc(req.cancelFuncArgs);
});
} else
btn.on('click', closePrompt);
}
function checkNetworkStatusAndAskRedirect(cbFunc, cbArg) { function checkNetworkStatusAndAskRedirect(cbFunc, cbArg) {
networkUpdate(function(args) { networkUpdate(function(args) {
if (!twisterdConnectedAndUptodate) { if (!twisterdConnectedAndUptodate) {
@ -98,7 +142,43 @@ function timeSincePost(t) {
return polyglot.t('time_ago', {time: expression}); return polyglot.t('time_ago', {time: expression});
} }
function openProfileModalWithUsernameHandler(username) { function openGroupProfileModalWithNameHandler(groupAlias) {
var modal = openModal({
classAdd: 'profile-modal',
content: $('#group-profile-modal-template').children().clone(true),
title: polyglot.t('users_profile', {username: '<span>' + groupAlias + '</span>'})
});
modal.content.find('.profile-card').attr('data-screen-name', groupAlias);
groupMsgGetGroupInfo(groupAlias,
function(req, ret) {
if (ret) {
req.modal.content.find('.profile-bio').text(ret.description);
if (ret.members.indexOf(defaultScreenName) !== -1)
req.modal.content.find('.group-messages-control').children('button').attr('disabled', false);
var membersList = req.modal.content.find('.members');
var memberTemplate = $('#group-profile-member-template').children();
for (var i = 0; i < ret.members.length; i++) {
var item = memberTemplate.clone(true).appendTo(membersList);
item.find('.twister-user-info').attr('data-screen-name', ret.members[i]);
item.find('.twister-user-name').attr('href', $.MAL.userUrl(ret.members[i]));
getAvatar(ret.members[i], item.find('.twister-user-photo'));
getFullname(ret.members[i], item.find('.twister-user-full'));
getBio(ret.members[i], item.find('.bio'));
}
}
}, {modal: modal}
);
}
function openUserProfileModalWithNameHandler(username) {
var content = $('#profile-modal-template').children().clone(true); var content = $('#profile-modal-template').children().clone(true);
updateProfileData(content, username); updateProfileData(content, username);
@ -333,18 +413,26 @@ function loadModalFromHash() {
var hashdata = hashstring.split(':'); var hashdata = hashstring.split(':');
if (hashdata[0] !== '#web+twister') if (hashdata[0] !== '#web+twister')
hashdata = hashstring.match(/(hashtag|profile|mentions|directmessages|following|conversation)\?(?:user|hashtag|post)=(.+)/); hashdata = hashstring.match(/(hashtag|profile|mentions|directmessages|following|conversation)\?(?:group|user|hashtag|post)=(.+)/); // need to rework hash scheme to use group|user|hashtag|post or drop it
if (hashdata && hashdata[1] !== undefined && hashdata[2] !== undefined) { if (hashdata && hashdata[1] !== undefined && hashdata[2] !== undefined) {
if (hashdata[1] === 'profile') if (hashdata[1] === 'profile')
openProfileModalWithUsernameHandler(hashdata[2]); if (hashdata[2][0] === '*')
openGroupProfileModalWithNameHandler(hashdata[2]);
else
openUserProfileModalWithNameHandler(hashdata[2]);
else if (hashdata[1] === 'hashtag') else if (hashdata[1] === 'hashtag')
openHashtagModalFromSearchHandler(hashdata[2]); openHashtagModalFromSearchHandler(hashdata[2]);
else if (hashdata[1] === 'mentions') else if (hashdata[1] === 'mentions')
openMentionsModalHandler(hashdata[2]); openMentionsModalHandler(hashdata[2]);
else if (hashdata[1] === 'directmessages') else if (hashdata[1] === 'directmessages') {
if (hashdata[2][0] === '*')
openGroupMessagesModal(hashdata[2]);
else
openDmWithUserModal(hashdata[2]); openDmWithUserModal(hashdata[2]);
else if (hashdata[1] === 'following')
} else if (hashdata[1] === 'following')
openFollowingModal(hashdata[2]); openFollowingModal(hashdata[2]);
else if (hashdata[1] === 'conversation') { else if (hashdata[1] === 'conversation') {
splithashdata2 = hashdata[2].split(':'); splithashdata2 = hashdata[2].split(':');
@ -352,6 +440,12 @@ function loadModalFromHash() {
} }
} else if (hashstring === '#directmessages') } else if (hashstring === '#directmessages')
directMessagesPopup(); directMessagesPopup();
else if (hashstring === '#groupmessages')
openGroupMessagesModal();
else if (hashstring === '#groupmessages+newgroup')
openGroupMessagesNewGroupModal();
else if (hashstring === '#groupmessages+joingroup')
openGroupMessagesJoinGroupModal();
else if (hashstring === '#whotofollow') else if (hashstring === '#whotofollow')
openWhoToFollowModal(); openWhoToFollowModal();
} }
@ -1317,7 +1411,7 @@ function postSubmit(e, oldLastPostId) {
} }
if (btnPostSubmit.parents('.prompt-wrapper').length) if (btnPostSubmit.parents('.prompt-wrapper').length)
closeModalHandler('.prompt-wrapper'); closePrompt();
else { else {
textArea.val('').attr('placeholder', polyglot.t('Your message was sent!')); textArea.val('').attr('placeholder', polyglot.t('Your message was sent!'));
var tweetForm = btnPostSubmit.parents('form'); var tweetForm = btnPostSubmit.parents('form');
@ -1338,7 +1432,7 @@ function retweetSubmit(e) {
newRtMsg($(this).closest('.prompt-wrapper').find('.post-data')); newRtMsg($(this).closest('.prompt-wrapper').find('.post-data'));
closeModalHandler('.prompt-wrapper'); closePrompt();
} }
function changeStyle() { function changeStyle() {
@ -1409,7 +1503,7 @@ function replaceDashboards() {
} }
function initInterfaceCommon() { function initInterfaceCommon() {
$('.cancel').on('click', function() { $('.modal-close, .modal-blackout').not('.prompt-close').on('click', function() {
if ($('.modal-content').attr('style') != undefined) if ($('.modal-content').attr('style') != undefined)
$('.modal-content').removeAttr('style'); $('.modal-content').removeAttr('style');
$('.modal-back').css('display', 'none'); $('.modal-back').css('display', 'none');
@ -1419,10 +1513,7 @@ function initInterfaceCommon() {
$('.modal-back').on('click', function() {history.back();}); $('.modal-back').on('click', function() {history.back();});
$('.prompt-close').on('click', function(e) { $('.prompt-close').on('click', closePrompt);
e.stopPropagation();
closeModalHandler('.prompt-wrapper');
});
/* /*
$('.modal-back').on('click', function() { $('.modal-back').on('click', function() {
@ -1499,6 +1590,12 @@ function killInterfaceModule(module) {
$('.module.'+module).empty().hide(); $('.module.'+module).empty().hide();
} }
function inputEnterActivator(event) {
var elemEvent = $(event.target);
elemEvent.parents(event.data.parentSelector).find(event.data.enterSelector)
.attr('disabled', elemEvent.val().trim() === '');
}
function setTextcompleteOnEventTarget(event) { function setTextcompleteOnEventTarget(event) {
// cursor has not set yet and we need to wait 100ms to skip global click event // cursor has not set yet and we need to wait 100ms to skip global click event
setTimeout(setTextcompleteOnElement, 100, event.target); setTimeout(setTextcompleteOnElement, 100, event.target);

221
js/interface_localization.js

@ -44,6 +44,9 @@ if(preferredLanguage == "en"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Cancel", "Cancel": "Cancel",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Change user", "Change user": "Change user",
"Checking...": "Checking...", // checking if username is available "Checking...": "Checking...", // checking if username is available
"Collapse": "Collapse", // smaller view of a post "Collapse": "Collapse", // smaller view of a post
@ -54,6 +57,9 @@ if(preferredLanguage == "en"){
"Detailed information": "Detailed information", "Detailed information": "Detailed information",
"DHT network down.": "DHT network down.", "DHT network down.": "DHT network down.",
"Direct Messages": "Direct Messages", "Direct Messages": "Direct Messages",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "Disable", "Disable": "Disable",
"Display mentions to @": "Display mentions to @", "Display mentions to @": "Display mentions to @",
@ -94,6 +100,16 @@ if(preferredLanguage == "en"){
"Network status": "Network status", "Network status": "Network status",
"New direct message...": "New direct message...", "New direct message...": "New direct message...",
"New Post...": "New Post...", "New Post...": "New Post...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -101,6 +117,7 @@ if(preferredLanguage == "en"){
"new_posts": "%{smart_count} new post |||| %{smart_count} new posts", "new_posts": "%{smart_count} new post |||| %{smart_count} new posts",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "nobody", // used to promote a post without attaching the user
"Not available": "Not available", // username is not available "Not available": "Not available", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -344,6 +361,9 @@ if(preferredLanguage == "es"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Cambiar de usuario", "Change user": "Cambiar de usuario",
"Checking...": "Comprobando ...", // checking if username is available "Checking...": "Comprobando ...", // checking if username is available
"Collapse": "Colapsar", // smaller view of a post "Collapse": "Colapsar", // smaller view of a post
@ -354,6 +374,9 @@ if(preferredLanguage == "es"){
"Detailed information": "Información detallada", "Detailed information": "Información detallada",
"DHT network down.": "Red DHT caida.", "DHT network down.": "Red DHT caida.",
"Direct Messages": "Mensajes directos", "Direct Messages": "Mensajes directos",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Mensajes directos con %{username}", "direct_messages_with": "Mensajes directos con %{username}",
"Disable": "Inhabilitar", "Disable": "Inhabilitar",
"Display mentions to @": "Visualización de menciones a @", "Display mentions to @": "Visualización de menciones a @",
@ -394,6 +417,16 @@ if(preferredLanguage == "es"){
"Network status": "Estado de la red", "Network status": "Estado de la red",
"New direct message...": "Nuevo mensaje directo...", "New direct message...": "Nuevo mensaje directo...",
"New Post...": "Nuevo Post...", "New Post...": "Nuevo Post...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -401,6 +434,7 @@ if(preferredLanguage == "es"){
"new_posts": "%{smart_count} nuevo post |||| %{smart_count} nuevos posts", "new_posts": "%{smart_count} nuevo post |||| %{smart_count} nuevos posts",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "Nadie", // used to promote a post without attaching the user "nobody": "Nadie", // used to promote a post without attaching the user
"Not available": "No disponible", // username is not available "Not available": "No disponible", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -628,6 +662,9 @@ if(preferredLanguage == "uk"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Відміна", "Cancel": "Відміна",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Змінити користувача", "Change user": "Змінити користувача",
"Checking...": "Перевірка...", // checking if username is available "Checking...": "Перевірка...", // checking if username is available
"Collapse": "Згорнути", // smaller view of a post "Collapse": "Згорнути", // smaller view of a post
@ -638,6 +675,9 @@ if(preferredLanguage == "uk"){
"Detailed information": "Детальна інформація", "Detailed information": "Детальна інформація",
"DHT network down.": "Мережа DHT недоступна.", "DHT network down.": "Мережа DHT недоступна.",
"Direct Messages": "Особисті повідомлення", "Direct Messages": "Особисті повідомлення",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "Вимкнено", "Disable": "Вимкнено",
"Display mentions to @": "Показати сповіщення @", "Display mentions to @": "Показати сповіщення @",
@ -679,6 +719,16 @@ if(preferredLanguage == "uk"){
"Network status": "Статус мережі", "Network status": "Статус мережі",
"New direct message...": "Нове повідомлення...", "New direct message...": "Нове повідомлення...",
"New Post...": "Що нового?", "New Post...": "Що нового?",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "Ви отримали", "You got": "Ви отримали",
"in postboard": "в стрічці", "in postboard": "в стрічці",
"in search result": "в пошуковому запиті", "in search result": "в пошуковому запиті",
@ -686,6 +736,7 @@ if(preferredLanguage == "uk"){
"new_posts": "%{smart_count} новий твіст |||| %{smart_count} нових твістів", "new_posts": "%{smart_count} новий твіст |||| %{smart_count} нових твістів",
"new_mentions": "%{smart_count} нове сповіщення |||| %{smart_count} нових сповіщень", "new_mentions": "%{smart_count} нове сповіщення |||| %{smart_count} нових сповіщень",
"new_direct_messages": "%{smart_count} нове повідомлення |||| %{smart_count} нові повідомлення", "new_direct_messages": "%{smart_count} нове повідомлення |||| %{smart_count} нові повідомлення",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "анонім", // used to promote a post without attaching the user "nobody": "анонім", // used to promote a post without attaching the user
"Not available": "Не доступне", // username is not available "Not available": "Не доступне", // username is not available
"notify_desktop_error": "Twister не може створити сповіщення: невідома помилка.", "notify_desktop_error": "Twister не може створити сповіщення: невідома помилка.",
@ -911,6 +962,9 @@ if(preferredLanguage == "zh-CN"){
"busted_oh": "噢,阻挡!", "busted_oh": "噢,阻挡!",
"busted_avowal": "系统检测到此用户试图在这里注入恶意代码", "busted_avowal": "系统检测到此用户试图在这里注入恶意代码",
"Cancel": "取消", "Cancel": "取消",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "切换用户", "Change user": "切换用户",
"Checking...": "检查中...", // checking if username is available "Checking...": "检查中...", // checking if username is available
"Collapse": "折叠", // smaller view of a post "Collapse": "折叠", // smaller view of a post
@ -921,6 +975,9 @@ if(preferredLanguage == "zh-CN"){
"Detailed information": "详细信息", "Detailed information": "详细信息",
"DHT network down.": "DHT网络中断。", "DHT network down.": "DHT网络中断。",
"Direct Messages": "私信", "Direct Messages": "私信",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "关闭", "Disable": "关闭",
"Display mentions to @": "显示@", "Display mentions to @": "显示@",
@ -961,6 +1018,16 @@ if(preferredLanguage == "zh-CN"){
"Network status": "网络状态", "Network status": "网络状态",
"New direct message...": "新私信...", "New direct message...": "新私信...",
"New Post...": "新推文...", "New Post...": "新推文...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "你收到", "You got": "你收到",
"in postboard": "在时间线里", "in postboard": "在时间线里",
"in search result": "在搜索结果里", "in search result": "在搜索结果里",
@ -968,6 +1035,7 @@ if(preferredLanguage == "zh-CN"){
"new_posts": "%{smart_count} 篇新推文", "new_posts": "%{smart_count} 篇新推文",
"new_mentions": "%{smart_count} 次新的提及", "new_mentions": "%{smart_count} 次新的提及",
"new_direct_messages": "%{smart_count} 封新私信", "new_direct_messages": "%{smart_count} 封新私信",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "无名", // used to promote a post without attaching the user "nobody": "无名", // used to promote a post without attaching the user
"Not available": "用户名不可用", // username is not available "Not available": "用户名不可用", // username is not available
"notify_desktop_error": "Twister 无法发出桌面提醒:发生未知错误。", "notify_desktop_error": "Twister 无法发出桌面提醒:发生未知错误。",
@ -1211,6 +1279,9 @@ if(preferredLanguage == "nl"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Annuleren", "Cancel": "Annuleren",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Gebruiker wijzigen", "Change user": "Gebruiker wijzigen",
"Checking...": "Controleren...", // checking if username is available "Checking...": "Controleren...", // checking if username is available
"Collapse": "Uitklappen", // smaller view of a post "Collapse": "Uitklappen", // smaller view of a post
@ -1221,6 +1292,9 @@ if(preferredLanguage == "nl"){
"Detailed information": "Gedetailleerde informatie", "Detailed information": "Gedetailleerde informatie",
"DHT network down.": "DHT netwerk down.", "DHT network down.": "DHT netwerk down.",
"Direct Messages": "Privéberichten", "Direct Messages": "Privéberichten",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "Uitschakelen", "Disable": "Uitschakelen",
"Display mentions to @": "Toon vermeldingen voor @", "Display mentions to @": "Toon vermeldingen voor @",
@ -1261,6 +1335,16 @@ if(preferredLanguage == "nl"){
"Network status": "Netwerkstatus", "Network status": "Netwerkstatus",
"New direct message...": "Nieuw privébericht...", "New direct message...": "Nieuw privébericht...",
"New Post...": "Nieuw bericht...", "New Post...": "Nieuw bericht...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -1268,6 +1352,7 @@ if(preferredLanguage == "nl"){
"new_posts": "%{smart_count} nieuw bericht |||| %{smart_count} nieuwe berichten", "new_posts": "%{smart_count} nieuw bericht |||| %{smart_count} nieuwe berichten",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "nobody", // used to promote a post without attaching the user
"Not available": "Niet beschikbaar", // username is not available "Not available": "Niet beschikbaar", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -1495,6 +1580,9 @@ if(preferredLanguage == "it"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Cancella", "Cancel": "Cancella",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Cambia utente", "Change user": "Cambia utente",
"Checking...": "Controllo in corso...", // checking if username is available "Checking...": "Controllo in corso...", // checking if username is available
"Collapse": "Chiudi", // smaller view of a post "Collapse": "Chiudi", // smaller view of a post
@ -1505,6 +1593,9 @@ if(preferredLanguage == "it"){
"Detailed information": "Informazioni dettagliate", "Detailed information": "Informazioni dettagliate",
"DHT network down.": "DHT network inaccessibile.", "DHT network down.": "DHT network inaccessibile.",
"Direct Messages": "Messaggi Diretti", "Direct Messages": "Messaggi Diretti",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Messaggi Diretti come %{username}", "direct_messages_with": "Messaggi Diretti come %{username}",
"Disable": "Disabilitato", "Disable": "Disabilitato",
"Display mentions to @": "Mostra le menzioni di @", "Display mentions to @": "Mostra le menzioni di @",
@ -1545,6 +1636,16 @@ if(preferredLanguage == "it"){
"Network status": "Status della rete", "Network status": "Status della rete",
"New direct message...": "Nuovo messaggio diretto...", "New direct message...": "Nuovo messaggio diretto...",
"New Post...": "Nuovo messaggio...", "New Post...": "Nuovo messaggio...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -1552,6 +1653,7 @@ if(preferredLanguage == "it"){
"new_posts": "%{smart_count} nuovo messaggio |||| %{smart_count} nuovi messaggi", "new_posts": "%{smart_count} nuovo messaggio |||| %{smart_count} nuovi messaggi",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nessuno", // used to promote a post without attaching the user "nobody": "nessuno", // used to promote a post without attaching the user
"Not available": "Non disponibile", // username is not available "Not available": "Non disponibile", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -1776,6 +1878,9 @@ if(preferredLanguage == "fr"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Annuler", "Cancel": "Annuler",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Changer d'utilisateur", "Change user": "Changer d'utilisateur",
"Checking...": "Vérification...", // checking if username is available "Checking...": "Vérification...", // checking if username is available
"Collapse": "Fermer", // smaller view of a post "Collapse": "Fermer", // smaller view of a post
@ -1786,6 +1891,9 @@ if(preferredLanguage == "fr"){
"Detailed information": "Informations détaillées", "Detailed information": "Informations détaillées",
"DHT network down.": "Panne du réseau DHT.", "DHT network down.": "Panne du réseau DHT.",
"Direct Messages": "Messages privés", "Direct Messages": "Messages privés",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Messages privés avec %{username}", "direct_messages_with": "Messages privés avec %{username}",
"Disable": "Désactiver", "Disable": "Désactiver",
"Display mentions to @": "Afficher les mentions pour @", "Display mentions to @": "Afficher les mentions pour @",
@ -1826,6 +1934,16 @@ if(preferredLanguage == "fr"){
"Network status": "État du réseau", "Network status": "État du réseau",
"New direct message...": "Nouveau message privé...", "New direct message...": "Nouveau message privé...",
"New Post...": "Nouveau billets...", "New Post...": "Nouveau billets...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "Tu as", "You got": "Tu as",
"in postboard": "sur le postboard", "in postboard": "sur le postboard",
"in search result": "dans les résultats de recherche", "in search result": "dans les résultats de recherche",
@ -1833,6 +1951,7 @@ if(preferredLanguage == "fr"){
"new_posts": "%{smart_count} nouveau billet |||| %{smart_count} nouveaux billets", "new_posts": "%{smart_count} nouveau billet |||| %{smart_count} nouveaux billets",
"new_mentions": "%{smart_count} nouvelle mention |||| %{smart_count} nouvelles mentions", "new_mentions": "%{smart_count} nouvelle mention |||| %{smart_count} nouvelles mentions",
"new_direct_messages": "%{smart_count} nouveau message privé |||| %{smart_count} nouveaux messages privés", "new_direct_messages": "%{smart_count} nouveau message privé |||| %{smart_count} nouveaux messages privés",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "nobody", // used to promote a post without attaching the user
"Not available": "Non disponible", // username is not available "Not available": "Non disponible", // username is not available
"notify_desktop_error": "Impossible d'afficher les notifications: une erreur inconnue est survenue.", "notify_desktop_error": "Impossible d'afficher les notifications: une erreur inconnue est survenue.",
@ -2062,6 +2181,9 @@ if(preferredLanguage == "ru"){
"busted_oh": "о нет!", "busted_oh": "о нет!",
"busted_avowal": "я пойман на попытке вставить этот подозрительный код здесь", "busted_avowal": "я пойман на попытке вставить этот подозрительный код здесь",
"Cancel": "Отмена", "Cancel": "Отмена",
"Confirm": "Несомненно",
"сonfirm_group_leaving_header": "Подтверждение ухода из группы",
"сonfirm_group_leaving_body": "Воистину покинуть группу %{alias}?",
"Change user": "Сменить пользователя", "Change user": "Сменить пользователя",
"Checking...": "Проверка...", "Checking...": "Проверка...",
"Collapse": "Свернуть", "Collapse": "Свернуть",
@ -2072,6 +2194,9 @@ if(preferredLanguage == "ru"){
"Detailed information": "Подробная информация", "Detailed information": "Подробная информация",
"DHT network down.": "Недоступна DHT сеть.", "DHT network down.": "Недоступна DHT сеть.",
"Direct Messages": "Личные сообщения", "Direct Messages": "Личные сообщения",
"Group Messages": "Групповые сообщения",
"Group Messages — New Group Creation": "Групповые сообщения — Создать новую группу",
"Group Messages — Join Group": "Групповые сообщения — Присоединиться к группе",
"direct_messages_with": "Личная переписка с %{username}", "direct_messages_with": "Личная переписка с %{username}",
"Disable": "Отключено", "Disable": "Отключено",
"Display mentions to @": "Показать ответы для @", "Display mentions to @": "Показать ответы для @",
@ -2112,6 +2237,16 @@ if(preferredLanguage == "ru"){
"Network status": "Состояние сети", "Network status": "Состояние сети",
"New direct message...": "Новое личное сообщение...", "New direct message...": "Новое личное сообщение...",
"New Post...": "Новый пост...", "New Post...": "Новый пост...",
"New group": "Создать группу",
"Group description": "Описание группы",
"Peers to invite": "Кого пригласить",
"Join group": "Присоединиться",
"Select group(s)": "Выберите группу(ы)",
"Create": "Создать",
"Join": "Присоединиться",
"Invite": "Пригласить",
"Invite peers": "Пригласить кого",
"Leave group": "Покинуть группу",
"You got": "У вас", "You got": "У вас",
"in postboard": "в ленте", "in postboard": "в ленте",
"in search result": "в результатах поиска", "in search result": "в результатах поиска",
@ -2119,6 +2254,7 @@ if(preferredLanguage == "ru"){
"new_posts": "%{smart_count} новый пост |||| %{smart_count} новых постов", "new_posts": "%{smart_count} новый пост |||| %{smart_count} новых постов",
"new_mentions": "%{smart_count} новое упоминание |||| %{smart_count} новых упоминаний", "new_mentions": "%{smart_count} новое упоминание |||| %{smart_count} новых упоминаний",
"new_direct_messages": "%{smart_count} новое личное сообщение |||| %{smart_count} новых личных сообщений", "new_direct_messages": "%{smart_count} новое личное сообщение |||| %{smart_count} новых личных сообщений",
"new_group_messages": "%{smart_count} новое сообщение в группе |||| %{smart_count} новых групповых сообщений",
"nobody": "Анонимно", // used to promote a post without attaching the user "nobody": "Анонимно", // used to promote a post without attaching the user
"Not available": "Недоступно", "Not available": "Недоступно",
"notify_desktop_error": "Твистер не может выполнить уведомление: произошла неизвестная ошибка.", "notify_desktop_error": "Твистер не может выполнить уведомление: произошла неизвестная ошибка.",
@ -2351,6 +2487,9 @@ if(preferredLanguage == "de"){
"busted_oh": "Oh nein!", "busted_oh": "Oh nein!",
"busted_avowal": "Ich bin ertappt, habe versucht, hier Schadcode einzugeben!", "busted_avowal": "Ich bin ertappt, habe versucht, hier Schadcode einzugeben!",
"Cancel": "Abbrechen", "Cancel": "Abbrechen",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Benutzer wechseln", "Change user": "Benutzer wechseln",
"Checking...": "Überprüfe...", // checking if username is available "Checking...": "Überprüfe...", // checking if username is available
"Collapse": "Einklappen", // smaller view of a post "Collapse": "Einklappen", // smaller view of a post
@ -2361,6 +2500,9 @@ if(preferredLanguage == "de"){
"Detailed information": "Detaillierte Informationen", "Detailed information": "Detaillierte Informationen",
"DHT network down.": "DHT-Netzwerk nicht verfügbar.", "DHT network down.": "DHT-Netzwerk nicht verfügbar.",
"Direct Messages": "Direktnachrichten", "Direct Messages": "Direktnachrichten",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direktnachrichten mit %{username}", "direct_messages_with": "Direktnachrichten mit %{username}",
"Disable": "Deaktivieren", "Disable": "Deaktivieren",
"Display mentions to @": "Zeige Erwähnungen von @", //Ist das richtig? Ich weiß nicht, in welchem Zusammenhang das benutzt wird. "Display mentions to @": "Zeige Erwähnungen von @", //Ist das richtig? Ich weiß nicht, in welchem Zusammenhang das benutzt wird.
@ -2402,6 +2544,16 @@ if(preferredLanguage == "de"){
"Network status": "Netzwerkstatus", "Network status": "Netzwerkstatus",
"New direct message...": "Neue Direktnachricht...", "New direct message...": "Neue Direktnachricht...",
"New Post...": "Neuer Post...", "New Post...": "Neuer Post...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "Du hast", "You got": "Du hast",
"in postboard": "in der Timeline", "in postboard": "in der Timeline",
"in search result": "in den Suchergebnissen", "in search result": "in den Suchergebnissen",
@ -2409,6 +2561,7 @@ if(preferredLanguage == "de"){
"new_posts": "%{smart_count} neuer Post |||| %{smart_count} neue Posts", "new_posts": "%{smart_count} neuer Post |||| %{smart_count} neue Posts",
"new_mentions": "%{smart_count} neue Erwähnung |||| %{smart_count} neue Erwähnungen", "new_mentions": "%{smart_count} neue Erwähnung |||| %{smart_count} neue Erwähnungen",
"new_direct_messages": "%{smart_count} neue Direktnachricht |||| %{smart_count} neue Direktnachrichten", "new_direct_messages": "%{smart_count} neue Direktnachricht |||| %{smart_count} neue Direktnachrichten",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "nobody", // used to promote a post without attaching the user
"Not available": "Nicht verfügbar", // username is not available "Not available": "Nicht verfügbar", // username is not available
"notify_desktop_error": "Twister kann keine Desktop-Meldungen anzeigen: ein unbekannter Fehler trat auf.", "notify_desktop_error": "Twister kann keine Desktop-Meldungen anzeigen: ein unbekannter Fehler trat auf.",
@ -2637,6 +2790,9 @@ if(preferredLanguage == "ja"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "キャンセル", "Cancel": "キャンセル",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "ユーザーを変更", "Change user": "ユーザーを変更",
"Checking...": "チェック...", // checking if username is available "Checking...": "チェック...", // checking if username is available
"Collapse": "閉じる", // smaller view of a post "Collapse": "閉じる", // smaller view of a post
@ -2647,6 +2803,9 @@ if(preferredLanguage == "ja"){
"Detailed information": "詳細", "Detailed information": "詳細",
"DHT network down.": "DHTネットワークがダウンしています", "DHT network down.": "DHTネットワークがダウンしています",
"Direct Messages": "ダイレクトメッセージ", "Direct Messages": "ダイレクトメッセージ",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "停止", "Disable": "停止",
"Display mentions to @": "メンションを表示する", "Display mentions to @": "メンションを表示する",
@ -2687,6 +2846,16 @@ if(preferredLanguage == "ja"){
"Network status": "ネットワークステータス", "Network status": "ネットワークステータス",
"New direct message...": "ダイレクトメッセージ...", "New direct message...": "ダイレクトメッセージ...",
"New Post...": "投稿する", "New Post...": "投稿する",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -2694,6 +2863,7 @@ if(preferredLanguage == "ja"){
"new_posts": "%{smart_count} 新投稿 |||| %{smart_count} 新投稿", "new_posts": "%{smart_count} 新投稿 |||| %{smart_count} 新投稿",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "ナナシ", // used to promote a post without attaching the user "nobody": "ナナシ", // used to promote a post without attaching the user
"Not available": "使用中", // username is not available "Not available": "使用中", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -2919,6 +3089,9 @@ if(preferredLanguage == "pt-BR"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Trocar usuário", "Change user": "Trocar usuário",
"Checking...": "Verificando...", // checking if username is available "Checking...": "Verificando...", // checking if username is available
"Collapse": "Recolher", // smaller view of a post "Collapse": "Recolher", // smaller view of a post
@ -2929,6 +3102,9 @@ if(preferredLanguage == "pt-BR"){
"Detailed information": "Informações detalhadas", "Detailed information": "Informações detalhadas",
"DHT network down.": "Falha na rede DHT", "DHT network down.": "Falha na rede DHT",
"Direct Messages": "Mensagens Diretas", "Direct Messages": "Mensagens Diretas",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Mensagens Diretas com %{username}", "direct_messages_with": "Mensagens Diretas com %{username}",
"Disable": "Desabilitado", "Disable": "Desabilitado",
"Display mentions to @": "Exibir menções a @", "Display mentions to @": "Exibir menções a @",
@ -2969,6 +3145,16 @@ if(preferredLanguage == "pt-BR"){
"Network status": "Estado da rede", "Network status": "Estado da rede",
"New direct message...": "Nova mensagem direta...", "New direct message...": "Nova mensagem direta...",
"New Post...": "Nova Postagem...", "New Post...": "Nova Postagem...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -2976,6 +3162,7 @@ if(preferredLanguage == "pt-BR"){
"new_posts": "%{smart_count} nova postagem |||| %{smart_count} novas postagens", "new_posts": "%{smart_count} nova postagem |||| %{smart_count} novas postagens",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "nobody", // used to promote a post without attaching the user
"Not available": "Indisponível", // username is not available "Not available": "Indisponível", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -3205,6 +3392,9 @@ if(preferredLanguage == "tr"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "İptal", "Cancel": "İptal",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Kullanıcı değiştir", "Change user": "Kullanıcı değiştir",
"Checking...": "Denetleniyor...", // checking if username is available "Checking...": "Denetleniyor...", // checking if username is available
"Collapse": "Kapat", // smaller view of a post "Collapse": "Kapat", // smaller view of a post
@ -3215,6 +3405,9 @@ if(preferredLanguage == "tr"){
"Detailed information": "Detaylı bilgi", "Detailed information": "Detaylı bilgi",
"DHT network down.": "DHT ağı çalışmıyor.", "DHT network down.": "DHT ağı çalışmıyor.",
"Direct Messages": "Direk Mesajlar", "Direct Messages": "Direk Mesajlar",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "%{username} ile Direk Mesajlar", "direct_messages_with": "%{username} ile Direk Mesajlar",
"Disable": "Kullanılmaz", "Disable": "Kullanılmaz",
"Display mentions to @": "@ adının geçtiği gönderiler", "Display mentions to @": "@ adının geçtiği gönderiler",
@ -3255,6 +3448,16 @@ if(preferredLanguage == "tr"){
"Network status": "Ağ durumu", "Network status": "Ağ durumu",
"New direct message...": "Yeni direk mesaj...", "New direct message...": "Yeni direk mesaj...",
"New Post...": "Yeni gönderi...", "New Post...": "Yeni gönderi...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "You got", "You got": "You got",
"in postboard": "in postboard", "in postboard": "in postboard",
"in search result": "in search result", "in search result": "in search result",
@ -3262,6 +3465,7 @@ if(preferredLanguage == "tr"){
"new_posts": "%{smart_count} yeni gönederi |||| %{smart_count} yeni gönderi", "new_posts": "%{smart_count} yeni gönederi |||| %{smart_count} yeni gönderi",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "hiçkimse", // used to promote a post without attaching the user "nobody": "hiçkimse", // used to promote a post without attaching the user
"Not available": "Kullanılamaz", // username is not available "Not available": "Kullanılamaz", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.",
@ -3488,6 +3692,9 @@ if(preferredLanguage == "cs"){
"busted_oh": "oh noes!", "busted_oh": "oh noes!",
"busted_avowal": "I\'m busted trying inject this suspicious stuff here", "busted_avowal": "I\'m busted trying inject this suspicious stuff here",
"Cancel": "Zrušit", "Cancel": "Zrušit",
"Confirm": "Confirm",
"сonfirm_group_leaving_header": "Confirm group leaving",
"сonfirm_group_leaving_body": "Are you sure want to leave %{alias} group?",
"Change user": "Změnit uživatele", "Change user": "Změnit uživatele",
"Checking...": "Ověřuji...", // checking if username is available "Checking...": "Ověřuji...", // checking if username is available
"Collapse": "Složit", // smaller view of a post "Collapse": "Složit", // smaller view of a post
@ -3498,6 +3705,9 @@ if(preferredLanguage == "cs"){
"Detailed information": "Podrobné informace", "Detailed information": "Podrobné informace",
"DHT network down.": "Síť DHT je nedostupná.", "DHT network down.": "Síť DHT je nedostupná.",
"Direct Messages": "Přímé zprávy", "Direct Messages": "Přímé zprávy",
"Group Messages": "Group Messages",
"Group Messages — New Group Creation": "Group Messages — New Group Creation",
"Group Messages — Join Group": "Group Messages — Join Group",
"direct_messages_with": "Direct messages with %{username}", "direct_messages_with": "Direct messages with %{username}",
"Disable": "Vypnuto", "Disable": "Vypnuto",
"Display mentions to @": "Zobrazit zmínky o @", "Display mentions to @": "Zobrazit zmínky o @",
@ -3538,6 +3748,16 @@ if(preferredLanguage == "cs"){
"Network status": "Stav sítě", "Network status": "Stav sítě",
"New direct message...": "Nová přímá zpráva...", "New direct message...": "Nová přímá zpráva...",
"New Post...": "Nový příspěvek...", "New Post...": "Nový příspěvek...",
"New group": "New group",
"Group description": "Group description",
"Peers to invite": "Peers to invite",
"Join group": "Join group",
"Select group(s)": "Select group(s)",
"Create": "Create",
"Join": "Join",
"Invite": "Invite",
"Invite peers": "Invite peers",
"Leave group": "Leave group",
"You got": "Máte", "You got": "Máte",
"in postboard": "na nástěnce", "in postboard": "na nástěnce",
"in search result": "ve výsledcích hledání", "in search result": "ve výsledcích hledání",
@ -3545,6 +3765,7 @@ if(preferredLanguage == "cs"){
"new_posts": "%{smart_count} nový příspěvek |||| %{smart_count} nové příspěvky |||| %{smart_count} nových příspěvků", "new_posts": "%{smart_count} nový příspěvek |||| %{smart_count} nové příspěvky |||| %{smart_count} nových příspěvků",
"new_mentions": "%{smart_count} novou zmínku |||| %{smart_count} nové zmínky |||| %{smart_count} nových zmínek", "new_mentions": "%{smart_count} novou zmínku |||| %{smart_count} nové zmínky |||| %{smart_count} nových zmínek",
"new_direct_messages": "%{smart_count} novou přímou zprávu |||| %{smart_count} nové přímé zprávy |||| %{smart_count} nových přímých zpráv", "new_direct_messages": "%{smart_count} novou přímou zprávu |||| %{smart_count} nové přímé zprávy |||| %{smart_count} nových přímých zpráv",
"new_group_messages": "%{smart_count} new group message |||| %{smart_count} new group messages",
"nobody": "nikdo", // used to promote a post without attaching the user "nobody": "nikdo", // used to promote a post without attaching the user
"Not available": "Tuto přezdívku již někdo používá", // username is not available "Not available": "Tuto přezdívku již někdo používá", // username is not available
"notify_desktop_error": "Twisteru se nepodařilo zobrazit upozornění na ploše: došlo k neznámé chybě.", "notify_desktop_error": "Twisteru se nepodařilo zobrazit upozornění na ploše: došlo k neznámé chybě.",

59
js/mobile_abstract.js

@ -142,11 +142,14 @@ var MAL = function()
// how do we map usernames into urls // how do we map usernames into urls
this.userUrl = function(username) { this.userUrl = function(username) {
if( $.hasOwnProperty("mobile") ) { //if( $.hasOwnProperty("mobile") ) {
return "#profile?user=" + username; // return "#profile?user=" + username;
} else { //} else {
if (username[0] === '*')
return "#profile?group=" + username;
else
return "#profile?user=" + username; return "#profile?user=" + username;
} //}
} }
// recover username from url (only for hash) // recover username from url (only for hash)
@ -184,13 +187,13 @@ var MAL = function()
} }
} }
this.dmchatUrl = function(username) { this.dmchatUrl = function (alias) {
if( $.hasOwnProperty("mobile") ) { if ($.hasOwnProperty('mobile')) {
return "#dmchat?user=" + username; return '#dmchat?user=' + alias;
} else { } else {
return "#directmessages?user=" + username; return '#directmessages?' + (alias[0] === '*' ? 'group' : 'user') + '=' + alias;
}
} }
};
this.followingUrl = function(username) { this.followingUrl = function(username) {
if( $.hasOwnProperty("mobile") ) { if( $.hasOwnProperty("mobile") ) {
@ -275,6 +278,18 @@ var MAL = function()
} }
} }
this.updateNewGroupDMsUI = function(newDMs) {
if( $.hasOwnProperty('mobile') ) {
} else {
var DMsCounter = $('.userMenu-groupmessages .messages-qtd');
if (newDMs) {
DMsCounter.text(newDMs).fadeIn();
} else {
DMsCounter.hide();
}
}
}
this.updateMyOwnPostCount = function(numPosts) { this.updateMyOwnPostCount = function(numPosts) {
if( $.hasOwnProperty("mobile") ) { if( $.hasOwnProperty("mobile") ) {
console.log("FIXME: implement MAL_updateMyOwnPostCount"); console.log("FIXME: implement MAL_updateMyOwnPostCount");
@ -327,29 +342,29 @@ var MAL = function()
} }
} }
this.showDMchat = function(username) { this.showDMchat = function(req) {
if (username) { if (req.alias) {
if( $.hasOwnProperty("mobile") ) { if ($.hasOwnProperty('mobile')) {
$.mobile.navigate( this.dmchatUrl(username) ); $.mobile.navigate(this.dmchatUrl(req.alias));
} else { } else {
if ($(".postboard").length) { if ($('.postboard').length) {
window.location.hash = this.dmchatUrl(username); window.location.hash = this.dmchatUrl(req.alias);
} else { } else {
window.location.href = 'home.html'+this.dmchatUrl(username); window.location.href = 'home.html'+this.dmchatUrl(req.alias);
} }
} }
} else { } else {
if( $.hasOwnProperty("mobile") ) { if ($.hasOwnProperty('mobile')) {
$.mobile.navigate( '#directmsg' ); $.mobile.navigate('#' + (req.group ? '' : 'directmsg')); // FIXME add group messages to tmobile
} else { } else {
if ($(".postboard").length) { if ($('.postboard').length) {
window.location.hash = '#directmessages'; window.location.hash = '#' + (req.group ? 'groupmessages' : 'directmessages');
} else { } else {
window.location.href = 'home.html#directmessages'; window.location.href = 'home.html#' + (req.group ? 'groupmessages' : 'directmessages');
}
} }
} }
} }
};
this.setNetworkStatusMsg = function(msg, statusGood) { this.setNetworkStatusMsg = function(msg, statusGood) {
if( $.hasOwnProperty("mobile") ) { if( $.hasOwnProperty("mobile") ) {

308
js/twister_directmsg.js

@ -3,7 +3,9 @@
// //
// Handle direct messages modal // Handle direct messages modal
function requestDMsnippetList(dmThreadList) { var _groupMsgInviteToGroupQueue = [];
function requestDMsnippetList(dmThreadList, forGroup) {
var followList = []; var followList = [];
for (var i = 0; i < followingUsers.length; i++) for (var i = 0; i < followingUsers.length; i++)
followList.push({username:followingUsers[i]}); followList.push({username:followingUsers[i]});
@ -11,15 +13,19 @@ function requestDMsnippetList(dmThreadList) {
followList.push({username:groupChatAliases[i]}); followList.push({username:groupChatAliases[i]});
twisterRpc('getdirectmsgs', [defaultScreenName, 1, followList], twisterRpc('getdirectmsgs', [defaultScreenName, 1, followList],
function(req, ret) {processDMsnippet(ret, dmThreadList);}, dmThreadList, function(req, ret) {processDMsnippet(ret, req.dmThreadList, req.forGroup);},
{dmThreadList: dmThreadList, forGroup: forGroup},
function(req, ret) {console.log('ajax error:' + ret);}, null function(req, ret) {console.log('ajax error:' + ret);}, null
); );
} }
function processDMsnippet(dmUsers, dmThreadList) { function processDMsnippet(dmUsers, dmThreadList, forGroup) {
dmThreadList.empty(); dmThreadList.empty();
for (var u in dmUsers) { for (var u in dmUsers) {
if ((forGroup && u[0] !== '*') || (!forGroup && u[0] === '*'))
continue;
// convert snipped to html and add it to date-sorted list // convert snipped to html and add it to date-sorted list
var dmItem = dmDataToSnippetItem(dmUsers[u][0], u); var dmItem = dmDataToSnippetItem(dmUsers[u][0], u);
var timeDmItem = parseInt(dmItem.attr('data-time')); var timeDmItem = parseInt(dmItem.attr('data-time'));
@ -96,7 +102,7 @@ function directMsgSubmit(e) {
replyText.siblings('#post-preview').hide(); replyText.siblings('#post-preview').hide();
newDirectMsg(replyText.val(), $('.directMessages').attr('data-dm-screen-name')); newDirectMsg(replyText.val(), $('.directMessages').attr('data-screen-name'));
replyText.val(''); replyText.val('');
} }
@ -137,7 +143,7 @@ function directMessagesPopup() {
return; return;
} }
modal = openModal({ var modal = openModal({
classAdd: 'directMessages', classAdd: 'directMessages',
content: $('.direct-messages-template').children().clone(true), content: $('.direct-messages-template').children().clone(true),
title: polyglot.t('Direct Messages') title: polyglot.t('Direct Messages')
@ -150,6 +156,7 @@ function directMessagesPopup() {
.attr('title', polyglot.t('Mark all as read')) .attr('title', polyglot.t('Mark all as read'))
.on('click', function() { .on('click', function() {
for (var user in _newDMsPerUser) { for (var user in _newDMsPerUser) {
if (!user[0] === '*')
_newDMsPerUser[user] = 0; _newDMsPerUser[user] = 0;
} }
saveDMsToStorage(); saveDMsToStorage();
@ -164,13 +171,13 @@ function openDmWithUserModal(dm_screenname) {
return; return;
} }
modal = openModal({ var modal = openModal({
classAdd: 'directMessages', classAdd: 'directMessages',
content: $('.messages-thread-template').children().clone(true), content: $('.messages-thread-template').children().clone(true),
title: polyglot.t('direct_messages_with', {username: '<span>' + dm_screenname + '</span>'}) title: polyglot.t('direct_messages_with', {username: '<span>' + dm_screenname + '</span>'})
}); });
modal.self.attr('data-dm-screen-name', dm_screenname); modal.self.attr('data-screen-name', dm_screenname);
if (dm_screenname.length && dm_screenname[0] === '*') if (dm_screenname.length && dm_screenname[0] === '*')
getGroupChatName(dm_screenname, modal.self.find('.modal-header h3 span')); getGroupChatName(dm_screenname, modal.self.find('.modal-header h3 span'));
@ -183,12 +190,233 @@ function openDmWithUserModal(dm_screenname) {
.addClass('open').appendTo(modal.content).fadeIn('fast'); .addClass('open').appendTo(modal.content).fadeIn('fast');
} }
function openGroupMessagesModal(groupAlias) {
if (!defaultScreenName) {
alert(polyglot.t('You have to log in to use group messages.'));
return;
}
if (typeof groupAlias === 'undefined') {
var modal = openModal({
classAdd: 'directMessages groupMessages',
content: $('.direct-messages-template').children().clone(true),
title: polyglot.t('Group Messages')
});
modal.content.prepend($('#group-messages-profile-modal-control-template').children().clone(true));
requestDMsnippetList(modal.content.find('.direct-messages-list'), true);
modal.self.find('.mark-all-as-read')
.css('display', 'inline')
.attr('title', polyglot.t('Mark all as read'))
.on('click', function() {
for (var user in _newDMsPerUser) {
if (user[0] === '*')
_newDMsPerUser[user] = 0;
}
saveDMsToStorage();
$.MAL.updateNewGroupDMsUI(getNewGroupDMsCount());
})
;
} else {
var modal = openModal({
classAdd: 'directMessages groupMessages',
title: polyglot.t('direct_messages_with', {username: '<span>' + groupAlias + '</span>'})
});
modal.self.attr('data-screen-name', groupAlias);
getGroupChatName(groupAlias, modal.self.find('.modal-header h3 span'));
groupMsgGetGroupInfo(groupAlias,
function(req, ret) {
if (ret && ret.members.indexOf(defaultScreenName) !== -1) {
req.modal.content.append($('.messages-thread-template').children().clone(true));
requestDmConversationModal(req.modal.content.find('.direct-messages-thread'), req.groupAlias);
var control = $('#group-messages-messages-modal-control-template').children().clone(true)
.appendTo(req.modal.content);
control.find('.profile').on('click', {groupAlias: req.groupAlias},
function (event) {window.location.href = $.MAL.userUrl(event.data.groupAlias);}
);
$('.dm-form-template').children().clone(true)
.addClass('open').appendTo(req.modal.content).fadeIn('fast');
}
}, {groupAlias: groupAlias, modal: modal}
);
}
}
function openGroupMessagesNewGroupModal() {
if (!defaultScreenName) {
alert(polyglot.t('You have to log in to use group messages.'));
return;
}
var modal = openModal({
classAdd: 'group-messages-new-group',
content: $('#group-messages-new-group-template').children().clone(true),
title: polyglot.t('Group Messages — New Group Creation')
});
modal.content.find('.description').on('input',
{parentSelector: '.module', enterSelector: '.create'}, inputEnterActivator);
modal.content.find('.create').on('click', function (event) {
var elemEvent = $(event.target);
var elemForm = elemEvent.parents('.module')
var peersToInvite = elemForm.find('.invite').val().toLowerCase().match(/@\w+/g);
if (peersToInvite)
peersToInvite = peersToInvite.join('').slice(1).split('@');
groupMsgCreateGroup(elemForm.find('.description').val(), peersToInvite);
closeModal();
});
}
function openGroupMessagesJoinGroupModal() {
if (!defaultScreenName) {
alert(polyglot.t('You have to log in to use group messages.'));
return;
}
var modal = openModal({
classAdd: 'group-messages-join-group',
content: $('#group-messages-join-group-template').children().clone(true),
title: polyglot.t('Group Messages — Join Group')
});
var elemGroupsList = modal.content.find('.groups-list');
var elemGroupTemplate = $('#groups-list-item-template').children();
groupMsgGetGroupsForPeer(defaultScreenName,
function(req, ret) {
if (ret) {
for (var i = 0; i < groupChatAliases.length; i++) {
if (ret.indexOf(groupChatAliases[i]) === -1) {
var item = req.elemGroupTemplate.clone(true).appendTo(req.elemGroupsList);
item.find('input')
.attr('data-screen-name', groupChatAliases[i])
.on('click', function (event) {
var elemEvent = $(event.target);
elemEvent.parents('.module').find('.join')
.attr('disabled',
!elemEvent.parents('.groups-list').find('input:checked').length);
})
;
item.find('.twister-user-name')
.text(groupChatAliases[i])
.attr('href', $.MAL.userUrl(groupChatAliases[i]))
;
getGroupChatName(groupChatAliases[i], item.find('.description')); // FIXME
}
}
}
}, {elemGroupsList: elemGroupsList, elemGroupTemplate: elemGroupTemplate}
);
modal.content.find('.join').on('click', function (event) {
var elemEvent = $(event.target);
var groups = elemEvent.parents('.module').find('.groups-list input:checked');
for (var i = 0; i < groups.length; i++)
groupMsgInviteToGroup(groups[i].getAttribute('data-screen-name'), [defaultScreenName]);
closeModal();
});
modal.content.find('.secret-key-import, .username-import').on('input', importSecretKeypress);
modal.content.find('.import-secret-key').on('click', function (event) {
var elemModule = $(event.target).parents('.module');
var groupAlias = elemModule.find('.username-import').val().toLowerCase();
var secretKey = elemModule.find('.secret-key-import').val();
twisterRpc('importprivkey', [secretKey, groupAlias],
function(req, ret) {
groupMsgInviteToGroup(req.groupAlias, [defaultScreenName]);
closeModal();
}, {groupAlias: groupAlias},
function(req, ret) {
alert(polyglot.t('Error in \'importprivkey\'', {rpc: ret.message}));
}, null
);
});
}
function groupMsgCreateGroup(description, peersToInvite) {
if (!peersToInvite)
peersToInvite = [];
twisterRpc('creategroup', [description],
function(peersToInvite, ret) {
groupMsgInviteToGroup(ret, peersToInvite.push(defaultScreenName));
}, peersToInvite,
function(req, ret) {
alert(polyglot.t('error', {error: 'can\'t create group — ' + ret.message}));
}, null
);
}
function groupMsgInviteToGroup(groupAlias, peersToInvite) {
_groupMsgInviteToGroupQueue.push({groupAlias: groupAlias, peersToInvite: peersToInvite});
if (_groupMsgInviteToGroupQueue.length === 1)
doGroupMsgInviteToGroup();
}
function doGroupMsgInviteToGroup() {
twisterRpc('newgroupinvite',
[defaultScreenName, lastPostId + 1,
_groupMsgInviteToGroupQueue[0].groupAlias, _groupMsgInviteToGroupQueue[0].peersToInvite],
function(req, ret) {
incLastPostId();
_groupMsgInviteToGroupQueue.shift();
if (_groupMsgInviteToGroupQueue.length)
setTimeout(doGroupMsgInviteToGroup, 200);
}, null,
function(req, ret) {
alert(polyglot.t('error',
{error: 'can\'t invite ' + req[1] + ' to ' + req[0] + ' group — ' + ret.message}));
_groupMsgInviteToGroupQueue.shift();
if (_groupMsgInviteToGroupQueue.length)
setTimeout(doGroupMsgInviteToGroup, 200);
}, [_groupMsgInviteToGroupQueue[0].groupAlias, _groupMsgInviteToGroupQueue[0].peersToInvite]
);
}
function groupMsgLeaveGroup(groupAlias, cbFunc, cbArgs) {
twisterRpc('leavegroup', [defaultScreenName, groupAlias],
cbFunc, cbArgs,
function(req, ret) {alert(polyglot.t('error', {error: 'can\'t leave group — ' + ret.message}));}, null
);
}
function groupMsgGetGroupsForPeer(peer, cbFunc, cbArgs) {
twisterRpc('listgroups', [peer],
cbFunc, cbArgs,
function(req, ret) {alert(polyglot.t('error', {error: 'can\'t list groups — ' + ret.message}));}, null
);
}
function groupMsgGetGroupInfo(groupAlias, cbFunc, cbArgs) {
twisterRpc('getgroupinfo', [groupAlias],
cbFunc, cbArgs,
function(req, ret) {alert(polyglot.t('error', {error: 'can\'t get group info — ' + ret.message}));}, null
);
}
function initInterfaceDirectMsg() { function initInterfaceDirectMsg() {
$('.direct-messages').attr('href','#directmessages'); $('.direct-messages').attr('href', '#directmessages');
$('.userMenu-messages a').attr('href','#directmessages'); $('.userMenu-messages a').attr('href', '#directmessages');
$('.groupmessages').attr('href', '#groupmessages');
$('.userMenu-groupmessages a').attr('href', '#groupmessages');
$('#dm-snippet-template').on('click', function() { $('#dm-snippet-template').on('click', function() {
window.location.hash = '#directmessages?user=' + $(this).attr('data-dm-screen-name'); var alias = $(this).attr('data-screen-name');
window.location.hash = '#directmessages?' + (alias[0] === '*' ? 'group' : 'user') + '=' + alias;
}); });
$('.dm-submit').on('click', directMsgSubmit); $('.dm-submit').on('click', directMsgSubmit);
@ -196,5 +424,63 @@ function initInterfaceDirectMsg() {
window.location.hash = '#directmessages?user=' + window.location.hash = '#directmessages?user=' +
$(this).closest('[data-screen-name]').attr('data-screen-name'); $(this).closest('[data-screen-name]').attr('data-screen-name');
}); });
}
$('.group-messages-control .invite').on('click', function (event) {
$(event.target).siblings('.invite-form').toggle();
});
$('.group-messages-control .invite-form input').on('input',
{parentSelector: '.invite-form', enterSelector: 'button'}, inputEnterActivator);
$('.group-messages-control .invite-form button').on('click', function (event) {
var elemEvent = $(event.target);
var elemInput = elemEvent.siblings('input');
var peersToInvite = elemInput.val().toLowerCase().match(/@\w+/g);
if (peersToInvite)
peersToInvite = peersToInvite.join('').slice(1).split('@');
groupMsgInviteToGroup(elemEvent.closest('[data-screen-name]').attr('data-screen-name'),
peersToInvite);
elemInput.val('');
elemEvent.parents('.invite-form').toggle();
// TODO reload group members list
});
$('.group-messages-control .join').on('click', function () {
window.location.hash = '#groupmessages+joingroup';
});
$('.group-messages-control .leave').on('click', function (event) {
var elemEvent = $(event.target);
var groupAlias = elemEvent.closest('[data-screen-name]').attr('data-screen-name');
confirmPopup(event, {
titleTxt: polyglot.t('сonfirm_group_leaving_header'),
messageTxt: polyglot.t('сonfirm_group_leaving_body', {alias: groupAlias}),
confirmFunc: function (groupAlias) {
groupMsgLeaveGroup(groupAlias, function () {history.back();});
},
confirmFuncArgs: groupAlias
});
});
$('.group-messages-control .new').on('click', function () {
window.location.hash = '#groupmessages+newgroup';
});
$('.group-messages-control .secret-key').on('click', promptCopyAttrData);
$('.group-messages-control .show-secret-key').on('click', function (event) {
var elemEvent = $(event.target);
var elemSecretKey = elemEvent.siblings('.secret-key')
.toggle();
if (elemSecretKey.css('display') !== 'none') {
dumpPrivkey(elemEvent.closest('[data-screen-name]').attr('data-screen-name'),
function(req, ret) {req.text(ret).attr('data', ret);},
elemSecretKey
);
} else
elemSecretKey.text('').attr('data', '');
});
}

2
js/twister_following.js

@ -710,7 +710,7 @@ function initUserSearch() {
$('.following-config-method-buttons .public-following') $('.following-config-method-buttons .public-following')
.on('click', function(e) { .on('click', function(e) {
setFollowingMethod(e); setFollowingMethod(e);
closeModalHandler('.prompt-wrapper'); closePrompt();
window.setTimeout(loadModalFromHash, 500); // delay reload so dhtput may do it's job window.setTimeout(loadModalFromHash, 500); // delay reload so dhtput may do it's job
}) })
; ;

2
js/twister_formatpost.js

@ -257,7 +257,7 @@ function setPostInfoSent(n, k, item) {
function dmDataToSnippetItem(dmData, remoteUser) { function dmDataToSnippetItem(dmData, remoteUser) {
var dmItem = $("#dm-snippet-template").clone(true); var dmItem = $("#dm-snippet-template").clone(true);
dmItem.removeAttr('id'); dmItem.removeAttr('id');
dmItem.attr("data-dm-screen-name",remoteUser); dmItem.attr('data-screen-name', remoteUser);
dmItem.attr("data-last_id", dmData.id); dmItem.attr("data-last_id", dmData.id);
dmItem.attr("data-time", dmData.time); dmItem.attr("data-time", dmData.time);

37
js/twister_newmsgs.js

@ -117,8 +117,25 @@ function requestMentionsCount() {
if (newDMs) { if (newDMs) {
$.MAL.soundNotifyDM(); $.MAL.soundNotifyDM();
if ($.Options.showDesktopNotifDMs.val === 'enable') if ($.Options.showDesktopNotifDMs.val === 'enable') {
$.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_direct_messages', newDMs)+'.', false, 'twister_notification_new_DMs', $.Options.showDesktopNotifDMsTimer.val, function(){$.MAL.showDMchat()}, false) $.MAL.showDesktopNotif(false,
polyglot.t('You got') + ' ' + polyglot.t('new_direct_messages', newDMs) + '.',
false, 'twister_notification_new_DMs', $.Options.showDesktopNotifDMsTimer.val,
function () {$.MAL.showDMchat();}, false
);
}
}
var newDMs = getNewGroupDMsCount();
if (newDMs) {
$.MAL.soundNotifyDM();
if ($.Options.showDesktopNotifDMs.val === 'enable') {
$.MAL.showDesktopNotif(false,
polyglot.t('You got') + ' ' + polyglot.t('new_group_messages', newDMs) + '.',
false, 'twister_notification_new_DMs', $.Options.showDesktopNotifDMsTimer.val,
function () {$.MAL.showDMchat({group: true});}, false
);
}
} }
} }
} }
@ -197,6 +214,7 @@ function requestDMsCount() {
if (_newDMsUpdated) { if (_newDMsUpdated) {
saveDMsToStorage(); saveDMsToStorage();
$.MAL.updateNewDMsUI(getNewDMsCount()); $.MAL.updateNewDMsUI(getNewDMsCount());
$.MAL.updateNewGroupDMsUI(getNewGroupDMsCount());
} }
}, null, }, null,
function(req, ret) {console.warn('ajax error:' + ret);}, null function(req, ret) {console.warn('ajax error:' + ret);}, null
@ -207,7 +225,18 @@ function getNewDMsCount() {
var newDMs = 0; var newDMs = 0;
for (var user in _newDMsPerUser) { for (var user in _newDMsPerUser) {
if (_newDMsPerUser[user]) if (!user[0] === '*' && _newDMsPerUser[user])
newDMs += _newDMsPerUser[user];
}
return newDMs;
}
function getNewGroupDMsCount() {
var newDMs = 0;
for (var user in _newDMsPerUser) {
if (user[0] === '*' && _newDMsPerUser[user])
newDMs += _newDMsPerUser[user]; newDMs += _newDMsPerUser[user];
} }
@ -220,6 +249,7 @@ function resetNewDMsCountForUser(user, lastId) {
saveDMsToStorage(); saveDMsToStorage();
$.MAL.updateNewDMsUI(getNewDMsCount()); $.MAL.updateNewDMsUI(getNewDMsCount());
$.MAL.updateNewGroupDMsUI(getNewGroupDMsCount());
} }
function updateGroupList() { function updateGroupList() {
@ -232,6 +262,7 @@ function updateGroupList() {
function initDMsCount() { function initDMsCount() {
loadDMsFromStorage(); loadDMsFromStorage();
$.MAL.updateNewDMsUI(getNewDMsCount()); $.MAL.updateNewDMsUI(getNewDMsCount());
$.MAL.updateNewGroupDMsUI(getNewGroupDMsCount());
//quick hack to obtain list of group chat aliases //quick hack to obtain list of group chat aliases
updateGroupList(); updateGroupList();
setInterval(updateGroupList, 60000); setInterval(updateGroupList, 60000);

61
theme_calm/css/profile.css

@ -62,34 +62,14 @@
color: #f8f8f8; color: #f8f8f8;
} }
.profile-card-buttons .profile-card-buttons {
{ padding: 4px 0;
position: absolute;
bottom: 30px;
right: 0;
} }
.profile-card-buttons .direct-messages-with-user, .twister-user-info .profile-card-buttons {
.profile-card-buttons .mentions-from-user, position: absolute;
.profile-card-buttons .follow, top: 0;
.profile-card-buttons .unfollow right: 0;
{
display: inline;
padding: 4px 12px;
font-size: 12px;
width: auto;
text-align: center;
color: rgba( 0, 0, 0, .7 );
background: rgba( 0, 0, 0, .1 );
border: none;
transition: all .2s linear;
}
.profile-card-buttons .direct-messages-with-user:hover,
.profile-card-buttons .mentions-from-user:hover
{
color: #fff;
background: #b2d67b;
} }
.profile-card.forEdition .profile-card.forEdition
@ -397,3 +377,32 @@ h2.profile-screen-name {
.profile-modal a.profile-bio:empty { .profile-modal a.profile-bio:empty {
display: none; display: none;
} }
.group-messages-control .invite-form, .group-messages-control .secret-key {
display: none;
font-size: 12px;
text-align: center;
padding: 4px 0;
}
.group-messages-control .invite-form input {
border: solid 1px rgba(0, 0, 0, .3);
vertical-align: middle;
width: 73%;
margin: 0 4px;
}
.group-messages-control .invite-form input:focus {
border: solid 1px rgba(118, 145, 206, .8);
}
.group-messages-control .invite-form button {
color: #DDD;
background-color: #45474D;
border: medium none;
vertical-align: middle;
}
.group-messages-control .invite-form button:hover {
color: #FFF;
}

333
theme_calm/css/style.css

@ -107,28 +107,24 @@ h3
************** BUTTONS *************** ************** BUTTONS ***************
**************************************/ **************************************/
button button {
{ color: rgba(255, 255, 255, .8);
background: #45474d; background: #45474d;
color: rgba( 255, 255, 255, .8 );
border: none; border: none;
padding: 5px 10px; padding: 5px 10px;
cursor: pointer; cursor: pointer;
} }
button:hover button:hover {
{
color: #fff; color: #fff;
} }
button.disabled button:disabled, button.disabled {
{
opacity: .4; opacity: .4;
} }
button.disabled:hover button:disabled:hover, button.disabled:hover {
{ color: rgba(255, 255, 255, .8);
color: rgba( 255, 255, 255, .8 );
} }
button.follow, button.unfollow, .following-list button.private { button.follow, button.unfollow, .following-list button.private {
@ -172,11 +168,32 @@ button.unfollow:hover {
margin-right: 10px; margin-right: 10px;
} }
.b-buttons {
text-align: right;
padding: 4px;
}
.b-buttons button {
color: rgba(0, 0, 0, .7);
background-color: rgba(0, 0, 0, .08);
border: none;
font-size: 12px;
text-align: center;
width: auto;
padding: 4px 12px;
transition: all .1s linear;
}
.b-buttons button:hover {
color: #FFF;
background: #B2D67B;
}
/************************************* /*************************************
**************************** MENU ***** **************** MENU ****************
**************************************/ **************************************/
.userMenu
{ .userMenu {
width: 900px; width: 900px;
position: fixed; position: fixed;
left: 50%; left: 50%;
@ -185,11 +202,13 @@ button.unfollow:hover {
background: #43464d; background: #43464d;
z-index: 2; z-index: 2;
} }
.userMenu.w1200 { .userMenu.w1200 {
width: 1200px; width: 1200px;
margin-left: -600px; margin-left: -600px;
} }
.userMenu:after{
.userMenu:after {
position: absolute; position: absolute;
content: ''; content: '';
width: 9999px; width: 9999px;
@ -197,7 +216,8 @@ button.unfollow:hover {
background: #43464d; background: #43464d;
z-index: -999; z-index: -999;
} }
.userMenu:before{
.userMenu:before {
position: absolute; position: absolute;
content: ''; content: '';
width: 9999px; width: 9999px;
@ -206,16 +226,14 @@ button.unfollow:hover {
background: #43464d; background: #43464d;
z-index: -999; z-index: -999;
} }
.userMenu > ul
{ .userMenu > ul > li {
}
.userMenu > ul > li
{
float: left; float: left;
height: 40px;
margin: 0; margin: 0;
} }
.userMenu > ul > li > a
{ .userMenu > ul > li > a {
line-height: 40px; line-height: 40px;
height: 40px; height: 40px;
padding: 0 20px 0 45px; padding: 0 20px 0 45px;
@ -227,119 +245,87 @@ button.unfollow:hover {
transition: all .2s linear; transition: all .2s linear;
position: relative; position: relative;
} }
.userMenu li > a:hover
{ .userMenu li:hover, .userMenu li:active {
background-color: rgba(0, 0, 0 , .4);
}
.userMenu li:hover > a, .userMenu li:active > a {
text-decoration: none; text-decoration: none;
opacity: 1; opacity: 1;
} }
.userMenu li.current > a
{ .userMenu li.current {
background-color: #768FCE;
}
.userMenu li.current > a {
color: #fff; color: #fff;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-home > a
{ .userMenu li.userMenu-home > a {
background: url(../img/home.png) no-repeat center center; background: url(../img/home.png) no-repeat center center;
padding-left: 40px; padding-left: 40px;
} }
.userMenu li.userMenu-home:hover > a
{ .userMenu li.userMenu-connections > a {
background: url(../img/home.png) no-repeat center center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-home.current > a
{
background: url(../img/home.png) no-repeat center center #768fce;
}
.userMenu li.userMenu-connections > a
{
background: url(../img/connections.png) no-repeat center center; background: url(../img/connections.png) no-repeat center center;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-connections:hover > a
{ .userMenu li.userMenu-network > a {
background: url(../img/connections.png) no-repeat center center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-connections.current > a
{
background: url(../img/connections.png) no-repeat 5px center #b43e34;
}
.userMenu li.userMenu-network > a
{
background: url(../img/network.png) no-repeat 5px center; background: url(../img/network.png) no-repeat 5px center;
padding-left: 60px; padding-left: 60px;
} }
.userMenu li.userMenu-network:hover > a
{
background: url(../img/network.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-network.current > a
{
background: url(../img/network.png) no-repeat 5px center #768fce;
}
.userMenu li.userMenu-following > a .userMenu li.userMenu-following > a {
{
background: url(../img/following.png) no-repeat 5px center; background: url(../img/following.png) no-repeat 5px center;
padding-left: 50px; padding-left: 50px;
} }
.userMenu li.userMenu-following:hover > a
{ .userMenu li.userMenu-options > a {
background: url(../img/following.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-following.current > a
{
background: url(../img/following.png) no-repeat 5px center #768fce;
}
.userMenu li.userMenu-options > a
{
background: url(../img/switch.png) no-repeat 5px center; background: url(../img/switch.png) no-repeat 5px center;
padding-left: 50px; padding-left: 50px;
} }
.userMenu li.userMenu-options:hover > a
{ .userMenu li.userMenu-messages > a {
background: url(../img/switch.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-options.current > a
{
background: url(../img/switch.png) no-repeat 5px center #768fce;
}
.userMenu li.userMenu-messages > a
{
background: url(../img/messages.png) no-repeat center center; background: url(../img/messages.png) no-repeat center center;
padding: 0 25px 0 35px; padding: 0 25px 0 35px;
opacity: 1; opacity: 1;
} }
.userMenu li.userMenu-messages:hover > a
{ .userMenu li.userMenu-messages > a:empty {
background: url(../img/messages.png) no-repeat center center rgba( 0, 0, 0 , .4 ); padding: 0 20px 0 30px;
opacity: .7;
} }
.userMenu li.userMenu-messages.current > a
{ .userMenu li.userMenu-groupmessages > a {
background: url(../img/messages.png) no-repeat center center #b43e34; background: url(../img/groupmessages.png) no-repeat center center;
background-size: 22px 22px;
padding: 0 24px;
opacity: 0.9;
} }
.userMenu li.userMenu-profile > a
{ .userMenu li.userMenu-profile > a {
background: url(../img/profile.png) no-repeat 5px center; background: url(../img/profile.png) no-repeat 5px center;
padding-left: 35px; padding-left: 35px;
} }
.userMenu li.userMenu-profile:hover > a
{ .userMenu li.userMenu-config {
background: url(../img/profile.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-profile.current > a
{
background: url(../img/profile.png) no-repeat 5px center #768fce;
}
.userMenu li.userMenu-config
{
float: right; float: right;
position: relative; position: relative;
} }
.userMenu li.userMenu-search
{ .userMenu li.userMenu-search {
float: right; float: right;
position: relative; position: relative;
} }
.userMenu li.userMenu-search:hover {
background-color: transparent;
}
input.userMenu-search-field::-webkit-input-placeholder { input.userMenu-search-field::-webkit-input-placeholder {
color: #4d4d4d; color: #4d4d4d;
font-style: italic; font-style: italic;
@ -368,24 +354,20 @@ input.userMenu-search-field:focus::-moz-placeholder {
input.userMenu-search-field:focus::-ms-input-placeholder { input.userMenu-search-field:focus::-ms-input-placeholder {
color: #fff; color: #fff;
} }
.userMenu li.userMenu-config > a
{ .userMenu li.userMenu-config > a {
background: url(../img/config.png) no-repeat 5px center; background: url(../img/config.png) no-repeat 5px center;
padding: 0 30px 0 45px; padding: 0 30px 0 45px;
} }
.userMenu li.userMenu-config > a:after
{ .userMenu li.userMenu-config > a:after {
content: "▼"; content: "▼";
position: absolute; position: absolute;
font-size: 10px; font-size: 10px;
transition: all .2 linear; transition: all .2 linear;
margin-left: 8px; margin-left: 8px;
} }
.userMenu li.userMenu-config:hover > a,
.userMenu li.userMenu-config:active > a
{
background: url(../img/config.png) no-repeat 5px center rgba( 0, 0, 0 , .4 );
}
.userMenu li.userMenu-dhtindicator { .userMenu li.userMenu-dhtindicator {
background: #000; background: #000;
width: 70px; width: 70px;
@ -402,6 +384,7 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
transition: all 200ms; transition: all 200ms;
border-radius: 10px; border-radius: 10px;
} }
.userMenu li.userMenu-dhtindicator a { .userMenu li.userMenu-dhtindicator a {
display: inline-block; display: inline-block;
font: 12px/25px "Open Sans", sans-serif; font: 12px/25px "Open Sans", sans-serif;
@ -410,6 +393,7 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
height: 25px; height: 25px;
opacity: .9; opacity: .9;
} }
.userMenu li.userMenu-dhtindicator a:before { .userMenu li.userMenu-dhtindicator a:before {
content: 'DHT:'; content: 'DHT:';
display: inline-block; display: inline-block;
@ -418,19 +402,15 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
width: 70px; width: 70px;
height: 25px; height: 25px;
} }
.userMenu li.userMenu-dhtindicator:hover { .userMenu li.userMenu-dhtindicator:hover {
opacity: 1; opacity: 1;
-webkit-box-shadow: inset 0 0 15px #000; -webkit-box-shadow: inset 0 0 15px #000;
-moz-box-shadow: inset 0 0 15px #000; -moz-box-shadow: inset 0 0 15px #000;
box-shadow: inset 0 0 15px #000; box-shadow: inset 0 0 15px #000;
} }
.userMenu li.userMenu-messages > a:empty
{ .wrapper {
padding: 0 20px 0 30px;
opacity: .7;
}
.wrapper
{
width: 900px; width: 900px;
margin: 0 auto; margin: 0 auto;
background: #e0e6f5; background: #e0e6f5;
@ -439,15 +419,18 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
z-index: 1; z-index: 1;
min-height: 100%; min-height: 100%;
} }
.wrapper.w1200 { .wrapper.w1200 {
width: 1200px; width: 1200px;
padding: 55px 7px 15px 7px; padding: 55px 7px 15px 7px;
} }
.dashboard.left { .dashboard.left {
width: 320px; width: 320px;
position: fixed; position: fixed;
top: 55px; top: 55px;
} }
.dashboard.right { .dashboard.right {
width: 320px; width: 320px;
position: fixed; position: fixed;
@ -455,18 +438,18 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
margin-left: 864px; margin-left: 864px;
} }
.module .module {
{
border: solid 1px rgba( 69, 71, 77, .1 ); border: solid 1px rgba( 69, 71, 77, .1 );
background: #f3f5fb; background: #f3f5fb;
} }
.dashboard .module { .dashboard .module {
margin: 0 0 3%; margin: 0 0 3%;
border-radius: 6px; border-radius: 6px;
} }
.messages-qtd
{ .messages-qtd {
position: absolute; position: absolute;
background: #ef0807; background: #ef0807;
color: #fff; color: #fff;
@ -475,10 +458,11 @@ input.userMenu-search-field:focus::-ms-input-placeholder {
font-size: 8px; font-size: 8px;
margin-top: 4px; margin-top: 4px;
} }
.userMenu-connections .messages-qtd
{ .userMenu-connections .messages-qtd {
margin: 4px 0 0 -5px; margin: 4px 0 0 -5px;
} }
/******************************************************* /*******************************************************
****************** CONFIG SUBMENU & SEARCH RESULTS ***** ****************** CONFIG SUBMENU & SEARCH RESULTS *****
*******************************************************/ *******************************************************/
@ -1962,6 +1946,100 @@ textarea.splited-post {
content: '\2714'; content: '\2714';
} }
/*************************************
****** GM NEW GROUP SETUP MODAL ******
**************************************/
.group-messages-new-group.modal-wrapper {
height: auto; /*about 320px*/
margin-top: -160px;
}
.group-messages-new-group .modal-content .module {
margin: 4px;
}
.group-messages-new-group .modal-content div div {
width: 100%;
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-new-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-new-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-new-group .modal-content textarea {
border: solid 1px rgba(0, 0, 0, .3);
border-radius: 3px;
width: 500px;
height: 56px;
resize: none;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-new-group .modal-content textarea:focus {
border: solid 1px rgba(118, 145, 206, .8);
box-shadow: 0 0 10px rgba(0, 0, 0, .3);
}
/*************************************
****** GM JOIN GROUP SETUP MODAL *****
**************************************/
.group-messages-join-group.modal-wrapper {
height: auto; /*about 360px*/
margin-top: -240px;
}
.group-messages-join-group .modal-content .module {
margin: 4px;
}
.group-messages-join-group .modal-content div div {
width: 100%;
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-join-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-join-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-join-group .modal-content input {
border: solid 1px rgba(0, 0, 0, .3);
border-radius: 3px;
width: 500px;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-join-group .modal-content input:focus {
border: solid 1px rgba(118, 145, 206, .8);
box-shadow: 0 0 10px rgba(0, 0, 0, .3);
}
.group-messages-join-group .modal-content input[type='checkbox'] {
display: inline;
width: auto;
margin: 2px;
}
.group-messages-join-group .modal-content .groups-list {
height: 120px;
overflow-y: auto;
margin: 8px 8px 0;
}
/************************************* /*************************************
*********** NEW USER MODAL *********** *********** NEW USER MODAL ***********
**************************************/ **************************************/
@ -2087,6 +2165,7 @@ textarea.splited-post {
.prompt-wrapper { .prompt-wrapper {
background: rgba(255,255,255, 1.0); background: rgba(255,255,255, 1.0);
font-size: 13px;
z-index: 5; z-index: 5;
position: fixed; position: fixed;
top: 50%; top: 50%;
@ -2107,6 +2186,20 @@ textarea.splited-post {
margin: 4px; margin: 4px;
} }
/*************************************
*********** CONFIRM POPUP ************
**************************************/
.confirm-popup .message {
text-align: center;
margin: 12px;
}
.confirm-popup .modal-buttons {
text-align: center;
padding: 4px;
}
/************************************* /*************************************
****** FOLLOWING-CONFIG PROMPT ******* ****** FOLLOWING-CONFIG PROMPT *******
**************************************/ **************************************/

170
theme_nin/css/style.css

@ -56,7 +56,7 @@
font-style: normal; font-style: normal;
} }
/* line 64, ../sass/_fonts.sass */ /* line 64, ../sass/_fonts.sass */
[class^="icon-"]:before, [class*=" icon-"]:before, .extend-icon:before, .userMenu li.userMenu-config > a:before, .post-retransmited-icon:before, .post-reply:before, .post-propagate:before, .post-favorite:before, .post .show-more:before, .mini-profile-actions span:before, ul.userMenu-search-profiles button:before, .mini-profile-indicators .userMenu-connections a:before, .mini-profile-indicators .userMenu-messages a:before, .mini-profile-indicators .userMenu-user a:before, .twister-user-remove:before, .refresh-toptrends:before, .twistday-reminder .refresh:before, .refresh-users:before, .modal-close:before, .mark-all-as-read:before, .modal-back:before, .icon-down-after:after { [class^="icon-"]:before, [class*=" icon-"]:before, .extend-icon:before, .userMenu li.userMenu-config > a:before, .post-retransmited-icon:before, .post-reply:before, .post-propagate:before, .post-favorite:before, .post .show-more:before, .mini-profile-actions span:before, ul.userMenu-search-profiles button:before, .mini-profile-indicators .userMenu-connections a:before, .mini-profile-indicators .userMenu-messages a:before, .twister-user-remove:before, .refresh-toptrends:before, .twistday-reminder .refresh:before, .refresh-users:before, .modal-close:before, .mark-all-as-read:before, .modal-back:before, .icon-down-after:after {
font-family: "fontello"; font-family: "fontello";
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
@ -95,12 +95,6 @@
content: ""; content: "";
} }
/* '' */
/* line 100, ../sass/_fonts.sass */
.icon-user:before, .mini-profile-indicators .userMenu-user a:before {
content: "";
}
/* '' */ /* '' */
/* line 105, ../sass/_fonts.sass */ /* line 105, ../sass/_fonts.sass */
.icon-camera:before { .icon-camera:before {
@ -365,7 +359,8 @@ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu,
display: block; display: block;
} }
/* line 65, ../sass/_menu.sass */ /* line 65, ../sass/_menu.sass */
.userMenu li.userMenu-dhtindicator, .userMenu li.userMenu-connections, .userMenu li.userMenu-messages { .userMenu li.userMenu-dhtindicator, .userMenu li.userMenu-connections,
.userMenu li.userMenu-messages, .userMenu li.userMenu-groupmessages {
display: none !important; display: none !important;
} }
/* line 68, ../sass/_menu.sass */ /* line 68, ../sass/_menu.sass */
@ -438,7 +433,7 @@ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu,
padding: 0; padding: 0;
} }
/* line 54, ../sass/_profile.sass */ /* line 54, ../sass/_profile.sass */
.profile-modal .modal-content .postboard { .profile-modal .modal-content .postboard, .profile-modal .modal-content .members {
margin-left: 0; margin-left: 0;
height: 100%; height: 100%;
bottom: 0; bottom: 0;
@ -1703,12 +1698,12 @@ button:hover, .mini-profile-actions span:hover, a.button:hover {
text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.1); text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.1);
} }
/* line 85, ../sass/_commons.sass */ /* line 85, ../sass/_commons.sass */
button.disabled, .mini-profile-actions span.disabled, a.button.disabled { button:disabled, button.disabled, .mini-profile-actions span.disabled, a.button.disabled {
opacity: 0.5; opacity: 0.5;
background-color: #999; background-color: #999;
} }
/* line 88, ../sass/_commons.sass */ /* line 88, ../sass/_commons.sass */
button.disabled:hover, .mini-profile-actions span.disabled:hover, a.button.disabled:hover { button:disabled:hover, button.disabled:hover, .mini-profile-actions span.disabled:hover, a.button.disabled:hover {
color: white; color: white;
} }
@ -1981,6 +1976,7 @@ ul.userMenu-search-profiles button:after, ul.userMenu-search-profiles .mini-prof
position: relative; position: relative;
text-align: center; text-align: center;
background: white; background: white;
padding: 1em;
} }
/* line 152, ../sass/style.sass */ /* line 152, ../sass/style.sass */
.mini-profile a.button { .mini-profile a.button {
@ -2007,8 +2003,8 @@ ul.userMenu-search-profiles button:after, ul.userMenu-search-profiles .mini-prof
/* line 169, ../sass/style.sass */ /* line 169, ../sass/style.sass */
.mini-profile-indicators { .mini-profile-indicators {
margin: 0 0 1em 0;
background-color: #f3f2f1; background-color: #f3f2f1;
text-align: center;
} }
/* line 173, ../sass/style.sass */ /* line 173, ../sass/style.sass */
.mini-profile-indicators li { .mini-profile-indicators li {
@ -2016,7 +2012,6 @@ ul.userMenu-search-profiles button:after, ul.userMenu-search-profiles .mini-prof
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
display: block; display: block;
width: 100px;
float: left; float: left;
font-size: 0.8em; font-size: 0.8em;
position: relative; position: relative;
@ -2050,6 +2045,21 @@ ul.userMenu-search-profiles button:after, ul.userMenu-search-profiles .mini-prof
padding-top: 0.2em; padding-top: 0.2em;
} }
.mini-profile-indicators .userMenu-connections, .mini-profile-indicators .userMenu-messages {
width: 30%;
}
.mini-profile-indicators .userMenu-groupmessages {
width: 40%;
}
.mini-profile-indicators .userMenu-groupmessages a:before {
content: "";
background: transparent url("../img/groupmessages.png") no-repeat scroll center center;
background-size: 24px 24px;
height: 1em;
}
/* line 208, ../sass/style.sass */ /* line 208, ../sass/style.sass */
.messages-qtd { .messages-qtd {
position: absolute; position: absolute;
@ -2971,6 +2981,140 @@ ol.toptrends-list a:hover {
left: auto; left: auto;
} }
.group-messages-control .invite-form, .group-messages-control .secret-key {
display: none;
font-size: 12px;
text-align: center;
padding: 4px 0;
}
.group-messages-control .invite-form input {
border: 1px solid rgba(0, 0, 0, .1);
vertical-align: middle;
width: 73%;
margin: 0 4px;
}
.group-messages-control .invite-form input:focus {
border-bottom: solid 1px #B4C669;
}
.group-messages-control .invite-form button {
vertical-align: middle;
}
.group-messages-control.b-buttons {
padding: 4px;
}
.profile-card-buttons.group-messages-control.b-buttons {
text-align: center;
}
.profile-card-buttons.group-messages-control.b-buttons button {
margin: 2px 0;
}
/*************************************
****** GM NEW GROUP SETUP MODAL ******
**************************************/
.group-messages-new-group.modal-wrapper {
width: 580px;
height: auto; /*about 320px*/
margin: -180px 0 0 -290px;
}
.group-messages-new-group .modal-content {
padding: 0;
}
.group-messages-new-group .modal-content .module {
margin: 4px;
}
.group-messages-new-group .modal-content div div {
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-new-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-new-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-new-group .modal-content textarea {
border: 1px solid rgba(0, 0, 0, .1);
width: 500px;
height: 56px;
resize: none;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-new-group .modal-content textarea:focus {
border-bottom: solid 1px #B4C669;
}
/*************************************
****** GM JOIN GROUP SETUP MODAL *****
**************************************/
.group-messages-join-group.modal-wrapper {
width: 580px;
height: auto; /*about 360px*/
margin: -250px 0 0 -290px;
}
.group-messages-join-group .modal-content {
padding: 0;
}
.group-messages-join-group .modal-content .module {
margin: 4px;
}
.group-messages-join-group .modal-content div div {
margin: 4px 0;
padding: 4px 12px;
}
.group-messages-join-group .modal-content div div:last-child {
text-align: right;
}
.group-messages-join-group .modal-content div div:last-child button {
margin: 8px 4px;
}
.group-messages-join-group .modal-content input {
border: 1px solid rgba(0, 0, 0, .1);
width: 500px;
margin: 12px 16px;
padding: 2px 4px;
}
.group-messages-join-group .modal-content input:focus {
border-bottom: solid 1px #B4C669;
}
.group-messages-join-group .modal-content input[type='checkbox'] {
display: inline;
width: auto;
margin: 2px;
}
.group-messages-join-group .modal-content .groups-list {
background-color: #FFF;
height: 120px;
overflow-y: auto;
margin: 8px 8px 0;
}
/********* NEW USER MODAL************* */ /********* NEW USER MODAL************* */
.new-user.modal-wrapper { .new-user.modal-wrapper {

Loading…
Cancel
Save