ADD COMMENTS
This commit is contained in:
parent
bb152d028b
commit
7868c21fd6
|
|
@ -15,6 +15,18 @@ class Markdown
|
|||
return $string;
|
||||
}
|
||||
|
||||
static function liteProcessing($string)
|
||||
{
|
||||
// $string = self::replaceHeaders($string);
|
||||
$string = self::replaceBold($string);
|
||||
$string = self::replaceItalic($string);
|
||||
$string = self::replaceUnderline($string);
|
||||
$string = self::replaceChars($string);
|
||||
$string = self::replaceUrls($string);
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
static private function replaceHeaders($string)
|
||||
{
|
||||
$pr = '(### (.{1,}))';
|
||||
|
|
|
|||
|
|
@ -190,6 +190,37 @@ class ArticleController extends Controller
|
|||
App::redirect('/user/');
|
||||
}
|
||||
|
||||
static function actionAddComment()
|
||||
{
|
||||
if (!App::$user ||
|
||||
!isset($_POST['parentType']) ||
|
||||
!isset($_POST['parentId']) ||
|
||||
!isset($_POST['answerTo']) ||
|
||||
!isset($_POST['text']))
|
||||
{
|
||||
App::error404();
|
||||
}
|
||||
|
||||
$text = str_replace(array('<','>'), array('<','>'), $_POST['text']);
|
||||
|
||||
$html = strip_tags($_POST['text']);
|
||||
$html = str_replace(array('<','>',"'"), array('<','>','′'), $html);
|
||||
$html = Markdown::liteProcessing($html);
|
||||
$html = nl2br($html);
|
||||
|
||||
$comment = new Comment(array(
|
||||
'userId' => App::$user->id,
|
||||
'parentType' => ($_POST['parentType'] == 'article') ? 'article' : 'point',
|
||||
'parentId' => (int)$_POST['parentId'],
|
||||
'answerTo' => (int)$_POST['answerTo'],
|
||||
'addDate' => time(),
|
||||
'text' => $text,
|
||||
'html' => $html,
|
||||
));
|
||||
$comment->save();
|
||||
App::redirect('/'.$_POST['parentType'].'/'.$_POST['parentId'].'#comment'.$comment->id);
|
||||
}
|
||||
|
||||
static function actionMarkdown()
|
||||
{
|
||||
if (isset($_POST['text']) ){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
class Comment extends Model
|
||||
{
|
||||
|
||||
function __construct($fromArray = array())
|
||||
{
|
||||
$this->_tableName_ = 'comments';
|
||||
parent::__construct($fromArray);
|
||||
$this->setRelation('refUser', 'userId', 'User', 'id', self::TO_ONE);
|
||||
}
|
||||
|
||||
static function model()
|
||||
{
|
||||
return new self();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -16,6 +16,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<?= self::renderPartial('comments/all.php',['parentId'=>$article->id, 'parentType' => 'article'],TRUE); ?>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a href="/point/<?= $randomPoint->id ?>" style="float: left; margin: 0 20px 0 0;"><img src="<?= $randomPoint->getImg() ?>" style="width: 200px;"/></a>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
<h3>Комментарии:</h3>
|
||||
<?php
|
||||
self::addStyle('/css/comments.css');
|
||||
|
||||
$comments = Comment::model()->getAll(array('where'=>'`parentType`="'.$parentType.'" AND `parentId`="'.$parentId.'"'));
|
||||
|
||||
if($comments) {
|
||||
foreach ($comments as $comment) {
|
||||
self::renderPartial('comments/comment.php',['comment'=>$comment]);
|
||||
}
|
||||
} else {
|
||||
print 'Ваш комментарий может стать первым!';
|
||||
}
|
||||
|
||||
if (App::$user) {
|
||||
self::renderPartial('comments/form.php',['parentId'=>$parentId, 'parentType' => $parentType]);
|
||||
} else {
|
||||
self::renderPartial('comments/deny.php');
|
||||
|
||||
self::addScript('//ulogin.ru/js/ulogin.js');
|
||||
self::renderPartial('modals/login.php');
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<div class="singleComment">
|
||||
<a name="comment<?= $comment->id ?>"></a>
|
||||
<img src="/img/avatars/<?= $comment->refUser->id ?>.jpg" class="avatar"/>
|
||||
<div class="info">
|
||||
<b><?= $comment->refUser->nick ?></b>
|
||||
<?= date('H:i d-m-Y',$comment->addDate) ?>
|
||||
<a href="#comment<?= $comment->id ?>" name="#comment<?= $comment->id ?>" class="anchor">#</a>
|
||||
</div>
|
||||
<br/>
|
||||
<?= Helper::replaceLinks($comment->html, 'html') ?><br/>
|
||||
<br style="clear: both;">
|
||||
</div>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="bg-danger deny">
|
||||
Чтобы написать комментарий, вам необходимо <a href="#" onclick="$('#loginModal').modal('show');">авторизоваться</a>.
|
||||
</div>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<div class="commentForm">
|
||||
<form action="/article/addComment/" method="POST">
|
||||
<input type="hidden" name="answerTo" value="0" />
|
||||
<input type="hidden" name="parentType" value="<?= $parentType ?>" />
|
||||
<input type="hidden" name="parentId" value="<?= $parentId ?>" />
|
||||
<textarea name="text" style="width: 100%;" rows="5"></textarea>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
<button type="submit" class="btn btn-success">Сохранить комментарий</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
.singleComment {
|
||||
border: solid 1px #ddd;
|
||||
border-radius: 3px;
|
||||
padding: 8px;
|
||||
margin-bottom: 5px;
|
||||
background-color: rgba(255,255,255, 0.8);
|
||||
}
|
||||
|
||||
.singleComment .info {
|
||||
background-color: #eee;
|
||||
color: #777;
|
||||
height: 50px;
|
||||
padding: 15px 10px 15px 60px;
|
||||
|
||||
}
|
||||
|
||||
.singleComment .info .anchor{
|
||||
float: right;
|
||||
}
|
||||
|
||||
.singleComment .avatar {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.commentForm {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
div.commentForm .buttons {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.deny {
|
||||
padding: 10px 20px;
|
||||
border-radius: 3px;
|
||||
border: solid 1px #ea4444;
|
||||
}
|
||||
Loading…
Reference in New Issue