Skip to content

Commit

Permalink
v1.2
Browse files Browse the repository at this point in the history
- Ещё небольшой рефакторинг
- Исправлена ошибка при установке произвольного префикса кеша
- Добавлена документация
  • Loading branch information
pafnuty committed Jan 10, 2015
1 parent 1689bcd commit 9cfee98
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 32 deletions.
26 changes: 26 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
@@ -1 +1,27 @@
# Документация
## Параметры, принимаемые модулем
Модуль принимает через GET-запросы следующие параметры:
- `newsId` - **Обязательный параметр.** ID новости для показа.
- `template` - Путь к шаблону модуля относительно текущей папки с шаблоном сайта. Если на сайте разрешена смена скина, то путь будет построен относительно активного в данный момент шаблона сайта. По умолчанию: **{THEME}/ajax/fullstory**.
- `preset` - Путь к файлу с настройками модуля. По умолчанию не используется.

## Настройки модуля
Настройки модуля хранятся в отдельном файле, это сделано для безопасной передачи настроек и уменьшения нагрузки на хостинг.
Для хранения настроек был выбран формат шаблона т.к. его можно отредактировать через админпанель.

При формировании настроек необходимо соблюдать следующий синтаксис:
- Параметры необходимо писать по одному в строке.
- Имя параметра и его значение необходимо разделять знаком равенства.

**На данный момент возможно использование следующих параметров:**
- `fields` - Поля, отбираемые из БД. Доступны следующие поля для запроса:
- `short_story, full_story, xfields, comm_num, fixed, tags`
- Так же можно использовать поле `all`, тогда будут отобраны все возможные поля новости из БД. Аналогичный результат будет, если не передавать в модуль переменную preset или передать пустую.
- `cachePrefix` - Префикс кеша, создаваемого модулем. По умолчанию `full`. Если вы хотите, чтобы кеш модуля автоматически не чистился - можно изменить этот параметр.

