diff --git a/inc/class-wooviet-admin-page.php b/inc/class-wooviet-admin-page.php index b007427..d572d55 100644 --- a/inc/class-wooviet-admin-page.php +++ b/inc/class-wooviet-admin-page.php @@ -98,7 +98,18 @@ class WooViet_Admin_Page { - + +
+ + + + + > + + + diff --git a/inc/class-wooviet-cities.php b/inc/class-wooviet-cities.php new file mode 100644 index 0000000..1bff981 --- /dev/null +++ b/inc/class-wooviet-cities.php @@ -0,0 +1,887 @@ + array( + 'Huyện An Phú', + 'Huyện Châu Phú', + 'Huyện Châu Thành', + 'Huyện Chợ Mới', + 'Huyện Phú Tân', + 'Huyện Thoại Sơn', + 'Huyện Tịnh Biên', + 'Huyện Tri Tôn', + 'Thành phố Châu Đốc', + 'Thành phố Long Xuyên', + 'Thị xã Tân Châu' + ), + 'BA-RIA-VUNG-TAU' => array( + 'Huyện Châu Đức', + 'Huyện Côn Đảo', + 'Huyện Đất Đỏ', + 'Huyện Long Điền', + 'Huyện Tân Thành', + 'Huyện Xuyên Mộc', + 'Thành phố Bà Rịa', + 'Thành phố Vũng Tàu' + ), + 'BAC-LIEU' => array( + 'Huyện Đông Hải', + 'Huyện Hoà Bình', + 'Huyện Hồng Dân', + 'Huyện Phước Long', + 'Huyện Vĩnh Lợi', + 'Thành phố Bạc Liêu', + 'Thị xã Giá Rai' + ), + 'BAC-KAN' => array( + 'Huyện Ba Bể', + 'Huyện Bạch Thông', + 'Huyện Chợ Đồn', + 'Huyện Chợ Mới', + 'Huyện Na Rì', + 'Huyện Ngân Sơn', + 'Huyện Pác Nặm', + 'Thành Phố Bắc Kạn', + ), + 'BAC-GIANG' => array( + 'Huyện Hiệp Hòa', + 'Huyện Lạng Giang', + 'Huyện Lục Nam', + 'Huyện Lục Ngạn', + 'Huyện Sơn Động', + 'Huyện Tân Yên', + 'Huyện Việt Yên', + 'Huyện Yên Dũng', + 'Huyện Yên Thế', + 'Thành phố Bắc Giang' + ), + 'BAC-NINH' => array( + 'Huyện Gia Bình', + 'Huyện Lương Tài', + 'Huyện Quế Võ', + 'Huyện Thuận Thành', + 'Huyện Tiên Du', + 'Huyện Yên Phong', + 'Thành phố Bắc Ninh', + 'Thị xã Từ Sơn' + ), + 'BEN-TRE' => array( + 'Huyện Ba Tri', + 'Huyện Bình Đại', + 'Huyện Châu Thành', + 'Huyện Chợ Lách', + 'Huyện Giồng Trôm', + 'Huyện Mỏ Cày Bắc', + 'Huyện Mỏ Cày Nam', + 'Huyện Thạnh Phú', + 'Thành phố Bến Tre' + ), + 'BINH-DUONG' => array( + 'Huyện Bắc Tân Uyên', + 'Huyện Bàu Bàng', + 'Huyện Dầu Tiếng', + 'Huyện Phú Giáo', + 'Thành phố Thủ Dầu Một', + 'Thị xã Bến Cát', + 'Thị xã Dĩ An', + 'Thị xã Tân Uyên', + 'Thị xã Thuận An' + ), + 'BINH-DINH' => array( + 'Huyện An Lão', + 'Huyện Hoài Ân', + 'Huyện Hoài Nhơn', + 'Huyện Phù Cát', + 'Huyện Phù Mỹ', + 'Huyện Tây Sơn', + 'Huyện Tuy Phước', + 'Huyện Vân Canh', + 'Huyện Vĩnh Thạnh', + 'Thành phố Qui Nhơn', + 'Thị xã An Nhơn' + ), + 'BINH-PHUOC' => array( + 'Huyện Bù Đăng', + 'Huyện Bù Đốp', + 'Huyện Bù Gia Mập', + 'Huyện Chơn Thành', + 'Huyện Đồng Phú', + 'Huyện Hớn Quản', + 'Huyện Lộc Ninh', + 'Huyện Phú Riềng', + 'Thị xã Bình Long', + 'Thị xã Đồng Xoài', + 'Thị xã Phước Long' + ), + 'BINH-THUAN' => array( + 'Huyện Bắc Bình', + 'Huyện Đức Linh', + 'Huyện Hàm Tân', + 'Huyện Hàm Thuận Bắc', + 'Huyện Hàm Thuận Nam', + 'Huyện Phú Quí', + 'Huyện Tánh Linh', + 'Huyện Tuy Phong', + 'Thành phố Phan Thiết', + 'Thị xã La Gi' + ), + 'CA-MAU' => array( + 'Huyện Cái Nước', + 'Huyện Đầm Dơi', + 'Huyện Năm Căn', + 'Huyện Ngọc Hiển', + 'Huyện Phú Tân', + 'Huyện Thới Bình', + 'Huyện Trần Văn Thời', + 'Huyện U Minh', + 'Thành phố Cà Mau' + ), + 'CAO-BANG' => array( + 'Huyện Bảo Lạc', + 'Huyện Bảo Lâm', + 'Huyện Hạ Lang', + 'Huyện Hà Quảng', + 'Huyện Hoà An', + 'Huyện Nguyên Bình', + 'Huyện Phục Hoà', + 'Huyện Quảng Uyên', + 'Huyện Thạch An', + 'Huyện Thông Nông', + 'Huyện Trà Lĩnh', + 'Huyện Trùng Khánh', + 'Thành phố Cao Bằng' + ), + 'CAN-THO' => array( + 'Huyện Cờ Đỏ', + 'Huyện Phong Điền', + 'Huyện Thới Lai', + 'Huyện Vĩnh Thạnh', + 'Quận Bình Thuỷ', + 'Quận Cái Răng', + 'Quận Ninh Kiều', + 'Quận Ô Môn', + 'Quận Thốt Nốt', + ), + 'DA-NANG' => array( + 'Huyện Hòa Vang', + 'Huyện Hoàng Sa', + 'Quận Cẩm Lệ', + 'Quận Hải Châu', + 'Quận Liên Chiểu', + 'Quận Ngũ Hành Sơn', + 'Quận Sơn Trà', + 'Quận Thanh Khê', + ), + 'DAK-LAK' => array( + 'Huyện Buôn Đôn', + 'Huyện Cư Kuin', + 'Huyện Cư M gar', + 'Huyện Ea H leo', + 'Huyện Ea Kar', + 'Huyện Ea Súp', + 'Huyện Krông A Na', + 'Huyện Krông Bông', + 'Huyện Krông Búk', + 'Huyện Krông Năng', + 'Huyện Krông Pắc', + 'Huyện Lắk', + 'Huyện M Đrắk', + 'Thành phố Buôn Ma Thuột', + 'Thị Xã Buôn Hồ' + ), + 'DAK-NONG' => array( + 'Huyện Cư Jút', + 'Huyện Đăk Glong', + 'Huyện Đắk Mil', + 'Huyện Đắk R Lấp', + 'Huyện Đắk Song', + 'Huyện Krông Nô', + 'Huyện Tuy Đức', + 'Thị xã Gia Nghĩa' + ), + 'DONG-NAI' => array( + 'Huyện Cẩm Mỹ', + 'Huyện Định Quán', + 'Huyện Long Thành', + 'Huyện Nhơn Trạch', + 'Huyện Tân Phú', + 'Huyện Thống Nhất', + 'Huyện Trảng Bom', + 'Huyện Vĩnh Cửu', + 'Huyện Xuân Lộc', + 'Thành phố Biên Hòa', + 'Thị xã Long Khánh' + ), + 'DONG-THAP' => array( + 'Huyện Cao Lãnh', + 'Huyện Châu Thành', + 'Huyện Hồng Ngự', + 'Huyện Lai Vung', + 'Huyện Lấp Vò', + 'Huyện Tam Nông', + 'Huyện Tân Hồng', + 'Huyện Thanh Bình', + 'Huyện Tháp Mười', + 'Thành phố Cao Lãnh', + 'Thành phố Sa Đéc', + 'Thị xã Hồng Ngự' + ), + 'DIEN-BIEN' => array( + 'Huyện Điện Biên', + 'Huyện Điện Biên Đông', + 'Huyện Mường Ảng', + 'Huyện Mường Chà', + 'Huyện Mường Nhé', + 'Huyện Nậm Pồ', + 'Huyện Tủa Chùa', + 'Huyện Tuần Giáo', + 'Thành phố Điện Biên Phủ', + 'Thị Xã Mường Lay' + ), + 'GIA-LAI' => array( + 'Huyện Chư Păh', + 'Huyện Chư Prông', + 'Huyện Chư Pưh', + 'Huyện Chư Sê', + 'Huyện Đăk Đoa', + 'Huyện Đăk Pơ', + 'Huyện Đức Cơ', + 'Huyện Ia Grai', + 'Huyện Ia Pa', + 'Huyện KBang', + 'Huyện Kông Chro', + 'Huyện Krông Pa', + 'Huyện Mang Yang', + 'Huyện Phú Thiện', + 'Thành phố Pleiku', + 'Thị xã An Khê', + 'Thị xã Ayun Pa' + ), + 'HA-GIANG' => array( + 'Huyện Bắc Mê', + 'Huyện Bắc Quang', + 'Huyện Đồng Văn', + 'Huyện Hoàng Su Phì', + 'Huyện Mèo Vạc', + 'Huyện Quản Bạ', + 'Huyện Quang Bình', + 'Huyện Vị Xuyên', + 'Huyện Xín Mần', + 'Huyện Yên Minh', + 'Thành phố Hà Giang' + ), + 'HA-NAM' => array( + 'Huyện Bình Lục', + 'Huyện Duy Tiên', + 'Huyện Kim Bảng', + 'Huyện Lý Nhân', + 'Huyện Thanh Liêm', + 'Thành phố Phủ Lý' + ), + 'HA-NOI' => array( + 'Huyện Ba Vì', + 'Huyện Chương Mỹ', + 'Huyện Đan Phượng', + 'Huyện Đông Anh', + 'Huyện Gia Lâm', + 'Huyện Hoài Đức', + 'Huyện Mê Linh', + 'Huyện Mỹ Đức', + 'Huyện Phú Xuyên', + 'Huyện Phúc Thọ', + 'Huyện Quốc Oai', + 'Huyện Sóc Sơn', + 'Huyện Thạch Thất', + 'Huyện Thanh Oai', + 'Huyện Thanh Trì', + 'Huyện Thường Tín', + 'Huyện Ứng Hòa', + 'Quận Ba Đình', + 'Quận Bắc Từ Liêm', + 'Quận Cầu Giấy', + 'Quận Đống Đa', + 'Quận Hà Đông', + 'Quận Hai Bà Trưng', + 'Quận Hoàn Kiếm', + 'Quận Hoàng Mai', + 'Quận Long Biên', + 'Quận Nam Từ Liêm', + 'Quận Tây Hồ', + 'Quận Thanh Xuân', + 'Thị xã Sơn Tây' + ), + 'HA-TINH' => array( + 'Huyện Cẩm Xuyên', + 'Huyện Can Lộc', + 'Huyện Đức Thọ', + 'Huyện Hương Khê', + 'Huyện Hương Sơn', + 'Huyện Kỳ Anh', + 'Huyện Lộc Hà', + 'Huyện Nghi Xuân', + 'Huyện Thạch Hà', + 'Huyện Vũ Quang', + 'Thành phố Hà Tĩnh', + 'Thị xã Hồng Lĩnh', + 'Thị xã Kỳ Anh' + ), + 'HAI-DUONG' => array( + 'Huyện Bình Giang', + 'Huyện Cẩm Giàng', + 'Huyện Gia Lộc', + 'Huyện Kim Thành', + 'Huyện Kinh Môn', + 'Huyện Nam Sách', + 'Huyện Ninh Giang', + 'Huyện Thanh Hà', + 'Huyện Thanh Miện', + 'Huyện Tứ Kỳ', + 'Thành phố Hải Dương', + 'Thị xã Chí Linh' + ), + 'HAI-PHONG' => array( + 'Huyện An Dương', + 'Huyện An Lão', + 'Huyện Bạch Long Vĩ', + 'Huyện Cát Hải', + 'Huyện Kiến Thuỵ', + 'Huyện Thuỷ Nguyên', + 'Huyện Tiên Lãng', + 'Huyện Vĩnh Bảo', + 'Quận Đồ Sơn', + 'Quận Dương Kinh', + 'Quận Hải An', + 'Quận Hồng Bàng', + 'Quận Kiến An', + 'Quận Lê Chân', + 'Quận Ngô Quyền' + ), + 'HOA-BINH' => array( + 'Huyện Cao Phong', + 'Huyện Đà Bắc', + 'Huyện Kim Bôi', + 'Huyện Kỳ Sơn', + 'Huyện Lạc Sơn', + 'Huyện Lạc Thủy', + 'Huyện Lương Sơn', + 'Huyện Mai Châu', + 'Huyện Tân Lạc', + 'Huyện Yên Thủy', + 'Thành phố Hòa Bình' + ), + 'HAU-GIANG' => array( + 'Huyện Châu Thành', + 'Huyện Châu Thành A', + 'Huyện Long Mỹ', + 'Huyện Phụng Hiệp', + 'Huyện Vị Thuỷ', + 'Thành phố Vị Thanh', + 'Thị xã Long Mỹ', + 'Thị xã Ngã Bảy' + ), + 'HUNG-YEN' => array( + 'Huyện Ân Thi', + 'Huyện Khoái Châu', + 'Huyện Kim Động', + 'Huyện Mỹ Hào', + 'Huyện Phù Cừ', + 'Huyện Tiên Lữ', + 'Huyện Văn Giang', + 'Huyện Văn Lâm', + 'Huyện Yên Mỹ', + 'Thành phố Hưng Yên' + ), + 'HO-CHI-MINH' => array( + 'Huyện Bình Chánh', + 'Huyện Cần Giờ', + 'Huyện Củ Chi', + 'Huyện Hóc Môn', + 'Huyện Nhà Bè', + 'Quận 1', + 'Quận 10', + 'Quận 11', + 'Quận 12', + 'Quận 2', + 'Quận 3', + 'Quận 4', + 'Quận 5', + 'Quận 6', + 'Quận 7', + 'Quận 8', + 'Quận 9', + 'Quận Bình Tân', + 'Quận Bình Thạnh', + 'Quận Gò Vấp', + 'Quận Phú Nhuận', + 'Quận Tân Bình', + 'Quận Tân Phú', + 'Quận Thủ Đức' + ), + 'KHANH-HOA' => array( + 'Huyện Cam Lâm', + 'Huyện Diên Khánh', + 'Huyện Khánh Sơn', + 'Huyện Khánh Vĩnh', + 'Huyện Trường Sa', + 'Huyện Vạn Ninh', + 'Thành phố Cam Ranh', + 'Thành phố Nha Trang', + 'Thị xã Ninh Hòa' + ), + 'KIEN-GIANG' => array( + 'Huyện An Biên', + 'Huyện An Minh', + 'Huyện Châu Thành', + 'Huyện Giang Thành', + 'Huyện Giồng Riềng', + 'Huyện Gò Quao', + 'Huyện Hòn Đất', + 'Huyện Kiên Hải', + 'Huyện Kiên Lương', + 'Huyện Phú Quốc', + 'Huyện Tân Hiệp', + 'Huyện U Minh Thượng', + 'Huyện Vĩnh Thuận', + 'Thành phố Rạch Giá', + 'Thị xã Hà Tiên' + ), + 'KON-TUM' => array( + 'Huyện Đắk Glei', + 'Huyện Đắk Hà', + 'Huyện Đắk Tô', + 'Huyện Ia H Drai', + 'Huyện Kon Plông', + 'Huyện Kon Rẫy', + 'Huyện Ngọc Hồi', + 'Huyện Sa Thầy', + 'Huyện Tu Mơ Rông', + 'Thành phố Kon Tum' + ), + 'LAI-CHAU' => array( + 'Huyện Mường Tè', + 'Huyện Nậm Nhùn', + 'Huyện Phong Thổ', + 'Huyện Sìn Hồ', + 'Huyện Tam Đường', + 'Huyện Tân Uyên', + 'Huyện Than Uyên', + 'Thành phố Lai Châu' + ), + 'LAO-CAI' => array( + 'Huyện Bắc Hà', + 'Huyện Bảo Thắng', + 'Huyện Bảo Yên', + 'Huyện Bát Xát', + 'Huyện Mường Khương', + 'Huyện Sa Pa', + 'Huyện Si Ma Cai', + 'Huyện Văn Bàn', + 'Thành phố Lào Cai' + ), + 'LANG-SON' => array( + 'Huyện Bắc Sơn', + 'Huyện Bình Gia', + 'Huyện Cao Lộc', + 'Huyện Chi Lăng', + 'Huyện Đình Lập', + 'Huyện Hữu Lũng', + 'Huyện Lộc Bình', + 'Huyện Tràng Định', + 'Huyện Văn Lãng', + 'Huyện Văn Quan', + 'Thành phố Lạng Sơn' + ), + 'LAM-DONG' => array( + 'Huyện Bảo Lâm', + 'Huyện Cát Tiên', + 'Huyện Đạ Huoai', + 'Huyện Đạ Tẻh', + 'Huyện Đam Rông', + 'Huyện Di Linh', + 'Huyện Đơn Dương', + 'Huyện Đức Trọng', + 'Huyện Lạc Dương', + 'Huyện Lâm Hà', + 'Thành phố Bảo Lộc', + 'Thành phố Đà Lạt' + ), + 'LONG-AN' => array( + 'Huyện Bến Lức', + 'Huyện Cần Đước', + 'Huyện Cần Giuộc', + 'Huyện Châu Thành', + 'Huyện Đức Hòa', + 'Huyện Đức Huệ', + 'Huyện Mộc Hóa', + 'Huyện Tân Hưng', + 'Huyện Tân Thạnh', + 'Huyện Tân Trụ', + 'Huyện Thạnh Hóa', + 'Huyện Thủ Thừa', + 'Huyện Vĩnh Hưng', + 'Thành phố Tân An', + 'Thị xã Kiến Tường' + ), + 'NAM-DINH' => array( + 'Huyện Giao Thủy', + 'Huyện Hải Hậu', + 'Huyện Mỹ Lộc', + 'Huyện Nam Trực', + 'Huyện Nghĩa Hưng', + 'Huyện Trực Ninh', + 'Huyện Vụ Bản', + 'Huyện Xuân Trường', + 'Huyện Ý Yên', + 'Thành phố Nam Định' + ), + 'NGHE-AN' => array( + 'Huyện Anh Sơn', + 'Huyện Con Cuông', + 'Huyện Diễn Châu', + 'Huyện Đô Lương', + 'Huyện Hưng Nguyên', + 'Huyện Kỳ Sơn', + 'Huyện Nam Đàn', + 'Huyện Nghi Lộc', + 'Huyện Nghĩa Đàn', + 'Huyện Quế Phong', + 'Huyện Quỳ Châu', + 'Huyện Quỳ Hợp', + 'Huyện Quỳnh Lưu', + 'Huyện Tân Kỳ', + 'Huyện Thanh Chương', + 'Huyện Tương Dương', + 'Huyện Yên Thành', + 'Thành phố Vinh', + 'Thị xã Cửa Lò', + 'Thị xã Hoàng Mai', + 'Thị xã Thái Hoà' + ), + 'NINH-BINH' => array( + 'Huyện Gia Viễn', + 'Huyện Hoa Lư', + 'Huyện Kim Sơn', + 'Huyện Nho Quan', + 'Huyện Yên Khánh', + 'Huyện Yên Mô', + 'Thành phố Ninh Bình', + 'Thành phố Tam Điệp' + ), + 'NINH-THUAN' => array( + 'Huyện Bác Ái', + 'Huyện Ninh Hải', + 'Huyện Ninh Phước', + 'Huyện Ninh Sơn', + 'Huyện Thuận Bắc', + 'Huyện Thuận Nam', + 'Thành phố Phan Rang-Tháp Chàm' + ), + 'PHU-THO' => array( + 'Huyện Cẩm Khê', + 'Huyện Đoan Hùng', + 'Huyện Hạ Hoà', + 'Huyện Lâm Thao', + 'Huyện Phù Ninh', + 'Huyện Tam Nông', + 'Huyện Tân Sơn', + 'Huyện Thanh Ba', + 'Huyện Thanh Sơn', + 'Huyện Thanh Thuỷ', + 'Huyện Yên Lập', + 'Thành phố Việt Trì', + 'Thị xã Phú Thọ' + ), + 'PHU-YEN' => array( + 'Huyện Đông Hòa', + 'Huyện Đồng Xuân', + 'Huyện Phú Hoà', + 'Huyện Sơn Hòa', + 'Huyện Sông Hinh', + 'Huyện Tây Hoà', + 'Huyện Tuy An', + 'Thành phố Tuy Hoà', + 'Thị xã Sông Cầu' + ), + 'QUANG-BINH' => array( + 'Huyện Bố Trạch', + 'Huyện Lệ Thủy', + 'Huyện Minh Hóa', + 'Huyện Quảng Ninh', + 'Huyện Quảng Trạch', + 'Huyện Tuyên Hóa', + 'Thành Phố Đồng Hới', + 'Thị xã Ba Đồn' + ), + 'QUANG-NAM' => array( + 'Huyện Bắc Trà My', + 'Huyện Đại Lộc', + 'Huyện Đông Giang', + 'Huyện Duy Xuyên', + 'Huyện Hiệp Đức', + 'Huyện Nam Giang', + 'Huyện Nam Trà My', + 'Huyện Nông Sơn', + 'Huyện Núi Thành', + 'Huyện Phú Ninh', + 'Huyện Phước Sơn', + 'Huyện Quế Sơn', + 'Huyện Tây Giang', + 'Huyện Thăng Bình', + 'Huyện Tiên Phước', + 'Thành phố Hội An', + 'Thành phố Tam Kỳ', + 'Thị xã Điện Bàn' + ), + 'QUANG-NGAI' => array( + 'Huyện Ba Tơ', + 'Huyện Bình Sơn', + 'Huyện Đức Phổ', + 'Huyện Lý Sơn', + 'Huyện Minh Long', + 'Huyện Mộ Đức', + 'Huyện Nghĩa Hành', + 'Huyện Sơn Hà', + 'Huyện Sơn Tây', + 'Huyện Sơn Tịnh', + 'Huyện Tây Trà', + 'Huyện Trà Bồng', + 'Huyện Tư Nghĩa', + 'Thành phố Quảng Ngãi' + ), + 'QUANG-NINH' => array( + 'Huyện Ba Chẽ', + 'Huyện Bình Liêu', + 'Huyện Cô Tô', + 'Huyện Đầm Hà', + 'Huyện Hải Hà', + 'Huyện Hoành Bồ', + 'Huyện Tiên Yên', + 'Huyện Vân Đồn', + 'Thành phố Cẩm Phả', + 'Thành phố Hạ Long', + 'Thành phố Móng Cái', + 'Thành phố Uông Bí', + 'Thị xã Đông Triều', + 'Thị xã Quảng Yên' + ), + 'QUANG-TRI' => array( + 'Huyện Cam Lộ', + 'Huyện Cồn Cỏ', + 'Huyện Đa Krông', + 'Huyện Gio Linh', + 'Huyện Hải Lăng', + 'Huyện Hướng Hóa', + 'Huyện Triệu Phong', + 'Huyện Vĩnh Linh', + 'Thành phố Đông Hà', + 'Thị xã Quảng Trị' + ), + 'SOC-TRANG' => array( + 'Huyện Châu Thành', + 'Huyện Cù Lao Dung', + 'Huyện Kế Sách', + 'Huyện Long Phú', + 'Huyện Mỹ Tú', + 'Huyện Mỹ Xuyên', + 'Huyện Thạnh Trị', + 'Huyện Trần Đề', + 'Thành phố Sóc Trăng', + 'Thị xã Ngã Năm', + 'Thị xã Vĩnh Châu' + ), + 'SON-LA' => array( + 'Huyện Bắc Yên', + 'Huyện Mai Sơn', + 'Huyện Mộc Châu', + 'Huyện Mường La', + 'Huyện Phù Yên', + 'Huyện Quỳnh Nhai', + 'Huyện Sông Mã', + 'Huyện Sốp Cộp', + 'Huyện Thuận Châu', + 'Huyện Vân Hồ', + 'Huyện Yên Châu', + 'Thành phố Sơn La' + ), + 'TAY-NINH' => array( + 'Huyện Bến Cầu', + 'Huyện Châu Thành', + 'Huyện Dương Minh Châu', + 'Huyện Gò Dầu', + 'Huyện Hòa Thành', + 'Huyện Tân Biên', + 'Huyện Tân Châu', + 'Huyện Trảng Bàng', + 'Thành phố Tây Ninh' + ), + 'THAI-BINH' => array( + 'Huyện Đông Hưng', + 'Huyện Hưng Hà', + 'Huyện Kiến Xương', + 'Huyện Quỳnh Phụ', + 'Huyện Thái Thụy', + 'Huyện Tiền Hải', + 'Huyện Vũ Thư', + 'Thành phố Thái Bình' + ), + 'THAI-NGUYEN' => array( + 'Huyện Đại Từ', + 'Huyện Định Hóa', + 'Huyện Đồng Hỷ', + 'Huyện Phú Bình', + 'Huyện Phú Lương', + 'Huyện Võ Nhai', + 'Thành phố Sông Công', + 'Thành phố Thái Nguyên', + 'Thị xã Phổ Yên' + ), + 'THANH-HOA' => array( + 'Huyện Bá Thước', + 'Huyện Cẩm Thủy', + 'Huyện Đông Sơn', + 'Huyện Hà Trung', + 'Huyện Hậu Lộc', + 'Huyện Hoằng Hóa', + 'Huyện Lang Chánh', + 'Huyện Mường Lát', + 'Huyện Nga Sơn', + 'Huyện Ngọc Lặc', + 'Huyện Như Thanh', + 'Huyện Như Xuân', + 'Huyện Nông Cống', + 'Huyện Quan Hóa', + 'Huyện Quan Sơn', + 'Huyện Quảng Xương', + 'Huyện Thạch Thành', + 'Huyện Thiệu Hóa', + 'Huyện Thọ Xuân', + 'Huyện Thường Xuân', + 'Huyện Tĩnh Gia', + 'Huyện Triệu Sơn', + 'Huyện Vĩnh Lộc', + 'Huyện Yên Định', + 'Thành phố Thanh Hóa', + 'Thị xã Bỉm Sơn', + 'Thị xã Sầm Sơn' + ), + 'THUA-THIEN-HUE' => array( + 'Huyện A Lưới', + 'Huyện Nam Đông', + 'Huyện Phong Điền', + 'Huyện Phú Lộc', + 'Huyện Phú Vang', + 'Huyện Quảng Điền', + 'Thành phố Huế', + 'Thị xã Hương Thủy', + 'Thị xã Hương Trà' + ), + 'TIEN-GIANG' => array( + 'Huyện Cái Bè', + 'Huyện Cai Lậy', + 'Huyện Châu Thành', + 'Huyện Chợ Gạo', + 'Huyện Gò Công Đông', + 'Huyện Gò Công Tây', + 'Huyện Tân Phú Đông', + 'Huyện Tân Phước', + 'Thành phố Mỹ Tho', + 'Thị xã Cai Lậy', + 'Thị xã Gò Công' + ), + 'TRA-VINH' => array( + 'Huyện Càng Long', + 'Huyện Cầu Kè', + 'Huyện Cầu Ngang', + 'Huyện Châu Thành', + 'Huyện Duyên Hải', + 'Huyện Tiểu Cần', + 'Huyện Trà Cú', + 'Thành phố Trà Vinh', + 'Thị xã Duyên Hải' + ), + 'TUYEN-QUANG' => array( + 'Huyện Chiêm Hóa', + 'Huyện Hàm Yên', + 'Huyện Lâm Bình', + 'Huyện Nà Hang', + 'Huyện Sơn Dương', + 'Huyện Yên Sơn', + 'Thành phố Tuyên Quang' + ), + 'VINH-LONG' => array( + 'Huyện Vũng Liêm', + 'Huyện Bình Tân', + 'Huyện Long Hồ', + 'Huyện Mang Thít', + 'Huyện Tam Bình', + 'Huyện Trà Ôn', + 'Thành phố Vĩnh Long', + 'Thị xã Bình Minh' + ), + 'VINH-PHUC' => array( + 'Huyện Bình Xuyên', + 'Huyện Lập Thạch', + 'Huyện Sông Lô', + 'Huyện Tam Đảo', + 'Huyện Tam Dương', + 'Huyện Vĩnh Tường', + 'Huyện Yên Lạc', + 'Thành phố Vĩnh Yên', + 'Thị xã Phúc Yên' + ), + 'YEN-BAI' => array( + 'Huyện Lục Yên', + 'Huyện Mù Căng Chải', + 'Huyện Trạm Tấu', + 'Huyện Trấn Yên', + 'Huyện Văn Chấn', + 'Huyện Văn Yên', + 'Huyện Yên Bình', + 'Thành phố Yên Bái', + 'Thị xã Nghĩa Lộ' + ), + ); + + return $cities; + + } +} \ No newline at end of file diff --git a/lib/wc-city-select/assets/js/city-select.js b/lib/wc-city-select/assets/js/city-select.js new file mode 100644 index 0000000..6028a6e --- /dev/null +++ b/lib/wc-city-select/assets/js/city-select.js @@ -0,0 +1,180 @@ +jQuery( function($) { + + // wc_city_select_params is required to continue, ensure the object exists + // wc_country_select_params is used for select2 texts. This one is added by WC + if ( typeof wc_country_select_params === 'undefined' || typeof wc_city_select_params === 'undefined' ) { + return false; + } + + function getEnhancedSelectFormatString() { + var formatString = { + formatMatches: function( matches ) { + if ( 1 === matches ) { + return wc_country_select_params.i18n_matches_1; + } + + return wc_country_select_params.i18n_matches_n.replace( '%qty%', matches ); + }, + formatNoMatches: function() { + return wc_country_select_params.i18n_no_matches; + }, + formatAjaxError: function() { + return wc_country_select_params.i18n_ajax_error; + }, + formatInputTooShort: function( input, min ) { + var number = min - input.length; + + if ( 1 === number ) { + return wc_country_select_params.i18n_input_too_short_1; + } + + return wc_country_select_params.i18n_input_too_short_n.replace( '%qty%', number ); + }, + formatInputTooLong: function( input, max ) { + var number = input.length - max; + + if ( 1 === number ) { + return wc_country_select_params.i18n_input_too_long_1; + } + + return wc_country_select_params.i18n_input_too_long_n.replace( '%qty%', number ); + }, + formatSelectionTooBig: function( limit ) { + if ( 1 === limit ) { + return wc_country_select_params.i18n_selection_too_long_1; + } + + return wc_country_select_params.i18n_selection_too_long_n.replace( '%qty%', limit ); + }, + formatLoadMore: function() { + return wc_country_select_params.i18n_load_more; + }, + formatSearching: function() { + return wc_country_select_params.i18n_searching; + } + }; + + return formatString; + } + + // Select2 Enhancement if it exists + if ( $().select2 ) { + var wc_city_select_select2 = function() { + $( 'select.city_select:visible' ).each( function() { + var select2_args = $.extend({ + placeholderOption: 'first', + width: '100%' + }, getEnhancedSelectFormatString() ); + + $( this ).select2( select2_args ); + }); + }; + + wc_city_select_select2(); + + $( document.body ).bind( 'city_to_select', function() { + wc_city_select_select2(); + }); + } + + /* City select boxes */ + var cities_json = wc_city_select_params.cities.replace( /"/g, '"' ); + var cities = $.parseJSON( cities_json ); + + $( 'body' ).on( 'country_to_state_changing', function(e, country, $container) { + var $statebox = $container.find( '#billing_state, #shipping_state, #calc_shipping_state' ); + var state = $statebox.val(); + $( document.body ).trigger( 'state_changing', [country, state, $container ] ); + }); + + $( 'body' ).on( 'change', 'select.state_select, #calc_shipping_state', function() { + var $container = $( this ).closest( 'div' ); + var country = $container.find( '#billing_country, #shipping_country, #calc_shipping_country' ).val(); + var state = $( this ).val(); + + $( document.body ).trigger( 'state_changing', [country, state, $container ] ); + }); + + $( 'body' ).on( 'state_changing', function(e, country, state, $container) { + var $citybox = $container.find( '#billing_city, #shipping_city, #calc_shipping_city' ); + + if ( cities[ country ] ) { + /* if the country has no states */ + if( cities[country] instanceof Array) { + cityToSelect( $citybox, cities[ country ] ); + } else if ( state ) { + if ( cities[ country ][ state ] ) { + cityToSelect( $citybox, cities[ country ][ state ] ); + } else { + cityToInput( $citybox ); + } + } else { + disableCity( $citybox ); + } + } else { + cityToInput( $citybox ); + } + }); + + /* Ajax replaces .cart_totals (child of .cart-collaterals) on shipping calculator */ + if ( $( '.cart-collaterals' ).length && $( '#calc_shipping_state' ).length ) { + var calc_observer = new MutationObserver( function() { + $( '#calc_shipping_state' ).change(); + }); + calc_observer.observe( document.querySelector( '.cart-collaterals' ), { childList: true }); + } + + function cityToInput( $citybox ) { + if ( $citybox.is('input') ) { + $citybox.prop( 'disabled', false ); + return; + } + + var input_name = $citybox.attr( 'name' ); + var input_id = $citybox.attr( 'id' ); + var placeholder = $citybox.attr( 'placeholder' ); + + $citybox.parent().find( '.select2-container' ).remove(); + + $citybox.replaceWith( '' ); + } + + function disableCity( $citybox ) { + $citybox.val( '' ).change(); + $citybox.prop( 'disabled', true ); + } + + function cityToSelect( $citybox, current_cities ) { + var value = $citybox.val(); + + if ( $citybox.is('input') ) { + var input_name = $citybox.attr( 'name' ); + var input_id = $citybox.attr( 'id' ); + var placeholder = $citybox.attr( 'placeholder' ); + + $citybox.replaceWith( '' ); + //we have to assign the new object, because of replaceWith + $citybox = $('#'+input_id); + } else { + $citybox.prop( 'disabled', false ); + } + + var options = ''; + for( var index in current_cities ) { + if ( current_cities.hasOwnProperty( index ) ) { + var cityName = current_cities[ index ]; + options = options + ''; + } + } + + $citybox.html( '' + options ); + + if ( $('option[value="'+value+'"]', $citybox).length ) { + $citybox.val( value ).change(); + } else { + $citybox.val( '' ).change(); + } + + $( document.body ).trigger( 'city_to_select' ); + } +}); diff --git a/lib/wc-city-select/cities/CO.php b/lib/wc-city-select/cities/CO.php new file mode 100644 index 0000000..0053f6e --- /dev/null +++ b/lib/wc-city-select/cities/CO.php @@ -0,0 +1,1170 @@ + array( + 'Leticia', + 'Puerto Nariño' + ), + 'ANT' => array( + 'Abejorral', + 'Abriaquí', + 'Alejandria', + 'Amagá', + 'Amalfi', + 'Andes', + 'Angelópolis', + 'Angostura', + 'Anorí', + 'Anzá', + 'Apartadó', + 'Arboletes', + 'Argelia', + 'Armenia', + 'Barbosa', + 'Bello', + 'Belmira', + 'Betania', + 'Betulia', + 'Bolívar', + 'Briceño', + 'Burítica', + 'Cáceres', + 'Caicedo', + 'Caldas', + 'Campamento', + 'Cañasgordas', + 'Caracolí', + 'Caramanta', + 'Carepa', + 'Carmen de Viboral', + 'Carolina', + 'Caucasia', + 'Chigorodó', + 'Cisneros', + 'Cocorná', + 'Concepción', + 'Concordia', + 'Copacabana', + 'Dabeiba', + 'Don Matías', + 'Ebéjico', + 'El Bagre', + 'Entrerríos', + 'Envigado', + 'Fredonia', + 'Frontino', + 'Giraldo', + 'Girardota', + 'Gómez Plata', + 'Granada', + 'Guadalupe', + 'Guarne', + 'Guatapé', + 'Heliconia', + 'Hispania', + 'Itagüí', + 'Ituango', + 'Jardín', + 'Jericó', + 'La Ceja', + 'La Estrella', + 'La Pintada', + 'La Unión', + 'Liborina', + 'Maceo', + 'Marinilla', + 'Medellín', + 'Montebello', + 'Murindó', + 'Mutatá', + 'Nariño', + 'Nechí', + 'Necoclí', + 'Olaya', + 'Peñol', + 'Peque', + 'Pueblorrico', + 'Puerto Berrío', + 'Puerto Nare', + 'Puerto Triunfo', + 'Remedios', + 'Retiro', + 'Ríonegro', + 'Sabanalarga', + 'Sabaneta', + 'Salgar', + 'San Andrés de Cuerquía', + 'San Carlos', + 'San Francisco', + 'San Jerónimo', + 'San José de Montaña', + 'San Juan de Urabá', + 'San Luís', + 'San Pedro', + 'San Pedro de Urabá', + 'San Rafael', + 'San Roque', + 'San Vicente', + 'Santa Bárbara', + 'Santa Fé de Antioquia', + 'Santa Rosa de Osos', + 'Santo Domingo', + 'Santuario', + 'Segovia', + 'Sonsón', + 'Sopetrán', + 'Támesis', + 'Tarazá', + 'Tarso', + 'Titiribí', + 'Toledo', + 'Turbo', + 'Uramita', + 'Urrao', + 'Valdivia', + 'Valparaiso', + 'Vegachí', + 'Venecia', + 'Vigía del Fuerte', + 'Yalí', + 'Yarumal', + 'Yolombó', + 'Yondó (Casabe)', + 'Zaragoza' + ), + 'ARA' => array( + 'Arauca', + 'Arauquita', + 'Cravo Norte', + 'Fortúl', + 'Puerto Rondón', + 'Saravena', + 'Tame' + ), + 'ATL' => array( + 'Baranoa', + 'Barranquilla', + 'Campo de la Cruz', + 'Candelaria', + 'Galapa', + 'Juan de Acosta', + 'Luruaco', + 'Malambo', + 'Manatí', + 'Palmar de Varela', + 'Piojo', + 'Polonuevo', + 'Ponedera', + 'Puerto Colombia', + 'Repelón', + 'Sabanagrande', + 'Sabanalarga', + 'Santa Lucía', + 'Santo Tomás', + 'Soledad', + 'Suan', + 'Tubará', + 'Usiacuri' + ), + 'BOL' => array( + 'Achí', + 'Altos del Rosario', + 'Arenal', + 'Arjona', + 'Arroyohondo', + 'Barranco de Loba', + 'Calamar', + 'Cantagallo', + 'Cartagena', + 'Cicuco', + 'Clemencia', + 'Córdoba', + 'El Carmen de Bolívar', + 'El Guamo', + 'El Peñon', + 'Hatillo de Loba', + 'Magangué', + 'Mahates', + 'Margarita', + 'María la Baja', + 'Mompós', + 'Montecristo', + 'Morales', + 'Norosí', + 'Pinillos', + 'Regidor', + 'Río Viejo', + 'San Cristobal', + 'San Estanislao', + 'San Fernando', + 'San Jacinto', + 'San Jacinto del Cauca', + 'San Juan de Nepomuceno', + 'San Martín de Loba', + 'San Pablo', + 'Santa Catalina', + 'Santa Rosa', + 'Santa Rosa del Sur', + 'Simití', + 'Soplaviento', + 'Talaigua Nuevo', + 'Tiquisio (Puerto Rico)', + 'Turbaco', + 'Turbaná', + 'Villanueva', + 'Zambrano' + ), + 'BOY' => array( + 'Almeida', + 'Aquitania', + 'Arcabuco', + 'Belén', + 'Berbeo', + 'Beteitiva', + 'Boavita', + 'Boyacá', + 'Briceño', + 'Buenavista', + 'Busbanza', + 'Caldas', + 'Campohermoso', + 'Cerinza', + 'Chinavita', + 'Chiquinquirá', + 'Chíquiza', + 'Chiscas', + 'Chita', + 'Chitaraque', + 'Chivatá', + 'Chívor', + 'Ciénaga', + 'Cómbita', + 'Coper', + 'Corrales', + 'Covarachía', + 'Cubará', + 'Cucaita', + 'Cuitiva', + 'Duitama', + 'El Cocuy', + 'El Espino', + 'Firavitoba', + 'Floresta', + 'Gachantivá', + 'Gámeza', + 'Garagoa', + 'Guacamayas', + 'Guateque', + 'Guayatá', + 'Guicán', + 'Izá', + 'Jenesano', + 'Jericó', + 'La Capilla', + 'La Uvita', + 'La Victoria', + 'Labranzagrande', + 'Macanal', + 'Maripí', + 'Miraflores', + 'Mongua', + 'Monguí', + 'Moniquirá', + 'Motavita', + 'Muzo', + 'Nobsa', + 'Nuevo Colón', + 'Oicatá', + 'Otanche', + 'Pachavita', + 'Páez', + 'Paipa', + 'Pajarito', + 'Panqueba', + 'Pauna', + 'Paya', + 'Paz de Río', + 'Pesca', + 'Pisva', + 'Puerto Boyacá', + 'Quipama', + 'Ramiriquí', + 'Ráquira', + 'Rondón', + 'Saboyá', + 'Sáchica', + 'Samacá', + 'San Eduardo', + 'San José de Pare', + 'San Luís de Gaceno', + 'San Mateo', + 'San Miguel de Sema', + 'San Pablo de Borbur', + 'Santa María', + 'Santa Rosa de Viterbo', + 'Santa Sofía', + 'Santana', + 'Sativanorte', + 'Sativasur', + 'Siachoque', + 'Soatá', + 'Socha', + 'Socotá', + 'Sogamoso', + 'Somondoco', + 'Sora', + 'Soracá', + 'Sotaquirá', + 'Susacón', + 'Sutamarchán', + 'Sutatenza', + 'Tasco', + 'Tenza', + 'Tibaná', + 'Tibasosa', + 'Tinjacá', + 'Tipacoque', + 'Toca', + 'Toguí', + 'Topagá', + 'Tota', + 'Tunja', + 'Tunungua', + 'Turmequé', + 'Tuta', + 'Tutasá', + 'Úmbita', + 'Ventaquemada', + 'Villa de Leiva', + 'Viracachá', + 'Zetaquirá' + ), + 'CAL' => array( + 'Aguadas', + 'Anserma', + 'Aranzazu', + 'Belalcázar', + 'Chinchiná', + 'Filadelfia', + 'La Dorada', + 'La Merced', + 'La Victoria', + 'Manizales', + 'Manzanares', + 'Marmato', + 'Marquetalia', + 'Marulanda', + 'Neira', + 'Norcasia', + 'Pácora', + 'Palestina', + 'Pensilvania', + 'Río Sucio', + 'Risaralda', + 'Salamina', + 'Samaná', + 'San José', + 'Supía', + 'Villamaría', + 'Viterbo' + ), + 'CAQ' => array( + 'Albania', + 'Belén de los Andaquíes', + 'Cartagena del Chairá', + 'Curillo', + 'El Doncello', + 'El Paujil', + 'Florencia', + 'La Montañita', + 'Milán', + 'Morelia', + 'Puerto Rico', + 'San José del Fragua', + 'San Vicente del Caguán', + 'Solano', + 'Solita', + 'Valparaiso' + ), + 'CAS' => array( + 'Aguazul', + 'Chámeza', + 'Hato Corozal', + 'La Salina', + 'Maní', + 'Monterrey', + 'Nunchía', + 'Orocué', + 'Paz de Ariporo', + 'Pore', + 'Recetor', + 'Sabanalarga', + 'Sácama', + 'San Luís de Palenque', + 'Támara', + 'Tauramena', + 'Trinidad', + 'Villanueva', + 'Yopal' + ), + 'CAU' => array( + 'Almaguer', + 'Argelia', + 'Balboa', + 'Bolívar', + 'Buenos Aires', + 'Cajibío', + 'Caldono', + 'Caloto', + 'Corinto', + 'El Tambo', + 'Florencia', + 'Guachené', + 'Guapí', + 'Inzá', + 'Jambaló', + 'La Sierra', + 'La Vega', + 'López (Micay)', + 'Mercaderes', + 'Miranda', + 'Morales', + 'Padilla', + 'Páez (Belalcazar)', + 'Patía (El Bordo)', + 'Piamonte', + 'Piendamó', + 'Popayán', + 'Puerto Tejada', + 'Puracé (Coconuco)', + 'Rosas', + 'San Sebastián', + 'Santa Rosa', + 'Santander de Quilichao', + 'Silvia', + 'Sotara (Paispamba)', + 'Suárez', + 'Sucre', + 'Timbío', + 'Timbiquí', + 'Toribío', + 'Totoró', + 'Villa Rica' + ), + 'CES' => array( + 'Aguachica', + 'Agustín Codazzi', + 'Astrea', + 'Becerríl', + 'Bosconia', + 'Chimichagua', + 'Chiriguaná', + 'Curumaní', + 'El Copey', + 'El Paso', + 'Gamarra', + 'Gonzalez', + 'La Gloria', + 'La Jagua de Ibirico', + 'La Paz (Robles)', + 'Manaure Balcón del Cesar', + 'Pailitas', + 'Pelaya', + 'Pueblo Bello', + 'Río de oro', + 'San Alberto', + 'San Diego', + 'San Martín', + 'Tamalameque', + 'Valledupar' + ), + 'CHO' => array( + 'Acandí', + 'Alto Baudó (Pie de Pato)', + 'Atrato (Yuto)', + 'Bagadó', + 'Bahía Solano (Mútis)', + 'Bajo Baudó (Pizarro)', + 'Belén de Bajirá', + 'Bojayá (Bellavista)', + 'Cantón de San Pablo', + 'Carmen del Darién (CURBARADÓ)', + 'Cértegui', + 'Condoto', + 'El Carmen de Atrato', + 'Istmina', + 'Juradó', + 'Lloró', + 'Medio Atrato', + 'Medio Baudó', + 'Medio San Juan (ANDAGOYA)', + 'Novita', + 'Nuquí', + 'Quibdó', + 'Río Iró', + 'Río Quito', + 'Ríosucio', + 'San José del Palmar', + 'Santa Genoveva de Docorodó', + 'Sipí', + 'Tadó', + 'Unguía', + 'Unión Panamericana (ÁNIMAS)' + ), + 'COR' => array( + 'Ayapel', + 'Buenavista', + 'Canalete', + 'Cereté', + 'Chimá', + 'Chinú', + 'Ciénaga de Oro', + 'Cotorra', + 'La Apartada y La Frontera', + 'Lorica', + 'Los Córdobas', + 'Momil', + 'Moñitos', + 'Montelíbano', + 'Monteria', + 'Planeta Rica', + 'Pueblo Nuevo', + 'Puerto Escondido', + 'Puerto Libertador', + 'Purísima', + 'Sahagún', + 'San Andrés Sotavento', + 'San Antero', + 'San Bernardo del Viento', + 'San Carlos', + 'San José de Uré', + 'San Pelayo', + 'Tierralta', + 'Tuchín', + 'Valencia' + ), + 'CUN' => array( + 'Agua de Dios', + 'Albán', + 'Anapoima', + 'Anolaima', + 'Apulo', + 'Arbeláez', + 'Beltrán', + 'Bituima', + 'Bogotá D.C.', + 'Bojacá', + 'Cabrera', + 'Cachipay', + 'Cajicá', + 'Caparrapí', + 'Cáqueza', + 'Carmen de Carupa', + 'Chaguaní', + 'Chía', + 'Chipaque', + 'Choachí', + 'Chocontá', + 'Cogua', + 'Cota', + 'Cucunubá', + 'El Colegio', + 'El Peñón', + 'El Rosal', + 'Facatativá', + 'Fómeque', + 'Fosca', + 'Funza', + 'Fúquene', + 'Fusagasugá', + 'Gachalá', + 'Gachancipá', + 'Gachetá', + 'Gama', + 'Girardot', + 'Granada', + 'Guachetá', + 'Guaduas', + 'Guasca', + 'Guataquí', + 'Guatavita', + 'Guayabal de Siquima', + 'Guayabetal', + 'Gutiérrez', + 'Jerusalén', + 'Junín', + 'La Calera', + 'La Mesa', + 'La Palma', + 'La Peña', + 'La Vega', + 'Lenguazaque', + 'Machetá', + 'Madrid', + 'Manta', + 'Medina', + 'Mosquera', + 'Nariño', + 'Nemocón', + 'Nilo', + 'Nimaima', + 'Nocaima', + 'Pacho', + 'Paime', + 'Pandi', + 'Paratebueno', + 'Pasca', + 'Puerto Salgar', + 'Pulí', + 'Quebradanegra', + 'Quetame', + 'Quipile', + 'Ricaurte', + 'San Antonio de Tequendama', + 'San Bernardo', + 'San Cayetano', + 'San Francisco', + 'San Juan de Río Seco', + 'Sasaima', + 'Sesquilé', + 'Sibaté', + 'Silvania', + 'Simijaca', + 'Soacha', + 'Sopó', + 'Subachoque', + 'Suesca', + 'Supatá', + 'Susa', + 'Sutatausa', + 'Tabio', + 'Tausa', + 'Tena', + 'Tenjo', + 'Tibacuy', + 'Tibirita', + 'Tocaima', + 'Tocancipá', + 'Topaipí', + 'Ubalá', + 'Ubaque', + 'Ubaté', + 'Une', + 'Útica', + 'Venecia (Ospina Pérez)', + 'Vergara', + 'Viani', + 'Villagómez', + 'Villapinzón', + 'Villeta', + 'Viotá', + 'Yacopí', + 'Zipacón', + 'Zipaquirá' + ), + 'GUA' => array( 'Inírida' ), + 'GUV' => array( + 'Calamar', + 'El Retorno', + 'Miraflores', + 'San José del Guaviare' + ), + 'HUI' => array( + 'Acevedo', + 'Agrado', + 'Aipe', + 'Algeciras', + 'Altamira', + 'Baraya', + 'Campoalegre', + 'Colombia', + 'Elías', + 'Garzón', + 'Gigante', + 'Guadalupe', + 'Hobo', + 'Íquira', + 'Isnos', + 'La Argentina', + 'La Plata', + 'Nátaga', + 'Neiva', + 'Oporapa', + 'Paicol', + 'Palermo', + 'Palestina', + 'Pital', + 'Pitalito', + 'Rivera', + 'Saladoblanco', + 'San Agustín', + 'Santa María', + 'Suaza', + 'Tarqui', + 'Tello', + 'Teruel', + 'Tesalia', + 'Timaná', + 'Villavieja', + 'Yaguará' + ), + 'LAG' => array( + 'Albania', + 'Barrancas', + 'Dibulla', + 'Distracción', + 'El Molino', + 'Fonseca', + 'Hatonuevo', + 'La Jagua del Pilar', + 'Maicao', + 'Manaure', + 'Riohacha', + 'San Juan del Cesar', + 'Uribia', + 'Urumita', + 'Villanueva' + ), + 'MAG' => array( + 'Algarrobo', + 'Aracataca', + 'Ariguaní (El Difícil)', + 'Cerro San Antonio', + 'Chivolo', + 'Ciénaga', + 'Concordia', + 'El Banco', + 'El Piñon', + 'El Retén', + 'Fundación', + 'Guamal', + 'Nueva Granada', + 'Pedraza', + 'Pijiño', + 'Pivijay', + 'Plato', + 'Puebloviejo', + 'Remolino', + 'Sabanas de San Angel (SAN ANGEL)', + 'Salamina', + 'San Sebastián de Buenavista', + 'San Zenón', + 'Santa Ana', + 'Santa Bárbara de Pinto', + 'Santa Marta', + 'Sitionuevo', + 'Tenerife', + 'Zapayán (PUNTA DE PIEDRAS)', + 'Zona Bananera (PRADO - SEVILLA)' + ), + 'MET' => array( + 'Acacías', + 'Barranca de Upía', + 'Cabuyaro', + 'Castilla la Nueva', + 'Cubarral', + 'Cumaral', + 'El Calvario', + 'El Castillo', + 'El Dorado', + 'Fuente de Oro', + 'Granada', + 'Guamal', + 'La Macarena', + 'Lejanías', + 'Mapiripan', + 'Mesetas', + 'Puerto Concordia', + 'Puerto Gaitán', + 'Puerto Lleras', + 'Puerto López', + 'Puerto Rico', + 'Restrepo', + 'San Carlos de Guaroa', + 'San Juan de Arama', + 'San Juanito', + 'San Martín', + 'Uribe', + 'Villavicencio', + 'Vista Hermosa' + ), + 'NAR' => array( + 'Albán (San José)', + 'Aldana', + 'Ancuya', + 'Arboleda (Berruecos)', + 'Barbacoas', + 'Belén', + 'Buesaco', + 'Chachaguí', + 'Colón (Génova)', + 'Consaca', + 'Contadero', + 'Córdoba', + 'Cuaspud (Carlosama)', + 'Cumbal', + 'Cumbitara', + 'El Charco', + 'El Peñol', + 'El Rosario', + 'El Tablón de Gómez', + 'El Tambo', + 'Francisco Pizarro', + 'Funes', + 'Guachavés', + 'Guachucal', + 'Guaitarilla', + 'Gualmatán', + 'Iles', + 'Imúes', + 'Ipiales', + 'La Cruz', + 'La Florida', + 'La Llanada', + 'La Tola', + 'La Unión', + 'Leiva', + 'Linares', + 'Magüi (Payán)', + 'Mallama (Piedrancha)', + 'Mosquera', + 'Nariño', + 'Olaya Herrera', + 'Ospina', + 'Policarpa', + 'Potosí', + 'Providencia', + 'Puerres', + 'Pupiales', + 'Ricaurte', + 'Roberto Payán (San José)', + 'Samaniego', + 'San Bernardo', + 'San Juan de Pasto', + 'San Lorenzo', + 'San Pablo', + 'San Pedro de Cartago', + 'Sandoná', + 'Santa Bárbara (Iscuandé)', + 'Sapuyes', + 'Sotomayor (Los Andes)', + 'Taminango', + 'Tangua', + 'Tumaco', + 'Túquerres', + 'Yacuanquer' + ), + 'NSA' => array( + 'Ábrego', + 'Arboledas', + 'Bochalema', + 'Bucarasica', + 'Cáchira', + 'Cácota', + 'Chinácota', + 'Chitagá', + 'Convención', + 'Cúcuta', + 'Cucutilla', + 'Durania', + 'El Carmen', + 'El Tarra', + 'El Zulia', + 'Gramalote', + 'Hacarí', + 'Herrán', + 'La Esperanza', + 'La Playa', + 'Labateca', + 'Los Patios', + 'Lourdes', + 'Mutiscua', + 'Ocaña', + 'Pamplona', + 'Pamplonita', + 'Puerto Santander', + 'Ragonvalia', + 'Salazar', + 'San Calixto', + 'San Cayetano', + 'Santiago', + 'Sardinata', + 'Silos', + 'Teorama', + 'Tibú', + 'Toledo', + 'Villa Caro', + 'Villa del Rosario' + ), + 'PUT' => array( + 'Colón', + 'Mocoa', + 'Orito', + 'Puerto Asís', + 'Puerto Caicedo', + 'Puerto Guzmán', + 'Puerto Leguízamo', + 'San Francisco', + 'San Miguel', + 'Santiago', + 'Sibundoy', + 'Valle del Guamuez', + 'Villagarzón' + ), + 'QUI' => array( + 'Armenia', + 'Buenavista', + 'Calarcá', + 'Circasia', + 'Cordobá', + 'Filandia', + 'Génova', + 'La Tebaida', + 'Montenegro', + 'Pijao', + 'Quimbaya', + 'Salento' + ), + 'RIS' => array( + 'Apía', + 'Balboa', + 'Belén de Umbría', + 'Dos Quebradas', + 'Guática', + 'La Celia', + 'La Virginia', + 'Marsella', + 'Mistrató', + 'Pereira', + 'Pueblo Rico', + 'Quinchía', + 'Santa Rosa de Cabal', + 'Santuario' + ), + 'SAP' => array( 'Providencia' ), + 'SAN' => array( + 'Aguada', + 'Albania', + 'Aratoca', + 'Barbosa', + 'Barichara', + 'Barrancabermeja', + 'Betulia', + 'Bolívar', + 'Bucaramanga', + 'Cabrera', + 'California', + 'Capitanejo', + 'Carcasí', + 'Cepita', + 'Cerrito', + 'Charalá', + 'Charta', + 'Chima', + 'Chipatá', + 'Cimitarra', + 'Concepción', + 'Confines', + 'Contratación', + 'Coromoro', + 'Curití', + 'El Carmen', + 'El Guacamayo', + 'El Peñon', + 'El Playón', + 'Encino', + 'Enciso', + 'Florián', + 'Floridablanca', + 'Galán', + 'Gámbita', + 'Girón', + 'Guaca', + 'Guadalupe', + 'Guapota', + 'Guavatá', + 'Guepsa', + 'Hato', + 'Jesús María', + 'Jordán', + 'La Belleza', + 'La Paz', + 'Landázuri', + 'Lebrija', + 'Los Santos', + 'Macaravita', + 'Málaga', + 'Matanza', + 'Mogotes', + 'Molagavita', + 'Ocamonte', + 'Oiba', + 'Onzaga', + 'Palmar', + 'Palmas del Socorro', + 'Páramo', + 'Pie de Cuesta', + 'Pinchote', + 'Puente Nacional', + 'Puerto Parra', + 'Puerto Wilches', + 'Rio Negro', + 'Sabana de Torres', + 'San Andrés', + 'San Benito', + 'San Gíl', + 'San Joaquín', + 'San José de Miranda', + 'San Miguel', + 'San Vicente del Chucurí', + 'Santa Bárbara', + 'Santa Helena del Opón', + 'Simacota', + 'Socorro', + 'Suaita', + 'Sucre', + 'Suratá', + 'Tona', + 'Valle de San José', + 'Vélez', + 'Vetas', + 'Villanueva', + 'Zapatoca' + ), + 'SUC' => array( + 'Buenavista', + 'Caimito', + 'Chalán', + 'Colosó (Ricaurte)', + 'Corozal', + 'Coveñas', + 'El Roble', + 'Galeras (Nueva Granada)', + 'Guaranda', + 'La Unión', + 'Los Palmitos', + 'Majagual', + 'Morroa', + 'Ovejas', + 'Palmito', + 'Sampués', + 'San Benito Abad', + 'San Juan de Betulia', + 'San Marcos', + 'San Onofre', + 'San Pedro', + 'Sincé', + 'Sincelejo', + 'Sucre', + 'Tolú', + 'Tolú Viejo' + ), + 'TOL' => array( + 'Alpujarra', + 'Alvarado', + 'Ambalema', + 'Anzoátegui', + 'Armero (Guayabal)', + 'Ataco', + 'Cajamarca', + 'Carmen de Apicalá', + 'Casabianca', + 'Chaparral', + 'Coello', + 'Coyaima', + 'Cunday', + 'Dolores', + 'Espinal', + 'Falan', + 'Flandes', + 'Fresno', + 'Guamo', + 'Herveo', + 'Honda', + 'Ibagué', + 'Icononzo', + 'Lérida', + 'Líbano', + 'Mariquita', + 'Melgar', + 'Murillo', + 'Natagaima', + 'Ortega', + 'Palocabildo', + 'Piedras', + 'Planadas', + 'Prado', + 'Purificación', + 'Rioblanco', + 'Roncesvalles', + 'Rovira', + 'Saldaña', + 'San Antonio', + 'San Luis', + 'Santa Isabel', + 'Suárez', + 'Valle de San Juan', + 'Venadillo', + 'Villahermosa', + 'Villarrica' + ), + 'VAC' => array( + 'Alcalá', + 'Andalucía', + 'Ansermanuevo', + 'Argelia', + 'Bolívar', + 'Buenaventura', + 'Buga', + 'Bugalagrande', + 'Caicedonia', + 'Cali', + 'Calima (Darién)', + 'Candelaria', + 'Cartago', + 'Dagua', + 'El Águila', + 'El Cairo', + 'El Cerrito', + 'El Dovio', + 'Florida', + 'Ginebra', + 'Guacarí', + 'Jamundí', + 'La Cumbre', + 'La Unión', + 'La Victoria', + 'Obando', + 'Palmira', + 'Pradera', + 'Restrepo', + 'Riofrío', + 'Roldanillo', + 'San Pedro', + 'Sevilla', + 'Toro', + 'Trujillo', + 'Tulúa', + 'Ulloa', + 'Versalles', + 'Vijes', + 'Yotoco', + 'Yumbo', + 'Zarzal' + ), + 'VAU' => array( + 'Carurú', + 'Mitú', + 'Taraira' + ), + 'VID' => array( + 'Cumaribo', + 'La Primavera', + 'Puerto Carreño', + 'Santa Rosalía' + ), +); diff --git a/lib/wc-city-select/readme.txt b/lib/wc-city-select/readme.txt new file mode 100644 index 0000000..71644ce --- /dev/null +++ b/lib/wc-city-select/readme.txt @@ -0,0 +1,79 @@ +=== WC City Select === +Contributors: mantish +Donate link: mailto:paypal@8manos.com +Tags: woocommerce, cities, city, city select, cities select, city dropdown, cities dropdown, woocommerce city, woocommerce cities +Requires at least: 4.0 +Tested up to: 4.7.3 +Stable tag: 1.0.3 +WC requires at least: 2.2 +WC tested up to: 2.7.0 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +City Select for WooCommerce. Show a dropdown select as the cities input. + +== Description == + +WooCommerce uses a text input for the customers to enter the city or town. With this plugin you can provide a list of cities to be shown as a select dropdown. + +This will be shown in checkout pages, edit addresses pages and shipping calculator if it's configured that way. + +A list of cities has to be loaded in the functions.php file (the plugin already includes cities from Colombia and Iran). Please check the Installation section for more info. + +### Github + +Contribute at https://github.com/8manos/wc-city-select + +== Installation == + +1. Upload to the `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress +1. Use `wc_city_select_cities` filter to load your cities. This is done similarly to [adding states/provinces](https://docs.woothemes.com/document/addmodify-states/). It should be added on your functions.php or a custom plugin. + +` +add_filter( 'wc_city_select_cities', 'my_cities' ); +/** + * Replace XX with the country code. Instead of YYY, ZZZ use actual state codes. + */ +function my_cities( $cities ) { + $cities['XX'] = array( + 'YYY' => array( + 'City ', + 'Another City' + ), + 'ZZZ' => array( + 'City 3', + 'City 4' + ) + ); + return $cities; +} +` + +It's also possible to use a list of cities without grouping them by state: + +` +add_filter( 'wc_city_select_cities', 'my_cities' ); +function my_cities( $cities ) { + $cities['XX'] = array( + 'City ', + 'Another City' + ); + return $cities; +} +` + +== Changelog == + += 1.0.3 = +* fix some issues when loading cities initially, that were causing warnings. + += 1.0.2 = +* fix some issues with shipping calculator and other edge cases. +* Now works with countries that have no states, only cities. + += 1.0.1 = +* select2 enhancement when available. Adds a JS version of the select dropdown. + += 1.0 = +* First release. diff --git a/lib/wc-city-select/wc-city-select.php b/lib/wc-city-select/wc-city-select.php new file mode 100644 index 0000000..a14a620 --- /dev/null +++ b/lib/wc-city-select/wc-city-select.php @@ -0,0 +1,196 @@ +cities ) ) { + $this->load_country_cities(); + } + + if ( ! is_null( $cc ) ) { + return isset( $this->cities[ $cc ] ) ? $this->cities[ $cc ] : false; + } else { + return $this->cities; + } + } + + public function load_country_cities() { + global $cities; + + // Load only the city files the shop owner wants/needs. + $allowed = array_merge( WC()->countries->get_allowed_countries(), WC()->countries->get_shipping_countries() ); + + if ( $allowed ) { + foreach ( $allowed as $code => $country ) { + if ( ! isset( $cities[ $code ] ) && file_exists( $this->get_plugin_path() . '/cities/' . $code . '.php' ) ) { + include( $this->get_plugin_path() . '/cities/' . $code . '.php' ); + } + } + } + + $this->cities = apply_filters( 'wc_city_select_cities', $cities ); + } + + public function form_field_city( $field, $key, $args, $value ) { + + // Do we need a clear div? + if ( ( ! empty( $args['clear'] ) ) ) { + $after = '
'; + } else { + $after = ''; + } + + // Required markup + if ( $args['required'] ) { + $args['class'][] = 'validate-required'; + $required = ' *'; + } else { + $required = ''; + } + + // Custom attribute handling + $custom_attributes = array(); + + if ( ! empty( $args['custom_attributes'] ) && is_array( $args['custom_attributes'] ) ) { + foreach ( $args['custom_attributes'] as $attribute => $attribute_value ) { + $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"'; + } + } + + // Validate classes + if ( ! empty( $args['validate'] ) ) { + foreach( $args['validate'] as $validate ) { + $args['class'][] = 'validate-' . $validate; + } + } + + // field p and label + $field = '

