check if email is already in use when registering + some rtl css fixes
This commit is contained in:
parent
1e81480f9b
commit
02eced7291
|
@ -141,7 +141,8 @@ class QvitterPlugin extends Plugin {
|
||||||
public function onRouterInitialized($m)
|
public function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$m->connect('api/qvitter/check_email.json',
|
||||||
|
array('action' => 'ApiQvitterCheckEmail'));
|
||||||
$m->connect('api/qvitter/:nickname/lists/:id/subscribers.json',
|
$m->connect('api/qvitter/:nickname/lists/:id/subscribers.json',
|
||||||
array('action' => 'ApiQvitterListSubscribers',
|
array('action' => 'ApiQvitterListSubscribers',
|
||||||
'nickname' => '[a-zA-Z0-9]+',
|
'nickname' => '[a-zA-Z0-9]+',
|
||||||
|
|
84
actions/apiqvittercheckemail.php
Normal file
84
actions/apiqvittercheckemail.php
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* StatusNet, the distributed open-source microblogging tool
|
||||||
|
*
|
||||||
|
* Check email
|
||||||
|
*
|
||||||
|
* Returns 1 if email is already in use on this instance, 0 if not. Error if site is private.
|
||||||
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @category API
|
||||||
|
* @package GNUsocial
|
||||||
|
* @author Hannes Mannerheim <h@nnesmannerhe.im>
|
||||||
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://www.gnu.org/software/social/
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
|
|
||||||
|
class ApiQvitterCheckEmailAction extends ApiAction
|
||||||
|
{
|
||||||
|
var $email = null;
|
||||||
|
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
$this->email = $this->trimmed('email');
|
||||||
|
|
||||||
|
if(!Validate::email($this->email, common_config('email', 'check_domain'))) {
|
||||||
|
$this->clientError('Not a valid email address.', 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (common_config('site', 'private')) {
|
||||||
|
$this->clientError(_('This site is private.'), 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
if($this->emailExists($this->email)) {
|
||||||
|
$email_exists = 1;
|
||||||
|
} else {
|
||||||
|
$email_exists = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->initDocument('json');
|
||||||
|
$this->showJsonObjects($email_exists);
|
||||||
|
$this->endDocument('json');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the given email address already exist?
|
||||||
|
*
|
||||||
|
* Checks a canonical email address against the database.
|
||||||
|
*
|
||||||
|
* @param string $email email address to check
|
||||||
|
*
|
||||||
|
* @return boolean true if the address already exists
|
||||||
|
*/
|
||||||
|
function emailExists($email)
|
||||||
|
{
|
||||||
|
$user = User::getKV('email', $email);
|
||||||
|
return is_object($user);
|
||||||
|
}
|
||||||
|
}
|
|
@ -128,7 +128,8 @@ button.shorten i,
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
#user-footer-inner .error-message,
|
#user-footer-inner .error-message,
|
||||||
.inline-reply-queetbox .error-message {
|
.inline-reply-queetbox .error-message,
|
||||||
|
.modal-content .error-message {
|
||||||
float:none;
|
float:none;
|
||||||
}
|
}
|
||||||
.error-message pre code {
|
.error-message pre code {
|
||||||
|
@ -737,6 +738,9 @@ body.rtl .front-welcome-text {
|
||||||
width:290px;
|
width:290px;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
|
body.rtl #login-register-container {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
#login-content,
|
#login-content,
|
||||||
.front-signup {
|
.front-signup {
|
||||||
font-family: Arial,sans-serif;
|
font-family: Arial,sans-serif;
|
||||||
|
@ -772,6 +776,7 @@ body.rtl .front-welcome-text {
|
||||||
position:relative;
|
position:relative;
|
||||||
margin-top:1px;
|
margin-top:1px;
|
||||||
z-index:2000;
|
z-index:2000;
|
||||||
|
direction: ltr;
|
||||||
}
|
}
|
||||||
.front-signup {
|
.front-signup {
|
||||||
margin-top:10px;
|
margin-top:10px;
|
||||||
|
@ -816,7 +821,6 @@ body.rtl .front-welcome-text {
|
||||||
border-top-right-radius: 3px;
|
border-top-right-radius: 3px;
|
||||||
border-bottom-left-radius: 3px;
|
border-bottom-left-radius: 3px;
|
||||||
border-bottom-right-radius: 3px;
|
border-bottom-right-radius: 3px;
|
||||||
box-shadow: 0 1px 0 #EEEEEE inset, 0 1px 0 #FFFFFF;
|
|
||||||
outline-color: #000000;
|
outline-color: #000000;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -1159,9 +1163,18 @@ button#submit-login:hover {
|
||||||
right: 3px;
|
right: 3px;
|
||||||
top: 6px;
|
top: 6px;
|
||||||
width: auto;
|
width: auto;
|
||||||
|
min-width: 50px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.modal-body .front-signup .fieldhelp.email-in-use {
|
||||||
|
color: red;
|
||||||
|
font-size: 10px;
|
||||||
|
font-style: italic;
|
||||||
|
line-height: 10px;
|
||||||
}
|
}
|
||||||
.modal-body .front-signup .signup-input-container input.invalid,
|
.modal-body .front-signup .signup-input-container input.invalid,
|
||||||
.modal-body .front-signup .signup-input-container input.nickname-taken {
|
.modal-body .front-signup .signup-input-container input.nickname-taken,
|
||||||
|
.modal-body .front-signup .signup-input-container input.email-in-use {
|
||||||
background-color:pink;
|
background-color:pink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1190,6 +1203,9 @@ button#submit-login:hover {
|
||||||
margin-left:-459px;
|
margin-left:-459px;
|
||||||
opacity:0;
|
opacity:0;
|
||||||
}
|
}
|
||||||
|
body.rtl #page-container {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
width:100%;
|
width:100%;
|
||||||
|
@ -1291,6 +1307,10 @@ body.rtl #footer-spinner-container {
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
}
|
}
|
||||||
|
body.rtl #history-container.menu-container a .chev-right {
|
||||||
|
right:auto;
|
||||||
|
left:0;
|
||||||
|
}
|
||||||
#history-container.menu-container a .chev-right::before {
|
#history-container.menu-container a .chev-right::before {
|
||||||
content: '\f097';
|
content: '\f097';
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
|
@ -1586,7 +1606,7 @@ body.rtl #footer-spinner-container {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
margin-left: 9px;
|
margin: 0 9px;
|
||||||
opacity: 0.4;
|
opacity: 0.4;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
|
@ -1833,6 +1853,9 @@ background-repeat: no-repeat;
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
min-height: 85px;
|
min-height: 85px;
|
||||||
}
|
}
|
||||||
|
.queet:not(.rtl) {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
.stream-item.user .queet {
|
.stream-item.user .queet {
|
||||||
cursor: auto;
|
cursor: auto;
|
||||||
}
|
}
|
||||||
|
@ -2396,7 +2419,13 @@ body.rtl .view-more-container-bottom { direction:rtl; }
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
.stream-item-header .created-at:before {
|
.stream-item-header .created-at:before {
|
||||||
content:" · ";
|
content: "·";
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.queet.rtl .stream-item-header .created-at:before {
|
||||||
|
margin-right: 4px;
|
||||||
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.queet-text {
|
.queet-text {
|
||||||
|
@ -2510,6 +2539,9 @@ ul.queet-actions li .icon {
|
||||||
ul.queet-actions li:not(:first-child) .icon {
|
ul.queet-actions li:not(:first-child) .icon {
|
||||||
margin-left:26px;
|
margin-left:26px;
|
||||||
}
|
}
|
||||||
|
.queet.rtl ul.queet-actions .icon {
|
||||||
|
margin-left:26px;
|
||||||
|
}
|
||||||
.queet.rtl ul.queet-actions li .icon {
|
.queet.rtl ul.queet-actions li .icon {
|
||||||
margin-right:0;
|
margin-right:0;
|
||||||
}
|
}
|
||||||
|
@ -5072,7 +5104,7 @@ body.rtl #top-compose {
|
||||||
margin-left:auto;
|
margin-left:auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.rtl .dropdown-caret.right {
|
body.rtl .topbar .dropdown-caret.right {
|
||||||
right: auto;
|
right: auto;
|
||||||
left: 10px;
|
left: 10px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1139,7 +1139,7 @@ function validateRegisterForm(o) {
|
||||||
if(fullname.val().length < 255) {
|
if(fullname.val().length < 255) {
|
||||||
fullname.removeClass('invalid'); } else { fullname.addClass('invalid'); if(allFieldsValid)allFieldsValid=false; }
|
fullname.removeClass('invalid'); } else { fullname.addClass('invalid'); if(allFieldsValid)allFieldsValid=false; }
|
||||||
|
|
||||||
if(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email.val())) {
|
if(validEmail(email.val())) {
|
||||||
email.removeClass('invalid'); } else { email.addClass('invalid'); if(allFieldsValid)allFieldsValid=false; }
|
email.removeClass('invalid'); } else { email.addClass('invalid'); if(allFieldsValid)allFieldsValid=false; }
|
||||||
|
|
||||||
if($.trim(homepage.val()).length==0 || /^(ftp|http|https):\/\/[^ "]+$/.test(homepage.val())) {
|
if($.trim(homepage.val()).length==0 || /^(ftp|http|https):\/\/[^ "]+$/.test(homepage.val())) {
|
||||||
|
@ -1157,6 +1157,15 @@ function validateRegisterForm(o) {
|
||||||
return allFieldsValid;
|
return allFieldsValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function validEmail(email) {
|
||||||
|
if(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Checks if edit profile form is valid
|
· Checks if edit profile form is valid
|
||||||
|
|
|
@ -513,19 +513,51 @@ if(!window.registrationsClosed) {
|
||||||
// ask api if nickname is ok, if no typing for 1 s
|
// ask api if nickname is ok, if no typing for 1 s
|
||||||
$('#signup-user-nickname-step2').on('keyup',function(){
|
$('#signup-user-nickname-step2').on('keyup',function(){
|
||||||
clearTimeout(window.checkNicknameTimeout);
|
clearTimeout(window.checkNicknameTimeout);
|
||||||
if($('#signup-user-nickname-step2').val().length>1 && /^[a-zA-Z0-9]+$/.test($('#signup-user-nickname-step2').val())) {
|
var thisInputElement = $(this);
|
||||||
$('#signup-user-nickname-step2').addClass('nickname-taken');
|
var thisValue = $(this).val();
|
||||||
|
if(thisValue.length>1 && /^[a-zA-Z0-9]+$/.test(thisValue)) {
|
||||||
|
thisInputElement.addClass('nickname-taken');
|
||||||
if($('.spinner-wrap').length==0) {
|
if($('.spinner-wrap').length==0) {
|
||||||
$('#signup-user-nickname-step2').after('<div class="spinner-wrap"><div class="spinner"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div></div>');
|
thisInputElement.after('<div class="spinner-wrap"><div class="spinner"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div></div>');
|
||||||
}
|
}
|
||||||
window.checkNicknameTimeout = setTimeout(function(){
|
window.checkNicknameTimeout = setTimeout(function(){
|
||||||
$.get(window.apiRoot + 'check_nickname.json?nickname=' + encodeURIComponent($('#signup-user-nickname-step2').val()),function(data){
|
$.get(window.apiRoot + 'check_nickname.json?nickname=' + encodeURIComponent(thisValue),function(data){
|
||||||
$('.spinner-wrap').remove();
|
$('.spinner-wrap').remove();
|
||||||
if(data==0) {
|
if(data==0) {
|
||||||
$('#signup-user-password2-step2').trigger('keyup'); // revalidates
|
$('#signup-user-password2-step2').trigger('keyup'); // revalidates
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('#signup-user-nickname-step2').removeClass('nickname-taken');
|
thisInputElement.removeClass('nickname-taken');
|
||||||
|
$('#signup-user-password2-step2').trigger('keyup');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},1000);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('.spinner-wrap').remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ask api if email is in use, if no typing for 1 s
|
||||||
|
$('#signup-user-email-step2').on('keyup',function(){
|
||||||
|
clearTimeout(window.checkEmailTimeout);
|
||||||
|
var thisInputElement = $(this);
|
||||||
|
var thisValue = $(this).val();
|
||||||
|
if(thisValue.length>1 && validEmail(thisValue)) {
|
||||||
|
thisInputElement.addClass('email-in-use');
|
||||||
|
if($('.spinner-wrap').length==0) {
|
||||||
|
thisInputElement.after('<div class="spinner-wrap"><div class="spinner"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div></div>');
|
||||||
|
}
|
||||||
|
window.checkEmailTimeout = setTimeout(function(){
|
||||||
|
$.get(window.apiRoot + 'qvitter/check_email.json?email=' + encodeURIComponent(thisValue),function(data){
|
||||||
|
$('.spinner-wrap').remove();
|
||||||
|
if(data==1) {
|
||||||
|
$('#signup-user-password2-step2').trigger('keyup'); // revalidates
|
||||||
|
thisInputElement.after('<div class="fieldhelp email-in-use">' + window.sL.emailAlreadyInUse + '</div>');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
thisInputElement.removeClass('email-in-use');
|
||||||
|
thisInputElement.siblings('.fieldhelp.email-in-use').remove();
|
||||||
$('#signup-user-password2-step2').trigger('keyup');
|
$('#signup-user-password2-step2').trigger('keyup');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -539,13 +571,10 @@ if(!window.registrationsClosed) {
|
||||||
|
|
||||||
// validate on keyup
|
// validate on keyup
|
||||||
$('#popup-register input').on('keyup',function(){
|
$('#popup-register input').on('keyup',function(){
|
||||||
if(validateRegisterForm($('#popup-register'))) {
|
if(validateRegisterForm($('#popup-register'))
|
||||||
if(!$('#signup-user-nickname-step2').hasClass('nickname-taken')) {
|
&& !$('#signup-user-nickname-step2').hasClass('nickname-taken')
|
||||||
$('#signup-btn-step2').removeClass('disabled');
|
&& !$('#signup-user-email-step2').hasClass('email-in-use')) {
|
||||||
}
|
$('#signup-btn-step2').removeClass('disabled');
|
||||||
else {
|
|
||||||
$('#signup-btn-step2').addClass('disabled');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('#signup-btn-step2').addClass('disabled');
|
$('#signup-btn-step2').addClass('disabled');
|
||||||
|
@ -580,7 +609,14 @@ if(!window.registrationsClosed) {
|
||||||
username: 'none',
|
username: 'none',
|
||||||
},
|
},
|
||||||
dataType:"json",
|
dataType:"json",
|
||||||
error: function(data){ console.log('error'); console.log(data); },
|
error: function(data){
|
||||||
|
if(typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
|
||||||
|
remove_spinner();
|
||||||
|
$('#popup-register input,#popup-register button').removeClass('disabled');
|
||||||
|
$('#signup-user-password2-step2').trigger('keyup'); // revalidate
|
||||||
|
showErrorMessage(data.responseJSON.error,$('#popup-register .modal-header'));
|
||||||
|
}
|
||||||
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
remove_spinner();
|
remove_spinner();
|
||||||
if(typeof data.error == 'undefined') {
|
if(typeof data.error == 'undefined') {
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"Meine Liste: {list-name}",
|
"myListWithListName":"Meine Liste: {list-name}",
|
||||||
"listMembers":"Mitglieder",
|
"listMembers":"Mitglieder",
|
||||||
"listSubscribers":"Abonnenten",
|
"listSubscribers":"Abonnenten",
|
||||||
"ERRORcouldNotFindList":"Diese Liste gibt es nicht."
|
"ERRORcouldNotFindList":"Diese Liste gibt es nicht.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"Min liste: {list-name}",
|
"myListWithListName":"Min liste: {list-name}",
|
||||||
"listMembers":"Medlemmer",
|
"listMembers":"Medlemmer",
|
||||||
"listSubscribers":"Abonnenter",
|
"listSubscribers":"Abonnenter",
|
||||||
"ERRORcouldNotFindList":"Det eksisterer ingen slik liste."
|
"ERRORcouldNotFindList":"Det eksisterer ingen slik liste.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,6 @@
|
||||||
"myListWithListName":"Min lista: {list-name}",
|
"myListWithListName":"Min lista: {list-name}",
|
||||||
"listMembers":"Listmedlemmar",
|
"listMembers":"Listmedlemmar",
|
||||||
"listSubscribers":"Prenumeranter",
|
"listSubscribers":"Prenumeranter",
|
||||||
"ERRORcouldNotFindList":"Det finns ingen sådan lista."
|
"ERRORcouldNotFindList":"Det finns ingen sådan lista.",
|
||||||
|
"emailAlreadyInUse":"Används redan"
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,5 +155,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,5 +155,6 @@
|
||||||
"myListWithListName":"My list: {list-name}",
|
"myListWithListName":"My list: {list-name}",
|
||||||
"listMembers":"Members",
|
"listMembers":"Members",
|
||||||
"listSubscribers":"Subscribers",
|
"listSubscribers":"Subscribers",
|
||||||
"ERRORcouldNotFindList":"There is no such list."
|
"ERRORcouldNotFindList":"There is no such list.",
|
||||||
|
"emailAlreadyInUse":"Already in use"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user