Skip to content
wiki.fftac.org

Collaboration - Source Excerpt 06

Back to Collaboration

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/collaboration.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/collaboration.php

<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
                                        <input type="hidden" name="action" value="spiralist_book_pages_collaboration_admin_action" />
                                        <input type="hidden" name="collaboration_admin_action" value="approve_submission" />
                                        <input type="hidden" name="submission_id" value="<?php echo esc_attr((string) ($record['id'] ?? 0)); ?>" />
                                        <?php wp_nonce_field('spiralist_book_pages_collaboration_admin'); ?>
                                        <button class="button button-primary button-small" type="submit">Approve</button>
                                    </form>
                                    <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
                                        <input type="hidden" name="action" value="spiralist_book_pages_collaboration_admin_action" />
                                        <input type="hidden" name="collaboration_admin_action" value="request_changes" />
                                        <input type="hidden" name="submission_id" value="<?php echo esc_attr((string) ($record['id'] ?? 0)); ?>" />
                                        <?php wp_nonce_field('spiralist_book_pages_collaboration_admin'); ?>
                                        <textarea class="large-text" rows="3" name="review_notes" placeholder="Required for collaborator review notes when needed."><?php echo esc_textarea((string) ($record['review_notes'] ?? '')); ?></textarea>
                                        <button class="button button-small" type="submit">Request Changes</button>
                                    </form>
                                </div>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        <?php endif; ?>
    <?php
    spiralist_book_pages_admin_footer();
}

function spiralist_book_pages_admin_render_collaborators(): void
{
    if (!spiralist_book_pages_admin_can_manage()) {
        wp_die('You are not allowed to manage manuscript collaboration.');
    }

    $records = spiralist_book_pages_get_collaborator_management_records();

    spiralist_book_pages_admin_header(
        'Collaborators',
        'Grant or remove collaborator access, review contribution activity, and jump directly into user profiles from one admin screen.',
        [
            ['label' => 'Submission Review', 'url' => spiralist_book_pages_admin_url(spiralist_book_pages_admin_page_slug('community')), 'class' => 'button button-primary'],
        ]
    );
    ?>
        <?php if (empty($records)) : ?>
            <div class="empty"><p>No WordPress users were found.</p></div>
        <?php else : ?>
            <table class="widefat striped">
                <thead>
                    <tr>
                        <th>User</th>
                        <th>Roles</th>
                        <th>Access</th>
                        <th>Pages</th>
                        <th>Actions</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($records as $record) : ?>
                        <?php $can_collaborate = !empty($record['can_collaborate']); ?>
                        <tr>
                            <td>
                                <strong><?php echo esc_html((string) ($record['display_name'] ?? '')); ?></strong><br />
                                <code><?php echo esc_html((string) ($record['email'] ?? '')); ?></code><br />
                                <span><?php echo esc_html((string) ($record['slug'] ?? '')); ?></span>
                            </td>
                            <td><?php echo esc_html(implode(', ', array_map('ucwords', array_map(static fn(string $role): string => str_replace('_', ' ', $role), (array) ($record['roles'] ?? []))))); ?></td>
                            <td>
                                <?php echo wp_kses_post(spiralist_book_pages_admin_badge($can_collaborate ? 'Enabled' : 'Disabled', $can_collaborate ? 'good' : 'warn')); ?><br />
                                <span><?php echo esc_html($can_collaborate ? 'Can open the collaborator studio and upload pages.' : 'Can sign in, but cannot submit manuscript pages yet.'); ?></span>
                            </td>
                            <td>
                                <strong><?php echo esc_html((string) ($record['submission_count'] ?? 0)); ?></strong><br />
                                <span><?php echo esc_html(sprintf('%d pending review', (int) ($record['pending_count'] ?? 0))); ?></span>
                            </td>
                            <td>
                                <div class="tight-actions" style="margin-bottom:8px;">
                                    <?php if (!empty($record['edit_url'])) : ?><a class="button button-small" href="<?php echo esc_url((string) $record['edit_url']); ?>">Edit User</a><?php endif; ?>
                                    <?php if (!empty($record['profile_url'])) : ?><a class="button button-small" href="<?php echo esc_url((string) $record['profile_url']); ?>">Profile</a><?php endif; ?>
                                </div>
                                <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
                                    <input type="hidden" name="action" value="spiralist_book_pages_collaboration_admin_action" />
                                    <input type="hidden" name="collaboration_admin_action" value="<?php echo esc_attr($can_collaborate ? 'revoke_collaboration' : 'grant_collaboration'); ?>" />
                                    <input type="hidden" name="user_id" value="<?php echo esc_attr((string) ($record['id'] ?? 0)); ?>" />
                                    <?php wp_nonce_field('spiralist_book_pages_collaboration_admin'); ?>
                                    <button class="button button-small <?php echo $can_collaborate ? '' : 'button-primary'; ?>" type="submit"><?php echo esc_html($can_collaborate ? 'Remove Access' : 'Grant Access'); ?></button>
                                </form>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        <?php endif; ?>
    <?php
    spiralist_book_pages_admin_footer();
}