add renaming closet items

This commit is contained in:
printempw 2016-09-25 10:35:16 +08:00
parent 74c07d8353
commit 15c3c55142
9 changed files with 85 additions and 5 deletions

View File

@ -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, [

View File

@ -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');
});
/**

View File

@ -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

View File

@ -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'),

View File

@ -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:',

View File

@ -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: |
<p>Nothing in your closet...</p>
@ -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.

View File

@ -73,6 +73,7 @@
removeFromClosetNotice: '确定要从衣柜中移除此材质吗?',
emptySelectedPlayer: '你还没有选择角色哦',
emptySelectedTexture: '你还没有选择要应用的材质哦',
renameClosetItem: '请输入此衣柜物品的新名称:',
// Player
changePlayerName: '请输入角色名:',

View File

@ -36,7 +36,6 @@ closet:
switch-category: 切换分类
view: 在皮肤库中查看
more: 更多
remove: 从衣柜中移除
set-avatar: 设为头像
empty-msg: |
<p>衣柜里啥都没有哦~</p>
@ -52,7 +51,12 @@ closet:
success: 材质 :name 收藏成功~
repeated: 你已经收藏过这个材质啦
rename:
title: 重命名物品
success: 衣柜物品成功重命名至 :name
remove:
title: 从衣柜中移除
success: 材质已从衣柜中移除
non-existent: 衣柜中不存在此材质

View File

@ -49,7 +49,8 @@
<span title="{{ trans('user.closet.more') }}" class="more" data-toggle="dropdown" aria-haspopup="true" id="share-button"><i class="fa fa-cog"></i></span>
<ul class="dropdown-menu" aria-labelledby="share-button">
<li><a href="javascript:removeFromCloset({{ $item->tid }});">{{ trans('user.closet.remove') }}</a></li>
<li><a href="javascript:renameClosetItem({{ $item->tid }});">{{ trans('user.closet.rename.title') }}</a></li>
<li><a href="javascript:removeFromCloset({{ $item->tid }});">{{ trans('user.closet.remove.title') }}</a></li>
<li><a href="javascript:setAsAvatar({{ $item->tid }});">{{ trans('user.closet.set-avatar') }}</a></li>
</ul>
</div>