IPMI · Website operations · Version 1.1 · 26 October 2026

One website.
Two editing paths.

A practical handoff for an AI agent working through cPanel Terminal and a human editor working in Joomla Administrator.

Verified against Joomla 6.2.0, SP Page Builder Pro 6.10.0, and the current IPMI template. This guide covers /new-site/, the preview website. The older website outside that directory is a separate installation.

Start here on another computer

Download the package and give the new agent AGENT-INSTRUCTIONS.txt, or share this guide URL. The agent does not need the original computer, its browser tab IDs, or its local project files.

The ZIP includes this offline HTML guide, screenshots, the terminal helper as a text file, and an unpublished article example. Unzip it and open index.html. Store credentials in the receiving computer’s approved password manager, not in the guide or agent prompt.

Copy this assignment to the next AI agent
You are maintaining the IPMI preview website at
https://intercessoryprayerministry.org/new-site/.
Read the IPMI website operations guide before making changes.
Use the owner's authorized cPanel session and its Terminal interface.
The separate Joomla Administrator workflow is for human editors.
Do not change the legacy site outside /new-site/.
Discover the current inventory; do not assume old IDs remain unchanged.
Use the installed CLI-only editor for normal articles and existing page layouts.
Keep new posts unpublished unless the owner requests publication.
Preserve URLs, Joomla assets/history, SP Page Builder JSON, and human editability.
Back up before edits, respect checked-out records, and verify results.
Never copy credentials, cPanel session URLs, or private backups into public files.
Report changed IDs/URLs, status, validation, and backup location.
My requested work is: [insert the owner's specific request].

1. Website structure and editing destinations

Articles are the regular posts. Each post has one category, an introduction, a full body, images, a status, and publishing dates. SP Page Builder pages are the designed landing pages. They contain text/image sections and modules that pull articles automatically. Do not paste every new post into the homepage or create a new menu item for each post.

Joomla Articles
News · Devotions · Alerts · Resources
→
Category pages
Complete archive and pagination
+
Dynamic modules
Cards on Home and Prayer Resources

Where to publish each kind of post

ContentHuman categoryTerminal category alias / IDWhere readers find it
Ministry updates, reports, announcementsIPMI Journal → Ministry Newsministry-news · 8News → Ministry news; eligible for homepage cards
Daily devotional teachingIPMI Journal → Daily Devotionsreflections · 9News → Daily Devotions; eligible for Home and Prayer Resources cards
Current prayer needs and urgent alertsIPMI Journal → Prayer Alertsprayer-alerts · 10News → Prayer alerts; Prayer Resources alert cards
Prayer guides, fasting materials, teaching and downloadsIPMI Journal → Prayer Resourcesprayer-resources · 11Prayer Resources and Browse all prayer resources

Keep the existing aliases. “Daily Devotions” intentionally retains reflections in the category and URL. Prayer Resources retains /prayer. This preserves existing links. The News “All posts” view includes all four categories, including resources, although Resources is no longer a News tab. Daily Devotions is a category name; it does not automatically create one post each day.

Landing pages, navigation, and supporting pages

Page / URLEditing sourceKnown IDNotes
Home · /new-site/SP Page Builder1 / menu 101Hero, ministry sections, destination cards, event and story modules. May be checked out by an editor; never force-overwrite.
About IPMI · /aboutSP Page Builder2 / 109History, purpose and ministry story.
Our Ministry · /ministrySP Page Builder3 / 110Ministry activities and programme information.
News & Prayer Alerts · /newsJoomla category blog, category 12menu 111Do not edit SP Page Builder page 4 to post news. It is an older unused page; the active menu uses Joomla Articles.
Prayer Resources · /prayerSP Page Builder5 / 112Original Prayer content, alerts, resource/devotion cards, gatherings and Prayer Wall links. Full resource archive: menu 123.
EventsExternal websitemenu 113Links to https://ipmievents.org/upcoming. Its posts and registration are maintained separately.
Give · /giveSP Page Builder + template + Realm8 / 114Give buttons open the Giving page, with the Realm form embedded beside the introduction.
Leadership & Governance · /leadershipSP Page Builder6 / 115Footer supporting page.
Charitable Status · /charitable-statusSP Page Builder7 / 116Keep official documentation accurate; attach approved PDFs.
Contact · /contactSP Page Builder + template footer9 / 117If contact details change, update both the page and shared footer.
Privacy · /privacySP Page Builder10 / 118Use owner-approved policy text.
Search · /searchJoomla Smart Searchmenu 124Reindex after structural or substantial page edits if results are stale.

Short URLs in this table are relative to /new-site. IDs are a snapshot, not a substitute for checking the live inventory.

Prayer Resources landing page with main navigation and original prayer information
Prayer Resources combines the landing-page information with dynamically loaded articles. Click any screenshot to view it full size.

What appears automatically

ModuleContent and behaviour
112 · Upcoming IPMI EventsUp to 3 items from https://ipmievents.org/upcoming?format=feed&type=rss. The current parser uses each RSS item's pubDate as its date and keeps future dates. A missing card may therefore be a feed/date issue. Feed refresh: roughly 5 minutes; fallback cache: up to 1 hour.
113 · Featured journal storiesUp to 3 published, public articles from Ministry News, Daily Devotions and Prayer Resources. Featured articles sort first, then newest publication date and ID. This is not a featured-only filter. Prayer Alerts are excluded.
114 · Journal storiesUp to 9 from all four categories; used where this module is embedded. The current News page itself uses the native category blog.
115 · Current prayer alertsUp to 3 Prayer Alerts; an empty-state message appears when none are currently eligible.
116 · Prayer resourcesUp to 6 Prayer Resources and Daily Devotions articles, featured first. The archive link exposes the full resource category.

Dynamic cards require: article Published, Public access, published/public category and ancestors, a matching language, a start time that has arrived, and no past finish time. A new non-featured post may sit behind older featured posts. These modules use the article’s Intro Image and introduction, not an arbitrary image inserted into the body.

2. AI agent workflow — cPanel Terminal

This is the primary route for an agent. All server commands run in the authenticated cPanel Terminal inside Firefox. Joomla Administrator does not need to be open. A PHP helper loads Joomla locally and saves articles through Joomla’s own article model; it does not automate the administrator UI.

Access from a different computer

  1. Ask the owner to provide authorized hosting access separately. Sign in at https://my.hosting.com/, open the hosting account, and choose Login to Control Panel; or use https://s19639.use2.stableserver.net:2083/ if direct cPanel login is enabled.
  2. In cPanel, search for Terminal and open it. The shell prompt is the backend access. Keep this tab open throughout the task.
  3. If the agent controls Firefox through an automation connector, attach to that computer’s existing signed-in profile. The earlier connector used local port 9223. A normal Firefox launch does not enable it. Use the receiving computer’s approved existing-profile launcher. Do not copy the original computer’s profile paths or assume a cPanel session survives a restart.
  4. Never reuse a saved /cpsess…/ URL. Each login has its own session path. If redirected to login, have the owner authenticate again.
  5. Run the setup and inventory commands below. If an ID, path, or version differs, inspect the live site before changing it.
export IPMI_SITE=/home/ipmievents/intercessoryprayerministry.org/new-site
export IPMI_EDITOR='YOUR_AUTHORIZED_JOOMLA_USERNAME'
export IPMI_TOOL=/home/ipmievents/ipmi-rebuild-private/editor-guide/ipmi-editor.php
cd "$IPMI_SITE"
pwd
php -v
php -l "$IPMI_TOOL"
php "$IPMI_TOOL" inventory

IPMI_EDITOR is the real Joomla account whose permissions and authorship the helper uses. Obtain its username from the owner. The helper requires host filesystem access and an authorized, unblocked administrator account; it is not an unauthenticated website endpoint. It reads the existing server configuration internally and never needs a database password copied into a command.

Authenticated cPanel Terminal showing the IPMI editor commands
Agent route: cPanel → Terminal → PHP helper. This is separate from the human administrator route.

Installed helper and portable copy

The helper is already installed at the path above, outside the public web directory. If it is missing after a migration, review the downloaded ipmi-editor.php.txt, compare its SHA-256 checksum, upload it to the private directory, rename it ipmi-editor.php, set file permissions to 600, then run php -l. Do not put executable maintenance scripts, backups, or credentials under /new-site. The public download has a .txt suffix intentionally.

Back up before work

The helper makes record backups before article and page saves. For a maintenance session, also save a full database export and the relevant site files outside the website:

umask 077
export IPMI_BACKUP="/home/ipmievents/ipmi-rebuild-private/editor-guide/session-$(date -u +%Y%m%d-%H%M%S)"
mkdir -p "$IPMI_BACKUP"
php cli/joomla.php database:export --folder="$IPMI_BACKUP" --zip
tar -czf "$IPMI_BACKUP/site-customizations.tar.gz" templates/ipmi modules/mod_ipmi_content
php "$IPMI_TOOL" inventory > "$IPMI_BACKUP/inventory.json"

Check exit codes and confirm the backup files exist before editing. Add any affected image folders to your backup when replacing assets. Keep the backup private.

Create a news post, devotion, alert or resource

  1. Work in the private guide directory. Copy article-example.json to a new filename and replace every placeholder with approved content.
  2. Choose the category alias from section 1. Supply a unique lowercase, hyphenated alias. Use id: 0 only for a genuinely new article.
  3. Write a short HTML summary in introtext and the remainder in fulltext. Use headings beginning at h2; Joomla supplies the article title. The helper inserts the Read More separator automatically.
  4. Leave state: 0 for an unpublished draft. Set state: 1 only when the owner has requested publication. For scheduling, use state 1 plus a future UTC publish_up.
  5. Set featured: 1 only when the post should get priority in eligible card modules. This does not pin it forever or make a Prayer Alert appear on the homepage.
  6. Upload images first, then supply their images/… paths and alternative text. Save and record the returned article ID.
cd /home/ipmievents/ipmi-rebuild-private/editor-guide
# Create or upload my-post.json using article-example.json as the structure.
php "$IPMI_TOOL" article-save my-post.json
php "$IPMI_TOOL" inventory
Example article JSON — starts unpublished
{
  "id": 0,
  "category": "reflections",
  "title": "An approved devotion title",
  "alias": "an-approved-devotion-title",
  "introtext": "<p>The short introduction shown on cards.</p>",
  "fulltext": "<h2>Scripture and reflection</h2><p>Approved teaching goes here.</p>",
  "state": 0,
  "featured": 0,
  "access": 1,
  "language": "*",
  "created_by_alias": "IPMI Editorial",
  "publish_up": null,
  "publish_down": null,
  "metadesc": "A short description of the devotion.",
  "images": {
    "image_intro": "",
    "image_intro_alt": "",
    "image_fulltext": "",
    "image_fulltext_alt": ""
  }
}

Edit, publish, schedule, unpublish or retire an existing post

# Replace 123 with the actual ID returned by inventory.
# Use a NEW export filename each time.
php "$IPMI_TOOL" article-export 123 post-edit-01.json
# Edit only the intended fields; retain id and source_hash.
php "$IPMI_TOOL" article-save post-edit-01.json
OperationJSON changes
Publish nowstate: 1; set publish_up to the intended UTC time and publish_down to null unless an expiry is needed.
Schedule a devotionstate: 1 and a future publish_up. Repeat with a separate article per day. No scheduler or cron job is needed for standard Joomla date visibility.
Expire an alertSet publish_down to the UTC finish time, later than its start. It remains editable afterward.
Unpublishstate: 0. The article remains in Joomla for future editing.
Archive / Trashstate: 2 / state: -2. Prefer these to deleting records directly.

Dates in the helper must be YYYY-MM-DD HH:MM:SS in UTC or null. The site’s configured display timezone is America/New_York; Joomla administrator/user settings may display local times. Convert with the date’s daylight-saving offset, not a fixed year-round offset.

Exports contain a source_hash. If the record changes after export, the helper stops. Export a fresh copy and merge your edits. Do not invent a new hash or resubmit the same new-article JSON after an uncertain save. Inspect inventory first to avoid duplicates. Checked-out records are refused; ask the human editor to Save & Close or Cancel.

Images, PDFs, and other resources

Use images/ipmi/posts/ for article images and images/ipmi/resources/ for approved PDFs. Create these directories if needed. Use descriptive filenames, optimized web images, and suitable alt text. Avoid personal or sensitive prayer details unless the owner has permission to publish them.

mkdir -p "$IPMI_SITE/images/ipmi/posts" "$IPMI_SITE/images/ipmi/resources"
# Upload approved files using cPanel File Manager or an owner-approved transfer.
# A terminal can also download an exact, trusted asset URL supplied by the owner:
# curl --fail --location 'APPROVED_HTTPS_ASSET_URL' --output "$IPMI_SITE/images/ipmi/posts/example.jpg"
file "$IPMI_SITE/images/ipmi/posts/example.jpg"

The final file command applies only after uploading the named image; replace the example path. Confirm the actual file type. The helper validates that referenced article images exist under the Joomla images/ directory. For PDF downloads, link from article HTML, for example <a href="/new-site/images/ipmi/resources/prayer-guide.pdf">Download the prayer guide (PDF)</a>. Do not upload PHP or other executable content into media folders.

Edit an existing designed page through the terminal

# Prayer Resources is currently page ID 5.
php "$IPMI_TOOL" page-export 5 prayer-edit-01.json
# Edit the intended text/image/link inside layout, preserving section/addon IDs.
php "$IPMI_TOOL" page-save prayer-edit-01.json

The export contains id, source_hash, title, and layout. Typical text lives at layout → section → columns → addons → settings → text. Module addons refer to existing module IDs such as 115 and 116. Keep addon names, IDs, settings, classes, widths and module references intact. The page helper is for content/layout edits of existing pages; it deliberately preserves the page title, publication status, metadata and menu relationship.

SP Page Builder stores both text and content. The helper writes both together. Editing only one can leave the public page or visual editor out of sync. If the two differ before export, the helper refuses to overwrite an existing draft: resolve that draft with its editor first. Page saves use a private backup and a database transaction. They do not create an SP Page Builder revision or automatically guarantee Smart Search indexing; use the saved backup and verify search after substantial changes.

Shared layout and code changes

For technical maintenance beyond posting, inspect and back up the affected file, make a narrow change, lint PHP, then check the page in Firefox. Avoid editing Joomla core or vendor files.

Location relative to the site rootPurpose
templates/ipmi/index.phpShared header, top-level menu, footer, preview banner, asset registration, and Realm loader. Give menu/footer links lead to the Giving page.
templates/ipmi/css/site.cssTypography, responsive layout, navigation, cards and page styles.
templates/ipmi/js/site.jsMobile menu, sticky header, donation-link normalization and Realm new-tab fallback.
templates/ipmi/html/com_content/category/blog.phpCategory navigation tabs. News has All posts, Ministry news, Prayer alerts, Daily Devotions. The resources archive gets its own navigation.
modules/mod_ipmi_content/Dynamic event/article cards, sorting and visibility rules. Module parameters are stored in Joomla.
images/ipmi/Ministry images, logos and uploaded media.
php -l templates/ipmi/index.php
php -l templates/ipmi/html/com_content/category/blog.php
php cli/joomla.php cache:clean
# After substantial content changes, if search results need refreshing:
php cli/joomla.php finder:index

After CSS/JS changes, increment the asset version registered in the template to prevent stale browser caches. Do not use a global site rebuild/seed script for normal editing: older scripts contain the previous labels and could undo current changes. The installed seed.php is not a publishing tool.

Menus, modules, and advanced changes

Use the inventory to discover actual IDs. For new navigation or categories, use Joomla’s Menu/Category Table APIs, set the parent with setLocation(), then bind(), check(), store(), and rebuild the path/tree as appropriate. Never hand-edit nested-set lft/rgt values or directly insert bare article rows. New menu items also need the correct component ID, link, menutype, language, access and parameters. The helper intentionally does not automate structural creation; plan and validate these less frequent changes separately, or use the human menu workflow.

For article posting and existing page text/image edits, the helper covers the normal workflow without visiting the administrator. Hosting, extension upgrades, new components and external services require their own checks and owner authorization.

3. Human workflow — Joomla Administrator

Sign in at /new-site/administrator/ using your own Joomla credentials. This account is separate from your hosting account. The agent’s posts are normal Joomla articles, so you can open, edit and publish them here.

Post to any of the four sections

  1. Open Content → Articles → New, or choose an existing article from the list.
  2. Enter a clear Title. For a new article, let Joomla generate an alias or enter a short unique alias. For an existing published article, keep its alias unless you have a redirect plan.
  3. Select the correct Category: Ministry News, Daily Devotions, Prayer Alerts, or Prayer Resources, under IPMI Journal. Do not leave regular posts in Uncategorised or the Journal parent.
  4. Write a short introduction, insert Read More from the editor’s CMS Content menu, and write the full article afterward. Format body sections as Heading 2 / Heading 3. Avoid pasting document formatting that changes the site’s fonts and colours.
  5. Open Images and Links. Set an Intro Image for cards and a Full Article Image if needed. Add descriptive alt text. Upload through the image selector or Content → Media. A body image alone does not supply the card thumbnail.
  6. Set Status to Unpublished while drafting. When ready, choose Published. Keep Access: Public. Use Featured = Yes only if homepage/resource-card priority is intended.
  7. Open Publishing to set Start Publishing, Finish Publishing, author alias and meta description. Confirm the administrator/user timezone before scheduling.
  8. Choose Save & Close. Open the appropriate public category link from section 1 in a separate tab and verify the article, image, author, dates and links.
Joomla Articles list showing Ministry News, Daily Devotions and Prayer Resources categories
Content → Articles is the starting point for all regular posts. The category determines the section.
Joomla New Article screen with title, editor, category, status and publishing tabs
The article editor: title and body on the left, category/status on the right, Images and Links and Publishing tabs above.

Edit Home, About, Our Ministry, Prayer Resources and footer pages

  1. Open Components → SP Page Builder → Pages.
  2. Find the page title/ID from section 1 and open its editor. The exact editor controls can vary with the installed builder version.
  3. Edit the existing Text Block, Image, Button or relevant addon. Keep page sections and global CSS classes intact.
  4. For a section of automatic article cards, create/edit the article in Content → Articles. Do not replace the module with pasted articles.
  5. Use the builder’s save/publish controls and exit the editor normally. Verify the public page afterward. If another editor has the page open, coordinate before editing.
SP Page Builder Pages list with page names and IDs
Components → SP Page Builder → Pages. The older News & Prayer Alerts page (ID 4) is not the active News menu destination.

Media, menus, modules and editor locks

4. Donations and external services

Realm inline giving form

Giving destination: https://onrealm.org/IntercessoryPrayerministry/give/now. Loader: https://onrealm.org/Assets/Embed/giving-embed-loader.js. The Giving page uses the supplied data-embed-giving-form-url div and loader to render the form inline beside the introduction. The layout stacks on smaller screens. Preserve the embed container and use the IPMI Realm destination; do not replace it with another ministry’s payment link.

The shared template and JavaScript route donation calls to action to /new-site/give. That is SP Page Builder page 8. Its two-column hero contains introductory text and the inline form, followed by other ways to give. A button below the form offers Open secure giving in a new tab, because Firefox reported a payment-provider frame blocked by its embedding policy during validation. That restriction is controlled by Realm/payment-provider response headers, not by Joomla CSS. Do not disable browser security to work around it.

Changes to funds, recurring-payment options, receipts, payment processing and donor records belong in the authorized Realm account. They are not website article edits. Test only form loading and navigation unless the owner explicitly authorizes a payment test; never submit an unintended donation.

IPMI Giving page with the Realm form beside the introduction and other giving options below
The current Giving page: inline Realm form, with a direct-giving fallback below it.

Events, Prayer Wall and IPMI TV

5. Verification, rollback and troubleshooting

After every post

  1. Confirm the returned ID and status. For updates, ensure you changed the intended record, not a new duplicate.
  2. Check the category page, full article, thumbnail, Read More boundary, author alias, publication time, and any download links.
  3. For homepage/resource cards, check category eligibility, featured ordering and the card limit. Check the archive even when a new article is below the card limit.
  4. Verify desktop and a narrow mobile viewport. Test the menu and links. A draft should not appear publicly.
  5. Record the ID, URL, category, status, scheduled times, backup path and checks in the handoff. Keep any sensitive operational log private.

Rollback without losing Joomla compatibility

Article edits have Joomla history enabled on this installation. A human can use Versions where available, select the correct revision and restore it, then verify status/dates. The terminal helper also saves full before-record JSON in its private backups/ directory. These are recovery records, not files to serve publicly.

For a terminal article rollback: export the current article to get a fresh source_hash, copy only the intended old title/body/images/category/status/date fields from the backup into that export, then run article-save. For a page rollback: export the current page, replace layout with the JSON-decoded content from the selected page backup, retain the fresh hash, and run page-save. Keep IDs unchanged. If other edits happened after the backup, merge rather than restoring the entire old record blindly.

For template files, restore only the affected file from the session backup, lint PHP and recheck the public page. A full database import affects the whole site; use it only for a coordinated recovery with the owner, not as a routine way to undo one post.

SymptomCheck / remedy
Firefox connector refuses connectionThe existing browser may not have automation enabled. Have the owner exit it, then use the approved launcher for the same profile. Do not repeatedly reopen ordinary Firefox and expect port 9223 to appear.
cPanel terminal no longer availableReauthenticate through hosting/cPanel and open a fresh Terminal tab; expired session paths cannot be reused.
Article absent publiclyPublished status, Public access, dates in UTC, language, correct category, category visibility, then cache. Drafts and expired alerts are intentionally absent.
New post absent from homepageOnly 3 eligible stories; featured posts sort first. Prayer Alerts are not in that module. Verify the full category archive.
Page title changed but body did notSP Page Builder has both text and content. Use page-export/page-save rather than updating one column.
News edits have no effectThe News menu uses the Joomla category blog, not the old Page Builder page 4.
Helper says record changed / checked outCoordinate with the editor, export again, and merge. Do not bypass the check.
Helper fails after an upgradeStop and inspect before retrying. It was tested with the versions in this guide. It includes the SP Page Builder autoload dependency needed for article saves. Check inventory before retrying an uncertain creation.
Image absent from cardSet Intro Image, verify the local images/ path exists and is public, and check the URL. A full article image or body image alone is insufficient.
Search misses updated pageUse Joomla Smart Search → Index or the verified finder:index CLI command; check the result. Do not assume direct Page Builder writes triggered every indexing plugin.
Donations do not advance inside the embedded formUse the direct new-tab option and report the embedding issue to Realm. No payment processing is implemented by the local website.

Preview versus production

The current site has a preview bar and noindex settings. This manual does not remove those or move the preview to the domain root. Launching is a separate task involving backups, redirects, base URLs, media links, search settings and verification. Never overwrite the older root installation as part of posting an article.

6. Keep this handoff current

Guide location: /new-site/site-guide/. Hidden link: the shared footer in templates/ipmi/index.php. Private helper: /home/ipmievents/ipmi-rebuild-private/editor-guide/ipmi-editor.php. The hidden link is discovery convenience for the next agent, not access control. The directory has noindex headers and directory listing disabled.

When changing menu/category aliases, page IDs, modules, external destinations or publishing workflows, update the guide, screenshots, plain-text instructions and ZIP together. Regenerate checksums. Never put the private helper’s backups, test files, credentials or inventory exports into the public download package.

Validation record

This is a site-specific guide, not a promise that arbitrary future extensions, separate websites or provider APIs behave the same way. Inspect the live inventory and permissions at the start of each session.