## Стилизация ошибок
Для того, чтобы стилизовать разные ошибки, выводимые модулем, в соответствии с вашими пожеланиями, необходимо использовать следующие css-классы:
- `.afs-error` - Общий стиль для всех ошибок.
- `.afs-news-error` - Стиль ошибки, если новость не найдена.
- `.afs-tpl-error` - Стиль ошибки, если не найден шаблон.
- `.afs-perm-error` - Стиль ошибки, если не достаточно прав для просмотра полной новости.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
2. Залить содержимое папки **upload** в корень сайта.
3. В нужном месте любого шаблона вставить
``` html
<span class="btn" data-fs-id="{news-id}">Быстрый просмотр</span>
<span data-afs-id="{news-id}">Быстрый просмотр</span>
```
где `{news-id}` -- ID новости (**обязательный параметр**)
4. В js файл шаблона вставить:
Expand Down Expand Up @@ -84,5 +84,12 @@ $(document).on('click', '[data-afs-id]', function () {
color: #F5F5F5;
}
```

## Документация
- в работе.
- Документация по модулю находится на [этой странице](https://github.com/pafnuty/ajax-full-story-DLE/blob/master/DOCUMENTATION.md)

## Контакты
URL: http://pafnuty.name/
twitter: https://twitter.com/pafnuty_name
google+: http://gplus.to/pafnuty
email: pafnuty10@gmail.com
60 changes: 30 additions & 30 deletions upload/engine/ajax/full-story.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
google+: http://gplus.to/pafnuty
email: pafnuty10@gmail.com
-----------------------------------------------------------------------------
Версия: 1.1 от 10.01.2015
Версия: 1.2 от 10.01.2015
=============================================================================
*/

Expand Down Expand Up @@ -117,7 +117,7 @@
$template_dir = ROOT_DIR . '/templates/' . $config['skin'];

// Пытаемся получить даные из шаблона с настройками
$presetFile = (!empty($_REQUEST['preset'])) ? $_REQUEST['preset'] : false;
$presetFile = (!empty($_GET['preset'])) ? $_GET['preset'] : false;
if ($presetFile) {
// Если название шаблона передано, то получаем из него конфиг
if (file_exists($template_dir . '/' . $presetFile . '.tpl')) {
Expand Down Expand Up @@ -190,25 +190,25 @@
}

// Конфиг модуля
$fsCfg = array(
'template' => !empty($_REQUEST['template']) ? $_REQUEST['template'] : 'ajax/fullstory',
'cachePrefix' => !empty($arConf['cachePrefix']) ? $arConf['cachePrefix'] : 'full_' . (int) $_REQUEST['newsId'],
'newsId' => ((int) $_REQUEST['newsId'] > 0) ? (int) $_REQUEST['newsId'] : '0',
$afsCfg = array(
'template' => !empty($_GET['template']) ? $_GET['template'] : 'ajax/fullstory',
'cachePrefix' => !empty($arConf['cachePrefix']) ? $arConf['cachePrefix'] '_' . (int) $_GET['newsId'] : 'full_' . (int) $_GET['newsId'],
'newsId' => ((int) $_GET['newsId'] > 0) ? (int) $_GET['newsId'] : '0',
'fields' => $queryFields,
);

if ($fsCfg['newsId'] < 1) {
if ($afsCfg['newsId'] < 1) {
die('error');
}

// Формируем имя кеша
$cacheName = md5(implode('_', $fsCfg)) . $config['skin'];
$fs = false;
$cacheName = md5(implode('_', $afsCfg)) . $config['skin'];
$afs = false;
// Пытаемся получить даные из кеша
$fs = dle_cache($fsCfg['cachePrefix'], $cacheName, true);
if (!$fs) {
$afs = dle_cache($afsCfg['cachePrefix'], $cacheName, true);
if (!$afs) {
// Если ничего нет - работаем
if (file_exists($template_dir . '/' . $fsCfg['template'] . '.tpl')) {
if (file_exists($template_dir . '/' . $afsCfg['template'] . '.tpl')) {
// Если файл шаблона есть - работаем

// По умолчанию доступ к новости разрешен
Expand All @@ -218,7 +218,7 @@
$allow_list = explode(',', $user_group[$member_id['user_group']]['allow_cats']);

// Получаем новость
$query = "SELECT " . $fsCfg['fields'] . " FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id = " . $fsCfg['newsId'];
$query = "SELECT " . $afsCfg['fields'] . " FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id = " . $afsCfg['newsId'];

$row = $db->super_query($query);

Expand Down Expand Up @@ -311,7 +311,7 @@
define('TEMPLATE_DIR', $tpl->dir);

// Подгружаем шаблон
$tpl->load_template($fsCfg['template'] . '.tpl');
$tpl->load_template($afsCfg['template'] . '.tpl');

// Определяем IP
$_IP = get_ip();
Expand Down Expand Up @@ -825,50 +825,50 @@

$category_id = $row['category'];

$tpl->compile('fs');
$tpl->compile('afs');

$tpl->result['fs'] = preg_replace_callback("#\\[declination=(\d+)\\](.+?)\\[/declination\\]#is", "declination", $tpl->result['fs']);
$tpl->result['afs'] = preg_replace_callback("#\\[declination=(\d+)\\](.+?)\\[/declination\\]#is", "declination", $tpl->result['afs']);

if ($user_group[$member_id['user_group']]['allow_hide']) {
$tpl->result['fs'] = str_ireplace("[hide]", "", str_ireplace("[/hide]", "", $tpl->result['fs']));
$tpl->result['afs'] = str_ireplace("[hide]", "", str_ireplace("[/hide]", "", $tpl->result['afs']));
} else {
$tpl->result['fs'] = preg_replace("#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['fs']);
$tpl->result['afs'] = preg_replace("#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['afs']);
}

$tpl->result['fs'] = preg_replace("'\\[banner_(.*?)\\](.*?)\\[/banner_(.*?)\\]'si", '', $tpl->result['fs']);
$tpl->result['afs'] = preg_replace("'\\[banner_(.*?)\\](.*?)\\[/banner_(.*?)\\]'si", '', $tpl->result['afs']);

$tpl->result['fs'] = str_ireplace('{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['fs']);
$tpl->result['afs'] = str_ireplace('{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['afs']);

$news_id = $row['id'];

$tpl->clear();

if ($config['files_allow'] AND $config['files_allow'] != 'no') {
if (strpos($tpl->result['fs'], "[attachment=") !== false) {
$tpl->result['fs'] = show_attach($tpl->result['fs'], $news_id);
if (strpos($tpl->result['afs'], "[attachment=") !== false) {
$tpl->result['afs'] = show_attach($tpl->result['afs'], $news_id);
}
}

$fs = $tpl->result['fs'];
$afs = $tpl->result['afs'];

create_cache($fsCfg['cachePrefix'], $fs, $cacheName, true);
create_cache($afsCfg['cachePrefix'], $afs, $cacheName, true);
}// $row['id'] AND $perm

// Если доступ есть, но id новости не существует - скажем об этом.
if (!$row['id'] AND $perm) {
$fs = '<div class="fs-error fs-news-error"><b>Ошибка.</b> Статья не существует или удалена.</div>';
$afs = '<div class="afs-error afs-news-error"><b>Ошибка.</b> Статья не существует или удалена.</div>';
}

unset($row);

if (!$perm) {
$fs = '<div class="fs-error fs-perm-error"><b>' . $user_group[$member_id['user_group']]['group_name'] . '</b> не имеют доступа для просмотра статей из данного раздела.</div>';
$afs = '<div class="afs-error afs-perm-error"><b>' . $user_group[$member_id['user_group']]['group_name'] . '</b> не имеют доступа для просмотра статей из данного раздела.</div>';
}

} else {
// Если файла шаблона нет - скажем об этом на понятном языке.
$fs = '<div class="fs-error fs-tpl-error">
<b>Ошибка.</b> Отсутствует файл шаблона: /templates/' . $config['skin'] . '/' . $fsCfg['template'] . '.tpl
$afs = '<div class="afs-error afs-tpl-error">
<b>Ошибка.</b> Отсутствует файл шаблона: /templates/' . $config['skin'] . '/' . $afsCfg['template'] . '.tpl
</div>';
}
}
Expand All @@ -878,7 +878,7 @@
// Определяем дату создания кеша, при использовании файлового кеша
// @TODO: наладить Expires при работе с мемкешем.
$_end_file = ($is_logged) ? '_' . $member_id['user_group'] : '_0';
$filedate = ENGINE_DIR . '/cache/' . $fsCfg['cachePrefix'] . '_' . md5($cacheName) . $_end_file . '.tmp';
$filedate = ENGINE_DIR . '/cache/' . $afsCfg['cachePrefix'] . '_' . md5($cacheName) . $_end_file . '.tmp';

header('Content-Type: text/html; charset=' . $config['charset']);
header('Cache-Control: public, max-age=' . $seconds);
Expand All @@ -901,4 +901,4 @@
}

// Выводим результат
echo $fs;
echo $afs;

0 comments on commit 9cfee98

Please sign in to comment.