Virtual Pages - Source Excerpt 39
Summary
This source excerpt preserves a bounded section of 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php so readers can inspect the evidence without opening the full source file.
**Source path:** 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php
switch ( $slug ) {
case 'start-here':
twoia_render_start_here_portal();
return true;
case 'issues':
twoia_render_issues_portal();
return true;
case 'research':
twoia_render_research_portal();
return true;
case 'resources':
twoia_render_resources_portal();
return true;
case 'organizations':
twoia_render_organizations_portal();
return true;
case 'methodology':
twoia_render_methodology_portal();
return true;
case 'about':
twoia_render_about_portal();
return true;
case 'support':
twoia_render_support_portal();
return true;
case 'lexicon':
twoia_render_lexicon_portal();
return true;
}
return false;
}
/**
* Render compact link cards.
*
* @param array $cards Card definitions.
* @param string $class Extra class.
*/
function twoia_render_ia_cards( $cards, $class = '' ) {
$classes = 'twoia-dossier-grid twoia-ia-grid';
if ( $class ) {
$classes .= ' ' . sanitize_html_class( $class );
}
?>
<div class="<?php echo esc_attr( $classes ); ?>">
<?php foreach ( $cards as $card ) : ?>
<?php $tag = ! empty( $card['url'] ) ? 'a' : 'article'; ?>
<<?php echo esc_html( $tag ); ?> class="briefing-panel briefing-panel--compact twoia-dossier-card<?php echo ! empty( $card['url'] ) ? ' twoia-dossier-card--link' : ''; ?>"<?php echo ! empty( $card['url'] ) ? ' href="' . esc_url( $card['url'] ) . '"' : ''; ?>>
<?php if ( ! empty( $card['label'] ) ) : ?>
<span class="metadata-label"><?php echo esc_html( $card['label'] ); ?></span>
<?php endif; ?>
<h3><?php echo esc_html( $card['title'] ); ?></h3>
<p><?php echo esc_html( $card['body'] ); ?></p>
<?php if ( ! empty( $card['meta'] ) ) : ?>
<p><strong><?php echo esc_html( $card['meta'] ); ?></strong></p>
<?php endif; ?>
</<?php echo esc_html( $tag ); ?>>
<?php endforeach; ?>
</div>
<?php
}
/**
* Start Here path cards.
*
* @return array
*/
function twoia_start_here_path_cards() {
return array(
array(
'title' => __( 'I want to understand the issues', 'two-identities-anonymous' ),
'body' => __( 'Start with the permanent map of surveillance, metadata, AI scoring, records access, anonymity, press freedom, due process, influence, intelligence power, and domestic weaponization.', 'two-identities-anonymous' ),
'url' => home_url( '/issues/' ),
'meta' => __( 'Go to Issues', 'two-identities-anonymous' ),
),
array(
'title' => __( 'I want to read investigations and analysis', 'two-identities-anonymous' ),
'body' => __( 'Use Research for investigations, case studies, historical analysis, policy work, intelligence-apparatus research, public-records files, and updates.', 'two-identities-anonymous' ),
'url' => home_url( '/research/' ),
'meta' => __( 'Go to Research', 'two-identities-anonymous' ),
),
array(
'title' => __( 'I need practical resources or templates', 'two-identities-anonymous' ),
'body' => __( 'Use Resources for records requests, copy-ready language, checklists, OSINT literacy, glossary entries, and defensive privacy habits.', 'two-identities-anonymous' ),
'url' => home_url( '/resources/' ),
'meta' => __( 'Go to Resources', 'two-identities-anonymous' ),
),
array(
'title' => __( 'I’m looking for organizations fighting for civil liberties', 'two-identities-anonymous' ),
'body' => __( 'Use the directory to find civil-liberties, digital-rights, press-freedom, privacy, public-records, investigative, and accountability organizations by role and issue.', 'two-identities-anonymous' ),
'url' => home_url( '/organizations/' ),
'meta' => __( 'Go to Organizations', 'two-identities-anonymous' ),
),
array(
'title' => __( 'I want to understand how 2IA verifies claims', 'two-identities-anonymous' ),
'body' => __( 'Read the evidence ladder, source classes, confidence labels, AI-use disclosure, corrections policy, right-of-reply process, and minimization posture.', 'two-identities-anonymous' ),
'url' => home_url( '/methodology/' ),
'meta' => __( 'Go to Methodology', 'two-identities-anonymous' ),
),
array(
'title' => __( 'I want to support or volunteer', 'two-identities-anonymous' ),
'body' => __( 'Support funds research, records work, document review, infrastructure, resources, and directory maintenance without betraying the low-data promise.', 'two-identities-anonymous' ),
'url' => home_url( '/support/' ),
'meta' => __( 'Go to Support', 'two-identities-anonymous' ),
),
);
}
/**
* Render the Start Here page.
*/
function twoia_render_start_here_portal() {
?>
<section class="section section--compact twoia-ia-section" aria-labelledby="twoia-start-direct-title">
<header class="section-header">
<p class="eyebrow"><?php esc_html_e( 'Direct orientation', 'two-identities-anonymous' ); ?></p>
<h2 id="twoia-start-direct-title"><?php esc_html_e( 'What 2IA is for', 'two-identities-anonymous' ); ?></h2>
<p><?php esc_html_e( '2IA helps readers turn unease about surveillance, institutional secrecy, AI flags, anonymous speech, public records, and intelligence power into a sharper question, a document trail, and a lawful next move.', 'two-identities-anonymous' ); ?></p>
</header>
<?php twoia_render_ia_cards( twoia_start_here_path_cards(), 'twoia-path-grid' ); ?>
</section>
<?php get_template_part( 'template-parts/section', 'who-cares-wizard' ); ?>
<section class="section section--compact twoia-ia-section" aria-labelledby="twoia-start-covers-title">
<header class="section-header">
<p class="eyebrow"><?php esc_html_e( 'Coverage map', 'two-identities-anonymous' ); ?></p>
<h2 id="twoia-start-covers-title"><?php esc_html_e( 'What 2IA covers', 'two-identities-anonymous' ); ?></h2>
</header>
<?php
twoia_render_ia_cards(
array(
array( 'title' => __( 'Surveillance and metadata', 'two-identities-anonymous' ), 'body' => __( 'Systems that collect, retain, correlate, search, sell, or score people through devices, accounts, location, transactions, relationships, and public-source context.', 'two-identities-anonymous' ) ),
array( 'title' => __( 'AI flags and automated suspicion', 'two-identities-anonymous' ), 'body' => __( 'Risk scores, watchlists, classifiers, sentiment tools, fraud models, tenant screens, school monitoring, and systems that turn inference into consequence.', 'two-identities-anonymous' ) ),
array( 'title' => __( 'Public records and FOIA', 'two-identities-anonymous' ), 'body' => __( 'Contracts, policies, budgets, audits, training, complaint logs, appeal letters, procurement files, court records, and the slow paperwork of accountability.', 'two-identities-anonymous' ) ),
array( 'title' => __( 'OSINT, SIGINT, and intelligence history', 'two-identities-anonymous' ), 'body' => __( 'Public-source verification, signals infrastructure at an analytical level, declassified records, proxy networks, soft power, information operations, and the history of intelligence institutions.', 'two-identities-anonymous' ) ),
array( 'title' => __( 'Anonymity, press freedom, and civil liberties', 'two-identities-anonymous' ), 'body' => __( 'The right to read, write, organize, research, report, worship, recover, and dissent without automatic profiling or exposure by default.', 'two-identities-anonymous' ) ),
array( 'title' => __( 'Domestic weaponization and due process', 'two-identities-anonymous' ), 'body' => __( 'How security systems can be turned inward against dissent, journalists, researchers, minorities, political opponents, and ordinary people trapped by opaque files.', 'two-identities-anonymous' ) ),
)
);
?>
</section>