www.gusucode.com > CPF开源的PHP SNS问答社区 v0.7源码程序 > code/templates/default/content/question.tpl.php

    <?php
/**
 * @author wonli <wonli@live.com>
 * question.tpl.php
 */
//print_r($data);

$question = &$data['question_info'];
$user_home_url = $this->url('user:detail', array('account' => $question['account']));
$user_home_link = $this->a($question['nickname'], $user_home_url, array('class' => 'ia'));
$editor_data = array('title_id' => $question['title_id'], 'isLogin' => $data['isLogin'], 'loginUser' => $data['loginUser']);
?>
<div class="container question-detail">
    <div class="row">
        <div class="col-md-9">
            <div class="row">
                <div class="col-md-12">
                    <div class="panel panel-cpf-content content-box">
                        <div class="panel-heading">

                            <div class="content-topic-list">
                                <?php echo $this->contentTopics($question['topics'], 'question') ?>
                            </div>

                            <div class="media">
                                <div class="media-body">
                                    <h4 class="content-title"><?php echo $question['title'] ?></h4>
                                    <div class="user-info">
                                        <?php printf('%s 于 %s', $user_home_link, $this->ftime($question['post_time'])) ?>
                                    </div>
                                </div>
                                <div class="media-right">
                                    <a href="<?php echo $user_home_url ?>">
                                        <?php echo $this->userAvatar($question['avatar']) ?>
                                    </a>
                                </div>
                            </div>
                        </div>
                        <?php if (!empty($question['question_content'])) : ?>
                            <div class="panel-body content">
                                <?php echo $question['question_content'] ?>
                            </div>
                        <?php endif ?>
                    </div>
                </div>
            </div>

            <?php
            if (!empty($data['answer_list'])) {
                ?>
                <div class="row">
                    <div class="col-md-12">
                        <div class="panel panel-cpf-answer">
                            <div class="panel-heading">
                                <div class="row">
                                    <div class="col-xs-6 ft18">
                                        <?php echo $data['page']['result_count'] ?> 个回答
                                    </div>
                                    <div class="col-xs-6 tar order-menu">
                                        <?php $this->answerOrderMenu($question['question_id'], $data['order']) ?>
                                    </div>
                                </div>
                            </div>

                            <div class="panel-body">
                                <div>
                                    <?php
                                    foreach ($data['answer_list'] as $answer) {
                                        $this->renderTpl('content/segment/answer', $answer);
                                    }

                                    //最后一页显示被屏蔽的答案数
                                    if ($data['page']['p'] >= $data['page']['total_page'] && $data['blocked_answer_count'] > 0) {
                                        echo $this->wrap('div', array('class' => 'blocked-content-list'))
                                            ->a("有{$data['blocked_answer_count']}个答案被折叠或屏蔽, 点击查看", 'javascript:void(0)', array(
                                                'id' => 'loadBlockAnswer', 'question-id' => $question['question_id']
                                            ));
                                    }
                                    ?>
                                </div>
                                <div id="blockContentArea"></div>
                            </div>

                            <?php if ($data['page']['total_page'] > 1) : ?>
                                <div class="panel-footer">
                                    <div class="page">
                                        <?php echo $this->page($data['page']) ?>
                                    </div>
                                </div>
                            <?php endif ?>
                        </div>
                    </div>
                </div>
                <?php
            }

            //邀请回答
            if ($data['page']['result_count'] < 3) {
                $this->renderTpl('fragment/invite/base', array(
                    'title' => '邀请回答',
                    'topics' => $question['topic_ids'],
                    'title_id' => $question['title_id'],
                ));
            }
            ?>
            <div class="editor">
                <?php $this->renderTpl('fragment/editor/content_form', $editor_data) ?>
            </div>
        </div>

        <div class="col-md-3">
            <div class="row">
                <div class="col-md-12">
                    <?php $this->renderTpl('fragment/slide/content_action', $question) ?>
                </div>
            </div>
            <?php
            if (!empty($data['correlation_content'])) {
                $this->renderTpl('fragment/slide/correlation_content', $data['correlation_content']);
            }
            ?>
        </div>
    </div>
