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¶
- Navigate to
Site Contents→ click New → select List. - Choose a template from the gallery (12 options, see table above).
- Enter the list name and optional description.
- Click Create.
Shortcut:
/_layouts/15/newlist.aspxor/_layouts/15/newlist.aspx?ListTemplate=100to pre-select a template.
See also: [PLAN-1626 — Create List/Library wizard repair].
Create a Library¶
- Navigate to
Site Contents→ click New → select Document Library (or Picture Library, etc.). - Enter the library name.
- Click Create.
Shortcut:
/_layouts/15/newlist.aspx?ListTemplate=101for 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¶
- Navigate to
/_layouts/15/savetmpl.aspx?List={ListTitle}. - Enter a Template Name and optionally check Include Content to copy existing data.
- Click OK.
- The
.stptemplate appears in the List Template Gallery (/_layouts/15/lsttmpl.aspx). - 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-visibleCSS rule provides visible focus outline on all interactive elements.
Screen-Reader Semantics¶
- AllItems grid:
role="grid",aria-label,aria-rowcount,aria-colcountupdated 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, oraria-labelledby. - Validation errors:
#sp-validation-summary[role="alert"]announces inline validation errors. - Error banners: all
sp-message-bar-errorandform-error-bannerdivs haverole="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 testsCesivi.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