Skip to content

Cesivi — Lists and Libraries User Guide

Surface #2 — PLAN-1636 (v1.3 PRIORITY 0)


Overview

Lists and Libraries are the foundational storage containers in Cesivi. Every other surface — items, columns, views, permissions, web parts, search, taxonomy — operates on lists and libraries. Cesivi fully replicates the classic SharePoint On-Premises list/library feature surface.


The 12 Stock Templates

Template ID Name Primary Use Case
100 Custom List Generic list with a Title column; fully customizable
101 Document Library Store and version documents; OnlyOffice integration
102 Survey Collect structured questionnaire responses
103 Links Bookmark collection with URL + description
104 Announcements Time-stamped news items with expiration
105 Contacts People directory (Name, email, phone)
106 Calendar Date-based events; month/week/day views
107 Tasks Work-item tracking with % complete and assignments
108 Discussion Board Threaded conversation topics
109 Picture Library Image gallery with thumbnail rendering
115 Form Library InfoPath-style XML form storage
851 Asset Library Rich-media asset management with metadata

Create a List

  1. Navigate to Site Contents → click New → select List.
  2. Choose a template from the gallery (12 options, see table above).
  3. Enter the list name and optional description.
  4. Click Create.

Shortcut: /_layouts/15/newlist.aspx or /_layouts/15/newlist.aspx?ListTemplate=100 to pre-select a template.

See also: [PLAN-1626 — Create List/Library wizard repair].


Create a Library

  1. Navigate to Site Contents → click New → select Document Library (or Picture Library, etc.).
  2. Enter the library name.
  3. Click Create.

Shortcut: /_layouts/15/newlist.aspx?ListTemplate=101 for Document Library.


List Settings Hub (Listedit.aspx)

Navigate to /_layouts/15/listedit.aspx?List={ListTitle} to reach the settings hub.

General Settings

Section Description
List name, description and navigation Edit title, description, and Quick Launch visibility
Versioning settings Configure version history (see Versioning section)
Advanced settings Attachments, folders, item-level permissions, search, dialogs
Validation settings Column-formula validation for new/edit forms

Permissions and Management