</div>
<script>
    $(function () {
        $('.answer-list').hover(function () {
            $(this).find('.answer-control-panel').show();
        }, function () {
            $(this).find('.answer-control-panel').hide();
        });

        //举报
        $('.report-flag').on('click', function () {
            var report_id = $(this).attr('report-id'), report_type = $(this).attr('report-type');
            $.post('<?php echo $this->url('action:report') ?>', {'type': report_type, 'id': report_id});
            layer.msg('我们已收到您的举报');
        });

        //编辑
        $('.edit-flag').on('click', function () {
            var type = $(this).attr('type'), id = $(this).attr('data-id');
            $.post('<?php echo $this->url('action:getInteract') ?>', {'type': type, 'id': id}, function (d) {
                if (d.status && d.status !== 1) {
                    layer.msg(d.message);
                } else {
                    if (e) {
                        $("#interact_id").val(id);
                        e.$txt.html(d.data.content);
                        $("img.lazy").each(function () {
                            var src = $(this).attr('data-original');
                            $(this).attr('src', src);
                        });
                    } else {
                        layer.msg('初始化编辑器失败');
                    }
                }
            });
        });

        //折叠和屏蔽
        $('.block-flag, .hide-flag').on('click', function () {
            var type = $(this).attr('type'), id = $(this).attr('data-id'), act = $(this).attr('act');
            $.post('<?php echo $this->url('action:blockInteract') ?>', {
                'type': type,
                'act': act,
                'id': id
            }, function (d) {
                if (d.status === 1) {
                    if (act === 'hide') {
                        layer.msg('折叠成功');
                    } else {
                        layer.msg('屏蔽成功');
                    }

                    setTimeout(function () {
                        window.location.reload();
                    }, 1000);
                } else {
                    layer.msg(d.message);
                }
            });
        });

        //删除
        $('.del-flag').on('click', function () {
            var type = $(this).attr('type'), id = $(this).attr('data-id');
            $.post('<?php echo $this->url('action:delInteract') ?>', {'type': type, 'id': id}, function (d) {
                if (d.status === 1) {
                    layer.msg('删除成功');
                    setTimeout(function () {
                        window.location.reload();
                    }, 1000);
                } else {
                    layer.msg(d.message);
                }
            });
        });

        //内容检测
        $('#contentForm').on('submit', function () {
            if (!$('#editor').val()) {
                layer.msg('您的答案不能为空');
                return false;
            }
        });

        //显示被屏蔽或折叠的答案
        $('#loadBlockAnswer').on('click', function () {
            var question_id = $(this).attr('question-id'), loaded = $(this).attr('loaded'), that = $(this);
            if (loaded) {
                $('#blockContentArea').toggle()
            } else {
                $.post('<?php echo $this->url('action:loadBlockAnswer') ?>', {'question_id': question_id}, function (d) {
                    that.attr('loaded', 1);
                    $('#blockContentArea').html(d);
                    $("img.lazy").lazyload();
                });
            }
        });

        //投票
        $('.act-flag').on('click', function () {
            var self = $(this);
            var act = $(this).attr('act'),
                question_id = $(this).attr('question-id'),
                answer_id = $(this).attr('answer-id');

            if (!act || !question_id || !answer_id) {
                layer.msg("操作失败");
                return;
            }

            $.post('<?php echo $this->url('action:vote') ?>', {
                'act': act,
                'question_id': question_id,
                'answer_id': answer_id
            }, function (d) {
                if (typeof d != "object") {
                    d = $.parseJSON(d);
                }

                if (d.status != 1) {
                    layer.msg(d.message);
                } else {
                    if (d.data.stand == 0) {
                        self.removeClass('act').siblings().removeClass('act');
                    } else {
                        self.addClass('act').siblings().removeClass('act');
                    }
                    document.getElementById('up-count-' + answer_id).innerHTML = d.data.up_count;
                }
            });
        });
    });
</script>