Habari\AdminCommentsHandler::form_comment PHP Method

form_comment() public method

Construct a form for a comment.
public form_comment ( $comment, $actions ) : FormUI
return FormUI The comment's form.
    public function form_comment($comment, $actions)
    {
        $form = new FormUI('comment');
        // Create the top description
        $top = $form->append(FormControlWrapper::create('buttons_1', null, array('class' => array('container', 'buttons', 'comment', 'overview'))));
        $top->append(FormControlStatic::create('overview', null)->set_static($this->theme->fetch('comment.overview')));
        $buttons_1 = $top->append(FormControlWrapper::create('buttons_1', null, array('class' => array('item', 'buttons'))));
        foreach ($actions as $status => $action) {
            $id = $action . '_1';
            $buttons_1->append(FormControlSubmit::create($id, null, array('class' => array('status', 'button', $action)))->set_caption(MUltiByte::ucfirst(_t($action))));
            if (Comment::status_name($comment->status) == $status) {
                $buttons_1->{$id}->add_class('active');
                $buttons_1->{$id}->set_properties(array('disabled' => true));
            } else {
                $buttons_1->{$id}->set_properties(array('disabled' => false));
            }
        }
        // Content
        $form->append(FormControlWrapper::create('content_wrapper'));
        $form->content_wrapper->append(FormControlLabel::wrap(_t('Comment'), FormControlTextArea::create('content', null, array('class' => 'resizable'))->set_value($comment->content)));
        // Create the splitter
        $comment_controls = $form->append(FormControlTabs::create('comment_controls'));
        // Create the author info
        $author = $comment_controls->append(FormControlFieldset::create('authorinfo')->set_caption(_t('Author')));
        $author->append(FormControlLabel::wrap(_t('Author Name'), FormControlText::create('author_name')->set_value($comment->name)));
        $author->append(FormControlLabel::wrap(_t('Author Email'), FormControlText::create('author_email')->set_value($comment->email)));
        $author->append(FormControlLabel::wrap(_t('Author URL'), FormControlText::create('author_url')->set_value($comment->url)));
        $author->append(FormControlLabel::wrap(_t('IP Address:'), FormControlText::create('author_ip')->set_value($comment->ip)));
        // Create the advanced settings
        $settings = $comment_controls->append(FormControlFieldset::create('settings')->set_caption(_t('Settings')));
        $settings->append(FormControlLabel::wrap(_t('Date:'), FormControlText::create('comment_date')->set_value($comment->date->get('Y-m-d H:i:s'))));
        $settings->append(FormControlLabel::wrap(_t('Post ID:'), FormControlText::create('comment_post')->set_value($comment->post->id)));
        $statuses = Comment::list_comment_statuses(false);
        $statuses = Plugins::filter('admin_publish_list_comment_statuses', $statuses);
        $settings->append(FormControlLabel::wrap(_t('Status'), FormControlSelect::create('comment_status')->set_options($statuses)->set_value($comment->status)));
        // // Create the stats
        // $comment_controls->append('fieldset', 'stats_tab', _t('Stats'));
        // $stats = $form->stats_tab->append('wrapper', 'tags_buttons');
        // $stats->class = 'container';
        //
        // $stats->append('static', 'post_count', '<div class="container"><p class="pct25">'._t('Comments on this post:').'</p><p><strong>' . Comments::count_by_id($comment->post->id) . '</strong></p></div><hr />');
        // $stats->append('static', 'ip_count', '<div class="container"><p class="pct25">'._t('Comments from this IP:').'</p><p><strong>' . Comments::count_by_ip($comment->ip) . '</strong></p></div><hr />');
        // $stats->append('static', 'email_count', '<div class="container"><p class="pct25">'._t('Comments by this author:').'</p><p><strong>' . Comments::count_by_email($comment->email) . '</strong></p></div><hr />');
        // $stats->append('static', 'url_count', '<div class="container"><p class="pct25">'._t('Comments with this URL:').'</p><p><strong>' . Comments::count_by_url($comment->url) . '</strong></p></div><hr />');
        // Create the second set of action buttons
        $buttons_2 = $form->append(FormControlWrapper::create('buttons_2', null, array('class' => array('container', 'buttons', 'comment'))));
        foreach ($actions as $status => $action) {
            $id = $action . '_2';
            $buttons_2->append(FormControlSubmit::create($id, null, array('class' => array('status', 'button', $action)))->set_caption(MUltiByte::ucfirst(_t($action))));
            if (Comment::status_name($comment->status) == $status) {
                $buttons_2->{$id}->add_class('active');
                $buttons_2->{$id}->set_properties(array('disabled' => true));
            } else {
                $buttons_2->{$id}->set_properties(array('disabled' => false));
            }
        }
        // Allow plugins to alter form
        Plugins::act('form_comment_edit', $form, $comment);
        return $form;
    }