Merge branch 'catsworld-master'
This commit is contained in:
+5
-5
@@ -18,8 +18,8 @@ REDIS_PASSWORD=null
|
|||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
|
|
||||||
MAIL_DRIVER=smtp
|
MAIL_DRIVER=smtp
|
||||||
MAIL_HOST=smtp.qq.com
|
MAIL_HOST=mailtrap.io
|
||||||
MAIL_PORT=465
|
MAIL_PORT=2525
|
||||||
MAIL_USERNAME=519418441@qq.com
|
MAIL_USERNAME=null
|
||||||
MAIL_PASSWORD=rrmdasvmcnzhcbea
|
MAIL_PASSWORD=null
|
||||||
MAIL_ENCRYPTION=ssl
|
MAIL_ENCRYPTION=null
|
||||||
|
|||||||
@@ -132,7 +132,6 @@ class AdminController extends Controller
|
|||||||
$input = $request->all();
|
$input = $request->all();
|
||||||
$announcement = new Announcement;
|
$announcement = new Announcement;
|
||||||
$announcement->title = $input['title'];
|
$announcement->title = $input['title'];
|
||||||
$announcement->summary = $input['summary'];
|
|
||||||
$announcement->content = $input['content'];
|
$announcement->content = $input['content'];
|
||||||
$announcement->save();
|
$announcement->save();
|
||||||
return Redirect::to('/sendannouncement');
|
return Redirect::to('/sendannouncement');
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
|
||||||
|
|
||||||
use App\User;
|
|
||||||
use Validator;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Foundation\Auth\ThrottlesLogins;
|
|
||||||
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
|
|
||||||
|
|
||||||
class AuthController extends Controller
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Registration & Login Controller
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This controller handles the registration of new users, as well as the
|
|
||||||
| authentication of existing users. By default, this controller uses
|
|
||||||
| a simple trait to add these behaviors. Why don't you explore it?
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Where to redirect users after login / registration.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $redirectTo = '/';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new authentication controller instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a validator for an incoming registration request.
|
|
||||||
*
|
|
||||||
* @param array $data
|
|
||||||
* @return \Illuminate\Contracts\Validation\Validator
|
|
||||||
*/
|
|
||||||
protected function validator(array $data)
|
|
||||||
{
|
|
||||||
return Validator::make($data, [
|
|
||||||
'name' => 'required|max:255',
|
|
||||||
'email' => 'required|email|max:255|unique:users',
|
|
||||||
'password' => 'required|min:6|confirmed',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new user instance after a valid registration.
|
|
||||||
*
|
|
||||||
* @param array $data
|
|
||||||
* @return User
|
|
||||||
*/
|
|
||||||
protected function create(array $data)
|
|
||||||
{
|
|
||||||
return User::create([
|
|
||||||
'name' => $data['name'],
|
|
||||||
'email' => $data['email'],
|
|
||||||
'password' => bcrypt($data['password']),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
|
||||||
|
|
||||||
class PasswordController extends Controller
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Password Reset Controller
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This controller is responsible for handling password reset requests
|
|
||||||
| and uses a simple trait to include this behavior. You're free to
|
|
||||||
| explore this trait and override any methods you wish to tweak.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
use ResetsPasswords;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new password controller instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware('guest');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Redirect;
|
|||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\GoodInfo;
|
use App\GoodInfo;
|
||||||
|
use App\GoodCat;
|
||||||
use App\Announcement;
|
use App\Announcement;
|
||||||
|
|
||||||
class ContentController extends Controller
|
class ContentController extends Controller
|
||||||
@@ -15,9 +16,13 @@ class ContentController extends Controller
|
|||||||
public function Mainpage()
|
public function Mainpage()
|
||||||
{
|
{
|
||||||
$data = [];
|
$data = [];
|
||||||
$data['hotgoods'] = GoodInfo::orderby('sold_month', 'asc')->limit(5)->get();
|
$data['stargoods'] = GoodInfo::where('checked', '1')->where('stared', '1')->orderby('id', 'asc')->limit(5)->get();
|
||||||
$data['newgoods'] = GoodInfo::orderby('id', 'dsc')->limit(6)->get();
|
$data['newgoods'] = GoodInfo::where('checked', '1')->orderby('id', 'dsc')->limit(8)->get();
|
||||||
$data['announces'] = Announcement::orderby('id', 'dsc')->get();
|
$data['cats'] = GoodCat::orderby('cat_index', 'asc')->get();
|
||||||
|
foreach($data['cats'] as $cat){
|
||||||
|
$data['catgoods'][$cat->cat_name] = GoodInfo::where('cat_id', $cat->id)->where('checked', '1')->inRandomOrder()->limit(4)->get();
|
||||||
|
}
|
||||||
|
$data['announces'] = Announcement::orderby('id', 'dsc')->limit(3)->get();
|
||||||
return View::make('welcome')->with($data);
|
return View::make('welcome')->with($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ use App\FavList;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Storage;
|
use Storage;
|
||||||
use Image;
|
use Image;
|
||||||
|
use App\Http\Requests\addGoodRequest;
|
||||||
|
|
||||||
class GoodController extends Controller
|
class GoodController extends Controller
|
||||||
{
|
{
|
||||||
@@ -33,14 +34,14 @@ class GoodController extends Controller
|
|||||||
$input = $request->all();
|
$input = $request->all();
|
||||||
$query = "";
|
$query = "";
|
||||||
if(isset($input['query'])) $query = $input['query'];
|
if(isset($input['query'])) $query = $input['query'];
|
||||||
$data['cats'] = GoodCat::orderby('cat_name', 'asc')->get();
|
$data['cats'] = GoodCat::orderby('cat_index', 'asc')->get();
|
||||||
$data['goods'] = GoodInfo::where('good_name', 'like', "%$query%");
|
$data['goods'] = GoodInfo::where('good_name', 'like', "%$query%");
|
||||||
$data['cat_id'] = 0;
|
$data['cat_id'] = 0;
|
||||||
if(isset($input['cat_id'])){
|
if(isset($input['cat_id'])){
|
||||||
$data['goods'] = GoodInfo::where('cat_id', $input['cat_id']);
|
$data['goods'] = GoodInfo::where('cat_id', $input['cat_id']);
|
||||||
$data['cat_id'] = $input['cat_id'];
|
$data['cat_id'] = $input['cat_id'];
|
||||||
}
|
}
|
||||||
$data['goods'] = $data['goods']->orderby('id', 'asc')->paginate(16);
|
$data['goods'] = $data['goods']->orderby('id', 'asc')->where('checked', 1)->paginate(16);
|
||||||
if($request->session()->has('user_id'))
|
if($request->session()->has('user_id'))
|
||||||
$data['user_id'] = $request->session()->get('user_id');
|
$data['user_id'] = $request->session()->get('user_id');
|
||||||
else
|
else
|
||||||
@@ -154,13 +155,13 @@ class GoodController extends Controller
|
|||||||
* @return Redirect
|
* @return Redirect
|
||||||
* @description Add a new good.
|
* @description Add a new good.
|
||||||
*/
|
*/
|
||||||
public function addGood(Request $request)
|
public function addGood(addGoodRequest $request)
|
||||||
{
|
{
|
||||||
if($request->method() == "GET"){
|
if($request->method() == "GET"){
|
||||||
$data = [];
|
$data = [];
|
||||||
if(!$request->session()->has('user_id'))
|
if(!$request->session()->has('user_id'))
|
||||||
return Redirect::back();
|
return Redirect::back();
|
||||||
$data['cats'] = GoodCat::orderby('cat_name', 'asc')->get();
|
$data['cats'] = GoodCat::orderby('cat_index', 'asc')->get();
|
||||||
return view::make('good.addPage')->with($data);
|
return view::make('good.addPage')->with($data);
|
||||||
}else{
|
}else{
|
||||||
if(!$request->session()->has('user_id'))
|
if(!$request->session()->has('user_id'))
|
||||||
@@ -203,7 +204,7 @@ class GoodController extends Controller
|
|||||||
{
|
{
|
||||||
if($request->method() == "GET"){
|
if($request->method() == "GET"){
|
||||||
$data = [];
|
$data = [];
|
||||||
$data['cats'] = GoodCat::orderby('cat_name', 'asc')->get();
|
$data['cats'] = GoodCat::orderby('cat_index', 'asc')->get();
|
||||||
$data['goods'] = GoodInfo::where('id', $good_id)->get();
|
$data['goods'] = GoodInfo::where('id', $good_id)->get();
|
||||||
return view::make('good.editPage')->with($data);
|
return view::make('good.editPage')->with($data);
|
||||||
}else{
|
}else{
|
||||||
@@ -253,7 +254,6 @@ class GoodController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
<<<<<<< Updated upstream
|
|
||||||
* @function quickAccess
|
* @function quickAccess
|
||||||
* @input $request (use query)
|
* @input $request (use query)
|
||||||
*
|
*
|
||||||
@@ -266,7 +266,7 @@ class GoodController extends Controller
|
|||||||
$data = [];
|
$data = [];
|
||||||
$input = $request->all();
|
$input = $request->all();
|
||||||
$query = $input['query'];
|
$query = $input['query'];
|
||||||
$data['cats'] = GoodCat::orderby('cat_name', 'asc')->get();
|
$data['cats'] = GoodCat::orderby('cat_index', 'asc')->get();
|
||||||
$data['goods'] = GoodInfo::where('good_name', 'like', "%$query%")->get();
|
$data['goods'] = GoodInfo::where('good_name', 'like', "%$query%")->get();
|
||||||
if($request->session()->has('user_id'))
|
if($request->session()->has('user_id'))
|
||||||
$data['user_id'] = $request->session()->get('user_id');
|
$data['user_id'] = $request->session()->get('user_id');
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ use Illuminate\Support\Facades\Session;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Hash;
|
use Hash;
|
||||||
use Mail;
|
use Mail;
|
||||||
|
use Image;
|
||||||
use App\Http\Requests\RegisterRequest;
|
use App\Http\Requests\RegisterRequest;
|
||||||
use App\Http\Requests\LoginRequest;
|
use App\Http\Requests\LoginRequest;
|
||||||
|
|
||||||
@@ -97,6 +98,10 @@ class UserController extends Controller
|
|||||||
$user->tel_num = $input['tel_num'];
|
$user->tel_num = $input['tel_num'];
|
||||||
$user->address = $input['address'];
|
$user->address = $input['address'];
|
||||||
$user->update();
|
$user->update();
|
||||||
|
Storage::put(
|
||||||
|
'avatar/'.$user_id,
|
||||||
|
Image::make($request->file('avatarPic'))->crop(round($input['crop_width']),round($input['crop_height']),round($input['crop_x']),round($input['crop_y']))->resize(800, 450)->encode('data-url')
|
||||||
|
);
|
||||||
return Redirect::to('/user/'.$user_id);
|
return Redirect::to('/user/'.$user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,4 +249,23 @@ class UserController extends Controller
|
|||||||
return Redirect::to('/user/edit_favlist');
|
return Redirect::to('/user/edit_favlist');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getSimpleAvatar(Request $request, $user_id)
|
||||||
|
{
|
||||||
|
if(!Storage::exists('avatar/'.$user_id))
|
||||||
|
$file = Storage::get('public/avatar.jpg');
|
||||||
|
else
|
||||||
|
$file = Storage::get('avatar/'.$user_id);
|
||||||
|
$image = Image::make($file)->resize(600, 600);
|
||||||
|
return $image->response('jpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAvatar(Request $request, $user_id, $width, $height)
|
||||||
|
{
|
||||||
|
if(!Storage::exists('avatar/'.$user_id))
|
||||||
|
$file = Storage::get('public/avatar.jpg');
|
||||||
|
else
|
||||||
|
$file = Storage::get('avatar/'.$user_id);
|
||||||
|
$image = Image::make($file)->resize($width, $height);
|
||||||
|
return $image->response('jpg');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use App\Http\Requests\Request;
|
||||||
|
|
||||||
|
class addGoodRequest extends Request
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
if($this->method()=='GET') return [];
|
||||||
|
return [
|
||||||
|
'good_name'=>'required|between:3,128',
|
||||||
|
'description'=>'max:2048',
|
||||||
|
'pricemin'=>'required|max:2147483647',
|
||||||
|
'pricemax'=>'required|max:2147483647',
|
||||||
|
'counts'=>'required|max:2147483647',
|
||||||
|
'good_tag'=>'max:128',
|
||||||
|
'goodTitlePic'=>'required',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(){
|
||||||
|
return [
|
||||||
|
'good_name.required' => '商品名不能为空!',
|
||||||
|
'good_name.between' => '商品名必须为3=128个字符!',
|
||||||
|
'description.max' => '商品描述不能多于2048个字符!',
|
||||||
|
'pricemin.required' => '最低价格不能为空!',
|
||||||
|
'pricemin.max' => '最低价格不能超过2147483647!',
|
||||||
|
'pricemax.required' => '最高价格不能为空!',
|
||||||
|
'pricemax.max' => '最高价格不能超过2147483647!',
|
||||||
|
'counts.required' => '库存数不能为空!',
|
||||||
|
'counts.max' => '库存数不能超过2147483647!',
|
||||||
|
'good_tag.max'=>'TAG不能多于128个字符!',
|
||||||
|
'goodTitlePic.required' => '必须为商品上传一张图片!',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -87,6 +87,14 @@ Route::group(['middleware' => ['web']],function () {
|
|||||||
"uses" => "GoodController@getTitlePic",
|
"uses" => "GoodController@getTitlePic",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Route::get('/avatar/{user_id}', [
|
||||||
|
"uses" => "UserController@getSimpleAvatar",
|
||||||
|
]);
|
||||||
|
|
||||||
|
Route::get('/avatar/{user_id}/{width}/{height}', [
|
||||||
|
"uses" => "UserController@getAvatar",
|
||||||
|
]);
|
||||||
|
|
||||||
Route::get('/good/{good_id}', [
|
Route::get('/good/{good_id}', [
|
||||||
"uses" => "GoodController@getInfo",
|
"uses" => "GoodController@getInfo",
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
use Illuminate\Support\Facades\Event;
|
||||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||||
|
|
||||||
class EventServiceProvider extends ServiceProvider
|
class EventServiceProvider extends ServiceProvider
|
||||||
@@ -19,14 +19,13 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register any other events for your application.
|
* Register any events for your application.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Contracts\Events\Dispatcher $events
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function boot(DispatcherContract $events)
|
public function boot()
|
||||||
{
|
{
|
||||||
parent::boot($events);
|
parent::boot();
|
||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use Illuminate\Routing\Router;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||||
|
|
||||||
class RouteServiceProvider extends ServiceProvider
|
class RouteServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* This namespace is applied to the controller routes in your routes file.
|
* This namespace is applied to your controller routes.
|
||||||
*
|
*
|
||||||
* In addition, it is set as the URL generator's root namespace.
|
* In addition, it is set as the URL generator's root namespace.
|
||||||
*
|
*
|
||||||
@@ -19,25 +19,39 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
/**
|
/**
|
||||||
* Define your route model bindings, pattern filters, etc.
|
* Define your route model bindings, pattern filters, etc.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Routing\Router $router
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function boot(Router $router)
|
public function boot()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|
||||||
parent::boot($router);
|
parent::boot();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define the routes for the application.
|
* Define the routes for the application.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Routing\Router $router
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function map(Router $router)
|
public function map()
|
||||||
{
|
{
|
||||||
$router->group(['namespace' => $this->namespace], function ($router) {
|
$this->mapWebRoutes();
|
||||||
|
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the "web" routes for the application.
|
||||||
|
*
|
||||||
|
* These routes all receive session state, CSRF protection, etc.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function mapWebRoutes()
|
||||||
|
{
|
||||||
|
Route::group([
|
||||||
|
'namespace' => $this->namespace, 'middleware' => 'web',
|
||||||
|
], function ($router) {
|
||||||
require app_path('Http/routes.php');
|
require app_path('Http/routes.php');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -6,13 +6,13 @@
|
|||||||
"type": "project",
|
"type": "project",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.5.9",
|
"php": ">=5.5.9",
|
||||||
"laravel/framework": "5.2.*",
|
"laravel/framework": "5.4.*",
|
||||||
"intervention/image": "^2.3"
|
"intervention/image": "^2.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fzaninotto/faker": "~1.4",
|
"fzaninotto/faker": "~1.4",
|
||||||
"mockery/mockery": "0.9.*",
|
"mockery/mockery": "0.9.*",
|
||||||
"phpunit/phpunit": "~4.0",
|
"phpunit/phpunit": "~5.7",
|
||||||
"symfony/css-selector": "2.8.*|3.0.*",
|
"symfony/css-selector": "2.8.*|3.0.*",
|
||||||
"symfony/dom-crawler": "2.8.*|3.0.*"
|
"symfony/dom-crawler": "2.8.*|3.0.*"
|
||||||
},
|
},
|
||||||
|
|||||||
Generated
+924
-831
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,7 @@ class CreateGoodCatTable extends Migration
|
|||||||
Schema::create('good_cat',function(Blueprint $table){
|
Schema::create('good_cat',function(Blueprint $table){
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->string('cat_name');
|
$table->string('cat_name');
|
||||||
|
$table->integer('cat_index');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ class CreateGoodInfoTable extends Migration
|
|||||||
$table->integer('counts');
|
$table->integer('counts');
|
||||||
$table->text('good_tag');
|
$table->text('good_tag');
|
||||||
$table->integer('checked');
|
$table->integer('checked');
|
||||||
$table->integer('sold_total');
|
$table->integer('stared');
|
||||||
$table->integer('sold_month');
|
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ class CreateAnnouncementTable extends Migration
|
|||||||
Schema::create('announcements', function (Blueprint $table) {
|
Schema::create('announcements', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->text('title');
|
$table->text('title');
|
||||||
$table->text('summary');
|
|
||||||
$table->text('content');
|
$table->text('content');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,16 +12,20 @@ class GoodCatSeeder extends Seeder
|
|||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
DB::table('good_cat')->insert([
|
DB::table('good_cat')->insert([
|
||||||
'cat_name' => '书籍'
|
'cat_name' => '书籍',
|
||||||
|
'cat_index' => '0'
|
||||||
]);
|
]);
|
||||||
DB::table('good_cat')->insert([
|
DB::table('good_cat')->insert([
|
||||||
'cat_name' => '日用品'
|
'cat_name' => '日用品',
|
||||||
|
'cat_index' => '1'
|
||||||
]);
|
]);
|
||||||
DB::table('good_cat')->insert([
|
DB::table('good_cat')->insert([
|
||||||
'cat_name' => '其他'
|
'cat_name' => '其他',
|
||||||
|
'cat_index' => '3'
|
||||||
]);
|
]);
|
||||||
DB::table('good_cat')->insert([
|
DB::table('good_cat')->insert([
|
||||||
'cat_name' => '滑稽'
|
'cat_name' => '滑稽',
|
||||||
|
'cat_index' => '2'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+35
-4
@@ -1,10 +1,14 @@
|
|||||||
html {
|
body {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.banner {
|
.banner {
|
||||||
background-image: url('/img/banner.jpg');
|
background-image: url('/img/banner.jpg');
|
||||||
background-size: 100%;
|
background-position: top center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -5px;
|
top: -5px;
|
||||||
@@ -68,14 +72,14 @@ html {
|
|||||||
|
|
||||||
.top-bar-bg {
|
.top-bar-bg {
|
||||||
background-image: url('/img/banner.jpg');
|
background-image: url('/img/banner.jpg');
|
||||||
background-size: 100%;
|
background-position: top center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 130%;
|
height: 130%;
|
||||||
top: -5px;
|
top: -5px;
|
||||||
left: -5px;
|
left: -5px;
|
||||||
width: 105%;
|
width: 105%;
|
||||||
-webkit-filter: blur(5px);
|
-webki-filter: blur(5px);
|
||||||
-ms-filter: blur(5px);
|
-ms-filter: blur(5px);
|
||||||
filter: blur(5px);
|
filter: blur(5px);
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
@@ -86,8 +90,35 @@ html {
|
|||||||
top: 30px;
|
top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#top-bar-avatar {
|
||||||
|
padding: 0!IMPORTANT;
|
||||||
|
transition: box-shadow 0.25s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-bar-avatar:hover {
|
||||||
|
box-shadow: 0 0 10px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-bar-avatar:active {
|
||||||
|
box-shadow: 0 0 20px white;
|
||||||
|
transition: box-shadow 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-bar-avatar img {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.page-content {
|
.page-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
margin-top: 60px;
|
margin-top: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.one-line-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-divider {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 1.9 MiB |
@@ -5,6 +5,7 @@
|
|||||||
@include('layout.header')
|
@include('layout.header')
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
Unchecked goods:
|
Unchecked goods:
|
||||||
|
{{ count($goods) }}
|
||||||
@foreach($goods as $good)
|
@foreach($goods as $good)
|
||||||
<div class="cat{{$good->cat_id}}"><a href="/good/{{$good->id}}">{{$good->good_name}}</a> <a href="/good/{{$good->id}}/check">Pass</a></div>
|
<div class="cat{{$good->cat_id}}"><a href="/good/{{$good->id}}">{{$good->good_name}}</a> <a href="/good/{{$good->id}}/check">Pass</a></div>
|
||||||
@endforeach
|
@endforeach
|
||||||
@@ -61,4 +62,4 @@ All goods:
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@include('layout.footer')
|
@include('layout.footer')
|
||||||
@include('includes.foot')
|
@include('includes.foot')
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<form action="/sendannouncement/send" method="post">
|
<form action="/sendannouncement/send" method="post">
|
||||||
Title:<input type="text" name="title"><br/>
|
Title:<input type="text" name="title"><br/>
|
||||||
Summary:<input type="text" name="summary"><br/>
|
|
||||||
Content:<textarea name="content" row="15" cols="45"></textarea><br/>
|
Content:<textarea name="content" row="15" cols="45"></textarea><br/>
|
||||||
{!! csrf_field() !!}
|
{!! csrf_field() !!}
|
||||||
<input type="submit" value="Send"><br/>
|
<input type="submit" value="Send"><br/>
|
||||||
|
|||||||
@@ -10,6 +10,11 @@
|
|||||||
@include('layout.header')
|
@include('layout.header')
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<div class="large-8 large-offset-2 small-10 small-offset-1 columns">
|
<div class="large-8 large-offset-2 small-10 small-offset-1 columns">
|
||||||
|
@if (count($errors) > 0)
|
||||||
|
<label>
|
||||||
|
<span class="form-error is-visible">{!! $errors->first() !!}</span>
|
||||||
|
</label>
|
||||||
|
@endif
|
||||||
<form action="/good/add" method="POST" enctype="multipart/form-data">
|
<form action="/good/add" method="POST" enctype="multipart/form-data">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="small-2 columns">
|
<div class="small-2 columns">
|
||||||
@@ -108,11 +113,6 @@
|
|||||||
{!! csrf_field() !!}
|
{!! csrf_field() !!}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@if(count($errors) > 0)
|
|
||||||
@foreach($errors as $error)
|
|
||||||
{{$error}}
|
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function preview(file)
|
function preview(file)
|
||||||
|
|||||||
@@ -4,23 +4,25 @@
|
|||||||
<body>
|
<body>
|
||||||
@include('layout.header')
|
@include('layout.header')
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="small-12 medium-4 columns thumbnail">
|
<div class="small-12 medium-5 columns thumbnail">
|
||||||
<img src="/good/{{ sha1($good->id) }}/titlepic"/>
|
<img src="/good/{{ sha1($good->id) }}/titlepic"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 medium-7 medium-offset-1 columns">
|
<div class="small-12 medium-6 medium-offset-1 columns">
|
||||||
<h1>{{ $good->good_name }}</h1>
|
<h1>{{ $good->good_name }}</h1>
|
||||||
<h4 style="color: #cc4b37"><b>¥{{ $good->pricemin }} - ¥{{ $good->pricemax }}</b></h4>
|
<h4 style="color: #cc4b37"><b>¥{{ $good->pricemin }} - ¥{{ $good->pricemax }}</b></h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="small-5 columns">
|
<div class="small-5 columns">
|
||||||
|
@if($good->seller) != Session::get('user_id'))
|
||||||
<form action="/good/{{ $good->id }}/buy" method="post">
|
<form action="/good/{{ $good->id }}/buy" method="post">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="number" name="counts" class="input-group-field"/>
|
<input type="number" name="counts" value="1" class="input-group-field"/>
|
||||||
{!! csrf_field() !!}
|
{!! csrf_field() !!}
|
||||||
<div class="input-group-button">
|
<div class="input-group-button">
|
||||||
<input type="submit" class="button" value="购买"/>
|
<input type="submit" class="button" value="购买"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,45 +14,22 @@
|
|||||||
<div class="row small-up-1 medium-up-2 large-up-4" data-equalizer data-equalize-by-row>
|
<div class="row small-up-1 medium-up-2 large-up-4" data-equalizer data-equalize-by-row>
|
||||||
@foreach($goods as $good)
|
@foreach($goods as $good)
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="card">
|
|
||||||
<div class="card-section">
|
|
||||||
<a href="/good/{{ $good->id }}">
|
<a href="/good/{{ $good->id }}">
|
||||||
<img src="/good/{{ sha1($good->id) }}/titlepic/320/180"/>
|
<div class="card">
|
||||||
<div>{{ $good->good_name }}</div>
|
<div class="card-divider">
|
||||||
|
<img src="/good/{{ sha1($good->id) }}/titlepic/320/180"/>
|
||||||
|
</div>
|
||||||
|
<div class="card-section">
|
||||||
|
<div class="one-line-text">{{ $good->good_name }}</div>
|
||||||
|
<div style="color: #cc4b37;" class="one-line-text"><b>¥{{ $good->pricemin }} - ¥{{ $good->pricemax }}</b></div>
|
||||||
|
@if($good->counts==0) <div style="color: #ffae00;" class="one-line-text">无库存QAQ @else <div class="one-line-text">库存:{{ $good->counts }}@endif</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<div style="color: #cc4b37; white-space: nowrap; overflow: hidden;"><b>¥{{ $good->pricemin }} - ¥{{ $good->pricemax }}</b></div>
|
|
||||||
@if($good->counts==0) <div style="color: #ffae00; white-space: nowrap; overflow:hidden;">无库存QAQ @else <div style="white-space:nowrap; overflow:hidden;">库存:{{ $good->counts }}@endif</div>
|
|
||||||
<div style="color: #767676; white-space: nowrap; overflow:hidden;">销量:{{ $good->sold_month }} / {{ $good->sold_total }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
<ul class="pagination text-center" role="navigation" aria-label="Pagination">
|
{{ $goods->links() }}
|
||||||
<li class="pagination-previous @if($page <= 1) disabled @endif">@if($page > 1) <a href="/good?page={{ $page - 1 }}" aria-label="Previous Page">上一页</a> @else 上一页 @endif</li>
|
|
||||||
@if($goods->lastPage()<=6)
|
|
||||||
@for($i=1;$i<=$goods->lastPage();$i++)
|
|
||||||
<li @if($i == $page) class="current" @endif> @if($i != $page) <a href="/good?page={{ $i }}"> @endif{{ $i }} @if($i != $page) </a> @endif</li>
|
|
||||||
@endfor
|
|
||||||
@else
|
|
||||||
@for($i=1;$i<=3;$i++)
|
|
||||||
<li @if($i == $page) class="current" @endif> @if($i != $page) <a href="/good?page={{ $i }}"> @endif{{ $i }} @if($i != $page) </a> @endif</li>
|
|
||||||
@endfor
|
|
||||||
@if($page>5)
|
|
||||||
<li class="ellipsis"></li>
|
|
||||||
@endif
|
|
||||||
@for($i=max($page-1,4);$i<=min($goods->lastPage()-3,$page+1);$i++)
|
|
||||||
<li @if($i == $page) class="current" @endif> @if($i != $page) <a href="/good?page={{ $i }}"> @endif{{ $i }} @if($i != $page) </a> @endif</li>
|
|
||||||
@endfor
|
|
||||||
@if($page<$goods->lastPage()-4)
|
|
||||||
<li class="ellipsis"></li>
|
|
||||||
@endif
|
|
||||||
@for($i=$goods->lastPage()-2;$i<=$goods->lastPage();$i++)
|
|
||||||
<li @if($i == $page) class="current" @endif> @if($i != $page) <a href="/good?page={{ $i }}"> @endif{{ $i }} @if($i != $page) </a> @endif</li>
|
|
||||||
@endfor
|
|
||||||
@endif
|
|
||||||
<li class="pagination-next @if($page >= $goods->lastPage()) disabled @endif">@if($page < $goods->lastPage()) <a href="/good?page={{ $page + 1 }}" aria-label="Next Page">下一页</a> @else 下一页 @endif</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@include('layout.footer')
|
@include('layout.footer')
|
||||||
|
|||||||
@@ -8,16 +8,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="medium-10 medium-offset-1 columns">
|
<div class="medium-10 medium-offset-1 columns">
|
||||||
|
<div class="top-bar-left show-for-medium-only show-for-small-only">
|
||||||
|
</div>
|
||||||
<div class="top-bar-left">
|
<div class="top-bar-left">
|
||||||
<ul class="dropdown menu" data-dropdown-menu>
|
<ul class="dropdown menu hide-for-medium-only hide-for-small-only" data-dropdown-menu>
|
||||||
<li><a class="top-bar-list" href="/">首页</a></li>
|
<li><a class="top-bar-list" href="/">首页</a></li>
|
||||||
<li><a class="top-bar-list" href="/good">市场</a></li>
|
<li><a class="top-bar-list" href="/good">市场</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="top-bar-right">
|
<div class="top-bar-right">
|
||||||
<ul class="dropdown menu" data-dropdown-menu>
|
<ul class="dropdown menu hide-for-small-only" data-dropdown-menu>
|
||||||
@if(Session::has('user_id'))
|
@if(Session::has('user_id'))
|
||||||
<li><a class="top-bar-list" href="/user/{{Session::get('user_id')}}">{{Session::get('nickname')}}@if(Session::get('nickname')=="") {{Session::get('username')}} @endif</a></li>
|
@if(Session::has('is_admin'))
|
||||||
|
<li><a class="top-bar-list" href="/admin">管理员页面</a></li>
|
||||||
|
@endif
|
||||||
|
<li><a class="top-bar-list" id="top-bar-avatar" href="/user/{{Session::get('user_id')}}"><img src="/avatar/{{ Session::get('user_id') }}/54/54"></img></a></li>
|
||||||
<li><a class="top-bar-list" href="/message">消息</a></li>
|
<li><a class="top-bar-list" href="/message">消息</a></li>
|
||||||
<li><a class="top-bar-list" href="/user/get_favlist">收藏夹</a></li>
|
<li><a class="top-bar-list" href="/user/get_favlist">收藏夹</a></li>
|
||||||
<li><a href="/good/add" class="button">出售</a></li>
|
<li><a href="/good/add" class="button">出售</a></li>
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<style>
|
<div class="large-3 large-offset-9 medium-11 medium-centered columns search-bar">
|
||||||
.search-bar {
|
|
||||||
min-width: 300px;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="medium-3 medium-offset-9 small-11 small-centered columns search-bar">
|
|
||||||
<form action="/good" method="GET">
|
<form action="/good" method="GET">
|
||||||
<div class="input-group" id="top-bar-quick-access">
|
<div class="input-group" id="top-bar-quick-access">
|
||||||
<input class="input-group-field" type="search" name="query" placeholder="开始交易吧( '﹃'⑉)"/>
|
<input class="input-group-field" type="search" name="query" placeholder="开始交易吧( '﹃'⑉)"/>
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
@include('includes.head')
|
@include('includes.head')
|
||||||
<title>修改个人信息</title>
|
<title>修改个人信息</title>
|
||||||
|
<style>
|
||||||
|
.avatarpreview {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@include('layout.header')
|
@include('layout.header')
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<form action="/user/{{$user->id}}/edit/middle" method="POST">
|
<form action="/user/{{$user->id}}/edit/middle" method="POST" enctype="multipart/form-data">
|
||||||
<ul class="tabs" data-tabs id="editinfo">
|
<ul class="tabs" data-tabs id="editinfo">
|
||||||
<li class="tabs-title is-active"><a href="#avatar" aria-selected="true">头像</a></li>
|
<li class="tabs-title is-active"><a href="#avatar" aria-selected="true">头像</a></li>
|
||||||
<li class="tabs-title"><a href="#studentid">学号审核</a></li>
|
<li class="tabs-title"><a href="#studentid">学号审核</a></li>
|
||||||
@@ -12,6 +17,16 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="tabs-content" data-tabs-content="editinfo">
|
<div class="tabs-content" data-tabs-content="editinfo">
|
||||||
<div class="tabs-panel" id="avatar">
|
<div class="tabs-panel" id="avatar">
|
||||||
|
<label for="avatarUpload" class="button right inline">上传头像</label>
|
||||||
|
<div id="preview"></div>
|
||||||
|
<div style="display: none">
|
||||||
|
<input type="file" id="avatarUpload" class="show-for-sr" name="avatarPic" onchange="preview(this)"/>
|
||||||
|
</div>
|
||||||
|
<input id="avatarUploadCpWidth" type="hidden" name="crop_width">
|
||||||
|
<input id="avatarUploadCpHeight" type="hidden" name="crop_height">
|
||||||
|
<input id="avatarUploadCpX" type="hidden" name="crop_x">
|
||||||
|
<input id="avatarUploadCpY" type="hidden" name="crop_y">
|
||||||
|
<input class="button" type="submit" name="submit" value="上传">
|
||||||
</div>
|
</div>
|
||||||
<div class="tabs-panel" id="studentid">
|
<div class="tabs-panel" id="studentid">
|
||||||
</div>
|
</div>
|
||||||
@@ -34,5 +49,39 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
function preview(file){
|
||||||
|
var prevDiv = document.getElementById('preview');
|
||||||
|
if (file.files && file.files[0]){
|
||||||
|
var prreader = new FileReader();
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(evt){
|
||||||
|
prevDiv.innerHTML = '<img id="avatarpreview" src="' + evt.target.result + '" />';
|
||||||
|
$('#avatarpreview').cropper({
|
||||||
|
aspectRatio: 1 / 1,
|
||||||
|
crop: function(e) {
|
||||||
|
$('#avatarUploadCpX').val(e.x);
|
||||||
|
$('#avatarUploadCpY').val(e.y);
|
||||||
|
$('#avatarUploadCpWidth').val(e.width);
|
||||||
|
$('#avatarUploadCpHeight').val(e.height);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
prreader.onload = function(evt){
|
||||||
|
var fileBuf = new Uint8Array(evt.target.result.slice(0, 11));
|
||||||
|
var mime = isImage(fileBuf);
|
||||||
|
if(mime == null){
|
||||||
|
alert("Please open image!");
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
reader.readAsDataURL(file.files[0]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
prreader.readAsArrayBuffer(file.files[0]);
|
||||||
|
}else{
|
||||||
|
prevDiv.innerHTML = '<div class="img" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@include('layout.footer')
|
@include('layout.footer')
|
||||||
@include('includes.foot')
|
@include('includes.foot')
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
@if ($paginator->hasPages())
|
||||||
|
<ul class="pagination">
|
||||||
|
{{-- Previous Page Link --}}
|
||||||
|
@if ($paginator->onFirstPage())
|
||||||
|
<li class="page-item disabled"><span class="page-link">«</span></li>
|
||||||
|
@else
|
||||||
|
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Pagination Elements --}}
|
||||||
|
@foreach ($elements as $element)
|
||||||
|
{{-- "Three Dots" Separator --}}
|
||||||
|
@if (is_string($element))
|
||||||
|
<li class="page-item disabled"><span class="page-link">{{ $element }}</span></li>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Array Of Links --}}
|
||||||
|
@if (is_array($element))
|
||||||
|
@foreach ($element as $page => $url)
|
||||||
|
@if ($page == $paginator->currentPage())
|
||||||
|
<li class="page-item active"><span class="page-link">{{ $page }}</span></li>
|
||||||
|
@else
|
||||||
|
<li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
{{-- Next Page Link --}}
|
||||||
|
@if ($paginator->hasMorePages())
|
||||||
|
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
|
||||||
|
@else
|
||||||
|
<li class="page-item disabled"><span class="page-link">»</span></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
@if ($paginator->hasPages())
|
||||||
|
<ul class="pagination text-center" role="navigation" aria-label="Pagination">
|
||||||
|
@if ($paginator->onFirstPage())
|
||||||
|
<li class="pagination-previous disabled">上一页</li>
|
||||||
|
@else
|
||||||
|
<li class="pagination-previous"><a href="{{ $paginator->previousPageUrl() }}" aria-label="Previous Page">上一页</a></li>
|
||||||
|
@endif
|
||||||
|
@foreach ($elements as $element)
|
||||||
|
@if (is_string($element))
|
||||||
|
<li class="ellipsis"></li>
|
||||||
|
@endif
|
||||||
|
@if (is_array($element))
|
||||||
|
@foreach ($element as $page => $url)
|
||||||
|
@if ($page == $paginator->currentPage())
|
||||||
|
<li class="current">{{ $page }}</li>
|
||||||
|
@else
|
||||||
|
<li><a href="{{ $url }}">{{ $page }}</a></li>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@if ($paginator->hasMorePages())
|
||||||
|
<li class="pagination-next"><a href="{{ $paginator->nextPageUrl() }}" aria-label="Next Page">下一页</a></li>
|
||||||
|
@else
|
||||||
|
<li class="pagination-next disabled">下一页</li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
@if ($paginator->hasPages())
|
||||||
|
<ul class="pagination">
|
||||||
|
{{-- Previous Page Link --}}
|
||||||
|
@if ($paginator->onFirstPage())
|
||||||
|
<li class="page-item disabled"><span class="page-link">@lang('pagination.previous')</span></li>
|
||||||
|
@else
|
||||||
|
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">@lang('pagination.previous')</a></li>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Next Page Link --}}
|
||||||
|
@if ($paginator->hasMorePages())
|
||||||
|
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">@lang('pagination.next')</a></li>
|
||||||
|
@else
|
||||||
|
<li class="page-item disabled"><span class="page-link">@lang('pagination.next')</span></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
@if ($paginator->hasPages())
|
||||||
|
<ul class="pagination">
|
||||||
|
{{-- Previous Page Link --}}
|
||||||
|
@if ($paginator->onFirstPage())
|
||||||
|
<li class="disabled"><span>@lang('pagination.previous')</span></li>
|
||||||
|
@else
|
||||||
|
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">@lang('pagination.previous')</a></li>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Next Page Link --}}
|
||||||
|
@if ($paginator->hasMorePages())
|
||||||
|
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">@lang('pagination.next')</a></li>
|
||||||
|
@else
|
||||||
|
<li class="disabled"><span>@lang('pagination.next')</span></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
@@ -3,13 +3,14 @@
|
|||||||
@include('layout.header')
|
@include('layout.header')
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="small-12 medium-8 columns">
|
<div class="small-12 medium-8 columns">
|
||||||
|
@if(count($stargoods) > 0)
|
||||||
<div class="orbit" role="region" aria-label="热销商品" data-orbit>
|
<div class="orbit" role="region" aria-label="热销商品" data-orbit>
|
||||||
<ul class="orbit-container">
|
<ul class="orbit-container">
|
||||||
@if(count($hotgoods) > 1)
|
@if(count($stargoods) > 1)
|
||||||
<button class="orbit-previous"><span class="show-for-sr">←</span>◀︎</button>
|
<button class="orbit-previous"><span class="show-for-sr">←</span>◀︎</button>
|
||||||
<button class="orbit-next"><span class="show-for-sr">→</span>▶︎</button>
|
<button class="orbit-next"><span class="show-for-sr">→</span>▶︎</button>
|
||||||
@endif
|
@endif
|
||||||
@foreach($hotgoods as $good)
|
@foreach($stargoods as $good)
|
||||||
<li class="orbit-slide">
|
<li class="orbit-slide">
|
||||||
<a href="/good/{{ $good->id }}"><img class="orbit-image" src="/good/{{ sha1($good->id) }}/titlepic" alt="{{ $good->name }}"/>
|
<a href="/good/{{ $good->id }}"><img class="orbit-image" src="/good/{{ sha1($good->id) }}/titlepic" alt="{{ $good->name }}"/>
|
||||||
<figcaption class="orbit-caption">{{ $good->good_name }}</figcaption></a>
|
<figcaption class="orbit-caption">{{ $good->good_name }}</figcaption></a>
|
||||||
@@ -17,21 +18,61 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<br/>
|
||||||
|
@endif
|
||||||
|
@if(count($newgoods)>0)
|
||||||
|
<h3>新品</h3>
|
||||||
|
<div class="row small-up-1 medium-up-2 large-up-4">
|
||||||
|
@foreach($newgoods as $good)
|
||||||
|
<div class="columns">
|
||||||
|
<a href="/good/{{ $good->id }}">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-divider">
|
||||||
|
<img src="/good/{{ sha1($good->id) }}/titlepic"/>
|
||||||
|
</div>
|
||||||
|
<div class="card-section">
|
||||||
|
{{ $good->good_name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<h3>随便看看</h3>
|
||||||
|
@foreach($cats as $cat)
|
||||||
|
@if(count($catgoods[$cat->cat_name]))
|
||||||
|
<h4>{{ $cat->cat_name }}</h4>
|
||||||
|
<div class="row small-up-1 medium-up-2 large-up-4">
|
||||||
|
@foreach($catgoods[$cat->cat_name] as $good)
|
||||||
|
<div class="columns">
|
||||||
|
<a href="/good/{{ $good->id }}">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-divider">
|
||||||
|
<img src="/good/{{ sha1($good->id) }}/titlepic"/>
|
||||||
|
</div>
|
||||||
|
<div class="card-section">
|
||||||
|
{{ $good->good_name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 medium-4 columns">
|
<div class="small-12 medium-4 columns">
|
||||||
|
<div class="row">
|
||||||
<div class="medium-10 medium-offset-2 columns">
|
<div class="medium-10 medium-offset-2 columns">
|
||||||
<h3>公告</h3>
|
<div class="card">
|
||||||
<ul class="accordion" data-accordion data-allow-all-closed="true" data-multi-expand="true">
|
<h4 class="card-divider">公告</h4>
|
||||||
@foreach($announces as $announce)
|
@foreach($announces as $announce)
|
||||||
<li class="accordion-item" data-accordion-item>
|
<a href="/announcement/{{ $announce->id }}"><div class="card-section">{{ $announce->title }}</div></a>
|
||||||
<a href="#" class="accordion-title">{{ $announce->title }}</a>
|
@if($announce != $announces->last())<hr>@endif
|
||||||
<div class="accordion-content" data-tab-content>
|
|
||||||
{{ $announce->summary }}<br/>
|
|
||||||
<a href="/announcement/{{ $announce->id }}" class="button tiny">More</a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user