From 15c3c55142b7789d8c96b7d21e8c5c4c07f0e6bc Mon Sep 17 00:00:00 2001 From: printempw Date: Sun, 25 Sep 2016 10:35:16 +0800 Subject: [PATCH] add renaming closet items --- app/Http/Controllers/ClosetController.php | 16 ++++++++++- app/Http/routes.php | 1 + app/Models/Closet.php | 21 ++++++++++++++ resources/assets/src/js/user.js | 35 ++++++++++++++++++++++- resources/lang/en/locale.js | 1 + resources/lang/en/user.yml | 6 +++- resources/lang/zh-CN/locale.js | 1 + resources/lang/zh-CN/user.yml | 6 +++- resources/views/user/closet.tpl | 3 +- 9 files changed, 85 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/ClosetController.php b/app/Http/Controllers/ClosetController.php index 05775952..61dcfb7e 100644 --- a/app/Http/Controllers/ClosetController.php +++ b/app/Http/Controllers/ClosetController.php @@ -51,7 +51,7 @@ class ClosetController extends Controller { $this->validate($request, [ 'tid' => 'required|integer', - 'name' => 'required|nickname', + 'name' => 'required|no_special_chars' ]); if ($this->closet->add($request->tid, $request->name)) { @@ -65,6 +65,20 @@ class ClosetController extends Controller } } + public function rename(Request $request) + { + $this->validate($request, [ + 'tid' => 'required|integer', + 'new_name' => 'required|no_special_chars' + ]); + + if ($this->closet->rename($request->tid, $request->new_name)) { + return json(trans('user.closet.rename.success', ['name' => $request->new_name]), 0); + } else { + return json(trans('user.closet.remove.non-existent'), 0); + } + } + public function remove(Request $request) { $this->validate($request, [ diff --git a/app/Http/routes.php b/app/Http/routes.php index c782a1f3..91569bab 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -68,6 +68,7 @@ Route::group(['middleware' => 'App\Http\Middleware\CheckAuthenticated Route::get ('/closet', 'ClosetController@index'); Route::post('/closet/add', 'ClosetController@add'); Route::post('/closet/remove', 'ClosetController@remove'); + Route::post('/closet/rename', 'ClosetController@rename'); }); /** diff --git a/app/Models/Closet.php b/app/Models/Closet.php index 4c9ec018..7848baba 100644 --- a/app/Models/Closet.php +++ b/app/Models/Closet.php @@ -120,6 +120,27 @@ class Closet return false; } + /** + * Rename closet item. + * + * @param integer $tid + * @param string $new_name + * @return void + */ + public function rename($tid, $new_name) + { + $offset = 0; + foreach ($this->textures as $item) { + if ($item['tid'] == $tid) { + $this->textures[$offset]['name'] = $new_name; + } + $offset++; + } + + $this->model->textures = json_encode($this->textures); + return $this->model->save(); + } + /** * Remove a texture from closet * @param int $tid diff --git a/resources/assets/src/js/user.js b/resources/assets/src/js/user.js index 9abd79ca..d9e6eb2e 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-24 21:02:13 + * @Last Modified time: 2016-09-25 10:16:21 */ 'use strict'; @@ -145,6 +145,39 @@ $('body').on('click', '.item', function() { }); }); +function renameClosetItem(tid) { + swal({ + title: trans('user.renameClosetItem'), + input: 'text', + showCancelButton: true, + inputValidator: function(value) { + return new Promise(function(resolve, reject) { + if (value) { + resolve(); + } else { + reject(trans('skinlib.emptyNewTextureName')); + } + }); + } + }).then(function(new_name) { + $.ajax({ + type: "POST", + url: "./closet/rename", + dataType: "json", + data: { 'tid': tid, 'new_name': new_name }, + success: function(json) { + if (json.errno == 0) { + $("[tid="+tid+"]>.item-footer>.texture-name>span").html(new_name); + toastr.success(json.msg); + } else { + toastr.warning(json.msg); + } + }, + error: showAjaxError + }); + }); +} + function removeFromCloset(tid) { swal({ text: trans('user.removeFromClosetNotice'), diff --git a/resources/lang/en/locale.js b/resources/lang/en/locale.js index 883c7d34..67ed2426 100644 --- a/resources/lang/en/locale.js +++ b/resources/lang/en/locale.js @@ -73,6 +73,7 @@ removeFromClosetNotice: 'Sure to remove this texture from your closet?', emptySelectedPlayer: 'No player is selected.', emptySelectedTexture: 'No texture is selected.', + renameClosetItem: 'Set a new name for this item:', // Player changePlayerName: 'Please enter the player name:', diff --git a/resources/lang/en/user.yml b/resources/lang/en/user.yml index 26b45319..d6cc6dc6 100644 --- a/resources/lang/en/user.yml +++ b/resources/lang/en/user.yml @@ -30,7 +30,6 @@ closet: switch-category: Switch Category view: View in skin librariy more: More - remove: Remove from closet set-avatar: Set as avatar empty-msg: |

Nothing in your closet...

@@ -46,7 +45,12 @@ closet: success: Added :name to closet successfully~ repeated: You have already added this texture. + rename: + title: Rename item + success: The item is successfully renamed to :name + remove: + title: Remove from closet success: Texture was removed from closet successfully. non-existent: The texture does not exist in your closet. diff --git a/resources/lang/zh-CN/locale.js b/resources/lang/zh-CN/locale.js index d58d4f58..12d5bad8 100644 --- a/resources/lang/zh-CN/locale.js +++ b/resources/lang/zh-CN/locale.js @@ -73,6 +73,7 @@ removeFromClosetNotice: '确定要从衣柜中移除此材质吗?', emptySelectedPlayer: '你还没有选择角色哦', emptySelectedTexture: '你还没有选择要应用的材质哦', + renameClosetItem: '请输入此衣柜物品的新名称:', // Player changePlayerName: '请输入角色名:', diff --git a/resources/lang/zh-CN/user.yml b/resources/lang/zh-CN/user.yml index 1c1739cd..a0416b01 100644 --- a/resources/lang/zh-CN/user.yml +++ b/resources/lang/zh-CN/user.yml @@ -36,7 +36,6 @@ closet: switch-category: 切换分类 view: 在皮肤库中查看 more: 更多 - remove: 从衣柜中移除 set-avatar: 设为头像 empty-msg: |

衣柜里啥都没有哦~

@@ -52,7 +51,12 @@ closet: success: 材质 :name 收藏成功~ repeated: 你已经收藏过这个材质啦 + rename: + title: 重命名物品 + success: 衣柜物品成功重命名至 :name + remove: + title: 从衣柜中移除 success: 材质已从衣柜中移除 non-existent: 衣柜中不存在此材质 diff --git a/resources/views/user/closet.tpl b/resources/views/user/closet.tpl index 9d3c92c8..a6270f36 100644 --- a/resources/views/user/closet.tpl +++ b/resources/views/user/closet.tpl @@ -49,7 +49,8 @@