"use strict"; const api = require("../api.js"); const uri = require("../util/uri.js"); const SnapshotList = require("../models/snapshot_list.js"); const PageController = require("../controllers/page_controller.js"); const topNavigation = require("../models/top_navigation.js"); const SnapshotsPageView = require("../views/snapshots_page_view.js"); const EmptyView = require("../views/empty_view.js"); class SnapshotsController { constructor(ctx) { if (!api.hasPrivilege("snapshots:list")) { this._view = new EmptyView(); this._view.showError("You don't have privileges to view history."); return; } topNavigation.activate(""); topNavigation.setTitle("History"); this._pageController = new PageController(); this._pageController.run({ parameters: ctx.parameters, defaultLimit: 25, getClientUrlForPage: (offset, limit) => { const parameters = Object.assign({}, ctx.parameters, { offset: offset, limit: limit, }); return uri.formatClientLink("history", parameters); }, requestPage: (offset, limit) => { return SnapshotList.search("", offset, limit); }, pageRenderer: (pageCtx) => { Object.assign(pageCtx, { canViewPosts: api.hasPrivilege("posts:view"), canViewUsers: api.hasPrivilege("users:view"), canViewTags: api.hasPrivilege("tags:view"), }); return new SnapshotsPageView(pageCtx); }, }); } } module.exports = (router) => { router.enter(["history"], (ctx, next) => { ctx.controller = new SnapshotsController(ctx); }); };