mirror of
https://github.com/espocrm/espocrm.git
synced 2026-03-05 22:07:01 +00:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
667a46f141 | ||
|
|
67f65492de | ||
|
|
b6a98e7121 | ||
|
|
9669ff91bb | ||
|
|
acb6e245a2 | ||
|
|
b5e015e9c9 | ||
|
|
70d2e311e5 | ||
|
|
6c7e5c0d02 | ||
|
|
d4558d73b3 | ||
|
|
e2257f6cfd | ||
|
|
149fa41e2b | ||
|
|
71e4c2fca0 | ||
|
|
5a4613617c | ||
|
|
cbf9dd458e | ||
|
|
08553bdf9d | ||
|
|
d0b61b42e0 | ||
|
|
3e3348c4a7 | ||
|
|
c32b0f365b | ||
|
|
8fd0554714 | ||
|
|
982f0e1f62 | ||
|
|
c87f5dfab3 | ||
|
|
b335462aa4 | ||
|
|
65f38a4906 |
@@ -82,6 +82,11 @@ class Base
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function getTextFilterFields()
|
||||
{
|
||||
return $this->metadata->get("entityDefs.{$this->entityName}.collection.textFilterFields", array('name'));
|
||||
}
|
||||
|
||||
protected function where($params, &$result)
|
||||
{
|
||||
@@ -96,6 +101,18 @@ class Base
|
||||
$params['where'][] = $p;
|
||||
}
|
||||
}
|
||||
} else if ($item['type'] == 'textFilter' && !empty($item['value'])) {
|
||||
if (!empty($item['value'])) {
|
||||
if (empty($result['whereClause'])) {
|
||||
$result['whereClause'] = array();
|
||||
}
|
||||
$fieldList = $this->getTextFilterFields();
|
||||
$d = array();
|
||||
foreach ($fieldList as $field) {
|
||||
$d[$field . '*'] = $item['value'] . '%';
|
||||
}
|
||||
$where['OR'] = $d;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,8 @@ return array (
|
||||
'fr_FR',
|
||||
'tr_TR',
|
||||
'ro_RO',
|
||||
'pt_BR'
|
||||
'pt_BR',
|
||||
'vi_VN'
|
||||
),
|
||||
'language' => 'en_US',
|
||||
'logger' =>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
},
|
||||
"links": {
|
||||
"contacts": "Contacte",
|
||||
"opportunities": "Opportunitati",
|
||||
"opportunities": "Oportunitati",
|
||||
"cases": "Cazuri"
|
||||
},
|
||||
"options": {
|
||||
|
||||
@@ -30,5 +30,10 @@
|
||||
"Set Held": "Setare detinere",
|
||||
"Set Not Held": "Setare nedetinere",
|
||||
"Send Invitations": "Trimite invitatii"
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Planificat",
|
||||
"held": "Detinut",
|
||||
"todays": "Today's"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,5 +34,9 @@
|
||||
},
|
||||
"labels": {
|
||||
"Create Case": "Creare Caz"
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Deschide",
|
||||
"closed": "Inchis"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"description": "Descriere"
|
||||
},
|
||||
"links": {
|
||||
"opportunities": "Opportunitati",
|
||||
"opportunities": "Oportunitati",
|
||||
"cases": "Cazuri"
|
||||
},
|
||||
"labels": {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"Contact": "Contacte",
|
||||
"Lead": "Lead-uri",
|
||||
"Target": "Tinte",
|
||||
"Opportunity": "Opportunitati",
|
||||
"Opportunity": "Oportunitati",
|
||||
"Meeting": "Intalniri",
|
||||
"Calendar": "Calendar",
|
||||
"Call": "Apeluri",
|
||||
@@ -69,7 +69,7 @@
|
||||
},
|
||||
"links": {
|
||||
"contacts": "Contacte",
|
||||
"opportunities": "Opportunitati",
|
||||
"opportunities": "Oportunitati",
|
||||
"leads": "Lead-uri",
|
||||
"meetings": "Intalniri",
|
||||
"calls": "Apeluri",
|
||||
|
||||
@@ -42,5 +42,8 @@
|
||||
"Campaign": "Campanie",
|
||||
"Other": "Altele"
|
||||
}
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Activ"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,13 @@
|
||||
"Create Meeting": "Creare Intalnire",
|
||||
"Set Held": "Setare detinere",
|
||||
"Set Not Held": "Setare nedetinere",
|
||||
"Send Invitations": "Trimite invitatii"
|
||||
"Send Invitations": "Trimite invitatii",
|
||||
"Saved as Held": "Saved as Held",
|
||||
"Saved as Not Held": "Saved as Not Held"
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Planificat",
|
||||
"held": "Detinut",
|
||||
"todays": "Today's"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,5 +30,9 @@
|
||||
},
|
||||
"labels": {
|
||||
"Create Opportunity": "Creare Oportunitate"
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Deschide",
|
||||
"won": "Won"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,5 +27,11 @@
|
||||
},
|
||||
"labels": {
|
||||
"Create Task": "Creaza Activitate"
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Activ",
|
||||
"completed": "Completat",
|
||||
"todays": "Today's",
|
||||
"overdue": "Overdue"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"emailAddress": "Email",
|
||||
"website": "Website",
|
||||
"phoneNumber": "Điện thoại",
|
||||
"billingAddress": "Địa chủ thanh toán",
|
||||
"shippingAddress": "Địa chỉ vận chuyển",
|
||||
"description": "Mô tả",
|
||||
"sicCode": "Mã Sic",
|
||||
"industry": "Industry",
|
||||
"type": "Loại",
|
||||
"contactRole": "Vai trò"
|
||||
},
|
||||
"links": {
|
||||
"contacts": "Sổ liên lạc",
|
||||
"opportunities": "Cơ hội",
|
||||
"cases": "Trường hợp"
|
||||
},
|
||||
"options": {
|
||||
"type": {
|
||||
"Customer": "Khách hàng",
|
||||
"Investor": "Nhà đầu tư",
|
||||
"Partner": "Đối tác",
|
||||
"Reseller": "Đại lý"
|
||||
},
|
||||
"industry": {
|
||||
"Apparel": "May mặc",
|
||||
"Banking": "Ngân hàng",
|
||||
"Computer Software": "Phần mềm",
|
||||
"Education": "Giáo dục",
|
||||
"Electronics": "Điện máy",
|
||||
"Finance": "Tín dụng",
|
||||
"Insurance": "Bảo hiểm"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Account": "Tạo tài khoản"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"modes": {
|
||||
"month": "Tháng",
|
||||
"week": "Tuần",
|
||||
"day": "Ngày",
|
||||
"agendaWeek": "Tuần",
|
||||
"agendaDay": "Ngày"
|
||||
},
|
||||
"labels": {
|
||||
"Today": "Today",
|
||||
"Create": "Tạo"
|
||||
}
|
||||
}
|
||||
39
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Call.json
Normal file
39
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Call.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"parent": "Chủ",
|
||||
"status": "Trạng thái",
|
||||
"dateStart": "Ngày bắt đầu",
|
||||
"dateEnd": "Ngày kết thúc",
|
||||
"direction": "Hướng",
|
||||
"duration": "Thời gian",
|
||||
"description": "Mô tả",
|
||||
"users": "Người dùng",
|
||||
"contacts": "Sổ liên lạc",
|
||||
"leads": "Trưởng nhóm"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"Planned": "Đã lên kế hoạch",
|
||||
"Held": "Đã được tổ chức",
|
||||
"Not Held": "Chưa được tổ chức"
|
||||
},
|
||||
"direction": {
|
||||
"Outbound": "Ra ngoài",
|
||||
"Inbound": "Vào trong"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Call": "Tạo cuộc gọi",
|
||||
"Set Held": "Tổ chức",
|
||||
"Set Not Held": "Không tổ chức",
|
||||
"Send Invitations": "Gửi giấy mời"
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Đã lên kế hoạch",
|
||||
"held": "Đã được tổ chức",
|
||||
"todays": "Hôm nay"
|
||||
}
|
||||
}
|
||||
42
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Case.json
Normal file
42
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Case.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"number": "Số",
|
||||
"status": "Trạng thái",
|
||||
"account": "Tài khoản",
|
||||
"contact": "Liên hệ",
|
||||
"priority": "Ưu tiên",
|
||||
"type": "Loại",
|
||||
"description": "Mô tả"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"New": "Mới",
|
||||
"Assigned": "Chỉ định",
|
||||
"Pending": "Đang chờ",
|
||||
"Closed": "Đã đóng",
|
||||
"Rejected": "Đã từ chối",
|
||||
"Duplicate": "Trùng"
|
||||
},
|
||||
"priority" : {
|
||||
"Low": "Thấp",
|
||||
"Normal": "Bình thường",
|
||||
"High": "Cao",
|
||||
"Urgent": "Gấp"
|
||||
},
|
||||
"type": {
|
||||
"Question": "Câu hỏi",
|
||||
"Incident": "Sự cố",
|
||||
"Problem": "Có vấn đề"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Case": "Tạo trường hợp"
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Mở",
|
||||
"closed": "Đã đóng"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"emailAddress": "Email",
|
||||
"title": "Tiêu đề",
|
||||
"account": "Tài khoản",
|
||||
"accounts": "Tài khoản",
|
||||
"phoneNumber": "Điện thoại",
|
||||
"accountType": "Loại tài khoản",
|
||||
"doNotCall": "Không gọi",
|
||||
"address": "Địa chỉ",
|
||||
"opportunityRole": "Vai trò cơ hội",
|
||||
"accountRole": "Vai trò",
|
||||
"description": "Mô tả"
|
||||
},
|
||||
"links": {
|
||||
"opportunities": "Cơ hội",
|
||||
"cases": "Trường hợp"
|
||||
},
|
||||
"labels": {
|
||||
"Create Contact": "Tạo liên hệ"
|
||||
},
|
||||
"options": {
|
||||
"opportunityRole": {
|
||||
"": "--Trống--",
|
||||
"Decision Maker": "Tạo quyết định",
|
||||
"Evaluator": "Đánh giá",
|
||||
"Influencer": "Phụ thuộc"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"scopeNames": {
|
||||
"Account": "Tài khoản",
|
||||
"Contact": "Liên hệ",
|
||||
"Lead": "Chỉ dẫn",
|
||||
"Target": "Mục tiêu",
|
||||
"Opportunity": "Cơ hội",
|
||||
"Meeting": "Buổi gặp",
|
||||
"Calendar": "Lịch",
|
||||
"Call": "Gọi",
|
||||
"Task": "Nhiệm vụ",
|
||||
"Case": "Trường hợp",
|
||||
"InboundEmail": "Email tới"
|
||||
},
|
||||
"scopeNamesPlural": {
|
||||
"Account": "Tài khoản",
|
||||
"Contact": "Sổ liên lạc",
|
||||
"Lead": "Trưởng nhóm",
|
||||
"Target": "Mục tiêu",
|
||||
"Opportunity": "Cơ hội",
|
||||
"Meeting": "Hẹn gặp",
|
||||
"Calendar": "Lịch",
|
||||
"Call": "Cuộc gọi",
|
||||
"Task": "Nhiệm vụ",
|
||||
"Case": "Trường hợp",
|
||||
"InboundEmail": "Email đã nhận"
|
||||
},
|
||||
"dashlets": {
|
||||
"Leads": "Chỉ dẫn của tôi",
|
||||
"Opportunities": "Cơ hội của tôi",
|
||||
"Tasks": "Nhiệm vụ của tôi",
|
||||
"Cases": "Công việc của tôi",
|
||||
"Calendar": "Lịch",
|
||||
"OpportunitiesByStage": "Chia mức cơ hội",
|
||||
"OpportunitiesByLeadSource": "Phân chia cơ hội theo người chỉ dẫn",
|
||||
"SalesByMonth": "Doanh thu hàng tháng",
|
||||
"SalesPipeline": "Doanh thu đường ống"
|
||||
},
|
||||
"labels": {
|
||||
"Create InboundEmail": "Tạo email đến",
|
||||
"Activities": "Hành động",
|
||||
"History": "Lịch sử",
|
||||
"Attendees": "Người dự",
|
||||
"Schedule Meeting": "Lên lịch hẹn",
|
||||
"Schedule Call": "Lên lịch gọi",
|
||||
"Compose Email": "Tạo email",
|
||||
"Log Meeting": "Log cuộc hẹn",
|
||||
"Log Call": "Log cuộc gọi",
|
||||
"Archive Email": "Email lưu trữ",
|
||||
"Create Task": "Tạo nhiệm vụ",
|
||||
"Tasks": "Nhiệm vụ"
|
||||
},
|
||||
"fields": {
|
||||
"billingAddressCity": "Quận - huyện",
|
||||
"billingAddressCountry": "Quốc gia",
|
||||
"billingAddressPostalCode": "Mã bưu điện",
|
||||
"billingAddressState": "Thành phố",
|
||||
"billingAddressStreet": "Đường",
|
||||
"addressCity": "Quận - huyện",
|
||||
"addressStreet": "Đường",
|
||||
"addressCountry": "Quốc gia",
|
||||
"addressState": "Thành phố",
|
||||
"addressPostalCode": "Mã bưu điện",
|
||||
"shippingAddressCity": "City (Shipping)",
|
||||
"shippingAddressStreet": "Street (Shipping)",
|
||||
"shippingAddressCountry": "Country (Shipping)",
|
||||
"shippingAddressState": "State (Shipping)",
|
||||
"shippingAddressPostalCode": "Postal Code (Shipping)"
|
||||
},
|
||||
"links": {
|
||||
"contacts": "Sổ liên lạc",
|
||||
"opportunities": "Cơ hội",
|
||||
"leads": "Trưởng nhóm",
|
||||
"meetings": "Hẹn gặp",
|
||||
"calls": "Cuộc gọi",
|
||||
"tasks": "Nhiệm vụ",
|
||||
"emails": "Địa chỉ email"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"team": "Nhóm",
|
||||
"status": "Trạng thái",
|
||||
"assignToUser": "Chỉ định",
|
||||
"host": "Máy chủ",
|
||||
"username": "Tên đăng nhập",
|
||||
"password": "Mật khẩu",
|
||||
"port": "Cổng",
|
||||
"monitoredFolders": "Thư mục được theo dõi",
|
||||
"trashFolder": "Thùng rác",
|
||||
"ssl": "SSL",
|
||||
"createCase": "Tạo trường hợp",
|
||||
"reply": "Trả lời",
|
||||
"caseDistribution": "Trường hợp phân phối",
|
||||
"replyEmailTemplate": "Mẫu email trả lời",
|
||||
"replyFromAddress": "Địa chỉ email trả lời",
|
||||
"replyFromName": "Tên người gửi"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"Active": "Đang hoạt động",
|
||||
"Inactive": "Chưa hoạt động"
|
||||
},
|
||||
"caseDistribution": {
|
||||
"Direct-Assignment": "Direct-Assignment",
|
||||
"Round-Robin": "Round-Robin",
|
||||
"Least-Busy": "Least-Busy"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create InboundEmail": "Tạo email đến",
|
||||
"IMAP": "IMAP",
|
||||
"Actions": "Hoạt động",
|
||||
"Main": "Chính"
|
||||
},
|
||||
"messages": {
|
||||
"couldNotConnectToImap": "Không thể kết nối với máy chủ IMAP"
|
||||
}
|
||||
}
|
||||
49
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json
Normal file
49
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"labels": {
|
||||
"Converted To": "Đã chuyển đổi sang",
|
||||
"Create Lead": "Tạo chỉ dẫn",
|
||||
"Convert": "Chuyển đổi"
|
||||
},
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"emailAddress": "Email",
|
||||
"title": "Tiêu đề",
|
||||
"website": "Website",
|
||||
"phoneNumber": "Điện thoại",
|
||||
"accountName": "Tên tài khoản",
|
||||
"doNotCall": "Không gọi",
|
||||
"address": "Địa chỉ",
|
||||
"status": "Trạng thái",
|
||||
"source": "Nguồn",
|
||||
"opportunityAmount": "Trị giá",
|
||||
"description": "Mô tả",
|
||||
"createdAccount": "Tài khoản",
|
||||
"createdContact": "Liên hệ",
|
||||
"createdOpportunity": "Cơ hội"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"New": "Mới",
|
||||
"Assigned": "Chỉ định",
|
||||
"In Process": "Đang tiến hành",
|
||||
"Converted": "Đã chuyển đổi",
|
||||
"Recycled": "Thùng rác",
|
||||
"Dead": "Chết"
|
||||
},
|
||||
"source": {
|
||||
"Call": "Gọi",
|
||||
"Email": "Email",
|
||||
"Existing Customer": "Khách hàng hiện có",
|
||||
"Partner": "Đối tác",
|
||||
"Public Relations": "Khách hàng công khai",
|
||||
"Web Site": "Web Site",
|
||||
"Campaign": "Chiến dịch",
|
||||
"Other": "Khác"
|
||||
}
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Đang hoạt động"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"parent": "Chủ",
|
||||
"status": "Trạng thái",
|
||||
"dateStart": "Ngày bắt đầu",
|
||||
"dateEnd": "Ngày kết thúc",
|
||||
"duration": "Thời gian",
|
||||
"description": "Mô tả",
|
||||
"users": "Người dùng",
|
||||
"contacts": "Sổ liên lạc",
|
||||
"leads": "Trưởng nhóm"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"Planned": "Đã lên kế hoạch",
|
||||
"Held": "Đã được tổ chức",
|
||||
"Not Held": "Chưa được tổ chức"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Meeting": "Tạo buổi hẹn",
|
||||
"Set Held": "Tổ chức",
|
||||
"Set Not Held": "Không tổ chức",
|
||||
"Send Invitations": "Gửi giấy mời",
|
||||
"Saved as Held": "Lưu là đã tổ chức",
|
||||
"Saved as Not Held": "Lưu là chưa tổ chức"
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Đã lên kế hoạch",
|
||||
"held": "Đã được tổ chức",
|
||||
"todays": "Hôm nay"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"account": "Tài khoản",
|
||||
"stage": "Mức",
|
||||
"amount": "Tổng",
|
||||
"probability": "Xác suất, %",
|
||||
"leadSource": "Nguồn dẫn",
|
||||
"doNotCall": "Không gọi",
|
||||
"closeDate": "Ngày kết thúc",
|
||||
"contacts": "Sổ liên lạc",
|
||||
"description": "Mô tả"
|
||||
},
|
||||
"links": {
|
||||
"contacts": "Sổ liên lạc"
|
||||
},
|
||||
"options": {
|
||||
"stage": {
|
||||
"Prospecting": "Khảo sát",
|
||||
"Qualification": "Trình độ chuyên môn",
|
||||
"Needs Analysis": "Phân tích nhu cầu",
|
||||
"Value Proposition": "Đề xuất giá trị",
|
||||
"Id. Decision Makers": "Id. Người tạo quyết định",
|
||||
"Perception Analysis": "Phân tích khả năng",
|
||||
"Proposal/Price Quote": "Giá đặt ra",
|
||||
"Negotiation/Review": "Đàm phán / đánh giá",
|
||||
"Closed Won": "Thắng thầu",
|
||||
"Closed Lost": "Thua thầu"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Opportunity": "Tạo cơ hội"
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Mở",
|
||||
"won": "Thắng"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"emailAddress": "Email",
|
||||
"title": "Tiêu đề",
|
||||
"website": "Website",
|
||||
"accountName": "Tên tài khoản",
|
||||
"phoneNumber": "Điện thoại",
|
||||
"doNotCall": "Không gọi",
|
||||
"address": "Địa chỉ",
|
||||
"description": "Mô tả"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"labels": {
|
||||
"Create Target": "Tạo mục tiêu",
|
||||
"Convert to Lead": "Chuyển đổi thành chỉ dẫn"
|
||||
}
|
||||
}
|
||||
37
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Task.json
Normal file
37
application/Espo/Modules/Crm/Resources/i18n/vi_VN/Task.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"parent": "Chủ",
|
||||
"status": "Trạng thái",
|
||||
"dateStart": "Ngày bắt đầu",
|
||||
"dateEnd": "Hạn",
|
||||
"priority": "Ưu tiên",
|
||||
"description": "Mô tả",
|
||||
"isOverdue": "Đã quá hạn"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
"Not Started": "Chưa bắt đầu",
|
||||
"Started": "Đã bắt đầu",
|
||||
"Completed": "Hoàn thành",
|
||||
"Canceled": "Hủy"
|
||||
},
|
||||
"priority" : {
|
||||
"Low": "Thấp",
|
||||
"Normal": "Bình thường",
|
||||
"High": "Cao",
|
||||
"Urgent": "Gấp"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"Create Task": "Tạo nhiệm vụ"
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Đang hoạt động",
|
||||
"completed": "Hoàn thành",
|
||||
"todays": "Hôm nay",
|
||||
"overdue": "Quá hạn"
|
||||
}
|
||||
}
|
||||
@@ -29,5 +29,6 @@
|
||||
],
|
||||
"layout":"listForAccount"
|
||||
}
|
||||
}
|
||||
},
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -76,5 +76,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -44,5 +44,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -21,5 +21,6 @@
|
||||
"view":"Crm:Record.Panels.Tasks"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -36,5 +36,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -76,5 +76,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -43,5 +43,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -13,5 +13,6 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -44,5 +44,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -155,7 +155,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "name",
|
||||
"asc": true,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +148,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "dateStart",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "name",
|
||||
"asc": true,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,7 +189,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "createdAt",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "dateStart",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "createdAt",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "createdAt",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "createdAt",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
46
application/Espo/Modules/Crm/SelectManagers/Task.php
Normal file
46
application/Espo/Modules/Crm/SelectManagers/Task.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM - Open Source CRM application.
|
||||
* Copyright (C) 2014 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
|
||||
* Website: http://www.espocrm.com
|
||||
*
|
||||
* EspoCRM is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* EspoCRM is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
namespace Espo\Modules\Crm\SelectManagers;
|
||||
|
||||
class Task extends \Espo\Core\SelectManagers\Base
|
||||
{
|
||||
|
||||
protected function getBoolFilterWhereActive()
|
||||
{
|
||||
return array(
|
||||
'type' => 'notIn',
|
||||
'field' => 'status',
|
||||
'value' => array('Completed', 'Canceled')
|
||||
);
|
||||
}
|
||||
|
||||
protected function getBoolFilterWhereInactive()
|
||||
{
|
||||
return array(
|
||||
'type' => 'in',
|
||||
'field' => 'status',
|
||||
'value' => array('Completed', 'Canceled')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,6 +297,13 @@
|
||||
"2": "2 minutes",
|
||||
"5": "5 minutes",
|
||||
"10": "10 minutes"
|
||||
},
|
||||
"phoneNumber": {
|
||||
"Mobile": "Mobile",
|
||||
"Office": "Office",
|
||||
"Fax": "Fax",
|
||||
"Home": "Home",
|
||||
"Other": "Other"
|
||||
}
|
||||
},
|
||||
"sets": {
|
||||
|
||||
@@ -28,5 +28,9 @@
|
||||
"labels": {
|
||||
"Create Email": "Arhiveaza Email",
|
||||
"Compose": "Compune"
|
||||
},
|
||||
"presetFilters": {
|
||||
"sent": "Trimis",
|
||||
"archived": "Arhivat"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,12 @@
|
||||
"You": "Tu",
|
||||
"you": "tu",
|
||||
"change": "schimba",
|
||||
"Primary": "Primar"
|
||||
"Primary": "Primar",
|
||||
"Save Filters": "Save Filters",
|
||||
"Administration": "Administration",
|
||||
"Run Import": "Run Import",
|
||||
"Duplicate": "Duplicat",
|
||||
"Notifications": "Notifications"
|
||||
},
|
||||
"messages": {
|
||||
"notModified": "Nu ai modificat inregistrarea",
|
||||
@@ -271,7 +276,10 @@
|
||||
"notOn": "Oprit",
|
||||
"after": "Dupa",
|
||||
"before": "Inainte",
|
||||
"between": "Intre"
|
||||
"between": "Intre",
|
||||
"today": "Astazi",
|
||||
"past": "Past",
|
||||
"future": "Future"
|
||||
},
|
||||
"intSearchRanges": {
|
||||
"equals": "Egal",
|
||||
@@ -289,6 +297,13 @@
|
||||
"2": "2 minute",
|
||||
"5": "5 minute",
|
||||
"10": "10 minute"
|
||||
},
|
||||
"phoneNumber": {
|
||||
"Mobile": "Mobile",
|
||||
"Office": "Office",
|
||||
"Fax": "Fax",
|
||||
"Home": "Home",
|
||||
"Other": "Altele"
|
||||
}
|
||||
},
|
||||
"sets": {
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
"ldapSecurity": "Securitate",
|
||||
"ldapUserLoginFilter": "User Login Filter",
|
||||
"ldapAccountDomainNameShort": "Account Domain Name Short",
|
||||
"ldapOptReferrals": "Opt Referrals"
|
||||
"ldapOptReferrals": "Opt Referrals",
|
||||
"disableExport": "Disable Export (only admin is allowed)"
|
||||
},
|
||||
"options": {
|
||||
"weekStart": {
|
||||
|
||||
126
application/Espo/Resources/i18n/vi_VN/Admin.json
Normal file
126
application/Espo/Resources/i18n/vi_VN/Admin.json
Normal file
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"labels": {
|
||||
"Enabled": "Bật",
|
||||
"Disabled": "Tắt",
|
||||
"System": "Hệ thống",
|
||||
"Users": "Người dùng",
|
||||
"Email": "Email",
|
||||
"Data": "Dữ liệu",
|
||||
"Customization": "Tùy chỉnh",
|
||||
"Available Fields": "Trường hiện có",
|
||||
"Layout": "Giao diện",
|
||||
"Enabled": "Bật",
|
||||
"Disabled": "Tắt",
|
||||
"Add Panel": "Thêm bảng điều khiển",
|
||||
"Add Field": "Thêm trường",
|
||||
"Settings": "Cái đặt",
|
||||
"Scheduled Jobs": "Công việc đã lên lịch",
|
||||
"Upgrade": "Nâng cấp",
|
||||
"Clear Cache": "Xóa Cache",
|
||||
"Rebuild": "Dựng lại",
|
||||
"Users": "Người dùng",
|
||||
"Teams": "Nhóm",
|
||||
"Roles": "Vai trò",
|
||||
"Outbound Emails": "Email đã gửi",
|
||||
"Inbound Emails": "Email đã nhận",
|
||||
"Email Templates": "Mẫu email",
|
||||
"Import": "Nhập",
|
||||
"Layout Manager": "Quản lý giao diện",
|
||||
"Field Manager": "Quản lý trường",
|
||||
"User Interface": "Giao diện người dùng",
|
||||
"Auth Tokens": "Auth Tokens",
|
||||
"Authentication": "Xác thực"
|
||||
},
|
||||
"layouts": {
|
||||
"list": "Đanh sách",
|
||||
"detail": "Chi tiết",
|
||||
"listSmall": "List (Small)",
|
||||
"detailSmall": "Detail (Small)",
|
||||
"filters": "Bộ lọc tìm kiếm",
|
||||
"massUpdate": "Cập nhật",
|
||||
"relationships": "Quan hệ"
|
||||
},
|
||||
"fieldTypes": {
|
||||
"address": "Địa chỉ",
|
||||
"array": "Mảng",
|
||||
"foreign": "Nước ngoài",
|
||||
"duration": "Thời gian",
|
||||
"password": "Mật khẩu",
|
||||
"parsonName": "Tên",
|
||||
"autoincrement": "Tự động tăng",
|
||||
"bool": "Bool",
|
||||
"currency": "Tiền tệ",
|
||||
"date": "Thời gian",
|
||||
"datetime": "Thời gian",
|
||||
"email": "Email",
|
||||
"enum": "Enum",
|
||||
"enumInt": "Enum Integer",
|
||||
"enumFloat": "Enum Float",
|
||||
"float": "Float",
|
||||
"int": "Int",
|
||||
"link": "Đường dẫn",
|
||||
"linkMultiple": "Đa đường dẫn",
|
||||
"linkParent": "Đường dẫn gốc",
|
||||
"multienim": "Multienum",
|
||||
"phone": "Điện thoại",
|
||||
"text": "Text",
|
||||
"url": "Đường dẫn",
|
||||
"varchar": "Varchar",
|
||||
"file": "File",
|
||||
"image": "Ảnh"
|
||||
},
|
||||
"fields": {
|
||||
"type": "Loại",
|
||||
"name": "Tên",
|
||||
"label": "Thẻ",
|
||||
"required": "Yêu cầu",
|
||||
"default": "Mặc định",
|
||||
"maxLength": "Chiều dài tối đa",
|
||||
"options": "Options (raw values, not translated)",
|
||||
"after": "After (field)",
|
||||
"before": "Before (field)",
|
||||
"link": "Đường dẫn",
|
||||
"field": "Trường",
|
||||
"min": "Tối thiểu",
|
||||
"max": "Tối đa",
|
||||
"translation": "Dịch",
|
||||
"previewSize": "Kích thước cũ"
|
||||
},
|
||||
"messages": {
|
||||
"upgradeVersion": "Your EspoCRM will be upgraded to version <strong>{version}</strong>. This can take some time.",
|
||||
"upgradeDone": "Your EspoCRM has been upgraded to version <strong>{version}</strong>. Refresh your browser window.",
|
||||
"upgradeBackup": "We recommend you to make backup of your EspoCRM files and data before upgrade.",
|
||||
"thousandSeparatorEqualsDecimalMark": "Dấu phân cách không thể giống nhau",
|
||||
"userHasNoEmailAddress": "Người dùng chưa có địa chỉ email",
|
||||
"selectEntityType": "Chọn loại ở menu bên trái",
|
||||
"selectUpgradePackage": "Chọn gói nâng cấp",
|
||||
"selectLayout": "Chọn giao diện cần sửa bên trái"
|
||||
},
|
||||
"descriptions": {
|
||||
"settings": "System settings of application.",
|
||||
"scheduledJob": "Công việc tự động tiến hành",
|
||||
"upgrade": "Nâng cấp hệ thống EspoCRM",
|
||||
"clearCache": "Xóa dữ liệu cache.",
|
||||
"rebuild": "Xóa dữ liệu và tải lại hệ thống",
|
||||
"users": "Quản lý người dùng.",
|
||||
"teams": "Quản lý nhóm.",
|
||||
"roles": "Quản lý vai trò.",
|
||||
"outboundEmails": "Tùy chỉnh SMTP để gửi email.",
|
||||
"inboundEmails": "Nhóm tài khoản email IMAP. Nhập email và Email-to-Case.",
|
||||
"emailTemplates": "Mẫu email gửi đi",
|
||||
"import": "Nhập dữ liệu từ tệp CSV",
|
||||
"layoutManager": "Customize layouts (list, detail, edit, search, mass update).",
|
||||
"fieldManager": "Tạo trường mới hoặc sửa trường đã tồn tại",
|
||||
"userInterface": "Chỉnh sửa giao diện.",
|
||||
"authTokens": "Kích hoạt quản lý phiên làm việc. Địa chỉ IP và ngày truy cập.",
|
||||
"authentication": "Cài đặt xác thực truy cập"
|
||||
},
|
||||
"options": {
|
||||
"previewSize": {
|
||||
"x-small": "Cực nhỏ",
|
||||
"small": "Nhỏ",
|
||||
"medium": "Trung bình",
|
||||
"large": "Lớn"
|
||||
}
|
||||
}
|
||||
}
|
||||
9
application/Espo/Resources/i18n/vi_VN/AuthToken.json
Normal file
9
application/Espo/Resources/i18n/vi_VN/AuthToken.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"fields": {
|
||||
"user": "Người dùng",
|
||||
"ipAddress": "Địa chỉ IP",
|
||||
"lastAccess": "Thời gian truy cập cuối",
|
||||
"createdAt": "Thời gian đăng nhập"
|
||||
|
||||
}
|
||||
}
|
||||
36
application/Espo/Resources/i18n/vi_VN/Email.json
Normal file
36
application/Espo/Resources/i18n/vi_VN/Email.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Chủ đề",
|
||||
"parent": "Chủ",
|
||||
"status": "Trạng thái",
|
||||
"dateSent": "Ngày gửi",
|
||||
"from": "Từ",
|
||||
"to": "Tới",
|
||||
"cc": "CC",
|
||||
"bcc": "BCC",
|
||||
"isHtml": "Chỉ Html",
|
||||
"body": "Nội dung",
|
||||
"subject": "Chủ đề",
|
||||
"attachments": "Đính kèm",
|
||||
"selectTemplate": "Chọn mẫu",
|
||||
"fromEmailAddress": "Địa chỉ gửi",
|
||||
"toEmailAddresses": "Địa chỉ nhận",
|
||||
"emailAddress": "Địa chỉ email"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"Draft": "Nháp",
|
||||
"Sending": "Đang gửi",
|
||||
"Sent": "Đã gửi",
|
||||
"Archived": "Lưu trữ"
|
||||
},
|
||||
"labels": {
|
||||
"Create Email": "Email lưu trữ",
|
||||
"Compose": "Soạn"
|
||||
},
|
||||
"presetFilters": {
|
||||
"sent": "Đã gửi",
|
||||
"archived": "Lưu trữ"
|
||||
}
|
||||
}
|
||||
7
application/Espo/Resources/i18n/vi_VN/EmailAddress.json
Normal file
7
application/Espo/Resources/i18n/vi_VN/EmailAddress.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"labels": {
|
||||
"Primary": "Chính",
|
||||
"Opted Out": "Chọn ra",
|
||||
"Invalid": "Không hợp lệ"
|
||||
}
|
||||
}
|
||||
16
application/Espo/Resources/i18n/vi_VN/EmailTemplate.json
Normal file
16
application/Espo/Resources/i18n/vi_VN/EmailTemplate.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"status": "Trạng thái",
|
||||
"isHtml": "Chỉ Html",
|
||||
"body": "Nội dung",
|
||||
"subject": "Chủ đề",
|
||||
"attachments": "Đính kèm",
|
||||
"insertField": ""
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"labels": {
|
||||
"Create EmailTemplate": "Tạo mẫu email"
|
||||
}
|
||||
}
|
||||
412
application/Espo/Resources/i18n/vi_VN/Global.json
Normal file
412
application/Espo/Resources/i18n/vi_VN/Global.json
Normal file
@@ -0,0 +1,412 @@
|
||||
{
|
||||
"scopeNames": {
|
||||
"Email": "Email",
|
||||
"User": "Người dùng",
|
||||
"Team": "Nhóm",
|
||||
"Role": "Vai trò",
|
||||
"EmailTemplate": "Mẫu email",
|
||||
"OutboundEmail": "Email đã gửi",
|
||||
"ScheduledJob": "Công việc đã lên lịch"
|
||||
},
|
||||
"scopeNamesPlural": {
|
||||
"Email": "Địa chỉ email",
|
||||
"User": "Người dùng",
|
||||
"Team": "Nhóm",
|
||||
"Role": "Vai trò",
|
||||
"EmailTemplate": "Mẫu email",
|
||||
"OutboundEmail": "Email đã gửi",
|
||||
"ScheduledJob": "Công việc đã lên lịch"
|
||||
},
|
||||
"labels": {
|
||||
"Misc": "Khác",
|
||||
"Merge": "Gộp",
|
||||
"None": "Trống",
|
||||
"by": "bởi",
|
||||
"Saved": "Đã lưu",
|
||||
"Error": "Lỗi",
|
||||
"Select": "Chọn",
|
||||
"Not valid": "Không phù hợp",
|
||||
"Please wait...": "Vui lòng đợi...",
|
||||
"Please wait": "Vui lòng đợi",
|
||||
"Loading...": "Đang tải...",
|
||||
"Uploading...": "Đang tải lên...",
|
||||
"Sending...": "Đang gửi...",
|
||||
"Removed": "Đã xóa",
|
||||
"Posted": "Đã đăng",
|
||||
"Linked": "Đã liên kết",
|
||||
"Unlinked": "Đã bỏ liên kết",
|
||||
"Access denied": "Từ chối truy cập",
|
||||
"Access": "Truy cập",
|
||||
"Are you sure?": "Are you sure?",
|
||||
"Record has been removed": "bản ghi đã được xóa",
|
||||
"Wrong username/password": "Sai tên truy cập và mật khẩu",
|
||||
"Post cannot be empty": "Nội dung không được để trống",
|
||||
"Removing...": "Đang xóa...",
|
||||
"Unlinking...": "Đang bỏ liên kết...",
|
||||
"Posting...": "Đang gửi...",
|
||||
"Username can not be empty!": "Tên đăng nhập không được để trống!",
|
||||
"Cache is not enabled": "Cache không được bật",
|
||||
"Cache has been cleared": "Cache đã được xóa",
|
||||
"Rebuild has been done": "Tải lại thành công",
|
||||
"Saving...": "Đang lưu...",
|
||||
"Modified": "Đã sửa",
|
||||
"Created": "Đã tạo",
|
||||
"Create": "Tạo",
|
||||
"create": "tạo",
|
||||
"Overview": "Sơ lược",
|
||||
"Details": "Chi tiết",
|
||||
"Add Filter": "Thêm bộ lọc",
|
||||
"Add Dashlet": "Thêm module",
|
||||
"Add": "Thêm",
|
||||
"Reset": "Reset",
|
||||
"Menu": "Menu",
|
||||
"More": "Thêm nữa",
|
||||
"Search": "Tìm kiếm",
|
||||
"Only My": "Chỉ",
|
||||
"Open": "Mở",
|
||||
"Admin": "Admin",
|
||||
"About": "Thông tin",
|
||||
"Refresh": "Tải lại",
|
||||
"Remove": "Xóa",
|
||||
"Options": "Tùy chọn",
|
||||
"Username": "Tên đăng nhập",
|
||||
"Password": "Mật khẩu",
|
||||
"Login": "Đăng nhập",
|
||||
"Log Out": "Đăng xuất",
|
||||
"Preferences": "Tùy chỉnh",
|
||||
"State": "Thành phố",
|
||||
"Street": "Đường",
|
||||
"Country": "Quốc gia",
|
||||
"City": "Quận - huyện",
|
||||
"PostalCode": "Mã bưu điện",
|
||||
"Followed": "Đã theo dõi",
|
||||
"Follow": "Theo dõi",
|
||||
"Clear Local Cache": "Clear Local Cache",
|
||||
"Actions": "Hoạt động",
|
||||
"Delete": "Xóa",
|
||||
"Update": "Cập nhật",
|
||||
"Save": "Lưu",
|
||||
"Edit": "Sửa",
|
||||
"Cancel": "Bỏ qua",
|
||||
"Unlink": "Xóa liên kết",
|
||||
"Mass Update": "Cập nhật",
|
||||
"Export": "Xuất",
|
||||
"No Data": "Không có dữ liệu",
|
||||
"All": "Tất cả",
|
||||
"Active": "Đang hoạt động",
|
||||
"Inactive": "Chưa hoạt động",
|
||||
"Write your comment here": "Viết lời nhắn tại đây",
|
||||
"Post": "Gửi",
|
||||
"Stream": "Luồng",
|
||||
"Show more": "Xem thêm",
|
||||
"Dashlet Options": "Tùy chọn module",
|
||||
"Full Form": "Đầy đủ",
|
||||
"Insert": "Chèn",
|
||||
"Person": "Cá nhân",
|
||||
"First Name": "Tên",
|
||||
"Last Name": "Họ",
|
||||
"Original": "Gốc",
|
||||
"You": "Bạn",
|
||||
"you": "bạn",
|
||||
"change": "thay đổi",
|
||||
"Primary": "Chính",
|
||||
"Save Filters": "Lưu bộ lọc",
|
||||
"Administration": "Administration",
|
||||
"Run Import": "Bắt đầu nhập",
|
||||
"Duplicate": "Trùng",
|
||||
"Notifications": "Thông báo"
|
||||
},
|
||||
"messages": {
|
||||
"notModified": "Bạn chưa sửa bản ghi",
|
||||
"duplicate": "Bản ghi được tạo bị trùng",
|
||||
"fieldIsRequired": "{field} là bắt buộc",
|
||||
"fieldShouldBeEmail": "Kiểm tra lại {field}",
|
||||
"fieldShouldBeFloat": "Kiểm tra lại {field}",
|
||||
"fieldShouldBeInt": "Kiểm tra lại {field}",
|
||||
"fieldShouldBeDate": "Kiểm tra lại {field}",
|
||||
"fieldShouldBeDatetime": "Kiểm tra lại {field}",
|
||||
"fieldShouldAfter": "{field} cần đặt sau {otherField}",
|
||||
"fieldShouldBefore": "{field} cần đặt trước {otherField}",
|
||||
"fieldShouldBeBetween": "{field} cần đặt giữa {min} và {max}",
|
||||
"fieldShouldBeLess": "{field} cần nhỏ hơn {value}",
|
||||
"fieldShouldBeGreater": "{field} cần lớn hơn {value}",
|
||||
"fieldBadPasswordConfirm": "{field} không hợp lệ"
|
||||
},
|
||||
"boolFilters": {
|
||||
"onlyMy": "Chỉ",
|
||||
"open": "Mở",
|
||||
"active": "Đang hoạt động"
|
||||
},
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"firstName": "Tên",
|
||||
"lastName": "Họ",
|
||||
"salutationName": "Chào đón",
|
||||
"assignedUser": "Phân công",
|
||||
"emailAddress": "Email",
|
||||
"assignedUserName": "Thành viên được phân công",
|
||||
"teams": "Nhóm",
|
||||
"createdAt": "Tạo lúc",
|
||||
"modifiedAt": "Sửa lúc",
|
||||
"createdBy": "Tạo bởi",
|
||||
"modifiedBy": "Sửa bởi",
|
||||
"title": "Tiêu đề",
|
||||
"dateFrom": "Từ ngày",
|
||||
"dateTo": "Tới ngày",
|
||||
"autorefreshInterval": "Tự động tải lại sau",
|
||||
"displayRecords": "Xem bản ghi"
|
||||
},
|
||||
"links": {
|
||||
"teams": "Nhóm",
|
||||
"users": "Người dùng"
|
||||
},
|
||||
"dashlets": {
|
||||
"Stream": "Luồng"
|
||||
},
|
||||
"streamMessages": {
|
||||
"create": "{user} tạo {entityType} {entity}",
|
||||
"createAssigned": "{user} tạo {entityType} {entity} phân công cho {assignee}",
|
||||
"assign": "{user} phân công {entityType} {entity} cho {assignee}",
|
||||
"post": "{user} đăng {entityType} {entity}",
|
||||
"attach": "{user} đính kèm ở {entityType} {entity}",
|
||||
"status": "{user} cập nhật {field} ở {entityType} {entity}",
|
||||
"update": "{user} cập nhật {entityType} {entity}",
|
||||
"createRelated": "{user} created {relatedEntityType} {relatedEntity} linked to {entityType} {entity}",
|
||||
"emailReceived": "{entity} đã được nhận bởi {entityType} {entity}",
|
||||
|
||||
"createThis": "{user} tạo {entityType}",
|
||||
"createAssignedThis": "{user} tạo {entityType} phân công cho {assignee}",
|
||||
"assignThis": "{user} phân công {entityType} cho {assignee}",
|
||||
"postThis": "{user} đã đăng",
|
||||
"attachThis": "{user} đã đính kèm",
|
||||
"statusThis": "{user} đã cập nhật {field}",
|
||||
"updateThis": "{user} cập nhật {entityType}",
|
||||
"createRelatedThis": "{user} created {relatedEntityType} {relatedEntity} linked to this {entityType}",
|
||||
"emailReceivedThis": "{entity} đã được nhận"
|
||||
},
|
||||
"lists": {
|
||||
"monthNames": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||
"monthNamesShort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
"dayNames": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||
"dayNamesShort": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
||||
"dayNamesMin": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
||||
},
|
||||
"options": {
|
||||
"salutationName": {
|
||||
"Mr.": "Ông.",
|
||||
"Mrs.": "Bà.",
|
||||
"Dr.": "Ông.",
|
||||
"Drs.": "Bà."
|
||||
},
|
||||
"language": {
|
||||
"af_ZA": "Afrikaans",
|
||||
"az_AZ": "Azerbaijani",
|
||||
"be_BY": "Belarusian",
|
||||
"bg_BG": "Bulgarian",
|
||||
"bn_IN": "Bengali",
|
||||
"bs_BA": "Bosnian",
|
||||
"ca_ES": "Catalan",
|
||||
"cs_CZ": "Czech",
|
||||
"cy_GB": "Welsh",
|
||||
"da_DK": "Danish",
|
||||
"de_DE": "German",
|
||||
"el_GR": "Greek",
|
||||
"en_GB":"English (UK)",
|
||||
"en_US":"English (US)",
|
||||
"es_ES":"Spanish (Spain)",
|
||||
"et_EE": "Estonian",
|
||||
"eu_ES": "Basque",
|
||||
"fa_IR": "Persian",
|
||||
"fi_FI": "Finnish",
|
||||
"fo_FO": "Faroese",
|
||||
"fr_CA":"French (Canada)",
|
||||
"fr_FR":"French (France)",
|
||||
"ga_IE": "Irish",
|
||||
"gl_ES": "Galician",
|
||||
"gn_PY": "Guarani",
|
||||
"he_IL": "Hebrew",
|
||||
"hi_IN": "Hindi",
|
||||
"hr_HR": "Croatian",
|
||||
"hu_HU": "Hungarian",
|
||||
"hy_AM": "Armenian",
|
||||
"id_ID": "Indonesian",
|
||||
"is_IS": "Icelandic",
|
||||
"it_IT": "Italian",
|
||||
"ja_JP": "Japanese",
|
||||
"ka_GE": "Georgian",
|
||||
"km_KH": "Khmer",
|
||||
"ko_KR": "Korean",
|
||||
"ku_TR": "Kurdish",
|
||||
"lt_LT": "Lithuanian",
|
||||
"lv_LV": "Latvian",
|
||||
"mk_MK": "Macedonian",
|
||||
"ml_IN": "Malayalam",
|
||||
"ms_MY": "Malay",
|
||||
"nb_NO": "Norwegian Bokmål",
|
||||
"nn_NO": "Norwegian Nynorsk",
|
||||
"ne_NP": "Nepali",
|
||||
"nl_NL": "Dutch",
|
||||
"pa_IN": "Punjabi",
|
||||
"pl_PL": "Polish",
|
||||
"ps_AF": "Pashto",
|
||||
"pt_BR":"Portuguese (Brazil)",
|
||||
"pt_PT":"Portuguese (Portugal)",
|
||||
"ro_RO": "Romanian",
|
||||
"ru_RU": "Russian",
|
||||
"sk_SK": "Slovak",
|
||||
"sl_SI": "Slovene",
|
||||
"sq_AL": "Albanian",
|
||||
"sr_RS": "Serbian",
|
||||
"sv_SE": "Swedish",
|
||||
"sw_KE": "Swahili",
|
||||
"ta_IN": "Tamil",
|
||||
"te_IN": "Telugu",
|
||||
"th_TH": "Thai",
|
||||
"tl_PH": "Tagalog",
|
||||
"tr_TR": "Turkish",
|
||||
"uk_UA": "Ukrainian",
|
||||
"ur_PK": "Urdu",
|
||||
"vi_VN": "Vietnamese",
|
||||
"zh_CN":"Simplified Chinese (China)",
|
||||
"zh_HK":"Traditional Chinese (Hong Kong)",
|
||||
"zh_TW":"Traditional Chinese (Taiwan)"
|
||||
},
|
||||
"dateSearchRanges": {
|
||||
"on": "On",
|
||||
"notOn": "Not On",
|
||||
"after": "After",
|
||||
"before": "Before",
|
||||
"between": "Between",
|
||||
"today": "Today",
|
||||
"past": "Past",
|
||||
"future": "Future"
|
||||
},
|
||||
"intSearchRanges": {
|
||||
"equals": "Equals",
|
||||
"notEquals": "Not Equals",
|
||||
"greaterThan": "Greater Than",
|
||||
"lessThan": "Less Than",
|
||||
"greaterThanOrEquals": "Greater Than or Equals",
|
||||
"lessThanOrEquals": "Less Than or Equals",
|
||||
"between": "Between"
|
||||
},
|
||||
"autorefreshInterval": {
|
||||
"0": "Trống",
|
||||
"0.5": "30 seconds",
|
||||
"1": "1 minute",
|
||||
"2": "2 minutes",
|
||||
"5": "5 minutes",
|
||||
"10": "10 minutes"
|
||||
},
|
||||
"phoneNumber": {
|
||||
"Mobile": "Mobile",
|
||||
"Office": "Office",
|
||||
"Fax": "Fax",
|
||||
"Home": "Home",
|
||||
"Other": "Khác"
|
||||
}
|
||||
},
|
||||
"sets": {
|
||||
"summernote": {
|
||||
"NOTICE": "You can find translation here: https://github.com/HackerWins/summernote/tree/master/lang",
|
||||
"font":{
|
||||
"bold": "Đậm",
|
||||
"italic": "Nghiêng",
|
||||
"underline": "Gạch chân",
|
||||
"strike": "Gạch giữa",
|
||||
"clear": "Xóa định dạng",
|
||||
"height": "Kích thước dòng",
|
||||
"name": "Font chữ",
|
||||
"size": "Kích thước"
|
||||
},
|
||||
"image":{
|
||||
"image": "Ảnh",
|
||||
"insert": "Chèn ảnh",
|
||||
"resizeFull": "Ảnh đầy đủ",
|
||||
"resizeHalf": "Giảm nửa kích thước",
|
||||
"resizeQuarter": "Giảm 1/4 kích thước",
|
||||
"floatLeft": "Căn trái",
|
||||
"floatRight": "Căn phải",
|
||||
"floatNone": "Không căn lề",
|
||||
"dragImageHere": "Thả ảnh vào đây",
|
||||
"selectFromFiles": "Chọn từ thư mục",
|
||||
"url": "Đường dẫn ảnh",
|
||||
"remove": "Xóa ảnh"
|
||||
},
|
||||
"link":{
|
||||
"link": "Đường dẫn",
|
||||
"insert": "Chèn đường dẫn",
|
||||
"unlink": "Xóa liên kết",
|
||||
"edit": "Sửa",
|
||||
"textToDisplay": "Chữ hiển thị",
|
||||
"url":"To what URL should this link go?",
|
||||
"openInNewWindow": "Mở trong cửa sổ mới"
|
||||
},
|
||||
"video":{
|
||||
"video": "Video",
|
||||
"videoLink": "Đường dẫn video",
|
||||
"insert": "Chèn Video",
|
||||
"url":"Video URL?",
|
||||
"providers":"(YouTube, Vimeo, Vine, Instagram, or DailyMotion)"
|
||||
},
|
||||
"table":{
|
||||
"table": "Bảng"
|
||||
},
|
||||
"hr":{
|
||||
"insert": "Thêm dòng ngang"
|
||||
},
|
||||
"style":{
|
||||
"style": "Kiểu",
|
||||
"normal": "Bình thường",
|
||||
"blockquote": "Trích dẫn",
|
||||
"pre": "Code",
|
||||
"h1": "Tiêu đề 1",
|
||||
"h2": "Tiêu đề 2",
|
||||
"h3": "Tiêu đềTiêu đề 3",
|
||||
"h4": "Tiêu đề 4",
|
||||
"h5": "Tiêu đề 5",
|
||||
"h6": "Tiêu đề 6"
|
||||
},
|
||||
"lists":{
|
||||
"unordered": "Liệt kê",
|
||||
"ordered": "Danh sách"
|
||||
},
|
||||
"options":{
|
||||
"help": "Trợ giúp",
|
||||
"fullscreen": "Đầy màn hình",
|
||||
"codeview": "Hiển thị dạng code"
|
||||
},
|
||||
"paragraph":{
|
||||
"paragraph": "Đoạn văn bản",
|
||||
"outdent": "Bỏ lùi đầu dòng",
|
||||
"indent": "Lùi đầu dòng",
|
||||
"left": "Căn lề trái",
|
||||
"center": "Căn lề giữa",
|
||||
"right": "Căn lề phải",
|
||||
"justify": "Căn lề 2 bên"
|
||||
},
|
||||
"color":{
|
||||
"recent": "Màu đã dùng",
|
||||
"more": "Thêm màu",
|
||||
"background": "Màu nền",
|
||||
"foreground": "Màu chữ",
|
||||
"transparent": "Trong suốt",
|
||||
"setTransparent": "Chỉnh độ trong suốt",
|
||||
"reset": "Reset",
|
||||
"resetToDefault": "Đặt lại mặc định"
|
||||
},
|
||||
"shortcut":{
|
||||
"shortcuts": "Phím tắt",
|
||||
"close": "Đóng",
|
||||
"textFormatting": "Định dạng chữ",
|
||||
"action": "Hành động",
|
||||
"paragraphFormatting": "Định dạng đoạn văn bản",
|
||||
"documentStyle": "Kiểu văn bản"
|
||||
},
|
||||
"history":{
|
||||
"undo": "Quay lui",
|
||||
"redo": "Tiến lên"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
6
application/Espo/Resources/i18n/vi_VN/Note.json
Normal file
6
application/Espo/Resources/i18n/vi_VN/Note.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"fields": {
|
||||
"post": "Gửi",
|
||||
"attachments": "Đính kèm"
|
||||
}
|
||||
}
|
||||
32
application/Espo/Resources/i18n/vi_VN/Preferences.json
Normal file
32
application/Espo/Resources/i18n/vi_VN/Preferences.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"fields": {
|
||||
"dateFormat": "Định dạng ngày",
|
||||
"timeFormat": "Định dạng thời gian",
|
||||
"timeZone": "Múi giờ",
|
||||
"weekStart": "Ngày đầu tiên của tuần",
|
||||
"thousandSeparator": "Dấu phân cách hàng nghìn",
|
||||
"decimalMark": "Dấu phân cách thập phân",
|
||||
"defaultCurrency": "Tiền tệ mặc định",
|
||||
"currencyList": "Danh sách tiền tệ",
|
||||
"language": "Ngôn ngữ",
|
||||
|
||||
"smtpServer": "Máy chủ",
|
||||
"smtpPort": "Cổng",
|
||||
"smtpAuth": "Truy cập",
|
||||
"smtpSecurity": "Bảo mật",
|
||||
"smtpUsername": "Tên đăng nhập",
|
||||
"emailAddress": "Email",
|
||||
"smtpPassword": "Mật khẩu",
|
||||
"smtpEmailAddress": "Địa chỉ email",
|
||||
|
||||
"exportDelimiter": "Xuất dấu phân cách"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
"options": {
|
||||
"weekStart": {
|
||||
"0": "Chủ nhật",
|
||||
"1": "Thứ 2"
|
||||
}
|
||||
}
|
||||
}
|
||||
32
application/Espo/Resources/i18n/vi_VN/Role.json
Normal file
32
application/Espo/Resources/i18n/vi_VN/Role.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"roles": "Vai trò"
|
||||
},
|
||||
"links": {
|
||||
"users": "Người dùng",
|
||||
"teams": "Nhóm"
|
||||
},
|
||||
"labels": {
|
||||
"Access": "Truy cập",
|
||||
"Create Role": "Tạo vai trò"
|
||||
},
|
||||
"options": {
|
||||
"accessList": {
|
||||
"not-set": "chưa đặt",
|
||||
"enabled": "kích hoạt",
|
||||
"disabled": "tắt"
|
||||
},
|
||||
"levelList": {
|
||||
"all": "tất cả",
|
||||
"team": "nhóm",
|
||||
"own": "sở hữu",
|
||||
"no": "không"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"read": "Đọc",
|
||||
"edit": "Sửa",
|
||||
"delete": "Xóa"
|
||||
}
|
||||
}
|
||||
30
application/Espo/Resources/i18n/vi_VN/ScheduledJob.json
Normal file
30
application/Espo/Resources/i18n/vi_VN/ScheduledJob.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"status": "Trạng thái",
|
||||
"job": "Công việc",
|
||||
"scheduling": "Scheduling (crontab notation)"
|
||||
},
|
||||
"links": {
|
||||
"log": "Nhật ký"
|
||||
},
|
||||
"labels": {
|
||||
"Create ScheduledJob": "Lên lịch công việc"
|
||||
},
|
||||
"options": {
|
||||
"job": {
|
||||
"CheckInboundEmails": "Kiểm tra hộp thư đến",
|
||||
"Cleanup": "Dọn dẹp"
|
||||
},
|
||||
"cronSetup": {
|
||||
"linux": "Note: Add this line to the crontab file to run Espo Scheduled Jobs:",
|
||||
"mac": "Note: Add this line to the crontab file to run Espo Scheduled Jobs:",
|
||||
"windows": "Note: Create a batch file with the following commands to run Espo Scheduled Jobs using Windows Scheduled Tasks:",
|
||||
"default": "Note: Add this command to Cron Job (Scheduled Task):"
|
||||
},
|
||||
"status": {
|
||||
"Active": "Đang hoạt động",
|
||||
"Inactive": "Chưa hoạt động"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"fields": {
|
||||
"status": "Trạng thái",
|
||||
"executionTime": "Thời gian hoạt động"
|
||||
}
|
||||
}
|
||||
64
application/Espo/Resources/i18n/vi_VN/Settings.json
Normal file
64
application/Espo/Resources/i18n/vi_VN/Settings.json
Normal file
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"fields": {
|
||||
"useCache": "Dùng Cache",
|
||||
"dateFormat": "Định dạng ngày",
|
||||
"timeFormat": "Định dạng thời gian",
|
||||
"timeZone": "Múi giờ",
|
||||
"weekStart": "Ngày đầu tiên của tuần",
|
||||
"thousandSeparator": "Dấu phân cách hàng nghìn",
|
||||
"decimalMark": "Dấu phân cách thập phân",
|
||||
"defaultCurrency": "Tiền tệ mặc định",
|
||||
"currencyList": "Danh sách tiền tệ",
|
||||
"language": "Ngôn ngữ",
|
||||
|
||||
"companyLogo": "Logo công ty",
|
||||
|
||||
"smtpServer": "Máy chủ",
|
||||
"smtpPort": "Cổng",
|
||||
"smtpAuth": "Truy cập",
|
||||
"smtpSecurity": "Bảo mật",
|
||||
"smtpUsername": "Tên đăng nhập",
|
||||
"emailAddress": "Email",
|
||||
"smtpPassword": "Mật khẩu",
|
||||
"outboundEmailFromName": "tên người gửi",
|
||||
"outboundEmailFromAddress": "Địa chỉ gửi",
|
||||
"outboundEmailIsShared": "Được chia sẻ",
|
||||
|
||||
"recordsPerPage": "Số bản ghi trên mỗi trang",
|
||||
"recordsPerPageSmall": "Records Per Page (Small)",
|
||||
"tabList": "Danh sách Tab",
|
||||
"quickCreateList": "Tạo nhanh danh sách",
|
||||
|
||||
"exportDelimiter": "Xuất dấu phân cách",
|
||||
|
||||
"authenticationMethod": "Phương thức xác thực",
|
||||
"ldapHost": "Máy chủ",
|
||||
"ldapPort": "Cổng",
|
||||
"ldapAuth": "Truy cập",
|
||||
"ldapUsername": "Tên đăng nhập",
|
||||
"ldapPassword": "Mật khẩu",
|
||||
"ldapBindRequiresDn": "Yêu cầu Dn",
|
||||
"ldapBaseDn": "Dn gốc",
|
||||
"ldapAccountCanonicalForm": "Account Canonical Form",
|
||||
"ldapAccountDomainName": "Tên miền tài khoản",
|
||||
"ldapTryUsernameSplit": "Thử lại",
|
||||
"ldapCreateEspoUser": "Tạo người dùng",
|
||||
"ldapSecurity": "Bảo mật",
|
||||
"ldapUserLoginFilter": "Bộ lọc đăng nhập",
|
||||
"ldapAccountDomainNameShort": "Tên miền tài khoản",
|
||||
"ldapOptReferrals": "Được giới thiệu",
|
||||
"disableExport": "Disable Export (only admin is allowed)"
|
||||
},
|
||||
"options": {
|
||||
"weekStart": {
|
||||
"0": "Chủ nhật",
|
||||
"1": "Thứ 2"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"System": "Hệ thống",
|
||||
"Locale": "Bản địa hóa",
|
||||
"SMTP": "SMTP",
|
||||
"Configuration": "Tùy chỉnh"
|
||||
}
|
||||
}
|
||||
12
application/Espo/Resources/i18n/vi_VN/Team.json
Normal file
12
application/Espo/Resources/i18n/vi_VN/Team.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"roles": "Vai trò"
|
||||
},
|
||||
"links": {
|
||||
"users": "Người dùng"
|
||||
},
|
||||
"labels": {
|
||||
"Create Team": "Tạo nhóm"
|
||||
}
|
||||
}
|
||||
32
application/Espo/Resources/i18n/vi_VN/User.json
Normal file
32
application/Espo/Resources/i18n/vi_VN/User.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"fields": {
|
||||
"name": "Tên",
|
||||
"userName": "Tên người dùng",
|
||||
"title": "Tiêu đề",
|
||||
"isAdmin": "Tài khoản Admin",
|
||||
"defaultTeam": "Nhóm mặc định",
|
||||
"emailAddress": "Email",
|
||||
"phoneNumber": "Điện thoại",
|
||||
"roles": "Vai trò",
|
||||
"password": "Mật khẩu",
|
||||
"passwordConfirm": "Xác thực mật khẩu",
|
||||
"newPassword": "Mật khẩu mới"
|
||||
},
|
||||
"links": {
|
||||
"teams": "Nhóm",
|
||||
"roles": "Vai trò"
|
||||
},
|
||||
"labels": {
|
||||
"Create User": "Tạo người dùng",
|
||||
"Generate": "Tạo",
|
||||
"Access": "Truy cập",
|
||||
"Preferences": "Tùy chỉnh",
|
||||
"Change Password": "Đổi mật khẩu"
|
||||
},
|
||||
"messages": {
|
||||
"passwordWillBeSent": "Mật khẩu sẽ được gửi tới email tài khoản",
|
||||
"accountInfoEmailSubject": "Thông tin tài khoản",
|
||||
"accountInfoEmailBody": "Your account information:\n\nUsername: {userName}\nPassword: {password}\n\n{siteUrl}",
|
||||
"passwordChanged": "Mật khẩu đã được đổi"
|
||||
}
|
||||
}
|
||||
@@ -35,5 +35,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"controller": "Controllers.Record",
|
||||
"controller": "Controllers.Record",
|
||||
"recordViews":{
|
||||
"edit": "EmailTemplate.Record.Edit",
|
||||
"detail": "EmailTemplate.Record.Detail"
|
||||
}
|
||||
},
|
||||
"boolFilters": ["onlyMy"]
|
||||
}
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "dateSent",
|
||||
"asc": false,
|
||||
"boolFilters": ["onlyMy"]
|
||||
"asc": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,5 @@
|
||||
},
|
||||
"mergable":false,
|
||||
"notCreatable": false,
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
"hidden": true
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": false,
|
||||
"notCreatable": false,
|
||||
"fieldDefs":{
|
||||
"type":"jsonArray"
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
"params":[
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"type":"int",
|
||||
"autoincrement":true,
|
||||
|
||||
@@ -5,10 +5,7 @@
|
||||
"type":"bool"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": false,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"notStorable":true
|
||||
|
||||
@@ -5,8 +5,5 @@
|
||||
"type":"bool"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
@@ -24,10 +24,7 @@
|
||||
"disabled": true
|
||||
}
|
||||
},
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"type":"float"
|
||||
}
|
||||
|
||||
@@ -18,10 +18,7 @@
|
||||
"type":"varchar"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"notNull":false
|
||||
}
|
||||
|
||||
@@ -18,10 +18,7 @@
|
||||
"type":"varchar"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"notNull":false
|
||||
}
|
||||
|
||||
@@ -10,10 +10,7 @@
|
||||
"data"
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"notStorable":true
|
||||
}
|
||||
|
||||
@@ -14,10 +14,7 @@
|
||||
"type":"varchar"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"type":"varchar"
|
||||
}
|
||||
|
||||
@@ -9,10 +9,7 @@
|
||||
"type":"float"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"type":"float"
|
||||
|
||||
@@ -9,10 +9,7 @@
|
||||
"type":"int"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"type":"int"
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
"fieldDefs":{
|
||||
"skip":true
|
||||
},
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": false,
|
||||
"linkDefs": {
|
||||
"type": "belongsTo",
|
||||
"entity": "Attachment"
|
||||
|
||||
@@ -18,10 +18,7 @@
|
||||
"type":"float"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"notNull":false
|
||||
}
|
||||
|
||||
@@ -9,10 +9,7 @@
|
||||
"type":"varchar"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": false,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"skip":true
|
||||
|
||||
@@ -21,10 +21,7 @@
|
||||
"fieldDefs":{
|
||||
"skip":true
|
||||
},
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
},
|
||||
"filter": false,
|
||||
"linkDefs": {
|
||||
"type": "belongsTo",
|
||||
"entity": "Attachment"
|
||||
|
||||
@@ -18,8 +18,5 @@
|
||||
"type":"int"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
@@ -12,10 +12,7 @@
|
||||
"notActualFields":[
|
||||
"name"
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"skip":true
|
||||
|
||||
@@ -13,8 +13,5 @@
|
||||
"names"
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
@@ -13,10 +13,7 @@
|
||||
"notActualFields":[
|
||||
"name"
|
||||
],
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"notCreatable": true,
|
||||
"fieldDefs":{
|
||||
"notStorable":true
|
||||
|
||||
@@ -15,8 +15,5 @@
|
||||
}
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
}
|
||||
"filter": false
|
||||
}
|
||||
|
||||
@@ -7,8 +7,5 @@
|
||||
}
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":false,
|
||||
"advanced":false
|
||||
}
|
||||
"filter": false
|
||||
}
|
||||
|
||||
@@ -18,10 +18,7 @@
|
||||
"naming":"prefix",
|
||||
"mergable":false,
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"default":""
|
||||
}
|
||||
|
||||
@@ -20,10 +20,7 @@
|
||||
"data"
|
||||
],
|
||||
"notCreatable": true,
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"notStorable":true
|
||||
}
|
||||
|
||||
@@ -14,8 +14,5 @@
|
||||
"type":"int"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
@@ -14,10 +14,7 @@
|
||||
"type":"int"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
},
|
||||
"filter": true,
|
||||
"fieldDefs":{
|
||||
"type":"varchar"
|
||||
}
|
||||
|
||||
@@ -14,8 +14,5 @@
|
||||
"type":"int"
|
||||
}
|
||||
],
|
||||
"search":{
|
||||
"basic":true,
|
||||
"advanced":true
|
||||
}
|
||||
"filter": true
|
||||
}
|
||||
|
||||
112
diff.js
Normal file
112
diff.js
Normal file
@@ -0,0 +1,112 @@
|
||||
var versionFrom = process.argv[2];
|
||||
|
||||
if (process.argv.length < 3) {
|
||||
throw new Error("No 'version from' passed");
|
||||
}
|
||||
|
||||
var acceptedVersionName = process.argv[3] || versionFrom;
|
||||
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var sys = require('sys')
|
||||
|
||||
var version = (require('./package.json') || {}).version;
|
||||
|
||||
var currentPath = path.dirname(fs.realpathSync(__filename));
|
||||
|
||||
var buildRelPath = 'build/EspoCRM-' + version;
|
||||
var buildPath = currentPath + '/' + buildRelPath;
|
||||
var diffFilePath = currentPath + '/build/diff';
|
||||
|
||||
var upgradePath = currentPath + '/build/EspoCRM-upgrade-' + acceptedVersionName + '-to-' + version;
|
||||
|
||||
|
||||
var exec = require('child_process').exec;
|
||||
|
||||
function execute(command, callback) {
|
||||
exec(command, function(error, stdout, stderr) {
|
||||
callback(stdout);
|
||||
});
|
||||
};
|
||||
|
||||
execute('git diff --name-only ' + versionFrom, function (stdout) {
|
||||
if (!fs.existsSync(upgradePath)) {
|
||||
fs.mkdirSync(upgradePath);
|
||||
}
|
||||
if (!fs.existsSync(upgradePath + '/files')) {
|
||||
fs.mkdirSync(upgradePath + '/files');
|
||||
}
|
||||
process.chdir(buildPath);
|
||||
|
||||
var fileList = [];
|
||||
|
||||
(stdout || '').split('\n').forEach(function (file) {
|
||||
if (file == '') {
|
||||
return;
|
||||
}
|
||||
fileList.push(file.replace('frontend/', ''));
|
||||
});
|
||||
|
||||
fileList.push('client/espo.min.js');
|
||||
|
||||
fileList.push('client/css/espo.min.css');
|
||||
|
||||
fs.writeFileSync(diffFilePath, fileList.join('\n'));
|
||||
|
||||
execute('git diff --name-only --diff-filter=D ' + versionFrom, function (stdout) {
|
||||
var deletedFileList = [];
|
||||
|
||||
(stdout || '').split('\n').forEach(function (file) {
|
||||
if (file == '') {
|
||||
return;
|
||||
}
|
||||
deletedFileList.push(file.replace('frontend/', ''));
|
||||
});
|
||||
|
||||
|
||||
execute('xargs -a ' + diffFilePath + ' cp --parents -t ' + upgradePath + '/files ' , function (stdout) {
|
||||
|
||||
});
|
||||
|
||||
var d = new Date();
|
||||
|
||||
var dateN = ((d.getMonth() + 1).toString());
|
||||
dateN = dateN.length == 1 ? '0' + dateN : dateN;
|
||||
|
||||
var date = d.getFullYear().toString() + '-' + dateN + '-' + (d.getDate()).toString();
|
||||
|
||||
execute('git tag', function (stdout) {
|
||||
var versionList = [];
|
||||
var occured = false;
|
||||
tagList = stdout.split('\n').forEach(function (tag) {
|
||||
if (tag == versionFrom) {
|
||||
occured = true;
|
||||
}
|
||||
if (!tag || tag == version) {
|
||||
return;
|
||||
}
|
||||
if (occured) {
|
||||
versionList.push(tag);
|
||||
}
|
||||
});
|
||||
|
||||
var manifest = {
|
||||
"name": "EspoCRM Upgrade "+acceptedVersionName+" to "+version,
|
||||
"version": version,
|
||||
"acceptableVersions": versionList,
|
||||
"releaseDate": date,
|
||||
"author": "EspoCRM",
|
||||
"description": "",
|
||||
"delete": deletedFileList
|
||||
}
|
||||
|
||||
fs.writeFileSync(upgradePath + '/manifest.json', JSON.stringify(manifest, null, ' '));
|
||||
|
||||
});
|
||||
|
||||
fs.unlinkSync(diffFilePath)
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
2
frontend/client/css/bootstrap.css
vendored
2
frontend/client/css/bootstrap.css
vendored
File diff suppressed because one or more lines are too long
@@ -31,7 +31,12 @@
|
||||
{{#unless paginationEnabled}}
|
||||
{{#if showMoreEnabled}}
|
||||
<div class="show-more{{#unless showMoreActive}} hide{{/unless}}">
|
||||
<a type="button" href="javascript:" class="btn btn-default btn-block" data-action="showMore">{{translate 'Show more'}}</a>
|
||||
<a type="button" href="javascript:" class="btn btn-default btn-block" data-action="showMore">
|
||||
{{#if showCount}}
|
||||
<div class="pull-right text-muted more-count">{{moreCount}}</div>
|
||||
{{/if}}
|
||||
<span>{{translate 'Show more'}}</span>
|
||||
</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
|
||||
@@ -56,7 +56,12 @@
|
||||
{{#unless paginationEnabled}}
|
||||
{{#if showMoreEnabled}}
|
||||
<div class="show-more{{#unless showMoreActive}} hide{{/unless}}">
|
||||
<a type="button" href="javascript:" class="btn btn-default btn-block" data-action="showMore">{{translate 'Show more'}}</a>
|
||||
<a type="button" href="javascript:" class="btn btn-default btn-block" data-action="showMore">
|
||||
{{#if showCount}}
|
||||
<div class="pull-right text-muted more-count">{{moreCount}}</div>
|
||||
{{/if}}
|
||||
<span>{{translate 'Show more'}}</span>
|
||||
</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-left basic-filter-menu">
|
||||
<ul class="dropdown-menu pull-left filter-menu">
|
||||
{{#if presetFilters.length}}
|
||||
<li><a class="preset" tabindex="-1" href="javascript:" data-name="" data-action="selectPreset">{{translate 'All'}}</a></li>
|
||||
{{#each ../presetFilters}}
|
||||
@@ -22,7 +22,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
<input type="text" class="form-control filter" name="filter" value="{{filter}}">
|
||||
<input type="text" class="form-control text-filter" name="textFilter" value="{{textFilter}}">
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-primary search btn-icon" data-action="search">
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
<div class="container content">
|
||||
<div id="main">{{{main}}}</div>
|
||||
</div>
|
||||
<footer class="container">{{{footer}}}</footer>
|
||||
<footer>{{{footer}}}</footer>
|
||||
|
||||
@@ -30,20 +30,6 @@ _.extend(Espo.FieldManager.prototype, {
|
||||
|
||||
metadata: null,
|
||||
|
||||
getSearchParams: function (fieldType) {
|
||||
if (fieldType in this.defs) {
|
||||
var res = this.defs[fieldType].search || {};
|
||||
if (!('basic' in res)) {
|
||||
res.basic = true;
|
||||
}
|
||||
if (!('advanced' in res)) {
|
||||
res.advanced = true;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
getParams: function (fieldType) {
|
||||
if (fieldType in this.defs) {
|
||||
return this.defs[fieldType].params || [];
|
||||
@@ -51,6 +37,17 @@ _.extend(Espo.FieldManager.prototype, {
|
||||
return [];
|
||||
},
|
||||
|
||||
checkFilter: function (fieldType) {
|
||||
if (fieldType in this.defs) {
|
||||
if ('filter' in this.defs[fieldType]) {
|
||||
return this.defs[fieldType].filter;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
isMergable: function (fieldType) {
|
||||
if (fieldType in this.defs) {
|
||||
if ('mergable' in this.defs[fieldType]) {
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
this.dateTime = dateTime;
|
||||
|
||||
this.data = this.default = defaultData || {
|
||||
filter: '',
|
||||
textFilter: '',
|
||||
bool: {},
|
||||
basic: {name: true},
|
||||
advanced: {},
|
||||
@@ -39,25 +39,14 @@
|
||||
|
||||
data: null,
|
||||
|
||||
getWhere: function () {
|
||||
getWhere: function () {
|
||||
var where = [];
|
||||
|
||||
var where = [];
|
||||
|
||||
if (this.data.filter != '' && this.data.basic) {
|
||||
var o = {
|
||||
type: 'or',
|
||||
value: [],
|
||||
};
|
||||
for (var field in this.data.basic) {
|
||||
if (this.data.basic[field]) {
|
||||
o.value.push({
|
||||
field: field,
|
||||
type: 'like',
|
||||
value: this.data.filter + '%'
|
||||
});
|
||||
}
|
||||
};
|
||||
where.push(o);
|
||||
if (this.data.textFilter && this.data.textFilter != '') {
|
||||
where.push({
|
||||
type: 'textFilter',
|
||||
value: this.data.textFilter
|
||||
});
|
||||
}
|
||||
|
||||
if (this.data.bool) {
|
||||
@@ -70,7 +59,9 @@
|
||||
o.value.push(name);
|
||||
}
|
||||
}
|
||||
where.push(o);
|
||||
if (o.value.length) {
|
||||
where.push(o);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.data.advanced) {
|
||||
|
||||
@@ -84,8 +84,7 @@ Espo.define('Views.Admin.Layouts.Filters', 'Views.Admin.Layouts.Rows', function
|
||||
},
|
||||
|
||||
checkFieldType: function (type) {
|
||||
var params = this.getFieldManager().getSearchParams(type) || {};
|
||||
return params.advanced;
|
||||
return this.getFieldManager().checkFilter(type);
|
||||
},
|
||||
|
||||
validate: function () {
|
||||
|
||||
@@ -34,6 +34,19 @@ Espo.define('Views.Fields.Text', 'Views.Fields.Base', function (Dep) {
|
||||
setup: function () {
|
||||
this.params.rows = this.params.rows || 4;
|
||||
},
|
||||
|
||||
fetchSearch: function () {
|
||||
var value = this.$element.val();
|
||||
if (value) {
|
||||
var data = {
|
||||
type: 'like',
|
||||
value: '%' + value + '%',
|
||||
valueText: value
|
||||
};
|
||||
return data;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -39,6 +39,7 @@ Espo.define('Views.Notifications.Panel', 'View', function (Dep) {
|
||||
this.createView('list', 'Record.ListExpanded', {
|
||||
el: this.options.el + ' .list-container',
|
||||
collection: this.collection,
|
||||
showCount: false,
|
||||
listLayout: {
|
||||
rows: [
|
||||
[
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user