Merge branch 'catsworld-master'

This commit is contained in:
LI JIAHAO
2017-03-10 12:28:27 +08:00
32 changed files with 1335 additions and 1044 deletions
+5 -5
View File
@@ -18,8 +18,8 @@ REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=519418441@qq.com
MAIL_PASSWORD=rrmdasvmcnzhcbea
MAIL_ENCRYPTION=ssl
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
-1
View File
@@ -132,7 +132,6 @@ class AdminController extends Controller
$input = $request->all();
$announcement = new Announcement;
$announcement->title = $input['title'];
$announcement->summary = $input['summary'];
$announcement->content = $input['content'];
$announcement->save();
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 -3
View File
@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Controller;
use App\GoodInfo;
use App\GoodCat;
use App\Announcement;
class ContentController extends Controller
@@ -15,9 +16,13 @@ class ContentController extends Controller
public function Mainpage()
{
$data = [];
$data['hotgoods'] = GoodInfo::orderby('sold_month', 'asc')->limit(5)->get();
$data['newgoods'] = GoodInfo::orderby('id', 'dsc')->limit(6)->get();
$data['announces'] = Announcement::orderby('id', 'dsc')->get();
$data['stargoods'] = GoodInfo::where('checked', '1')->where('stared', '1')->orderby('id', 'asc')->limit(5)->get();
$data['newgoods'] = GoodInfo::where('checked', '1')->orderby('id', 'dsc')->limit(8)->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);
}
+7 -7
View File
@@ -18,6 +18,7 @@ use App\FavList;
use App\Http\Controllers\Controller;
use Storage;
use Image;
use App\Http\Requests\addGoodRequest;
class GoodController extends Controller
{
@@ -33,14 +34,14 @@ class GoodController extends Controller
$input = $request->all();
$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['cat_id'] = 0;
if(isset($input['cat_id'])){
$data['goods'] = GoodInfo::where('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'))
$data['user_id'] = $request->session()->get('user_id');
else
@@ -154,13 +155,13 @@ class GoodController extends Controller
* @return Redirect
* @description Add a new good.
*/
public function addGood(Request $request)
public function addGood(addGoodRequest $request)
{
if($request->method() == "GET"){
$data = [];
if(!$request->session()->has('user_id'))
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);
}else{
if(!$request->session()->has('user_id'))
@@ -203,7 +204,7 @@ class GoodController extends Controller
{
if($request->method() == "GET"){
$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();
return view::make('good.editPage')->with($data);
}else{
@@ -253,7 +254,6 @@ class GoodController extends Controller
}
/*
<<<<<<< Updated upstream
* @function quickAccess
* @input $request (use query)
*
@@ -266,7 +266,7 @@ class GoodController extends Controller
$data = [];
$input = $request->all();
$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();
if($request->session()->has('user_id'))
$data['user_id'] = $request->session()->get('user_id');
+24
View File
@@ -23,6 +23,7 @@ use Illuminate\Support\Facades\Session;
use App\Http\Controllers\Controller;
use Hash;
use Mail;
use Image;
use App\Http\Requests\RegisterRequest;
use App\Http\Requests\LoginRequest;
@@ -97,6 +98,10 @@ class UserController extends Controller
$user->tel_num = $input['tel_num'];
$user->address = $input['address'];
$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);
}
@@ -244,4 +249,23 @@ class UserController extends Controller
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');
}
}
+53
View File
@@ -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' => '必须为商品上传一张图片!',
];
}
}
+8
View File
@@ -87,6 +87,14 @@ Route::group(['middleware' => ['web']],function () {
"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}', [
"uses" => "GoodController@getInfo",
]);
+4 -5
View File
@@ -2,7 +2,7 @@
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as 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
*/
public function boot(DispatcherContract $events)
public function boot()
{
parent::boot($events);
parent::boot();
//
}
+22 -8
View File
@@ -2,13 +2,13 @@
namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as 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.
*
@@ -19,25 +19,39 @@ class RouteServiceProvider extends ServiceProvider
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
public function boot()
{
//
parent::boot($router);
parent::boot();
}
/**
* Define the routes for the application.
*
* @param \Illuminate\Routing\Router $router
* @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');
});
}
+2 -2
View File
@@ -6,13 +6,13 @@
"type": "project",
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*",
"laravel/framework": "5.4.*",
"intervention/image": "^2.3"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpunit/phpunit": "~5.7",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
Generated
+924 -831
View File
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){
$table->increments('id');
$table->string('cat_name');
$table->integer('cat_index');
$table->timestamps();
});
}
@@ -24,8 +24,7 @@ class CreateGoodInfoTable extends Migration
$table->integer('counts');
$table->text('good_tag');
$table->integer('checked');
$table->integer('sold_total');
$table->integer('sold_month');
$table->integer('stared');
$table->timestamps();
});
}
@@ -15,7 +15,6 @@ class CreateAnnouncementTable extends Migration
Schema::create('announcements', function (Blueprint $table) {
$table->increments('id');
$table->text('title');
$table->text('summary');
$table->text('content');
$table->timestamps();
});
+8 -4
View File
@@ -12,16 +12,20 @@ class GoodCatSeeder extends Seeder
public function run()
{
DB::table('good_cat')->insert([
'cat_name' => '书籍'
'cat_name' => '书籍',
'cat_index' => '0'
]);
DB::table('good_cat')->insert([
'cat_name' => '日用品'
'cat_name' => '日用品',
'cat_index' => '1'
]);
DB::table('good_cat')->insert([
'cat_name' => '其他'
'cat_name' => '其他',
'cat_index' => '3'
]);
DB::table('good_cat')->insert([
'cat_name' => '滑稽'
'cat_name' => '滑稽',
'cat_index' => '2'
]);
}
}
+35 -4
View File
@@ -1,10 +1,14 @@
html {
body {
overflow-x: hidden;
}
hr {
margin: 0;
}
.banner {
background-image: url('/img/banner.jpg');
background-size: 100%;
background-position: top center;
background-repeat: no-repeat;
position: absolute;
top: -5px;
@@ -68,14 +72,14 @@ html {
.top-bar-bg {
background-image: url('/img/banner.jpg');
background-size: 100%;
background-position: top center;
background-repeat: no-repeat;
position: absolute;
height: 130%;
top: -5px;
left: -5px;
width: 105%;
-webkit-filter: blur(5px);
-webki-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
z-index: 50;
@@ -86,8 +90,35 @@ html {
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 {
position: relative;
z-index: 50;
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

+1
View File
@@ -5,6 +5,7 @@
@include('layout.header')
<div class="page-content">
Unchecked goods:
{{ count($goods) }}
@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>
@endforeach
@@ -6,7 +6,6 @@
<div class="page-content">
<form action="/sendannouncement/send" method="post">
Title:<input type="text" name="title"><br/>
Summary:<input type="text" name="summary"><br/>
Content:<textarea name="content" row="15" cols="45"></textarea><br/>
{!! csrf_field() !!}
<input type="submit" value="Send"><br/>
+5 -5
View File
@@ -10,6 +10,11 @@
@include('layout.header')
<div class="page-content">
<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">
<div class="row">
<div class="small-2 columns">
@@ -108,11 +113,6 @@
{!! csrf_field() !!}
</form>
</div>
@if(count($errors) > 0)
@foreach($errors as $error)
{{$error}}
@endforeach
@endif
</div>
<script type="text/javascript">
function preview(file)
+5 -3
View File
@@ -4,23 +4,25 @@
<body>
@include('layout.header')
<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"/>
</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>
<h4 style="color: #cc4b37"><b>¥{{ $good->pricemin }} - ¥{{ $good->pricemax }}</b></h4>
<div class="row">
<div class="small-5 columns">
@if($good->seller) != Session::get('user_id'))
<form action="/good/{{ $good->id }}/buy" method="post">
<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() !!}
<div class="input-group-button">
<input type="submit" class="button" value="购买"/>
</div>
</div>
</form>
@endif
</div>
</div>
</div>
+10 -33
View File
@@ -14,45 +14,22 @@
<div class="row small-up-1 medium-up-2 large-up-4" data-equalizer data-equalize-by-row>
@foreach($goods as $good)
<div class="columns">
<div class="card">
<div class="card-section">
<a href="/good/{{ $good->id }}">
<div class="card">
<div class="card-divider">
<img src="/good/{{ sha1($good->id) }}/titlepic/320/180"/>
<div>{{ $good->good_name }}</div>
</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>
<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>
@endforeach
</div>
<ul class="pagination text-center" role="navigation" aria-label="Pagination">
<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>
{{ $goods->links() }}
</div>
</div>
@include('layout.footer')
+8 -3
View File
@@ -8,16 +8,21 @@
</div>
<div class="row">
<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">
<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="/good">市场</a></li>
</ul>
</div>
<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'))
<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="/user/get_favlist">收藏夹</a></li>
<li><a href="/good/add" class="button">出售</a></li>
+1 -7
View File
@@ -1,10 +1,4 @@
<style>
.search-bar {
min-width: 300px;
float: right;
}
</style>
<div class="medium-3 medium-offset-9 small-11 small-centered columns search-bar">
<div class="large-3 large-offset-9 medium-11 medium-centered columns search-bar">
<form action="/good" method="GET">
<div class="input-group" id="top-bar-quick-access">
<input class="input-group-field" type="search" name="query" placeholder="开始交易吧( '﹃'⑉)"/>
+50 -1
View File
@@ -1,10 +1,15 @@
@include('includes.head')
<title>修改个人信息</title>
<style>
.avatarpreview {
max-width: 100%;
}
</style>
</head>
<body>
@include('layout.header')
<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">
<li class="tabs-title is-active"><a href="#avatar" aria-selected="true">头像</a></li>
<li class="tabs-title"><a href="#studentid">学号审核</a></li>
@@ -12,6 +17,16 @@
</ul>
<div class="tabs-content" data-tabs-content="editinfo">
<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 class="tabs-panel" id="studentid">
</div>
@@ -34,5 +49,39 @@
</div>
</form>
</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('includes.foot')
+36
View File
@@ -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">&laquo;</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</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">&raquo;</a></li>
@else
<li class="page-item disabled"><span class="page-link">&raquo;</span></li>
@endif
</ul>
@endif
+28
View File
@@ -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
+53 -12
View File
@@ -3,13 +3,14 @@
@include('layout.header')
<div class="row">
<div class="small-12 medium-8 columns">
@if(count($stargoods) > 0)
<div class="orbit" role="region" aria-label="热销商品" data-orbit>
<ul class="orbit-container">
@if(count($hotgoods) > 1)
@if(count($stargoods) > 1)
<button class="orbit-previous"><span class="show-for-sr">←</span>&#9664;&#xFE0E;</button>
<button class="orbit-next"><span class="show-for-sr">→</span>&#9654;&#xFE0E;</button>
@endif
@foreach($hotgoods as $good)
@foreach($stargoods as $good)
<li class="orbit-slide">
<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>
@@ -17,21 +18,61 @@
@endforeach
</ul>
</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 class="small-12 medium-4 columns">
<div class="row">
<div class="medium-10 medium-offset-2 columns">
<h3>公告</h3>
<ul class="accordion" data-accordion data-allow-all-closed="true" data-multi-expand="true">
<div class="card">
<h4 class="card-divider">公告</h4>
@foreach($announces as $announce)
<li class="accordion-item" data-accordion-item>
<a href="#" class="accordion-title">{{ $announce->title }}</a>
<div class="accordion-content" data-tab-content>
{{ $announce->summary }}<br/>
<a href="/announcement/{{ $announce->id }}" class="button tiny">More</a>
</div>
</li>
<a href="/announcement/{{ $announce->id }}"><div class="card-section">{{ $announce->title }}</div></a>
@if($announce != $announces->last())<hr>@endif
@endforeach
</ul>
</div>
</div>
</div>
</div>
</div>