mirror of
https://github.com/freescout-helpdesk/freescout.git
synced 2024-11-24 03:12:46 +01:00
New conversation and reply
This commit is contained in:
parent
24582bacfd
commit
1d34f91866
@ -3,6 +3,8 @@
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Customer;
|
||||
use App\Email;
|
||||
|
||||
class Conversation extends Model
|
||||
{
|
||||
@ -198,15 +200,16 @@ class Conversation extends Model
|
||||
{
|
||||
$this->preview = '';
|
||||
|
||||
if ($text) {
|
||||
$this->preview = mb_substr($text, 0, self::PREVIEW_MAXLENGTH);
|
||||
} else {
|
||||
if (!$text) {
|
||||
$first_thread = $this->threads()->first();
|
||||
if ($first_thread) {
|
||||
$this->preview = mb_substr($first_thread->body, 0, self::PREVIEW_MAXLENGTH);
|
||||
$text = $first_thread->body;
|
||||
}
|
||||
}
|
||||
|
||||
$text = strip_tags($text);
|
||||
$this->preview = mb_substr($text, 0, self::PREVIEW_MAXLENGTH);
|
||||
|
||||
return $this->preview;
|
||||
}
|
||||
|
||||
@ -390,4 +393,54 @@ class Conversation extends Model
|
||||
$this->folder_id = $folder->id;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set CC as JSON.
|
||||
*/
|
||||
public function setCc($emails)
|
||||
{
|
||||
$emails_array = self::sanitizeEmails($emails);
|
||||
if ($emails_array) {
|
||||
$this->cc = json_encode($emails_array);
|
||||
} else {
|
||||
$this->cc = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set BCC as JSON.
|
||||
*/
|
||||
public function setBcc( $emails)
|
||||
{
|
||||
$emails_array = self::sanitizeEmails($emails);
|
||||
if ($emails_array) {
|
||||
$this->bcc = json_encode($emails_array);
|
||||
} else {
|
||||
$this->bcc = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert list of email to array.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static function sanitizeEmails($emails)
|
||||
{
|
||||
$emails_array = [];
|
||||
|
||||
if (is_array($emails)) {
|
||||
$emails_array = $emails;
|
||||
} else {
|
||||
$emails_array = explode(',', $emails);
|
||||
}
|
||||
|
||||
foreach ($emails_array as $i => $email) {
|
||||
$emails_array[$i] = Email::sanitizeEmail($email);
|
||||
if (!$emails_array[$i]) {
|
||||
unset($emails_array[$i]);
|
||||
}
|
||||
}
|
||||
return $emails_array;
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Email;
|
||||
|
||||
class Customer extends Model
|
||||
{
|
||||
@ -459,15 +460,16 @@ class Customer extends Model
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFullName()
|
||||
public function getFullName($email_if_empty = false)
|
||||
{
|
||||
if ($this->first_name || $this->last_name) {
|
||||
return $this->first_name.' '.$this->last_name;
|
||||
} elseif ($this->emails) {
|
||||
return explode('@', $this->emails[0]->email)[0];
|
||||
} else {
|
||||
return $this->id;
|
||||
} elseif ($email_if_empty) {
|
||||
if (count($this->emails)) {
|
||||
return explode('@', $this->emails[0]->email)[0];
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -610,4 +612,36 @@ class Customer extends Model
|
||||
}
|
||||
$this->websites = json_encode($websites);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create customer or get existing.
|
||||
*
|
||||
* @param string $email
|
||||
* @param array $data [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public static function create($email, $data = [])
|
||||
{
|
||||
$email = Email::sanitizeEmail($email);
|
||||
if (!$email) {
|
||||
return null;
|
||||
}
|
||||
$email_obj = Email::where('email', $email)->first();
|
||||
if ($email_obj) {
|
||||
$customer = $email_obj->customer;
|
||||
} else {
|
||||
$customer = new Customer();
|
||||
$email_obj = new Email();
|
||||
$email_obj->email = $email;
|
||||
}
|
||||
$customer->fill($data);
|
||||
$customer->save();
|
||||
|
||||
if (empty($email_obj->id) || !$email_obj->customer_id) {
|
||||
$email_obj->customer()->associate($customer);
|
||||
$email_obj->save();
|
||||
}
|
||||
|
||||
return $customer;
|
||||
}
|
||||
}
|
||||
|
@ -9,9 +9,15 @@ class Email extends Model
|
||||
/**
|
||||
* Email types.
|
||||
*/
|
||||
const TYPE_WORK = 'work';
|
||||
const TYPE_HOME = 'home';
|
||||
const TYPE_OTHER = 'other';
|
||||
const TYPE_WORK = 1;
|
||||
const TYPE_HOME = 2;
|
||||
const TYPE_OTHER = 3;
|
||||
|
||||
public static $types = [
|
||||
self::TYPE_WORK => 'work',
|
||||
self::TYPE_HOME => 'home',
|
||||
self::TYPE_OTHER => 'other',
|
||||
];
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
@ -29,17 +35,18 @@ class Email extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanatize email address.
|
||||
*
|
||||
* @param string $email
|
||||
*
|
||||
* Sanitize email address.
|
||||
*
|
||||
* @param string $email
|
||||
* @return string
|
||||
*/
|
||||
public static function sanatizeEmail($email)
|
||||
public static function sanitizeEmail($email)
|
||||
{
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
return false;
|
||||
}
|
||||
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
|
||||
$email = strtolower($email);
|
||||
|
||||
return $email;
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,14 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Conversation;
|
||||
use App\Customer;
|
||||
use App\Folder;
|
||||
use App\Mailbox;
|
||||
use App\Thread;
|
||||
use Validator;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Events\ConversationStatusChanged;
|
||||
use App\Events\ConversationUserChanged;
|
||||
|
||||
class ConversationsController extends Controller
|
||||
{
|
||||
@ -74,4 +80,331 @@ class ConversationsController extends Controller
|
||||
'folders' => $conversation->mailbox->getAssesibleFolders(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save new conversation.
|
||||
*/
|
||||
/*public function createSave($mailbox_id, Request $request)
|
||||
{
|
||||
$mailbox = Mailbox::findOrFail($mailbox_id);
|
||||
$this->authorize('view', $mailbox);
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'to' => 'required|string',
|
||||
'subject' => 'required|string|max:998',
|
||||
'body' => 'required|string',
|
||||
'cc' => 'nullable|string',
|
||||
'bcc' => 'nullable|string',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return redirect()->route('conversations.create', ['mailbox_id' => $mailbox_id])
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
}
|
||||
|
||||
$to_array = Conversation::sanitizeEmails($request->to);
|
||||
|
||||
// Check if there are any emails
|
||||
if (!$to_array) {
|
||||
return redirect()->route('conversations.create', ['mailbox_id' => $mailbox_id])
|
||||
->withErrors(['to' => __('Incorrect recipients')])
|
||||
->withInput();
|
||||
}
|
||||
|
||||
$now = date('Y-m-d H:i:s');
|
||||
$customer = Customer::create($to_array[0]);
|
||||
|
||||
$conversation = new Conversation();
|
||||
$conversation->type = Conversation::TYPE_EMAIL;
|
||||
$conversation->status = $request->status;
|
||||
$conversation->state = Conversation::STATE_PUBLISHED;
|
||||
$conversation->subject = $request->subject;
|
||||
$conversation->setCc($request->cc);
|
||||
$conversation->setBcc($request->bcc);
|
||||
$conversation->setPreview($request->body);
|
||||
// todo: attachments
|
||||
//$conversation->has_attachments = ;
|
||||
// Set folder id
|
||||
$conversation->mailbox_id = $mailbox_id;
|
||||
if ((int)$request->user_id != -1) {
|
||||
// Check if user has access to the current mailbox
|
||||
if ($mailbox->userHasAccess($request->user_id)) {
|
||||
$conversation->user_id = $request->user_id;
|
||||
}
|
||||
}
|
||||
|
||||
$conversation->customer_id = $customer->id;
|
||||
$conversation->created_by_user_id = auth()->user()->id;
|
||||
$conversation->source_via = Conversation::PERSON_USER;
|
||||
$conversation->source_type = Conversation::SOURCE_TYPE_WEB;
|
||||
$conversation->user_updated_at = $now;
|
||||
$conversation->last_reply_at = $now;
|
||||
$conversation->last_reply_from = Conversation::PERSON_USER;
|
||||
$conversation->updateFolder();
|
||||
$conversation->save();
|
||||
|
||||
// Create thread
|
||||
$thread = new Thread();
|
||||
$thread->conversation_id = $conversation->id;
|
||||
$thread->user_id = auth()->user()->id;
|
||||
$thread->type = Thread::TYPE_MESSAGE;
|
||||
$thread->status = $request->status;
|
||||
$thread->state = Thread::STATE_PUBLISHED;
|
||||
$thread->body = $request->body;
|
||||
$thread->setTo($request->to);
|
||||
$thread->setCc($request->cc);
|
||||
$thread->setBcc($request->bcc);
|
||||
$thread->source_via = Thread::PERSON_USER;
|
||||
$thread->source_type = Thread::SOURCE_TYPE_WEB;
|
||||
$thread->customer_id = $customer->id;
|
||||
$thread->created_by_user_id = auth()->user()->id;
|
||||
$thread->save();
|
||||
|
||||
return redirect()->route('conversations.view', ['id' => $conversation->id]);
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Conversations ajax controller.
|
||||
*/
|
||||
public function ajax(Request $request)
|
||||
{
|
||||
$response = [
|
||||
'status' => 'error',
|
||||
'msg' => '',
|
||||
];
|
||||
|
||||
$user = auth()->user();
|
||||
|
||||
switch ($request->action) {
|
||||
|
||||
// Change conversation user
|
||||
case 'conversation_change_user':
|
||||
$conversation = Conversation::find($request->conversation_id);
|
||||
|
||||
$new_user_id = (int) $request->user_id;
|
||||
|
||||
if (!$conversation) {
|
||||
$response['msg'] = __('Conversation not found');
|
||||
}
|
||||
if (!$response['msg'] && $conversation->user_id == $new_user_id) {
|
||||
$response['msg'] = __('Assignee already set');
|
||||
}
|
||||
if (!$response['msg'] && !$user->can('update', $conversation)) {
|
||||
$response['msg'] = __('Not enough permissions');
|
||||
}
|
||||
if (!$response['msg'] && (int) $new_user_id != -1 && !in_array($new_user_id, $conversation->mailbox->userIdsHavingAccess())) {
|
||||
$response['msg'] = __('Incorrect user');
|
||||
}
|
||||
if (!$response['msg']) {
|
||||
// Next conversation has to be determined before updating status for current one
|
||||
$next_conversation = $conversation->getNearby();
|
||||
|
||||
$conversation->setUser($new_user_id);
|
||||
$conversation->save();
|
||||
|
||||
event(new ConversationUserChanged($conversation));
|
||||
|
||||
$response['status'] = 'success';
|
||||
|
||||
// Flash
|
||||
$flash_message = __('Assignee updated');
|
||||
if ($new_user_id != $user->id) {
|
||||
$flash_message .= ' <a href="'.route('conversations.view', ['id' => $conversation->id]).'">'.__('View').'</a>';
|
||||
|
||||
if ($next_conversation) {
|
||||
$response['redirect_url'] = route('conversations.view', ['id' => $next_conversation->id]);
|
||||
} else {
|
||||
// Show conversations list
|
||||
$response['redirect_url'] = route('mailboxes.view.folder', ['id' => $conversation->mailbox_id, 'folder_id' => $conversation->folder_id]);
|
||||
}
|
||||
}
|
||||
\Session::flash('flash_success_floating', $flash_message);
|
||||
|
||||
$response['msg'] = __('Assignee updated');
|
||||
}
|
||||
break;
|
||||
|
||||
// Change conversation status
|
||||
case 'conversation_change_status':
|
||||
$conversation = Conversation::find($request->conversation_id);
|
||||
|
||||
$new_status = (int) $request->status;
|
||||
|
||||
if (!$conversation) {
|
||||
$response['msg'] = __('Conversation not found');
|
||||
}
|
||||
if (!$response['msg'] && $conversation->status == $new_status) {
|
||||
$response['msg'] = __('Status already set');
|
||||
}
|
||||
if (!$response['msg'] && !$user->can('update', $conversation)) {
|
||||
$response['msg'] = __('Not enough permissions');
|
||||
}
|
||||
if (!$response['msg'] && !in_array((int) $request->status, array_keys(Conversation::$statuses))) {
|
||||
$response['msg'] = __('Incorrect status');
|
||||
}
|
||||
if (!$response['msg']) {
|
||||
// Next conversation has to be determined before updating status for current one
|
||||
$next_conversation = $conversation->getNearby();
|
||||
|
||||
$conversation->setStatus($new_status, $user);
|
||||
$conversation->save();
|
||||
|
||||
event(new ConversationStatusChanged($conversation));
|
||||
|
||||
$response['status'] = 'success';
|
||||
|
||||
// Flash
|
||||
$flash_message = __('Status updated');
|
||||
if ($new_status != Conversation::STATUS_ACTIVE) {
|
||||
$flash_message .= ' <a href="'.route('conversations.view', ['id' => $conversation->id]).'">'.__('View').'</a>';
|
||||
|
||||
if ($next_conversation) {
|
||||
$response['redirect_url'] = route('conversations.view', ['id' => $next_conversation->id]);
|
||||
} else {
|
||||
// Show conversations list
|
||||
$response['redirect_url'] = route('mailboxes.view.folder', ['id' => $conversation->mailbox_id, 'folder_id' => $conversation->folder_id]);
|
||||
}
|
||||
}
|
||||
\Session::flash('flash_success_floating', $flash_message);
|
||||
|
||||
$response['msg'] = __('Status updated');
|
||||
}
|
||||
break;
|
||||
|
||||
// Send reply or new conversation
|
||||
case 'send_reply':
|
||||
|
||||
$mailbox = Mailbox::findOrFail($request->mailbox_id);
|
||||
|
||||
if (!$response['msg'] && !$user->can('view', $mailbox)) {
|
||||
$response['msg'] = __('Not enough permissions');
|
||||
}
|
||||
|
||||
$conversation = null;
|
||||
if (!$response['msg'] && !empty($request->conversation_id)) {
|
||||
$conversation = Conversation::find($request->conversation_id);
|
||||
if ($conversation && !$user->can('view', $conversation)) {
|
||||
$response['msg'] = __('Not enough permissions');
|
||||
}
|
||||
}
|
||||
|
||||
$new = false;
|
||||
if (empty($request->conversation_id)) {
|
||||
$new = true;
|
||||
}
|
||||
|
||||
if (!$response['msg']) {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'to' => 'required|string',
|
||||
'subject' => 'required|string|max:998',
|
||||
'body' => 'required|string',
|
||||
'cc' => 'nullable|string',
|
||||
'bcc' => 'nullable|string',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
foreach ($validator->errors() as $errors) {
|
||||
foreach ($errors as $field => $message) {
|
||||
$response['msg'] .= $message.' ';
|
||||
}
|
||||
}
|
||||
// return redirect()->route('conversations.create', ['mailbox_id' => $mailbox_id])
|
||||
// ->withErrors($validator)
|
||||
// ->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$response['msg'] && $new) {
|
||||
$to_array = Conversation::sanitizeEmails($request->to);
|
||||
|
||||
// Check if there are any emails
|
||||
if (!$to_array) {
|
||||
$response['msg'] .= __('Incorrect recipients');
|
||||
// return redirect()->route('conversations.create', ['mailbox_id' => $mailbox_id])
|
||||
// ->withErrors(['to' => __('Incorrect recipients')])
|
||||
// ->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$response['msg']) {
|
||||
$now = date('Y-m-d H:i:s');
|
||||
|
||||
if ($new) {
|
||||
// New conversation
|
||||
$customer = Customer::create($to_array[0]);
|
||||
|
||||
$conversation = new Conversation();
|
||||
$conversation->type = Conversation::TYPE_EMAIL;
|
||||
$conversation->status = $request->status;
|
||||
$conversation->state = Conversation::STATE_PUBLISHED;
|
||||
$conversation->subject = $request->subject;
|
||||
$conversation->setCc($request->cc);
|
||||
$conversation->setBcc($request->bcc);
|
||||
$conversation->setPreview($request->body);
|
||||
// todo: attachments
|
||||
//$conversation->has_attachments = ;
|
||||
// Set folder id
|
||||
$conversation->mailbox_id = $request->mailbox_id;
|
||||
$conversation->customer_id = $customer->id;
|
||||
$conversation->created_by_user_id = auth()->user()->id;
|
||||
$conversation->source_via = Conversation::PERSON_USER;
|
||||
$conversation->source_type = Conversation::SOURCE_TYPE_WEB;
|
||||
} else {
|
||||
$customer = $conversation->customer;
|
||||
}
|
||||
$conversation->status = $request->status;
|
||||
if ((int)$request->user_id != -1) {
|
||||
// Check if user has access to the current mailbox
|
||||
if ($mailbox->userHasAccess($request->user_id)) {
|
||||
$conversation->user_id = $request->user_id;
|
||||
}
|
||||
} else {
|
||||
$conversation->user_id = null;
|
||||
}
|
||||
$conversation->last_reply_at = $now;
|
||||
$conversation->last_reply_from = Conversation::PERSON_USER;
|
||||
$conversation->user_updated_at = $now;
|
||||
$conversation->updateFolder();
|
||||
$conversation->save();
|
||||
|
||||
// Create thread
|
||||
$thread = new Thread();
|
||||
$thread->conversation_id = $conversation->id;
|
||||
$thread->user_id = auth()->user()->id;
|
||||
$thread->type = Thread::TYPE_MESSAGE;
|
||||
$thread->status = $request->status;
|
||||
$thread->state = Thread::STATE_PUBLISHED;
|
||||
$thread->body = $request->body;
|
||||
$thread->setTo($request->to);
|
||||
$thread->setCc($request->cc);
|
||||
$thread->setBcc($request->bcc);
|
||||
$thread->source_via = Thread::PERSON_USER;
|
||||
$thread->source_type = Thread::SOURCE_TYPE_WEB;
|
||||
$thread->customer_id = $customer->id;
|
||||
$thread->created_by_user_id = auth()->user()->id;
|
||||
$thread->save();
|
||||
|
||||
$response['status'] = 'success';
|
||||
$response['redirect_url'] = route('conversations.view', ['id' => $conversation->id]);
|
||||
|
||||
$flash_message = __(
|
||||
':%tag_start%Email Sent:%tag_end% :%view_start%View:%a_end% or :%undo_start%Undo:%a_end%',
|
||||
['%tag_start%' => '<strong>', '%tag_end%' => '</strong>', '%view_start%' => ' <a href="'.route('conversations.view', ['id' => $conversation->id]).'">', '%a_end%' => '</a> ', '%undo_start%' => ' <a href="'.route('conversations.draft', ['id' => $conversation->id]).'" class="text-danger">']
|
||||
);
|
||||
|
||||
\Session::flash('flash_success_floating', $flash_message);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$response['msg'] = 'Unknown action';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($response['status'] == 'error' && empty($response['msg'])) {
|
||||
$response['msg'] = 'Unknown error occured';
|
||||
}
|
||||
|
||||
return \Response::json($response);
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\ActivityLog;
|
||||
use App\Conversation;
|
||||
use App\Events\ConversationStatusChanged;
|
||||
use App\Events\ConversationUserChanged;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SecureController extends Controller
|
||||
@ -76,121 +74,4 @@ class SecureController extends Controller
|
||||
|
||||
return view('secure/logs', ['logs' => $logs, 'names' => $names, 'current_name' => $current_name, 'cols' => $cols]);
|
||||
}
|
||||
|
||||
public function ajax(Request $request)
|
||||
{
|
||||
$response = [
|
||||
'status' => 'error',
|
||||
'msg' => '',
|
||||
];
|
||||
|
||||
$user = auth()->user();
|
||||
|
||||
switch ($request->action) {
|
||||
|
||||
// Change conversation user
|
||||
case 'conversation_change_user':
|
||||
$conversation = Conversation::find($request->conversation_id);
|
||||
|
||||
$new_user_id = (int) $request->user_id;
|
||||
|
||||
if (!$conversation) {
|
||||
$response['msg'] = 'Conversation not found';
|
||||
}
|
||||
if (!$response['msg'] && $conversation->user_id == $new_user_id) {
|
||||
$response['msg'] = 'Assignee already set';
|
||||
}
|
||||
if (!$response['msg'] && !$user->can('update', $conversation)) {
|
||||
$response['msg'] = 'Not enough permissions';
|
||||
}
|
||||
if (!$response['msg'] && (int) $new_user_id != -1 && !in_array($new_user_id, $conversation->mailbox->userIdsHavingAccess())) {
|
||||
$response['msg'] = 'Incorrect user';
|
||||
}
|
||||
if (!$response['msg']) {
|
||||
// Next conversation has to be determined before updating status for current one
|
||||
$next_conversation = $conversation->getNearby();
|
||||
|
||||
$conversation->setUser($new_user_id);
|
||||
$conversation->save();
|
||||
|
||||
event(new ConversationUserChanged($conversation));
|
||||
|
||||
$response['status'] = 'success';
|
||||
|
||||
// Flash
|
||||
$flash_message = __('Assignee updated');
|
||||
if ($new_user_id != $user->id) {
|
||||
$flash_message .= ' <a href="'.route('conversations.view', ['id' => $conversation->id]).'">'.__('View').'</a>';
|
||||
|
||||
if ($next_conversation) {
|
||||
$response['redirect_url'] = route('conversations.view', ['id' => $next_conversation->id]);
|
||||
} else {
|
||||
// Show conversations list
|
||||
$response['redirect_url'] = route('mailboxes.view.folder', ['id' => $conversation->mailbox_id, 'folder_id' => $conversation->folder_id]);
|
||||
}
|
||||
}
|
||||
\Session::flash('flash_success_floating', $flash_message);
|
||||
|
||||
$response['msg'] = __('Assignee updated');
|
||||
}
|
||||
break;
|
||||
|
||||
// Change conversation status
|
||||
case 'conversation_change_status':
|
||||
$conversation = Conversation::find($request->conversation_id);
|
||||
|
||||
$new_status = (int) $request->status;
|
||||
|
||||
if (!$conversation) {
|
||||
$response['msg'] = 'Conversation not found';
|
||||
}
|
||||
if (!$response['msg'] && $conversation->status == $new_status) {
|
||||
$response['msg'] = 'Status already set';
|
||||
}
|
||||
if (!$response['msg'] && !$user->can('update', $conversation)) {
|
||||
$response['msg'] = 'Not enough permissions';
|
||||
}
|
||||
if (!$response['msg'] && !in_array((int) $request->status, array_keys(Conversation::$statuses))) {
|
||||
$response['msg'] = 'Incorrect status';
|
||||
}
|
||||
if (!$response['msg']) {
|
||||
// Next conversation has to be determined before updating status for current one
|
||||
$next_conversation = $conversation->getNearby();
|
||||
|
||||
$conversation->setStatus($new_status, $user);
|
||||
$conversation->save();
|
||||
|
||||
event(new ConversationStatusChanged($conversation));
|
||||
|
||||
$response['status'] = 'success';
|
||||
|
||||
// Flash
|
||||
$flash_message = __('Status updated');
|
||||
if ($new_status != Conversation::STATUS_ACTIVE) {
|
||||
$flash_message .= ' <a href="'.route('conversations.view', ['id' => $conversation->id]).'">'.__('View').'</a>';
|
||||
|
||||
if ($next_conversation) {
|
||||
$response['redirect_url'] = route('conversations.view', ['id' => $next_conversation->id]);
|
||||
} else {
|
||||
// Show conversations list
|
||||
$response['redirect_url'] = route('mailboxes.view.folder', ['id' => $conversation->mailbox_id, 'folder_id' => $conversation->folder_id]);
|
||||
}
|
||||
}
|
||||
\Session::flash('flash_success_floating', $flash_message);
|
||||
|
||||
$response['msg'] = __('Status updated');
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$response['msg'] = 'Unknown action';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($response['status'] == 'error' && empty($response['msg'])) {
|
||||
$response['msg'] = 'Unknown error occured';
|
||||
}
|
||||
|
||||
return \Response::json($response);
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ class CreateThreadStatusChanged
|
||||
$thread->user_id = $event->conversation->user_id;
|
||||
$thread->type = Thread::TYPE_LINEITEM;
|
||||
$thread->state = Thread::STATE_PUBLISHED;
|
||||
$thread->status = $conversation->status;
|
||||
$thread->status = $event->conversation->status;
|
||||
$thread->action_type = Thread::ACTION_TYPE_STATUS_CHANGED;
|
||||
$thread->source_via = Thread::PERSON_USER;
|
||||
// todo: this need to be changed for API
|
||||
|
@ -282,4 +282,18 @@ class Mailbox extends Model
|
||||
|
||||
return $user_ids->merge($admin_ids)->unique()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user has access to the mailbox.
|
||||
* @return bool
|
||||
*/
|
||||
public function userHasAccess($user_id)
|
||||
{
|
||||
$user = User::find($user_id);
|
||||
if ($user && $user->isAdmin()) {
|
||||
return true;
|
||||
} else {
|
||||
return (bool)$this->users()->where('users.id', $user_id)->count();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Observers;
|
||||
|
||||
use App\Conversation;
|
||||
use App\Thread;
|
||||
|
||||
class ThreadObserver
|
||||
|
@ -236,6 +236,39 @@ class Thread extends Model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set to as JSON.
|
||||
*/
|
||||
public function setTo($emails)
|
||||
{
|
||||
$emails_array = Conversation::sanitizeEmails($emails);
|
||||
if ($emails_array) {
|
||||
$this->to = json_encode($emails_array);
|
||||
} else {
|
||||
$this->to = null;
|
||||
}
|
||||
}
|
||||
|
||||
public function setCc($emails)
|
||||
{
|
||||
$emails_array = Conversation::sanitizeEmails($emails);
|
||||
if ($emails_array) {
|
||||
$this->cc = json_encode($emails_array);
|
||||
} else {
|
||||
$this->cc = null;
|
||||
}
|
||||
}
|
||||
|
||||
public function setBcc($emails)
|
||||
{
|
||||
$emails_array = Conversation::sanitizeEmails($emails);
|
||||
if ($emails_array) {
|
||||
$this->bcc = json_encode($emails_array);
|
||||
} else {
|
||||
$this->bcc = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get thread's status name.
|
||||
*
|
||||
|
@ -21,7 +21,7 @@ class CreateEmailsTable extends Migration
|
||||
// SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
|
||||
$table->string('email', 191)->unique();
|
||||
// Type is not used in the web interface, but appears in API
|
||||
$table->string('type', 5)->default(Email::TYPE_WORK);
|
||||
$table->unsignedTinyInteger('type')->default(Email::TYPE_WORK);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ class CreateConversationsTable extends Migration
|
||||
// Conversation Number
|
||||
$table->unsignedInteger('number');
|
||||
// Number of threads the conversation has
|
||||
// Lineitems and notes are not counted
|
||||
$table->unsignedInteger('threads_count')->default(0);
|
||||
$table->unsignedTinyInteger('type');
|
||||
$table->integer('folder_id');
|
||||
@ -54,7 +55,7 @@ class CreateConversationsTable extends Migration
|
||||
$table->timestamp('closed_at')->nullable();
|
||||
// UTC time when the last user update occurred
|
||||
$table->timestamp('user_updated_at')->nullable();
|
||||
// customerWaitingSince
|
||||
// customerWaitingSince - reply by customer or user
|
||||
$table->timestamp('last_reply_at')->nullable();
|
||||
// Whether the last reply was from a user or a customer
|
||||
$table->unsignedTinyInteger('last_reply_from')->nullable();
|
||||
|
106
public/css/style.css
vendored
106
public/css/style.css
vendored
@ -391,23 +391,29 @@ select.form-control {
|
||||
border-color: #4f5d69;
|
||||
}
|
||||
.btn-success.btn-light {
|
||||
background-color: #81c981;
|
||||
background-color: #71c171;
|
||||
}
|
||||
.btn-success.btn-light:hover {
|
||||
background-color: #449d44;
|
||||
background-color: #57b357;
|
||||
}
|
||||
.btn-warning.btn-light {
|
||||
background-color: #f2b967;
|
||||
background-color: #f2b661;
|
||||
}
|
||||
.btn-warning.btn-light:hover {
|
||||
background-color: #ec971f;
|
||||
}
|
||||
.btn-danger.btn-light {
|
||||
background-color: #e27c78;
|
||||
background-color: #de6864;
|
||||
}
|
||||
.btn-danger.btn-light:hover {
|
||||
background-color: #c9302c;
|
||||
}
|
||||
.has-error.help-block {
|
||||
color: #a94442;
|
||||
}
|
||||
.has-error .form-control[data-parsley-exclude="true"] {
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cards
|
||||
@ -620,9 +626,12 @@ a h4 {
|
||||
background-color: #e6e6e6;
|
||||
border-color: #e6e6e6;
|
||||
}
|
||||
.note-editor.panel {
|
||||
margin: 0;
|
||||
}
|
||||
.note-btn i.glyphicon {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
top: 2px;
|
||||
}
|
||||
.note-btn.btn-sm {
|
||||
font-size: 14px;
|
||||
@ -634,6 +643,40 @@ a h4 {
|
||||
.note-actions .note-btn:first-child {
|
||||
font-size: 16px;
|
||||
}
|
||||
.note-editor.note-frame .note-statusbar.note-statusbar-toolbar {
|
||||
border-top: 1px solid #ddd;
|
||||
background-color: #f9fafa;
|
||||
text-align: right;
|
||||
color: #72808e;
|
||||
}
|
||||
.note-bottom-div {
|
||||
margin: 0 8px;
|
||||
color: #c1cbd4;
|
||||
font-size: 9px;
|
||||
}
|
||||
.btn-group-send {
|
||||
margin-left: 12px;
|
||||
margin-top: -1px;
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
.btn-group-send .btn {
|
||||
height: 38px;
|
||||
}
|
||||
.btn-send-menu {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-size: 9px;
|
||||
border-left-color: #659ac8;
|
||||
}
|
||||
.btn-send-text {
|
||||
min-width: 94px;
|
||||
}
|
||||
.note-statusbar-toolbar select.form-control {
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Customer
|
||||
@ -1050,13 +1093,18 @@ table.table-conversations td.conv-attachment {
|
||||
.conv-actions .conv-action:hover {
|
||||
color: #394956;
|
||||
}
|
||||
.conv-action.inactive {
|
||||
color: #aeb6c0;
|
||||
}
|
||||
.conv-action.dropdown {
|
||||
padding: 0!important;
|
||||
}
|
||||
#conv-subject {
|
||||
padding: 16px 9px 24px 20px;
|
||||
border-bottom: 1px solid #e3e8eb;
|
||||
}
|
||||
.conv-subj-block {
|
||||
padding: 16px 9px 24px 20px;
|
||||
}
|
||||
.conv-subjwrap {
|
||||
padding-right: 145px;
|
||||
position: relative;
|
||||
@ -1315,6 +1363,34 @@ table.table-conversations td.conv-attachment {
|
||||
.conv-block {
|
||||
margin: 0 20px;
|
||||
}
|
||||
.conv-block.conv-reply-block {
|
||||
margin-top: -7px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.conv-reply-block .form-group {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.conv-reply-block .form-group label {
|
||||
width: 33px;
|
||||
padding-right: 0;
|
||||
padding-left: 0px;
|
||||
}
|
||||
.conv-reply-block .form-group input {
|
||||
max-width: 600px;
|
||||
min-width: 150px;
|
||||
}
|
||||
.conv-reply-block .control-label {
|
||||
float: left;
|
||||
text-align: right;
|
||||
}
|
||||
.conv-reply-body {
|
||||
margin-top: 13px;
|
||||
}
|
||||
.conv-reply-field {
|
||||
padding-left: 10px;
|
||||
float: left;
|
||||
width: 68%;
|
||||
}
|
||||
@media (max-width:700px) {
|
||||
.conv-info .btn-group button.conv-info-val span:first-child {
|
||||
display: none!important;
|
||||
@ -1329,7 +1405,7 @@ table.table-conversations td.conv-attachment {
|
||||
.conv-subjtext {
|
||||
font-size: 20px;
|
||||
}
|
||||
#conv-subject {
|
||||
.conv-subj-block {
|
||||
padding: 16px 2px 24px 13px;
|
||||
}
|
||||
.conv-customer-block {
|
||||
@ -1383,6 +1459,9 @@ table.table-conversations td.conv-attachment {
|
||||
.conv-block {
|
||||
margin: 0 13px;
|
||||
}
|
||||
.conv-reply-field {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
@media (max-width:1100px) {
|
||||
#conv-layout-header,
|
||||
@ -1398,6 +1477,9 @@ table.table-conversations td.conv-attachment {
|
||||
#conv-layout-customer {
|
||||
border-bottom: 1px solid #e3e8eb;
|
||||
}
|
||||
.customer-snippet {
|
||||
min-height: 46px;
|
||||
}
|
||||
.customer-snippet,
|
||||
.conv-sidebar-block {
|
||||
padding: 0;
|
||||
@ -1417,7 +1499,7 @@ table.table-conversations td.conv-attachment {
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.2);
|
||||
}
|
||||
.conv-customer-block {
|
||||
padding: 15px 20px 12px;
|
||||
padding: 15px 20px 15px;
|
||||
}
|
||||
.customer-data {
|
||||
margin: 0 0 0 45px;
|
||||
@ -1538,6 +1620,9 @@ table.table-conversations td.conv-attachment {
|
||||
box-shadow: 4px 4px 12px rgba(0, 0, 0, .175);
|
||||
cursor: default;
|
||||
}
|
||||
.alert-floating.alert-danger {
|
||||
position: fixed;
|
||||
}
|
||||
.alert-floating .glyphicon {
|
||||
margin-right: 8px;
|
||||
position: relative;
|
||||
@ -1823,4 +1908,9 @@ a.help-icon:hover {
|
||||
background: url('../img/loader-main.gif') 50% 50% no-repeat transparent;
|
||||
opacity: 0.90;
|
||||
filter: alpha(opacity=90); /* For IE8 and earlier */
|
||||
}
|
||||
a.text-danger,
|
||||
a.text-danger:hover,
|
||||
a.text-danger:focus {
|
||||
color: #cc1f19!important;
|
||||
}
|
4
public/js/laroute.js
vendored
4
public/js/laroute.js
vendored
@ -8,8 +8,8 @@
|
||||
rootUrl: '',
|
||||
routes : [
|
||||
{
|
||||
"uri": "ajax",
|
||||
"name": "ajax"
|
||||
"uri": "conversation\/ajax",
|
||||
"name": "conversations.ajax"
|
||||
}
|
||||
],
|
||||
prefix: '',
|
||||
|
155
public/js/main.js
vendored
155
public/js/main.js
vendored
@ -1,4 +1,28 @@
|
||||
var fs_sidebar_menu_applied = false;
|
||||
var fs_loader_timeout;
|
||||
// Default validation options
|
||||
// https://devhints.io/parsley
|
||||
window.ParsleyConfig = window.ParsleyConfig || {};
|
||||
$.extend(window.ParsleyConfig, {
|
||||
excluded: '.note-codable, [data-parsley-exclude]',
|
||||
errorClass: 'has-error',
|
||||
//successClass: 'has-success',
|
||||
classHandler: function(ParsleyField) {
|
||||
return ParsleyField.$element.parents('.form-group:first');
|
||||
},
|
||||
errorsContainer: function(ParsleyField) {
|
||||
var help_block = ParsleyField.$element.parent().children('.help-block:first');
|
||||
|
||||
if (help_block) {
|
||||
return help_block;
|
||||
} else {
|
||||
return ParsleyField.$element;
|
||||
//return ParsleyField.$element.parents('.form-group:first');
|
||||
}
|
||||
},
|
||||
errorsWrapper: '<div class="help-block"></div>',
|
||||
errorTemplate: '<div></div>'
|
||||
});
|
||||
|
||||
// Configuring editor
|
||||
var EditorAttachmentButton = function (context) {
|
||||
@ -21,7 +45,7 @@ var EditorSavedRepliesButton = function (context) {
|
||||
|
||||
// create button
|
||||
var button = ui.button({
|
||||
contents: '<i class="glyphicon glyphicon-floppy-open"></i>',
|
||||
contents: '<i class="glyphicon glyphicon-comment"></i>',
|
||||
tooltip: Lang.get("messages.saved_replies"),
|
||||
container: 'body',
|
||||
click: function () {
|
||||
@ -96,13 +120,15 @@ function mailboxUpdateInit(from_name_custom)
|
||||
// https://www.kerneldev.com/2018/01/11/using-summernote-wysiwyg-editor-with-laravel/
|
||||
// https://gist.github.com/abr4xas/22caf07326a81ecaaa195f97321da4ae
|
||||
$('#signature').summernote({
|
||||
height: 120,
|
||||
minHeight: 120,
|
||||
dialogsInBody: true,
|
||||
disableResizeEditor: true,
|
||||
toolbar: [
|
||||
// [groupName, [list of button]]
|
||||
['style', ['bold', 'italic', 'underline', 'ul', 'ol', 'link', 'codeview']],
|
||||
]
|
||||
});
|
||||
$('.note-statusbar').remove();
|
||||
|
||||
$('#from_name').change(function(event) {
|
||||
if ($(this).val() == from_name_custom) {
|
||||
@ -183,10 +209,8 @@ function multiInputInit()
|
||||
} );
|
||||
}
|
||||
|
||||
function fsAjax(data, success_callback, error_callback, no_loader)
|
||||
function fsAjax(data, url, success_callback, error_callback, no_loader)
|
||||
{
|
||||
var url = laroute.route('ajax');
|
||||
|
||||
// Setup AJAX
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
@ -195,13 +219,14 @@ function fsAjax(data, success_callback, error_callback, no_loader)
|
||||
});
|
||||
// Show loader
|
||||
if (typeof(no_loader) == "undefined" || !no_loader) {
|
||||
fsLoaderShow();
|
||||
fsLoaderShow(true);
|
||||
}
|
||||
|
||||
if (typeof(error_callback) == "undefined" || !error_callback) {
|
||||
error_callback = function() {
|
||||
fsShowFloatingAlert('error', Lang.get("messages.ajax_error"));
|
||||
fsLoaderHide();
|
||||
$("button[data-loading-text!='']:disabled").button('reset');
|
||||
};
|
||||
}
|
||||
|
||||
@ -215,14 +240,22 @@ function fsAjax(data, success_callback, error_callback, no_loader)
|
||||
});
|
||||
}
|
||||
|
||||
function fsLoaderShow()
|
||||
// Show loader
|
||||
function fsLoaderShow(delay)
|
||||
{
|
||||
$("#loader-main").show();
|
||||
if (typeof(delay) != "undefined" && delay) {
|
||||
fs_loader_timeout = setTimeout(function() {
|
||||
$("#loader-main").show();
|
||||
}, 1000);
|
||||
} else {
|
||||
$("#loader-main").show();
|
||||
}
|
||||
}
|
||||
|
||||
function fsLoaderHide()
|
||||
{
|
||||
$("#loader-main").hide();
|
||||
clearTimeout(fs_loader_timeout);
|
||||
}
|
||||
|
||||
// Display floating alerts
|
||||
@ -273,7 +306,9 @@ function conversationInit()
|
||||
action: 'conversation_change_user',
|
||||
user_id: $(this).attr('data-user_id'),
|
||||
conversation_id: fsGetGlobalAttr('conversation_id')
|
||||
}, function(response) {
|
||||
},
|
||||
laroute.route('conversations.ajax'),
|
||||
function(response) {
|
||||
if (typeof(response.status) != "undefined" && response.status == 'success') {
|
||||
if (typeof(response.redirect_url) != "undefined") {
|
||||
window.location.href = response.redirect_url;
|
||||
@ -298,7 +333,9 @@ function conversationInit()
|
||||
action: 'conversation_change_status',
|
||||
status: $(this).attr('data-status'),
|
||||
conversation_id: fsGetGlobalAttr('conversation_id')
|
||||
}, function(response) {
|
||||
},
|
||||
laroute.route('conversations.ajax'),
|
||||
function(response) {
|
||||
if (typeof(response.status) != "undefined" && response.status == 'success') {
|
||||
if (typeof(response.redirect_url) != "undefined") {
|
||||
window.location.href = response.redirect_url;
|
||||
@ -315,6 +352,20 @@ function conversationInit()
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
// Reply
|
||||
jQuery(".conv-reply").click(function(e){
|
||||
if ($(".conv-reply-block").hasClass('hidden')) {
|
||||
$(".conv-action-block").addClass('hidden');
|
||||
$(".conv-reply-block").removeClass('hidden');
|
||||
$(".conv-action").addClass('inactive');
|
||||
$(this).removeClass('inactive');
|
||||
} else {
|
||||
$(".conv-action-block").addClass('hidden');
|
||||
$(".conv-action").removeClass('inactive');
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@ -323,31 +374,81 @@ function fsGetGlobalAttr(attr)
|
||||
return $("body:first").attr('data-'+attr);
|
||||
}
|
||||
|
||||
// Initialize conversation body editor
|
||||
function convEditorInit()
|
||||
{
|
||||
$('#body').summernote({
|
||||
minHeight: 200,
|
||||
dialogsInBody: true,
|
||||
dialogsFade: true,
|
||||
disableResizeEditor: true,
|
||||
toolbar: [
|
||||
// [groupName, [list of button]]
|
||||
['style', ['attachment', 'bold', 'italic', 'underline', 'ul', 'ol', 'link', 'picture', 'codeview', 'savedreplies']],
|
||||
['actions', ['savedraft', 'discard']],
|
||||
],
|
||||
buttons: {
|
||||
attachment: EditorAttachmentButton,
|
||||
savedreplies: EditorSavedRepliesButton,
|
||||
savedraft: EditorSaveDraftButton,
|
||||
discard: EditorDiscardButton
|
||||
}
|
||||
});
|
||||
var html = $('#editor_bottom_toolbar').html();
|
||||
$('.note-statusbar').addClass('note-statusbar-toolbar form-inline').html(html);
|
||||
}
|
||||
|
||||
// New conversation page
|
||||
function newConversationInit()
|
||||
{
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#body').summernote({
|
||||
height: 120,
|
||||
dialogsInBody: true,
|
||||
dialogsFade: true,
|
||||
toolbar: [
|
||||
// [groupName, [list of button]]
|
||||
['style', ['attachment', 'bold', 'italic', 'underline', 'ul', 'ol', 'link', 'picture', 'codeview', 'savedreplies']],
|
||||
['actions', ['savedraft', 'discard']],
|
||||
],
|
||||
buttons: {
|
||||
attachment: EditorAttachmentButton,
|
||||
savedreplies: EditorSavedRepliesButton,
|
||||
savedraft: EditorSaveDraftButton,
|
||||
discard: EditorDiscardButton
|
||||
}
|
||||
});
|
||||
convEditorInit();
|
||||
|
||||
$('.toggle-cc a:first').click(function() {
|
||||
$('.field-cc').removeClass('hidden');
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
$('.dropdown-after-send a').click(function() {
|
||||
$('.dropdown-after-send li').removeClass('active');
|
||||
$(this).parent().addClass('active');
|
||||
alert('todo: implement choosing action after sending a message');
|
||||
});
|
||||
|
||||
// Send reply or new conversation
|
||||
jQuery(".btn-send-text").click(function(e){
|
||||
var button = $(this);
|
||||
|
||||
// Validate before sending
|
||||
form = $(".form-reply:first");
|
||||
|
||||
if (!form.parsley().validate()) {
|
||||
return;
|
||||
}
|
||||
|
||||
button.button('loading');
|
||||
|
||||
data = form.serialize();
|
||||
data += '&action=send_reply';
|
||||
|
||||
fsAjax(data, laroute.route('conversations.ajax'), function(response) {
|
||||
if (typeof(response.status) != "undefined" && response.status == 'success') {
|
||||
if (typeof(response.redirect_url) != "undefined") {
|
||||
window.location.href = response.redirect_url;
|
||||
} else {
|
||||
window.location.href = '';
|
||||
}
|
||||
} else if (typeof(response.msg) != "undefined") {
|
||||
fsShowFloatingAlert('error', response.msg);
|
||||
button.button('reset');
|
||||
} else {
|
||||
fsShowFloatingAlert('error', Lang.get("messages.error_occured"));
|
||||
button.button('reset');
|
||||
}
|
||||
fsLoaderHide();
|
||||
});
|
||||
e.preventDefault();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
29
public/js/parsley/i18n/al.js
vendored
Normal file
29
public/js/parsley/i18n/al.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
|
||||
|
||||
Parsley.addMessages('al', {
|
||||
defaultMessage: "Kjo vlerë është invalide.",
|
||||
type: {
|
||||
email: "Kjo vlerë duhet të ketë formë valide të një email adrese.",
|
||||
url: "Kjo vlerë duhet të ketë formë valide të një URL-je.",
|
||||
number: "Kjo vlerë duhet të jetë numërike.",
|
||||
integer: "Kjo vlerë duhet të jetë numër i plotë.",
|
||||
digits: "Kjo vlerë duhet të jetë shifër.",
|
||||
alphanum: "Kjo vlerë duhet të jetë alfanumerike."
|
||||
},
|
||||
notblank: "Kjo vlerë nuk duhet të jetë e zbrazët.",
|
||||
required: "Kjo vlerë kërkohet domosdosmërisht.",
|
||||
pattern: "Kjo vlerë është invalide.",
|
||||
min: "Kjo vlerë duhet të jetë më e madhe ose e barabartë me %s.",
|
||||
max: "Kjo vlerë duhet të jetë më e vogël ose e barabartë me %s.",
|
||||
range: "Kjo vlerë duhet të jetë në mes të %s dhe %s.",
|
||||
minlength: "Kjo vlerë është shum e shkurtë. Ajo duhet të ketë %s apo më shum shkronja.",
|
||||
maxlength: "Kjo vlerë është shum e gjatë. Ajo duhet të ketë %s apo më pak shkronja",
|
||||
length: "Gjatësia e kësaj vlere është invalide. Ajo duhet të jetë në mes të %s dhe %s shkronjash.",
|
||||
mincheck: "Ju duhet të zgjedhni së paku %s zgjedhje.",
|
||||
maxcheck: "Ju duhet të zgjedhni %s ose më pak zgjedhje.",
|
||||
check: "Ju duhet të zgjedhni në mes të %s dhe %s zgjedhjeve.",
|
||||
equalto: "Kjo vlerë duhet të jetë e njejtë."
|
||||
});
|
||||
|
||||
Parsley.setLocale('al');
|
29
public/js/parsley/i18n/ar.js
vendored
Normal file
29
public/js/parsley/i18n/ar.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ar', {
|
||||
defaultMessage: "تأكد من صحة القيمة المدخل",
|
||||
type: {
|
||||
email: "تأكد من إدخال بريد الكتروني صحيح",
|
||||
url: "تأكد من إدخال رابط صحيح",
|
||||
number: "تأكد من إدخال رقم",
|
||||
integer: "تأكد من إدخال عدد صحيح بدون كسور",
|
||||
digits: "تأكد من إدخال رقم",
|
||||
alphanum: "تأكد من إدخال حروف وأرقام فقط"
|
||||
},
|
||||
notblank: "تأكد من تعبئة الحقل",
|
||||
required: "هذا الحقل مطلوب",
|
||||
pattern: "القيمة المدخلة غير صحيحة",
|
||||
min: "القيمة المدخلة يجب أن تكون أكبر من %s.",
|
||||
max: "القيمة المدخلة يجب أن تكون أصغر من %s.",
|
||||
range: "القيمة المدخلة يجب أن تكون بين %s و %s.",
|
||||
minlength: "القيمة المدخلة قصيرة جداً . تأكد من إدخال %s حرف أو أكثر",
|
||||
maxlength: "القيمة المدخلة طويلة . تأكد من إدخال %s حرف أو أقل",
|
||||
length: "القيمة المدخلة غير صحيحة. تأكد من إدخال بين %s و %s خانة",
|
||||
mincheck: "يجب اختيار %s خيار على الأقل.",
|
||||
maxcheck: "يجب اختيار%s خيار أو أقل",
|
||||
check: "يجب اختيار بين %s و %s خيار.",
|
||||
equalto: "تأكد من تطابق القيمتين المدخلة."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ar');
|
29
public/js/parsley/i18n/bg.js
vendored
Normal file
29
public/js/parsley/i18n/bg.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('bg', {
|
||||
defaultMessage: "Невалидна стойност.",
|
||||
type: {
|
||||
email: "Невалиден имейл адрес.",
|
||||
url: "Невалиден URL адрес.",
|
||||
number: "Невалиден номер.",
|
||||
integer: "Невалиден номер.",
|
||||
digits: "Невалидни цифри.",
|
||||
alphanum: "Стойността трябва да садържа само букви или цифри."
|
||||
},
|
||||
notblank: "Полето е задължително.",
|
||||
required: "Полето е задължително.",
|
||||
pattern: "Невалидна стойност.",
|
||||
min: "Стойността трябва да бъде по-голяма или равна на %s.",
|
||||
max: "Стойността трябва да бъде по-малка или равна на %s.",
|
||||
range: "Стойността трябва да бъде между %s и %s.",
|
||||
minlength: "Стойността е прекалено кратка. Мин. дължина: %s символа.",
|
||||
maxlength: "Стойността е прекалено дълга. Макс. дължина: %s символа.",
|
||||
length: "Дължината на стойността трябва да бъде между %s и %s символа.",
|
||||
mincheck: "Трябва да изберете поне %s стойности.",
|
||||
maxcheck: "Трябва да изберете най-много %s стойности.",
|
||||
check: "Трябва да изберете между %s и %s стойности.",
|
||||
equalto: "Стойността трябва да съвпада."
|
||||
});
|
||||
|
||||
Parsley.setLocale('bg');
|
29
public/js/parsley/i18n/ca.js
vendored
Normal file
29
public/js/parsley/i18n/ca.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ca', {
|
||||
defaultMessage: "Aquest valor sembla ser invàlid.",
|
||||
type: {
|
||||
email: "Aquest valor ha de ser una adreça de correu electrònic vàlida.",
|
||||
url: "Aquest valor ha de ser una URL vàlida.",
|
||||
number: "Aquest valor ha de ser un nombre vàlid.",
|
||||
integer: "Aquest valor ha de ser un nombre enter vàlid.",
|
||||
digits: "Aquest valor només pot contenir dígits.",
|
||||
alphanum: "Aquest valor ha de ser alfanumèric."
|
||||
},
|
||||
notblank: "Aquest valor no pot ser buit.",
|
||||
required: "Aquest valor és obligatori.",
|
||||
pattern: "Aquest valor és incorrecte.",
|
||||
min: "Aquest valor no pot ser menor que %s.",
|
||||
max: "Aquest valor no pot ser major que %s.",
|
||||
range: "Aquest valor ha d'estar entre %s i %s.",
|
||||
minlength: "Aquest valor és massa curt. La longitud mínima és de %s caràcters.",
|
||||
maxlength: "Aquest valor és massa llarg. La longitud màxima és de %s caràcters.",
|
||||
length: "La longitud d'aquest valor ha de ser d'entre %s i %s caràcters.",
|
||||
mincheck: "Has de marcar un mínim de %s opcions.",
|
||||
maxcheck: "Has de marcar un màxim de %s opcions.",
|
||||
check: "Has de marcar entre %s i %s opcions.",
|
||||
equalto: "Aquest valor ha de ser el mateix."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ca');
|
13
public/js/parsley/i18n/cs.extra.js
vendored
Normal file
13
public/js/parsley/i18n/cs.extra.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('cs', {
|
||||
dateiso: "Tato položka musí být datum ve formátu RRRR-MM-DD.",
|
||||
minwords: "Tato položka musí mít délku nejméně %s slov.",
|
||||
maxwords: "Tato položka musí mít délku nejvíce %s slov.",
|
||||
words: "Tato položka musí být od %s do %s slov dlouhá.",
|
||||
gt: "Tato hodnota musí být větší.",
|
||||
gte: "Tato hodnota musí být větší nebo rovna.",
|
||||
lt: "Tato hodnota musí být menší.",
|
||||
lte: "Tato hodnota musí být menší nebo rovna."
|
||||
});
|
29
public/js/parsley/i18n/cs.js
vendored
Normal file
29
public/js/parsley/i18n/cs.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('cs', {
|
||||
defaultMessage: "Tato položka je neplatná.",
|
||||
type: {
|
||||
email: "Tato položka musí být e-mailová adresa.",
|
||||
url: "Tato položka musí být platná URL adresa.",
|
||||
number: "Tato položka musí být číslo.",
|
||||
integer: "Tato položka musí být celé číslo.",
|
||||
digits: "Tato položka musí být kladné celé číslo.",
|
||||
alphanum: "Tato položka musí být alfanumerická."
|
||||
},
|
||||
notblank: "Tato položka nesmí být prázdná.",
|
||||
required: "Tato položka je povinná.",
|
||||
pattern: "Tato položka je neplatná.",
|
||||
min: "Tato položka musí být větší nebo rovna %s.",
|
||||
max: "Tato položka musí být menší nebo rovna %s.",
|
||||
range: "Tato položka musí být v rozsahu od %s do %s.",
|
||||
minlength: "Tato položka musí mít nejméně %s znaků.",
|
||||
maxlength: "Tato položka musí mít nejvíce %s znaků.",
|
||||
length: "Tato položka musí mít délku od %s do %s znaků.",
|
||||
mincheck: "Je nutné vybrat alespoň %s možností.",
|
||||
maxcheck: "Je nutné vybrat nejvýše %s možností.",
|
||||
check: "Je nutné vybrat od %s do %s možností.",
|
||||
equalto: "Tato položka musí být stejná."
|
||||
});
|
||||
|
||||
Parsley.setLocale('cs');
|
29
public/js/parsley/i18n/da.js
vendored
Normal file
29
public/js/parsley/i18n/da.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('da', {
|
||||
defaultMessage: "Indtast venligst en korrekt værdi.",
|
||||
type: {
|
||||
email: "Indtast venligst en korrekt emailadresse.",
|
||||
url: "Indtast venligst en korrekt internetadresse.",
|
||||
number: "Indtast venligst et tal.",
|
||||
integer: "Indtast venligst et heltal.",
|
||||
digits: "Dette felt må kun bestå af tal.",
|
||||
alphanum: "Dette felt skal indeholde både tal og bogstaver."
|
||||
},
|
||||
notblank: "Dette felt må ikke være tomt.",
|
||||
required: "Dette felt er påkrævet.",
|
||||
pattern: "Ugyldig indtastning.",
|
||||
min: "Dette felt skal indeholde et tal som er større end eller lig med %s.",
|
||||
max: "Dette felt skal indeholde et tal som er mindre end eller lig med %s.",
|
||||
range: "Dette felt skal indeholde et tal mellem %s og %s.",
|
||||
minlength: "Indtast venligst mindst %s tegn.",
|
||||
maxlength: "Dette felt kan højst indeholde %s tegn.",
|
||||
length: "Længden af denne værdi er ikke korrekt. Værdien skal være mellem %s og %s tegn lang.",
|
||||
mincheck: "Vælg mindst %s muligheder.",
|
||||
maxcheck: "Vælg op til %s muligheder.",
|
||||
check: "Vælg mellem %s og %s muligheder.",
|
||||
equalto: "De to felter er ikke ens."
|
||||
});
|
||||
|
||||
Parsley.setLocale('da');
|
13
public/js/parsley/i18n/de.extra.js
vendored
Normal file
13
public/js/parsley/i18n/de.extra.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('de', {
|
||||
dateiso: "Die Eingabe muss ein gültiges Datum sein (YYYY-MM-DD).",
|
||||
minwords: "Die Eingabe ist zu kurz. Sie muss aus %s oder mehr Wörtern bestehen.",
|
||||
maxwords: "Die Eingabe ist zu lang. Sie muss aus %s oder weniger Wörtern bestehen.",
|
||||
words: "Die Länge der Eingabe ist ungültig. Sie muss zwischen %s und %s Wörter enthalten.",
|
||||
gt: "Die Eingabe muss größer sein.",
|
||||
gte: "Die Eingabe muss größer oder gleich sein.",
|
||||
lt: "Die Eingabe muss kleiner sein.",
|
||||
lte: "Die Eingabe muss kleiner oder gleich sein."
|
||||
});
|
29
public/js/parsley/i18n/de.js
vendored
Normal file
29
public/js/parsley/i18n/de.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('de', {
|
||||
defaultMessage: "Die Eingabe scheint nicht korrekt zu sein.",
|
||||
type: {
|
||||
email: "Die Eingabe muss eine gültige E-Mail-Adresse sein.",
|
||||
url: "Die Eingabe muss eine gültige URL sein.",
|
||||
number: "Die Eingabe muss eine Zahl sein.",
|
||||
integer: "Die Eingabe muss eine Zahl sein.",
|
||||
digits: "Die Eingabe darf nur Ziffern enthalten.",
|
||||
alphanum: "Die Eingabe muss alphanumerisch sein."
|
||||
},
|
||||
notblank: "Die Eingabe darf nicht leer sein.",
|
||||
required: "Dies ist ein Pflichtfeld.",
|
||||
pattern: "Die Eingabe scheint ungültig zu sein.",
|
||||
min: "Die Eingabe muss größer oder gleich %s sein.",
|
||||
max: "Die Eingabe muss kleiner oder gleich %s sein.",
|
||||
range: "Die Eingabe muss zwischen %s und %s liegen.",
|
||||
minlength: "Die Eingabe ist zu kurz. Es müssen mindestens %s Zeichen eingegeben werden.",
|
||||
maxlength: "Die Eingabe ist zu lang. Es dürfen höchstens %s Zeichen eingegeben werden.",
|
||||
length: "Die Länge der Eingabe ist ungültig. Es müssen zwischen %s und %s Zeichen eingegeben werden.",
|
||||
mincheck: "Wählen Sie mindestens %s Angaben aus.",
|
||||
maxcheck: "Wählen Sie maximal %s Angaben aus.",
|
||||
check: "Wählen Sie zwischen %s und %s Angaben.",
|
||||
equalto: "Dieses Feld muss dem anderen entsprechen."
|
||||
});
|
||||
|
||||
Parsley.setLocale('de');
|
14
public/js/parsley/i18n/el.extra.js
vendored
Normal file
14
public/js/parsley/i18n/el.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('el', {
|
||||
dateiso: "Η τιμή πρέπει να είναι μια έγκυρη ημερομηνία (YYYY-MM-DD).",
|
||||
minwords: "Το κείμενο είναι πολύ μικρό. Πρέπει να έχει %s ή και περισσότερες λέξεις.",
|
||||
maxwords: "Το κείμενο είναι πολύ μεγάλο. Πρέπει να έχει %s ή και λιγότερες λέξεις.",
|
||||
words: "Το μήκος του κειμένου είναι μη έγκυρο. Πρέπει να είναι μεταξύ %s και %s λεξεων.",
|
||||
gt: "Η τιμή πρέπει να είναι μεγαλύτερη.",
|
||||
gte: "Η τιμή πρέπει να είναι μεγαλύτερη ή ίση.",
|
||||
lt: "Η τιμή πρέπει να είναι μικρότερη.",
|
||||
lte: "Η τιμή πρέπει να είναι μικρότερη ή ίση.",
|
||||
notequalto: "Η τιμή πρέπει να είναι διαφορετική."
|
||||
});
|
29
public/js/parsley/i18n/el.js
vendored
Normal file
29
public/js/parsley/i18n/el.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('el', {
|
||||
defaultMessage: "Η τιμή φαίνεται να είναι μη έγκυρη.",
|
||||
type: {
|
||||
email: "Η τιμή πρέπει να είναι ένα έγκυρο email.",
|
||||
url: "Η τιμή πρέπει να είναι ένα έγκυρο url.",
|
||||
number: "Η τιμή πρέπει να είναι ένας έγκυρος αριθμός.",
|
||||
integer: "Η τιμή πρέπει να είναι ένας έγκυρος ακέραιος.",
|
||||
digits: "Η τιμή πρέπει να είναι ψηφία.",
|
||||
alphanum: "Η τιμή πρέπει να είναι αλφαριθμητικό."
|
||||
},
|
||||
notblank: "Η τιμή δεν πρέπει να είναι κενή.",
|
||||
required: "Η τιμή αυτή απαιτείται.",
|
||||
pattern: "Η τιμή φαίνεται να είναι μη έγκυρη.",
|
||||
min: "Η τιμή πρέπει να είναι μεγαλύτερη ή ίση με %s.",
|
||||
max: "Η τιμή πρέπει να είναι μικρότερη ή ίση με %s.",
|
||||
range: "Η τιμή πρέπει να είναι μεταξύ %s και %s.",
|
||||
minlength: "Το κείμενο είναι πολύ μικρό. Πρέπει να είναι %s ή και περισσότεροι χαρακτήρες.",
|
||||
maxlength: "Η κείμενο είναι πολύ μεγάλο. Πρέπει να είναι %s ή και λιγότεροι χαρακτήρες.",
|
||||
length: "Το μήκος του κειμένου είναι μη έγκυρο. Πρέπει να είναι μεταξύ %s και %s χαρακτήρων.",
|
||||
mincheck: "Πρέπει να επιλέξετε τουλάχιστον %s επιλογές.",
|
||||
maxcheck: "Πρέπει να επιλέξετε %s ή λιγότερες επιλογές.",
|
||||
check: "Πρέπει να επιλέξετε μεταξύ %s και %s επίλογων.",
|
||||
equalto: "Η τιμή πρέπει να είναι η ίδια."
|
||||
});
|
||||
|
||||
Parsley.setLocale('el');
|
14
public/js/parsley/i18n/en.extra.js
vendored
Normal file
14
public/js/parsley/i18n/en.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('en', {
|
||||
dateiso: "This value should be a valid date (YYYY-MM-DD).",
|
||||
minwords: "This value is too short. It should have %s words or more.",
|
||||
maxwords: "This value is too long. It should have %s words or fewer.",
|
||||
words: "This value length is invalid. It should be between %s and %s words long.",
|
||||
gt: "This value should be greater.",
|
||||
gte: "This value should be greater or equal.",
|
||||
lt: "This value should be less.",
|
||||
lte: "This value should be less or equal.",
|
||||
notequalto: "This value should be different."
|
||||
});
|
30
public/js/parsley/i18n/en.js
vendored
Normal file
30
public/js/parsley/i18n/en.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
// This is included with the Parsley library itself,
|
||||
// thus there is no use in adding it to your project.
|
||||
|
||||
|
||||
Parsley.addMessages('en', {
|
||||
defaultMessage: "This value seems to be invalid.",
|
||||
type: {
|
||||
email: "This value should be a valid email.",
|
||||
url: "This value should be a valid url.",
|
||||
number: "This value should be a valid number.",
|
||||
integer: "This value should be a valid integer.",
|
||||
digits: "This value should be digits.",
|
||||
alphanum: "This value should be alphanumeric."
|
||||
},
|
||||
notblank: "This value should not be blank.",
|
||||
required: "This value is required.",
|
||||
pattern: "This value seems to be invalid.",
|
||||
min: "This value should be greater than or equal to %s.",
|
||||
max: "This value should be lower than or equal to %s.",
|
||||
range: "This value should be between %s and %s.",
|
||||
minlength: "This value is too short. It should have %s characters or more.",
|
||||
maxlength: "This value is too long. It should have %s characters or fewer.",
|
||||
length: "This value length is invalid. It should be between %s and %s characters long.",
|
||||
mincheck: "You must select at least %s choices.",
|
||||
maxcheck: "You must select %s choices or fewer.",
|
||||
check: "You must select between %s and %s choices.",
|
||||
equalto: "This value should be the same."
|
||||
});
|
||||
|
||||
Parsley.setLocale('en');
|
30
public/js/parsley/i18n/es.js
vendored
Normal file
30
public/js/parsley/i18n/es.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
// ParsleyConfig definition if not already set
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('es', {
|
||||
defaultMessage: "Este valor parece ser inválido.",
|
||||
type: {
|
||||
email: "Este valor debe ser un correo válido.",
|
||||
url: "Este valor debe ser una URL válida.",
|
||||
number: "Este valor debe ser un número válido.",
|
||||
integer: "Este valor debe ser un número válido.",
|
||||
digits: "Este valor debe ser un dígito válido.",
|
||||
alphanum: "Este valor debe ser alfanumérico."
|
||||
},
|
||||
notblank: "Este valor no debe estar en blanco.",
|
||||
required: "Este valor es requerido.",
|
||||
pattern: "Este valor es incorrecto.",
|
||||
min: "Este valor no debe ser menor que %s.",
|
||||
max: "Este valor no debe ser mayor que %s.",
|
||||
range: "Este valor debe estar entre %s y %s.",
|
||||
minlength: "Este valor es muy corto. La longitud mínima es de %s caracteres.",
|
||||
maxlength: "Este valor es muy largo. La longitud máxima es de %s caracteres.",
|
||||
length: "La longitud de este valor debe estar entre %s y %s caracteres.",
|
||||
mincheck: "Debe seleccionar al menos %s opciones.",
|
||||
maxcheck: "Debe seleccionar %s opciones o menos.",
|
||||
check: "Debe seleccionar entre %s y %s opciones.",
|
||||
equalto: "Este valor debe ser idéntico."
|
||||
});
|
||||
|
||||
Parsley.setLocale('es');
|
29
public/js/parsley/i18n/et.js
vendored
Normal file
29
public/js/parsley/i18n/et.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('et', {
|
||||
defaultMessage: "See väärtus ei sobi.",
|
||||
type: {
|
||||
email: "See väärtus peab olema kehtiv email.",
|
||||
url: "See väärtus peab olema kehtiv link.",
|
||||
number: "See väärtus peab olema number.",
|
||||
integer: "See väärtus peab olema täisarv.",
|
||||
digits: "See väärtus peab olema number.",
|
||||
alphanum: "See väärtus peab olema täht või number."
|
||||
},
|
||||
notblank: "See väärtus ei tohi olla tühi.",
|
||||
required: "See väärtus on nõutud.",
|
||||
pattern: "See väärtus ei sobi.",
|
||||
min: "See väärtus peab olema suurem või võrdne %s.",
|
||||
max: "See väärtus peab olema väiksem või võrdne %s.",
|
||||
range: "See väärtus peab olema %s ja %s vahel.",
|
||||
minlength: "See väärtus on liiga lühike. Peab olema vähemalt %s tähte.",
|
||||
maxlength: "See väärtus ei tohi olla rohkem kui %s tähte.",
|
||||
length: "See väärtuse pikkus ei sobi. Peab olema vahemikus %s - %s.",
|
||||
mincheck: "Pead valima vähemalt %s valikut.",
|
||||
maxcheck: "Maksimaalselt %s valikut.",
|
||||
check: "Valik peab olema vahemikus %s ja %s .",
|
||||
equalto: "See väärtus peab olema sama."
|
||||
});
|
||||
|
||||
Parsley.setLocale('et');
|
29
public/js/parsley/i18n/eu.js
vendored
Normal file
29
public/js/parsley/i18n/eu.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('eu', {
|
||||
defaultMessage: "Balio hau baliogabekoa dirudi.",
|
||||
type: {
|
||||
email: "Balio honek posta balioduna izan behar da.",
|
||||
url: "Balio honek URL balioduna izan behar da.",
|
||||
number: "Balio honek zenbaki balioduna izan behar da.",
|
||||
integer: "Balio honek zenbaki balioduna izan behar da.",
|
||||
digits: "Balio honek digitu balioduna izan behar da.",
|
||||
alphanum: "Balio honek alfanumerikoa izan behar da."
|
||||
},
|
||||
notblank: "Balio honek ezin da hutsik egon.",
|
||||
required: "Balio hau nahitaezkoa da.",
|
||||
pattern: "Balio hau ez da zuzena.",
|
||||
min: "Balio honek %s baino baxuagoa ezin da izan.",
|
||||
max: "Balio honek %s baino altuagoa ezin da izan.",
|
||||
range: "Balio honek %s eta %s artean egon behar da.",
|
||||
minlength: "Balio hau oso motza da. Gutxienezko luzera %s karakteretakoa da.",
|
||||
maxlength: "Balio hau oso luzea da. Gehienezko luzera %s karakteretakoa da.",
|
||||
length: "Balio honen luzera %s eta %s karaketere artean egon behar da.",
|
||||
mincheck: "%s aukera hautatu behar dituzu gutxienez.",
|
||||
maxcheck: "%s aukera edo gutxiago hautatu behar dituzu.",
|
||||
check: "%s eta %s aukeren artean hautatu behar duzu.",
|
||||
equalto: "Balio honek berbera izan behar da."
|
||||
});
|
||||
|
||||
Parsley.setLocale('eu');
|
29
public/js/parsley/i18n/fa.js
vendored
Normal file
29
public/js/parsley/i18n/fa.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('fa', {
|
||||
defaultMessage: "این مقدار صحیح نمی باشد",
|
||||
type: {
|
||||
email: "این مقدار باید یک ایمیل معتبر باشد",
|
||||
url: "این مقدار باید یک آدرس معتبر باشد",
|
||||
number: "این مقدار باید یک عدد معتبر باشد",
|
||||
integer: "این مقدار باید یک عدد صحیح معتبر باشد",
|
||||
digits: "این مقدار باید یک عدد باشد",
|
||||
alphanum: "این مقدار باید حروف الفبا باشد"
|
||||
},
|
||||
notblank: "این مقدار نباید خالی باشد",
|
||||
required: "این مقدار باید وارد شود",
|
||||
pattern: "این مقدار به نظر می رسد نامعتبر است",
|
||||
min: "این مقدیر باید بزرگتر با مساوی %s باشد",
|
||||
max: "این مقدار باید کمتر و یا مساوی %s باشد",
|
||||
range: "این مقدار باید بین %s و %s باشد",
|
||||
minlength: "این مقدار بیش از حد کوتاه است. باید %s کاراکتر یا بیشتر باشد.",
|
||||
maxlength: "این مقدار بیش از حد طولانی است. باید %s کاراکتر یا کمتر باشد.",
|
||||
length: "این مقدار نامعتبر است و باید بین %s و %s باشد",
|
||||
mincheck: "شما حداقل باید %s گزینه را انتخاب کنید.",
|
||||
maxcheck: "شما حداکثر میتوانید %s انتخاب داشته باشید.",
|
||||
check: "باید بین %s و %s مورد انتخاب کنید",
|
||||
equalto: "این مقدار باید یکسان باشد"
|
||||
});
|
||||
|
||||
Parsley.setLocale('fa');
|
6
public/js/parsley/i18n/fi.extra.js
vendored
Normal file
6
public/js/parsley/i18n/fi.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('fi', {
|
||||
dateiso: "Syötä oikea päivämäärä (YYYY-MM-DD)."
|
||||
});
|
29
public/js/parsley/i18n/fi.js
vendored
Normal file
29
public/js/parsley/i18n/fi.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('fi', {
|
||||
defaultMessage: "Syötetty arvo on virheellinen.",
|
||||
type: {
|
||||
email: "Sähköpostiosoite on virheellinen.",
|
||||
url: "Url-osoite on virheellinen.",
|
||||
number: "Syötä numero.",
|
||||
integer: "Syötä kokonaisluku.",
|
||||
digits: "Syötä ainoastaan numeroita.",
|
||||
alphanum: "Syötä ainoastaan kirjaimia tai numeroita."
|
||||
},
|
||||
notblank: "Tämä kenttää ei voi jättää tyhjäksi.",
|
||||
required: "Tämä kenttä on pakollinen.",
|
||||
pattern: "Syötetty arvo on virheellinen.",
|
||||
min: "Syötä arvo joka on yhtä suuri tai suurempi kuin %s.",
|
||||
max: "Syötä arvo joka on pienempi tai yhtä suuri kuin %s.",
|
||||
range: "Syötä arvo väliltä: %s-%s.",
|
||||
minlength: "Syötetyn arvon täytyy olla vähintään %s merkkiä pitkä.",
|
||||
maxlength: "Syötetty arvo saa olla enintään %s merkkiä pitkä.",
|
||||
length: "Syötetyn arvon täytyy olla vähintään %s ja enintään %s merkkiä pitkä.",
|
||||
mincheck: "Valitse vähintään %s vaihtoehtoa.",
|
||||
maxcheck: "Valitse enintään %s vaihtoehtoa.",
|
||||
check: "Valitse %s-%s vaihtoehtoa.",
|
||||
equalto: "Salasanat eivät täsmää."
|
||||
});
|
||||
|
||||
Parsley.setLocale('fi');
|
14
public/js/parsley/i18n/fr.extra.js
vendored
Normal file
14
public/js/parsley/i18n/fr.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('fr', {
|
||||
dateiso: "Cette valeur n'est pas une date valide (YYYY-MM-DD).",
|
||||
minwords: "Cette valeur est trop courte. Elle doit contenir au moins %s mots.",
|
||||
maxwords: "Cette valeur est trop longue. Elle doit contenir tout au plus %s mots.",
|
||||
words: "Cette valeur est invalide. Elle doit contenir entre %s et %s mots.",
|
||||
gt: "Cette valeur doit être plus grande.",
|
||||
gte: "Cette valeur doit être plus grande ou égale.",
|
||||
lt: "Cette valeur doit être plus petite.",
|
||||
lte: "Cette valeur doit être plus petite ou égale.",
|
||||
notequalto: "Cette valeur doit être différente."
|
||||
});
|
29
public/js/parsley/i18n/fr.js
vendored
Normal file
29
public/js/parsley/i18n/fr.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('fr', {
|
||||
defaultMessage: "Cette valeur semble non valide.",
|
||||
type: {
|
||||
email: "Cette valeur n'est pas une adresse email valide.",
|
||||
url: "Cette valeur n'est pas une URL valide.",
|
||||
number: "Cette valeur doit être un nombre.",
|
||||
integer: "Cette valeur doit être un entier.",
|
||||
digits: "Cette valeur doit être numérique.",
|
||||
alphanum: "Cette valeur doit être alphanumérique."
|
||||
},
|
||||
notblank: "Cette valeur ne peut pas être vide.",
|
||||
required: "Ce champ est requis.",
|
||||
pattern: "Cette valeur semble non valide.",
|
||||
min: "Cette valeur ne doit pas être inférieure à %s.",
|
||||
max: "Cette valeur ne doit pas excéder %s.",
|
||||
range: "Cette valeur doit être comprise entre %s et %s.",
|
||||
minlength: "Cette chaîne est trop courte. Elle doit avoir au minimum %s caractères.",
|
||||
maxlength: "Cette chaîne est trop longue. Elle doit avoir au maximum %s caractères.",
|
||||
length: "Cette valeur doit contenir entre %s et %s caractères.",
|
||||
mincheck: "Vous devez sélectionner au moins %s choix.",
|
||||
maxcheck: "Vous devez sélectionner %s choix maximum.",
|
||||
check: "Vous devez sélectionner entre %s et %s choix.",
|
||||
equalto: "Cette valeur devrait être identique."
|
||||
});
|
||||
|
||||
Parsley.setLocale('fr');
|
6
public/js/parsley/i18n/he.extra.js
vendored
Normal file
6
public/js/parsley/i18n/he.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('he', {
|
||||
dateiso: "ערך זה צריך להיות תאריך בפורמט (YYYY-MM-DD)."
|
||||
});
|
29
public/js/parsley/i18n/he.js
vendored
Normal file
29
public/js/parsley/i18n/he.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('he', {
|
||||
defaultMessage: "נראה כי ערך זה אינו תקף.",
|
||||
type: {
|
||||
email: "ערך זה צריך להיות כתובת אימייל.",
|
||||
url: "ערך זה צריך להיות URL תקף.",
|
||||
number: "ערך זה צריך להיות מספר.",
|
||||
integer: "ערך זה צריך להיות מספר שלם.",
|
||||
digits: "ערך זה צריך להיות ספרתי.",
|
||||
alphanum: "ערך זה צריך להיות אלפאנומרי."
|
||||
},
|
||||
notblank: "ערך זה אינו יכול להשאר ריק.",
|
||||
required: "ערך זה דרוש.",
|
||||
pattern: "נראה כי ערך זה אינו תקף.",
|
||||
min: "ערך זה צריך להיות לכל הפחות %s.",
|
||||
max: "ערך זה צריך להיות לכל היותר %s.",
|
||||
range: "ערך זה צריך להיות בין %s ל-%s.",
|
||||
minlength: "ערך זה קצר מידי. הוא צריך להיות לכל הפחות %s תווים.",
|
||||
maxlength: "ערך זה ארוך מידי. הוא צריך להיות לכל היותר %s תווים.",
|
||||
length: "ערך זה אינו באורך תקף. האורך צריך להיות בין %s ל-%s תווים.",
|
||||
mincheck: "אנא בחר לפחות %s אפשרויות.",
|
||||
maxcheck: "אנא בחר לכל היותר %s אפשרויות.",
|
||||
check: "אנא בחר בין %s ל-%s אפשרויות.",
|
||||
equalto: "ערך זה צריך להיות זהה."
|
||||
});
|
||||
|
||||
Parsley.setLocale('he');
|
14
public/js/parsley/i18n/hr.extra.js
vendored
Normal file
14
public/js/parsley/i18n/hr.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('hr', {
|
||||
dateiso: "Ovo polje treba sadržavati ispravno unešen datum (GGGG-MM-DD).",
|
||||
minwords: "Unos je prekratak. Treba sadržavati %s ili više riječi.",
|
||||
maxwords: "Unos je predugačak. Treba sadržavati %s ili manje riječi.",
|
||||
words: "Neispravna duljina unosa. Treba sadržavati između %s i %s riječi.",
|
||||
gt: "Ova vrijednost treba biti veća.",
|
||||
gte: "Ova vrijednost treba biti veća ili jednaka.",
|
||||
lt: "Ova vrijednost treba biti manja.",
|
||||
lte: "Ova vrijednost treba biti manja ili jednaka.",
|
||||
notequalto: "Ova vrijednost treba biti drugačija."
|
||||
});
|
29
public/js/parsley/i18n/hr.js
vendored
Normal file
29
public/js/parsley/i18n/hr.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('hr', {
|
||||
defaultMessage: "Neispravan unos.",
|
||||
type: {
|
||||
email: "Ovo polje treba sadržavati ispravnu email adresu.",
|
||||
url: "Ovo polje treba sadržavati ispravni url.",
|
||||
number: "Ovo polje treba sadržavati ispravno upisan broj.",
|
||||
integer: "Ovo polje treba sadržavati ispravno upisan cijeli broj.",
|
||||
digits: "Ovo polje treba sadržavati znamenke.",
|
||||
alphanum: "Ovo polje treba sadržavati brojke ili slova."
|
||||
},
|
||||
notblank: "Ovo polje ne smije biti prazno.",
|
||||
required: "Ovo polje je obavezno.",
|
||||
pattern: "Neispravan unos.",
|
||||
min: "Vrijednost treba biti jednaka ili veća od %s.",
|
||||
max: "Vrijednost treba biti jednaka ili manja od %s.",
|
||||
range: "Vrijednost treba biti između %s i %s.",
|
||||
minlength: "Unos je prekratak. Treba sadržavati %s ili više znakova.",
|
||||
maxlength: "Unos je predugačak. Treba sadržavati %s ili manje znakova.",
|
||||
length: "Neispravna duljina unosa. Treba sadržavati između %s i %s znakova.",
|
||||
mincheck: "Treba odabrati najmanje %s izbora.",
|
||||
maxcheck: "Treba odabrati %s ili manje izbora.",
|
||||
check: "Treba odabrati između %s i %s izbora.",
|
||||
equalto: "Ova vrijednost treba biti ista."
|
||||
});
|
||||
|
||||
Parsley.setLocale('hr');
|
14
public/js/parsley/i18n/hu.extra.js
vendored
Normal file
14
public/js/parsley/i18n/hu.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('hu', {
|
||||
dateiso: "A mező értéke csak érvényes dátum lehet (YYYY-MM-DD).",
|
||||
minwords: "Minimum %s szó megadása szükséges.",
|
||||
maxwords: "Maximum %s szó megadása engedélyezett.",
|
||||
words: "Minimum %s, maximum %s szó megadása szükséges.",
|
||||
gt: "A mező értéke nagyobb kell legyen.",
|
||||
gte: "A mező értéke nagyobb vagy egyenlő kell legyen.",
|
||||
lt: "A mező értéke kevesebb kell legyen.",
|
||||
lte: "A mező értéke kevesebb vagy egyenlő kell legyen.",
|
||||
notequalto: "Az érték különböző kell legyen."
|
||||
});
|
30
public/js/parsley/i18n/hu.js
vendored
Normal file
30
public/js/parsley/i18n/hu.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
// This is included with the Parsley library itself,
|
||||
// thus there is no use in adding it to your project.
|
||||
|
||||
|
||||
Parsley.addMessages('hu', {
|
||||
defaultMessage: "Érvénytelen mező.",
|
||||
type: {
|
||||
email: "Érvénytelen email cím.",
|
||||
url: "Érvénytelen URL cím.",
|
||||
number: "Érvénytelen szám.",
|
||||
integer: "Érvénytelen egész szám.",
|
||||
digits: "Érvénytelen szám.",
|
||||
alphanum: "Érvénytelen alfanumerikus érték."
|
||||
},
|
||||
notblank: "Ez a mező nem maradhat üresen.",
|
||||
required: "A mező kitöltése kötelező.",
|
||||
pattern: "Érvénytelen érték.",
|
||||
min: "A mező értéke nagyobb vagy egyenlő kell legyen mint %s.",
|
||||
max: "A mező értéke kisebb vagy egyenlő kell legyen mint %s.",
|
||||
range: "A mező értéke %s és %s közé kell essen.",
|
||||
minlength: "Legalább %s karakter megadása szükséges.",
|
||||
maxlength: "Legfeljebb %s karakter megadása engedélyezett.",
|
||||
length: "Nem megfelelő karakterszám. Minimum %s, maximum %s karakter adható meg.",
|
||||
mincheck: "Legalább %s értéket kell kiválasztani.",
|
||||
maxcheck: "Maximum %s értéket lehet kiválasztani.",
|
||||
check: "Legalább %s, legfeljebb %s értéket kell kiválasztani.",
|
||||
equalto: "A mező értéke nem egyező."
|
||||
});
|
||||
|
||||
Parsley.setLocale('hu');
|
6
public/js/parsley/i18n/id.extra.js
vendored
Normal file
6
public/js/parsley/i18n/id.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('id', {
|
||||
dateiso: "Harus tanggal yang valid (YYYY-MM-DD)."
|
||||
});
|
29
public/js/parsley/i18n/id.js
vendored
Normal file
29
public/js/parsley/i18n/id.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('id', {
|
||||
defaultMessage: "tidak valid",
|
||||
type: {
|
||||
email: "email tidak valid",
|
||||
url: "url tidak valid",
|
||||
number: "nomor tidak valid",
|
||||
integer: "integer tidak valid",
|
||||
digits: "harus berupa digit",
|
||||
alphanum: "harus berupa alphanumeric"
|
||||
},
|
||||
notblank: "tidak boleh kosong",
|
||||
required: "tidak boleh kosong",
|
||||
pattern: "tidak valid",
|
||||
min: "harus lebih besar atau sama dengan %s.",
|
||||
max: "harus lebih kecil atau sama dengan %s.",
|
||||
range: "harus dalam rentang %s dan %s.",
|
||||
minlength: "terlalu pendek, minimal %s karakter atau lebih.",
|
||||
maxlength: "terlalu panjang, maksimal %s karakter atau kurang.",
|
||||
length: "panjang karakter harus dalam rentang %s dan %s",
|
||||
mincheck: "pilih minimal %s pilihan",
|
||||
maxcheck: "pilih maksimal %s pilihan",
|
||||
check: "pilih antar %s dan %s pilihan",
|
||||
equalto: "harus sama"
|
||||
});
|
||||
|
||||
Parsley.setLocale('id');
|
6
public/js/parsley/i18n/it.extra.js
vendored
Normal file
6
public/js/parsley/i18n/it.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('it', {
|
||||
dateiso: "Inserire una data valida (AAAA-MM-GG)."
|
||||
});
|
29
public/js/parsley/i18n/it.js
vendored
Normal file
29
public/js/parsley/i18n/it.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('it', {
|
||||
defaultMessage: "Questo valore sembra essere non valido.",
|
||||
type: {
|
||||
email: "Questo valore deve essere un indirizzo email valido.",
|
||||
url: "Questo valore deve essere un URL valido.",
|
||||
number: "Questo valore deve essere un numero valido.",
|
||||
integer: "Questo valore deve essere un numero valido.",
|
||||
digits: "Questo valore deve essere di tipo numerico.",
|
||||
alphanum: "Questo valore deve essere di tipo alfanumerico."
|
||||
},
|
||||
notblank: "Questo valore non deve essere vuoto.",
|
||||
required: "Questo valore è richiesto.",
|
||||
pattern: "Questo valore non è corretto.",
|
||||
min: "Questo valore deve essere maggiore di %s.",
|
||||
max: "Questo valore deve essere minore di %s.",
|
||||
range: "Questo valore deve essere compreso tra %s e %s.",
|
||||
minlength: "Questo valore è troppo corto. La lunghezza minima è di %s caratteri.",
|
||||
maxlength: "Questo valore è troppo lungo. La lunghezza massima è di %s caratteri.",
|
||||
length: "La lunghezza di questo valore deve essere compresa fra %s e %s caratteri.",
|
||||
mincheck: "Devi scegliere almeno %s opzioni.",
|
||||
maxcheck: "Devi scegliere al più %s opzioni.",
|
||||
check: "Devi scegliere tra %s e %s opzioni.",
|
||||
equalto: "Questo valore deve essere identico."
|
||||
});
|
||||
|
||||
Parsley.setLocale('it');
|
14
public/js/parsley/i18n/ja.extra.js
vendored
Normal file
14
public/js/parsley/i18n/ja.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ja', {
|
||||
dateiso: "有効な日付を入力してください。 (YYYY-MM-DD).",
|
||||
minwords: "語句が短すぎます。 %s 語以上で入力してください。",
|
||||
maxwords: "語句が長すぎます。 %s 語以内で入力してください。",
|
||||
words: "語句の長さが正しくありません。 %s 語から %s 語の間で入力してください。",
|
||||
gt: "より大きい値を入力してください。",
|
||||
gte: "より大きいか、同じ値を入力してください。",
|
||||
lt: "より小さい値を入力してください。",
|
||||
lte: "より小さいか、同じ値を入力してください。",
|
||||
notequalto: "異なる値を入力してください。"
|
||||
});
|
29
public/js/parsley/i18n/ja.js
vendored
Normal file
29
public/js/parsley/i18n/ja.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ja', {
|
||||
defaultMessage: "無効な値です。",
|
||||
type: {
|
||||
email: "有効なメールアドレスを入力してください。",
|
||||
url: "有効なURLを入力してください。",
|
||||
number: "数値を入力してください。",
|
||||
integer: "整数を入力してください。",
|
||||
digits: "数字を入力してください。",
|
||||
alphanum: "英数字を入力してください。"
|
||||
},
|
||||
notblank: "この値を入力してください",
|
||||
required: "この値は必須です。",
|
||||
pattern: "この値は無効です。",
|
||||
min: "%s 以上の値にしてください。",
|
||||
max: "%s 以下の値にしてください。",
|
||||
range: "%s から %s の値にしてください。",
|
||||
minlength: "%s 文字以上で入力してください。",
|
||||
maxlength: "%s 文字以下で入力してください。",
|
||||
length: "%s から %s 文字の間で入力してください。",
|
||||
mincheck: "%s 個以上選択してください。",
|
||||
maxcheck: "%s 個以下選択してください。",
|
||||
check: "%s から %s 個選択してください。",
|
||||
equalto: "値が違います。"
|
||||
});
|
||||
|
||||
Parsley.setLocale('ja');
|
29
public/js/parsley/i18n/ko.js
vendored
Normal file
29
public/js/parsley/i18n/ko.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ko', {
|
||||
defaultMessage: "입력하신 내용이 올바르지 않습니다.",
|
||||
type: {
|
||||
email: "입력하신 이메일이 유효하지 않습니다.",
|
||||
url: "입력하신 URL이 유효하지 않습니다.",
|
||||
number: "입력하신 전화번호가 올바르지 않습니다.",
|
||||
integer: "입력하신 정수가 유효하지 않습니다.",
|
||||
digits: "숫자를 입력하여 주십시오.",
|
||||
alphanum: "입력하신 내용은 알파벳과 숫자의 조합이어야 합니다."
|
||||
},
|
||||
notblank: "공백은 입력하실 수 없습니다.",
|
||||
required: "필수 입력사항입니다.",
|
||||
pattern: "입력하신 내용이 올바르지 않습니다.",
|
||||
min: "입력하신 내용이 %s보다 크거나 같아야 합니다. ",
|
||||
max: "입력하신 내용이 %s보다 작거나 같아야 합니다.",
|
||||
range: "입력하신 내용이 %s보다 크고 %s 보다 작아야 합니다.",
|
||||
minlength: "%s 이상의 글자수를 입력하십시오. ",
|
||||
maxlength: "%s 이하의 글자수를 입력하십시오. ",
|
||||
length: "입력하신 내용의 글자수가 %s보다 크고 %s보다 작아야 합니다.",
|
||||
mincheck: "최소한 %s개를 선택하여 주십시오. ",
|
||||
maxcheck: "%s개 또는 그보다 적게 선택하여 주십시오.",
|
||||
check: "선택하신 내용이 %s보다 크거나 %s보다 작아야 합니다.",
|
||||
equalto: "같은 값을 입력하여 주십시오."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ko');
|
14
public/js/parsley/i18n/lt.extra.js
vendored
Normal file
14
public/js/parsley/i18n/lt.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('lt', {
|
||||
dateiso: "Šis įrašas turi būti teisingo formato data (YYYY-MM-DD).",
|
||||
minwords: "Šis įrašas turi turėti ne mažiau kaip %s žodžių.",
|
||||
maxwords: "Šis įrašas turi turėti ne daugiau kaip %s žodžių.",
|
||||
words: "Šis įrašas turi turėti nuo %s iki %s žodžių.",
|
||||
gt: "Ši vertė turi būti didesnė.",
|
||||
gte: "Ši vertė turi būti didesnė arba lygi.",
|
||||
lt: "Ši vertė turi būti mažesnė.",
|
||||
lte: "Ši vertė turi būti mažesnė arba lygi.",
|
||||
notequalto: "Ši vertė turi būti skirtinga."
|
||||
});
|
29
public/js/parsley/i18n/lt.js
vendored
Normal file
29
public/js/parsley/i18n/lt.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('lt', {
|
||||
defaultMessage: "Šis įrašas neteisingas.",
|
||||
type: {
|
||||
email: "Šis įrašas nėra teisingas el. paštas.",
|
||||
url: "Šis įrašas nėra teisingas url.",
|
||||
number: "Šis įrašas nėra skaičius.",
|
||||
integer: "Šis įrašas nėra sveikasis skaičius.",
|
||||
digits: "Šis įrašas turi būti skaičius.",
|
||||
alphanum: "Šis įrašas turi būti iš skaičių ir raidžių."
|
||||
},
|
||||
notblank: "Šis įrašas negali būti tuščias.",
|
||||
required: "Šis įrašas yra privalomas",
|
||||
pattern: "Šis įrašas neteisingas.",
|
||||
min: "Ši vertė turi būti didesnė arba lygi %s.",
|
||||
max: "Ši vertė turi būti mažesnė arba lygi %s.",
|
||||
range: "Ši vertė turi būti tarp %s ir %s.",
|
||||
minlength: "Šis įrašas per trumpas. Jis turi turėti %s simbolius arba daugiau.",
|
||||
maxlength: "Šis įrašas per ilgas. Jis turi turėti %s simbolius arba mažiau.",
|
||||
length: "Šio įrašo ilgis neteisingas. Jis turėtų būti tarp %s ir %s simbolių.",
|
||||
mincheck: "Jūs turite pasirinkti bent %s pasirinkimus.",
|
||||
maxcheck: "Jūs turite pasirinkti ne daugiau %s pasirinkimų.",
|
||||
check: "Jūs turite pasirinkti tarp %s ir %s pasirinkimų.",
|
||||
equalto: "Ši reikšmė turėtų būti vienoda."
|
||||
});
|
||||
|
||||
Parsley.setLocale('lt');
|
14
public/js/parsley/i18n/lv.extra.js
vendored
Normal file
14
public/js/parsley/i18n/lv.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('lv', {
|
||||
dateiso: "Šai vērtībai jābūt korekti noformētam datumam (YYYY-MM-DD).",
|
||||
minwords: "Šī vērtība ir par īsu. Tai jābūt vismaz %s vārdus garai.",
|
||||
maxwords: "Šī vērtība ir par garu. Tai jābūt %s vārdus garai vai īsākai.",
|
||||
words: "Šīs vērtības garums ir nederīgs. Tai jābūt no %s līdz %s vārdus garai.",
|
||||
gt: "Šai vērtībai jābūt lielākai.",
|
||||
gte: "Šai vērtībai jābūt lielākai vai vienādai.",
|
||||
lt: "Šai vērtībai jābūt mazākai.",
|
||||
lte: "Šai vērtībai jābūt mazākai vai vienādai.",
|
||||
notequalto: "Šai vērtībai jābūt atšķirīgai."
|
||||
});
|
29
public/js/parsley/i18n/lv.js
vendored
Normal file
29
public/js/parsley/i18n/lv.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('lv', {
|
||||
defaultMessage: "Šis ieraksts veikts nekorekti.",
|
||||
type: {
|
||||
email: "Šeit jāieraksta derīgs e-pasts.",
|
||||
url: "Šeit jāieraksta korekts url.",
|
||||
number: "Šeit jāieraksta derīgs skaitlis.",
|
||||
integer: "Šeit jāieraksta vesels skaitlis.",
|
||||
digits: "Šeit jāieraksta cipari.",
|
||||
alphanum: "Šeit derīgi tikai alfabēta burti vai cipari."
|
||||
},
|
||||
notblank: "Šis ieraksts nedrīkst būt tukšs.",
|
||||
required: "Šis ieraksts ir obligāti jāaizpilda.",
|
||||
pattern: "Šis ieraksts aizpildīts nekorekti.",
|
||||
min: "Šai vērtībai jābūt lielākai vai vienādai ar %s.",
|
||||
max: "Šai vērtībai jābūt mazākai vai vienādai ar %s.",
|
||||
range: "Šai vērtībai jābūt starp %s un %s.",
|
||||
minlength: "Vērtībai jābūt vismaz %s simbolu garai.",
|
||||
maxlength: "Vērtībai jābūt %s simbolus garai vai īsākai.",
|
||||
length: "Šīs vērtības garums ir neatbilstošs. Tai jābūt %s līdz %s simbolus garai.",
|
||||
mincheck: "Jāizvēlas vismaz %s varianti.",
|
||||
maxcheck: "Jāizvēlas %s varianti vai mazāk.",
|
||||
check: "Jāizvēlas no %s līdz %s variantiem.",
|
||||
equalto: "Šai vērtībai jāsakrīt."
|
||||
});
|
||||
|
||||
Parsley.setLocale('lv');
|
13
public/js/parsley/i18n/ms.extra.js
vendored
Normal file
13
public/js/parsley/i18n/ms.extra.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ms', {
|
||||
dateiso: "Nilai hendaklah berbentuk tarikh yang sah (YYYY-MM-DD).",
|
||||
minwords: "Ayat terlalu pendek. Ianya perlu sekurang-kurangnya %s patah perkataan.",
|
||||
maxwords: "Ayat terlalu panjang. Ianya tidak boleh melebihi %s patah perkataan.",
|
||||
words: "Panjang ayat tidak sah. Jumlah perkataan adalah diantara %s hingga %s patah perkataan.",
|
||||
gt: "Nilai lebih besar diperlukan.",
|
||||
gte: "Nilai hendaklah lebih besar atau sama.",
|
||||
lt: "Nilai lebih kecil diperlukan.",
|
||||
lte: "Nilai hendaklah lebih kecil atau sama."
|
||||
});
|
29
public/js/parsley/i18n/ms.js
vendored
Normal file
29
public/js/parsley/i18n/ms.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ms', {
|
||||
defaultMessage: "Nilai tidak sah.",
|
||||
type: {
|
||||
email: "Nilai mestilah dalam format emel yang sah.",
|
||||
url: "Nilai mestilah dalam bentuk url yang sah.",
|
||||
number: "Hanya nombor dibenarkan.",
|
||||
integer: "Hanya integer dibenarkan.",
|
||||
digits: "Hanya angka dibenarkan.",
|
||||
alphanum: "Hanya alfanumerik dibenarkan."
|
||||
},
|
||||
notblank: "Nilai ini tidak boleh kosong.",
|
||||
required: "Nilai ini wajib diisi.",
|
||||
pattern: "Bentuk nilai ini tidak sah.",
|
||||
min: "Nilai perlu lebih besar atau sama dengan %s.",
|
||||
max: "Nilai perlu lebih kecil atau sama dengan %s.",
|
||||
range: "Nilai perlu berada antara %s hingga %s.",
|
||||
minlength: "Nilai terlalu pendek. Ianya perlu sekurang-kurangnya %s huruf.",
|
||||
maxlength: "Nilai terlalu panjang. Ianya tidak boleh melebihi %s huruf.",
|
||||
length: "Panjang nilai tidak sah. Panjangnya perlu diantara %s hingga %s huruf.",
|
||||
mincheck: "Anda mesti memilih sekurang-kurangnya %s pilihan.",
|
||||
maxcheck: "Anda tidak boleh memilih lebih daripada %s pilihan.",
|
||||
check: "Anda mesti memilih diantara %s hingga %s pilihan.",
|
||||
equalto: "Nilai dimasukkan hendaklah sama."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ms');
|
11
public/js/parsley/i18n/nl.extra.js
vendored
Normal file
11
public/js/parsley/i18n/nl.extra.js
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('nl', {
|
||||
dateiso: "Deze waarde moet een datum in het volgende formaat zijn: (YYYY-MM-DD).",
|
||||
minwords: "Deze waarde moet minstens %s woorden bevatten.",
|
||||
maxwords: "Deze waarde mag maximaal %s woorden bevatten.",
|
||||
words: "Deze waarde moet tussen de %s en %s woorden bevatten.",
|
||||
gt: "Deze waarde moet groter dan %s zijn.",
|
||||
lt: "Deze waarde moet kleiner dan %s zijn."
|
||||
});
|
26
public/js/parsley/i18n/nl.js
vendored
Normal file
26
public/js/parsley/i18n/nl.js
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('nl', {
|
||||
defaultMessage: "Deze waarde lijkt onjuist.",
|
||||
type: {
|
||||
email: "Dit lijkt geen geldig e-mail adres te zijn.",
|
||||
url: "Dit lijkt geen geldige URL te zijn.",
|
||||
number: "Deze waarde moet een nummer zijn.",
|
||||
integer: "Deze waarde moet een nummer zijn.",
|
||||
digits: "Deze waarde moet numeriek zijn.",
|
||||
alphanum: "Deze waarde moet alfanumeriek zijn."
|
||||
},
|
||||
notblank: "Deze waarde mag niet leeg zijn.",
|
||||
required: "Dit veld is verplicht.",
|
||||
pattern: "Deze waarde lijkt onjuist te zijn.",
|
||||
min: "Deze waarde mag niet lager zijn dan %s.",
|
||||
max: "Deze waarde mag niet groter zijn dan %s.",
|
||||
range: "Deze waarde moet tussen %s en %s liggen.",
|
||||
minlength: "Deze tekst is te kort. Deze moet uit minimaal %s karakters bestaan.",
|
||||
maxlength: "Deze waarde is te lang. Deze mag maximaal %s karakters lang zijn.",
|
||||
length: "Deze waarde moet tussen %s en %s karakters lang zijn.",
|
||||
equalto: "Deze waardes moeten identiek zijn."
|
||||
});
|
||||
|
||||
Parsley.setLocale('nl');
|
29
public/js/parsley/i18n/no.js
vendored
Normal file
29
public/js/parsley/i18n/no.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('no', {
|
||||
defaultMessage: "Verdien er ugyldig.",
|
||||
type: {
|
||||
email: "Verdien må være en gyldig e-postadresse.",
|
||||
url: "Verdien må være en gyldig url.",
|
||||
number: "Verdien må være et gyldig tall.",
|
||||
integer: "Verdien må være et gyldig heltall.",
|
||||
digits: "Verdien må være et siffer.",
|
||||
alphanum: "Verdien må være alfanumerisk"
|
||||
},
|
||||
notblank: "Verdien kan ikke være blank.",
|
||||
required: "Verdien er obligatorisk.",
|
||||
pattern: "Verdien er ugyldig.",
|
||||
min: "Verdien må være større eller lik %s.",
|
||||
max: "Verdien må være mindre eller lik %s.",
|
||||
range: "Verdien må være mellom %s and %s.",
|
||||
minlength: "Verdien er for kort. Den må bestå av minst %s tegn.",
|
||||
maxlength: "Verdien er for lang. Den kan bestå av maksimalt %s tegn.",
|
||||
length: "Verdien har ugyldig lengde. Den må være mellom %s og %s tegn lang.",
|
||||
mincheck: "Du må velge minst %s alternativer.",
|
||||
maxcheck: "Du må velge %s eller færre alternativer.",
|
||||
check: "Du må velge mellom %s og %s alternativer.",
|
||||
equalto: "Verdien må være lik."
|
||||
});
|
||||
|
||||
Parsley.setLocale('no');
|
29
public/js/parsley/i18n/pl.js
vendored
Normal file
29
public/js/parsley/i18n/pl.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('pl', {
|
||||
defaultMessage: "Wartość wygląda na nieprawidłową",
|
||||
type: {
|
||||
email: "Wpisz poprawny adres e-mail.",
|
||||
url: "Wpisz poprawny adres URL.",
|
||||
number: "Wpisz poprawną liczbę.",
|
||||
integer: "Dozwolone są jedynie liczby całkowite.",
|
||||
digits: "Dozwolone są jedynie cyfry.",
|
||||
alphanum: "Dozwolone są jedynie znaki alfanumeryczne."
|
||||
},
|
||||
notblank: "Pole nie może być puste.",
|
||||
required: "Pole jest wymagane.",
|
||||
pattern: "Pole zawiera nieprawidłową wartość.",
|
||||
min: "Wartość nie może być mniejsza od %s.",
|
||||
max: "Wartość nie może być większa od %s.",
|
||||
range: "Wartość powinna zaweriać się pomiędzy %s a %s.",
|
||||
minlength: "Minimalna ilość znaków wynosi %s.",
|
||||
maxlength: "Maksymalna ilość znaków wynosi %s.",
|
||||
length: "Ilość znaków wynosi od %s do %s.",
|
||||
mincheck: "Wybierz minimalnie %s opcji.",
|
||||
maxcheck: "Wybierz maksymalnie %s opcji.",
|
||||
check: "Wybierz od %s do %s opcji.",
|
||||
equalto: "Wartości nie są identyczne."
|
||||
});
|
||||
|
||||
Parsley.setLocale('pl');
|
29
public/js/parsley/i18n/pt-br.js
vendored
Normal file
29
public/js/parsley/i18n/pt-br.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('pt-br', {
|
||||
defaultMessage: "Este valor parece ser inválido.",
|
||||
type: {
|
||||
email: "Este campo deve ser um email válido.",
|
||||
url: "Este campo deve ser um URL válida.",
|
||||
number: "Este campo deve ser um número válido.",
|
||||
integer: "Este campo deve ser um inteiro válido.",
|
||||
digits: "Este campo deve conter apenas dígitos.",
|
||||
alphanum: "Este campo deve ser alfa numérico."
|
||||
},
|
||||
notblank: "Este campo não pode ficar vazio.",
|
||||
required: "Este campo é obrigatório.",
|
||||
pattern: "Este campo parece estar inválido.",
|
||||
min: "Este campo deve ser maior ou igual a %s.",
|
||||
max: "Este campo deve ser menor ou igual a %s.",
|
||||
range: "Este campo deve estar entre %s e %s.",
|
||||
minlength: "Este campo é pequeno demais. Ele deveria ter %s caracteres ou mais.",
|
||||
maxlength: "Este campo é grande demais. Ele deveria ter %s caracteres ou menos.",
|
||||
length: "O tamanho deste campo é inválido. Ele deveria ter entre %s e %s caracteres.",
|
||||
mincheck: "Você deve escolher pelo menos %s opções.",
|
||||
maxcheck: "Você deve escolher %s opções ou mais",
|
||||
check: "Você deve escolher entre %s e %s opções.",
|
||||
equalto: "Este valor deveria ser igual."
|
||||
});
|
||||
|
||||
Parsley.setLocale('pt-br');
|
29
public/js/parsley/i18n/pt-pt.js
vendored
Normal file
29
public/js/parsley/i18n/pt-pt.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('pt-pt', {
|
||||
defaultMessage: "Este valor parece ser inválido.",
|
||||
type: {
|
||||
email: "Este campo deve ser um email válido.",
|
||||
url: "Este campo deve ser um URL válido.",
|
||||
number: "Este campo deve ser um número válido.",
|
||||
integer: "Este campo deve ser um número inteiro válido.",
|
||||
digits: "Este campo deve conter apenas dígitos.",
|
||||
alphanum: "Este campo deve ser alfanumérico."
|
||||
},
|
||||
notblank: "Este campo não pode ficar vazio.",
|
||||
required: "Este campo é obrigatório.",
|
||||
pattern: "Este campo parece estar inválido.",
|
||||
min: "Este valor deve ser maior ou igual a %s.",
|
||||
max: "Este valor deve ser menor ou igual a %s.",
|
||||
range: "Este valor deve estar entre %s e %s.",
|
||||
minlength: "Este campo é pequeno demais. Deve ter %s caracteres ou mais.",
|
||||
maxlength: "Este campo é grande demais. Deve ter %s caracteres ou menos.",
|
||||
length: "O tamanho deste campo é inválido. Ele deveria ter entre %s e %s caracteres.",
|
||||
mincheck: "Escolha pelo menos %s opções.",
|
||||
maxcheck: "Escolha %s opções ou mais",
|
||||
check: "Escolha entre %s e %s opções.",
|
||||
equalto: "Este valor deveria ser igual."
|
||||
});
|
||||
|
||||
Parsley.setLocale('pt-pt');
|
14
public/js/parsley/i18n/ro.extra.js
vendored
Normal file
14
public/js/parsley/i18n/ro.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ro', {
|
||||
dateiso: "Trebuie să fie o dată corectă (YYYY-MM-DD).",
|
||||
minwords: "Textul e prea scurt. Trebuie să aibă cel puțin %s cuvinte.",
|
||||
maxwords: "Textul e prea lung. Trebuie să aibă cel mult %s cuvinte.",
|
||||
words: "Textul trebuie să aibă cel puțin %s și cel mult %s caractere.",
|
||||
gt: "Valoarea ar trebui să fie mai mare.",
|
||||
gte: "Valoarea ar trebui să fie mai mare sau egală.",
|
||||
lt: "Valoarea ar trebui să fie mai mică.",
|
||||
lte: "Valoarea ar trebui să fie mai mică sau egală.",
|
||||
notequalto: "Valoarea ar trebui să fie diferită."
|
||||
});
|
29
public/js/parsley/i18n/ro.js
vendored
Normal file
29
public/js/parsley/i18n/ro.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ro', {
|
||||
defaultMessage: "Acest câmp nu este completat corect.",
|
||||
type: {
|
||||
email: "Trebuie să scrii un email valid.",
|
||||
url: "Trebuie să scrii un link valid",
|
||||
number: "Trebuie să scrii un număr valid",
|
||||
integer: "Trebuie să scrii un număr întreg valid",
|
||||
digits: "Trebuie să conțină doar cifre.",
|
||||
alphanum: "Trebuie să conțină doar cifre sau litere."
|
||||
},
|
||||
notblank: "Acest câmp nu poate fi lăsat gol.",
|
||||
required: "Acest câmp trebuie să fie completat.",
|
||||
pattern: "Acest câmp nu este completat corect.",
|
||||
min: "Trebuie să fie ceva mai mare sau egal cu %s.",
|
||||
max: "Trebuie să fie ceva mai mic sau egal cu %s.",
|
||||
range: "Valoarea trebuie să fie între %s și %s.",
|
||||
minlength: "Trebuie să scrii cel puțin %s caractere.",
|
||||
maxlength: "Trebuie să scrii cel mult %s caractere.",
|
||||
length: "Trebuie să scrii cel puțin %s și %s cel mult %s caractere.",
|
||||
mincheck: "Trebuie să alegi cel puțin %s opțiuni.",
|
||||
maxcheck: "Poți alege maxim %s opțiuni.",
|
||||
check: "Trebuie să alegi între %s sau %s.",
|
||||
equalto: "Trebuie să fie la fel."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ro');
|
14
public/js/parsley/i18n/ru.extra.js
vendored
Normal file
14
public/js/parsley/i18n/ru.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ru', {
|
||||
dateiso: "Это значение должно быть корректной датой (ГГГГ-ММ-ДД).",
|
||||
minwords: "Это значение должно содержать не менее %s слов.",
|
||||
maxwords: "Это значение должно содержать не более %s слов.",
|
||||
words: "Это значение должно содержать от %s до %s слов.",
|
||||
gt: "Это значение должно быть больше.",
|
||||
gte: "Это значение должно быть больше или равно.",
|
||||
lt: "Это значение должно быть меньше.",
|
||||
lte: "Это значение должно быть меньше или равно.",
|
||||
notequalto: "Это значение должно отличаться."
|
||||
});
|
29
public/js/parsley/i18n/ru.js
vendored
Normal file
29
public/js/parsley/i18n/ru.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ru', {
|
||||
defaultMessage: "Некорректное значение.",
|
||||
type: {
|
||||
email: "Введите адрес электронной почты.",
|
||||
url: "Введите URL адрес.",
|
||||
number: "Введите число.",
|
||||
integer: "Введите целое число.",
|
||||
digits: "Введите только цифры.",
|
||||
alphanum: "Введите буквенно-цифровое значение."
|
||||
},
|
||||
notblank: "Это поле должно быть заполнено.",
|
||||
required: "Обязательное поле.",
|
||||
pattern: "Это значение некорректно.",
|
||||
min: "Это значение должно быть не менее чем %s.",
|
||||
max: "Это значение должно быть не более чем %s.",
|
||||
range: "Это значение должно быть от %s до %s.",
|
||||
minlength: "Это значение должно содержать не менее %s символов.",
|
||||
maxlength: "Это значение должно содержать не более %s символов.",
|
||||
length: "Это значение должно содержать от %s до %s символов.",
|
||||
mincheck: "Выберите не менее %s значений.",
|
||||
maxcheck: "Выберите не более %s значений.",
|
||||
check: "Выберите от %s до %s значений.",
|
||||
equalto: "Это значение должно совпадать."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ru');
|
13
public/js/parsley/i18n/sk.extra.js
vendored
Normal file
13
public/js/parsley/i18n/sk.extra.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sk', {
|
||||
dateiso: "Prosím zadajte dátum vo formáte RRRR-MM-DD.",
|
||||
minwords: "Prosím zadajte hodnotu dlhú %s slov a viacej.",
|
||||
maxwords: "Prosím zadajte hodnotu kratšiu ako %s slov.",
|
||||
words: "Prosím zadajte hodnotu medzi %s a %s slov.",
|
||||
gt: "Táto hodnota musí byť väčšia.",
|
||||
gte: "Táto hodnota musí byť väčšia alebo rovná.",
|
||||
lt: "Táto hodnota musí byť menšia.",
|
||||
lte: "Táto hodnota musí byť menšia alebo rovná."
|
||||
});
|
29
public/js/parsley/i18n/sk.js
vendored
Normal file
29
public/js/parsley/i18n/sk.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sk', {
|
||||
defaultMessage: "Prosím zadajte správnu hodnotu.",
|
||||
type: {
|
||||
email: "Prosím zadajte správnu emailovú adresu.",
|
||||
url: "Prosím zadajte platnú URL adresu.",
|
||||
number: "Toto pole môže obsahovať len čísla",
|
||||
integer: "Toto pole môže obsahovať len celé čísla",
|
||||
digits: "Toto pole môže obsahovať len kladné celé čísla.",
|
||||
alphanum: "Toto pole môže obsahovať len alfanumerické znaky."
|
||||
},
|
||||
notblank: "Toto pole nesmie byť prázdne.",
|
||||
required: "Toto pole je povinné.",
|
||||
pattern: "Toto pole je je neplatné.",
|
||||
min: "Prosím zadajte hodnotu väčšiu alebo rovnú %s.",
|
||||
max: "Prosím zadajte hodnotu menšiu alebo rovnú %s.",
|
||||
range: "Prosím zadajte hodnotu v rozmedzí %s a %s",
|
||||
minlength: "Prosím zadajte hodnotu dlhú %s znakov a viacej.",
|
||||
maxlength: "Prosím zadajte hodnotu kratšiu ako %s znakov.",
|
||||
length: "Prosím zadajte hodnotu medzi %s a %s znakov.",
|
||||
mincheck: "Je nutné vybrať minimálne %s z možností.",
|
||||
maxcheck: "Je nutné vybrať maximálne %s z možností.",
|
||||
check: "Je nutné vybrať od %s do %s z možností.",
|
||||
equalto: "Prosím zadajte rovnakú hodnotu."
|
||||
});
|
||||
|
||||
Parsley.setLocale('sk');
|
14
public/js/parsley/i18n/sl.extra.js
vendored
Normal file
14
public/js/parsley/i18n/sl.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sl', {
|
||||
dateiso: "Vnesite datum v ISO obliki (YYYY-MM-DD).",
|
||||
minwords: "Vpis je prekratek. Vpisati morate najmnaj %s besed.",
|
||||
maxwords: "Vpis je predolg. Vpišete lahko največ %s besed.",
|
||||
words: "Dolžina vpisa je napačna. Dolžina je lahko samo med %s in %s besed.",
|
||||
gt: "Vpisani podatek mora biti večji.",
|
||||
gte: "Vpisani podatek mora biti enak ali večji.",
|
||||
lt: "Vpisani podatek mora biti manjši.",
|
||||
lte: "Vpisani podatek mora biti enak ali manjši.",
|
||||
notequalto: "Vpisana vrednost mora biti drugačna."
|
||||
});
|
30
public/js/parsley/i18n/sl.js
vendored
Normal file
30
public/js/parsley/i18n/sl.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
// This is included with the Parsley library itself,
|
||||
// thus there is no use in adding it to your project.
|
||||
|
||||
|
||||
Parsley.addMessages('sl', {
|
||||
defaultMessage: "Podatek ne ustreza vpisnim kriterijem.",
|
||||
type: {
|
||||
email: "Vpišite pravilen email.",
|
||||
url: "Vpišite pravilen url naslov.",
|
||||
number: "Vpišite številko.",
|
||||
integer: "Vpišite celo število brez decimalnih mest.",
|
||||
digits: "Vpišite samo cifre.",
|
||||
alphanum: "Vpišite samo alfanumerične znake (cifre in črke)."
|
||||
},
|
||||
notblank: "To polje ne sme biti prazno.",
|
||||
required: "To polje je obvezno.",
|
||||
pattern: "Podatek ne ustreza vpisnim kriterijem.",
|
||||
min: "Vrednost mora biti višja ali enaka kot %s.",
|
||||
max: "Vrednost mora biti nižja ali enaka kot %s.",
|
||||
range: "Vrednost mora biti med %s in %s.",
|
||||
minlength: "Vpis je prekratek. Mora imeti najmanj %s znakov.",
|
||||
maxlength: "Vpis je predolg. Lahko ima največ %s znakov.",
|
||||
length: "Število vpisanih znakov je napačno. Število znakov je lahko samo med %s in %s.",
|
||||
mincheck: "Izbrati morate vsaj %s možnosti.",
|
||||
maxcheck: "Izberete lahko največ %s možnosti.",
|
||||
check: "Število izbranih možnosti je lahko samo med %s in %s.",
|
||||
equalto: "Vnos mora biti enak."
|
||||
});
|
||||
|
||||
Parsley.setLocale('sl');
|
29
public/js/parsley/i18n/sq.js
vendored
Normal file
29
public/js/parsley/i18n/sq.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sq', {
|
||||
defaultMessage: "Kjo vlere eshte e pasakte.",
|
||||
type: {
|
||||
email: "Duhet te jete nje email i vlefshem.",
|
||||
url: "Duhet te jete nje URL e vlefshme.",
|
||||
number: "Duhet te jete numer.",
|
||||
integer: "Kjo vlere duhet te jete integer.",
|
||||
digits: "Kjo vlere duhet te permbaje digit.",
|
||||
alphanum: "Kjo vlere duhet te permbaje vetel alphanumeric."
|
||||
},
|
||||
notblank: "Nuk mund te lihet bosh.",
|
||||
required: "Eshte e detyrueshme.",
|
||||
pattern: "Kjo vlere eshte e pasakte.",
|
||||
min: "Duhet te jete me e madhe ose baraz me %s.",
|
||||
max: "Duhet te jete me e vogel ose baraz me %s.",
|
||||
range: "Duhet te jete midis %s dhe %s.",
|
||||
minlength: "Kjo vlere eshte shume e shkurter. Ajo duhet te permbaje min %s karaktere.",
|
||||
maxlength: "Kjo vlere eshte shume e gjate. Ajo duhet te permbaje max %s karaktere.",
|
||||
length: "Gjatesia e kesaj vlere eshte e pasakte. Ajo duhet te jete midis %s dhe %s karakteresh.",
|
||||
mincheck: "Ju duhet te zgjidhni te pakten %s vlere.",
|
||||
maxcheck: "Ju duhet te zgjidhni max %s vlera.",
|
||||
check: "Ju mund te zgjidhni midis %s dhe %s vlerash.",
|
||||
equalto: "Kjo vlere duhet te jete e njejte."
|
||||
});
|
||||
|
||||
Parsley.setLocale('sq');
|
14
public/js/parsley/i18n/sr.extra.js
vendored
Normal file
14
public/js/parsley/i18n/sr.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Extra validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sr', {
|
||||
dateiso: "Unesite validan datum u formatu YYYY-MM-DD.",
|
||||
minwords: "Potrebno je da unesete %s ili više reči.",
|
||||
maxwords: "Moguće je uneti maksimalno %s reči.",
|
||||
words: "Potrebno je da unesete između %s i %s reči.",
|
||||
gt: "Ova vrednost mora da bude veća.",
|
||||
gte: "Ova vrednost mora da bude veća ili jednaka.",
|
||||
lt: "Ova vrednost mora da bude manja.",
|
||||
lte: "Ova vrednost mora da bude manja ili jednaka.",
|
||||
notequalto: "Sadržaj ovog polja mora biti različit."
|
||||
});
|
29
public/js/parsley/i18n/sr.js
vendored
Normal file
29
public/js/parsley/i18n/sr.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sr', {
|
||||
defaultMessage: "Uneta vrednost nije validna.",
|
||||
type: {
|
||||
email: "Unesite pravilnu email adresu.",
|
||||
url: "Unesite pravilnu url adresu.",
|
||||
number: "Unesite numeričku vrednost.",
|
||||
integer: "Unesite ceo broj bez decimala.",
|
||||
digits: "Unesite samo brojeve.",
|
||||
alphanum: "Unesite samo alfanumeričke znake (slova i brojeve)."
|
||||
},
|
||||
notblank: "Ovo polje ne sme biti prazno.",
|
||||
required: "Ovo polje je obavezno.",
|
||||
pattern: "Uneta vrednost nije validna.",
|
||||
min: "Vrednost mora biti veća ili jednaka %s.",
|
||||
max: "Vrednost mora biti manja ili jednaka %s.",
|
||||
range: "Vrednost mora biti između %s i %s.",
|
||||
minlength: "Unos je prekratak. Mora imati najmanje %s znakova.",
|
||||
maxlength: "Unos je predug. Može imati najviše %s znakova.",
|
||||
length: "Dužina unosa je pogrešna. Broj znakova mora biti između %s i %s.",
|
||||
mincheck: "Morate izabrati minimalno %s opcija.",
|
||||
maxcheck: "Možete izabrati najviše %s opcija.",
|
||||
check: "Broj izabranih opcija mora biti između %s i %s.",
|
||||
equalto: "Unos mora biti jednak."
|
||||
});
|
||||
|
||||
Parsley.setLocale('sr');
|
6
public/js/parsley/i18n/sv.extra.js
vendored
Normal file
6
public/js/parsley/i18n/sv.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sv', {
|
||||
dateiso: "Ange ett giltigt datum (ÅÅÅÅ-MM-DD)."
|
||||
});
|
29
public/js/parsley/i18n/sv.js
vendored
Normal file
29
public/js/parsley/i18n/sv.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('sv', {
|
||||
defaultMessage: "Ogiltigt värde.",
|
||||
type: {
|
||||
email: "Ange en giltig e-postadress.",
|
||||
url: "Ange en giltig URL.",
|
||||
number: "Ange ett giltigt nummer.",
|
||||
integer: "Ange ett heltal.",
|
||||
digits: "Ange endast siffror.",
|
||||
alphanum: "Ange endast bokstäver och siffror."
|
||||
},
|
||||
notblank: "Värdet får inte vara tomt.",
|
||||
required: "Måste fyllas i.",
|
||||
pattern: "Värdet är ej giltigt.",
|
||||
min: "Värdet måste vara större än eller lika med %s.",
|
||||
max: "Värdet måste vara mindre än eller lika med %s.",
|
||||
range: "Värdet måste vara mellan %s och %s.",
|
||||
minlength: "Värdet måste vara minst %s tecken.",
|
||||
maxlength: "Värdet får maximalt innehålla %s tecken.",
|
||||
length: "Värdet måste vara mellan %s och %s tecken.",
|
||||
mincheck: "Minst %s val måste göras.",
|
||||
maxcheck: "Maximalt %s val får göras.",
|
||||
check: "Mellan %s och %s val måste göras.",
|
||||
equalto: "Värdena måste vara lika."
|
||||
});
|
||||
|
||||
Parsley.setLocale('sv');
|
29
public/js/parsley/i18n/th.js
vendored
Normal file
29
public/js/parsley/i18n/th.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('th', {
|
||||
defaultMessage: "ค่านี้ดูเหมือนว่าจะไม่ถูกต้อง",
|
||||
type: {
|
||||
email: "ค่านี้ควรจะเป็นอีเมลที่ถูกต้อง",
|
||||
url: "ค่านี้ควรจะเป็น url ที่ถูกต้อง",
|
||||
number: "ค่านี้ควรจะเป็นตัวเลขที่ถูกต้อง",
|
||||
integer: "ค่านี้ควรจะเป็นจำนวนเต็มที่ถูกต้อง",
|
||||
digits: "ค่านี้ควรเป็นทศนิยมที่ถูกต้อง",
|
||||
alphanum: "ค่านี้ควรเป็นอักขระตัวอักษรหรือตัวเลขที่ถูกต้อง"
|
||||
},
|
||||
notblank: "ค่านี้ไม่ควรจะว่าง",
|
||||
required: "ค่านี้จำเป็น",
|
||||
pattern: "ค่านี้ดูเหมือนว่าจะไม่ถูกต้อง",
|
||||
min: "ค่านี้ควรมากกว่าหรือเท่ากับ %s.",
|
||||
max: "ค่านี้ควรจะน้อยกว่าหรือเท่ากับ %s.",
|
||||
range: "ค่ายี้ควรจะอยู่ระหว่าง %s และ %s.",
|
||||
minlength: "ค่านี้สั้นเกินไป ควรจะมี %s อักขระหรือมากกว่า",
|
||||
maxlength: "ค่านี้ยาวเกินไป ควรจะมี %s อักขระหรือน้อยกว่า",
|
||||
length: "ความยาวของค่านี้ไม่ถูกต้อง ควรมีความยาวอยู่ระหว่าง %s และ %s อักขระ",
|
||||
mincheck: "คุณควรเลือกอย่างน้อย %s ตัวเลือก",
|
||||
maxcheck: "คุณควรเลือก %s ตัวเลือกหรือน้อยกว่า",
|
||||
check: "คุณควรเลือกระหว่าง %s และ %s ตัวเลือก",
|
||||
equalto: "ค่านี้ควรจะเหมือนกัน"
|
||||
});
|
||||
|
||||
Parsley.setLocale('th');
|
29
public/js/parsley/i18n/tk.js
vendored
Normal file
29
public/js/parsley/i18n/tk.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('tk', {
|
||||
defaultMessage: "Bu maglumat nädogry.",
|
||||
type: {
|
||||
email: "Dogry e-poçta adresi ýazmaly.",
|
||||
url: "Dogry web sahypa salgysy ýazmaly.",
|
||||
number: "Dogry san ýazmaly.",
|
||||
integer: "Dogry bitin san ýazmaly.",
|
||||
digits: "San ýazmaly.",
|
||||
alphanum: "San ýa-da harp ýazmaly."
|
||||
},
|
||||
notblank: "Bu ýeri boş goýmaly däl.",
|
||||
required: "Bu ýeri doldurmak hökmany.",
|
||||
pattern: "Bu maglumat nädogry.",
|
||||
min: "Iň azyndan %s ýa-da ondan uly bolmaly.",
|
||||
max: "Iň köp %s ýa-da ondan kiçi bolmaly.",
|
||||
range: "Bu ýer %s we %s aralygynda san bolmaly.",
|
||||
minlength: "Bu ýeriň uzynlygy iň azyndan %s harp ýa-da ondan köp bolmaly.",
|
||||
maxlength: "Bu ýeriň uzynlygy iň köp %s harp ýa-da ondan az bolmaly.",
|
||||
length: "Bu ýeriň uzynlygy %s we %s harp aralygynda bolmaly.",
|
||||
mincheck: "Iň azyndan %s sanysyny saýlamaly.",
|
||||
maxcheck: "Iň köp %s sanysyny saýlamaly.",
|
||||
check: "Iň az %s, iň köp %s sanysyny saýlamaly.",
|
||||
equalto: "Bu maglumat deň bolmaly."
|
||||
});
|
||||
|
||||
Parsley.setLocale('tk');
|
29
public/js/parsley/i18n/tr.js
vendored
Normal file
29
public/js/parsley/i18n/tr.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('tr', {
|
||||
defaultMessage: "Girdiğiniz değer geçerli değil.",
|
||||
type: {
|
||||
email: "Geçerli bir e-mail adresi yazmanız gerekiyor.",
|
||||
url: "Geçerli bir bağlantı adresi yazmanız gerekiyor.",
|
||||
number: "Geçerli bir sayı yazmanız gerekiyor.",
|
||||
integer: "Geçerli bir tamsayı yazmanız gerekiyor.",
|
||||
digits: "Geçerli bir rakam yazmanız gerekiyor.",
|
||||
alphanum: "Geçerli bir alfanümerik değer yazmanız gerekiyor."
|
||||
},
|
||||
notblank: "Bu alan boş bırakılamaz.",
|
||||
required: "Bu alan boş bırakılamaz.",
|
||||
pattern: "Girdiğiniz değer geçerli değil.",
|
||||
min: "Bu alan %s değerinden büyük ya da bu değere eşit olmalı.",
|
||||
max: "Bu alan %s değerinden küçük ya da bu değere eşit olmalı.",
|
||||
range: "Bu alan %s ve %s değerleri arasında olmalı.",
|
||||
minlength: "Bu alanın uzunluğu %s karakter veya daha fazla olmalı.",
|
||||
maxlength: "Bu alanın uzunluğu %s karakter veya daha az olmalı.",
|
||||
length: "Bu alanın uzunluğu %s ve %s karakter arasında olmalı.",
|
||||
mincheck: "En az %s adet seçim yapmalısınız.",
|
||||
maxcheck: "En fazla %s seçim yapabilirsiniz.",
|
||||
check: "Bu alan için en az %s, en fazla %s seçim yapmalısınız.",
|
||||
equalto: "Bu alanın değeri aynı olmalı."
|
||||
});
|
||||
|
||||
Parsley.setLocale('tr');
|
14
public/js/parsley/i18n/ua.extra.js
vendored
Normal file
14
public/js/parsley/i18n/ua.extra.js
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ua', {
|
||||
dateiso: "Це значення повинно бути коректною датою (РРРР-ММ-ДД).",
|
||||
minwords: "Це значення повинно містити не менше %s слів.",
|
||||
maxwords: "Це значення повинно містити не більше %s слів.",
|
||||
words: "Це значення повинно містити від %s до %s слів.",
|
||||
gt: "Це значення повинно бути більше.",
|
||||
gte: "Це значення повинно бути більше або дорівнює.",
|
||||
lt: "Це значення повинно бути менше.",
|
||||
lte: "Це значення повинно бути менше або дорівнює.",
|
||||
notequalto: "Це значення повинно відрізнятися."
|
||||
});
|
29
public/js/parsley/i18n/ua.js
vendored
Normal file
29
public/js/parsley/i18n/ua.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('ua', {
|
||||
defaultMessage: "Некоректне значення.",
|
||||
type: {
|
||||
email: "Введіть адресу електронної пошти.",
|
||||
url: "Введіть URL адресу.",
|
||||
number: "Введіть число.",
|
||||
integer: "Введіть ціле число.",
|
||||
digits: "Введіть тільки цифри.",
|
||||
alphanum: "Введіть буквено-цифрове значення."
|
||||
},
|
||||
notblank: "Це поле має бути заповненим.",
|
||||
required: "Обов'язкове поле.",
|
||||
pattern: "Це значення некоректне.",
|
||||
min: "Це значення повинно бути не менше ніж %s.",
|
||||
max: "Це значення повинно бути не більше ніж %s.",
|
||||
range: "Це значення повинно бути від %s до %s.",
|
||||
minlength: "Це значення повинно містити не менше %s символів.",
|
||||
maxlength: "Це значення повинно містити не більше %s символів.",
|
||||
length: "Це значення повинно містити від %s до %s символів.",
|
||||
mincheck: "Виберіть не менше %s значень.",
|
||||
maxcheck: "Виберіть не більше %s значень.",
|
||||
check: "Виберіть від %s до %s значень.",
|
||||
equalto: "Це значення повинно співпадати."
|
||||
});
|
||||
|
||||
Parsley.setLocale('ua');
|
9
public/js/parsley/i18n/uk.extra.js
vendored
Normal file
9
public/js/parsley/i18n/uk.extra.js
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('uk', {
|
||||
dateiso: "Це значення має бути коректною датою (РРРР-ММ-ДД).",
|
||||
minwords: "Це значення повинно містити не менше %s слів.",
|
||||
maxwords: "Це значення повинно містити не більше %s слів.",
|
||||
words: "Це значення повинно містити від %s до %s слів."
|
||||
});
|
29
public/js/parsley/i18n/uk.js
vendored
Normal file
29
public/js/parsley/i18n/uk.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('uk', {
|
||||
defaultMessage: "Некоректне значення.",
|
||||
type: {
|
||||
email: "Введіть адресу електронної пошти.",
|
||||
url: "Введіть URL-адресу.",
|
||||
number: "Введіть число.",
|
||||
integer: "Введіть ціле число.",
|
||||
digits: "Введіть тільки цифри.",
|
||||
alphanum: "Введіть буквено-цифрове значення."
|
||||
},
|
||||
notblank: "Це поле повинно бути заповнено.",
|
||||
required: "Обов'язкове поле",
|
||||
pattern: "Це значення некоректно.",
|
||||
min: "Це значення повинно бути не менше ніж %s.",
|
||||
max: "Це значення повинно бути не більше ніж %s.",
|
||||
range: "Це значення повинно бути від %s до %s.",
|
||||
minlength: "Це значення повинно містити не менше ніж %s символів.",
|
||||
maxlength: "Це значення повинно містити не більше ніж %s символів.",
|
||||
length: "Це значення повинно містити від %s до %s символів.",
|
||||
mincheck: "Виберіть не менше %s значень.",
|
||||
maxcheck: "Виберіть не більше %s значень.",
|
||||
check: "Виберіть від %s до %s значень.",
|
||||
equalto: "Це значення повинно збігатися."
|
||||
});
|
||||
|
||||
Parsley.setLocale('uk');
|
6
public/js/parsley/i18n/zh_cn.extra.js
vendored
Normal file
6
public/js/parsley/i18n/zh_cn.extra.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('zh-cn', {
|
||||
dateiso: "请输入正确格式的日期 (YYYY-MM-DD)."
|
||||
});
|
29
public/js/parsley/i18n/zh_cn.js
vendored
Normal file
29
public/js/parsley/i18n/zh_cn.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('zh-cn', {
|
||||
defaultMessage: "不正确的值",
|
||||
type: {
|
||||
email: "请输入一个有效的电子邮箱地址",
|
||||
url: "请输入一个有效的链接",
|
||||
number: "请输入正确的数字",
|
||||
integer: "请输入正确的整数",
|
||||
digits: "请输入正确的号码",
|
||||
alphanum: "请输入字母或数字"
|
||||
},
|
||||
notblank: "请输入值",
|
||||
required: "必填项",
|
||||
pattern: "格式不正确",
|
||||
min: "输入值请大于或等于 %s",
|
||||
max: "输入值请小于或等于 %s",
|
||||
range: "输入值应该在 %s 到 %s 之间",
|
||||
minlength: "请输入至少 %s 个字符",
|
||||
maxlength: "请输入至多 %s 个字符",
|
||||
length: "字符长度应该在 %s 到 %s 之间",
|
||||
mincheck: "请至少选择 %s 个选项",
|
||||
maxcheck: "请选择不超过 %s 个选项",
|
||||
check: "请选择 %s 到 %s 个选项",
|
||||
equalto: "输入值不同"
|
||||
});
|
||||
|
||||
Parsley.setLocale('zh-cn');
|
29
public/js/parsley/i18n/zh_tw.js
vendored
Normal file
29
public/js/parsley/i18n/zh_tw.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Validation errors messages for Parsley
|
||||
// Load this after Parsley
|
||||
|
||||
Parsley.addMessages('zh-tw', {
|
||||
defaultMessage: "這個值似乎是無效的。",
|
||||
type: {
|
||||
email: "請輸入一個正確的電子郵件地址。",
|
||||
url: "請輸入一個有效的網址。",
|
||||
number: "請輸入一個數字。",
|
||||
integer: "請輸入一個整數。",
|
||||
digits: "這個欄位只接受數字。",
|
||||
alphanum: "這個欄位只接受英文字母或是數字。"
|
||||
},
|
||||
notblank: "這個欄位不能為空白。",
|
||||
required: "這個欄位必須填寫。",
|
||||
pattern: "這個值似乎是無效的。",
|
||||
min: "輸入的值應該大於或等於 %s",
|
||||
max: "輸入的值應該小於或等於 %s",
|
||||
range: "輸入的值應該在 %s 和 %s 之間。",
|
||||
minlength: "輸入的值至少要有 %s 個字元。",
|
||||
maxlength: "輸入的值最多可以有 %s 個字元。",
|
||||
length: "字元長度應該在 %s 和 %s 之間。",
|
||||
mincheck: "你至少要選擇 %s 個項目。",
|
||||
maxcheck: "你最多可選擇 %s 個項目。",
|
||||
check: "你必須選擇 %s 到 %s 個項目。",
|
||||
equalto: "輸入值不同。"
|
||||
});
|
||||
|
||||
Parsley.setLocale('zh-tw');
|
2494
public/js/parsley/parsley.js
vendored
Normal file
2494
public/js/parsley/parsley.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/js/parsley/parsley.js.map
Normal file
1
public/js/parsley/parsley.js.map
Normal file
File diff suppressed because one or more lines are too long
18
public/js/parsley/parsley.min.js
vendored
Normal file
18
public/js/parsley/parsley.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/js/parsley/parsley.min.js.map
Normal file
1
public/js/parsley/parsley.min.js.map
Normal file
File diff suppressed because one or more lines are too long
5
public/js/vars.js
vendored
5
public/js/vars.js
vendored
@ -1,3 +1,8 @@
|
||||
/**
|
||||
* This file has been generated by console command: php artisan freescout:generate-vars-js
|
||||
* If you need to make changes, please edit /resources/views/js/vars.js template.
|
||||
*/
|
||||
|
||||
var Vars = {
|
||||
|
||||
};
|
||||
|
@ -25,7 +25,7 @@
|
||||
</div>
|
||||
|
||||
<div class="conv-info">
|
||||
# <strong class="conv-new-number">{{ __("Pending") }}</strong>
|
||||
#<strong class="conv-new-number">{{ __("Pending") }}</strong>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
@ -37,10 +37,11 @@
|
||||
<div class="conv-block">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<form class="form-horizontal margin-top" method="POST" action="">
|
||||
<form class="form-horizontal margin-top form-reply" method="POST" action="">
|
||||
{{ csrf_field() }}
|
||||
|
||||
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
|
||||
<input type="hidden" name="conversation_id" value="{{ $conversation->id }}"/>
|
||||
<input type="hidden" name="mailbox_id" value="{{ $mailbox->id }}"/>
|
||||
<div class="form-group{{ $errors->has('to') ? ' has-error' : '' }}">
|
||||
<label for="to" class="col-sm-2 control-label">{{ __('To') }}</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
@ -54,40 +55,42 @@
|
||||
<a href="javascript:void(0);" class="help-link">Cc/Bcc</a>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }} @if (!$conversation->cc) hidden @endif field-cc">
|
||||
<div class="form-group{{ $errors->has('cc') ? ' has-error' : '' }} @if (!$conversation->cc) hidden @endif field-cc">
|
||||
<label for="cc" class="col-sm-2 control-label">{{ __('Cc') }}</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input id="cc" type="text" class="form-control" name="cc" value="{{ old('cc', $conversation->cc) }}" required autofocus>
|
||||
<input id="cc" type="text" class="form-control" name="cc" value="{{ old('cc', $conversation->cc) }}">
|
||||
|
||||
@include('partials/field_error', ['field'=>'cc'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }} @if (!$conversation->bcc) hidden @endif field-cc">
|
||||
<div class="form-group{{ $errors->has('bcc') ? ' has-error' : '' }} @if (!$conversation->bcc) hidden @endif field-cc">
|
||||
<label for="bcc" class="col-sm-2 control-label">{{ __('Bcc') }}</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input id="bcc" type="text" class="form-control" name="bcc" value="{{ old('bcc', $conversation->bcc) }}" required autofocus>
|
||||
<input id="bcc" type="text" class="form-control" name="bcc" value="{{ old('bcc', $conversation->bcc) }}">
|
||||
|
||||
@include('partials/field_error', ['field'=>'bcc'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
|
||||
<div class="form-group{{ $errors->has('subject') ? ' has-error' : '' }}">
|
||||
<label for="subject" class="col-sm-2 control-label">{{ __('Subject') }}</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input id="subject" type="text" class="form-control" name="subject" value="{{ old('subject', $conversation->subject) }}" required autofocus>
|
||||
<input id="subject" type="text" class="form-control" name="subject" value="{{ old('subject', $conversation->subject) }}" maxlength="998" required autofocus>
|
||||
|
||||
@include('partials/field_error', ['field'=>'subject'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('signature') ? ' has-error' : '' }}">
|
||||
<div class="form-group{{ $errors->has('body') ? ' has-error' : '' }}">
|
||||
<div class="col-sm-12">
|
||||
<textarea id="body" class="form-control" name="body" rows="8">{{ old('body', $conversation->body) }}</textarea>
|
||||
@include('partials/field_error', ['field'=>'body'])
|
||||
<textarea id="body" class="form-control" name="body" rows="13" data-parsley-required="true" data-parsley-required-message="{{ __('Please enter a message') }}">{{ old('body', $conversation->body) }}</textarea>
|
||||
<div class="help-block">
|
||||
@include('partials/field_error', ['field'=>'body'])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -97,6 +100,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('conversations/editor_bottom_toolbar')
|
||||
@endsection
|
||||
|
||||
@include('partials/editor')
|
||||
|
@ -0,0 +1,34 @@
|
||||
<div id="editor_bottom_toolbar" style="display:none">
|
||||
{{ __('Status') }}:
|
||||
<select name="status" class="form-control" data-parsley-exclude="true">
|
||||
<option value="{{ App\Mailbox::TICKET_STATUS_ACTIVE }}" @if (old('status', $mailbox->ticket_status) == App\Mailbox::TICKET_STATUS_ACTIVE)selected="selected"@endif>{{ __('Active') }}</option>
|
||||
<option value="{{ App\Mailbox::TICKET_STATUS_PENDING }}" @if (old('status', $mailbox->ticket_status) == App\Mailbox::TICKET_STATUS_PENDING)selected="selected"@endif>{{ __('Pending') }}</option>
|
||||
<option value="{{ App\Mailbox::TICKET_STATUS_CLOSED }}" @if (old('status', $mailbox->ticket_status) == App\Mailbox::TICKET_STATUS_CLOSED)selected="selected"@endif>{{ __('Closed') }}</option>
|
||||
</select>
|
||||
<small class="glyphicon glyphicon-chevron-right note-bottom-div"></small>
|
||||
{{ __('Asisgn to') }}:
|
||||
<select name="user_id" class="form-control" data-parsley-exclude="true">
|
||||
<option value="-1" @if ((int)old('user_id') == -1 || (!old('user_id') && $mailbox->ticket_assignee == App\Mailbox::TICKET_ASSIGNEE_ANYONE))selected="selected"@endif>{{ __('Anyone') }}</option>
|
||||
<option value="{{ Auth::user()->id }}" @if (old('user_id') == Auth::user()->id || (!old('user_id') && (!$conversation->user_id && $mailbox->ticket_assignee == App\Mailbox::TICKET_ASSIGNEE_REPLYING_UNASSIGNED) || $mailbox->ticket_assignee == App\Mailbox::TICKET_ASSIGNEE_REPLYING))selected="selected"@endif>{{ __('Me') }}</option>
|
||||
@foreach ($mailbox->usersHavingAccess() as $user)
|
||||
@if ($user->id != Auth::user()->id)
|
||||
<option value="{{ $user->id }}" @if (old('user_id') == $user->id)selected="selected"@endif>{{ $user->getFullName() }}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<div class="btn-group btn-group-send">
|
||||
<button class="hidden"></button>
|
||||
<button type="button" class="btn btn-primary btn-send-text" data-loading-text="{{ __('Sending…') }}">{{ __('Send') }}</button>
|
||||
<button type="button" class="btn btn-primary btn-send-menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><small class="glyphicon glyphicon-chevron-down"></small></button>
|
||||
<ul class="dropdown-menu dropdown-menu-right dropdown-after-send">
|
||||
<li @if (0) class="active" @endif><a href="javascript:void(0)" class="after-send-stay">{{ __('Send and stay on page') }}</a></li>
|
||||
<li @if (0) class="active" @endif><a href="#" class="after-send-folder">{{ __('Send and back to folder') }}</a></li>
|
||||
<li @if (0) class="active" @endif><a href="#" class="after-send-next">{{ __('Send and next active') }}</a></li>
|
||||
@if (empty($is_reply))
|
||||
<li class="divider"></li>
|
||||
<li @if (0) class="active" @endif><a href="#" class="after-send-change">{{ __('Change default redirect') }}</a></li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
@ -78,13 +78,54 @@
|
||||
|
||||
</div>
|
||||
<div id="conv-subject">
|
||||
<div class="conv-subjwrap">
|
||||
<div class="conv-subjtext">
|
||||
{{ $conversation->subject }}
|
||||
<div class="conv-subj-block">
|
||||
<div class="conv-subjwrap">
|
||||
<div class="conv-subjtext">
|
||||
{{ $conversation->subject }}
|
||||
</div>
|
||||
<div class="conv-numnav">
|
||||
<i class="glyphicon glyphicon-star-empty conv-star" onclick="alert('todo: implement starred conversations')" data-toggle="tooltip" title="{{ __("Star Conversation") }}"></i> # <strong>{{ $conversation->number }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conv-numnav">
|
||||
<i class="glyphicon glyphicon-star-empty conv-star" onclick="alert('todo: implement starred conversations')" data-toggle="tooltip" title="{{ __("Star Conversation") }}"></i> # <strong>{{ $conversation->number }}</strong>
|
||||
</div>
|
||||
|
||||
<div class="conv-block conv-reply-block conv-action-block hidden">
|
||||
<div class="col-xs-12">
|
||||
<form class="form-horizontal form-reply" method="POST" action="">
|
||||
{{ csrf_field() }}
|
||||
<input type="hidden" name="conversation_id" value="{{ $conversation->id }}"/>
|
||||
<input type="hidden" name="mailbox_id" value="{{ $mailbox->id }}"/>
|
||||
<div class="form-group{{ $errors->has('cc') ? ' has-error' : '' }}">
|
||||
<label for="cc" class="control-label">{{ __('Cc') }}</label>
|
||||
|
||||
<div class="conv-reply-field">
|
||||
<input id="cc" type="text" class="form-control" name="cc" value="{{ old('cc', $conversation->cc) }}">
|
||||
@include('partials/field_error', ['field'=>'cc'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('bcc') ? ' has-error' : '' }}">
|
||||
<label for="bcc" class="control-label">{{ __('Bcc') }}</label>
|
||||
|
||||
<div class="conv-reply-field">
|
||||
<input id="bcc" type="text" class="form-control" name="bcc" value="{{ old('bcc', $conversation->bcc) }}">
|
||||
|
||||
@include('partials/field_error', ['field'=>'bcc'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group{{ $errors->has('body') ? ' has-error' : '' }} conv-reply-body">
|
||||
|
||||
<textarea id="body" class="form-control" name="body" rows="13" data-parsley-required="true" data-parsley-required-message="{{ __('Please enter a message') }}">{{ old('body', $conversation->body) }}</textarea>
|
||||
<div class="help-block">
|
||||
@include('partials/field_error', ['field'=>'body'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
@include('conversations/editor_bottom_toolbar')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -159,7 +200,7 @@
|
||||
@include('conversations/thread_by')
|
||||
@endif
|
||||
</strong>
|
||||
@if ($loop->index == 0)
|
||||
@if ($loop->last)
|
||||
{{ __("started the conversation") }}
|
||||
@else
|
||||
{{ __("replied") }}
|
||||
@ -238,7 +279,10 @@
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@include('partials/editor')
|
||||
|
||||
@section('javascript')
|
||||
@parent
|
||||
conversationInit();
|
||||
newConversationInit();
|
||||
@endsection
|
@ -3,7 +3,9 @@
|
||||
<img src="/img/default-avatar.png" alt="" class="customer-photo">
|
||||
</div>
|
||||
<div class="customer-data">
|
||||
<a href="{{ route('customers.update', ['id' => $customer->id]) }}" class="customer-name">{{ $customer->getFullName() }}</a>
|
||||
@if ($customer->getFullName(false))
|
||||
<a href="{{ route('customers.update', ['id' => $customer->id]) }}" class="customer-name">{{ $customer->getFullName() }}</a>
|
||||
@endif
|
||||
{{-- todo: display full customer info --}}
|
||||
<ul class="customer-contacts customer-section">
|
||||
@foreach ($customer->emails as $email)
|
||||
|
@ -3,7 +3,10 @@
|
||||
After changing this file make sure to run:
|
||||
php artisan freescout:generate-vars-js
|
||||
--}}
|
||||
|
||||
/**
|
||||
* This file has been generated by console command: php artisan freescout:generate-vars-js
|
||||
* If you need to make changes, please edit /resources/views/js/vars.js template.
|
||||
*/
|
||||
{{-- Global vars for JS. Set in /app/Console/Commands/GenerateJs.php --}}
|
||||
var Vars = {
|
||||
|
||||
|
@ -167,7 +167,7 @@
|
||||
@yield('body_bottom')
|
||||
|
||||
<!-- Scripts -->
|
||||
{!! Minify::javascript(array('/js/jquery.js', '/js/bootstrap.js', '/js/laroute.js', '/js/lang.js', '/js/vars.js', '/js/main.js')) !!}
|
||||
{!! Minify::javascript(array('/js/jquery.js', '/js/bootstrap.js', '/js/laroute.js', '/js/lang.js', '/js/vars.js', '/js/parsley/parsley.min.js', '/js/parsley/i18n/'.Config::get('app.locale').'.js', '/js/main.js')) !!}
|
||||
@yield('javascripts')
|
||||
@if ($__env->yieldContent('javascript'))
|
||||
<script type="text/javascript">
|
||||
|
@ -3,6 +3,6 @@
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.permissions')class="active"@endif><a href="{{ route('mailboxes.permissions', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-ok"></i> {{ __('Permissions') }}</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.fields')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-list"></i> {{ __('Custom Fields') }} (todo)</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.autoreply')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-share"></i> {{ __('Auto Reply') }} (todo)</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.savedreplies')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-floppy-save"></i> {{ __('Saved Replies') }} (todo)</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.savedreplies')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-comment"></i> {{ __('Saved Replies') }} (todo)</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.workflows')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-random"></i> {{ __('Workflows') }} (todo)</a></li>
|
||||
<li @if (Route::currentRouteName() == 'mailboxes.ratings')class="active"@endif><a href="{{ route('mailboxes.update', ['id'=>$mailbox->id]) }}"><i class="glyphicon glyphicon-thumbs-up"></i> {{ __('Sat. Ratings') }} (todo)</a></li>
|
@ -75,7 +75,7 @@
|
||||
</td>
|
||||
<td class="conv-customer" data-label="{{ __('Customer') }}">
|
||||
<a href="{{ route('conversations.view', ['id' => $conversation->id]) }}">
|
||||
{{ $conversation->customer->getFullName()}}
|
||||
{{ $conversation->customer->getFullName(true)}}
|
||||
</a>
|
||||
</td>
|
||||
<td class="conv-attachment" data-label="{{ __('Attachments') }}">
|
||||
|
@ -20,7 +20,6 @@ Auth::routes();
|
||||
// General routes for logged in users
|
||||
Route::get('/', 'SecureController@dashboard')->name('dashboard');
|
||||
Route::get('/logs/{name?}', 'SecureController@logs')->name('logs');
|
||||
Route::post('/ajax', ['uses' => 'SecureController@ajax', 'laroute' => true])->name('ajax');
|
||||
|
||||
// Users
|
||||
Route::get('/users', 'UsersController@users')->name('users');
|
||||
@ -34,6 +33,7 @@ Route::post('/users/permissions/{id}', 'UsersController@permissionsSave');
|
||||
|
||||
// Conversations
|
||||
Route::get('/conversation/{id}', 'ConversationsController@view')->name('conversations.view');
|
||||
Route::post('/conversation/ajax', ['uses' => 'ConversationsController@ajax', 'laroute' => true])->name('conversations.ajax');
|
||||
Route::get('/mailbox/{mailbox_id}/new-ticket', 'ConversationsController@create')->name('conversations.create');
|
||||
Route::get('/conversation/draft/{id}', 'ConversationsController@draft')->name('conversations.draft');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user