комментарии


Создание комментариев

Параметры:

код блока

<div class="bug-item__comment-block">
{%inj|cmd@file|file@loopsql.php
|sql@
SELECT S.ID, S.ONDATE, S.COMTEXT, S2.NAZ AS USERNAZ, S.IMG1, S.FRONTUSER_TABLE, S.FRONTUSER
FROM SYS_COMMENT S, SYS_USER S2
WHERE S.ID>0
AND S.SHOW_FRONT>0 AND S.USERID=S2.ID

sql запрос

|order_by@ S.ID

порядок вывода

|fields@USERNAZ,ONDATE,ID,COMTEXT

доступные для вывода поля

|format@,date('d.m.Y H:i'),,raw

формат вывода

|recinpage@
|onloop_prg@

условия вывода

$s_img = $rs->fields['IMG1'];
if ($s_img) $s_img = "<p><a href="$s_img" target="_blank" >
Скачать файл</a></p>";
$s = str_replace(":IMG1:", $s_img, $s);
$postername=$rs->fields['USERNAZ'];
if ($rs->fields['FRONTUSER_TABLE'] AND $rs->fields['FRONTUSER'])
$postername=getFieldFromSql($this->conn, "SELECT NAZ FROM ".$rs->fields['FRONTUSER_TABLE']." WHERE ID=".$rs->fields['FRONTUSER'],'?');
$s = str_replace(":USERNAZ2:", hsc($postername), $s);
|onsql_prg@

sql условия вывода

global $_SESSION, $ID;
$sql .= " AND S.OBJECT_TABLE = 'PROJECT' AND S.OBJECT_ID = ".(int)$ID;
|loop_part@

шаблон вывода

<div class="bug-item__comment-item">
<div class="bug-item__comment-title">:ONDATE: <strong>:USERNAZ2:</strong></div>
<div class="bug-item__comment-content">
:IMG1:
:COMTEXT:
</div>
</div>
|footer_part@

вывод пейджинга

:pager:
|trail_vars@ID

переменная указывающая к какому посту относятся комменты

|recinpage@100

кол-во записей на странице

|pager_pagecount@8

кол-во циферный кнопок

|pager_part@<li><a href="?PN=:pageno::trail_vars:" title=":pagenonaz:">:pagenonaz:</a></li>
|pager_part_current@<li><a class="disabled">:pagenonaz:</a></li>
|pager_part_prev@<li><a href="?PN=:pageno::trail_vars:" title="<"><</a></li>
|pager_part_next@<li><a href="?PN=:pageno::trail_vars:" title=">">></a></li>
|pager_pattern@:pager_part_prev::pager_part::pager_part_next:
|pager_varname@PN

шаблон пейджинга

|%}

начало формы ввода комментов

<form action="" method="post" enctype="multipart/form-data" class="bug-item__comment-form">
<h4>Оставить сообщение</h4>
<div class="bug-item__comment-upload">
<label for="comment-upload-img"> Добавить изображение</label>
<input type="file" name="IMG1" id="comment-upload-img" multiple >
</div>
<div class="bug-item__comment-editor">
<textarea name="COMTEXT" id="comtext" cols="30" rows="10"></textarea>
</div>

поля формы

<input type="hidden" name="CMD" value="personal-area/do/add_comment">

указание на файл обработчик

<input type="hidden" name="COMTABLENAME" value="PROJECT">
<input type="hidden" name="COMTABLEID" value="{%inj|cmd@eval|php@global $ID; $out = (int)$ID;|%}">

передача переменных COMTABLENAME и COMTABLEID

<input type="submit" value="оставить сообщение" class="btn btn-default">
</form>
<script type="text/javascript">
CKEDITOR.replace( 'comtext');
</script>

этот скрипт меняет по id обычный textarea на эдитор подключенный в шаблоне

</div>

конец формы комментов

подключение эдитора

cmd файл для комментов

