Skip to content

Cesivi — Working with List Items and File Uploads

This guide covers the core data-entry workflows for Cesivi lists and libraries: creating/editing items, uploading files, managing folders, and performing bulk operations.


Adding Items to a List

From the Command Bar (New)

  1. Navigate to a list — e.g. http://localhost:15510/Lists/Tasks/Forms/AllItems.aspx
  2. Click New in the command bar (or the + New item ribbon button).
  3. The NewForm.aspx page opens. Fill in the fields and click Save.

The following column types are supported in NewForm / EditForm:

Type Notes
Single line of text Plain <input type="text">
Multiple lines of text <textarea> (plain) or rich-text editor
Number / Currency / Percentage Numeric <input> with step hints
Date / Date+Time HTML5 <input type="date"> or type="datetime-local">
Yes/No (Boolean) Checkbox
Choice Dropdown <select> or radio buttons
Lookup <select> populated from the target list
Person or Group People-picker chip widget (sp-peopleeditor)
Hyperlink / Picture URL + description fields
Taxonomy Term-store picker

Required-Field Validation

Fields marked Required display a red asterisk in the form label. Submitting without filling a required field shows a red validation message and prevents the form from posting.


Uploading Files to a Library

Via the Upload Page

  1. Navigate to a document library — e.g. /.../Lists/Documents/Forms/AllItems.aspx
  2. Click UploadFiles in the command bar, or click the Upload ribbon button.
  3. You are redirected to Upload.aspx. Choose one or more files with the file picker.
  4. Click Upload — the files are stored and you are redirected back to AllItems.

Sub-folder uploads: append ?RootFolder=%2FDocuments%2FMySubfolder to the Upload.aspx URL (or navigate into the folder first and then click Upload).

Via the File Input Widget

On the AllItems.aspx view for a library, a hidden file-input button (#modern-file-input) is attached to the command bar. Clicking the Upload command-bar button opens the OS file picker directly — no redirect.

Supported Scenarios

Scenario Supported
Single file upload
Zero-byte file
Upload into sub-folder
Upload into sub-web library
Overwrite existing file ✅ (?overwrite=true)
File with required metadata ✅ — EditForm opens automatically

Working with Folders

Creating a Folder

  1. Navigate to a document library.
  2. Click New Folder in the command bar or ribbon.
  3. A browser prompt asks for the folder name — type the name and click OK.
  4. The folder appears in AllItems. Click it to navigate inside.

Click the folder name in AllItems to open the folder context. The URL gains a ?RootFolder= parameter reflecting the folder path. The breadcrumb at the top shows the path: Library › FolderName.

Deleting a Folder

Select the folder checkbox in AllItems, then click Delete in the command bar. Confirm the browser dialog. All contents are deleted recursively.


Bulk Operations

Bulk Delete

  1. In AllItems.aspx, check the select-all checkbox (#cb-all) at the top-left of the table header to select all items on the current page, OR check individual rows.
  2. The Delete button becomes active in the command bar.
  3. Click Delete — confirm in the browser dialog — all selected items are removed.

Note: Selecting no rows keeps the Delete button hidden/disabled.

Quick Edit (Inline Grid Editing)

Inline grid editing ("Quick Edit" / "Datasheet View" in SharePoint) is not yet implemented in Cesivi. See the v1.4 backlog for planned support.


Working with Sub-Webs

Items and files in sub-web lists/libraries are stored independently from root-web content. The SPWebPath header routes requests to the correct storage scope.

Creating Items in a Sub-Web

Navigate to the sub-web AllItems URL: http://host/<subweb>/Lists/<list>/AllItems.aspx Click New — the form posts with the sub-web context automatically.

Storage Key Isolation

A list named Documents in root web and the same name in /<subweb> are fully separate. Uploading to one does NOT affect the other. (Internally, sub-web lists are keyed as webApp||site||RootWeb||<subweb>||...)


Screenshots

Screenshot Description
_docs/images/list-items-uploads/newform-text.png NewForm with text field
_docs/images/list-items-uploads/allitems-with-items.png AllItems populated
_docs/images/list-items-uploads/upload-page.png Upload.aspx

(Screenshots are captured automatically during the PLAN-1628 E2E test run and stored under L:\Cesivi\main\test-results\plan-1628\.)


Document created as part of PLAN-1628 — List Items + File Uploads E2E Verification (v1.3 PRIORITY 0 surface #3).


WCAG 2.1 AA Conformance — List Items + File Uploads

Conformance level: WCAG 2.1 AA (automated + manual) Assessment date: 2026-05-29 Assessment method: Deque axe-core 4.11 via Playwright + Windows Narrator manual pass

Automated Gates (PLAN-1640)

All 8 surface #3 routes pass axe-core with zero critical + zero serious violations and KnownAxeAcceptances = [] (no per-surface waivers):

Route Critical Serious
/Lists/{list}/NewForm.aspx 0 0
/Lists/{list}/EditForm.aspx 0 0
/Lists/{list}/DispForm.aspx 0 0
/Lists/{list}/Upload.aspx 0 0
/_layouts/15/versions.aspx 0 0
/_layouts/15/checkin.aspx 0 0
/_layouts/15/managecheckedoutfiles.aspx 0 0
/_layouts/15/recyclebin.aspx 0 0

Keyboard Navigation (15 tests GREEN)

  • Skip-nav link present and visible on focus on every route
  • Focus-visible CSS outline non-zero on all focusable elements
  • NewForm aria-invalid set on invalid submit + focus jumps to first error
  • NewForm/EditForm error role="alert" present after invalid submit
  • All form controls focusable (NewForm, EditForm, CheckIn)
  • Upload: Browse button focusable; drop zone not in tab order (mouse-only by spec)
  • Upload: progress region has aria-live="polite"
  • Versions: <th scope="col"> on every column header
  • Versions: Restore button has aria-label="Restore version N.N"
  • CheckIn: comment textarea and radio buttons accessible via keyboard
  • RecycleBin: item checkboxes have accessible names; select-all has aria-label

Screen-Reader Semantics (11 tests GREEN)

  • NewForm/EditForm: aria-invalid="true" + role="alert" + aria-describedby on invalid submit
  • EditForm: same contract on invalid submit
  • Upload: progress region has aria-live="polite"
  • Versions: <table> + <th scope="col"> + aria-current="true" on current version row
  • CheckIn: <label> association on comment textarea; fieldset/radiogroup on version-type choices
  • ManageCheckedOutFiles: <th scope="col"> on table headers
  • RecycleBin: item checkbox accessible name = item title; select-all has aria-label
  • Upload: file <input type="file"> with aria-hidden (visual widget replaces it)

Test Files

  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListItemsAndUploadsA11yTests.cs — 4 axe-core tests
  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListItemsAndUploadsKeyboardTests.cs — 15 keyboard tests
  • Cesivi.Tests.WebUI/BrowserTests/A11yTests/ListItemsAndUploadsScreenReaderTests.cs — 11 SR tests

Narrator Report

See _project/areas/a11y/list-items-and-uploads-narrator-report-1640.md.

Known Residual Issues

None. Zero waivers issued. All critical/serious violations remediated.