'; + if ( $args['label'] ) { + $field .= ''; + } + + // Get Country + $country_key = $key == 'billing_city' ? 'billing_country' : 'shipping_country'; + $current_cc = WC()->checkout->get_value( $country_key ); + + $state_key = $key == 'billing_city' ? 'billing_state' : 'shipping_state'; + $current_sc = WC()->checkout->get_value( $state_key ); + + // Get country cities + $cities = $this->get_cities( $current_cc ); + + if ( is_array( $cities ) ) { + + $field .= ''; + + } else { + + $field .= ''; + } + + // field description and close wrapper + if ( $args['description'] ) { + $field .= '' . esc_attr( $args['description'] ) . ''; + } + + $field .= '

' . $after; + + return $field; + } + + public function load_scripts() { + if ( is_cart() || is_checkout() || is_wc_endpoint_url( 'edit-address' ) ) { + + $city_select_path = $this->get_plugin_url() . 'assets/js/city-select.js'; + wp_enqueue_script( 'wc-city-select', $city_select_path, array( 'jquery', 'woocommerce' ), self::VERSION, true ); + + $cities = json_encode( $this->get_cities() ); + wp_localize_script( 'wc-city-select', 'wc_city_select_params', array( + 'cities' => $cities, + 'i18n_select_city_text' => esc_attr__( 'Select an option…', 'woocommerce' ) + ) ); + } + } + + public function get_plugin_path() { + + if ( $this->plugin_path ) { + return $this->plugin_path; + } + + return $this->plugin_path = plugin_dir_path( __FILE__ ); + } + + public function get_plugin_url() { + + if ( $this->plugin_url ) { + return $this->plugin_url; + } + + return $this->plugin_url = plugin_dir_url( __FILE__ ); + } + } + + $GLOBALS['wc_city_select'] = new WC_City_Select(); +} diff --git a/readme.txt b/readme.txt index 4832c69..46295b2 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: htdat Tags: WooCommerce Vietnam, vietnam, vietnamese, vietnam provinces, paypal for vietnam dong, vnd, vietnam dong, vietnam currency, vietnam customization Requires at least: 4.3 -Tested up to: 4.7 +Tested up to: 4.7.2 Stable tag: 1.2 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -19,6 +19,7 @@ Xem phiên bản tiếng Việt tại đây https://vi.wordpress.org/plugins/woo * Change the VND currency symbol `đ` to anything, e.g: `VND`, `VNĐ`, `đồng`, etc. * Add provinces for Vietnam when visitors select Vietnam as a country of the shipping (billing) address. This is not available in WooCommerce by default. +* Add districts to Vietnam provinces. * Convert `000` of prices to `K` (or anything). E.g: `50000` (VND) will be `50K` (VND), or `50 thousand` (VND). * Support `VND` for [the PayPal Standard gateway](https://docs.woocommerce.com/document/paypal-standard/). Convert `VND` prices to any PayPal supported currency before sending visitors to the PayPal pages. @@ -26,7 +27,7 @@ Xem phiên bản tiếng Việt tại đây https://vi.wordpress.org/plugins/woo In the future, this plugin will add more and more features for the Vietnam market: -* Integrate all districts to Vietnam provinces. +* Integrate all districts to Vietnam provinces. (available since 1.2) * Integrate at least one solution for collecting money by phone cards. * Integrate the Vietnam payment gateways like 1Pay, OnePay, BaoKim, Ngan Luong, etc. * Integrate the Vietnam shipping solutions like ShipChung, Giaohangnhanh, ViettelPost, etc. @@ -69,6 +70,9 @@ Follow these steps to install and use the plugin: == Changelog == += 1.2 - 2017.03.03 = +* Integrate all districts to Vietnam provinces. Credits: [WC City Select by 8manos](https://github.com/8manos/wc-city-select) and [the Vietnam district data by 10h30](https://github.com/htdat/woo-viet/issues/4#issuecomment-277449462) + = 1.1 = * Replace all “WooCommerce for Vietnam” to “Woo Viet” * Replace all “woocomerce-for-vietnam” to “woo-viet” @@ -76,4 +80,9 @@ Follow these steps to install and use the plugin: = 1.0 = * First release. -* Upload to WordPress.org \ No newline at end of file +* Upload to WordPress.org + +== Upgrade Notice == + += 1.2 = +The new version 1.2 comes with the feature "Add districts to Vietnam provinces". diff --git a/woo-viet.php b/woo-viet.php index 237d540..e056150 100644 --- a/woo-viet.php +++ b/woo-viet.php @@ -40,6 +40,10 @@ class WooViet { array( 'enabled' => 'yes', ), + 'add_city' => + array( + 'enabled' => 'yes', + ), 'change_currency_symbol' => array( 'enabled' => 'yes', @@ -112,7 +116,7 @@ class WooViet { * @since 1.0 */ public function i18n() { - load_plugin_textdomain( 'freshfunbits', false, basename( dirname( __FILE__ ) ) . '/languages/' ); + load_plugin_textdomain( 'woo-viet', false, basename( dirname( __FILE__ ) ) . '/languages/' ); } /** @@ -133,6 +137,12 @@ class WooViet { if ( 'yes' == $settings['add_province']['enabled'] ) { include( WOO_VIET_DIR . 'inc/class-wooviet-provinces.php' ); $this->Provinces = new WooViet_Provinces(); + + // Enable "Add cities for Vietnam" if the province option is selected. + if ( 'yes' == $settings['add_city']['enabled'] ) { + include( WOO_VIET_DIR . 'inc/class-wooviet-cities.php' ); + new WooViet_Cities(); + } } include( WOO_VIET_DIR . 'inc/class-wooviet-currency.php' ); @@ -165,7 +175,9 @@ class WooViet { * @return array */ static function get_settings() { - return get_option( 'woo-viet', self::$default_settings ); + $settings = get_option( 'woo-viet', self::$default_settings ); + $settings = wp_parse_args( $settings, self::$default_settings ); + return $settings; } } \ No newline at end of file