Link Target Page
Delete this list /_layouts/15/deletelist.aspx?List={title}
Save list as template /_layouts/15/savetmpl.aspx?List={title}
Permissions for this list /_layouts/15/user.aspx?List={title} (surface #6)
Audience targeting settings /_layouts/15/audiencetargeting.aspx?List={title}

Communications

  • RSS settings — /_layouts/15/listrss.aspx
  • Incoming e-mail settings — /_layouts/15/listfeed.aspx

Content Types

Visible when Allow management of content types is ON (AdvSetng.aspx). Navigate to /_layouts/15/listcontenttype.aspx to manage.

Columns

All columns defined on this list. Link to /_layouts/15/listedit.aspx?List=... column sub-sections. See User Guide: Columns.

Views

All views. See User Guide: Views.


Advanced Settings (AdvSetng.aspx)

Navigate to /_layouts/15/advsetng.aspx?List={ListTitle}.

Setting Lists Libraries Notes
Allow management of content types Enables CT management section in Listedit
Default open behavior for browser-enabled documents Client app vs. browser
Attachments Enable/disable file attachments on list items
Create folders Allow folder creation in list/library
Search NoCrawl: exclude from search index
Offline Client Availability Sync to SharePoint Workspace
Dialogs Open forms in dialogs vs. full page
Quick Edit (Datasheet view) Inline grid editing

REST API for AdvSetng properties:

GET /_api/web/lists/getbytitle('{title}')?$select=NoCrawl,ContentTypesEnabled,EnableFolderCreation
POST /_api/web/lists/getbytitle('{title}')  [X-HTTP-Method: MERGE]
Body: { "__metadata": { "type": "SP.List" }, "NoCrawl": true }


Versioning Settings (LstSetng.aspx)

Navigate to /_layouts/15/lstsetng.aspx?List={ListTitle}.

Lists — Versioning Modes

Mode REST Property Description
No versioning EnableVersioning: false Default; only current version kept
Major versions only EnableVersioning: true All saves create numbered versions

Libraries — Versioning Modes

Mode REST Properties Description
No versioning EnableVersioning: false Single copy
Major versions EnableVersioning: true, EnableMinorVersions: false Published major versions
Major + Minor EnableVersioning: true, EnableMinorVersions: true Draft (0.x) + published (x.0)

Content Approval

When Require content approval is ON (EnableModeration: true): - New items enter Pending (draft) state - Only approvers see pending items (re-exercises PLAN-455 file-level ACL) - Approve / Reject via ECB menu or ribbon


Library-Specific Surfaces

Document Template

A library's default document template (/_api/web/lists/getbytitle('{title}')/DocumentTemplateUrl) controls what file opens when a user clicks New inside the library.

Default Content Type

When content types are enabled, the default content type controls the NewForm column set. Switch via /_layouts/15/listcontenttype.aspx.

Require Check Out

Enabled in LstSetng.aspx. When ON: - Users must check out before editing - Check-in triggers version creation (if versioning is also enabled)

Open Behavior (AdvSetng)

  • In the browser — files open in OnlyOffice (if configured) or as download
  • In the client application — Office protocol handler triggers

OnlyOffice Integration

If the OnlyOffice container is live (see Admin Guide: OnlyOffice), document libraries gain in-browser document editing. PLAN-1627 verified this surface end-to-end.


Save as Template

  1. Navigate to /_layouts/15/savetmpl.aspx?List={ListTitle}.
  2. Enter a Template Name and optionally check Include Content to copy existing data.
  3. Click OK.
  4. The .stp template appears in the List Template Gallery (/_layouts/15/lsttmpl.aspx).
  5. Create a new list from the template: /_layouts/15/newlist.aspx?ListTemplate={customTemplateId}.

Sub-Web List Pattern

Lists in sub-webs follow the same URL structure, prefixed with the sub-web path:

/{subweb}/_layouts/15/listedit.aspx?List={ListTitle}
/{subweb}/_layouts/15/advsetng.aspx?List={ListTitle}
/{parent}/{child}/_layouts/15/listedit.aspx?List={ListTitle}

The SPWebPath routing (PLAN-1233) ensures /{subweb}/Lists/{title}/AllItems.aspx resolves correctly at all sub-web depths.


4-Client API Reference

Client Create Read Update Delete
REST POST /_api/web/lists GET /_api/web/lists/getbytitle('{title}') POST ... [MERGE] POST ... [DELETE]
CSOM web.Lists.Add(ListCreationInfo) web.Lists.GetByTitle(title) list.Update() list.DeleteObject()
PnP New-PnPList -Title ... -Template GenericList Get-PnPList -Identity ... Set-PnPList ... Remove-PnPList -Force
SOAP Lists.asmx: AddList Lists.asmx: GetList Lists.asmx: UpdateList Lists.asmx: DeleteList

REST Body — Create List

POST /_api/web/lists
{
  "__metadata": { "type": "SP.List" },
  "BaseTemplate": 100,
  "Title": "My List",
  "Description": "Optional description"
}

REST Body — Update Settings

POST /_api/web/lists/getbytitle('My List')
X-HTTP-Method: MERGE
IF-MATCH: *
{
  "__metadata": { "type": "SP.List" },
  "EnableVersioning": true,
  "EnableModeration": false
}

Test Coverage (PLAN-1636)

Phase File Tests What it verifies
A StockTemplateLifecycleMatrixTests.cs 12 All 12 templates: create → populate → edit → delete
B ListSettingsHubLinkIntegrityTests.cs 8 Every Listedit hub link; title round-trip; GUID URL shape
C AdvancedSettingsRoundTripTests.cs 8 EnableVersioning, ContentTypesEnabled, NoCrawl toggles
D VersioningContentApprovalMatrixTests.cs 6 List/library versioning modes + content approval ON/OFF
E LibrarySpecificSurfaceTests.cs 7 DocLib: ContentTypes, file upload, OnlyOffice, PictureLib
F ListsInSubWebsDepthTests.cs 6 Depth-1 and depth-2 sub-web list settings (PLAN-1233 guard)
G SaveAsTemplateRoundTripTests.cs 4 Savetmpl → Lsttmpl gallery → Newlist?ListTemplate=
H-a Cesivi.Tests.Csom/ListsCompatSmokeTests.cs 3 CSOM Create/GetByTitle/UpdateTitle/Delete
H-b Cesivi.Tests.PnP/PnPListsCompatSmokeTests.cs 3 PnP New/Get/Remove list cmdlets
H-c Cesivi.Tests.RestSoap/RestListSettingsRoundTripTests.cs 3 REST GET-MERGE-GET on EnableVersioning/CT/Moderation
H-d Cesivi.Tests.RestSoap/SoapListsCompatSmokeTests.cs 3 SOAP AddList/GetList/UpdateList/DeleteList
Total 63 E2E + 9 cross-client = 72 tests

Screenshots

See _docs/images/lists-and-libraries/ for walkthrough screenshots.

Last Updated: 2026-05-29 (PLAN-1636, PLAN-1639)


WCAG 2.1 AA Conformance — Lists + Libraries

Status: ✅ PASS — 0 critical, 0 serious violations. KnownAxeAcceptances = [] (no waivers). Plan: PLAN-1639 | Date: 2026-05-29

Automated Gate

17 routes registered in AllSurfacesAxeRunner under bucket "v1.4 Group A1 — Lists + Libraries": - List shell: AllItems, NewForm, EditForm, DispForm, Settings - Classic settings hub: Listedit, LstSetng, AdvSetng, AudienceTargeting, DeleteList - Template gallery: Newlist, New.aspx, Lsttmpl - List management: Savetmpl, Listrss, ListContentType, ListContentTypeOrder

All 17 routes pass axe-core WCAG 2.1 AA scan with zero critical + zero serious violations.

Keyboard Navigation

  • All form controls are Tab-accessible on all pages.
  • AllItems column headers support keyboard sort (Tab to header, Enter/Space toggles sort).
  • AllItems command bar has role="toolbar".
  • Newlist template gallery: role="radiogroup" + role="radio" with roving tabindex (Arrow keys navigate, Enter/Space selects).
  • ListContentTypeOrder: Move-Up/Move-Down buttons are keyboard-activated; each reorder announces via aria-live="polite".
  • Skip-nav link (<a class="skip-link" href="#cesivi-main-content">) present on all 17 pages.
  • :focus-visible CSS rule provides visible focus outline on all interactive elements.

Screen-Reader Semantics

  • AllItems grid: role="grid", aria-label, aria-rowcount, aria-colcount updated on every load.
  • Sort state: aria-sort="ascending/descending/none" on every column header, updated on toggle.
  • Form inputs: every visible <input>, <select>, <textarea> has a <label for>, aria-label, or aria-labelledby.
  • Validation errors: #sp-validation-summary[role="alert"] announces inline validation errors.
  • Error banners: all sp-message-bar-error and form-error-banner divs have role="alert".
  • Status messages: success messages have role="status".
  • Table headers: scope="col" on all <th> in Listedit Columns + Views tables and Lsttmpl templates table.

Residual Moderate / Minor Violations

None logged — this surface passes with zero moderate or minor waivers beyond the axe tool's own false-positive exclusions.

Test Files

  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListsAndLibrariesA11yTests.cs — 4 axe gate tests (17 routes)
  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListsAndLibrariesKeyboardTests.cs — 11 keyboard tests
  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListsAndLibrariesScreenReaderTests.cs — 10 SR semantics tests

Reference

  • Baseline catalogue: _project/areas/a11y/lists-and-libraries-baseline-1639.md
  • Narrator pass report: _project/areas/a11y/lists-and-libraries-narrator-report-1639.md