diff --git a/app/Http/Controllers/ClosetController.php b/app/Http/Controllers/ClosetController.php index 54894fc0..8e244833 100644 --- a/app/Http/Controllers/ClosetController.php +++ b/app/Http/Controllers/ClosetController.php @@ -33,32 +33,36 @@ class ClosetController extends Controller $page = $page <= 0 ? 1 : $page; $q = $request->input('q', null); - if ($q) { - $result = []; + $items = []; - foreach ($this->closet->getItems() as $item) { - if (strstr($item->name, $q)) { - $result[] = $item; + if ($q) { + foreach (['skin', 'cape'] as $category) { + // do search + foreach ($this->closet->getItems($category) as $item) { + if (strstr($item->name, $q)) { + $items[$category][] = $item; + } } } - - $items = $result; } else { - $items = $this->closet->getItems($category); + $items['skin'] = $this->closet->getItems('skin'); + $items['cape'] = $this->closet->getItems('cape'); } // pagination - $items = array_slice($items, ($page-1)*6, 6); + $total_pages = []; - $total_pages = ceil(count($items) / 6); + foreach ($items as $key => $value) { + $total_pages[] = ceil(count($items[$key]) / 6); + $items[$key] = array_slice($value, ($page-1)*6, 6); + } - echo View::make('user.closet')->with('items', $items) - ->with('page', $page) - ->with('q', $q) - ->with('category', $category) - ->with('total_pages', $total_pages) - ->with('user', $users->get(session('uid'))) - ->render(); + return view('user.closet')->with('items', $items) + ->with('page', $page) + ->with('q', $q) + ->with('category', $category) + ->with('total_pages', max($total_pages)) + ->with('user', $users->get(session('uid'))); } public function info() diff --git a/app/Http/Controllers/PlayerController.php b/app/Http/Controllers/PlayerController.php index cdda2c8d..481a74d1 100644 --- a/app/Http/Controllers/PlayerController.php +++ b/app/Http/Controllers/PlayerController.php @@ -125,16 +125,14 @@ class PlayerController extends Controller */ public function setTexture(Request $request) { - $this->validate($request, [ - 'tid' => 'required|integer' - ]); + foreach ($request->input('tid') as $key => $value) { + if (!($texture = Texture::find($value))) + return json(trans('skinlib.un-existent'), 6); - if (!($texture = Texture::find($request->tid))) - return json(trans('skinlib.un-existent'), 6); + $field_name = "tid_{$texture->type}"; - $field_name = "tid_{$texture->type}"; - - $this->player->setTexture([$field_name => $request->tid]); + $this->player->setTexture([$field_name => $value]); + } return json(trans('user.player.set.success', ['name' => $this->player->player_name]), 0); } diff --git a/resources/assets/src/js/user.js b/resources/assets/src/js/user.js index d9e6eb2e..b5a67566 100644 --- a/resources/assets/src/js/user.js +++ b/resources/assets/src/js/user.js @@ -2,7 +2,7 @@ * @Author: printempw * @Date: 2016-07-16 10:02:24 * @Last Modified by: printempw - * @Last Modified time: 2016-09-25 10:16:21 + * @Last Modified time: 2016-11-13 12:15:16 */ 'use strict'; @@ -124,6 +124,8 @@ $('.fa-repeat').click(function(){ MSP.setStatus("rotation", !MSP.getStatus("rotation")); }); +var selected = []; + $('body').on('click', '.item', function() { $('.item-selected').removeClass('item-selected'); $(this).addClass('item-selected'); @@ -137,9 +139,19 @@ $('body').on('click', '.item', function() { success: function(json) { if (json.type == "cape") { MSP.changeCape('../textures/' + json.hash); + selected['cape'] = tid; } else { MSP.changeSkin('../textures/' + json.hash); + selected['skin'] = tid; } + + selected.length = 0; + + ['skin', 'cape'].forEach(function(key) { + if (selected[key] !== undefined) selected.length++; + + $('#textures-indicator').html(selected.length); + }); }, error: showAjaxError }); @@ -251,18 +263,20 @@ function setTexture() { if (this.checked) pid = this.id; }); - var tid = $('.item-selected').attr('tid'); - if (!pid) { toastr.info(trans('user.emptySelectedPlayer')); - } else if (!tid) { + } else if (selected.length == 0) { toastr.info(trans('user.emptySelectedTexture')); } else { $.ajax({ type: "POST", url: "./player/set", dataType: "json", - data: { 'pid' : pid, 'tid' : tid }, + data: { + 'pid': pid, + 'tid[skin]': selected['skin'], + 'tid[cape]': selected['cape'] + }, success: function(json) { if (json.errno == 0) { swal({ diff --git a/resources/views/user/closet.tpl b/resources/views/user/closet.tpl index d0ecd0dc..8ebab8e3 100644 --- a/resources/views/user/closet.tpl +++ b/resources/views/user/closet.tpl @@ -23,62 +23,30 @@