<?php
// функция fr_tasklist подключается в CMD файлах
include_once ("site_templates/personal-area/front_rights.php");
global $_SESSION, $IMG1, $COMTABLENAME, $COMTABLEID, $COMTEXT;
$error ="";
if (!trim(strip_tags($COMTEXT))) $error = 'Не написан комментарий';
@$persona_id = (int)$_SESSION['w_karloid'];
if (!$persona_id) $error .='no session';
$COMTABLEID = (int)$COMTABLEID;
if (!$COMTABLEID) $error .= 'no task id';
if (!$error) {
$zagolovok = hsc(substr(strip_tags($COMTEXT), 0, 200));
// функция fr_tasklist выдает фильтр по доступных задач
if ($COMTABLENAME=='TASK'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM TASK T WHERE T.ID=$COMTABLEID ". fr_tasklist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'task not found';
}elseif ($COMTABLENAME=='PROJECT'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM PROJECT T WHERE T.ID=$COMTABLEID ". fr_projectlist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'PROJECT not found';
}elseif ($COMTABLENAME=='DOCUMENT'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM DOCUMENT T WHERE T.ID=$COMTABLEID ". fr_documentlist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'DOCUMENT not found';
}elseif ($COMTABLENAME=='ZAKORDER'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM ZAKORDER T WHERE T.ID=$COMTABLEID ". fr_zakorderlist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'ZAKORDER not found';
}elseif ($COMTABLENAME=='ZAKAZ'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM ZAKAZ T WHERE T.ID=$COMTABLEID ". fr_zakazlist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'ZAKAZ not found';
}elseif ($COMTABLENAME=='ZAKAZBILL'){
$task_infoA = GetFieldsFromSql($conn, "SELECT T.ID, T.MANAGER FROM ZAKAZBILL T WHERE T.ID=$COMTABLEID ". fr_zakazbilllist($this->conn, "T"), array(0,0,0 ));
if (!$task_infoA[0]) $error .= 'ZAKAZBILL not found';
}else {die ('неизвесный тип COMTABLENAME=0');}
}
if (!$error) {
$_post = NewObject($conn, "TSys_comment");
$_post->sf("USERID", 0);
$_post->sf("MANAGER", $task_infoA[1]);
$_post->sf("OBJECT_ID", $COMTABLEID);
$_post->sf("OBJECT_TABLE", $COMTABLENAME);
$_post->sf("FRONTUSER", $persona_id);
$_post->sf("FRONTUSER_TABLE", 'PERSONA');
$_post->sf("COMTEXT", $COMTEXT);
$_post->sf("NAZ", $zagolovok);
$_post->sf("ENAB", 1);
$_post->sf("SHOW_FRONT", 1);
$_post->sf("ONDATE", date('d.m.Y H:i:s'));
$_post->UploadImgField('IMG1',array());
$error = $_post->BaseInsert();
}
if (!$error){
if($COMTABLENAME && $COMTABLEID )
{
$clsn = 'T'.ucfirst(strtolower($COMTABLENAME));
$obj_to = NewObject($conn,$clsn,$COMTABLEID);
$obj_type_naz = $obj_to->object_name;
$obj_naz = $obj_to->gf('NAZ');
}
# отправка письма Менеджеру
$na=GetFieldsFromSQL($this->conn, "SELECT NAZ, EMAIL FROM SYS_USER WHERE (ID=".sqlSTR($task_infoA[1]).") ", array('',''));
# отправка письма Менеджеру
$mess_templ = NewObject($this->conn,'TCms_mess_template');
$smsg = $mess_templ->FindByCode("msg_comment");
if ($smsg) $error.=$smsg; //Ошибка
else
{
$arU = array('NAME'=>$na[0],'EMAIL'=>$na[1],'OBJTYPE'=>$obj_type_naz,'OBJID'=>$COMTABLEID, 'OBJNAZ'=>$obj_naz);
$toU = $na[1];
$mess_templ->Send($toU,$arU);
$mess2 = 'Письмо о создании комментария отправлено на '.$na[1]." ";
}
}
if($error)
{
global $m_conf;
$_SESSION['sys_red_mess'] = "$error";
header("Location: {$m_conf['host']}{$this->curhurl}?ID=$COMTABLEID");
exit;
}else{
global $m_conf;
$_SESSION['sys_green_mess'] = "Ваш комментарий добавлен";
header("Location: {$m_conf['host']}{$this->curhurl}?ID=$COMTABLEID");
exit;
//print(backMess("success", "Вы успешно зарегестрированы."));
}
?>