Browse Source

Fixes

pull/3/head
M@dD3n 5 years ago
parent
commit
818ea81983
  1. 7
      admin/docs.php
  2. 10
      admin/lang/ru/docs.txt
  3. 5
      admin/lang/ru/request.txt
  4. 21
      admin/templates/documents/docs.tpl
  5. 10
      admin/templates/documents/form.tpl
  6. 96
      admin/templates/js/main.js
  7. 1
      admin/templates/request/form.tpl
  8. 330
      class/class.docs.php
  9. 9
      class/class.paginations.php
  10. 26
      tmp/update/sql.update.php

7
admin/docs.php

@ -303,5 +303,12 @@
$AVE_Document->documentSaveRedirect(); $AVE_Document->documentSaveRedirect();
} }
break; break;
case 'changepos':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentPosition();
}
break;
} }
?> ?>

10
admin/lang/ru/docs.txt

@ -300,4 +300,12 @@ DOC_LANG_ID = "Язык документа:"
DOC_LANG_SELECT = "Выберите язык" DOC_LANG_SELECT = "Выберите язык"
// 3.25 // 3.25
DOC_CLOSE_SEARCH_RUBRIC = "Вернуться в раздел, учитывая параметры поиска" DOC_CLOSE_SEARCH_RUBRIC = "Вернуться в раздел, учитывая параметры поиска"
// 3.26
DOC_POSITION = "Позиция"
DOCUMENT_POSITION = "Позиция документа"
DOCUMENT_POSITION_ERR = "Не удалось сохранить позицию документа"
DOCUMENT_POSITION_ERROR = "Ошибка"
DOCUMENT_POSITION_OK = "Позиция документа успешно сохранена"
DOCUMENT_POSITION_SUCCESS = "Выполнено"

5
admin/lang/ru/request.txt

@ -196,4 +196,7 @@ REQUEST_PAGES_CURENT = "Номер страницы пагинации"
REQUEST_PAGES_TOTAL = "Общее кол-во страниц пагинации" REQUEST_PAGES_TOTAL = "Общее кол-во страниц пагинации"
// v 3.24 // v 3.24
REQUEST_COUNT_ITEMS = "Получать кол-во элементов (если не используется постраничная навигация)" REQUEST_COUNT_ITEMS = "Получать кол-во элементов (если не используется постраничная навигация)"
// v 3.26
REQUEST_BY_POSITION = "Позиция документа"

21
admin/templates/documents/docs.tpl

@ -1,4 +1,6 @@
<div class="title"><h5>{#DOC_SUB_TITLE#}</h5></div> <div class="title">
<h5>{#DOC_SUB_TITLE#}</h5>
</div>
<div class="widget" style="margin-top: 0px;"> <div class="widget" style="margin-top: 0px;">
<div class="body"> <div class="body">
@ -88,6 +90,11 @@
<a class="link" href="{$link}&sort=id{if $smarty.request.sort=='id'}_desc{/if}&page={$smarty.request.page|escape|default:'1'}&cp={$sess}">{#DOC_ID#}</a> <a class="link" href="{$link}&sort=id{if $smarty.request.sort=='id'}_desc{/if}&page={$smarty.request.page|escape|default:'1'}&cp={$sess}">{#DOC_ID#}</a>
</span> </span>
<span class="mrl5">
{if $smarty.request.sort=='position'}<span class="arrow">&uarr;</span>{elseif $smarty.request.sort=='position_desc'}<span class="arrow">&darr;</span>{/if}
<a class="link" href="{$link}&sort=position{if $smarty.request.sort=='position'}_desc{/if}&page={$smarty.request.page|escape|default:'1'}&cp={$sess}">{#DOC_POSITION#}</a>
</span>
<span class="mrl5"> <span class="mrl5">
{if $smarty.request.sort=='title'}<span class="arrow">&uarr;</span>{elseif $smarty.request.sort=='title_desc'}<span class="arrow">&darr;</span>{/if} {if $smarty.request.sort=='title'}<span class="arrow">&uarr;</span>{elseif $smarty.request.sort=='title_desc'}<span class="arrow">&darr;</span>{/if}
<a class="link" href="{$link}&sort=title{if $smarty.request.sort=='title'}_desc{/if}&page={$smarty.request.page|escape|default:'1'}&cp={$sess}">{#DOC_TITLE#}</a> <a class="link" href="{$link}&sort=title{if $smarty.request.sort=='title'}_desc{/if}&page={$smarty.request.page|escape|default:'1'}&cp={$sess}">{#DOC_TITLE#}</a>
@ -129,6 +136,7 @@
<col width="10"> <col width="10">
<col> <col>
<col width="150"> <col width="150">
<col width="150">
<col width="180"> <col width="180">
{if !$smarty.const.ADMIN_EDITMENU}<col width="141">{/if} {if !$smarty.const.ADMIN_EDITMENU}<col width="141">{/if}
@ -141,6 +149,7 @@
{#DOC_TITLE#}&nbsp;|&nbsp;{#DOC_URL_RUB#} {#DOC_TITLE#}&nbsp;|&nbsp;{#DOC_URL_RUB#}
</td> </td>
<td>{#DOC_IN_RUBRIK#}</td> <td>{#DOC_IN_RUBRIK#}</td>
<td>{#DOC_POSITION#}</td>
<td>{#DOC_CREATED#}&nbsp;|&nbsp;{#DOC_EDIT#}</td> <td>{#DOC_CREATED#}&nbsp;|&nbsp;{#DOC_EDIT#}</td>
{if !$smarty.const.ADMIN_EDITMENU}<td {if $smarty.const.ADMIN_EDITMENU}colspan="7"{else}colspan="14"{/if} align="center">{#DOC_ACTIONS#}</td>{/if} {if !$smarty.const.ADMIN_EDITMENU}<td {if $smarty.const.ADMIN_EDITMENU}colspan="7"{else}colspan="14"{/if} align="center">{#DOC_ACTIONS#}</td>{/if}
</tr> </tr>
@ -293,6 +302,15 @@
{/if} {/if}
</td> </td>
<td nowrap="nowrap" align="center">
{if $item->cantEdit==1}
<div class="position">
<input type="hidden" name="id" value="{$item->Id}" />
<input class="position_value" type="text" name="document_position" value="{$item->document_position|default:0}" />
</div>
{/if}
</td>
<td align="center"> <td align="center">
<div class="docaction"> <div class="docaction">
@ -397,6 +415,7 @@
{#DOC_TITLE#}&nbsp;|&nbsp;{#DOC_URL_RUB#} {#DOC_TITLE#}&nbsp;|&nbsp;{#DOC_URL_RUB#}
</td> </td>
<td>{#DOC_IN_RUBRIK#}</td> <td>{#DOC_IN_RUBRIK#}</td>
<td>{#DOC_POSITION#}</td>
<td>{#DOC_CREATED#}&nbsp;|&nbsp;{#DOC_EDIT#}</td> <td>{#DOC_CREATED#}&nbsp;|&nbsp;{#DOC_EDIT#}</td>
{if !$smarty.const.ADMIN_EDITMENU}<td colspan="6" align="center">{#DOC_ACTIONS#}</td>{/if} {if !$smarty.const.ADMIN_EDITMENU}<td colspan="6" align="center">{#DOC_ACTIONS#}</td>{/if}
</tr> </tr>

10
admin/templates/documents/form.tpl

@ -602,6 +602,16 @@ $(document).ready(function(){ldelim}
</td> </td>
</tr> </tr>
<tr>
<td>{#DOCUMENT_POSITION#}</td>
<td colspan="3">
<div class="position nosubmit">
<input type="hidden" name="id" value="{$document->Id}" />
<input class="position_value mousetrap" type="text" name="document_position" value="{$document->document_position|default:0}" />
</div>
</td>
</tr>
<tr> <tr>
<td>{#DOC_PROPERTY#}</td> <td>{#DOC_PROPERTY#}</td>
<td colspan="3"> <td colspan="3">

96
admin/templates/js/main.js

@ -376,6 +376,7 @@ var AveAdmin = {
this.tooltip(); this.tooltip();
this.place_holder(); this.place_holder();
this.collapsible_elements(); this.collapsible_elements();
this.docPosition();
}, },
events: function() { events: function() {
@ -971,6 +972,101 @@ var AveAdmin = {
ul.hide(10); ul.hide(10);
} }
}); });
},
docPosition: function () {
$('.position').each(function(i,item) {
var q_buttons = $('<span class="q_buttons"></span>').prependTo($(item));
var q_up = $('<span class="q_up q_button">+</span>').appendTo($(q_buttons));
var q_down = $('<span class="q_down q_button">-</span>').appendTo($(q_buttons));
$(q_up).on('click',function(event) {
event.preventDefault();
$(q_submit).css({'display':'block'});
value = parseInt($(item).find('.position_value').val());
value += 1;
$(item).find('.position_value').val(value);
});
$(q_down).on('click',function(event){
event.preventDefault();
$(q_submit).css({'display':'block'});
value = parseInt($(item).find('.position_value').val());
value = (value < 1 ? 0 : value-1);
$(item).find('.position_value').val(value);
});
if ($(item).hasClass('nosubmit')) {
$(item).off('submit');
} else {
var q_submit = $('<span class="q_submit">OK</span>').appendTo($(q_buttons));
var q_loading = $('<span class="q_loading"></span>').appendTo($(q_buttons));
$(q_submit).css({'display':'none'});
$(q_loading).css({'display':'none'});
$(item).find('.position_value').on('change',function(){
$(q_submit).css({'display':'block'});
return false;
});
$(item).find('.position_value').on('focus',function(){
$(q_submit).css({'display':'block'});
});
$(item).on('blur',function(){
$(q_submit).css({'display':'none'});
});
$(item).on('submit',function(){
$(q_submit).css({'display':'none'});
$(q_loading).css({'display':'block'});
var dataForm = {
'action': 'changepos',
'id':$(this).find('input[name=id]').val(),
'value':$(this).find('input[name=document_position]').val()
};
$.ajax({
url: ave_path + 'admin/index.php?do=docs',
type: 'POST',
dataType: 'json',
data: dataForm,
success: function(data) {
$(q_loading).css({'display':'none'});
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
}
});
return false;
});
$(q_submit).on('click',function(event){
event.preventDefault();
$(item).submit();
return false;
});
}
});
} }
}; };

1
admin/templates/request/form.tpl

@ -235,6 +235,7 @@ function changeRub(select) {ldelim}
<select {$dis} style="width:250px" name="request_order_by" id="request_order_by" class="mousetrap"> <select {$dis} style="width:250px" name="request_order_by" id="request_order_by" class="mousetrap">
<option value="">&nbsp;</option> <option value="">&nbsp;</option>
<option value="Id"{if $row->request_order_by=='Id'} selected="selected"{/if}>Id</option> <option value="Id"{if $row->request_order_by=='Id'} selected="selected"{/if}>Id</option>
<option value="document_position"{if $row->request_order_by=='document_position'} selected="selected"{/if}>{#REQUEST_BY_POSITION#}</option>
<option value="document_published"{if $row->request_order_by=='document_published'} selected="selected"{/if}>{#REQUEST_BY_DATE#}</option> <option value="document_published"{if $row->request_order_by=='document_published'} selected="selected"{/if}>{#REQUEST_BY_DATE#}</option>
<option value="document_changed"{if $row->request_order_by=='document_changed'} selected="selected"{/if}>{#REQUEST_BY_DATECHANGE#}</option> <option value="document_changed"{if $row->request_order_by=='document_changed'} selected="selected"{/if}>{#REQUEST_BY_DATECHANGE#}</option>
<option value="document_title"{if $row->request_order_by=='document_title'} selected="selected"{/if}>{#REQUEST_BY_NAME#}</option> <option value="document_title"{if $row->request_order_by=='document_title'} selected="selected"{/if}>{#REQUEST_BY_NAME#}</option>

330
class/class.docs.php

@ -86,7 +86,7 @@
$expire[2] $expire[2]
); );
} }
return ($timestamp==time(0) ? '' : $timestamp); return ($timestamp == time(0) ? '' : $timestamp);
} }
/** /**
@ -327,40 +327,40 @@
$sql_where_field = ''; $sql_where_field = '';
$field_link = ''; $field_link = '';
if (isset($_REQUEST['field_id']) && (int)$_REQUEST['field_id'] > 0) if ($_REQUEST['field_id'] && (int)$_REQUEST['field_id'] > 0)
{ {
$sql_join_field = " $sql_join_field = "
LEFT JOIN LEFT JOIN
" . PREFIX . "_document_fields AS df1 " . PREFIX . "_document_fields AS df1
ON ON
doc.Id = df1.document_id doc.Id = df1.document_id
LEFT JOIN LEFT JOIN
" . PREFIX . "_document_fields_text AS df2 " . PREFIX . "_document_fields_text AS df2
ON ON
df1.document_id = df2.document_id df1.document_id = df2.document_id
"; ";
if ($_REQUEST['field_request'] == 'eq' && $_REQUEST['field_search'] != '') if ($_REQUEST['field_request'] == 'eq')
{ {
$sql_where_field = " $sql_where_field = "
AND AND
(df1.rubric_field_id = '" . (int)$_REQUEST['field_id'] . "' (df1.rubric_field_id = '" . (int)$_REQUEST['field_id'] . "'
AND AND
UPPER(CONCAT_WS('', df1.field_value, NULLIF(df2.field_value, '')) = '" . mb_strtoupper($_REQUEST['field_search']) . "') (UPPER(df1.field_value) = '" . mb_strtoupper($_REQUEST['field_search']) . "'
OR OR
df1.field_number_value = '" . mb_strtoupper($_REQUEST['field_search']) . "') df1.field_number_value = '" . mb_strtoupper($_REQUEST['field_search']) . "'))
"; ";
} }
else if ($_REQUEST['field_request'] == 'like' && $_REQUEST['field_search'] != '') else if ($_REQUEST['field_request'] == 'like')
{ {
$sql_where_field = " $sql_where_field = "
AND AND
(df1.rubric_field_id = '" . (int)$_REQUEST['field_id'] . "' (df1.rubric_field_id = '" . (int)$_REQUEST['field_id'] . "'
AND AND
UPPER(CONCAT_WS('', df1.field_value, NULLIF(df2.field_value, '')) LIKE '%" . mb_strtoupper($_REQUEST['field_search']) . "%') (UPPER(df1.field_value) LIKE '%" . mb_strtoupper($_REQUEST['field_search']) . "%'
OR OR
df1.field_number_value LIKE '%" . mb_strtoupper($_REQUEST['field_search']) . "%') df1.field_number_value LIKE '%" . mb_strtoupper($_REQUEST['field_search']) . "%'))
"; ";
} }
$field_link = '&field_id=' . (int)$_REQUEST['field_id'] . '&field_request=' . $_REQUEST['field_request'] . '&field_search=' . $_REQUEST['field_search']; $field_link = '&field_id=' . (int)$_REQUEST['field_id'] . '&field_request=' . $_REQUEST['field_request'] . '&field_search=' . $_REQUEST['field_search'];
@ -372,26 +372,28 @@
// Формируем условия, которые будут применены в запросе к БД // Формируем условия, которые будут применены в запросе к БД
$ex_rub = " AND doc.rubric_id = '" . $_REQUEST['rubric_id'] . "'"; $ex_rub = " AND doc.rubric_id = '" . $_REQUEST['rubric_id'] . "'";
// Формируем условия, которые будут применены в ссылках // формируем условия, которые будут применены в ссылках
$nav_rub = '&rubric_id=' . (int)$_REQUEST['rubric_id']; $nav_rub = '&rubric_id=' . (int)$_REQUEST['rubric_id'];
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT SELECT
Id, Id,
rubric_field_type, rubric_field_type,
rubric_field_title rubric_field_title
FROM FROM
" . PREFIX . "_rubric_fields " . PREFIX . "_rubric_fields
WHERE WHERE
rubric_id = '" . $_REQUEST['rubric_id'] ."' rubric_id = '" . $_REQUEST['rubric_id'] ."'
ORDER BY ORDER BY
rubric_field_position ASC rubric_field_title ASC
"); ");
$fields = array(); $fields = array();
while($row = $sql->FetchRow()) while($row = $sql->FetchRow())
{
array_push($fields, $row); array_push($fields, $row);
}
$AVE_Template->assign('fields', $fields); $AVE_Template->assign('fields', $fields);
} }
@ -471,21 +473,73 @@
} }
} }
// Определяем группу пользоваеля и id документа, если он присутствует в запросе
// $ex_delete = (UGROUP != 1) ? "AND doc.document_deleted != '1'" : '' ;
// Определяем группу пользоваеля и id документа, если он присутствует в запросе // Определяем группу пользоваеля и id документа, если он присутствует в запросе
// $ex_delete = (UGROUP != 1) ? "AND doc.document_deleted != '1'" : '' ; // $ex_delete = (UGROUP != 1) ? "AND doc.document_deleted != '1'" : '' ;
$w_id = !empty($_REQUEST['doc_id']) $w_id = !empty($_REQUEST['doc_id'])
? " AND doc.Id = '" . $_REQUEST['doc_id'] . "'" ? " AND doc.Id = '" . $_REQUEST['doc_id'] . "'"
: ''; : '';
// Выполняем запрос к БД на получение количества документов соответствующих вышеопределенным условиям
$sql = "
SELECT
COUNT(doc.Id)
FROM
" . PREFIX . "_documents as doc
" . $ex_db . "
" . $sql_join_field . "
WHERE 1
" . $ex_delete . "
" . $ex_time . "
" . $ex_titel . "
" . $ex_rub . "
" . $ex_docstatus . "
" . $ex_lang . "
" . $w_id . "
" . $sql_where_field . "
";
$num = $AVE_DB->Query($sql)->GetCell();
// Определяем лимит документов, который будет показан на 1 странице
$limit = (isset($_REQUEST['Datalimit']) && is_numeric($_REQUEST['Datalimit']) && $_REQUEST['Datalimit'] > 0)
? $_REQUEST['Datalimit']
: $limit = $this->_limit;
$nav_limit = '&Datalimit=' . $limit;
// Определяем количество страниц, которые будут сформированы на основании количества полученных документов
$pages = ceil($num / $limit);
$start = get_current_page() * $limit - $limit;
$db_sort = 'ORDER BY doc.Id DESC'; $db_sort = 'ORDER BY doc.Id DESC';
$navi_sort = '&sort=id_desc'; $navi_sort = '&sort=id_desc';
// Параметры вывборки документов
$search_query = base64_encode($_SERVER['QUERY_STRING']);
// При смене страницы убираем из сессии параметры выборки документов
unset ($_SESSION['query_strings']);
// Если в запросе используется параметр сортировки // Если в запросе используется параметр сортировки
if (!empty($_REQUEST['sort'])) if (!empty($_REQUEST['sort']))
{ {
// Определяем, по какому параметру происходит сортировка // Определяем, по какому параметру происходит сортировка
switch ($_REQUEST['sort']) switch ($_REQUEST['sort'])
{ {
// По позиции документа, по возрастанию
case 'position' :
$db_sort = 'ORDER BY doc.document_position ASC';
$navi_sort = '&sort=position';
break;
// По позиции документа, по убыванию
case 'position_desc' :
$db_sort = 'ORDER BY doc.document_position DESC';
$navi_sort = '&sort=position_desc';
break;
// По id документа, по возрастанию // По id документа, по возрастанию
case 'id' : case 'id' :
$db_sort = 'ORDER BY doc.Id ASC'; $db_sort = 'ORDER BY doc.Id ASC';
@ -617,15 +671,9 @@
$docs = array(); $docs = array();
// Определяем лимит документов, который будет показан на 1 странице // Выполняем запрос к БД на получение уже не количества документов, отвечающих условиям, а уже на
$limit = (isset($_REQUEST['Datalimit']) && is_numeric($_REQUEST['Datalimit']) && $_REQUEST['Datalimit'] > 0) // получение всех данных, с учетом всех условий, а также типа сортировки и лимита для вывода на
? $_REQUEST['Datalimit'] // одну страницу.
: $limit = $this->_limit;
$nav_limit = '&Datalimit=' . $limit;
$start = get_current_page() * $limit - $limit;
// Выполняем запрос к БД на получение уже не количества документов, отвечающих условиям, а уже на // Выполняем запрос к БД на получение уже не количества документов, отвечающих условиям, а уже на
// получение всех данных, с учетом всех условий, а также типа сортировки и лимита для вывода на // получение всех данных, с учетом всех условий, а также типа сортировки и лимита для вывода на
// одну страницу. // одну страницу.
@ -638,18 +686,18 @@
LEFT JOIN LEFT JOIN
" . PREFIX . "_rubrics AS rub " . PREFIX . "_rubrics AS rub
ON rub.Id = doc.rubric_id ON rub.Id = doc.rubric_id
" . $sql_join_field . " " . $sql_join_field . "
WHERE 1 WHERE 1
" . $ex_rub . " " . $ex_rub . "
" . $ex_delete . " " . $ex_delete . "
" . $ex_time . " " . $ex_time . "
" . $ex_titel . " " . $ex_titel . "
" . $ex_docstatus . " " . $ex_docstatus . "
" . $ex_lang . " " . $ex_lang . "
" . $w_id . " " . $w_id . "
" . $sql_where_field . " " . $sql_where_field . "
GROUP BY doc.Id GROUP BY doc.Id
" . $db_sort . " " . $db_sort . "
LIMIT LIMIT
" . $start . "," . $limit . " " . $start . "," . $limit . "
"; ";
@ -657,15 +705,6 @@
//Debug::_echo($sql, true, '270'); //Debug::_echo($sql, true, '270');
$sql = $AVE_DB->Query($sql); $sql = $AVE_DB->Query($sql);
// Получаем кол-во записей
$num = $AVE_DB->getFoundRows();
// Определяем количество страниц, которые будут сформированы на основании количества полученных документов
$pages = ceil($num / $limit);
// Параметры вывборки документов
$search_query = base64_encode($_SERVER['QUERY_STRING']);
// Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду // Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду
while ($row = $sql->FetchRow()) while ($row = $sql->FetchRow())
{ {
@ -802,8 +841,8 @@
if ($num > $limit) if ($num > $limit)
{ {
$page_nav = get_pagination($pages, 'page', ' <a href="' . $link . $navi_sort . '&page={s}'.(empty($_REQUEST['rubric_id']) $page_nav = get_pagination($pages, 'page', ' <a href="' . $link . $navi_sort . '&page={s}'.(empty($_REQUEST['rubric_id'])
? '' ? ''
: '&rubric_id='.$_REQUEST['rubric_id']).'&cp=' . SESSION . '">{t}</a>'); : '&rubric_id='.$_REQUEST['rubric_id']).'&cp=' . SESSION . '">{t}</a>');
$AVE_Template->assign('page_nav', $page_nav); $AVE_Template->assign('page_nav', $page_nav);
} }
@ -888,7 +927,7 @@
* Функция предназначенна для анализа ключевых слов и разненсения их по табличке _document_keyword * Функция предназначенна для анализа ключевых слов и разненсения их по табличке _document_keyword
* *
*/ */
function generateKeywords($document_id, $keywords=null) function generateKeywords($document_id, $keywords = null)
{ {
global $AVE_DB; global $AVE_DB;
@ -1152,16 +1191,16 @@
/** /**
* Метод, предназначенный для сохранения документа в БД * Метод, предназначенный для сохранения документа в БД
* *
* @param int $rubric_id Идентификатор Рубрики * @param int $rubric_id Идентификатор Рубрики
* @param int $document_id Идентификатор Документа или null, если документ новый * @param int $document_id Идентификатор Документа или null, если документ новый
* @param array $data Документ в массиве структура - хитрая * @param array $data Документ в массиве структура - хитрая
* @param bool $update_non_exists_fields Изменять поля на пустые значения у не переданных полей или не надо * @param bool $update_non_exists_fields Изменять поля на пустые значения у не переданных полей или не надо
* @param bool $rubric_code Использовать код рубрики или не надо * @param bool $rubric_code Использовать код рубрики или не надо
* @param bool $revisions Использовать ревизии документов * @param bool $revisions Использовать ревизии документов
* @param bool $logs Писать системные сообщения в журнал * @param bool $logs Писать системные сообщения в журнал
* @param bool $generate Генерировать Meta * @param bool $generate Генерировать Meta
* *
* return int/bool Возвращает номер документа если все удачно или false если все плохо * @return int|bool Возвращает номер документа если все удачно или false если все плохо
*/ */
function documentSave ($rubric_id, $document_id, $data, $update_non_exists_fields = false, $rubric_code = true, $revisions = true, $logs = true, $generate = true) function documentSave ($rubric_id, $document_id, $data, $update_non_exists_fields = false, $rubric_code = true, $revisions = true, $logs = true, $generate = true)
@ -1171,21 +1210,21 @@
//-- Проверяем входящие данные -- // //-- Проверяем входящие данные -- //
// Если отсутсвует рубрика, ничего не делаем // Если отсутсвует рубрика, ничего не делаем
if(! $rubric_id) if (! $rubric_id)
return false; return false;
// Если отсутсвуют данные, ничего не делаем // Если отсутсвуют данные, ничего не делаем
if(! isset($data)) if (! isset($data))
return false; return false;
// Если отсутсвуют данные полей, ничего не делаем // Если отсутсвуют данные полей, ничего не делаем
if(! isset($data['feld'])) if (! isset($data['feld']))
return false; return false;
$rubric_id = (int)$rubric_id; $rubric_id = (int)$rubric_id;
$document_id = (int)$document_id; $document_id = (int)$document_id;
// Определяем тип опреации // Определяем тип операции
$oper = 'INSERT'; $oper = 'INSERT';
// Забираем параметры рубрики // Забираем параметры рубрики
@ -1196,7 +1235,7 @@
// Выполняем стартовый код рубрики // Выполняем стартовый код рубрики
if ($rubric_code) if ($rubric_code)
eval ('?'.'>' . $_rubric->rubric_code_start . '<'.'?'); eval (' ?'.'>' . $_rubric->rubric_code_start . '<?'.'php ');
// Если нет данных для сохранения, перкращаем сохранение и переходим на страницу документов // Если нет данных для сохранения, перкращаем сохранение и переходим на страницу документов
if (empty($data)) if (empty($data))
@ -1206,7 +1245,7 @@
} }
// Если есть ID документа, то ставим оператор UPDATE // Если есть ID документа, то ставим оператор UPDATE
if ($document_id > 0) if (is_numeric($document_id) && $document_id > 0)
$oper = 'UPDATE'; $oper = 'UPDATE';
// Если пользователь имеет права на добавление документов в указанную рубрику, тогда // Если пользователь имеет права на добавление документов в указанную рубрику, тогда
@ -1294,21 +1333,21 @@
) )
{ {
// Статус документа 1 - Опубликован / 0 - Нет // Статус документа 1 - Опубликован / 0 - Нет
$document_status = (isset($data['document_status']) $data['document_status'] = (isset($data['document_status'])
? $data['document_status'] ? $data['document_status']
: '0'); : '0');
} }
else else
{ {
// Не опубликован // Не опубликован
$document_status = '0'; $data['document_status'] = '0';
} }
// Если ID документа равно 1 или ID равно Документа 404 // Если ID документа равно 1 или ID равно Документа 404
// то стату всегда будет 1 // то стату всегда будет 1
$document_status = ($document_id == 1 || $document_id == PAGE_NOT_FOUND_ID) $data['document_status'] = ($document_id == 1 || $document_id == PAGE_NOT_FOUND_ID)
? '1' ? '1'
: $document_status; : $data['document_status'];
// Формируем/проверяем адрес на уникальность // Формируем/проверяем адрес на уникальность
if ($document_id != 1) if ($document_id != 1)
@ -1351,7 +1390,7 @@
: '0'; : '0';
// Статус документа 1 - Опубликован / 0 - Нет // Статус документа 1 - Опубликован / 0 - Нет
$document_status = ! empty($data['document_status']) $data['document_status'] = ! empty($data['document_status'])
? (int)$data['document_status'] ? (int)$data['document_status']
: '0'; : '0';
@ -1478,7 +1517,7 @@
// Если пришел вызов поля, который связан с модулем // Если пришел вызов поля, который связан с модулем
if (isset($data['field_module'])) if (isset($data['field_module']))
{ {
while(list($mod_key, $mod_val) = each($data['field_module'])) while(list($mod_key, $mod_val) = each($_REQUEST['field_module']))
{ {
require_once(BASE_DIR . '/modules/' . $mod_val . '/document.php'); require_once(BASE_DIR . '/modules/' . $mod_val . '/document.php');
@ -1535,6 +1574,7 @@
document_tags = '" . addslashes(htmlspecialchars(clean_no_print_char($document_tags))). "', document_tags = '" . addslashes(htmlspecialchars(clean_no_print_char($document_tags))). "',
document_lang = '" . (empty($data['document_lang']) ? DEFAULT_LANGUAGE : $data['document_lang']). "', document_lang = '" . (empty($data['document_lang']) ? DEFAULT_LANGUAGE : $data['document_lang']). "',
document_lang_group = '" . (empty($data['document_lang_group']) ? '0' : (int)$data['document_lang_group']). "', document_lang_group = '" . (empty($data['document_lang_group']) ? '0' : (int)$data['document_lang_group']). "',
document_position = '" . (empty($data['document_position']) ? '0' : (int)$data['document_position']). "',
document_property = '" . (empty($data['document_property']) ? '' : $data['document_property']). "' document_property = '" . (empty($data['document_property']) ? '' : $data['document_property']). "'
$where $where
"; ";
@ -1594,6 +1634,9 @@
// Получаем ID текстовых полей в данном документе // Получаем ID текстовых полей в данном документе
$document_text_fields = $this->_get_document_text_fields($document_id); $document_text_fields = $this->_get_document_text_fields($document_id);
// Собираем запросы в массив
$sql_fields = [];
// Циклически обрабатываем поля документа // Циклически обрабатываем поля документа
foreach ($fields as $k => $v) foreach ($fields as $k => $v)
{ {
@ -1666,7 +1709,7 @@
if ($slash) if ($slash)
$f_val_500 = rtrim ($f_val_500, '\\'); $f_val_500 = rtrim ($f_val_500, '\\');
$sql = " $sql_fields[] = "
$operator $operator
SET SET
$insert $insert
@ -1676,11 +1719,9 @@
: 0) . "', : 0) . "',
document_in_search = '" . $search . "' document_in_search = '" . $search . "'
$where $where
"; ;";
$AVE_DB->Query($sql);
unset ($sql, $f_val_500, $fld_val); unset ($f_val_500, $fld_val);
// Если символов больше 500, то сохраняем их в другой таблице // Если символов больше 500, то сохраняем их в другой таблице
if (mb_strlen($fval) > $substr) if (mb_strlen($fval) > $substr)
@ -1709,22 +1750,20 @@
if ($slash) if ($slash)
$f_val_unlim = '\\' . $f_val_unlim; $f_val_unlim = '\\' . $f_val_unlim;
$sql = " $sql_fields[] = "
$operator $operator
SET SET
$insert $insert
field_value = '" . $f_val_unlim . "' field_value = '" . $f_val_unlim . "'
$where $where
"; ;";
$AVE_DB->Query($sql);
unset($sql, $f_val_unlim); unset ($f_val_unlim);
} }
// Если символов меньше 500, то чистим поле в другой таблице // Если символов меньше 500, то чистим поле в другой таблице
else else
{ {
$AVE_DB->Query(" $sql_fields[] = "
DELETE DELETE
FROM FROM
". PREFIX . "_document_fields_text ". PREFIX . "_document_fields_text
@ -1732,10 +1771,15 @@
document_id = '" . $document_id . "' document_id = '" . $document_id . "'
AND AND
rubric_field_id='" . $fld_id . "' rubric_field_id='" . $fld_id . "'
"); ;";
} }
} }
// Выполняем
$AVE_DB->Queries($sql_fields);
unset ($sql_fields);
$field_module = isset($data['field_module']) $field_module = isset($data['field_module'])
? $data['field_module'] ? $data['field_module']
: ''; : '';
@ -1745,7 +1789,7 @@
// Выполняем код рубрики, после сохранения // Выполняем код рубрики, после сохранения
if ($rubric_code) if ($rubric_code)
eval (' ?>' . $_rubric->rubric_code_end . '<?php '); eval (' ?'.'>' . $_rubric->rubric_code_end . '<?'.'php ');
if ($document_id == 1) if ($document_id == 1)
$hash_url = md5(''); $hash_url = md5('');
@ -2454,27 +2498,36 @@
* *
* @param int $document_id идентификатор Документа * @param int $document_id идентификатор Документа
*/ */
function documentCopy($document_id) function documentCopy ($document_id)
{ {
global $AVE_DB, $AVE_Rubric, $AVE_Template; global $AVE_DB, $AVE_Rubric, $AVE_Template;
// Определяем действие, выбранное пользователем // Определяем действие, выбранное пользователем
switch ($_REQUEST['sub']) switch ($_REQUEST['sub'])
{ {
// Если была нажата кнопка Сохранить изменения // Если была нажата кнопка Сохранить изменения
case 'save': // Сохранение документа в БД case 'save': // Сохранение документа в БД
$public_start = $this->_documentStart(); // Дата/время начала публикации документа $public_start = $this->_documentStart(); // Дата/время начала публикации документа
$public_end = $this->_documentEnd(); // Дата/время окончания публикации документа $public_end = $this->_documentEnd(); // Дата/время окончания публикации документа
$innavi = check_permission_acp('navigation_new') ? '&innavi=1' : '';
$rubric_id = $_REQUEST['rubric_id'];
$innavi = check_permission_acp('navigation_new')
? '&innavi=1'
: '';
// Определяем статус документа // Определяем статус документа
$document_status = !empty($_REQUEST['document_status']) ? (int)$_REQUEST['document_status'] : '0'; $document_status = ! empty($_REQUEST['document_status'])
? (int)$_REQUEST['document_status']
: '0';
// Если статус документа не определен // Если статус документа не определен
if (empty($document_status) && $_SESSION['user_group'] != 1) if (empty($document_status) && $_SESSION['user_group'] != 1)
{ {
$innavi = ''; $innavi = '';
@reset($_POST); @reset($_POST);
$newtext = "\n\n"; $newtext = "\n\n";
// Формируем текст сообщения, состоящий из данных, // Формируем текст сообщения, состоящий из данных,
@ -2487,6 +2540,7 @@
$newtext .= "\n---------------------\n"; $newtext .= "\n---------------------\n";
} }
} }
$text = strip_tags($newtext); $text = strip_tags($newtext);
// Получаем e-mail адрес из общих настроек системы // Получаем e-mail адрес из общих настроек системы
@ -2498,6 +2552,7 @@
$body_to_admin = str_replace('%N%', "\n", $body_to_admin); $body_to_admin = str_replace('%N%', "\n", $body_to_admin);
$body_to_admin = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_admin); $body_to_admin = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_admin);
$body_to_admin = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_admin); $body_to_admin = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_admin);
send_mail( send_mail(
$system_mail, $system_mail,
$body_to_admin . $text, $body_to_admin . $text,
@ -2511,6 +2566,7 @@
$body_to_author = str_replace('%N%', "\n", $AVE_Template->get_config_vars('DOC_MAIL_BODY_USER')); $body_to_author = str_replace('%N%', "\n", $AVE_Template->get_config_vars('DOC_MAIL_BODY_USER'));
$body_to_author = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_author); $body_to_author = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_author);
$body_to_author = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_author); $body_to_author = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_author);
send_mail( send_mail(
$_SESSION['user_email'], $_SESSION['user_email'],
$body_to_author, $body_to_author,
@ -2528,9 +2584,9 @@
$document_status = 0; $document_status = 0;
} }
$_POST['document_status']=$document_status; $_POST['document_status'] = $document_status;
$iid = $this->documentSave($_REQUEST['rubric_id'],null,$_POST,true); $iid = $this->documentSave($_REQUEST['rubric_id'],null, $_POST,true);
if (! $_REQUEST['next_edit']) if (! $_REQUEST['next_edit'])
{ {
@ -2922,9 +2978,9 @@
( (
($document->document_author_id == @$_SESSION['user_id']) ($document->document_author_id == @$_SESSION['user_id'])
&& &&
(isset($_SESSION[$document->rubric_id . '_newnow']) && @$_SESSION[$row->rubric_id . '_newnow'] == 1) (isset($_SESSION[$document->rubric_id . '_newnow']) && @$_SESSION[$document->rubric_id . '_newnow'] == 1)
|| ||
@$_SESSION[$row->rubric_id . '_alles'] == 1 @$_SESSION[$document->rubric_id . '_alles'] == 1
|| ||
(defined('UGROUP') && UGROUP == 1) (defined('UGROUP') && UGROUP == 1)
) )
@ -4260,6 +4316,7 @@
exit; exit;
} }
/** /**
* Метод, предназначенный для * Метод, предназначенный для
* *
@ -4281,5 +4338,54 @@
exit; exit;
} }
/**
* Метод, предназначенный для
*
*/
function documentPosition()
{
global $AVE_DB, $AVE_Template;
$query = false;
if (isset($_REQUEST['id']))
{
$docid = (int)$_REQUEST['id'];
$value = (int)$_REQUEST['value'];
$sql = "
UPDATE
".PREFIX."_documents
SET
document_position = " . $value . "
WHERE
Id = " . $docid . "
";
$query = $AVE_DB->Query($sql);
}
if ($query === false)
$return = [
'message' => $AVE_Template->get_config_vars('DOCUMENT_POSITION_ERR'),
'header' => $AVE_Template->get_config_vars('DOCUMENT_POSITION_ERROR'),
'theme' => 'error'
];
else
$return = [
'message' => $AVE_Template->get_config_vars('DOCUMENT_POSITION_OK'),
'header' => $AVE_Template->get_config_vars('DOCUMENT_POSITION_SUCCESS'),
'theme' => 'accept'
];
if (isAjax())
echo _json($return, true);
else
header('Location:index.php?do=sysblocks&cp=' . SESSION);
exit;
}
} }
?> ?>

9
class/class.paginations.php

@ -132,12 +132,15 @@
$search = array('[link]', '[page]', '[name]'); $search = array('[link]', '[page]', '[name]');
$replace = array($template_label, $page, $page); $replace = array($template_label, $page, $page);
if ($curent_page != 1) if ($curent_page != 1) {
$link = str_replace($search, $replace, $pagination_link_template); $link = str_replace($search, $replace, $pagination_link_template);
$pagination .= sprintf($pagination_link_box, str_replace(array('{s}', '{t}'), $page, str_replace(array('&amp;' . $type . '={s}', '&' . $type . '={s}', '/' . $type . '-{s}'), '', $link)));
}
else else
{
$link = str_replace($search, $replace, $pagination_link_active_template); $link = str_replace($search, $replace, $pagination_link_active_template);
$pagination .= sprintf($pagination_active_link_box, str_replace(array('{s}', '{t}'), $page, str_replace(array('&amp;' . $type . '={s}', '&' . $type . '={s}', '/' . $type . '-{s}'), '', $link)));
$pagination .= sprintf($pagination_link_box, str_replace(array('{s}', '{t}'), $page, str_replace(array('&amp;' . $type . '={s}', '&' . $type . '={s}', '/' . $type . '-{s}'), '', $link))); }
} }
// Остальные неактивные номера страниц // Остальные неактивные номера страниц
else else

26
tmp/update/sql.update.php

@ -1,4 +1,4 @@
<? <?php
/* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */
/* -------------------------------------------------------3.24-------------------------------------------------- */ /* -------------------------------------------------------3.24-------------------------------------------------- */
/* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */
@ -347,4 +347,28 @@
`sysblock_active` `sysblock_active`
"); ");
} }
// ----------------------------------------------------------------------------------------
$check = $AVE_DB->Query("
SHOW COLUMNS
FROM
" . PREFIX . "_documents
LIKE
'document_position'
")->NumRows();
$exist = ($check) ? true : false;
if ($exist === false)
{
$AVE_DB->Real_Query("
ALTER TABLE
" . PREFIX . "_documents
ADD
`document_position` int(10) NOT NULL DEFAULT '0'
AFTER
`document_property`
");
}
?> ?>
Loading…
Cancel
Save