from server 31_0

This commit is contained in:
Shohrat 2023-10-31 19:02:17 +00:00
parent 89f1480f35
commit f612ec351e
42 changed files with 3683 additions and 61 deletions

View File

@ -30,7 +30,8 @@
"october/system": "1.1.*",
"october/backend": "1.1.*",
"october/cms": "1.1.*",
"laravel/framework": "~6.0"
"laravel/framework": "~6.0",
"renatio/dynamicpdf-plugin": "^6.0"
},
"require-dev": {
"phpunit/phpunit": "^8.4|^9.3.3",

View File

@ -41,7 +41,7 @@ return [
|
*/
'url' => 'http://localhost',
'url' => 'https://gurlushyk.com.tm',
/*
|--------------------------------------------------------------------------

248
config/dompdf.php Normal file
View File

@ -0,0 +1,248 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Settings
|--------------------------------------------------------------------------
|
| Set some default values. It is possible to add all defines that can be set
| in dompdf_config.inc.php. You can also override the entire config file.
|
*/
'show_warnings' => false, // Throw an Exception on warnings from dompdf
'orientation' => 'portrait',
/*
* Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show and £.
*/
'convert_entities' => true,
'defines' => array(
/**
* The location of the DOMPDF font directory
*
* The location of the directory where DOMPDF will store fonts and font metrics
* Note: This directory must exist and be writable by the webserver process.
* *Please note the trailing slash.*
*
* Notes regarding fonts:
* Additional .afm font metrics can be added by executing load_font.php from command line.
*
* Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
* be embedded in the pdf file or the PDF may not display correctly. This can significantly
* increase file size unless font subsetting is enabled. Before embedding a font please
* review your rights under the font license.
*
* Any font specification in the source HTML is translated to the closest font available
* in the font directory.
*
* The pdf standard "Base 14 fonts" are:
* Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
* Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
* Symbol, ZapfDingbats.
*/
"font_dir" => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
/**
* The location of the DOMPDF font cache directory
*
* This directory contains the cached font metrics for the fonts used by DOMPDF.
* This directory can be the same as DOMPDF_FONT_DIR
*
* Note: This directory must exist and be writable by the webserver process.
*/
"font_cache" => storage_path('fonts'),
/**
* The location of a temporary directory.
*
* The directory specified must be writeable by the webserver process.
* The temporary directory is required to download remote images and when
* using the PFDLib back end.
*/
"temp_dir" => sys_get_temp_dir(),
/**
* ==== IMPORTANT ====
*
* dompdf's "chroot": Prevents dompdf from accessing system files or other
* files on the webserver. All local files opened by dompdf must be in a
* subdirectory of this directory. DO NOT set it to '/' since this could
* allow an attacker to use dompdf to read any files on the server. This
* should be an absolute path.
* This is only checked on command line call by dompdf.php, but not by
* direct class use like:
* $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
*/
"chroot" => realpath(base_path()),
/**
* Whether to enable font subsetting or not.
*/
"enable_font_subsetting" => false,
/**
* The PDF rendering backend to use
*
* Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
* 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will
* fall back on CPDF. 'GD' renders PDFs to graphic files. {@link
* Canvas_Factory} ultimately determines which rendering class to instantiate
* based on this setting.
*
* Both PDFLib & CPDF rendering backends provide sufficient rendering
* capabilities for dompdf, however additional features (e.g. object,
* image and font support, etc.) differ between backends. Please see
* {@link PDFLib_Adapter} for more information on the PDFLib backend
* and {@link CPDF_Adapter} and lib/class.pdf.php for more information
* on CPDF. Also see the documentation for each backend at the links
* below.
*
* The GD rendering backend is a little different than PDFLib and
* CPDF. Several features of CPDF and PDFLib are not supported or do
* not make any sense when creating image files. For example,
* multiple pages are not supported, nor are PDF 'objects'. Have a
* look at {@link GD_Adapter} for more information. GD support is
* experimental, so use it at your own risk.
*
* @link http://www.pdflib.com
* @link http://www.ros.co.nz/pdf
* @link http://www.php.net/image
*/
"pdf_backend" => "CPDF",
/**
* PDFlib license key
*
* If you are using a licensed, commercial version of PDFlib, specify
* your license key here. If you are using PDFlib-Lite or are evaluating
* the commercial version of PDFlib, comment out this setting.
*
* @link http://www.pdflib.com
*
* If pdflib present in web server and auto or selected explicitely above,
* a real license code must exist!
*/
//"DOMPDF_PDFLIB_LICENSE" => "your license key here",
/**
* html target media view which should be rendered into pdf.
* List of types and parsing rules for future extensions:
* http://www.w3.org/TR/REC-html40/types.html
* screen, tty, tv, projection, handheld, print, braille, aural, all
* Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
* Note, even though the generated pdf file is intended for print output,
* the desired content might be different (e.g. screen or projection view of html file).
* Therefore allow specification of content here.
*/
"default_media_type" => "screen",
/**
* The default paper size.
*
* North America standard is "letter"; other countries generally "a4"
*
* @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.)
*/
"default_paper_size" => "a4",
/**
* The default font family
*
* Used if no suitable fonts can be found. This must exist in the font folder.
* @var string
*/
"default_font" => "serif",
/**
* Image DPI setting
*
* This setting determines the default DPI setting for images and fonts. The
* DPI may be overridden for inline images by explictly setting the
* image's width & height style attributes (i.e. if the image's native
* width is 600 pixels and you specify the image's width as 72 points,
* the image will have a DPI of 600 in the rendered PDF. The DPI of
* background images can not be overridden and is controlled entirely
* via this parameter.
*
* For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
* If a size in html is given as px (or without unit as image size),
* this tells the corresponding size in pt.
* This adjusts the relative sizes to be similar to the rendering of the
* html page in a reference browser.
*
* In pdf, always 1 pt = 1/72 inch
*
* Rendering resolution of various browsers in px per inch:
* Windows Firefox and Internet Explorer:
* SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
* Linux Firefox:
* about:config *resolution: Default:96
* (xorg screen dimension in mm and Desktop font dpi settings are ignored)
*
* Take care about extra font/image zoom factor of browser.
*
* In images, <img> size in pixel attribute, img css style, are overriding
* the real image dimension in px for rendering.
*
* @var int
*/
"dpi" => 96,
/**
* Enable inline PHP
*
* If this setting is set to true then DOMPDF will automatically evaluate
* inline PHP contained within <script type="text/php"> ... </script> tags.
*
* Enabling this for documents you do not trust (e.g. arbitrary remote html
* pages) is a security risk. Set this option to false if you wish to process
* untrusted documents.
*
* @var bool
*/
"enable_php" => false,
/**
* Enable inline Javascript
*
* If this setting is set to true then DOMPDF will automatically insert
* JavaScript code contained within <script type="text/javascript"> ... </script> tags.
*
* @var bool
*/
"enable_javascript" => true,
/**
* Enable remote file access
*
* If this setting is set to true, DOMPDF will access remote sites for
* images and CSS files as required.
* This is required for part of test case www/test/image_variants.html through www/examples.php
*
* Attention!
* This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
* allowing remote access to dompdf.php or on allowing remote html code to be passed to
* $dompdf = new DOMPDF(, $dompdf->load_html(...,
* This allows anonymous users to download legally doubtful internet content which on
* tracing back appears to being downloaded by your server, or allows malicious php code
* in remote html pages to be executed by your server with your account privileges.
*
* @var bool
*/
"enable_remote" => true,
/**
* A ratio applied to the fonts height to be more like browsers' line height
*/
"font_height_ratio" => 1.1,
/**
* Use the more-than-experimental HTML5 Lib parser
*/
"enable_html5_parser" => false,
),
);

View File

@ -54,8 +54,15 @@ class MessagesapiController extends Controller
return $chatroom;
});
if(count($chatrooms) < 0){
$chatrooms[0]->path = 'https://gurlushyk.com.tm' . \Config::get('cms.storage.media.path');
if(count($chatrooms) > 0){
for ($i = 0; $i < count($chatrooms); $i++) {
$chatrooms[$i]->path = 'https://gurlushyk.com.tm' . \Config::get('cms.storage.media.path');
}
}
// dump(\DB::getQueryLog());
// dd($this->helpers->apiArrayResponseBuilder(200, 'success', ['chatrooms' => $chatrooms]));

View File

@ -12,6 +12,8 @@ use TPS\Birzha\Models\VendorSales;
use RainLab\User\Models\User as UserClient;
use Sms\Sms\Models\SmsSender;
use RainLab\Translate\Models\Message;
use App;
use Config;
class OrderApiController extends Controller
{
@ -26,7 +28,10 @@ class OrderApiController extends Controller
$this->helpers = $helpers;
}
public function createOrder(Request $request){
$data = $request->all();
$validator = Validator::make($data, [
@ -53,7 +58,7 @@ class OrderApiController extends Controller
$order->save();
$this->sendSMS($currentUser->username, Message::trans('success.ordered'));
$this->sendSMS($currentUser->username, 'Siz üstünlikli sargyt etdiňiz. Menejerimiz siz bilen habarlaşar');
// [{"item":34,"qty":1},{"item":35,"qty":3}]
$orderItem = new OrderItems;
@ -78,7 +83,7 @@ class OrderApiController extends Controller
$vendorPhones = VendorSales::where("order_id", $order->id)->with("vendor")->groupBy("vendor_id")->get();
for ($x = 0; $x < count($vendorPhones); $x++) {
$this->sendSMS($vendorPhones[$x]->vendor->username, Message::trans('success.ordered.vendor'));
$this->sendSMS($vendorPhones[$x]->vendor->username, 'Gurluşyk programmasyndan size sargyt edildi');
}
@ -100,24 +105,28 @@ class OrderApiController extends Controller
$currentUser = \JWTAuth::parseToken()->authenticate();
//$orders = Orders::where("user_id", $currentUser->id)->with(["order_items"])->orderBy('id', 'DESC')->paginate(12);
$orders = VendorSales::with("order")->whereHas('order', function ($query) use($currentUser) {
$query->where('user_id', $currentUser->id);
})->groupBy("order_id")->orderBy("id", "DESC")->paginate(12);
$orders = Orders::where("user_id", $currentUser->id)->with('order_items')->orderBy('id', 'DESC')->paginate(12);
for ($i = 0; $i < count($orders); $i++) {
$products = VendorSales::where("order_id", $orders[$i]->order_id)->with(["product" => function($q){
$q->with([
'translations:locale,model_id,attribute_data',
$product_items = $orders[$i]->order_items[0]->items;
$productsCollectId = [];
for ($ii = 0; $ii < count($product_items); $ii++) {
$productsCollectId[] = (int)$product_items[$ii]["item"];
}
$orders[$i]->products = Product::whereIn("id", $productsCollectId)
->with(['translations:locale,model_id,attribute_data',
'images:attachment_id,attachment_type,disk_name,file_name',
'vendor:id,name,email,type,logo,banner,shop_title,slogan,is_instagram',
'place',
]);
}])->get();
'place',])
->withTrashed()
->get();
$orders[$i]->products = $products;
$orders[$i]->makeHidden(['order_items']);
}
return response()->json($orders, 200);
@ -126,6 +135,127 @@ class OrderApiController extends Controller
}
public function makeTemplate($sales)
{
//$asset = new \Cms\Classes\Asset($this->controller->getTheme());
$html = "<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<title>SARGYT #NO:" . $sales[0]->order_id . "</title>
<style>
table.table-bordered{
border:1px solid black;
margin-top:20px;
}
table {
width: 100%;
}
table.table-bordered > thead > tr > th{
border:1px solid black;
}
table.table-bordered > tbody > tr > td{
border:1px solid black;
}
table.table-bordered > tbody > tr > th{
border:1px solid black;
}
.tPadding{
padding: 4px !important;
}
.tFirsTd{
width: 5%;
}
tr{
height: 15px;
}
</style>
</head>
<body>
<div class='row '>
<table class='table-borderless' style='margin-bottom: 15px;border-bottom: 3px solid black;'>
<tbody>
<tr style='text-align: center;'>
<td style='text-align: center;font-weight: bold;font-size: 17px;'>Sargyt No: #".$sales[0]->order_id." Sene: ".$sales[0]->created_at->format('d.m.Y')."</td>
</tr>
</tbody>
</table>
<table class='table-borderless' style='margin-bottom: 5px;'>
<tbody style='font-size: 15px;'>
<tr>
<td style='text-align: left;'>Ady: ".$sales[0]->order->user->name."</td>
</tr>
<tr>
<td style='text-align: left;'>Telefon: +993 ".$sales[0]->order->user->username."</td>
</tr>
<tr>
<td style='text-align: left;'>Salgy: ".$sales[0]->order->address."</td>
</tr>
<tr>
<td style='text-align: left;'>Telefon2: +993 ".$sales[0]->order->phone."</td>
</tr>
<tr>
<td style='text-align: left;'>Bellik: ".$sales[0]->order->note."</td>
</tr>
</tbody>
</table>
</div>
<div class='row mt-2'>
<table class='table table-bordered' style='margin-bottom: 5px;' style='width: 100% !important;'>
<thead style='background: black;color: white;font-size: 14px;'>
<tr>
<th scope='col' style='font-weight: normal;' class='tFirsTd tPadding'>#</th>
<th scope='col' style='font-weight: normal;text-align: center;' class='tPadding'>Suraty</th>
<th scope='col' style='font-weight: normal;text-align: center;' class='tPadding'>Ady</th>
<th scope='col' style='font-weight: normal;text-align: center;' class='tPadding'>Bahasy</th>
</tr>
</thead>
<tbody style='font-size: 14px;'>";
for ($ii = 0; $ii < count($sales); $ii++) {
$html .="<tr>
<td style='text-align: center;'>".($ii+1)."</td>
<td style='text-align: center;'><img src='".$sales[$ii]->product->images[0]->path."' style='width: 90px !important;'</td>
<td style='text-align: center;'>".$sales[$ii]->product->name."</td>
<td style='text-align: center;'>".$sales[$ii]->product->price." TMT</td>
</tr>";
}
$html .="</tbody></table></div></body></html>";
return (string) $html;
}
public function onSavePdf($sales)
{
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML($this->makeTemplate($sales))->setWarnings(false);
$pdf->stream();
$pdf->save('storage/app/media/pdf/invoice_no_' . $sales[0]->order_id . '_'.$sales[0]->order->user->username.'.pdf');
$path = Config::get('app.url') . '/storage/app/media/pdf/invoice_no_' . (string)$sales[0]->order_id . '_'.(string)$sales[0]->order->user->username.'.pdf';
return (string)$path;
}
public function mySales(Request $request){
@ -136,8 +266,6 @@ class OrderApiController extends Controller
'order_id' => 'required',
]);
// $validator = $this->validateForm($data, $rules);
if($validator->fails()) {
return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() );
@ -148,9 +276,14 @@ class OrderApiController extends Controller
$sales = VendorSales::where('vendor_id', $currentUser->id)->where('order_id', $data["order_id"])->with(['order.user', 'product.images:attachment_id,attachment_type,disk_name,file_name', 'product.place', 'product.vendor:id,name,email,type,logo,banner,shop_title,slogan,is_instagram'])->orderBy('id', 'DESC')->paginate(15);
if(count($sales) > 0){
$sales[0]->pdf_url = $this->onSavePdf($sales);
}
return response()->json($sales, 200);
//return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$orders]);
}
@ -158,7 +291,7 @@ class OrderApiController extends Controller
$currentUser = \JWTAuth::parseToken()->authenticate();
$sales = VendorSales::select('id', 'order_id', 'created_at', 'status')->where('vendor_id', $currentUser->id)->groupBy('order_id')->orderBy('id', 'DESC')->paginate(15);
$sales = VendorSales::select('id', 'order_id', 'created_at', 'status')->with(['order.user:id,name,username', 'order:id,user_id,note,phone,address'])->where('vendor_id', $currentUser->id)->groupBy('order_id')->orderBy('id', 'DESC')->paginate(15);

View File

@ -17,6 +17,7 @@ use TPS\Birzha\Classes\MeasureResource;
use TPS\Birzha\Classes\ProductResource;
use DB;
use Carbon\Carbon;
use ToughDeveloper\ImageResizer\Classes\Image;
class ProductsAPIController extends Controller
{
@ -50,8 +51,25 @@ class ProductsAPIController extends Controller
$products = Product::where('keyword', 'like', "%".$data["key"]."%")->orWhere('name', 'like', "%".$data["key"]."%")->orWhere('slug','LIKE','%'.$data["key"].'%')->with(['translations:locale,model_id,attribute_data',
'images:attachment_id,attachment_type,disk_name,file_name',
'vendor:id,name,email,type,logo,banner,shop_title,slogan,is_instagram',
'place',])->where('status', 'approved')->paginate(15);
'place',])->where('status', 'approved')->get();
$products = $products->map(function ($product) {
$image = new Image($product->images[0]->path);
$imageResized = $image->resize(200,200)->getCachedImagePath(true);
$product->images[0]->path2 = $imageResized;
$product->images[0]->path = $imageResized;
return $product;
});
// foreach($products as $product) {
/// $image = new Image($product->images[0]->path);
// $product->images[0]->path = $image->resize(200,200)->getCachedImagePath(true);
// }
// dd($products[0]->images[0]);
} catch (\Throwable $th) {
return $this->helpers->apiArrayResponseBuilder(500, 'server error', ['message' => 'Something went wrong']);

View File

@ -75,6 +75,7 @@ Route::group(['prefix' =>'api/v1','namespace' =>'AhmadFatoni\ApiGenerator\Contro
Route::get('vendor/sales', 'OrderApiController@mySales');
Route::post('vendor/confirm/order', 'OrderApiController@confirmOrder');
Route::get('check/vendor/sales', 'OrderApiController@checkVendorSales');
Route::get('pdf/order/products', 'OrderApiController@createPdf');
Route::post('update/vendor/data', 'VendorApiController@updateVendor');

View File

@ -11,3 +11,9 @@ columns:
status:
label: status
type: switch
created_at:
label: Created
type: datetime
updated_at:
label: 'Telefondan giden sene'
type: datetime

View File

@ -373,6 +373,7 @@ class Plugin extends PluginBase
'TPS\Birzha\Components\CategoryProfile' => 'categoryprofile',
'TPS\Birzha\Components\Checkout' => 'checkout',
'TPS\Birzha\Components\OrderDetail' => 'orderdetail',
'TPS\Birzha\Components\VipProducts' => 'vipproducts',
];
}

View File

@ -15,6 +15,7 @@ use TPS\Birzha\Models\VendorSales;
use Flash;
use Sms\Sms\Models\SmsSender;
use RainLab\Translate\Models\Message;
use ValidationException;
class Checkout extends ComponentBase
{

View File

@ -0,0 +1,258 @@
<?php namespace TPS\Birzha\Components;
use Cms\Classes\ComponentBase;
use TPS\Birzha\Models\Category;
use TPS\Birzha\Models\Product;
use TPS\Birzha\Models\City;
use Session;
use DB;
use TPS\Birzha\Models\Favourites;
use RainLab\User\Facades\Auth;
use ValidationException;
use Validator;
use Flash;
class VipProducts extends ComponentBase
{
/*
* sort order parametr in a url string
*/
public $sortParam = '';
public $products;
public $categories;
public $cities;
public $type;
public $category;
public $city;
public $subCategory;
public function componentDetails()
{
return [
'name' => 'Get products by type',
'description' => 'Get products by type (new or vip)'
];
}
public function defineProperties()
{
return [
'type' => [
'title' => 'Select by type (new or vip)',
'description' => 'Select by type',
'type' => 'string',
'default' => ''
],
'perPage' => [
'title' => 'Number of offers',
'description' => 'How many offers do you want to display',
'default' => 1,
'validationPattern' => '^[0-9]+$',
'validationMessage' => 'Only numbers allowed'
],
'sortOrder' => [
'title' => 'Sort offers',
'description' => 'How to sort offers',
'type' => 'dropdown',
'default' => 'desc'
],
];
}
public function getSortOrderOptions() {
return [
'asc' => 'Created date (ascending)',
'desc' => 'Created date (descending)'
];
}
public function onRun() {
$this->products = $this->loadProducts();
$this->categories = $this->getCategories();
$this->cities = $this->getCities();
$this->type = $this->property('type');
$this->category = $this->getCategory();
$this->city = $this->getCity();
$this->subCategory = $this->getSubCategory();
}
protected function getCategories(){
$categories = Category::where('primary_key', '=', 0)->get();
return $categories;
}
protected function getCategory()
{
$cSlug = \Input::get('category');
$category = Category::transWhere('slug', $cSlug, Session::get('rainlab.translate.locale'))->first();
return $category;
}
protected function getSubCategory()
{
$cSlug = \Input::get('subcategory');
$category = Category::transWhere('slug', $cSlug, Session::get('rainlab.translate.locale'))->first();
return $category;
}
protected function getCities(){
$cities = City::all();
return $cities;
}
protected function getCity()
{
$cityId = \Input::get('city');
$city = City::find($cityId);
return $city;
}
protected function loadProducts() {
$sortOrderParam = strtolower(\Input::get('sort_order'));
// protect from sql injection
if($sortOrderParam != 'asc' && $sortOrderParam != 'desc') {
$sortOrder = $this->property('sortOrder');
} else {
$sortOrder = $sortOrderParam;
$this->sortParam = $sortOrderParam;
}
$type = $this->property('type');
$perPage = $this->property('perPage');
$subCat = \Input::get('subcategory');
$cSlug = null;
if(isset($subCat) && $subCat != ''){
$cSlug = $subCat;
}else{
$cSlug = \Input::get('category');
}
$city = \Input::get('city');
$minPrice = \Input::get('min_price');
$maxPrice = \Input::get('max_price');
$sort = \Input::get('sort');
$products = Product::query();
if (isset($cSlug) && $cSlug != '') {
$category = Category::transWhere('slug', $cSlug, Session::get('rainlab.translate.locale'))->first();
if ($category) {
$products = $category->products();
} else {
$products = null;
}
}
if (isset($city) && $city != '') {
$products = $products->where('place_id', $city);
}
if (isset($minPrice) && $minPrice != '') {
$products = $products->where('price', '>=', $minPrice);
}
if (isset($maxPrice) && $maxPrice != '') {
$products = $products->where('price', '<=', $maxPrice);
}
if (isset($sort) && $sort != '') {
$sort = self::getSort($sort);
$products = $products->orderBy( $sort[0], $sort[1]);
}
$products = $products->where("type", $type)->with('vendor')->withCount("images");
return $products ? $products->paginate($perPage) : null;
}
private static function getSort($sort): array
{
$sort_key = trim($sort, '-');
if (str_contains($sort, '-') && strpos($sort, '-') == 0) {
$sort_direction = 'desc';
}
return [
$sort_key,
$sort_direction ?? 'asc'
];
}
public function onCreateFav()
{
$data = input();
$validator = Validator::make($data, [
'product_id' => 'required'
]);
if($validator->fails()) {
Flash::error("Haryt maglumatyny nädogry");
}
$favourite = new Favourites;
$favourite->user_id = \Auth::user()->id;
$favourite->product_id = (int)$data['product_id'];
$favourite->save();
Flash::success("Haryt halanlaryma goşuldy");
}
public function onGetCategorySubs(){
$data = post();
$catgegory = null;
if(strlen($data["mainCat"]) > 0){
$category = Category::where('slug', $data["mainCat"])->first();
}
$subs = $this->getSubCatsq($category ? $category->id : $data["mainCat"]);
$checkSubs = $this->checkSubs($subs);
if($checkSubs == ''){
$checkSubs = [];
}
$allCats = $subs + $checkSubs;
$subCatsAll = Category::whereIn("id", $allCats)->orderBy("primary_key", "ASC")->get();
return $subCatsAll;
}
protected function checkSubs($catIds){
$data = '';
$subCats = [];
foreach ($catIds as $id){
$subs = $this->getSubCatsq($id);
if(count($subs) > 0){
foreach($subs as $subId){
array_unshift($subCats, $subId);
}
array_unshift($subCats, $id);
$data = $subCats;
}
}
return $data;
}
protected function getSubCatsq($catId){
$categoriesCustoms = Category::where("primary_key", $catId)->select("id", "primary_key")->get()->pluck("id")->toArray();
return $categoriesCustoms;
}
protected function checking($catIds){
$data=[];
foreach ($catIds as $id){
$subs = $this->getSubCatsq($id);
$data[] = $id;
if(count($subs) > 0){
$data[] = $subs;
}
}
}
}

View File

@ -118,8 +118,12 @@
</section>
<!-- Brands Area -->
{% if category.subs.count == 0 and category.products.count == 0 %}
{% if category.subs.count == 0 %}
{% if category.products.count == 0 %}
{% set counter = 0 %}
{% else %}
{% set counter = counter + 1 %}
{% endif %}
{% elseif category.subs.count > 0 %}
{% for sub in category.subs %}
{% if sub.products.count > 0 %}
@ -217,7 +221,7 @@
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
<button type="submit" id="filterButton" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
</div>
</div>
@ -573,8 +577,12 @@
event.preventDefault();
let sort = document.getElementById("sort_input");
let value = sort.value;
if($('#filterButton').prop("disabled")){
toastrCustomError("Kategoriýa saýlanmadyk");
}else{
submitForm(value);
}
}
function submitForm(value) {
let form = document.getElementById("filter_form");
@ -585,5 +593,37 @@
form.appendChild(sort);
form.submit()
}
$(document).ready(function() {
var category = $('#category').val();
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}
$('#category').on('change', function(e){
category=e.target.value;
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
$('#subcategory').on('change', function(e){
subcategory=e.target.value;
var category = $('#category').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
});
</script>
{% endput %}

View File

@ -51,7 +51,7 @@
<div class="coupon-form">
<input type="text" class="form-control" name="address" placeholder="{{ 'inputPlaceholder.Adresiniz'|_ }}" required>
<span style="position:relative;top: 35px;left: 18px;font-size: 13px;">+993</span>
<input type="number" class="form-control" name="phone_custom" min="61000000" max="65999999" placeholder="{{ 'inputPlaceholder.TelefonBelgi'|_ }}" style="padding-left: 52px;">
<input type="number" class="form-control" name="phone_custom" min="61000000" max="65999999" placeholder="{{ 'inputPlaceholder.TelefonBelgi'|_ }}" style="padding-left: 52px;" required>
<textarea class="form-control" id="order-notes" cols="30" rows="10" placeholder="{{ 'inputPlaceholder.Bellik'|_ }}" name="note" style="height: 90px; padding-top:10px;" required></textarea>
</div>
</div>

View File

@ -31,6 +31,8 @@
<div class="shop_by_catagory_slides owl-carousel">
<!-- Single Slide -->
{% if category.primary_key > 0 %}
{% if category.parent.primary_key > 0 %}
@ -153,7 +155,7 @@
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
<button type="submit" id="filterButton" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
</form>
</div>
@ -402,8 +404,12 @@
event.preventDefault();
let sort = document.getElementById("sort_input");
let value = sort.value;
if($('#filterButton').prop("disabled")){
toastrCustomError("Kategoriýa saýlanmadyk");
}else{
submitForm(value);
}
}
function submitForm(value) {
let form = document.getElementById("filter_form");
@ -414,5 +420,40 @@
form.appendChild(sort);
form.submit()
}
$(document).ready(function() {
var category = $('#category').val();
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}
$('#category').on('change', function(e){
category=e.target.value;
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
$('#subcategory').on('change', function(e){
subcategory=e.target.value;
var category = $('#category').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
});
</script>
{% endput %}

View File

@ -237,8 +237,8 @@
<div class="widget catagory mb-30">
<h6 class="widget-title">{{ 'productAdd.IkinjiKategoriya'|_ }}</h6>
<div class="widget-desc">
<select name="subcategory" class="form-control">
<option value="">{{ 'productAdd.Subkategoriya'|_ }}}</option>
<select name="subcategory" id="subcategory" class="form-control">
<option value="">{{ 'productAdd.Subkategoriya'|_ }}</option>
{% for item in parentCategory.subs %}
<option value="{{ item.slug }}" {{ item.id == category.id ? 'selected' : '' }}>{{ item.name }} </option>
{% endfor %}
@ -273,7 +273,7 @@
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
<button type="submit" id="filterButton" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
</div>
@ -430,8 +430,12 @@
event.preventDefault();
let sort = document.getElementById("sort_input");
let value = sort.value;
if($('#filterButton').prop("disabled")){
toastrCustomError("Kategoriýa saýlanmadyk");
}else{
submitForm(value);
}
}
function submitForm(value) {
let form = document.getElementById("filter_form");
@ -442,5 +446,42 @@
form.appendChild(sort);
form.submit()
}
$(document).ready(function() {
var category = $('#category').val();
var subcategory = $('#subcategory').val();
console.log(category);
console.log(subcategory);
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}
$('#category').on('change', function(e){
category=e.target.value;
var subcategory = $('#subcategory').val();
console.log(category);
console.log(subcategory);
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
$('#subcategory').on('change', function(e){
subcategory=e.target.value;
var category = $('#category').val();
console.log(category);
console.log(subcategory);
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
});
</script>
{% endput %}

View File

@ -9,7 +9,34 @@
<h5>{{ 'modal.GinisleyinMaglumat'|_ }}</h5>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ 'index'|page }}">{{ 'breadcrumbEsasySahypa'|_ }}</a></li>
<li class="breadcrumb-item"><a href="#">{{ 'breadcrumbHarytlar'|_ }}</a></li>
{% for category in product.categories %}
{% if category.parent.primary_key > 0 %}
{% if category.parent.products.count > 0 %}
<li class="breadcrumb-item"><a href="{{ 'category-products'|page({categorySlug: category.parent.parent.slug}) }}">{{ category.parent.parent.name }}</a></li>
{% else %}
<li class="breadcrumb-item"><a href="{{ 'category-profile'|page({categorySlug: category.parent.parent.slug}) }}">{{ category.parent.parent.name }}</a></li>
{% endif %}
{% endif %}
{% if category.primary_key > 0 %}
{% if category.parent.products.count > 0 %}
<li class="breadcrumb-item"><a href="{{ 'category-products'|page({categorySlug: category.parent.slug}) }}">{{ category.parent.name }}</a></li>
{% else %}
<li class="breadcrumb-item"><a href="{{ 'category-profile'|page({categorySlug: category.parent.slug}) }}">{{ category.parent.name }}</a></li>
{% endif %}
{% endif %}
{% if category %}
{% if category.products.count > 0 %}
<li class="breadcrumb-item"><a href="{{ 'category-products'|page({categorySlug: category.slug}) }}">{{ category.name }}</a></li>
{% else %}
<li class="breadcrumb-item"><a href="{{ 'category-profile'|page({categorySlug: category.slug}) }}">{{ category.name }}</a></li>
{% endif %}
{% endif %}
{% endfor %}
<li class="breadcrumb-item active">{{ product.name }}</li>
</ol>
</div>

View File

@ -195,7 +195,8 @@
}
function showLatestMessage(data) {
$('.message_form2 input').val('');
//$('.message_form2 input').val('');
$("#order-notes").val('');
$(data.latest_message_area).insertBefore('.message_form2')
var bottom= $('.chat_area-inner').height()+$('.chat_area-inner').prop('scrollHeight');

View File

@ -0,0 +1,398 @@
{% set products = __SELF__.products %}
{% set categories = __SELF__.categories %}
{% set cities = __SELF__.cities %}
{% set type = __SELF__.type %}
{% set city = __SELF__.city %}
{% set category = __SELF__.category %}
{% set subCategory = __SELF__.subCategory %}
{% for product in products %}
<!-- Quick View Modal Area -->
<div class="modal fade" id="quickview{{product.id}}" tabindex="-1" role="dialog" aria-labelledby="quickview" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<button type="button" class="close btn" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<div class="modal-body">
<div class="quickview_body">
<div class="container">
<div class="row">
<div class="col-12 col-lg-5">
<div class="quickview_pro_img">
<img class="first_img" src="{{ product.images[0].thumb(500,625,{'mode':'crop'}) }}" alt="Gurluşyk, Gurluşyk platform, bezeg gurluşyk, gipsler merkezi, {{ product.name }}">
{% if product.images_count > 1 %}
<img class="hover_img" src="{{ product.images[1].thumb(500,625,{'mode':'crop'}) }}" alt="Gurluşyk, Gurluşyk platform, bezeg gurluşyk, gipsler merkezi, {{ product.name }}">
{% endif %}
</div>
</div>
<div class="col-12 col-lg-7">
<div class="quickview_pro_des">
<h4 class="title">{{ product.name }}</h4>
<div class="top_seller_product_rating mb-15">
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
</div>
<h5 class="price">
{% if product.vendor.web2 > 0 %}
<del style="color: rgb(253, 0, 24);">{{ product.price }} TMT</del>
{{ product.getDiscountedPrice(product.vendor.web2) }} TMT
{% else %}
{{ product.price }} TMT
{% endif %}
</h5> <span class="badge ml-2 {{ product.stock == 0 ? 'badge-secondary' : 'badge-success' }}">{{ product.stock == 0 ? 'productAdd.ZakazaGelyar'|_ : 'productAdd.ElimizdeBar'|_ }}</span>
<p>{{ html_limit(product.description, 100) }}</p>
<a href="{{ 'product'|page({id: product.id}) }}">{{ 'modal.GinisleyinMaglumat'|_ }}</a>
</div>
<!-- Add to Cart Form -->
<form class="cart" method="post">
<div class="quantity">
<input type="number" class="qty-text form-control" id="quantity{{ product.id }}" step="1" min="1" value="1">
</div>
{% if user %}
<div class="product_add_to_cart addToCard" data-id="{{ product.id }}" data-price="{{ product.price }}" data-image="{{ product.images[0].path }}" data-name="{{ product.name }}" data-vendor="{{ product.vendor.id }}">
<a href="#" class="btn btn-primary mt-1 mt-md-0 ml-1 ml-md-3">{{ 'product.SebedeGos'|_ }}</a>
</div>
{% else %}
<div class="product_add_to_cart" data-id="{{ product.id }}" data-price="{{ product.price }}" data-image="{{ product.images[0].path }}" data-name="{{ product.name }}" data-vendor="{{ product.vendor.id }}">
<a href="{{ 'login'|page }}" class="btn btn-primary mt-1 mt-md-0 ml-1 ml-md-3">{{ 'product.SebedeGos'|_ }}</a>
</div>
{% endif %}
<!-- Wishlist -->
<div class="modal_pro_wishlist">
{% if user %}
<a
data-request="onCreateFav"
data-request-flash
data-request-validate
data-request-data="product_id: {{ product.id }}"
href="#"><i class="icofont-heart"></i></a>
{% else %}
<a href="{{ 'login'|page }}"><i class="icofont-heart"></i></a>
{% endif %}
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Quick View Modal Area -->
{% endfor %}
<!-- Breadcumb Area -->
<div class="breadcumb_area">
<div class="container h-100">
<div class="row h-100 align-items-center">
<div class="col-12">
<h5>{{ 'breadcrumbHarytlar'|_ }}</h5>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ 'index'|page }}">{{ 'breadcrumbEsasySahypa'|_ }}</a></li>
<li class="breadcrumb-item active">VIP harytlar</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Breadcumb Area -->
<section class="shop_grid_area section_padding_100">
<div class="container">
{% if products.count() == 0 %}
<div class="container mb-5">
<div class="row d-block justify-content-center align-items-center">
<div class="col-6 d-block mx-auto">
<div class="text-center">
<img src="{{ 'assets/img/core-img/no-products.png'|theme }}" alt="Gurluşyk, Gurluşyk platform, bezeg gurluşyk, gipsler merkezi">
</div>
</div>
<div class="col-6 d-block mx-auto">
<div class="text-center">
<p>{{ 'product.SuwagtlykcaHarytYok'|_ }}</p>
</div>
</div>
</div>
</div>
{% else %}
<div class="row">
<div class="col-12 col-md-4 col-lg-3">
<div class="shop_sidebar_area">
<form action="{{ 'vip-products'|page({type: type}) }}" id="filter_form" method="GET">
<div class="widget catagory mb-30">
<h6 class="widget-title">{{ 'filter.Kategoriyalar'|_ }}</h6>
<div class="widget-desc">
<select name="category" class="form-control" id="category" onChange="getCategories(this.value);">
<option value="">{{ 'filter.KategoriyaSayla'|_ }}</option>
{% for mainCat in categories %}
<option value="{{ mainCat.slug }}" {{ mainCat.id == category.id ? 'selected' : '' }}>{{ mainCat.name }} </option>
{% endfor %}
</select>
</div>
</div>
<div class="widget catagory mb-30">
<h6 class="widget-title">{{ 'productAdd.IkinjiKategoriya'|_ }}</h6>
<div class="widget-desc">
<select name="subcategory" id="subcategory" class="form-control">
<option value="">{{ 'productAdd.Subkategoriya'|_ }}</option>
{% for sub in category.subs %}
<option value="{{ sub.slug }}" {{ subCategory.id == sub.id ? 'selected' : '' }}>{{ sub.name }} </option>
{% for subSub in sub.subs %}
<option value="{{ subSub.slug }}" {{ subCategory.id == subSub.id ? 'selected' : '' }}>{{ subSub.name }} </option>
{% endfor %}
{% endfor %}
</select>
</div>
</div>
<div class="widget brands mb-30">
<h6 class="widget-title">{{ 'filter.Saherler'|_ }}</h6>
<div class="widget-desc">
<select name="city" class="form-control">
<option value="">{{ 'filter.SaherSayla'|_ }}</option>
{% for city in cities %}
<option value="{{ city.id }}" {% if input('city') == city.id %} selected {% endif %}>{{ city.name }} </option>
{% endfor %}
</select>
</div>
</div>
<!-- Single Widget -->
<div class="widget price mb-30">
<h6 class="widget-title">{{ 'filter.Baha'|_ }}</h6>
<div class="row">
<div class="col-6">
<input class="form-control" type="number" name="min_price"
placeholder="0" value="{{input('min_price') ? input('min_price') : null}}">
</div>
<div class="col-6">
<input class="form-control" type="number" name="max_price"
placeholder="0" value="{{input('max_price') ? input('max_price') : null}}">
</div>
</div>
</div>
<button type="submit" id="filterButton" class="btn btn-primary" style="width: 100%"> {{ 'filter.Filterlemek'|_ }} </button>
</div>
</div>
<div class="col-12 col-md-8 col-lg-9">
<!-- Shop Top Sidebar -->
<div class="shop_top_sidebar_area d-flex flex-wrap align-items-center justify-content-between">
<div class="row" style="width: 100%">
<div class="col-8">
</div>
<div class="col-4">
<select class="form-control" onchange="sortHandle()" id="sort_input">
<option value="">{{ 'sortSaylanmadyk'|_ }}</option>
<option value="price">{{ 'sortArzandanGymmada'|_ }}</option>
<option value="-price">{{ 'sortGymmatdanArzana'|_ }}</option>
<option value="created_at">{{ 'sortTazedenKona'|_ }}</option>
<option value="-created_at">{{ 'sortKonedenTaza'|_ }}</option>
</select>
</div>
</div>
</form>
</div>
<div class="shop_grid_product_area">
<div class="row justify-content-start">
{% for product in products %}
<!-- Single Product -->
<div class="col-12 col-sm-6 col-md-4 col-lg-4">
<div class="single-product-area mb-30">
<a href="{{ 'product'|page({id: product.id}) }}">
<div class="product_image">
<!-- Product Image -->
<img class="normal_img" src="{{ product.images[0].thumb(680,700,{'mode':'crop'}) }}" alt="Gurluşyk, Gurluşyk platform, bezeg gurluşyk, gipsler merkezi, {{ product.name }}">
{% if product_images_count > 1 %}
<img class="hover_img" src="{{ product.images[1].thumb(680,700,{'mode':'crop'}) }}" alt="Gurluşyk, Gurluşyk platform, bezeg gurluşyk, gipsler merkezi, {{ product.name }}">
{% endif %}
{% if product.type_title %}
<div class="product_badge">
<span>{{product.type_title}}</span>
</div>
{% endif %}
<div class="product_wishlist">
{% if user %}
<a
data-request="onCreateFav"
data-request-flash
data-request-validate
data-request-data="product_id: {{ product.id }}"
href="#"><i class="icofont-heart"></i></a>
{% else %}
<a href="{{ 'login'|page }}"><i class="icofont-heart"></i></a>
{% endif %}
</div>
</div>
</a>
<!-- Product Description -->
<div class="product_description">
<!-- Add to cart -->
{% if user %}
<div class="product_add_to_cart addToCard" data-id="{{ product.id }}" data-price="{{ product.price }}" data-image="{{ product.images[0].path }}" data-name="{{ product.name }}" data-vendor="{{ product.vendor.id }}">
<input type="hidden" min="1" id="quantity{{ product.id }}" value="1">
<a href="#"><i class="icofont-shopping-cart"></i> {{ 'product.SebedeGos'|_ }}</a>
</div>
{% else %}
<div class="product_add_to_cart">
<a href="{{ 'login'|page }}"><i class="icofont-shopping-cart"></i> {{ 'product.SebedeGos'|_ }}</a>
</div>
{% endif %}
<!-- Quick View -->
<div class="product_quick_view">
<a href="#" data-toggle="modal" data-target="#quickview{{product.id}}"><i class="icofont-eye-alt"></i> {{ 'parallaxDolyMaglumat'|_ }}</a>
</div>
<p class="brand_name">{{product.vendor.shop_title}}</p>
<a href="{{ 'product'|page({id: product.id}) }}">{{ product.name }}</a>
<h6 class="product-price">
{% if product.vendor.web2 > 0 %}
<del style="color: rgb(253, 0, 24);">{{ product.price }} TMT</del>
{{ product.getDiscountedPrice(product.vendor.web2) }} TMT
{% else %}
{{ product.price }} TMT
{% endif %}
</h6>
<span class="badge mt-2 {{ product.stock == 0 ? 'badge-secondary' : 'badge-success' }}">{{ product.stock == 0 ? 'productAdd.ZakazaGelyar'|_ : 'productAdd.ElimizdeBar'|_ }}</span>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% if products.hasPages %}
<div class="shop_pagination_area mt-30">
<nav aria-label="Page navigation">
<ul class="pagination pagination-sm justify-content-center">
{% if products.currentPage > 1 %}
<li class="page-item"><a class="page-link" href="{{ products.previousPageUrl }}{{params}}">{{ 'paginationOnki'|_ }}</a></li>
{% endif %}
{% for page in range(1, products.lastPage) %}
{% if page == products.currentPage %}
<li class="page-item active"><a class="page-link" href="{{ products.url(page) }}{{params}}">{{ page }}</a></li>
{% elseif page > products.currentPage - 3 and page < products.currentPage + 3 %}
<li class="page-item"><a class="page-link" href="{{ products.url(page) }}{{params}}">{{ page }}</a></li>
{% elseif page == products.currentPage + 3 or page == products.currentPage - 3 %}
<li>...</li>
{% endif %}
{% endfor %}
{% if products.lastPage > products.currentPage %}
<li class="page-item"><a class="page-link" href="{{ products.nextPageUrl }}{{params}}">{{ 'paginationIndiki'|_ }}</a></li>
{% endif %}
</ul>
</nav>
</div>
{% endif %}
</div>
</div>
{% endif %}
</div>
</section>
{% put scripts %}
<script>
function getCategories(catId) {
if(catId == ''){
return;
}
$.request('onGetCategorySubs', {
data: {'mainCat': catId},
success: function(data) {
if(data.length > 0){
$('#subcategory').prop("disabled", false);
$('#subcategory').html(`<option value="">Subkategoriýa saýla</option>`);
for (var sub of data) {
$('#subcategory').append(`<option value="`+sub.slug+`">`+sub.name+`</option>`);
}
}else{
$('#subcategory').prop("disabled", true);
}
}
});
}
function sortHandle() {
event.preventDefault();
let sort = document.getElementById("sort_input");
let value = sort.value;
if($('#filterButton').prop("disabled")){
toastrCustomError("Kategoriýa saýlanmadyk");
}else{
submitForm(value);
}
}
function submitForm(value) {
let form = document.getElementById("filter_form");
let sort = document.createElement("input");
sort.name = "sort";
sort.type = "hidden";
sort.value = value;
form.appendChild(sort);
form.submit()
}
$(document).ready(function() {
var category = $('#category').val();
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}
$('#category').on('change', function(e){
category=e.target.value;
var subcategory = $('#subcategory').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
$('#subcategory').on('change', function(e){
subcategory=e.target.value;
var category = $('#category').val();
if(category == '' && subcategory == ''){
$('#filterButton').attr('disabled','disabled');
}else{
$('#filterButton').attr('disabled',false);
}
});
});
</script>
{% endput %}

View File

@ -2,6 +2,9 @@
use Backend\Classes\Controller;
use BackendMenu;
use TPS\Birzha\Models\Comment as CommentModel;
use Sms\Sms\Models\SmsSender;
use Flash;
class Comment extends Controller
{
@ -15,4 +18,25 @@ class Comment extends Controller
parent::__construct();
BackendMenu::setContext('TPS.Birzha', 'birzha-menu', 'side-menu-item3');
}
public function onSendSmsApprove($id){
$comment = CommentModel::where("id", $id)->with(["product.vendor"])->first();
$smsSender = new SmsSender();
$smsSender->phone = (string)'+993'.$comment->product->vendor->username;
$smsSender->message = strval((string) $comment->product->name.' teswir ýazyldy.');
$smsSender->save();
if($smsSender){
Flash::info("Ustunlikli Habar edildi");
//return $smsSender;
}else{
Flash::error("Ylanyshlyk yuze çykdy");
//return $smsSender;
}
}
}

View File

@ -15,6 +15,15 @@
<div class="form-buttons">
<div class="loading-indicator-container">
<button
style="background: darkgreen;"
type="button"
data-request="onSendSmsApprove"
data-load-indicator="Ugradylýar"
class="btn btn-default">
Tassyklanandygyny Sms Ugrat
</button>
<button
type="submit"
data-request="onSave"

View File

@ -84,7 +84,7 @@ class Product extends Model
'description',
];
public $fillable = ['name','slug','description'];
public $fillable = ['name','slug','description', 'images'];
public function beforeCreate()
{

View File

@ -5,9 +5,13 @@ columns:
product_id:
label: product_id
type: number
select: name
relation: product
user_id:
label: user_id
type: number
select: username
relation: user
comment:
label: comment
type: text

View File

@ -9,7 +9,7 @@ Route::group(['prefix' => 'api'], function() {
$me = \JWTAuth::parseToken()->authenticate()
->only(['id','name','surname','email','username','type', 'logo', 'banner', 'shop_title', 'slogan', 'is_instagram']);
$user["path"] = 'http://78.111.88.8:9086' . \Config::get('cms.storage.media.path');
$user["path"] = 'https://gurlushyk.com.tm' . \Config::get('cms.storage.media.path');
return Response::json(compact('me'));

View File

@ -0,0 +1,572 @@
<?php return array (
'codeToName' =>
array (
32 => 'space',
160 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
146 => 'quoteright',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
173 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
145 => 'quoteleft',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
165 => 'yen',
131 => 'florin',
167 => 'section',
164 => 'currency',
39 => 'quotesingle',
147 => 'quotedblleft',
171 => 'guillemotleft',
139 => 'guilsinglleft',
155 => 'guilsinglright',
150 => 'endash',
134 => 'dagger',
135 => 'daggerdbl',
183 => 'periodcentered',
182 => 'paragraph',
149 => 'bullet',
130 => 'quotesinglbase',
132 => 'quotedblbase',
148 => 'quotedblright',
187 => 'guillemotright',
133 => 'ellipsis',
137 => 'perthousand',
191 => 'questiondown',
96 => 'grave',
180 => 'acute',
136 => 'circumflex',
152 => 'tilde',
175 => 'macron',
168 => 'dieresis',
184 => 'cedilla',
151 => 'emdash',
198 => 'AE',
170 => 'ordfeminine',
216 => 'Oslash',
140 => 'OE',
186 => 'ordmasculine',
230 => 'ae',
248 => 'oslash',
156 => 'oe',
223 => 'germandbls',
207 => 'Idieresis',
233 => 'eacute',
159 => 'Ydieresis',
247 => 'divide',
221 => 'Yacute',
194 => 'Acircumflex',
225 => 'aacute',
219 => 'Ucircumflex',
253 => 'yacute',
234 => 'ecircumflex',
220 => 'Udieresis',
218 => 'Uacute',
203 => 'Edieresis',
169 => 'copyright',
229 => 'aring',
224 => 'agrave',
227 => 'atilde',
154 => 'scaron',
237 => 'iacute',
251 => 'ucircumflex',
226 => 'acircumflex',
231 => 'ccedilla',
222 => 'Thorn',
179 => 'threesuperior',
210 => 'Ograve',
192 => 'Agrave',
215 => 'multiply',
250 => 'uacute',
255 => 'ydieresis',
238 => 'icircumflex',
202 => 'Ecircumflex',
228 => 'adieresis',
235 => 'edieresis',
205 => 'Iacute',
177 => 'plusminus',
166 => 'brokenbar',
174 => 'registered',
200 => 'Egrave',
142 => 'Zcaron',
208 => 'Eth',
199 => 'Ccedilla',
193 => 'Aacute',
196 => 'Adieresis',
232 => 'egrave',
211 => 'Oacute',
243 => 'oacute',
239 => 'idieresis',
212 => 'Ocircumflex',
217 => 'Ugrave',
254 => 'thorn',
178 => 'twosuperior',
214 => 'Odieresis',
181 => 'mu',
236 => 'igrave',
190 => 'threequarters',
153 => 'trademark',
204 => 'Igrave',
189 => 'onehalf',
244 => 'ocircumflex',
241 => 'ntilde',
201 => 'Eacute',
188 => 'onequarter',
138 => 'Scaron',
176 => 'degree',
242 => 'ograve',
249 => 'ugrave',
209 => 'Ntilde',
245 => 'otilde',
195 => 'Atilde',
197 => 'Aring',
213 => 'Otilde',
206 => 'Icircumflex',
172 => 'logicalnot',
246 => 'odieresis',
252 => 'udieresis',
240 => 'eth',
158 => 'zcaron',
185 => 'onesuperior',
128 => 'Euro',
),
'isUnicode' => false,
'FontName' => 'Times-Bold',
'FullName' => 'Times Bold',
'FamilyName' => 'Times',
'Weight' => 'Bold',
'ItalicAngle' => '0',
'IsFixedPitch' => 'false',
'CharacterSet' => 'ExtendedRoman',
'FontBBox' =>
array (
0 => '-168',
1 => '-218',
2 => '1000',
3 => '935',
),
'UnderlinePosition' => '-100',
'UnderlineThickness' => '50',
'Version' => '002.000',
'EncodingScheme' => 'WinAnsiEncoding',
'CapHeight' => '676',
'XHeight' => '461',
'Ascender' => '683',
'Descender' => '-217',
'StdHW' => '44',
'StdVW' => '139',
'StartCharMetrics' => '317',
'C' =>
array (
32 => 250.0,
160 => 250.0,
33 => 333.0,
34 => 555.0,
35 => 500.0,
36 => 500.0,
37 => 1000.0,
38 => 833.0,
146 => 333.0,
40 => 333.0,
41 => 333.0,
42 => 500.0,
43 => 570.0,
44 => 250.0,
45 => 333.0,
173 => 333.0,
46 => 250.0,
47 => 278.0,
48 => 500.0,
49 => 500.0,
50 => 500.0,
51 => 500.0,
52 => 500.0,
53 => 500.0,
54 => 500.0,
55 => 500.0,
56 => 500.0,
57 => 500.0,
58 => 333.0,
59 => 333.0,
60 => 570.0,
61 => 570.0,
62 => 570.0,
63 => 500.0,
64 => 930.0,
65 => 722.0,
66 => 667.0,
67 => 722.0,
68 => 722.0,
69 => 667.0,
70 => 611.0,
71 => 778.0,
72 => 778.0,
73 => 389.0,
74 => 500.0,
75 => 778.0,
76 => 667.0,
77 => 944.0,
78 => 722.0,
79 => 778.0,
80 => 611.0,
81 => 778.0,
82 => 722.0,
83 => 556.0,
84 => 667.0,
85 => 722.0,
86 => 722.0,
87 => 1000.0,
88 => 722.0,
89 => 722.0,
90 => 667.0,
91 => 333.0,
92 => 278.0,
93 => 333.0,
94 => 581.0,
95 => 500.0,
145 => 333.0,
97 => 500.0,
98 => 556.0,
99 => 444.0,
100 => 556.0,
101 => 444.0,
102 => 333.0,
103 => 500.0,
104 => 556.0,
105 => 278.0,
106 => 333.0,
107 => 556.0,
108 => 278.0,
109 => 833.0,
110 => 556.0,
111 => 500.0,
112 => 556.0,
113 => 556.0,
114 => 444.0,
115 => 389.0,
116 => 333.0,
117 => 556.0,
118 => 500.0,
119 => 722.0,
120 => 500.0,
121 => 500.0,
122 => 444.0,
123 => 394.0,
124 => 220.0,
125 => 394.0,
126 => 520.0,
161 => 333.0,
162 => 500.0,
163 => 500.0,
'fraction' => 167.0,
165 => 500.0,
131 => 500.0,
167 => 500.0,
164 => 500.0,
39 => 278.0,
147 => 500.0,
171 => 500.0,
139 => 333.0,
155 => 333.0,
'fi' => 556.0,
'fl' => 556.0,
150 => 500.0,
134 => 500.0,
135 => 500.0,
183 => 250.0,
182 => 540.0,
149 => 350.0,
130 => 333.0,
132 => 500.0,
148 => 500.0,
187 => 500.0,
133 => 1000.0,
137 => 1000.0,
191 => 500.0,
96 => 333.0,
180 => 333.0,
136 => 333.0,
152 => 333.0,
175 => 333.0,
'breve' => 333.0,
'dotaccent' => 333.0,
168 => 333.0,
'ring' => 333.0,
184 => 333.0,
'hungarumlaut' => 333.0,
'ogonek' => 333.0,
'caron' => 333.0,
151 => 1000.0,
198 => 1000.0,
170 => 300.0,
'Lslash' => 667.0,
216 => 778.0,
140 => 1000.0,
186 => 330.0,
230 => 722.0,
'dotlessi' => 278.0,
'lslash' => 278.0,
248 => 500.0,
156 => 722.0,
223 => 556.0,
207 => 389.0,
233 => 444.0,
'abreve' => 500.0,
'uhungarumlaut' => 556.0,
'ecaron' => 444.0,
159 => 722.0,
247 => 570.0,
221 => 722.0,
194 => 722.0,
225 => 500.0,
219 => 722.0,
253 => 500.0,
'scommaaccent' => 389.0,
234 => 444.0,
'Uring' => 722.0,
220 => 722.0,
'aogonek' => 500.0,
218 => 722.0,
'uogonek' => 556.0,
203 => 667.0,
'Dcroat' => 722.0,
'commaaccent' => 250.0,
169 => 747.0,
'Emacron' => 667.0,
'ccaron' => 444.0,
229 => 500.0,
'Ncommaaccent' => 722.0,
'lacute' => 278.0,
224 => 500.0,
'Tcommaaccent' => 667.0,
'Cacute' => 722.0,
227 => 500.0,
'Edotaccent' => 667.0,
154 => 389.0,
'scedilla' => 389.0,
237 => 278.0,
'lozenge' => 494.0,
'Rcaron' => 722.0,
'Gcommaaccent' => 778.0,
251 => 556.0,
226 => 500.0,
'Amacron' => 722.0,
'rcaron' => 444.0,
231 => 444.0,
'Zdotaccent' => 667.0,
222 => 611.0,
'Omacron' => 778.0,
'Racute' => 722.0,
'Sacute' => 556.0,
'dcaron' => 672.0,
'Umacron' => 722.0,
'uring' => 556.0,
179 => 300.0,
210 => 778.0,
192 => 722.0,
'Abreve' => 722.0,
215 => 570.0,
250 => 556.0,
'Tcaron' => 667.0,
'partialdiff' => 494.0,
255 => 500.0,
'Nacute' => 722.0,
238 => 278.0,
202 => 667.0,
228 => 500.0,
235 => 444.0,
'cacute' => 444.0,
'nacute' => 556.0,
'umacron' => 556.0,
'Ncaron' => 722.0,
205 => 389.0,
177 => 570.0,
166 => 220.0,
174 => 747.0,
'Gbreve' => 778.0,
'Idotaccent' => 389.0,
'summation' => 600.0,
200 => 667.0,
'racute' => 444.0,
'omacron' => 500.0,
'Zacute' => 667.0,
142 => 667.0,
'greaterequal' => 549.0,
208 => 722.0,
199 => 722.0,
'lcommaaccent' => 278.0,
'tcaron' => 416.0,
'eogonek' => 444.0,
'Uogonek' => 722.0,
193 => 722.0,
196 => 722.0,
232 => 444.0,
'zacute' => 444.0,
'iogonek' => 278.0,
211 => 778.0,
243 => 500.0,
'amacron' => 500.0,
'sacute' => 389.0,
239 => 278.0,
212 => 778.0,
217 => 722.0,
'Delta' => 612.0,
254 => 556.0,
178 => 300.0,
214 => 778.0,
181 => 556.0,
236 => 278.0,
'ohungarumlaut' => 500.0,
'Eogonek' => 667.0,
'dcroat' => 556.0,
190 => 750.0,
'Scedilla' => 556.0,
'lcaron' => 394.0,
'Kcommaaccent' => 778.0,
'Lacute' => 667.0,
153 => 1000.0,
'edotaccent' => 444.0,
204 => 389.0,
'Imacron' => 389.0,
'Lcaron' => 667.0,
189 => 750.0,
'lessequal' => 549.0,
244 => 500.0,
241 => 556.0,
'Uhungarumlaut' => 722.0,
201 => 667.0,
'emacron' => 444.0,
'gbreve' => 500.0,
188 => 750.0,
138 => 556.0,
'Scommaaccent' => 556.0,
'Ohungarumlaut' => 778.0,
176 => 400.0,
242 => 500.0,
'Ccaron' => 722.0,
249 => 556.0,
'radical' => 549.0,
'Dcaron' => 722.0,
'rcommaaccent' => 444.0,
209 => 722.0,
245 => 500.0,
'Rcommaaccent' => 722.0,
'Lcommaaccent' => 667.0,
195 => 722.0,
'Aogonek' => 722.0,
197 => 722.0,
213 => 778.0,
'zdotaccent' => 444.0,
'Ecaron' => 667.0,
'Iogonek' => 389.0,
'kcommaaccent' => 556.0,
'minus' => 570.0,
206 => 389.0,
'ncaron' => 556.0,
'tcommaaccent' => 333.0,
172 => 570.0,
246 => 500.0,
252 => 556.0,
'notequal' => 549.0,
'gcommaaccent' => 500.0,
240 => 500.0,
158 => 444.0,
'ncommaaccent' => 556.0,
185 => 300.0,
'imacron' => 278.0,
128 => 500.0,
),
'CIDtoGID_Compressed' => true,
'CIDtoGID' => 'eJwDAAAAAAE=',
'_version_' => 6,
);

View File

@ -0,0 +1,572 @@
<?php return array (
'codeToName' =>
array (
32 => 'space',
160 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
146 => 'quoteright',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
173 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
145 => 'quoteleft',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
165 => 'yen',
131 => 'florin',
167 => 'section',
164 => 'currency',
39 => 'quotesingle',
147 => 'quotedblleft',
171 => 'guillemotleft',
139 => 'guilsinglleft',
155 => 'guilsinglright',
150 => 'endash',
134 => 'dagger',
135 => 'daggerdbl',
183 => 'periodcentered',
182 => 'paragraph',
149 => 'bullet',
130 => 'quotesinglbase',
132 => 'quotedblbase',
148 => 'quotedblright',
187 => 'guillemotright',
133 => 'ellipsis',
137 => 'perthousand',
191 => 'questiondown',
96 => 'grave',
180 => 'acute',
136 => 'circumflex',
152 => 'tilde',
175 => 'macron',
168 => 'dieresis',
184 => 'cedilla',
151 => 'emdash',
198 => 'AE',
170 => 'ordfeminine',
216 => 'Oslash',
140 => 'OE',
186 => 'ordmasculine',
230 => 'ae',
248 => 'oslash',
156 => 'oe',
223 => 'germandbls',
207 => 'Idieresis',
233 => 'eacute',
159 => 'Ydieresis',
247 => 'divide',
221 => 'Yacute',
194 => 'Acircumflex',
225 => 'aacute',
219 => 'Ucircumflex',
253 => 'yacute',
234 => 'ecircumflex',
220 => 'Udieresis',
218 => 'Uacute',
203 => 'Edieresis',
169 => 'copyright',
229 => 'aring',
224 => 'agrave',
227 => 'atilde',
154 => 'scaron',
237 => 'iacute',
251 => 'ucircumflex',
226 => 'acircumflex',
231 => 'ccedilla',
222 => 'Thorn',
179 => 'threesuperior',
210 => 'Ograve',
192 => 'Agrave',
215 => 'multiply',
250 => 'uacute',
255 => 'ydieresis',
238 => 'icircumflex',
202 => 'Ecircumflex',
228 => 'adieresis',
235 => 'edieresis',
205 => 'Iacute',
177 => 'plusminus',
166 => 'brokenbar',
174 => 'registered',
200 => 'Egrave',
142 => 'Zcaron',
208 => 'Eth',
199 => 'Ccedilla',
193 => 'Aacute',
196 => 'Adieresis',
232 => 'egrave',
211 => 'Oacute',
243 => 'oacute',
239 => 'idieresis',
212 => 'Ocircumflex',
217 => 'Ugrave',
254 => 'thorn',
178 => 'twosuperior',
214 => 'Odieresis',
181 => 'mu',
236 => 'igrave',
190 => 'threequarters',
153 => 'trademark',
204 => 'Igrave',
189 => 'onehalf',
244 => 'ocircumflex',
241 => 'ntilde',
201 => 'Eacute',
188 => 'onequarter',
138 => 'Scaron',
176 => 'degree',
242 => 'ograve',
249 => 'ugrave',
209 => 'Ntilde',
245 => 'otilde',
195 => 'Atilde',
197 => 'Aring',
213 => 'Otilde',
206 => 'Icircumflex',
172 => 'logicalnot',
246 => 'odieresis',
252 => 'udieresis',
240 => 'eth',
158 => 'zcaron',
185 => 'onesuperior',
128 => 'Euro',
),
'isUnicode' => false,
'FontName' => 'Times-Roman',
'FullName' => 'Times Roman',
'FamilyName' => 'Times',
'Weight' => 'Roman',
'ItalicAngle' => '0',
'IsFixedPitch' => 'false',
'CharacterSet' => 'ExtendedRoman',
'FontBBox' =>
array (
0 => '-168',
1 => '-218',
2 => '1000',
3 => '898',
),
'UnderlinePosition' => '-100',
'UnderlineThickness' => '50',
'Version' => '002.00',
'EncodingScheme' => 'WinAnsiEncoding',
'CapHeight' => '662',
'XHeight' => '450',
'Ascender' => '683',
'Descender' => '-217',
'StdHW' => '28',
'StdVW' => '84',
'StartCharMetrics' => '317',
'C' =>
array (
32 => 250.0,
160 => 250.0,
33 => 333.0,
34 => 408.0,
35 => 500.0,
36 => 500.0,
37 => 833.0,
38 => 778.0,
146 => 333.0,
40 => 333.0,
41 => 333.0,
42 => 500.0,
43 => 564.0,
44 => 250.0,
45 => 333.0,
173 => 333.0,
46 => 250.0,
47 => 278.0,
48 => 500.0,
49 => 500.0,
50 => 500.0,
51 => 500.0,
52 => 500.0,
53 => 500.0,
54 => 500.0,
55 => 500.0,
56 => 500.0,
57 => 500.0,
58 => 278.0,
59 => 278.0,
60 => 564.0,
61 => 564.0,
62 => 564.0,
63 => 444.0,
64 => 921.0,
65 => 722.0,
66 => 667.0,
67 => 667.0,
68 => 722.0,
69 => 611.0,
70 => 556.0,
71 => 722.0,
72 => 722.0,
73 => 333.0,
74 => 389.0,
75 => 722.0,
76 => 611.0,
77 => 889.0,
78 => 722.0,
79 => 722.0,
80 => 556.0,
81 => 722.0,
82 => 667.0,
83 => 556.0,
84 => 611.0,
85 => 722.0,
86 => 722.0,
87 => 944.0,
88 => 722.0,
89 => 722.0,
90 => 611.0,
91 => 333.0,
92 => 278.0,
93 => 333.0,
94 => 469.0,
95 => 500.0,
145 => 333.0,
97 => 444.0,
98 => 500.0,
99 => 444.0,
100 => 500.0,
101 => 444.0,
102 => 333.0,
103 => 500.0,
104 => 500.0,
105 => 278.0,
106 => 278.0,
107 => 500.0,
108 => 278.0,
109 => 778.0,
110 => 500.0,
111 => 500.0,
112 => 500.0,
113 => 500.0,
114 => 333.0,
115 => 389.0,
116 => 278.0,
117 => 500.0,
118 => 500.0,
119 => 722.0,
120 => 500.0,
121 => 500.0,
122 => 444.0,
123 => 480.0,
124 => 200.0,
125 => 480.0,
126 => 541.0,
161 => 333.0,
162 => 500.0,
163 => 500.0,
'fraction' => 167.0,
165 => 500.0,
131 => 500.0,
167 => 500.0,
164 => 500.0,
39 => 180.0,
147 => 444.0,
171 => 500.0,
139 => 333.0,
155 => 333.0,
'fi' => 556.0,
'fl' => 556.0,
150 => 500.0,
134 => 500.0,
135 => 500.0,
183 => 250.0,
182 => 453.0,
149 => 350.0,
130 => 333.0,
132 => 444.0,
148 => 444.0,
187 => 500.0,
133 => 1000.0,
137 => 1000.0,
191 => 444.0,
96 => 333.0,
180 => 333.0,
136 => 333.0,
152 => 333.0,
175 => 333.0,
'breve' => 333.0,
'dotaccent' => 333.0,
168 => 333.0,
'ring' => 333.0,
184 => 333.0,
'hungarumlaut' => 333.0,
'ogonek' => 333.0,
'caron' => 333.0,
151 => 1000.0,
198 => 889.0,
170 => 276.0,
'Lslash' => 611.0,
216 => 722.0,
140 => 889.0,
186 => 310.0,
230 => 667.0,
'dotlessi' => 278.0,
'lslash' => 278.0,
248 => 500.0,
156 => 722.0,
223 => 500.0,
207 => 333.0,
233 => 444.0,
'abreve' => 444.0,
'uhungarumlaut' => 500.0,
'ecaron' => 444.0,
159 => 722.0,
247 => 564.0,
221 => 722.0,
194 => 722.0,
225 => 444.0,
219 => 722.0,
253 => 500.0,
'scommaaccent' => 389.0,
234 => 444.0,
'Uring' => 722.0,
220 => 722.0,
'aogonek' => 444.0,
218 => 722.0,
'uogonek' => 500.0,
203 => 611.0,
'Dcroat' => 722.0,
'commaaccent' => 250.0,
169 => 760.0,
'Emacron' => 611.0,
'ccaron' => 444.0,
229 => 444.0,
'Ncommaaccent' => 722.0,
'lacute' => 278.0,
224 => 444.0,
'Tcommaaccent' => 611.0,
'Cacute' => 667.0,
227 => 444.0,
'Edotaccent' => 611.0,
154 => 389.0,
'scedilla' => 389.0,
237 => 278.0,
'lozenge' => 471.0,
'Rcaron' => 667.0,
'Gcommaaccent' => 722.0,
251 => 500.0,
226 => 444.0,
'Amacron' => 722.0,
'rcaron' => 333.0,
231 => 444.0,
'Zdotaccent' => 611.0,
222 => 556.0,
'Omacron' => 722.0,
'Racute' => 667.0,
'Sacute' => 556.0,
'dcaron' => 588.0,
'Umacron' => 722.0,
'uring' => 500.0,
179 => 300.0,
210 => 722.0,
192 => 722.0,
'Abreve' => 722.0,
215 => 564.0,
250 => 500.0,
'Tcaron' => 611.0,
'partialdiff' => 476.0,
255 => 500.0,
'Nacute' => 722.0,
238 => 278.0,
202 => 611.0,
228 => 444.0,
235 => 444.0,
'cacute' => 444.0,
'nacute' => 500.0,
'umacron' => 500.0,
'Ncaron' => 722.0,
205 => 333.0,
177 => 564.0,
166 => 200.0,
174 => 760.0,
'Gbreve' => 722.0,
'Idotaccent' => 333.0,
'summation' => 600.0,
200 => 611.0,
'racute' => 333.0,
'omacron' => 500.0,
'Zacute' => 611.0,
142 => 611.0,
'greaterequal' => 549.0,
208 => 722.0,
199 => 667.0,
'lcommaaccent' => 278.0,
'tcaron' => 326.0,
'eogonek' => 444.0,
'Uogonek' => 722.0,
193 => 722.0,
196 => 722.0,
232 => 444.0,
'zacute' => 444.0,
'iogonek' => 278.0,
211 => 722.0,
243 => 500.0,
'amacron' => 444.0,
'sacute' => 389.0,
239 => 278.0,
212 => 722.0,
217 => 722.0,
'Delta' => 612.0,
254 => 500.0,
178 => 300.0,
214 => 722.0,
181 => 500.0,
236 => 278.0,
'ohungarumlaut' => 500.0,
'Eogonek' => 611.0,
'dcroat' => 500.0,
190 => 750.0,
'Scedilla' => 556.0,
'lcaron' => 344.0,
'Kcommaaccent' => 722.0,
'Lacute' => 611.0,
153 => 980.0,
'edotaccent' => 444.0,
204 => 333.0,
'Imacron' => 333.0,
'Lcaron' => 611.0,
189 => 750.0,
'lessequal' => 549.0,
244 => 500.0,
241 => 500.0,
'Uhungarumlaut' => 722.0,
201 => 611.0,
'emacron' => 444.0,
'gbreve' => 500.0,
188 => 750.0,
138 => 556.0,
'Scommaaccent' => 556.0,
'Ohungarumlaut' => 722.0,
176 => 400.0,
242 => 500.0,
'Ccaron' => 667.0,
249 => 500.0,
'radical' => 453.0,
'Dcaron' => 722.0,
'rcommaaccent' => 333.0,
209 => 722.0,
245 => 500.0,
'Rcommaaccent' => 667.0,
'Lcommaaccent' => 611.0,
195 => 722.0,
'Aogonek' => 722.0,
197 => 722.0,
213 => 722.0,
'zdotaccent' => 444.0,
'Ecaron' => 611.0,
'Iogonek' => 333.0,
'kcommaaccent' => 500.0,
'minus' => 564.0,
206 => 333.0,
'ncaron' => 500.0,
'tcommaaccent' => 278.0,
172 => 564.0,
246 => 500.0,
252 => 500.0,
'notequal' => 549.0,
'gcommaaccent' => 500.0,
240 => 500.0,
158 => 444.0,
'ncommaaccent' => 500.0,
185 => 300.0,
'imacron' => 278.0,
128 => 500.0,
),
'CIDtoGID_Compressed' => true,
'CIDtoGID' => 'eJwDAAAAAAE=',
'_version_' => 6,
);

View File

@ -0,0 +1,85 @@
<?php return function ($fontDir, $rootDir) {
return array (
'sans-serif' => array(
'normal' => $rootDir . '/lib/fonts/Helvetica',
'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
),
'times' => array(
'normal' => $rootDir . '/lib/fonts/Times-Roman',
'bold' => $rootDir . '/lib/fonts/Times-Bold',
'italic' => $rootDir . '/lib/fonts/Times-Italic',
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
),
'times-roman' => array(
'normal' => $rootDir . '/lib/fonts/Times-Roman',
'bold' => $rootDir . '/lib/fonts/Times-Bold',
'italic' => $rootDir . '/lib/fonts/Times-Italic',
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
),
'courier' => array(
'normal' => $rootDir . '/lib/fonts/Courier',
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
),
'helvetica' => array(
'normal' => $rootDir . '/lib/fonts/Helvetica',
'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
),
'zapfdingbats' => array(
'normal' => $rootDir . '/lib/fonts/ZapfDingbats',
'bold' => $rootDir . '/lib/fonts/ZapfDingbats',
'italic' => $rootDir . '/lib/fonts/ZapfDingbats',
'bold_italic' => $rootDir . '/lib/fonts/ZapfDingbats',
),
'symbol' => array(
'normal' => $rootDir . '/lib/fonts/Symbol',
'bold' => $rootDir . '/lib/fonts/Symbol',
'italic' => $rootDir . '/lib/fonts/Symbol',
'bold_italic' => $rootDir . '/lib/fonts/Symbol',
),
'serif' => array(
'normal' => $rootDir . '/lib/fonts/Times-Roman',
'bold' => $rootDir . '/lib/fonts/Times-Bold',
'italic' => $rootDir . '/lib/fonts/Times-Italic',
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
),
'monospace' => array(
'normal' => $rootDir . '/lib/fonts/Courier',
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
),
'fixed' => array(
'normal' => $rootDir . '/lib/fonts/Courier',
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
),
'dejavu sans' => array(
'bold' => $rootDir . '/lib/fonts/DejaVuSans-Bold',
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSans-BoldOblique',
'italic' => $rootDir . '/lib/fonts/DejaVuSans-Oblique',
'normal' => $rootDir . '/lib/fonts/DejaVuSans',
),
'dejavu sans mono' => array(
'bold' => $rootDir . '/lib/fonts/DejaVuSansMono-Bold',
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSansMono-BoldOblique',
'italic' => $rootDir . '/lib/fonts/DejaVuSansMono-Oblique',
'normal' => $rootDir . '/lib/fonts/DejaVuSansMono',
),
'dejavu serif' => array(
'bold' => $rootDir . '/lib/fonts/DejaVuSerif-Bold',
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSerif-BoldItalic',
'italic' => $rootDir . '/lib/fonts/DejaVuSerif-Italic',
'normal' => $rootDir . '/lib/fonts/DejaVuSerif',
),
'roboto' => array(
'normal' => $fontDir . '/roboto_normal_64c59b1cc9a89983eec1e348ca1b3bc4',
),
);
}; ?>

View File

@ -0,0 +1,349 @@
StartFontMetrics 4.1
Notice Converted by PHP-font-lib
Comment https://github.com/PhenX/php-font-lib
EncodingScheme FontSpecific
Copyright Copyright 2011 Google Inc. All Rights Reserved.
FontName Roboto
FontSubfamily Regular
UniqueID Roboto
FullName Roboto
Version Version 2.137; 2017
PostScriptName Roboto-Regular
LicenseURL http://www.apache.org/licenses/LICENSE-2.0
Weight Medium
ItalicAngle 0
IsFixedPitch false
UnderlineThickness 49
UnderlinePosition -73
FontHeightOffset 0
Ascender 928
Descender -244
FontBBox -737 -271 1148 1056
StartCharMetrics 365
U 0 ; WX 0 ; N uni0000 ; G 1
U 13 ; WX 248 ; N uni000d ; G 3
U 32 ; WX 248 ; N uni0020 ; G 4
U 33 ; WX 257 ; N uni0021 ; G 5
U 34 ; WX 320 ; N uni0022 ; G 6
U 35 ; WX 616 ; N uni0023 ; G 7
U 36 ; WX 562 ; N uni0024 ; G 8
U 37 ; WX 732 ; N uni0025 ; G 9
U 38 ; WX 622 ; N uni0026 ; G 10
U 39 ; WX 174 ; N uni0027 ; G 11
U 40 ; WX 342 ; N uni0028 ; G 12
U 41 ; WX 348 ; N uni0029 ; G 13
U 42 ; WX 431 ; N uni002a ; G 14
U 43 ; WX 567 ; N uni002b ; G 15
U 44 ; WX 196 ; N uni002c ; G 16
U 45 ; WX 276 ; N uni002d ; G 17
U 46 ; WX 263 ; N uni002e ; G 18
U 47 ; WX 412 ; N uni002f ; G 19
U 48 ; WX 562 ; N uni0030 ; G 20
U 49 ; WX 562 ; N uni0031 ; G 21
U 50 ; WX 562 ; N uni0032 ; G 22
U 51 ; WX 562 ; N uni0033 ; G 23
U 52 ; WX 562 ; N uni0034 ; G 24
U 53 ; WX 562 ; N uni0035 ; G 25
U 54 ; WX 562 ; N uni0036 ; G 26
U 55 ; WX 562 ; N uni0037 ; G 27
U 56 ; WX 562 ; N uni0038 ; G 28
U 57 ; WX 562 ; N uni0039 ; G 29
U 58 ; WX 242 ; N uni003a ; G 30
U 59 ; WX 211 ; N uni003b ; G 31
U 60 ; WX 508 ; N uni003c ; G 32
U 61 ; WX 549 ; N uni003d ; G 33
U 62 ; WX 522 ; N uni003e ; G 34
U 63 ; WX 472 ; N uni003f ; G 35
U 64 ; WX 898 ; N uni0040 ; G 36
U 65 ; WX 652 ; N uni0041 ; G 37
U 66 ; WX 623 ; N uni0042 ; G 38
U 67 ; WX 651 ; N uni0043 ; G 39
U 68 ; WX 656 ; N uni0044 ; G 40
U 69 ; WX 568 ; N uni0045 ; G 41
U 70 ; WX 553 ; N uni0046 ; G 42
U 71 ; WX 681 ; N uni0047 ; G 43
U 72 ; WX 713 ; N uni0048 ; G 44
U 73 ; WX 272 ; N uni0049 ; G 45
U 74 ; WX 552 ; N uni004a ; G 46
U 75 ; WX 627 ; N uni004b ; G 47
U 76 ; WX 538 ; N uni004c ; G 48
U 77 ; WX 873 ; N uni004d ; G 49
U 78 ; WX 713 ; N uni004e ; G 50
U 79 ; WX 688 ; N uni004f ; G 51
U 80 ; WX 631 ; N uni0050 ; G 52
U 81 ; WX 688 ; N uni0051 ; G 53
U 82 ; WX 616 ; N uni0052 ; G 54
U 83 ; WX 593 ; N uni0053 ; G 55
U 84 ; WX 597 ; N uni0054 ; G 56
U 85 ; WX 648 ; N uni0055 ; G 57
U 86 ; WX 636 ; N uni0056 ; G 58
U 87 ; WX 887 ; N uni0057 ; G 59
U 88 ; WX 627 ; N uni0058 ; G 60
U 89 ; WX 601 ; N uni0059 ; G 61
U 90 ; WX 599 ; N uni005a ; G 62
U 91 ; WX 265 ; N uni005b ; G 63
U 92 ; WX 410 ; N uni005c ; G 64
U 93 ; WX 265 ; N uni005d ; G 65
U 94 ; WX 418 ; N uni005e ; G 66
U 95 ; WX 451 ; N uni005f ; G 67
U 96 ; WX 309 ; N uni0060 ; G 68
U 97 ; WX 544 ; N uni0061 ; G 69
U 98 ; WX 561 ; N uni0062 ; G 70
U 99 ; WX 523 ; N uni0063 ; G 71
U 100 ; WX 564 ; N uni0064 ; G 72
U 101 ; WX 530 ; N uni0065 ; G 73
U 102 ; WX 347 ; N uni0066 ; G 74
U 103 ; WX 561 ; N uni0067 ; G 75
U 104 ; WX 551 ; N uni0068 ; G 76
U 105 ; WX 243 ; N uni0069 ; G 77
U 106 ; WX 239 ; N uni006a ; G 78
U 107 ; WX 507 ; N uni006b ; G 79
U 108 ; WX 243 ; N uni006c ; G 80
U 109 ; WX 876 ; N uni006d ; G 81
U 110 ; WX 552 ; N uni006e ; G 82
U 111 ; WX 570 ; N uni006f ; G 83
U 112 ; WX 561 ; N uni0070 ; G 84
U 113 ; WX 568 ; N uni0071 ; G 85
U 114 ; WX 338 ; N uni0072 ; G 86
U 115 ; WX 516 ; N uni0073 ; G 87
U 116 ; WX 327 ; N uni0074 ; G 88
U 117 ; WX 551 ; N uni0075 ; G 89
U 118 ; WX 484 ; N uni0076 ; G 90
U 119 ; WX 751 ; N uni0077 ; G 91
U 120 ; WX 496 ; N uni0078 ; G 92
U 121 ; WX 473 ; N uni0079 ; G 93
U 122 ; WX 496 ; N uni007a ; G 94
U 123 ; WX 338 ; N uni007b ; G 95
U 124 ; WX 244 ; N uni007c ; G 96
U 125 ; WX 338 ; N uni007d ; G 97
U 126 ; WX 680 ; N uni007e ; G 98
U 160 ; WX 248 ; N uni00a0 ; G 254
U 161 ; WX 244 ; N uni00a1 ; G 99
U 162 ; WX 547 ; N uni00a2 ; G 100
U 163 ; WX 581 ; N uni00a3 ; G 101
U 164 ; WX 713 ; N uni00a4 ; G 102
U 165 ; WX 525 ; N uni00a5 ; G 103
U 166 ; WX 240 ; N uni00a6 ; G 104
U 167 ; WX 613 ; N uni00a7 ; G 105
U 168 ; WX 418 ; N uni00a8 ; G 106
U 169 ; WX 786 ; N uni00a9 ; G 107
U 170 ; WX 447 ; N uni00aa ; G 108
U 171 ; WX 469 ; N uni00ab ; G 109
U 172 ; WX 554 ; N uni00ac ; G 110
U 173 ; WX 276 ; N uni00ad ; G 255
U 174 ; WX 786 ; N uni00ae ; G 111
U 175 ; WX 458 ; N uni00af ; G 112
U 176 ; WX 374 ; N uni00b0 ; G 113
U 177 ; WX 534 ; N uni00b1 ; G 114
U 178 ; WX 367 ; N uni00b2 ; G 115
U 179 ; WX 367 ; N uni00b3 ; G 116
U 180 ; WX 313 ; N uni00b4 ; G 117
U 181 ; WX 566 ; N uni00b5 ; G 118
U 182 ; WX 489 ; N uni00b6 ; G 119
U 183 ; WX 261 ; N uni00b7 ; G 120
U 184 ; WX 248 ; N uni00b8 ; G 121
U 185 ; WX 367 ; N uni00b9 ; G 122
U 186 ; WX 455 ; N uni00ba ; G 123
U 187 ; WX 469 ; N uni00bb ; G 124
U 188 ; WX 732 ; N uni00bc ; G 125
U 189 ; WX 776 ; N uni00bd ; G 126
U 190 ; WX 778 ; N uni00be ; G 127
U 191 ; WX 473 ; N uni00bf ; G 128
U 192 ; WX 652 ; N uni00c0 ; G 257
U 193 ; WX 652 ; N uni00c1 ; G 258
U 194 ; WX 652 ; N uni00c2 ; G 259
U 195 ; WX 652 ; N uni00c3 ; G 260
U 196 ; WX 652 ; N uni00c4 ; G 261
U 197 ; WX 652 ; N uni00c5 ; G 262
U 198 ; WX 935 ; N uni00c6 ; G 129
U 199 ; WX 651 ; N uni00c7 ; G 263
U 200 ; WX 568 ; N uni00c8 ; G 264
U 201 ; WX 568 ; N uni00c9 ; G 265
U 202 ; WX 568 ; N uni00ca ; G 266
U 203 ; WX 568 ; N uni00cb ; G 267
U 204 ; WX 272 ; N uni00cc ; G 268
U 205 ; WX 272 ; N uni00cd ; G 269
U 206 ; WX 272 ; N uni00ce ; G 270
U 207 ; WX 272 ; N uni00cf ; G 271
U 208 ; WX 670 ; N uni00d0 ; G 256
U 209 ; WX 713 ; N uni00d1 ; G 272
U 210 ; WX 688 ; N uni00d2 ; G 273
U 211 ; WX 688 ; N uni00d3 ; G 274
U 212 ; WX 688 ; N uni00d4 ; G 275
U 213 ; WX 688 ; N uni00d5 ; G 276
U 214 ; WX 688 ; N uni00d6 ; G 277
U 215 ; WX 533 ; N uni00d7 ; G 130
U 216 ; WX 688 ; N uni00d8 ; G 131
U 217 ; WX 648 ; N uni00d9 ; G 278
U 218 ; WX 648 ; N uni00da ; G 279
U 219 ; WX 648 ; N uni00db ; G 280
U 220 ; WX 648 ; N uni00dc ; G 281
U 221 ; WX 601 ; N uni00dd ; G 282
U 222 ; WX 591 ; N uni00de ; G 132
U 223 ; WX 595 ; N uni00df ; G 133
U 224 ; WX 544 ; N uni00e0 ; G 283
U 225 ; WX 544 ; N uni00e1 ; G 284
U 226 ; WX 544 ; N uni00e2 ; G 285
U 227 ; WX 544 ; N uni00e3 ; G 286
U 228 ; WX 544 ; N uni00e4 ; G 287
U 229 ; WX 544 ; N uni00e5 ; G 288
U 230 ; WX 844 ; N uni00e6 ; G 134
U 231 ; WX 523 ; N uni00e7 ; G 289
U 232 ; WX 530 ; N uni00e8 ; G 290
U 233 ; WX 530 ; N uni00e9 ; G 291
U 234 ; WX 530 ; N uni00ea ; G 292
U 235 ; WX 530 ; N uni00eb ; G 293
U 236 ; WX 247 ; N uni00ec ; G 294
U 237 ; WX 247 ; N uni00ed ; G 295
U 238 ; WX 247 ; N uni00ee ; G 296
U 239 ; WX 247 ; N uni00ef ; G 297
U 240 ; WX 586 ; N uni00f0 ; G 135
U 241 ; WX 552 ; N uni00f1 ; G 298
U 242 ; WX 570 ; N uni00f2 ; G 299
U 243 ; WX 570 ; N uni00f3 ; G 300
U 244 ; WX 570 ; N uni00f4 ; G 301
U 245 ; WX 570 ; N uni00f5 ; G 302
U 246 ; WX 570 ; N uni00f6 ; G 303
U 247 ; WX 571 ; N uni00f7 ; G 136
U 248 ; WX 566 ; N uni00f8 ; G 137
U 249 ; WX 551 ; N uni00f9 ; G 304
U 250 ; WX 551 ; N uni00fa ; G 305
U 251 ; WX 551 ; N uni00fb ; G 306
U 252 ; WX 551 ; N uni00fc ; G 307
U 253 ; WX 473 ; N uni00fd ; G 308
U 254 ; WX 576 ; N uni00fe ; G 138
U 255 ; WX 473 ; N uni00ff ; G 309
U 305 ; WX 247 ; N uni0131 ; G 139
U 338 ; WX 954 ; N uni0152 ; G 140
U 339 ; WX 908 ; N uni0153 ; G 141
U 700 ; WX 200 ; N uni02bc ; G 350
U 710 ; WX 471 ; N uni02c6 ; G 142
U 730 ; WX 334 ; N uni02da ; G 144
U 732 ; WX 472 ; N uni02dc ; G 145
U 1024 ; WX 568 ; N uni0400 ; G 351
U 1025 ; WX 568 ; N uni0401 ; G 310
U 1026 ; WX 750 ; N uni0402 ; G 148
U 1027 ; WX 556 ; N uni0403 ; G 311
U 1028 ; WX 674 ; N uni0404 ; G 149
U 1029 ; WX 593 ; N uni0405 ; G 312
U 1030 ; WX 272 ; N uni0406 ; G 313
U 1031 ; WX 272 ; N uni0407 ; G 314
U 1032 ; WX 552 ; N uni0408 ; G 315
U 1033 ; WX 1071 ; N uni0409 ; G 150
U 1034 ; WX 1080 ; N uni040a ; G 151
U 1035 ; WX 813 ; N uni040b ; G 152
U 1036 ; WX 627 ; N uni040c ; G 317
U 1037 ; WX 713 ; N uni040d ; G 352
U 1038 ; WX 628 ; N uni040e ; G 318
U 1039 ; WX 713 ; N uni040f ; G 153
U 1040 ; WX 652 ; N uni0410 ; G 319
U 1041 ; WX 630 ; N uni0411 ; G 154
U 1042 ; WX 623 ; N uni0412 ; G 320
U 1043 ; WX 556 ; N uni0413 ; G 321
U 1044 ; WX 752 ; N uni0414 ; G 155
U 1045 ; WX 568 ; N uni0415 ; G 322
U 1046 ; WX 908 ; N uni0416 ; G 156
U 1047 ; WX 593 ; N uni0417 ; G 157
U 1048 ; WX 713 ; N uni0418 ; G 158
U 1049 ; WX 713 ; N uni0419 ; G 323
U 1050 ; WX 643 ; N uni041a ; G 316
U 1051 ; WX 708 ; N uni041b ; G 159
U 1052 ; WX 873 ; N uni041c ; G 324
U 1053 ; WX 713 ; N uni041d ; G 325
U 1054 ; WX 688 ; N uni041e ; G 326
U 1055 ; WX 713 ; N uni041f ; G 327
U 1056 ; WX 631 ; N uni0420 ; G 328
U 1057 ; WX 651 ; N uni0421 ; G 329
U 1058 ; WX 597 ; N uni0422 ; G 330
U 1059 ; WX 628 ; N uni0423 ; G 160
U 1060 ; WX 771 ; N uni0424 ; G 161
U 1061 ; WX 627 ; N uni0425 ; G 331
U 1062 ; WX 731 ; N uni0426 ; G 162
U 1063 ; WX 685 ; N uni0427 ; G 163
U 1064 ; WX 941 ; N uni0428 ; G 164
U 1065 ; WX 969 ; N uni0429 ; G 165
U 1066 ; WX 759 ; N uni042a ; G 166
U 1067 ; WX 865 ; N uni042b ; G 167
U 1068 ; WX 627 ; N uni042c ; G 168
U 1069 ; WX 674 ; N uni042d ; G 169
U 1070 ; WX 894 ; N uni042e ; G 170
U 1071 ; WX 637 ; N uni042f ; G 171
U 1072 ; WX 544 ; N uni0430 ; G 332
U 1073 ; WX 553 ; N uni0431 ; G 172
U 1074 ; WX 571 ; N uni0432 ; G 173
U 1075 ; WX 419 ; N uni0433 ; G 174
U 1076 ; WX 604 ; N uni0434 ; G 175
U 1077 ; WX 530 ; N uni0435 ; G 333
U 1078 ; WX 766 ; N uni0436 ; G 176
U 1079 ; WX 508 ; N uni0437 ; G 177
U 1080 ; WX 577 ; N uni0438 ; G 178
U 1081 ; WX 577 ; N uni0439 ; G 334
U 1082 ; WX 540 ; N uni043a ; G 179
U 1083 ; WX 578 ; N uni043b ; G 180
U 1084 ; WX 742 ; N uni043c ; G 181
U 1085 ; WX 577 ; N uni043d ; G 182
U 1086 ; WX 570 ; N uni043e ; G 335
U 1087 ; WX 577 ; N uni043f ; G 183
U 1088 ; WX 561 ; N uni0440 ; G 336
U 1089 ; WX 523 ; N uni0441 ; G 337
U 1090 ; WX 480 ; N uni0442 ; G 184
U 1091 ; WX 473 ; N uni0443 ; G 338
U 1092 ; WX 725 ; N uni0444 ; G 185
U 1093 ; WX 496 ; N uni0445 ; G 339
U 1094 ; WX 592 ; N uni0446 ; G 186
U 1095 ; WX 543 ; N uni0447 ; G 187
U 1096 ; WX 809 ; N uni0448 ; G 188
U 1097 ; WX 827 ; N uni0449 ; G 189
U 1098 ; WX 621 ; N uni044a ; G 190
U 1099 ; WX 776 ; N uni044b ; G 191
U 1100 ; WX 543 ; N uni044c ; G 192
U 1101 ; WX 538 ; N uni044d ; G 193
U 1102 ; WX 816 ; N uni044e ; G 194
U 1103 ; WX 549 ; N uni044f ; G 195
U 1104 ; WX 530 ; N uni0450 ; G 353
U 1105 ; WX 530 ; N uni0451 ; G 340
U 1106 ; WX 551 ; N uni0452 ; G 196
U 1107 ; WX 419 ; N uni0453 ; G 341
U 1108 ; WX 538 ; N uni0454 ; G 197
U 1109 ; WX 516 ; N uni0455 ; G 342
U 1110 ; WX 243 ; N uni0456 ; G 343
U 1111 ; WX 247 ; N uni0457 ; G 344
U 1112 ; WX 239 ; N uni0458 ; G 345
U 1113 ; WX 848 ; N uni0459 ; G 198
U 1114 ; WX 861 ; N uni045a ; G 199
U 1115 ; WX 567 ; N uni045b ; G 200
U 1116 ; WX 540 ; N uni045c ; G 346
U 1117 ; WX 577 ; N uni045d ; G 354
U 1118 ; WX 473 ; N uni045e ; G 347
U 1119 ; WX 577 ; N uni045f ; G 201
U 1168 ; WX 548 ; N uni0490 ; G 202
U 1169 ; WX 445 ; N uni0491 ; G 203
U 1200 ; WX 601 ; N uni04b0 ; G 355
U 1201 ; WX 501 ; N uni04b1 ; G 356
U 8194 ; WX 510 ; N uni2002 ; G 204
U 8201 ; WX 204 ; N uni2009 ; G 205
U 8203 ; WX 0 ; N uni200b ; G 207
U 8211 ; WX 656 ; N uni2013 ; G 208
U 8212 ; WX 781 ; N uni2014 ; G 209
U 8216 ; WX 200 ; N uni2018 ; G 210
U 8217 ; WX 200 ; N uni2019 ; G 211
U 8218 ; WX 199 ; N uni201a ; G 212
U 8220 ; WX 354 ; N uni201c ; G 213
U 8221 ; WX 357 ; N uni201d ; G 214
U 8222 ; WX 344 ; N uni201e ; G 215
U 8226 ; WX 337 ; N uni2022 ; G 216
U 8230 ; WX 669 ; N uni2026 ; G 217
U 8242 ; WX 174 ; N uni2032 ; G 348
U 8243 ; WX 320 ; N uni2033 ; G 349
U 8249 ; WX 300 ; N uni2039 ; G 218
U 8250 ; WX 300 ; N uni203a ; G 219
U 8260 ; WX 455 ; N uni2044 ; G 220
U 8308 ; WX 367 ; N uni2074 ; G 221
U 8364 ; WX 562 ; N uni20ac ; G 222
U 8470 ; WX 1028 ; N uni2116 ; G 223
U 8482 ; WX 625 ; N uni2122 ; G 224
U 8722 ; WX 571 ; N uni2212 ; G 225
U 65279 ; WX 0 ; N unifeff ; G 230
U 65533 ; WX 1026 ; N unifffd ; G 231
EndCharMetrics
EndFontMetrics

View File

@ -0,0 +1,683 @@
<?php return array (
'codeToName' =>
array (
0 => 'uni0000',
13 => 'uni000d',
32 => 'uni0020',
33 => 'uni0021',
34 => 'uni0022',
35 => 'uni0023',
36 => 'uni0024',
37 => 'uni0025',
38 => 'uni0026',
39 => 'uni0027',
40 => 'uni0028',
41 => 'uni0029',
42 => 'uni002a',
43 => 'uni002b',
44 => 'uni002c',
45 => 'uni002d',
46 => 'uni002e',
47 => 'uni002f',
48 => 'uni0030',
49 => 'uni0031',
50 => 'uni0032',
51 => 'uni0033',
52 => 'uni0034',
53 => 'uni0035',
54 => 'uni0036',
55 => 'uni0037',
56 => 'uni0038',
57 => 'uni0039',
58 => 'uni003a',
59 => 'uni003b',
60 => 'uni003c',
61 => 'uni003d',
62 => 'uni003e',
63 => 'uni003f',
64 => 'uni0040',
65 => 'uni0041',
66 => 'uni0042',
67 => 'uni0043',
68 => 'uni0044',
69 => 'uni0045',
70 => 'uni0046',
71 => 'uni0047',
72 => 'uni0048',
73 => 'uni0049',
74 => 'uni004a',
75 => 'uni004b',
76 => 'uni004c',
77 => 'uni004d',
78 => 'uni004e',
79 => 'uni004f',
80 => 'uni0050',
81 => 'uni0051',
82 => 'uni0052',
83 => 'uni0053',
84 => 'uni0054',
85 => 'uni0055',
86 => 'uni0056',
87 => 'uni0057',
88 => 'uni0058',
89 => 'uni0059',
90 => 'uni005a',
91 => 'uni005b',
92 => 'uni005c',
93 => 'uni005d',
94 => 'uni005e',
95 => 'uni005f',
96 => 'uni0060',
97 => 'uni0061',
98 => 'uni0062',
99 => 'uni0063',
100 => 'uni0064',
101 => 'uni0065',
102 => 'uni0066',
103 => 'uni0067',
104 => 'uni0068',
105 => 'uni0069',
106 => 'uni006a',
107 => 'uni006b',
108 => 'uni006c',
109 => 'uni006d',
110 => 'uni006e',
111 => 'uni006f',
112 => 'uni0070',
113 => 'uni0071',
114 => 'uni0072',
115 => 'uni0073',
116 => 'uni0074',
117 => 'uni0075',
118 => 'uni0076',
119 => 'uni0077',
120 => 'uni0078',
121 => 'uni0079',
122 => 'uni007a',
123 => 'uni007b',
124 => 'uni007c',
125 => 'uni007d',
126 => 'uni007e',
160 => 'uni00a0',
161 => 'uni00a1',
162 => 'uni00a2',
163 => 'uni00a3',
164 => 'uni00a4',
165 => 'uni00a5',
166 => 'uni00a6',
167 => 'uni00a7',
168 => 'uni00a8',
169 => 'uni00a9',
170 => 'uni00aa',
171 => 'uni00ab',
172 => 'uni00ac',
173 => 'uni00ad',
174 => 'uni00ae',
175 => 'uni00af',
176 => 'uni00b0',
177 => 'uni00b1',
178 => 'uni00b2',
179 => 'uni00b3',
180 => 'uni00b4',
181 => 'uni00b5',
182 => 'uni00b6',
183 => 'uni00b7',
184 => 'uni00b8',
185 => 'uni00b9',
186 => 'uni00ba',
187 => 'uni00bb',
188 => 'uni00bc',
189 => 'uni00bd',
190 => 'uni00be',
191 => 'uni00bf',
192 => 'uni00c0',
193 => 'uni00c1',
194 => 'uni00c2',
195 => 'uni00c3',
196 => 'uni00c4',
197 => 'uni00c5',
198 => 'uni00c6',
199 => 'uni00c7',
200 => 'uni00c8',
201 => 'uni00c9',
202 => 'uni00ca',
203 => 'uni00cb',
204 => 'uni00cc',
205 => 'uni00cd',
206 => 'uni00ce',
207 => 'uni00cf',
208 => 'uni00d0',
209 => 'uni00d1',
210 => 'uni00d2',
211 => 'uni00d3',
212 => 'uni00d4',
213 => 'uni00d5',
214 => 'uni00d6',
215 => 'uni00d7',
216 => 'uni00d8',
217 => 'uni00d9',
218 => 'uni00da',
219 => 'uni00db',
220 => 'uni00dc',
221 => 'uni00dd',
222 => 'uni00de',
223 => 'uni00df',
224 => 'uni00e0',
225 => 'uni00e1',
226 => 'uni00e2',
227 => 'uni00e3',
228 => 'uni00e4',
229 => 'uni00e5',
230 => 'uni00e6',
231 => 'uni00e7',
232 => 'uni00e8',
233 => 'uni00e9',
234 => 'uni00ea',
235 => 'uni00eb',
236 => 'uni00ec',
237 => 'uni00ed',
238 => 'uni00ee',
239 => 'uni00ef',
240 => 'uni00f0',
241 => 'uni00f1',
242 => 'uni00f2',
243 => 'uni00f3',
244 => 'uni00f4',
245 => 'uni00f5',
246 => 'uni00f6',
247 => 'uni00f7',
248 => 'uni00f8',
249 => 'uni00f9',
250 => 'uni00fa',
251 => 'uni00fb',
252 => 'uni00fc',
253 => 'uni00fd',
254 => 'uni00fe',
255 => 'uni00ff',
305 => 'uni0131',
338 => 'uni0152',
339 => 'uni0153',
700 => 'uni02bc',
710 => 'uni02c6',
730 => 'uni02da',
732 => 'uni02dc',
1024 => 'uni0400',
1025 => 'uni0401',
1026 => 'uni0402',
1027 => 'uni0403',
1028 => 'uni0404',
1029 => 'uni0405',
1030 => 'uni0406',
1031 => 'uni0407',
1032 => 'uni0408',
1033 => 'uni0409',
1034 => 'uni040a',
1035 => 'uni040b',
1036 => 'uni040c',
1037 => 'uni040d',
1038 => 'uni040e',
1039 => 'uni040f',
1040 => 'uni0410',
1041 => 'uni0411',
1042 => 'uni0412',
1043 => 'uni0413',
1044 => 'uni0414',
1045 => 'uni0415',
1046 => 'uni0416',
1047 => 'uni0417',
1048 => 'uni0418',
1049 => 'uni0419',
1050 => 'uni041a',
1051 => 'uni041b',
1052 => 'uni041c',
1053 => 'uni041d',
1054 => 'uni041e',
1055 => 'uni041f',
1056 => 'uni0420',
1057 => 'uni0421',
1058 => 'uni0422',
1059 => 'uni0423',
1060 => 'uni0424',
1061 => 'uni0425',
1062 => 'uni0426',
1063 => 'uni0427',
1064 => 'uni0428',
1065 => 'uni0429',
1066 => 'uni042a',
1067 => 'uni042b',
1068 => 'uni042c',
1069 => 'uni042d',
1070 => 'uni042e',
1071 => 'uni042f',
1072 => 'uni0430',
1073 => 'uni0431',
1074 => 'uni0432',
1075 => 'uni0433',
1076 => 'uni0434',
1077 => 'uni0435',
1078 => 'uni0436',
1079 => 'uni0437',
1080 => 'uni0438',
1081 => 'uni0439',
1082 => 'uni043a',
1083 => 'uni043b',
1084 => 'uni043c',
1085 => 'uni043d',
1086 => 'uni043e',
1087 => 'uni043f',
1088 => 'uni0440',
1089 => 'uni0441',
1090 => 'uni0442',
1091 => 'uni0443',
1092 => 'uni0444',
1093 => 'uni0445',
1094 => 'uni0446',
1095 => 'uni0447',
1096 => 'uni0448',
1097 => 'uni0449',
1098 => 'uni044a',
1099 => 'uni044b',
1100 => 'uni044c',
1101 => 'uni044d',
1102 => 'uni044e',
1103 => 'uni044f',
1104 => 'uni0450',
1105 => 'uni0451',
1106 => 'uni0452',
1107 => 'uni0453',
1108 => 'uni0454',
1109 => 'uni0455',
1110 => 'uni0456',
1111 => 'uni0457',
1112 => 'uni0458',
1113 => 'uni0459',
1114 => 'uni045a',
1115 => 'uni045b',
1116 => 'uni045c',
1117 => 'uni045d',
1118 => 'uni045e',
1119 => 'uni045f',
1168 => 'uni0490',
1169 => 'uni0491',
1200 => 'uni04b0',
1201 => 'uni04b1',
8194 => 'uni2002',
8201 => 'uni2009',
8203 => 'uni200b',
8211 => 'uni2013',
8212 => 'uni2014',
8216 => 'uni2018',
8217 => 'uni2019',
8218 => 'uni201a',
8220 => 'uni201c',
8221 => 'uni201d',
8222 => 'uni201e',
8226 => 'uni2022',
8230 => 'uni2026',
8242 => 'uni2032',
8243 => 'uni2033',
8249 => 'uni2039',
8250 => 'uni203a',
8260 => 'uni2044',
8308 => 'uni2074',
8364 => 'uni20ac',
8470 => 'uni2116',
8482 => 'uni2122',
8722 => 'uni2212',
65279 => 'unifeff',
65533 => 'unifffd',
),
'isUnicode' => true,
'EncodingScheme' => 'FontSpecific',
'FontName' => 'Roboto',
'FullName' => 'Roboto',
'Version' => 'Version 2.137; 2017',
'PostScriptName' => 'Roboto-Regular',
'Weight' => 'Medium',
'ItalicAngle' => '0',
'IsFixedPitch' => 'false',
'UnderlineThickness' => '49',
'UnderlinePosition' => '-73',
'FontHeightOffset' => '0',
'Ascender' => '928',
'Descender' => '-244',
'FontBBox' =>
array (
0 => '-737',
1 => '-271',
2 => '1148',
3 => '1056',
),
'StartCharMetrics' => '365',
'C' =>
array (
0 => 0.0,
13 => 248.0,
32 => 248.0,
33 => 257.0,
34 => 320.0,
35 => 616.0,
36 => 562.0,
37 => 732.0,
38 => 622.0,
39 => 174.0,
40 => 342.0,
41 => 348.0,
42 => 431.0,
43 => 567.0,
44 => 196.0,
45 => 276.0,
46 => 263.0,
47 => 412.0,
48 => 562.0,
49 => 562.0,
50 => 562.0,
51 => 562.0,
52 => 562.0,
53 => 562.0,
54 => 562.0,
55 => 562.0,
56 => 562.0,
57 => 562.0,
58 => 242.0,
59 => 211.0,
60 => 508.0,
61 => 549.0,
62 => 522.0,
63 => 472.0,
64 => 898.0,
65 => 652.0,
66 => 623.0,
67 => 651.0,
68 => 656.0,
69 => 568.0,
70 => 553.0,
71 => 681.0,
72 => 713.0,
73 => 272.0,
74 => 552.0,
75 => 627.0,
76 => 538.0,
77 => 873.0,
78 => 713.0,
79 => 688.0,
80 => 631.0,
81 => 688.0,
82 => 616.0,
83 => 593.0,
84 => 597.0,
85 => 648.0,
86 => 636.0,
87 => 887.0,
88 => 627.0,
89 => 601.0,
90 => 599.0,
91 => 265.0,
92 => 410.0,
93 => 265.0,
94 => 418.0,
95 => 451.0,
96 => 309.0,
97 => 544.0,
98 => 561.0,
99 => 523.0,
100 => 564.0,
101 => 530.0,
102 => 347.0,
103 => 561.0,
104 => 551.0,
105 => 243.0,
106 => 239.0,
107 => 507.0,
108 => 243.0,
109 => 876.0,
110 => 552.0,
111 => 570.0,
112 => 561.0,
113 => 568.0,
114 => 338.0,
115 => 516.0,
116 => 327.0,
117 => 551.0,
118 => 484.0,
119 => 751.0,
120 => 496.0,
121 => 473.0,
122 => 496.0,
123 => 338.0,
124 => 244.0,
125 => 338.0,
126 => 680.0,
160 => 248.0,
161 => 244.0,
162 => 547.0,
163 => 581.0,
164 => 713.0,
165 => 525.0,
166 => 240.0,
167 => 613.0,
168 => 418.0,
169 => 786.0,
170 => 447.0,
171 => 469.0,
172 => 554.0,
173 => 276.0,
174 => 786.0,
175 => 458.0,
176 => 374.0,
177 => 534.0,
178 => 367.0,
179 => 367.0,
180 => 313.0,
181 => 566.0,
182 => 489.0,
183 => 261.0,
184 => 248.0,
185 => 367.0,
186 => 455.0,
187 => 469.0,
188 => 732.0,
189 => 776.0,
190 => 778.0,
191 => 473.0,
192 => 652.0,
193 => 652.0,
194 => 652.0,
195 => 652.0,
196 => 652.0,
197 => 652.0,
198 => 935.0,
199 => 651.0,
200 => 568.0,
201 => 568.0,
202 => 568.0,
203 => 568.0,
204 => 272.0,
205 => 272.0,
206 => 272.0,
207 => 272.0,
208 => 670.0,
209 => 713.0,
210 => 688.0,
211 => 688.0,
212 => 688.0,
213 => 688.0,
214 => 688.0,
215 => 533.0,
216 => 688.0,
217 => 648.0,
218 => 648.0,
219 => 648.0,
220 => 648.0,
221 => 601.0,
222 => 591.0,
223 => 595.0,
224 => 544.0,
225 => 544.0,
226 => 544.0,
227 => 544.0,
228 => 544.0,
229 => 544.0,
230 => 844.0,
231 => 523.0,
232 => 530.0,
233 => 530.0,
234 => 530.0,
235 => 530.0,
236 => 247.0,
237 => 247.0,
238 => 247.0,
239 => 247.0,
240 => 586.0,
241 => 552.0,
242 => 570.0,
243 => 570.0,
244 => 570.0,
245 => 570.0,
246 => 570.0,
247 => 571.0,
248 => 566.0,
249 => 551.0,
250 => 551.0,
251 => 551.0,
252 => 551.0,
253 => 473.0,
254 => 576.0,
255 => 473.0,
305 => 247.0,
338 => 954.0,
339 => 908.0,
700 => 200.0,
710 => 471.0,
730 => 334.0,
732 => 472.0,
1024 => 568.0,
1025 => 568.0,
1026 => 750.0,
1027 => 556.0,
1028 => 674.0,
1029 => 593.0,
1030 => 272.0,
1031 => 272.0,
1032 => 552.0,
1033 => 1071.0,
1034 => 1080.0,
1035 => 813.0,
1036 => 627.0,
1037 => 713.0,
1038 => 628.0,
1039 => 713.0,
1040 => 652.0,
1041 => 630.0,
1042 => 623.0,
1043 => 556.0,
1044 => 752.0,
1045 => 568.0,
1046 => 908.0,
1047 => 593.0,
1048 => 713.0,
1049 => 713.0,
1050 => 643.0,
1051 => 708.0,
1052 => 873.0,
1053 => 713.0,
1054 => 688.0,
1055 => 713.0,
1056 => 631.0,
1057 => 651.0,
1058 => 597.0,
1059 => 628.0,
1060 => 771.0,
1061 => 627.0,
1062 => 731.0,
1063 => 685.0,
1064 => 941.0,
1065 => 969.0,
1066 => 759.0,
1067 => 865.0,
1068 => 627.0,
1069 => 674.0,
1070 => 894.0,
1071 => 637.0,
1072 => 544.0,
1073 => 553.0,
1074 => 571.0,
1075 => 419.0,
1076 => 604.0,
1077 => 530.0,
1078 => 766.0,
1079 => 508.0,
1080 => 577.0,
1081 => 577.0,
1082 => 540.0,
1083 => 578.0,
1084 => 742.0,
1085 => 577.0,
1086 => 570.0,
1087 => 577.0,
1088 => 561.0,
1089 => 523.0,
1090 => 480.0,
1091 => 473.0,
1092 => 725.0,
1093 => 496.0,
1094 => 592.0,
1095 => 543.0,
1096 => 809.0,
1097 => 827.0,
1098 => 621.0,
1099 => 776.0,
1100 => 543.0,
1101 => 538.0,
1102 => 816.0,
1103 => 549.0,
1104 => 530.0,
1105 => 530.0,
1106 => 551.0,
1107 => 419.0,
1108 => 538.0,
1109 => 516.0,
1110 => 243.0,
1111 => 247.0,
1112 => 239.0,
1113 => 848.0,
1114 => 861.0,
1115 => 567.0,
1116 => 540.0,
1117 => 577.0,
1118 => 473.0,
1119 => 577.0,
1168 => 548.0,
1169 => 445.0,
1200 => 601.0,
1201 => 501.0,
8194 => 510.0,
8201 => 204.0,
8203 => 0.0,
8211 => 656.0,
8212 => 781.0,
8216 => 200.0,
8217 => 200.0,
8218 => 199.0,
8220 => 354.0,
8221 => 357.0,
8222 => 344.0,
8226 => 337.0,
8230 => 669.0,
8242 => 174.0,
8243 => 320.0,
8249 => 300.0,
8250 => 300.0,
8260 => 455.0,
8308 => 367.0,
8364 => 562.0,
8470 => 1028.0,
8482 => 625.0,
8722 => 571.0,
65279 => 0.0,
65533 => 1026.0,
),
'CIDtoGID_Compressed' => true,
'CIDtoGID' => 'eJzt0OUPUFUYB+DfK4qCSAiKdCmogIoiIN1loKI0CoLd3d053ezu7u7umN39Rf8LFTc+oAOLcuN5tnPPPe+J+7snlSVpsMSZRa2eNdIwa2atNErjrJ0mWSdN0yzN0yLrpmVaZb2sn9bZIG3SNu3SPh3SMZ3SOV3SNd2yYTZK9/TIxtkkm6ZneqV3Nsvm2SJ9smW2St9snX7pnwHZJgMzKIMzJEMzLMMzIiMzKqMzJmMzLuMzIROzbbbL9tkhk7JjdsrOmZxdsmumZGqmZXpmZGZmZXZ2y+6Zk7nZ4x/94V/7JfMyP3tmr+ydfbJv9sv+OSAH5qD8moNzSA7NYTk8R+TIHJWjc0yOzXE5PifkxJyUk3NKVa1WDWr1WqMa5tRas9aqRtW41q4mtU41rWaVal4tat1qWa1qvZyW02v9al0bVJtqmzNyZrWr9tWhOlan6pyzqkt1rW61YW1U3atHbVyb5OzatHpWr+pdm9XmOSfn1hbVp7asrapvzqutl8EN/J3zl/qEC3LhMsgB/xu122KKF/3DzRcvaJcsuyysumr36pdLq38uqwG1TQ2sQbk8V+TKGlJzamiuqmG5uobXiFxTI3Ntrsv1NaoG54YaXWNqbI2r8TWhJubG3FTb5ubckltzW27PHbkzd+Xu3FPb5d7cl/vzQG2fB/NQHq4d8kgezWN5vCblidqxdsqTtXOeqsl5Os/k2TyX5/NCXsxLeTmv1NzaJa/WrnmtptTUmlbT83reyJs1o/aomXlruV/Q23lnabbXvJq/rKIAAAAAAAAAAAAAAAAAsIp59w+j9xa09/+04oN8uPDto3ycTxb0n+azfL6w9sXC/svFH1+zavYiw6/y9WIWffMv8v4X3y7n8//suxX8vRXh+yXUf1iRIVjhflzZAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYxfy0sgOw0vz8++M372F4tw==',
'_version_' => 6,
);

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,4 @@
@font-face {
font-family: 'Roboto';
src: URL('Roboto-Regular.ttf') format('truetype');
}

View File

@ -290,6 +290,8 @@
// :: Shop Catagory Slides Code
if ($.fn.owlCarousel) {
$(".shop_by_catagory_slides").owlCarousel({
items: 7,

View File

@ -1 +1 @@
<p><strong>Gurluşyk</strong> Türkmenistanda alyjylary we satyjylary birleşdirýän onlaýn söwda platformasydyr. Müşderileriň arzan bahalara, has gowy saýlama we amatly hyzmat islegi, näme bolsa-da üýtgewsiz galýar. Häzirki wagtda bu islegleriň hemmesini <strong>gurlushyk.com.tm </strong>web sahypasynda tapyp bilersiňiz. Biziň wezipämiz, islendik ululykdaky telekeçilere, kärhanalara we guramalara ykdysady mümkinçilikler bermek we Türkmenistanda iň köp müşderi gönükdirilen kompaniýa bolmak. Satyjylara ululygyna, gelip çykyşyna ýa-da ýerleşişine garamazdan girmek üçin pes päsgelçilikler bilen öz işini ösdürmäge mümkinçilik berýäris. Siziň ýokary standartlaryňyzyň bardygyny bilýäris. <strong>GURLUSHYK-da</strong> zerur önümleri arzan bahadan tapyp bilersiňiz - aladalanman!</p>
<p><strong>Gurluşyk</strong> Türkmenistanda alyjylary we satyjylary birleşdirýän onlaýn söwda platformasydyr. Müşderileriň arzan bahalara, has gowy saýlama we amatly hyzmat islegi, näme bolsa-da üýtgewsiz galýar. Häzirki wagtda bu islegleriň hemmesini <strong>gurlushyk.com.tm&nbsp;</strong>web sahypasynda tapyp bilersiňiz. Biziň wezipämiz, islendik ululykdaky telekeçilere, kärhanalara we guramalara ykdysady mümkinçilikler bermek we Türkmenistanda iň köp müşderi gönükdirilen kompaniýa bolmak. Satyjylara ululygyna, gelip çykyşyna ýa-da ýerleşişine garamazdan girmek üçin pes päsgelçilikler bilen öz işini ösdürmäge mümkinçilik berýäris. Siziň ýokary standartlaryňyzyň bardygyny bilýäris. <strong>GURLUSHYK-da</strong> zerur önümleri arzan bahadan tapyp bilersiňiz - aladalanman!</p>

View File

@ -1,6 +1,6 @@
<h6><strong>Zakazy ýatyrmak</strong></h6>
<p>Gowy hilli harytlary yzyna gaýtarmagyň möhleti, haryt satylanda başgaça ylalaşylmadyk bolsa, haryt alnan gününden 10 gün. Satyn alyjy tarapyndan harytlary yzyna gaýtarmagyň sebäpleri aşakdakylar bolup biler:</p>
<p>Gowy hilli harytlary yzyna gaýtarmagyň möhleti, haryt satylanda başgaça ylalaşylmadyk bolsa, haryt alnan gününden 24 sagadyň dowamynda. Satyn alyjy tarapyndan harytlary yzyna gaýtarmagyň sebäpleri aşakdakylar bolup biler:</p>
<h6>Sebäpler</h6>
@ -12,4 +12,4 @@
<h6>Sorag. Gelen harydyň hili pes bolan ýagdaýynda näme edip bilerin?</h6>
<p>Satyn alyjy tarapyndan harytlaryň yzyna gaýtarylmagynyň sebäbi harytlaryň önümçilik kemçiligi (nikasy) bolup biler. Satyn alyjy öndüriji tarapyndan kesgitlenen kepillik möhletinde şeýle harytlaryň yzyna gaýtarylmagyny talap edip biler. Önüm üçin kepillik möhleti öndüriji tarapyndan kesgitlenmedik bolsa, şeýle harytlary yzyna gaýtarmak möhleti 2 (iki) aý.</p>
<p>Satyn alyjy tarapyndan harytlaryň yzyna gaýtarylmagynyň sebäbi harytlaryň önümçilik kemçiligi (nikasy) bolup biler. Satyn alyjy öndüriji tarapyndan kesgitlenen kepillik möhletinde şeýle harytlaryň yzyna gaýtarylmagyny talap edip biler. Önüm üçin kepillik möhleti öndüriji tarapyndan kesgitlenmedik bolsa, şeýle harytlary yzyna gaýtarmak möhleti 24 sagadyň dowamynda.</p>

View File

@ -1,6 +1,6 @@
<h6><strong>Harydy yzyna gaýtarmak</strong></h6>
<p>Gowy hilli harytlary yzyna gaýtarmagyň möhleti, haryt satylanda başgaça ylalaşylmadyk bolsa, haryt alnan gününden 10 gün. Satyn alyjy tarapyndan harytlary yzyna gaýtarmagyň sebäpleri aşakdakylar bolup biler:</p>
<p>Gowy hilli harytlary yzyna gaýtarmagyň möhleti, haryt satylanda başgaça ylalaşylmadyk bolsa, haryt alnan gününden 24 sagadyň dowamynda. Satyn alyjy tarapyndan harytlary yzyna gaýtarmagyň sebäpleri aşakdakylar bolup biler:</p>
<h6>Sebäpler</h6>
@ -12,4 +12,4 @@
<h6>Sorag. Gelen harydyň hili pes bolan ýagdaýynda näme edip bilerin?</h6>
<p>Satyn alyjy tarapyndan harytlaryň yzyna gaýtarylmagynyň sebäbi harytlaryň önümçilik kemçiligi (nikasy) bolup biler. Satyn alyjy öndüriji tarapyndan kesgitlenen kepillik möhletinde şeýle harytlaryň yzyna gaýtarylmagyny talap edip biler. Önüm üçin kepillik möhleti öndüriji tarapyndan kesgitlenmedik bolsa, şeýle harytlary yzyna gaýtarmak möhleti 2 (iki) aý.</p>
<p>Satyn alyjy tarapyndan harytlaryň yzyna gaýtarylmagynyň sebäbi harytlaryň önümçilik kemçiligi (nikasy) bolup biler. Satyn alyjy öndüriji tarapyndan kesgitlenen kepillik möhletinde şeýle harytlaryň yzyna gaýtarylmagyny talap edip biler. Önüm üçin kepillik möhleti öndüriji tarapyndan kesgitlenmedik bolsa, şeýle harytlary yzyna gaýtarmak möhleti (24 sagadyň dowamynda).</p>

View File

@ -13,9 +13,6 @@ items:
ru:
title: 'О нас'
url: ''
en:
title: ''
url: ''
isHidden: '0'
cssClass: ''
isExternal: '0'
@ -73,7 +70,7 @@ items:
isExternal: '0'
items:
-
title: 'Agamyrat Dizaýn'
title: 'Bezeg Dizaýn'
nesting: null
type: url
url: /category-profile/agamyrat-dizayn
@ -264,9 +261,13 @@ items:
isExternal: '0'
-
title: 'Krasgalar we Emusýalar'
nesting: null
type: url
url: /category-profile/krasgalar-we-emusyalar
code: ''
reference: null
cmsPage: null
replace: null
viewBag:
locale:
ru:
@ -277,9 +278,26 @@ items:
isExternal: '0'
-
title: 'Elektrik önümleri'
nesting: null
type: url
url: /category-profile/elektrik-onumler
code: ''
reference: null
cmsPage: null
replace: null
viewBag:
locale:
ru:
title: ''
url: ''
isHidden: '0'
cssClass: ''
isExternal: '0'
-
title: Laminant
type: url
url: /category-profile/pol-ortukleri
code: ''
viewBag:
locale:
ru:

View File

@ -0,0 +1,13 @@
title = "VIP harytlar"
url = "/type-products/:type"
layout = "default"
is_hidden = 0
robot_index = "index"
robot_follow = "follow"
[vipproducts]
type = "{{ :type }}"
perPage = 12
sortOrder = "desc"
==
{% component 'vipproducts' %}

View File

@ -226,6 +226,9 @@ p {
}
@media (max-width: 1200px) {
.section_padding_100 {
padding: 15px 0;
}
.customCarousel .owl-item img {
display: block !important;
width: 100% !important;
@ -234,6 +237,33 @@ p {
-o-object-fit: cover !important;
}
.shop_by_catagory_slides .owl-item {
width:120px !important;
}
.shop_by_catagory_slides .owl-stage {
width:1200px !important;
}
.gurl_slider .owl-carousel .owl-stage-outer{
height: 151px !important;
}
.mt-5{
margin-top: 0rem !important;
}
.megamenu-slides .owl-item img{
height: 150px !important;
}
.popular_items_slides .owl-item{
width: 200px !important;
}
.customParentLink{
display: none !important;
}
@ -283,6 +313,9 @@ p {
}
@media (max-width: 992px) {
.section_padding_100 {
padding: 15px 0;
}
.customCarousel .owl-item img {
display: block !important;
width: 100% !important;
@ -291,6 +324,32 @@ p {
-o-object-fit: cover !important;
}
.shop_by_catagory_slides .owl-item {
width:120px !important;
}
.shop_by_catagory_slides .owl-stage {
width:1360px !important;
}
.gurl_slider .owl-carousel .owl-stage-outer{
height: 151px !important;
}
.megamenu-slides .owl-item img{
height: 150px !important;
}
.popular_items_slides .owl-item{
width: 200px !important;
}
.mt-5{
margin-top: 0rem !important;
}
.customParentLink{
display: none !important;
}

View File

@ -14,7 +14,7 @@
<div class="container">
<div class="row">
<!-- Single Footer Area -->
<div class="col-6 col-sm-6 col-md-5 col-lg-4 col-xl-3">
<div class="col-sm-12 col-md-6 col-lg-4">
<div class="single_footer_area mb-100">
<div class="footer_heading mb-4">
<h6>{{ 'footer.Habarlasmak'|_ }}</h6>
@ -33,7 +33,7 @@
</div>
<!-- Single Footer Area -->
<div class="col-6 col-sm-6 col-md col-lg-4 col-xl-2">
<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-2">
<div class="single_footer_area mb-100">
<div class="footer_heading mb-4">
<h6>{{ 'footer.Sahypalar'|_ }}</h6>
@ -51,7 +51,7 @@
</div>
<!-- Single Footer Area -->
<div class="col-6 col-sm-6 col-md col-lg-4 col-xl-2">
<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-2">
<div class="single_footer_area mb-100">
<div class="footer_heading mb-4">
<h6>{{ 'footer.Sahypalar'|_ }}</h6>
@ -64,7 +64,7 @@
</div>
<!-- Single Footer Area -->
<div class="col-6 col-sm-6 col-md-5 col-lg-4 col-xl-2">
<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-2">
<div class="single_footer_area mb-100">
<div class="footer_heading mb-4">
<h6>{{ 'footer.Sahypalar'|_ }}</h6>
@ -77,14 +77,14 @@
</div>
<!-- Single Footer Area -->
<div class="col-12 col-md-7 col-lg-8 col-xl-3">
<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-2">
<div class="single_footer_area mb-100">
<div class="footer_heading mb-4">
<h6>{{ 'footer.MobilProgrammalarymyz'|_ }}</h6>
</div>
<div class="apps_download">
<a href="https://play.google.com/store/apps/details?id=tm.gurlushyk.app.gurlushyk&hl=ru&gl=US" target="_blank"><img src="{{'assets/img/core-img/play-store.png'|theme}}" alt="Play Store"></a>
<a href="#"><img src="{{'assets/img/core-img/app-store.png'|theme}}" alt="Apple Store"></a>
<a href="https://apps.apple.com/us/app/gurlu%C5%9Fyk/id6468917081" target="_blank"><img src="{{'assets/img/core-img/app-store.png'|theme}}" alt="Apple Store"></a>
</div>
</div>
</div>

View File

@ -15,11 +15,17 @@ $this["productsq"] = TPS\Birzha\Models\Product::where("type", $type)->with("vend
<div class="container">
<div style="padding: 20px;border-radius: 6px;box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.05);background-color: #ffe0c7;border: 1px solid #fdc495;">
<div class="row">
<div class="col-12">
<div class="col-6">
<div class="popular_section_heading mb-30 text-center">
<h5 style="text-transform: capitalize;text-align:left;color:black;font-weight:bold;">{{header}}</h5>
</div>
</div>
<div class="col-6">
<div class="popular_section_heading mb-30 text-right">
<a href="{{ 'vip-products'|page({type: type}) }}" class="btn btn-primary" style="animation-delay: 600ms; opacity: 1; text-align:right">{{ 'product.Hemmesi'|_ }}</a>
<!-- <h5 style="text-transform: capitalize;text-align:right;color:black;font-weight:bold;">Hemmesi</h5> -->
</div>
</div>
</div>
<div class="row">