tags_assign: user_id instead of prefix
This commit is contained in:
parent
b2f45dc70e
commit
bad5a5f7f0
|
@ -89,7 +89,7 @@ const flash = ({ type, msg }) => {
|
||||||
|
|
||||||
const span = document.createElement("span");
|
const span = document.createElement("span");
|
||||||
span.classList.add("badge", "badge-light", "mr-2");
|
span.classList.add("badge", "badge-light", "mr-2");
|
||||||
span.title = tag.prefix;
|
span.title = tag.user;
|
||||||
if(tag.tag == "sfw") {
|
if(tag.tag == "sfw") {
|
||||||
span.classList.remove("badge-light");
|
span.classList.remove("badge-light");
|
||||||
span.classList.add("badge-success");
|
span.classList.add("badge-success");
|
||||||
|
|
|
@ -99,7 +99,9 @@ export default new class {
|
||||||
};
|
};
|
||||||
async getTags(itemid) {
|
async getTags(itemid) {
|
||||||
const tags = await sql("tags_assign")
|
const tags = await sql("tags_assign")
|
||||||
|
.select("tags.id", "tags.tag", "user.user")
|
||||||
.leftJoin("tags", "tags.id", "tags_assign.tag_id")
|
.leftJoin("tags", "tags.id", "tags_assign.tag_id")
|
||||||
|
.leftJoin("user", "user.id", "tags_assign.user_id")
|
||||||
.where("tags_assign.item_id", itemid);
|
.where("tags_assign.item_id", itemid);
|
||||||
for(let t = 0; t < tags.length; t++)
|
for(let t = 0; t < tags.length; t++)
|
||||||
tags[t].tag = tags[t].tag.replace(/[\u00A0-\u9999<>\&]/g, i => '&#'+i.charCodeAt(0)+';');
|
tags[t].tag = tags[t].tag.replace(/[\u00A0-\u9999<>\&]/g, i => '&#'+i.charCodeAt(0)+';');
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import sql from "../sql.mjs";
|
import sql from "../sql.mjs";
|
||||||
|
import lib from "../lib.mjs";
|
||||||
|
|
||||||
const allowedMimes = [ "audio", "image", "video", "%" ];
|
const allowedMimes = [ "audio", "image", "video", "%" ];
|
||||||
const auth = async (req, res, next) => {
|
const auth = async (req, res, next) => {
|
||||||
|
@ -11,11 +12,6 @@ const auth = async (req, res, next) => {
|
||||||
return next();
|
return next();
|
||||||
};
|
};
|
||||||
|
|
||||||
const getTags = async itemid => await sql("tags_assign")
|
|
||||||
.leftJoin("tags", "tags.id", "tags_assign.tag_id")
|
|
||||||
.where("tags_assign.item_id", itemid)
|
|
||||||
.select("tags.id", "tags.tag", "tags_assign.prefix");
|
|
||||||
|
|
||||||
export default (router, tpl) => {
|
export default (router, tpl) => {
|
||||||
router.group(/^\/api\/v2/, group => {
|
router.group(/^\/api\/v2/, group => {
|
||||||
|
|
||||||
|
@ -121,13 +117,13 @@ export default (router, tpl) => {
|
||||||
await sql("tags_assign").insert({
|
await sql("tags_assign").insert({
|
||||||
tag_id: tagid,
|
tag_id: tagid,
|
||||||
item_id: postid,
|
item_id: postid,
|
||||||
prefix: `${req.session.user}@webinterface`
|
user_id: req.session.id
|
||||||
});
|
});
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
return res.reply({ body: JSON.stringify({
|
return res.reply({ body: JSON.stringify({
|
||||||
success: false,
|
success: false,
|
||||||
msg: err.message,
|
msg: err.message,
|
||||||
tags: await getTags(postid)
|
tags: await lib.getTags(postid)
|
||||||
})});
|
})});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +131,7 @@ export default (router, tpl) => {
|
||||||
success: true,
|
success: true,
|
||||||
postid: req.post.postid,
|
postid: req.post.postid,
|
||||||
tag: req.post.tag,
|
tag: req.post.tag,
|
||||||
tags: await getTags(postid)
|
tags: await lib.getTags(postid)
|
||||||
})});
|
})});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -150,7 +146,7 @@ export default (router, tpl) => {
|
||||||
const postid = +req.post.postid;
|
const postid = +req.post.postid;
|
||||||
const tag = req.post.tag;
|
const tag = req.post.tag;
|
||||||
|
|
||||||
const tags = await getTags(postid);
|
const tags = await lib.getTags(postid);
|
||||||
|
|
||||||
const tagid = tags.filter(t => t.tag === tag)[0]?.id ?? null;
|
const tagid = tags.filter(t => t.tag === tag)[0]?.id ?? null;
|
||||||
if(!tagid || tagid?.length === 0) {
|
if(!tagid || tagid?.length === 0) {
|
||||||
|
@ -158,28 +154,26 @@ export default (router, tpl) => {
|
||||||
success: false,
|
success: false,
|
||||||
tag: tag,
|
tag: tag,
|
||||||
msg: "tag is not assigned",
|
msg: "tag is not assigned",
|
||||||
tags: await getTags(postid)
|
tags: await lib.getTags(postid)
|
||||||
})});
|
})});
|
||||||
}
|
}
|
||||||
|
|
||||||
let q = sql("tags_assign").where("tag_id", tagid).andWhere("item_id", postid).del();
|
let q = sql("tags_assign").where("tag_id", tagid).andWhere("item_id", postid).del();
|
||||||
if(req.session.level < 50)
|
if(req.session.level < 50)
|
||||||
q = q.andWhere("prefix", `${req.session.user}@webinterface`);
|
q = q.andWhere("user_id", req.session.id);
|
||||||
const reply = !!(await q);
|
const reply = !!(await q);
|
||||||
|
|
||||||
//await cleanTags();
|
|
||||||
|
|
||||||
return res.reply({ body: JSON.stringify({
|
return res.reply({ body: JSON.stringify({
|
||||||
success: reply,
|
success: reply,
|
||||||
tag: tag,
|
tag: tag,
|
||||||
tagid: tagid,
|
tagid: tagid,
|
||||||
tags: await getTags(postid)
|
tags: await lib.getTags(postid)
|
||||||
})});
|
})});
|
||||||
});
|
});
|
||||||
|
|
||||||
group.get(/\/admin\/tags\/get\/\d+$/, auth, async (req, res) => {
|
group.get(/\/admin\/tags\/get\/\d+$/, auth, async (req, res) => {
|
||||||
return res.reply({ body: JSON.stringify({
|
return res.reply({ body: JSON.stringify({
|
||||||
tags: await getTags(+req.url.split[5])
|
tags: await lib.getTags(+req.url.split[5])
|
||||||
})});
|
})});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -231,8 +231,9 @@ export default (router, tpl) => {
|
||||||
router.get(/^\/ranking/, async (req, res) => {
|
router.get(/^\/ranking/, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const list = await sql('tags_assign')
|
const list = await sql('tags_assign')
|
||||||
.select('prefix', sql.raw('count(distinct tag_id, item_id) count'))
|
.select('user.user', sql.raw('count(distinct tag_id, item_id) count'))
|
||||||
.groupBy('prefix')
|
.leftJoin('user', 'user.id', 'tags_assign.user_id')
|
||||||
|
.groupBy('user.user')
|
||||||
.orderBy('count', 'desc');
|
.orderBy('count', 'desc');
|
||||||
|
|
||||||
const stats = await lib.countf0cks();
|
const stats = await lib.countf0cks();
|
||||||
|
|
|
@ -165,7 +165,7 @@ export default async bot => {
|
||||||
await sql("tags_assign").insert({
|
await sql("tags_assign").insert({
|
||||||
tag_id: tag === "sfw" ? 1 : 2,
|
tag_id: tag === "sfw" ? 1 : 2,
|
||||||
item_id: insertq,
|
item_id: insertq,
|
||||||
prefix: `autotagger`
|
user_id: 7 // user: autotagger
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ export default async bot => {
|
||||||
}, {
|
}, {
|
||||||
name: "tags add",
|
name: "tags add",
|
||||||
call: /^\!tags add \d+ .*/i,
|
call: /^\!tags add \d+ .*/i,
|
||||||
active: true,
|
active: false,
|
||||||
level: 100,
|
level: 100,
|
||||||
f: async e => {
|
f: async e => {
|
||||||
const id = +e.args[1];
|
const id = +e.args[1];
|
||||||
|
@ -71,7 +71,7 @@ export default async bot => {
|
||||||
}, {
|
}, {
|
||||||
name: "tags remove",
|
name: "tags remove",
|
||||||
call: /^\!tags remove \d+ .*/i,
|
call: /^\!tags remove \d+ .*/i,
|
||||||
active: true,
|
active: false,
|
||||||
level: 100,
|
level: 100,
|
||||||
f: async e => {
|
f: async e => {
|
||||||
const id = +e.args[1];
|
const id = +e.args[1];
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
<span class="badge badge-dark" id="tags">
|
<span class="badge badge-dark" id="tags">
|
||||||
@if(typeof item.tags !== "undefined")
|
@if(typeof item.tags !== "undefined")
|
||||||
@each(item.tags as tag)
|
@each(item.tags as tag)
|
||||||
<span @if(session)title="{{ tag.prefix }}"@endif class="badge @if(tag.tag[0] == "&")badge-greentext@endif badge-{{ (tag.tag === "nsfw" ? "danger" : tag.tag === "sfw" ? "success" : "light") }} mr-2">
|
<span @if(session)title="{{ tag.user }}"@endif class="badge @if(tag.tag[0] == "&")badge-greentext@endif badge-{{ (tag.tag === "nsfw" ? "danger" : tag.tag === "sfw" ? "success" : "light") }} mr-2">
|
||||||
<a href="/tag/{{ tag.tag.replace(/\s/g, "%20") }}" style="color: inherit !important;">{{ tag.tag }}</a>@if(session) <a href="#">×</a>@endif
|
<a href="/tag/{{ tag.tag.replace(/\s/g, "%20") }}" style="color: inherit !important;">{{ tag.tag }}</a>@if(session) <a href="#">×</a>@endif
|
||||||
</span>
|
</span>
|
||||||
@endeach
|
@endeach
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>rank</td>
|
<td>rank</td>
|
||||||
<td>username</td>
|
<td>username</td>
|
||||||
<td># tagged f0cks</td>
|
<td># tags placed</td>
|
||||||
</tr>
|
</tr>
|
||||||
@for(let i = 0; i < list.length; i++)
|
@for(let i = 0; i < list.length; i++)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ i + 1 }}</td>
|
<td>{{ i + 1 }}</td>
|
||||||
<td>{!! list[i].prefix !!}</td>
|
<td>{!! list[i].user !!}</td>
|
||||||
<td>{{ list[i].count }}</td>
|
<td>{{ list[i].count }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endfor
|
@endfor
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<li><a href="/user/{{ session.user.toLowerCase() }}">my f0cks</a></li>
|
<li><a href="/user/{{ session.user.toLowerCase() }}">my f0cks</a></li>
|
||||||
<li><a href="/settings">settings</a></li>
|
<li><a href="/settings">settings</a></li>
|
||||||
<li><a href="/about">About</a></li>
|
<li><a href="/about">About</a></li>
|
||||||
|
<li><a href="/ranking">Ranking</a></li>
|
||||||
<li><a href="/logout">logout</a></li>
|
<li><a href="/logout">logout</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@else
|
@else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user