Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Storage;
- class AjaxController extends Controller
- {
- protected $uid;
- protected $JWT;
- protected $fName;
- protected $sName;
- protected $lName;
- protected $avatar;
- protected $nickname;
- protected $user;
- protected $countMsg;
- protected $warnMsg;
- protected $countNotify;
- protected $warnNotify;
- private function unpackJWT($JWT)
- {
- $tmp = explode('.', $JWT);
- $tmp[1] = base64_decode($tmp[1], true);
- $payload = json_decode($tmp[1], true);
- return $payload;
- }
- public function setUserData($JWT)
- {
- $payload = $this->unpackJWT($JWT);
- $this->uid = $payload['userId'];
- $usver = DB::table('users')->where('id', $this->uid)->first();
- $this->user = $usver;
- // $this->avatar=$admin->avatar;
- $this->fName = $usver->firstName;
- $this->sName = $usver->secondName;
- $this->lName = $usver->lastName;
- $this->nickname = 'Администратор ' . $this->fName;
- /*if(!empty($this->sName))$this->nickname.=' '.$this->sName;
- if(!empty($this->lName))$this->nickname.=' '.$this->lName;*/
- return true;
- }
- public function getResponse($form, $catName)
- {
- return "
- <div class='box box-success'>
- <div class='box-header with-border'>
- <div style='height:70px;line-height:70px;'>
- <h3 style='vertical-align:middle;display:inline-block;margin-left:10px;' class='box-title'>$catName</h3>
- </div>
- </div>
- $form
- </div>\n\t";
- }
- public function queryOnesS($request)
- {
- $ch = curl_init();
- $url = env('ONESS_PATH', 'http://pestshop.morskoi.com') . $request;
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
- curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
- curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
- curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
- curl_setopt($ch, CURLOPT_TIMEOUT, 33);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_FAILONERROR, 1);
- curl_setopt($ch, CURLOPT_VERBOSE, 1);
- curl_setopt($ch, CURLOPT_ENCODING, '');
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
- $res = curl_exec($ch);
- $info = curl_getinfo($ch);
- // return $info;
- if ($info['http_code'] != '200') return false;
- $res = json_decode($res, true);
- return $res;
- }
- public function queryAS($request)
- {
- $ch = curl_init();
- $url = env('JWT_RPATH', 'http://pestshop.morskoi.com') . $request;
- // return $url;
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
- curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
- curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
- curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
- curl_setopt($ch, CURLOPT_TIMEOUT, 33);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_FAILONERROR, 1);
- curl_setopt($ch, CURLOPT_VERBOSE, 1);
- curl_setopt($ch, CURLOPT_ENCODING, '');
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
- $res = curl_exec($ch);
- $info = curl_getinfo($ch);
- if ($info['http_code'] != '200') return false;
- $res = json_decode($res, true);
- return $res;
- }
- public function userEditForm(Request $request, $JWT, $uid)
- {
- // return response($request->url());
- $this->setUserData($JWT);
- $user = DB::table('users')->where('users.id', $uid)->first();
- if ($user) {
- $action = "/pestshop_admin/$JWT/agents";
- $perms = $this->queryAS("/user/$JWT/getpermissions/$uid");
- $shops = DB::table('shops')->get();
- $current = [];
- if ($perms['status'] == 'ok') {
- $tmp = base64_decode($perms['perm']);
- $tmp = explode(',', $tmp);
- if (!empty($tmp))
- foreach ($tmp as $key => $val) {
- $current[$val] = 1;
- }
- }
- $permForm = view('admin.permissions', ['action' => "$action", 'shops' => $shops, 'current' => $current, 'uid' => $uid,]);
- $form = "
- <form role='form' action='$action' method='POST'>
- <div class='box-body'>
- <p class='help-block'>Имя</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-user'></i></span>
- <input type='text' class='form-control' id='firstName1' name='firstName' placeholder='Укажите имя' value='{$user->firstName}'>
- </div>
- <p class='help-block'>Отчество</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-user'></i></span>
- <input type='text' class='form-control' id='secondName1' name='secondName' placeholder='Укажите отчество' value='{$user->secondName}'>
- </div>
- <p class='help-block'>Фамилия</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-user'></i></span>
- <input type='text' class='form-control' id='lastName1' name='lastName' placeholder='Укажите фамилию' value='{$user->lastName}'>
- </div>
- <p class='help-block'>Телефон</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-phone'></i></span>
- <input type='phone' class='form-control' id='phone1' name='phone' placeholder='Телефон' value='{$user->phone}'>
- </div>
- <p class='help-block'>Email</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-envelope'></i></span>
- <input type='email' class='form-control' id='email1' name='email' placeholder='Email' value='{$user->email}'>
- </div>
- <p class='help-block'>Введите новый пароль и его подтверждение для смены пароля. Если пароль менять не нужно, то оставьте поля пустыми</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-key'></i></span>
- <input type='password' class='form-control' id='newpass1' name='newpass' placeholder='Новый пароль'>
- </div>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-key'></i></span>
- <input type='password' class='form-control' id='newpass2' name='newpass2' placeholder='Подтверждение нового пароля'>
- </div>
- <input type='hidden' name='uid' value='$uid'>
- " . csrf_field() . "
- </div>
- <!-- /.box-body -->
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>
- $permForm\n\t";
- } else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование данных агента #' . $uid);
- }
- function changePermissions(Request $request, $JWT)
- {
- if (!empty($request->permissions)) {
- $reqPerm = json_encode($request->permissions);
- $change = base64_encode($reqPerm);
- // echo $change;return response(21);
- if (isset($request->uid)) {
- $perm = $this->queryAS("/user/$JWT/change/permissions/change/$change/{$request->uid}");
- if (isset($perm['status'])) {
- if ($perm['status'] == 'ok') {
- $out = '<div class="bg-success" style="padding:15px;">Изменения разрешений доступа сохранены</div>';
- DB::table('notifications')->where('uid', $request->uid)->whereNotIn('nShop', $request->permissions)->delete();
- $options = '{"sendEmail":"1","sendSMS":"1","sendPush":"1"}';
- // $options=stripslashes($options);
- foreach ($request->permissions as $val) {
- DB::insert(
- "INSERT IGNORE INTO `notifications` (`uid`, `nShop`, `options`) VALUES (?, ?, ?)",
- [$request->uid, $val, $options]
- );
- }
- } else $out = '<div class="bg-danger" style="padding:15px;">Не удалось сохранить изменения, ошибка: ' . $perm['status'] . '</div>';
- } else $out = '<div class="bg-danger" style="padding:15px;">Не удалось сохранить изменения, ошибка: unknown error</div>';
- }
- } else $out = '<div class="bg-danger" style="padding:15px;">Необходимо дать доступ хотя бы к одному магазину</div>';
- return response($out);
- }
- public function shopEditForm(Request $request, $JWT, $shopid)
- {
- $currentBanner = '';
- $shop = DB::table('shops')->where('shopID', $shopid)->first();
- // return response("$JWT, $shopid");
- if ($shop) {
- $shopName = $shop->shopName;
- if (!empty($shop->banner)) $currentBanner = "<img src='/storage/shopsbanner/{$shop->banner}' class='img-responsive' style='width:290px;margin:5px;'>";
- }
- $form = view('admin.shopform', [
- 'action' => "/pestshop_admin/$JWT/shops",
- 'catName' => 'Магазин ' . $shopName,
- 'shopName' => htmlentities($shopName),
- 'shopid' => $shop->id,
- 'currentBanner' => $currentBanner,
- 'JWT' => $JWT,
- 'countMsg' => $this->countMsg,
- 'warnMsg' => $this->warnMsg,
- 'nickname' => $this->nickname,
- 'avatar' => $this->avatar,
- ]);
- return $this->getResponse($form, 'Редактирование данных магазина #' . $shop->id);
- }
- public function storeEditForm(Request $request, $JWT, $shopid = 1, $sid)
- {
- $this->setUserData($JWT);
- $login = '';
- $shopSelect = '';
- // return response($request->url());
- $store = DB::table('stores')->where('storeID', $sid)->where('shop', $shopid)->first();
- if ($store) {
- $shops = DB::table('shops')->get();
- foreach ($shops as $shop) {
- $selected = '';
- if ($shop->id == $shopid) $selected = 'selected';
- $shopSelect .= "<option value='{$shop->id}' $selected>{$shop->shopName}</option>\n\t";
- }
- if ($store->location && $store->location != '-') {
- $tmp = explode(', ', $store->location);
- $lat = $tmp[0];
- $lng = $tmp[1];
- } else {
- $lat = '55.751849';
- $lng = '37.626515';
- }
- $login = 'pestshop_srvc' . $store->storeID;
- $ONES_URL = env('ONES_URL', 'example.com');
- $form = "
- <form role='form' action='/pestshop_admin/$JWT/stores/$shopid/$sid' method='POST'>
- <div class='box-body'>
- <p class='help-block'>Магазин</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-shopping-cart'></i></span>
- <select class='form-control' name='shop'>
- $shopSelect
- </select>
- </div>
- <p class='help-block'>Торговая точка (склад)</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-truck'></i></span>
- <input type='text' class='form-control' id='storeName1' name='storeName' placeholder='Название торговой точки или склада' value='{$store->storeName}'>
- </div>
- <p class='help-block'>Адрес</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-bus'></i></span>
- <input type='text' class='form-control' id='adress1' name='adress' placeholder='Адрес торговой точки или склада' value='{$store->adress}'>
- </div>
- <p class='help-block'>Режим работы</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' id='mode1' name='mode' placeholder='Режим работы торговой точки (склада)' value='{$store->mode}'>
- </div>
- <p class='help-block'>Отметьте положение торговой точки или склада на карте</p>
- <input type='hidden' id='location2' name='location' value='$lat, $lng'>
- <style>
- #mapid2{
- height: 270px;
- }
- </style>
- <div id='mapid2'></div>
- <script>
- var LatLng2=0;
- function onMapClick2(e){
- LatLng2=e.latlng.toString();
- LatLng2=LatLng2.replace('LatLng(','');
- LatLng2=LatLng2.replace(')','');
- $('#location2').val(LatLng2);
- var newPlace=LatLng2.split(', ');
- mymap2.removeLayer(marker2)
- marker2=L.marker(newPlace, {draggable: true}).addTo(mymap2);
- mymap2.on('click', onMapClick2);
- marker2.on('dragend', onmarkerDragged2);
- }
- function onmarkerDragged2(e){
- LatLng2=marker2.getLatLng();
- LatLng2=LatLng2.toString();
- LatLng2=LatLng2.replace('LatLng(','');
- LatLng2=LatLng2.replace(')','');
- $('#location2').val(LatLng2);
- }
- var mymap2 = L.map('mapid2').setView(['$lat', '$lng'], 13);
- L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png',{
- attribution: '© <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors'
- }).addTo(mymap2);
- var marker2 = L.marker(['$lat', '$lng'], {draggable: true}).addTo(mymap2);
- marker2.on('dragend', onmarkerDragged2);
- mymap2.on('click', onMapClick2);
- </script>
- <div class='box box-default'>
- <div class='box-header with-border'>
- Путь для сервиса синхронизации с 1С
- </div>
- <div class='box-body'>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-keyboard-o'></i></span>
- <input type='text' class='form-control' id='login1' name='path' placeholder='Тут должен быть путь...' value='$ONES_URL/onesservice/onesupload/$login/{$store->password}' readonly onclick='this.select();'>
- </div>
- </div>
- </div>
- " . csrf_field() . "
- </div>
- <!-- /.box-body -->
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>\n\t";
- } else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование данных торговой точки (склада) #' . $sid);
- }
- public function categoriesEditForm(Request $request, $JWT, $shopid = 1, $catid)
- {
- $this->setUserData($JWT);
- // return response($request->url());
- $category = DB::table('categories')->where('catID', $catid)->where('cShop', $shopid)->first();
- if ($category)
- $form = "
- <form role='form' action='/pestshop_admin/$JWT/categories/$shopid/$catid' method='POST'>
- <div class='box-body'>
- " . csrf_field() . "
- <p class='help-block'>Категория товара</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' name='newCat' value='{$category->catName}' required>
- </div>
- </div>
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>\n\t";
- else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование товарной категории #' . $catid);
- }
- public function brandsEditForm(Request $request, $JWT, $brandid)
- {
- $this->setUserData($JWT);
- // return response($request->url());
- $brand = DB::table('brands')->where('brandID', $brandid)->first();
- if ($brand)
- $form = "
- <form role='form' action='/pestshop_admin/$JWT/brands/$brandid' method='POST'>
- <div class='box-body'>
- " . csrf_field() . "
- <p class='help-block'>Наименование бренда</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' name='newBrand' value='{$brand->brandName}' required>
- </div>
- </div>
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>\n\t";
- else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование товарной категории #' . $brandid);
- }
- public function goodsEditForm(Request $request, $JWT, $shopid = 1, $goodsid)
- {
- $this->setUserData($JWT);
- $i = 1;
- $j = 0;
- $action = "/pestshop_admin/$JWT/goods/$shopid/$goodsid?page=" . $request->page;
- // return response($request->url());
- $goods = DB::table('goods')->join('categories as c', 'goods.category', '=', 'c.catID')->join('brands as b', 'goods.brand', '=', 'b.brandID')->where('gShop', $shopid)->where('goodsID', $goodsid)->first();
- $currentPhoto = "\n\t<div class='box box-default' style='margin-top:15px;'>
- <div class='box-header with-border'>
- <h3 class='box-title'>Загруженные фотографии</h3>
- </div>
- <div class='box-body'>\n\t";
- if (!empty($goods->photos)) {
- $tmp = json_decode($goods->photos, true);
- // print_r($tmp);
- foreach ($tmp as $val) {
- if ($j == 0) $currentPhoto .= "<div class='row'>";
- $currentPhoto .= "\n\t<div class='pull-left'style='margin:5px;'><div class ='delIt' rel='$i' style='background-color:#edd;padding:5px;cursor:pointer;'><i class='fa fa-trash'></i> Удалить фотографию</div><img src='/storage/goodsphoto/$val' alt='$j' title='{$goods->name}, фото $i' class='img-responsive' style='width:170px;margin:5px;'></div>";
- if ($j == 2) $currentPhoto .= "</div>";
- $i++;
- $j++;
- if ($j > 2) $j = 0;
- }
- } else $currentPhoto .= "\n\t<p class='bg-warning' style='padding:15px;'>Для этого товара нет загруженных фотографий</p>\n\t";
- $currentPhoto .= "\n\t
- </div>
- <div class='box-footer'>
- <p class='help-block'>Добавить фотографии</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='file' class='form-control' name='photo[]' multiple accept='image/*,image/jpeg'>
- </div>
- </div>
- </div>\n\t";
- $cats = DB::table('categories')->orderBy('catName', 'asc')->get();
- if ($cats) {
- $categories = "\n\t<select class='form-control' name='category'>\n\t";
- foreach ($cats as $cat) {
- $selected = '';
- if ($goods->category == $cat->catID) $selected = ' selected ';
- $categories .= "<option value='{$cat->catID}'$selected>{$cat->catName}</option>\n\t";
- }
- $categories .= '</select>';
- } else $categories = "<input type='hidden' class='form-control' id='cat1' name='category' value='Список категорий пуст'>";
- $brnds = DB::table('brands')->orderBy('brandName', 'asc')->get();
- if ($brnds) {
- $brands = "\n\t<select class='form-control' name='brand'>\n\t";
- foreach ($brnds as $brnd) {
- $selected = '';
- if ($goods->brand == $brnd->brandID) $selected = ' selected ';
- $brands .= "<option value='{$brnd->brandID}'$selected>{$brnd->brandName}</option>\n\t";
- }
- $brands .= '</select>';
- } else $brands = "<input type='hidden' class='form-control' id='cat1' name='brand' value='Список брендов пуст'>";
- $currs = DB::table('currency')->orderBy('curID', 'asc')->get();
- if ($currs) {
- $currencies = "\n\t<select class='form-control' name='currency'>\n\t";
- foreach ($currs as $curr) {
- $selected = '';
- if ($goods->currency == $curr->curName) $selected = ' selected ';
- $currencies .= "<option value='{$curr->curID}'$selected>{$curr->curName}</option>\n\t";
- }
- $currencies .= '</select>';
- } else $currencies = "<input type='hidden' class='form-control' id='cat1' name='brand' value='Список валют пуст'>";
- if ($goods)
- $form = "
- <form role='form' action='$action' method='POST' enctype='multipart/form-data'>
- <div class='box-body'>
- <input type='hidden' class='form-control' id='gShop1' name='gShop' placeholder='Магазин' value='$shopid'>
- <h4 class='box-title'>Редактирование данных товара</h4>
- <p class='help-block'>Название товара</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' id='name1' name='name' placeholder='Название товара' value='{$goods->name}'>
- </div>
- <p class='help-block'>Категория</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- $categories
- </div>
- <p class='help-block'>Бренд</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- $brands
- </div>
- $currentPhoto
- <p class='help-block'>Описание товара</p>
- <div class='form-group'>
- <textarea class='form-control' rows='3' placeholder='Описание товара' name='description'>{$goods->description}</textarea>
- </div>
- <p class='help-block'>Цена</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' id='price1' name='price' placeholder='Цена' value='{$goods->price}'>
- </div>
- <p class='help-block'>Валюта</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-money'></i></span>
- $currencies
- </div>
- <p class='help-block'>Единицы измерения</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' id='unit1' name='unit' placeholder='Единица измерения' value='{$goods->unit}'>
- </div>
- " . csrf_field() . "
- </div>
- <!-- /.box-body -->
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>
- <script>
- $(document).off('.delClass');
- $(document).on('click.delClass','.delIt',function(){
- var delURL='/pestshop_admin/$JWT/delgoodsphoto/$goodsid/'+$(this).attr('rel');
- // alert(delURL);return false;
- $.ajax({
- type: 'GET',
- url: delURL,
- success: function(data){
- $('#ajaxTarget').html(data).show(500);
- return false;
- },
- error: function(xhr, str){
- alert('Возникла ошибка: '+xhr.responseCode);
- }
- });
- return false;
- });
- </script>
- \n\t";
- else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование товара #' . $goodsid);
- }
- public function delGoodsPhoto(Request $request, $JWT, $goodsid, $photo)
- {
- $photo--;
- $goods = DB::table('goods')->where('gShop', 1)->where('goodsID', $goodsid)->first();
- $photos = json_decode($goods->photos, true);
- Storage::delete('public/goodsphoto/' . $photos[$photo]);
- unset($photos[$photo]);
- $photos = array_values($photos);
- $photos = json_encode($photos);
- $res = DB::table('goods')->where('gShop', 1)->where('goodsID', $goodsid)->update(['photos' => $photos]);
- return $this->goodsEditForm($request, $JWT, $goodsid);
- }
- public function searchGoods(Request $request, $JWT)
- {
- $outText = '';
- $html = '';
- $addAction = '?page=' . $request->page;
- $goodsCount = DB::table('goods as g')->join('brands as b', 'g.brand', '=', 'b.brandID')->join('categories as ctgr', 'g.category', '=', 'ctgr.catID')->where('gShop', $request->gShop)->where('name', 'like', "%{$request->name}%")->count();
- if ($goodsCount) {
- $goods = DB::table('goods as g')->join('brands as b', 'g.brand', '=', 'b.brandID')->join('categories as ctgr', 'g.category', '=', 'ctgr.catID')->where('gShop', $request->gShop)->where('name', 'like', "%{$request->name}%")->select('ctgr.catID as catID', 'g.name as name', 'b.brandName as brandName', 'ctgr.catName as catName', 'g.goodsID as goodsID')->orderBy('catName')->orderBy('name')->limit(10)->get();
- foreach ($goods as $good) {
- $html .= "<tr>
- <td>{$good->goodsID}</td>
- <td>{$good->name}</td>
- <td>{$good->catName}</td>
- <td>{$good->brandName}</td>
- <td><div class='input-group'>
- <input type='number' class='form-control' id='ajnum{$good->goodsID}' name='ajnum{$good->goodsID}' placeholder='Количество товара' value=''></td>
- </div>
- <td>
- <div class='btn-group btn-group-sm'>
- <a href='#edit' class='btn btn-default btn-flat' id='editStoresGoods' rel='{$good->goodsID}'><i class='fa fa-plus text-light-blue'></i></a>
- </div>
- </td>
- </tr>";
- }
- } else $html .= "\n\t<tr>
- <td colspan='6'><div class='bg-danger' style='padding:15px;'>Ничего не найдено</div></td>
- </tr>\n\t";
- $outText = "\n\t" . '<div class="box-body table-responsive no-padding">
- <table class="table table-hover">
- <tr>
- <th>ID</th>
- <th>Название</th>
- <th>Категория</th>
- <th>Бренд</th>
- <th>Количество</th>
- <th>Действие</th>
- </tr>
- ' . $html . '
- </table>
- </div>
- <script>
- $(document).off(".delClass");
- $(document).on("click.delClass","#editStoresGoods",function(){
- var rel=$(this).attr("rel");
- var ageURL="/pestshop_admin/' . $JWT . '/addcatalogues/' . $request->gShop . '/' . $request->storesid . '/' . $good->catID . '/"+rel+"/"+$("#ajnum"+rel).val()+"' . $addAction . '";
- // alert(ageURL);return false;
- $.ajax({
- type: "GET",
- url: ageURL,
- success: function(data){
- $("#ajaxTarget34").html(data).show(300);
- var getCatURL="/pestshop_admin/' . $JWT . '/getcatalogues/' . $request->gShop . '/' . $request->storesid . $addAction . '";
- // alert(data);
- if(data.indexOf("товар уже есть")==-1)
- setTimeout(function (){
- $("#ajaxTarget").load(getCatURL).show(500);
- },1000);
- return false;
- },
- error: function(xhr, str){
- alert("Возникла ошибка: "+xhr.responseCode);
- }
- });
- return false;
- });
- </script>
- ' . "\n\t";
- return $outText;
- }
- public function promosEditForm(Request $request, $JWT, $shopid, $promosid)
- {
- $this->setUserData($JWT);
- $action = "/pestshop_admin/$JWT/promos/$shopid/$promosid?page=" . $request->page;
- // return response($request->url());
- $promo = DB::table('promos')->where('pShop', $shopid)->where('promoID', $promosid)->first();
- $currentBanner = "\n\t<div class='box box-default' style='margin-top:15px;'>
- <div class='box-header with-border'>
- <h3 class='box-title'>Загруженный баннер</h3>
- </div>
- <div class='box-body'>\n\t";
- if (!empty($promo->banner)) {
- $currentBanner .= "\n\t<div class='pull-left'style='margin:5px;'><div class ='delIt' rel='1' style='background-color:#edd;padding:5px;cursor:pointer;'><i class='fa fa-trash'></i> Удалить баннер</div><img src='/storage/promosbanner/{$promo->banner}' alt='Промобаннер' title='{$promo->title}' class='img-responsive' style='width:170px;margin:5px;'></div>";
- } else $currentBanner .= "\n\t<p class='bg-warning' style='padding:15px;'>Для этой акции баннер не загружен</p>\n\t";
- $currentBanner .= "\n\t
- </div>
- <div class='box-footer'>
- <p class='help-block'>Заменить баннер</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='file' class='form-control' name='banner' accept='image/*,image/jpeg'>
- </div>
- </div>
- </div>\n\t";
- if ($promo)
- $form = "
- <form role='form' name='promoEditForm' action='javascript:void(0)' method='POST' id='promoEditForm1' enctype='multipart/form-data' onsubmit='sendPEF();'>
- <div class='box-body'>
- <input type='hidden' class='form-control' id='gShop1' name='gShop' placeholder='Магазин' value='$shopid'>
- <p class='help-block'>Название акции</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='text' class='form-control' id='name1' name='title' placeholder='Название акции' value='{$promo->title}' required>
- </div>
- $currentBanner
- <p class='help-block'>Краткое описание акции</p>
- <div class='form-group'>
- <textarea class='form-control' rows='3' placeholder='Краткое описание акции' name='shortDescription' required>{$promo->shortDescription}</textarea>
- </div>
- <p class='help-block'>Полное описание акции</p>
- <div class='form-group'>
- <textarea class='form-control' rows='3' placeholder='Полное описание акции' name='fullDescription' required>{$promo->fullDescription}</textarea>
- </div>
- <p class='help-block'>Начало акции</p>
- <div class='form-group'>
- <div class='input-group date' id='ajdatetimepicker1'>
- <span class='input-group-addon'>
- <span class='glyphicon glyphicon-calendar'></span>
- </span>
- <input type='text' class='form-control' name='dayFrom' value='{$promo->from}' required readonly>
- </div>
- </div>
- <script type='text/javascript'>
- $(function () {
- $('#ajdatetimepicker1').datetimepicker({
- locale: 'ru',
- format: 'Y-MM-DD',
- ignoreReadonly: true
- });
- });
- </script>
- <p class='help-block'>Окончание акции</p>
- <div class='form-group'>
- <div class='input-group date' id='ajdatetimepicker2'>
- <span class='input-group-addon'>
- <span class='glyphicon glyphicon-calendar'></span>
- </span>
- <input type='text' class='form-control' name='dayTo' value='{$promo->to}' required readonly>
- </div>
- </div>
- <script type='text/javascript'>
- $(function () {
- $('#ajdatetimepicker2').datetimepicker({
- locale: 'ru',
- format: 'Y-MM-DD',
- ignoreReadonly: true,
- useCurrent: false
- });
- $('#ajdatetimepicker1').on('dp.change', function (e) {
- $('#ajdatetimepicker2').data('DateTimePicker').minDate(e.date);
- });
- });
- </script>
- " . csrf_field() . "
- </div>
- <!-- /.box-body -->
- <div class='box-footer'>
- <div class='pull-right'>
- <button type='submit' class='btn btn-primary'>Сохранить</button>
- </div>
- </div>
- </form>
- <script>
- $(document).off('.delClass');
- $(document).on('click.delClass','.delIt',function(){
- var delURL='/pestshop_admin/$JWT/delpromosbanner/$shopid/$promosid/'+$(this).attr('rel');
- // alert(delURL);return false;
- $.ajax({
- type: 'GET',
- url: delURL,
- success: function(data){
- $('#ajaxTarget').html(data).show(500);
- return false;
- },
- error: function(xhr, str){
- alert('Возникла ошибка: '+xhr.responseCode);
- }
- });
- return false;
- });
- function sendPEF(){
- var formData= new FormData(document.forms.promoEditForm);
- var xhr= new XMLHttpRequest();
- xhr.open('POST', '$action');
- xhr.onreadystatechange=function(){
- if (xhr.readyState==4){
- if(xhr.status==200){
- data=xhr.responseText;
- if(data=='21'){
- $(location).attr('href','$action');
- }else{
- $('#ajaxTarget').prepend(data);
- $('#errMsg1').delay(2000).fadeOut(1500);
- return false;
- }
- }else{
- alert('Возникла ошибка: '+xhr.responseCode);
- return false;
- }
- }
- };
- xhr.send(formData);
- return false;
- }
- </script>\n\t";
- else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Редактирование промоакции #' . $promosid);
- }
- public function delPromosBanner(Request $request, $JWT, $shopid, $promosid, $banner)
- {
- $promos = DB::table('promos')->where('pShop', $shopid)->where('promoID', $promosid)->first();
- Storage::delete('public/promosbanner/' . $promos->banner);
- $res = DB::table('promos')->where('pShop', $shopid)->where('promoID', $promosid)->update(['banner' => ""]);
- return $this->promosEditForm($request, $JWT, $shopid, $promosid);
- }
- public function getStoresCat(Request $request, $JWT, $shopid, $storesid, $msg = '')
- {
- $html = '';
- $addAction = '';
- $storesGoods = DB::table('catalogue as c')->join('goods as g', 'c.goodsID', '=', 'g.goodsID')->join('brands as b', 'g.brand', '=', 'b.brandID')->join('categories as ctgr', 'g.category', '=', 'ctgr.catID')->where('c.store', $storesid)->where('c.cShop', $shopid)->select('c.catID as catID', 'g.name as name', 'b.brandName as brandName', 'ctgr.catName as catName', 'c.num as num', 'g.unit as unit', 'c.id as cid')->orderBy('catName')->orderBy('name')->paginate(15);
- // var_dump($storesGoods->items());return response(21);
- if ($storesGoods && !empty($storesGoods->items())) {
- $html .= '<span id="ajPaginate1">' . $storesGoods->links() . '</span>';
- $addAction = '?page=' . $storesGoods->currentPage();
- foreach ($storesGoods as $storesGood) {
- $html .= "<tr>
- <td>{$storesGood->cid}</td>
- <td>{$storesGood->name}</td>
- <td>{$storesGood->catName}</td>
- <td>{$storesGood->brandName}</td>
- <td>{$storesGood->num}</td>
- <td>{$storesGood->unit}</td>
- <td>
- <div class='btn-group btn-group-sm'>
- <a href='#edit' class='btn btn-default btn-flat' id='editStoresGoods' rel='{$storesGood->catID}'><i class='fa fa-trash text-light-blue'></i></a>
- </div>
- </td>
- </tr>";
- }
- } else $html .= "\n\t<tr>
- <td colspan='5'>Список товара пуст</td>
- </tr>\n\t";
- $outText = "\n\t" . $msg . "\n\t" . '<div class="box-body table-responsive no-padding">
- <table class="table table-hover">
- <tr>
- <th>ID</th>
- <th>Название</th>
- <th>Категория</th>
- <th>Бренд</th>
- <th>Количество</th>
- <th>Единицы</th>
- <th>Действие</th>
- </tr>
- ' . $html . '
- </table>
- </div>
- <script>
- $(document).off(".delClass");
- $(document).on("click.delClass","#editStoresGoods",function(){
- if(!confirm("Вы действительно хотите удалить этот товар из каталога торговой точки?")) return false;
- var ageURL="/pestshop_admin/' . $JWT . '/delcatalogues/' . $shopid . '/' . $storesid . '/"+$(this).attr("rel")+"' . $addAction . '";
- // alert(ageURL);return false;
- $.ajax({
- type: "GET",
- url: ageURL,
- success: function(data){
- $("#ajaxTarget").html(data).show(500);
- return false;
- },
- error: function(xhr, str){
- alert("Возникла ошибка: "+xhr.responseCode);
- }
- });
- return false;
- });
- $(document).on("click.delClass","span#ajPaginate1 .page-link",function(){
- var ageURL="/pestshop_admin/' . $JWT . '/getcatalogues/' . $shopid . '/' . $storesid . '?page="+$(this).html();
- // alert(ageURL);return false;
- $.ajax({
- type: "GET",
- url: ageURL,
- success: function(data){
- $("#ajaxTarget").html(data).show(500);
- return false;
- },
- error: function(xhr, str){
- alert("Возникла ошибка: "+xhr.responseCode);
- return false;
- }
- });
- return false;
- });
- $(document).on("click.delClass","#loadOneSs1",function(){
- var ageURL="/pestshop_admin/' . $JWT . '/loadcatalogues/' . $shopid . '/' . $storesid . '"+"' . $addAction . '";
- // alert(ageURL);return false;
- $.ajax({
- type: "GET",
- url: ageURL,
- success: function(data){
- // alert(data);
- $("#ajaxTarget").html(data).show(500);
- return false;
- },
- error: function(xhr, str){
- alert("Возникла ошибка: "+xhr.responseCode);
- }
- });
- return false;
- });
- </script>
- ' . "\n\t";
- $outText .= view('admin.addstoregoodsform', ['JWT' => $JWT, 'storesid' => $storesid, 'shopid' => $shopid, 'page' => $request->page]);
- return $this->getResponse($outText, 'Каталог товара торговой точки #' . $storesid);
- }
- public function addGoods(Request $request, $JWT, $shopid, $storesid, $catID, $goodsid, $num)
- {
- try {
- $res = DB::table('catalogue')->insertGetId(['catID' => $catID, 'goodsID' => $goodsid, 'store' => $storesid, 'cShop' => $shopid, 'num' => $num]);
- } catch (\Illuminate\Database\QueryException $e) {
- //return response('query error: '.$e->errorInfo[2]]);
- if (mb_stripos($e->errorInfo[2], 'duplicate entry') !== false) return response('<div class="bg-danger" style="padding:15px;">Этот товар уже есть в каталоге торговой точки</div>');
- else return response('<div class="bg-danger" style="padding:15px;">Ошибка добавления</div>');
- }
- return response('<div class="bg-success" style="padding:15px;">Товар в каталог торговой точки добавлен</div>');
- }
- public function delGoodsItem(Request $request, $JWT, $shopid, $storesid, $catid)
- {
- $shopid = DB::table('catalogue')->where('cShop', $shopid)->where('store', $storesid)->where('catID', $catid)->value('cShop');
- $res = DB::table('catalogue')->where('cShop', $shopid)->where('store', $storesid)->where('catID', $catid)->delete();
- return $this->getStoresCat($request, $JWT, $shopid, $storesid);
- }
- public function loadCatalogue(Request $request, $JWT, $shopid, $storesid)
- {
- $this->setUserData($JWT);
- $msg = "<div class='bg-success' style='padding:15px;'>Каталог товаров обновлен!</div>";
- $num = DB::table('stores')->where('storeID', $storesid)->where('shop', $shopid)->count();
- if (!$num) return $this->getStoresCat($request, $JWT, $shopid, $storesid, "<div class='bg-danger' style='padding:15px;'>Не удалось обновить каталог товаров, торговая точка не найдена!</div>");
- $response = $this->queryOnesS("/$JWT/getit/$shopid/$storesid");
- // print_r($response);return (21);
- if ($response && $response['status'] == 'ok') {
- $data = $response['data'];
- $shopData = $data['shop'];
- if (!empty($shopData)) {
- DB::table('shops')->where('id', $shopid)->update([
- 'shopID' => $shopData['shopID'],
- 'INN' => $shopData['INN'],
- 'shopName' => $shopData['shopName'],
- ]);
- DB::table('stores')->where('storeID', $storesid)->update(['storeName' => $shopData['storeName']]);
- }
- $categories = $data['categories'];
- if (!empty($categories))
- // DB::table('categories')->where('cShop', $shopid)->delete();
- foreach ($categories as $category) {
- if ($category['shop'] != $shopid) return $this->getStoresCat($request, $JWT, $shopid, $storesid, "<div class='bg-danger' style='padding:15px;'>Не удалось обновить каталог товаров, сервис синхронизации предоставил некорректные данные!</div>");
- DB::insert(
- "INSERT INTO `categories` (`cShop`,`catOnesID`,`parent`,`catName`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `parent`=?, `catName`=?",
- [$shopid, $category['catID'], $category['parent'], $category['catName'], $category['parent'], $category['catName']]
- );
- }
- $brands = $data['brand'];
- if (!empty($brands))
- foreach ($brands as $brand => $val) {
- DB::insert("INSERT IGNORE INTO `brands` (`brandName`) VALUES (?)", [$brand]);
- }
- $goods = $data['goods'];
- if (!empty($goods)) {
- // DB::table('goods')->where('gShop', $shopid)->delete();
- foreach ($goods as $product) {
- if (!isset($cats[$product['catOnesID']])) $cats[$product['catOnesID']] = DB::table('categories')->where('catOnesID', $product['catOnesID'])->value('catID');
- $brandID = DB::table('brands')->where('brandName', $product['brand'])->value('brandID');
- DB::insert(
- "INSERT INTO `goods` (`gOnesID`,`gShop`,`name`,`category`,`brand`,`description`,`price`,`currency`,`unit`,`photos`) VALUES (?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE `name`=?,`category`=?,`brand`=?,`description`=?,`price`=?,`currency`=?,`unit`=?",
- [
- $product['gOnesID'], $shopid, $product['name'], $cats[$product['catOnesID']], $brandID,
- $product['description'], $product['price'], $product['currency'], $product['unit'], "",
- $product['name'], $cats[$product['catOnesID']], $brandID, $product['description'], $product['price'],
- $product['currency'], $product['unit']
- ]
- );
- }
- }
- $catalogue = $data['catalogue'];
- // $i=1;
- if (!empty($catalogue)) {
- DB::table('catalogue')->where('cShop', $shopid)->where('store', $storesid)->delete();
- foreach ($catalogue as $catRec) {
- if (!isset($cats[$catRec['catOnesID']])) $cats[$catRec['catOnesID']] = DB::table('categories')->where('catOnesID', $catRec['catOnesID'])->value('catID');
- if (!isset($gds[$catRec['gOnesID']])) $gds[$catRec['gOnesID']] = DB::table('goods')->where('gOnesID', $catRec['gOnesID'])->value('goodsID');
- $insRes = DB::insert(
- "INSERT INTO `catalogue` (`catID`,`cShop`,`goodsID`,`store`,`num`) VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE `catID`=?, `num`=?",
- [$cats[$catRec['catOnesID']], $shopid, $gds[$catRec['gOnesID']], $storesid, $catRec['num'], $cats[$catRec['catOnesID']], $catRec['num']]
- );
- // print_r($catalogue);return
- // echo $i++.". INSERT INTO `catalogue` (`catID`,`cShop`,`goodsID`,`store`,`num`) VALUES ('".$cats[$catRec['catOnesID']]."', '".$shopid."', '".$gds[$catRec['gOnesID']]."', '".$storesid."', '".$catRec['num']."') ON DUPLICATE KEY UPDATE `catID`='".$cats[$catRec['catOnesID']]."', `num`='".$catRec['num']."'\n";
- }
- }
- } else {
- if ($response['status'] == 'not ready')
- switch ($response['code']) {
- case '-1':
- $msg = ", данные для этой торговой точки или склада не выгружались";
- break;
- case '0':
- $msg = ", нет новых данных";
- break;
- case '1':
- $msg = ", данные обновляются, запросите данные позже";
- break;
- case '2':
- $msg = ", вы вообще никогда не должны были увидеть это сообщение об ошибке, свяжитесь с разработчиками";
- break;
- default:
- $msg = ", неизвестная ошибка, свяжитесь с разработчиками";
- }
- if ($response['status'] == 'not found') $msg = ", текущие данные уже были загружены";
- $msg = "<div class='bg-danger' style='padding:15px;'>Не удалось обновить каталог товаров точки$msg</div>";
- }
- return $this->getStoresCat($request, $JWT, $shopid, $storesid, $msg);
- }
- function getAttachBlock($files)
- {
- $attach = '';
- if (!empty($files)) {
- $tmp = json_decode($files, true);
- foreach ($tmp as $val)
- $attach .= "\n\t<li><a href='/storage/attachments/$val' style='margin:5px;' target='_blank'>$val</a></li>";
- } else $attach = "\n\t<li>вложений нет</li>\n\t";
- $attach = "
- <ul class='list-inline'>
- <li style='padding-top:5px;'><i class='fa fa-paperclip'></i><li>
- $attach
- </ul>\n\t";
- return $attach;
- }
- public function getMsg($JWT, $where, $mid)
- {
- $this->setUserData($JWT);
- $msg = DB::table('messages')->where('id', $mid)->first();
- $from = DB::table('users')->where('id', $msg->from)->first();
- $to = DB::table('users')->where('id', $msg->to)->first();
- if (!$msg->parent) $msg->parent = $mid;
- if (mb_stripos($msg->title, 'Re') !== false) $title = $msg->title;
- else $title = 'Re: ' . $msg->title;
- $where = $msg->status;
- if ($where == 'wait') $where = 'unread';
- // return response(344);
- if ($msg) {
- $attachments = $this->getAttachBlock($msg->files);
- $form = "
- <div class='box-body'>
- <div class='mailbox-read-info'>
- <h3>Тема: {$msg->title}</h3>
- <h5>От: {$from->firstName} {$from->secondName} {$from->lastName}
- <span class='mailbox-read-time pull-right'>Отправлено: {$msg->sentDate}</span>
- </h5>
- </div>
- <div class='mailbox-read-message'>
- <h4>Сообщение:</h4>
- <p>{$msg->message}</p>
- $attachments
- </div>
- </div>
- <div class='box-footer'>
- <form role='form' action='/pestshop_admin/$JWT/msg/$where' method='POST' enctype='multipart/form-data'>
- " . csrf_field() . "
- <div class='form-group'>
- <input type='hidden' name='replyID' value='$mid'>
- <input type='hidden' name='to' value='{$msg->from}'>
- <input type='hidden' name='title' value='{$title}'>
- <input type='hidden' name='parent' value='{$msg->parent}'>
- <input type='hidden' name='mShop' value='{$msg->mShop}'>
- <label for='ta1'>Написать сообщение:</label>
- <textarea class='form-control' name='answer' id='ta1' rows='5'required></textarea>
- <p class='help-block'>Прикрепить файл(ы)</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='file' class='form-control' name='attach[]' multiple>
- </div>
- </div>
- <div class='form-group'>
- <button type='submit' class='btn btn-info btn-flat'>Отправить</button>
- </div>
- </form>
- </div>\n\t";
- } else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- return $this->getResponse($form, 'Сообщение #' . $mid);
- }
- public function getMsgThread($JWT, $where, $tid)
- {
- $this->setUserData($JWT);
- $tread = '';
- $root = '';
- $msg = DB::table('messages')->where('id', $tid)->first();
- $from = DB::table('users')->where('id', $msg->from)->first();
- if ($this->uid != $msg->from) $parentFrom = $msg->from;
- else $parentFrom = $msg->to;
- $to = DB::table('users')->where('id', $msg->to)->first();
- $userArray[$msg->from] = "{$from->firstName} {$from->secondName} {$from->lastName}";
- $userArray[$msg->to] = "{$to->firstName} {$to->secondName} {$to->lastName}";
- if (!$msg->parent) $msg->parent = $tid;
- if (mb_stripos($msg->title, 'Re') !== false) $title = $msg->title;
- else $title = 'Re: ' . $msg->title;
- $where = $msg->status;
- // return response($userArray);
- if ($msg) {
- $attachments = $this->getAttachBlock($msg->files);
- $root = "
- <div class='mailbox-read-info'>
- <h3>Тема: {$msg->title}</h3>
- <h5>От: {$from->firstName} {$from->secondName} {$from->lastName}
- <span class='mailbox-read-time pull-right'>Отправлено: {$msg->sentDate}</span>
- </h5>
- </div>
- <div class='mailbox-read-message'>
- <h4>Сообщение:</h4>
- <p>{$msg->message}</p>
- $attachments
- </div>\n\t\t";
- } else return response("<div class='bg-danger' style='padding-left:15px;'>Запись не найдена!</div>");
- $msgs = DB::table('messages')->where('parent', $tid)->get();
- foreach ($msgs as $msg) {
- $attachments = $this->getAttachBlock($msg->files);
- $tread .= "
- <div class='mailbox-read-info'>
- <h3>Тема: {$msg->title}</h3>
- <h5>От: {$userArray[$msg->from]}
- <span class='mailbox-read-time pull-right'>Отправлено: {$msg->sentDate}</span>
- </h5>
- </div>
- <div class='mailbox-read-message'>
- <h4>Сообщение:</h4>
- <p>{$msg->message}</p>
- $attachments
- </div>\n\t\t";
- }
- $form = "
- <div class='box-body'>
- $root
- $tread
- </div>
- <div class='box-footer'>
- <form role='form' action='/pestshop_admin/$JWT/msg/$where' method='POST' enctype='multipart/form-data'>
- " . csrf_field() . "
- <div class='form-group'>
- <input type='hidden' name='replyID' value='$tid'>
- <input type='hidden' name='to' value='{$parentFrom}'>
- <input type='hidden' name='title' value='{$title}'>
- <input type='hidden' name='parent' value='{$msg->parent}'>
- <input type='hidden' name='mShop' value='{$msg->mShop}'>
- <label for='ta1'>Написать сообщение:</label>
- <textarea class='form-control' name='answer' id='ta1' rows='5' required></textarea>
- <p class='help-block'>Прикрепить файл(ы)</p>
- <div class='input-group'>
- <span class='input-group-addon'><i class='fa fa-list-alt'></i></span>
- <input type='file' class='form-control' name='attach[]' multiple>
- </div>
- </div>
- <div class='form-group'>
- <button type='submit' class='btn btn-info btn-flat'>Отправить</button>
- </div>
- </form>
- </div>\n\t";
- return $this->getResponse($form, 'Нитка сообщений #' . $tid);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement