npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nodebb-plugin-pin-to-dealbee

v0.3.3

Published

A plugin to add function pinning deal to dealbee

Downloads

5

Readme

Plugin chức năng chọn một bài viết lên trang chủ Dealbee

Plugin thêm chức năng (cụ thể là một butotn) giúp editor chọn lựa bài post lên trang chủ dealbee. Plugin chỉ dừng lại ở việc lưu thông tin vị trí bài đăng và bài viết được đặt vào vị trí đó. Api để lấy dữ liệu này sẽ được cung cấp trong một plugin khác

Vị trí button Pin trong mỗi bài viết Button Postion

Dữ liệu về sơ đồ bố trí bài viết trên trang chủ Dealbee

Vì dữ liệu về sơ đồ bố trí bài viết trên trang chủ Dealbee là không cố định, vì vậy dữ liệu này được lưu trong file positionData

Sơ đồ bài viết trong dữ liệu mẫu đang được gom nhóm thành loại (type) và ví trí (position). Nói một cách dễ hiểu, mỗi loại sẽ có nhiều vị trí. Cấu trúc dữ liệu là một dữ liệu kiểu json. Sơ đồ bên dưới minh họa cấu trúc dữ liệu:

Lưu trữ ở cơ sở dữ liệu

Mỗi vị trí lưu trữ bài viết sẽ có key phân biệt để lưu dưới cơ sở dữ liệu của NodeBB, đi kèm là thông tin id (tid) của bài viết được gán vào vị trí đó. Qui tắc đặt tên key của một vị trí: pindealbee:{type-id}:{position-id} (với type-id và position-id được lưu trữ trong file position.js)

Ví dụ:_id: ObjectId("5eb432a1389e5c95d8cbdc8f")_key: pindealbee:type1:5tid: 3

Trang tổng hợp bài viết để pin

Để vào trang, truy cập đến đường dẫn: /pindealbee

Trang pin choose hỗ trợ các editors có cái nhìn tổng quan về các bài viết, từ trang này có thể chọn trực tiếp một bài viết lên trang chính.

Trang hiển thị các bài viết dưới dạng các dòng dữ liệu.

Giao diện chính trang pin choose Button Postion

Button Pin trong mỗi dòng dữ liệu ở trang preview Button Postion

Phân quyền cho người dùng

Admin có thể phân quyền cho người dùng để pin bài viết lên trang Dealbee tại /admin/manage/privileges

Ghi chú: Không thể phân quyền Global, chỉ có thể phân quyền cho từng Category cụ thể

Admin sẽ có toàn quyền pin tất cả các bài viết thuộc bất kỳ chủ đề nào.

Người dùng được phân quyền cho chủ đề nào thì mới pin bài viết thuộc chủ đề đó lên trang Dealbee.

Hỗ trợ phân quyền cho một người dùng hoặc một group cụ thể

Button Postion

Bộ lọc hỗ trợ

Dữ liệu hiển thị trên trang preview có thể được lọc bằng: category hoặc tên của bài viết

Button Postion

Dữ liệu hiển thị có thể được sắp xếp bằng các tiêu chí:

  • Newst (default): Từ mới nhất đến cũ nhất
  • Oldest: Từ cũ nhất đến mới nhất
  • Most liked: Các bài viết được upvote nhiều nhất đến thấp nhất
  • Most viewed: Các bài viết được xem nhiều nhất đến thấp nhất

Giao diện người dùng để chọn vị trí (demo) Button Postion

Trang preview các bài viết trên trang Dealbee

Button Postion

Các bài viết sẽ được hiển thị dưới dạng các hộp thông tin, chứa thông tin của bài viết đang được gắn vào nó.

Các vị trí chưa có bài viết sẽ có màu sắc nổi bật và khác biệt.

Phân quyền cho người dùng được vào trang preview

Truy cập đường dẫn: /pindealbee/preview hoặc phím tắt từ trang /pindealbee

Người dùng chỉ cần là editor-người có thể pin bài viết thuộc tối thiểu một category-đã có thể truy cập vào trang này.

Người dùng có thể xem toàn bộ vị trí và bài viết được gắn vào đó. Tuy nhiên người dùng chỉ có thể thao tác lên vị trí mà đang có bài viết gắn vào đó thuộc chủ đề mà người dùng được phân quyền. Ví dụ: Người dùng được phân quyền cho chủ đề 'Thảo luận chung', sẽ chỉ thao tác được các bài viết thuộc chủ đề này

Đối với các bài viết mà người dùng có thể thao tác, người dùng có thể gỡ bài viết (unpin). Lúc này vị trí sẽ trở thành vị trí trống.

Button Postion

Cập nhật thời gian thực với Socket IO

Việc cập nhật này chỉ áp dụng với trang preview.

Khi có một người dùng khác thao tác lên một vị trí (unpin hoặc thêm mới/update bài viết từ trang pin choose) thì toàn bộ người dùng đang truy cập vào trang pin preview đều được nhận thông báo và view của trang sẽ được cập nhật lại

Button Postion