Вы не зашли.
"Модуль новостей" чем не устроил?
2. Видимо эта возможность планировалась, раз даже поле в БД уже есть
/engine/plugins/feedback/config.php
#1. Найти
$mysql->select("update ".prefix."_feedback set name=".db_squote($name).", title=".db_squote($_REQUEST['title']).", template=".db_squote($_REQUEST['template']).", emails=".db_squote($_REQUEST['emails']).", description=".db_squote($_REQUEST['description']).", active=".intval($_REQUEST['active']).", flags=".intval($flags)." where id = ".$id);
#1. Заменить на
$mysql->select("update ".prefix."_feedback set name=".db_squote($name).", title=".db_squote($_REQUEST['title']).", template=".db_squote($_REQUEST['template']).", emails=".db_squote($_REQUEST['emails']).", description=".db_squote($_REQUEST['description']).", active=".intval($_REQUEST['active']).", regonly=".intval($_REQUEST['regonly']).", flags=".intval($flags)." where id = ".$id);
#2. Найти
'active' => $frow['active']?$lang['yesa']:$lang['noa'],
#2. Добавить после
'regonly' => $frow['regonly']?$lang['yesa']:$lang['noa'],
#3. Найти
$tvars['vars']['active_checked'] = ($edMode?$_REQUEST['active']:$frow['active'])?'checked="checked"':'';
#3. Добавить после
$tvars['vars']['regonly_checked'] = ($edMode?$_REQUEST['regonly']:$frow['regonly'])?'checked="checked"':'';
/engine/plugins/feedback/feedback.php
#4. Найти
function plugin_feedback_screen() {
global $template, $tpl, $lang, $mysql, $userROW;
#4. Заменить на
function plugin_feedback_screen() {
global $template, $tpl, $lang, $mysql, $userROW, $is_logged;
#5. Найти
// Prepare params
$tvars = array();
$tvars['vars']['ptpl_url'] = $ptpl_url;
$tvars['vars']['id'] = $frow['id'];
$tvars['vars']['description'] = $frow['description'];
$tvars['vars']['entries'] = $output;
$tvars['vars']['form_url'] = GetLink('plugins', array('plugin_name' => 'feedback'));
#5. Добавить после
if ($frow['regonly'] && !$is_logged)
{
$tvars['regx']["'\[is-logged\](.*?)\[/is-logged\]'si"] = '';
$tvars['regx']["'\[isnt-logged\](.*?)\[/isnt-logged\]'si"] = '$1';
}
else
{
$tvars['regx']["'\[is-logged\](.*?)\[/is-logged\]'si"] = '$1';
$tvars['regx']["'\[isnt-logged\](.*?)\[/isnt-logged\]'si"] = '';
}
#6. Найти
function plugin_feedback_post() {
global $template, $tpl, $lang, $mysql, $userROW;
#6. Заменить на
function plugin_feedback_post() {
global $template, $tpl, $lang, $mysql, $userROW, $is_logged;
#7. Найти
// Unpack form data
$fData = unserialize($frow['struct']);
if (!is_array($fData)) $fData = array();
// Scan all fields and fill data. Prepare outgoing email.
$output = '';
foreach ($fData as $fName => $fInfo) {
switch ($fInfo['type']) {
case 'date': $fieldValue = $_REQUEST[$fName.':day'] . '.' . $_REQUEST[$fName.':month'] . '.' . $_REQUEST[$fName.':year'];
break;
default: $fieldValue = $_REQUEST[$fName];
}
$output .= '['.$fName.'] '.$fInfo['title'].': '.$fieldValue."<br/>\n";
}
#7. Добавить перед
if ($frow['regonly'] && !$is_logged)
{
$tpl->template('site.infoblock', $tpath['site.infoblock']);
$tpl->vars('site.infoblock', array( 'vars' => array( 'title' => $frow['title'], 'ptpl_url' => $ptpl_url, 'entries' => "You're not so cool?")));
$template['vars']['mainblock'] = $tpl->show('site.infoblock');
return;
}
/engine/plugins/feedback/tpl/conf.form.hdr.tpl
#8. Найти
<tr align="left"><td class="contentRow" width="170"><b>Активна:</b></td><td><input type="checkbox" name="active" value="1" {active_checked} /></td></tr>
#8. Добавить после
<tr align="left"><td class="contentRow" width="170"><b>Требуется регистрация:</b></td><td><input type="checkbox" name="regonly" value="1" {regonly_checked} /></td></tr>
/engine/plugins/feedback/tpl/conf.forms.hdr.tpl
#9. Найти
<td colspan="7" width=100% class="contentHead"><img src="{skins_url}/images/nav.gif" hspace="8">Редактирование форм обратной связи</td>
#9. Заменить на
<td colspan="6" width=100% class="contentHead"><img src="{skins_url}/images/nav.gif" hspace="8">Редактирование форм обратной связи</td>
#10. Найти
<td class="contentHead"><b>Активна</b></td>
#10. Добавить после
<td class="contentHead" width="87"><b>Требуется регистрация</b></td>
/engine/plugins/feedback/tpl/conf.form.hdr.tpl
#11. Найти
<td>{active}</td>
#11. Добавить после
<td>{regonly}</td>
/engine/plugins/feedback/tpl/site.form.hdr.tpl
#12. Вставить в начало
[isnt-logged]
Для заполнения данной формы требуется регистрация
[/isnt-logged]
[is-logged]
#12. Вставить в конец
[/is-logged]
/engine/includes/inc/functions.inc.php
#1. Найти
// makeCategoryList - make <SELECT> list of categories
// Params: set via named array
// * name - name field of <SELECT>
// * selected - ID of category to be selected
// * skip - ID of category to skip or array of IDs to skip
// * doempty - add empty category to the beginning ("no category"), value = 0
// * doall - all category named "ALL" to the beginning, value is empty
// * nameval - use DB field "name" instead of ID in HTML option value
// * resync - flag, if set - we make additional lookup into database for new category list
function makeCategoryList($params = array() /*selected=0, $my=0, $noempty=0, $name='category'*/){
global $catz, $lang, $mysql;
if (!is_array($params['skip'])) { $params['skip'] = $params['skip']?array($params['skip']):array(); }
$name = array_key_exists('name', $params)?$params['name']:'category';
$out = "<select name=\"$name\" id=\"catmenu\"".($params['class']?' class="'.$params['class'].'"':'').">\n";
if ($params['doempty']) { $out.= "<option value=\"0\">".$lang['no_cat']."</option>\n"; }
if ($params['doall']) { $out.= "<option value=\"\">".$lang['sh_all']."</option>\n"; }
if ($params['resync']) {
$catz = array();
foreach ($mysql->select("select * from `".prefix."_category` order by posorder asc", 1) as $row) {
$catz[$row['alt']] = $row;
$catmap[$row['id']] = $row['alt'];
}
}
foreach($catz as $k => $v){
if (in_array($v['id'], $params['skip'])) { continue; }
$out.="<option value=\"".($params['nameval']?$v['name']:$v['id'])."\"".(($v['id']==$params['selected'])?' selected="selected"':'').">".str_repeat('— ', $v['poslevel']).$v['name']."</option>\n";
}
$out.="</select>";
return $out;
}
#1. Добавить после
// makeCategoryBlock - make block of categories
// Params: set via named array
// * name - field name
// * selected - ID of category to be selected or array of IDs to be selected
// * skip - ID of category to skip or array of IDs to skip
// * resync - flag, if set - we make additional lookup into database for new category list
function makeCategoryBlock($params = array()){
global $catz, $mysql;
if (!is_array($params['selected'])) { $params['selected'] = $params['selected']?array($params['selected']):array(); }
if (!is_array($params['skip'])) { $params['skip'] = $params['skip']?array($params['skip']):array(); }
$name = array_key_exists('name', $params)?$params['name']:'categories';
$col = isset($params['col']) ? $params['col'] : 3;
$selected = implode(',', $params['selected']);
$out = "<input type=\"hidden\" name=\"$name\" id=\"categories\" value=\"$selected\" />\n";
if ($params['resync']) {
$catz = array();
foreach ($mysql->select("select * from `".prefix."_category` order by posorder asc", 1) as $row) {
$catz[$row['alt']] = $row;
$catmap[$row['id']] = $row['alt'];
}
}
foreach($catz as $k => $v){
if (in_array($v['id'], $params['skip'])) { continue; }
$out.="<div id=\"cat_{$v['id']}\" onclick=\"selectcat({$v['id']}); return false;\" class=\"catblock".(in_array($v['id'], $params['selected'])?'_selected':'')."\">".str_repeat('— ', $v['poslevel']).$v['name']."</div>";
}
return $out;
}
/engine/includes/js/functions.js
#2. Найти
function addcat(){
if (document.getElementById('categories').value != '' && document.getElementById('catmenu').value != '') {
document.getElementById('categories').value = document.getElementById('categories').value + ", " + document.getElementById('catmenu').value;
}
else if (document.getElementById('catmenu').value != '') {
document.getElementById('categories').value = document.getElementById('catmenu').value;
}
document.getElementById('catmenu').options[document.getElementById('catmenu').selectedIndex] = null;
if (document.getElementById('catmenu').options.length == 0) {
document.getElementById('catmenu').disabled = true;
document.getElementById('catbutton').disabled = true;
}
}
#2. Добавить после
var categories = new Array();
var className = '';
function selectcat(id){
if (id in categories && categories[id] != '') {
categories[id] = '';
document.getElementById('cat_' + id).className = className;
}
else {
categories[id] = id;
className = document.getElementById('cat_' + id).className;
document.getElementById('cat_' + id).className = className + '_selected';
}
document.getElementById('categories').value = categories.join(',');
}
/engine/actions/addnews.php
#3. Найти
'catlist' => makeCategoryList(array('nameval' => 1)),
#3. Добавить после
'catblock' => makeCategoryBlock(),
/шаблон/addnews.tpl (на примере default)
#4. Найти
<tr>
<td width="100%" style="padding: 3px;">{l_category} {catlist} <input type="button" name="catbutton" id="catbutton" value="{l_add}" class="button" onClick="addcat(); return false;" /></td>
</tr>
#4. Заменить на
<tr>
<td width="100%" style="padding: 3px;">{catblock}</td>
</tr>
#5. Добавить стили
.catblock {
float: left;
width: 33%; /* 100 / 33 = 3 категории в ряду */
}
.catblock_selected {
float: left;
width: 33%;
background: #ff0000; /* красный фон для выделенных категорий */
}
#6. Перейти в браузере по адресу: http://ваш_сайт/engine/includes/js/functions.js и нажать F5 (чтобы обновить functions.js в кэше браузере)
Enjoy!
Переделки, или хотя бы плагины, можешь приаттачить? Чтобы не лазить по 2з форуму
На главной, если только флаг своей страны выводить. Вдруг посетитель забыл совсем случайно, в какой стране он находится
Если я правильно понимаю, то не должно.
Когда выполняется exec_acts для comments, в параметрах передается еще и $row, в котором есть IP
При вызове же exec_acts для index ничего такого не передается, соотв. флаг всегда будет 0.gif.
Я то вообще в программировании ноль!!!!
Тогда эти знания будут бесполезны
Зачем здесь вообще плагин? Создай статическую страницу и добавь туда все баннеры
Если просто вставлять код баннера в новость то он не показывается!!!
HTML в новости не включен
"Разрешить использовать HTML теги" на вкладке "Дополнительно" при добавлении/редактировании новости
Если пойти по пути наименьшего сопротивления:
Создать категории, к примеру news_ru, news_en, news_de и т.п.
Вставить на главной где-нибудь вверху в углу флажки с ссылками вида: /?lang=ru
В news_showone() и в consts.inc.php прилепить к названию категории: _ru, _en или _de, в зависимости от значения $_REQUEST['lang']
Вот как-то так
Квадратиков не останется, чуть выше есть строка:
imagefilledrectangle($newimg, 0,0, $newX, $newY, $colors[0]);
Измененный градиент смотрится на фоне только лучше. Создается ощущение псевдо-прозрачности. Все-таки это тень.
edit:
Думаю, разница видна прекрасно:
http://ipicture.ru/uploads/090506/29625/zdQO1Op2u1.png
Слева вариант с "подпорченным" градиентом
Там уже есть заливка, достаточно отредактировать
$background = array("r" => 255, "g" => 255, "b" => 255);
что и было в 3-ем сообщении этой темы
Ну так это и есть цвет, в который переходит тень
Просто, т.к. в тех уголках тени нету, они заливаются этим цветом целиком
Тогда может
imagefill($newimg,0,0,'0xFFFFFF');
и вовсе закомментить?
Я не понял о каком фоне речь идет )
Сделай скрин, пожалуйста, и выдели лично для меня там фон )
Это цвет, в который будет переходить тень
Создание/удаление групп пользователей
Возможность настроить отдельно каждой группе:
- Права на добавление/редактирование/удаление своих/всех новостей
- Настройка показа капчи для отдельных групп
- Разрешить/запретить: публиковать новости без модерации, прикреплять новости, добавлять в закладки, разрешать/запрещать комментарии в новости, использовать html, включать/отключать автоформатирование в новости, задавать кол-во просмотров, задавать отображение на главной, дату новости, загрузка файлов/изображений в новости
- Настройка доступа к разделам
- Просмотр отключенного сайта
- Просмотр [hide][/hide]
- Скачивание файлов
- Возможность поиска
- Размеры аватаров
Возможность в плагинах не только читать существующие права, но и создавать новые под собственные нужды
Чтобы не создавать новых тем, напишу тут так же:
Возможность делать датированные бэкапы после каждого редактирования новости. Можно настраивать выборочно для новостей/категорий
Автобэкап всей БД конечно есть, но возможность откатить то или иное изменение одним кликом мыши и без лишних телодвижений -- будет весьма полезной
И еще:
Под Денвером не загружались изображения, начал ковырять
$_FILES[_name_]['tmp_name'] содержит в путях \ слэши, которые просто вырезаются при включенном magic_quotes_gpc
После отключения все стало загружаться нормально
Полагаю что так не только в Денвере, а вообще в Windows
Если я правильно понял что требуется, то это здесь:
/engine/includes/classes/upload.class.php
// Resize image
imagefill($newimg,0,0,'0xFFFFFF');
Поставил плагин, повторил вышесказанное. Теги не пропадали только тогда, когда стоимость доступа не была указана (на второй вкладке при создании/редактировании новости)
Включение тестового режима плагина fin_wm не играет абсолютно никакой роли
А кто сказал, что каждый юзер будет увеличивать шрифт? Делается-то оно проще простого, только вот большинство, я думаю, текущий размер устраивает полностью
То самое
Основные настройки
Домашняя страница сайта = http://{domain}
Страница админ-панели = http://{domain}/engine
Изображения
Ссылка к папке для загрузки изображений = http://{domain}/uploads/images
Файлы
Ссылка к папке для загрузки файлов = http://{domain}/uploads/files
Домены
Список доменных имён сайта
dentalpractice.ru
lebedevclinic.ru
И самое главное, не забудь в панели управления сервером (cPanel, DirectAdmin и т.п.) настроить lebedevclinic.ru как alias для домена dentalpractice.ru
Насчет названия плагина по центру
/templates/globlog/css/style.css
Найти
.widget_style h2 {font-size:1.18em; line-height:1.01em; color:#EFF2F3; font-weight:bold; padding:10px 0 0 48px;}
Заменить на
.widget_style h2 {font-size:1.18em; line-height:1.01em; color:#EFF2F3; font-weight:bold; padding:10px 0 0 0px; text-align:center;}
Насчет кол-ва бэкапов
/engine/includes/inc/functions.inc.php
Найти
if (is_link($sd . '/' . $dfile[$level]) || $dfile[$level] == '.' || $dfile[$level] == '..')
Заменить на
if (is_link($sd . '/' . $dfile[$level]) || $dfile[$level] == '.' || $dfile[$level] == '..' || $dfile[$level] == '.htaccess')
А в стандартных местах (при реге, при написании комментов) работает нормально?
так работает?
ps. Если просто переименовать папку, то будет
Called method '' is not available for plugin 'guestbook'
Wolverine, сделай phpinfo();
У GD во "FreeType Support" что написано?
edit: плагин не находил свои шаблоны, пока не заменил /guestbook/tpl на /dr_guestbook/tpl в следующих строках:
$tpl -> template('form', extras_dir.'/guestbook/tpl');
$tpl -> template('guestbook', extras_dir.'/guestbook/tpl');
$tpl -> template('comments', extras_dir.'/guestbook/tpl');
А если отключено автоформатирование и возможность использования HTML? Правда не знаю, зачем его отключать