6 Commits

7 changed files with 19 additions and 6 deletions

View File

@ -36,6 +36,7 @@ $button-disabled-background-color = #CCC
$post-thumbnail-border-color = $main-color $post-thumbnail-border-color = $main-color
$post-thumbnail-no-tags-border-color = #F44 $post-thumbnail-no-tags-border-color = #F44
$default-tag-category-background-color = $active-tab-background-color $default-tag-category-background-color = $active-tab-background-color
$default-pool-category-background-color = $active-tab-background-color
$new-tag-background-color = #DFC $new-tag-background-color = #DFC
$new-tag-text-color = black $new-tag-text-color = black
$implied-tag-background-color = #FFC $implied-tag-background-color = #FFC

View File

@ -47,6 +47,7 @@
background-position: 50% 30% background-position: 50% 30%
position: absolute position: absolute
display: inline-block display: inline-block
box-shadow: 0 0 0 1px rgba(0,0,0,0.2)
.thumbnail-1, .thumbnail.empty .thumbnail-1, .thumbnail.empty
right: -4px right: -4px

View File

@ -14,7 +14,6 @@ const EmptyView = require("../views/empty_view.js");
const fields = [ const fields = [
"id", "id",
"names", "names",
"posts",
"creationTime", "creationTime",
"postCount", "postCount",
"category", "category",
@ -101,11 +100,13 @@ class PoolListController {
return uri.formatClientLink("pools", parameters); return uri.formatClientLink("pools", parameters);
}, },
requestPage: (offset, limit) => { requestPage: (offset, limit) => {
const canEditPosts = api.hasPrivilege("pools:edit") || api.hasPrivilege("pools:edit:posts");
const effectiveFields = fields.concat([canEditPosts ? "posts": "postsMicro"]);
return PoolList.search( return PoolList.search(
this._ctx.parameters.query, this._ctx.parameters.query,
offset, offset,
limit, limit,
fields effectiveFields
); );
}, },
pageRenderer: (pageCtx) => { pageRenderer: (pageCtx) => {

View File

@ -41,7 +41,7 @@ class PostMainController extends BasePostController {
) )
: uri.formatClientLink("post", ctx.parameters.id); : uri.formatClientLink("post", ctx.parameters.id);
router.replace(url, ctx.state, false); router.replace(url, ctx.state, false);
parameters.query.split(" ").forEach((item) => { misc.splitByWhitespace(parameters.query).forEach((item) => {
const found = item.match(/^pool:([0-9]+)/i); const found = item.match(/^pool:([0-9]+)/i);
if (found) { if (found) {
const activePool = parseInt(found[1]); const activePool = parseInt(found[1]);

View File

@ -36,7 +36,7 @@ class Pool extends events.EventTarget {
} }
get posts() { get posts() {
return this._posts; return this._postsMicro || this._posts;
} }
get postCount() { get postCount() {
@ -185,6 +185,7 @@ class Pool extends events.EventTarget {
_creationTime: response.creationTime, _creationTime: response.creationTime,
_lastEditTime: response.lastEditTime, _lastEditTime: response.lastEditTime,
_postCount: response.postCount || 0, _postCount: response.postCount || 0,
_postsMicro: response.postsMicro,
_firstPost: response.firstPost || null, _firstPost: response.firstPost || null,
_lastPost: response.lastPost || null, _lastPost: response.lastPost || null,
_previousPost: response.previousPost || null, _previousPost: response.previousPost || null,
@ -192,7 +193,7 @@ class Pool extends events.EventTarget {
}; };
for (let obj of [this, this._orig]) { for (let obj of [this, this._orig]) {
obj._posts.sync(response.posts); obj._posts.sync(response.posts || []);
} }
Object.assign(this, map); Object.assign(this, map);

View File

@ -30,7 +30,7 @@ class PoolCreateView extends events.EventTarget {
} }
for (let node of this._formNode.querySelectorAll( for (let node of this._formNode.querySelectorAll(
"input, select, textarea, posts" "input, select, textarea"
)) { )) {
node.addEventListener("change", (e) => { node.addEventListener("change", (e) => {
this.dispatchEvent(new CustomEvent("change")); this.dispatchEvent(new CustomEvent("change"));

View File

@ -108,6 +108,7 @@ class PoolSerializer(serialization.BaseSerializer):
"lastEditTime": self.serialize_last_edit_time, "lastEditTime": self.serialize_last_edit_time,
"postCount": self.serialize_post_count, "postCount": self.serialize_post_count,
"posts": self.serialize_posts, "posts": self.serialize_posts,
"postsMicro": self.serialize_posts_micro,
} }
def serialize_id(self) -> Any: def serialize_id(self) -> Any:
@ -143,6 +144,14 @@ class PoolSerializer(serialization.BaseSerializer):
] ]
] ]
def serialize_posts_micro(self) -> Any:
posts_micro = []
for i, rel in enumerate(self.pool.posts):
posts_micro.append(posts.serialize_micro_post(rel, None))
if i == 2:
break
return posts_micro
def serialize_pool( def serialize_pool(
pool: model.Pool, options: List[str] = [] pool: model.Pool, options: List[str] = []