Главное меню
все форумы все темы форума добавить тему
Модуль блога.
Спасибо, все понял. Я ещё как раз не описал методы удаления и редактирования.
Думаю, что завтра этим займусь.
Тут вроде бы разобрался. На счет меток, все работает так как нужно.
Осталось предосмотреть проверку удаления метки из табл. ?_blog_tags, при удалении либо редактировании топика.
Потому, что пока если удаляем/редактируем топик, в таблице ?_blog_tags метки то остаються.
По идее, и пусть остаются: сегодня этот тег не используется, а завтра используется. А если ему каждый раз присваивать новый id, то это будет неудобно.
Но какой-то механизм очистки, конечно, нужен... А то таблица довольно быстро зарастет всякими "сорняками".
Ну тут пока на ум приходит метод проверки описанный Вами выше (...tag_id NOT IN (?a)) .
Только вот если будет много топиков, врядли этот вариант подойдет.
Если много, то, вероятно, больше подойдет левое соединение:
MySQL
SELECT t.tag_id
FROM ?_tags t
LEFT JOIN ?_tags_item ti ON t.tag_id=ti.tag_id
HAVING ti.tag_id IS NULL
Да, действительно так возвращается.
При вот таком запросе:
MySQL

SELECT t.tag_id AS ARRAY_KEY,tt.tag_id,t.tag_text
FROM ?_blog_tags t
LEFT JOIN ?_blog_topic_tags tt ON t.tag_id=tt.tag_id
HAVING tt.tag_id IS NULL
 

Возвращается:
PHP

Array
(
    [4] => Array
        (
            [tag_id] =>
            [tag_text] => новая метка
        )
 
    [7] => Array
        (
            [tag_id] =>
            [tag_text] => метки2
        )
 
)
 

Собственно без AS ARRAY_KEY, tag_id тоже почему-то нет.
UPD:
А вот так:
MySQL

SELECT t.tag_id as tags_id,tt.tag_id,t.tag_text
FROM ?_blog_tags t
LEFT JOIN ?_blog_topic_tags tt ON t.tag_id=tt.tag_id
HAVING tt.tag_id IS NULL
 

Вот:
PHP

Array
(
    [0] => Array
        (
            [tags_id] => 4
            [tag_id] =>
            [tag_text] => новая метка
        )
 
    [1] => Array
        (
            [tags_id] => 7
            [tag_id] =>
            [tag_text] => метки2
        )
)
 

Если же убрать из запроса в первой строчке tt.tag_id, будет ошибка
MySQL
"Unknown column 'tt.tag_id' in 'having clause'"
Можно так сделать:
MySQL
SELECT t.tag_id, t.tag_text
FROM ?_blog_tags t
LEFT JOIN ?_blog_topic_tags tt ON t.tag_id=tt.tag_id
WHERE tt.tag_id IS NULL
Спасибо, так и сделал
 
UPD:
Вроде как функционал, который был выбран для основы реализован.
Итак, что сейчас доступно из функционала:
-Добавление категорий блогов.
-Добавление топиков в определенную категорию.
-Редактирование своих топиков.
-Удаление своих топиков.
-Блог для каждого пользователя по умолчанию.
-Метки.
-Листинг всех топиков на странице по умолчанию.
-Листинг всех топиков определённой категории блога.
Что планирую на ближайшие несколько дней:
Теперь нужно немного привести к базовому виду сам шаблон, прикрепить tinymce.
Разобратся с правами пользователей.
На счет прав, думаю что нужно сделать так:
пока всё стандартно: редактирование, удаление, добавление топиков.
Скорее всего нужно добавить ещё права модератора, по определённым категориям блогов, ну и администратора...
С tinymce есть определенная трудность. Точнее, не конкретно с ним, а с файлменеджером - он не рассчитан на многопользовательскую работу. Так что по-умолчанию его надо либо запретить, либо придется его допиливать под потребности.
Понятно, тогда пока нужно подключить основные кнопки (упр. шрифтом, кнопка ката).
Loki:
С tinymce есть определенная трудность. Точнее, не конкретно с ним, а с файлменеджером - он не рассчитан на многопользовательскую работу. Так что по-умолчанию его надо либо запретить, либо придется его допиливать под потребности.

Значит, нужно будет написать под него плагин, именно для загрузки фото.
Пока я подключил основные кнопки, как и писал выше.
В принципе, думаю что в ближайшие дни смогу Вам скинуть, то что имеется на данный момент.
Defari:
Значит, нужно будет написать под него плагин, именно для загрузки фото.

Ну или попытаться допилить файлменеджер. Это последняя бесплатная версия, которую автор выпустил по лицензии GPL, следующая была уже платная. Так что, судя по всему, обновлений не будет - можно курочить самим.
Loki:

Ну или попытаться допилить файлменеджер. Это последняя бесплатная версия, которую автор выпустил по лицензии GPL, следующая была уже платная. Так что, судя по всему, обновлений не будет - можно курочить самим.

Да, думаю с этим разберемся.
Скорее всего, что бы оставить кат при редактировании топика, нужно добавить ещё одно поле в БД, где будет лежать вся статья вместе с тегом ката...
Тег можно вырезать перед отображением... или вообще не вырезать - оставлять в виде комментария.
Теперь все данные от пользователя эскейпяться. Проверил, - вроде бы теперь инъекции не проходят.
Дописал листинг блогов, доступный для админа. Выводится в виде таблицы.
Осталось подумать что делать с топиками, если блог удалить.
Или же удалять топики, или же нужно создать еще 1 категорию блога по умолчанию, куда будут "сливатся" такие топики.
Скажите, после того, как модуль стал доступен в паблике, над ним еще продолжаются работы? Если да, то какие функции или настройки стоит ждать?
Да, работа ведется.
Прежде всего будет добавлена страница, на которой можно будет посмотреть информацию, комментарии, и остальные топики автора.
Так же хотелось бы организовать рейтинговою систему для авторов/топиков. Но здесь мне еще не совсем понятно как это реализовать из технической стороны.
Ну и пока еще обдумываю возможность подписатся под определенный блог, ну и личную ленту под подписанные блоги соответственно.
Измените, пожалуйста, в файле form_add.tpl во второй и третьей строчке путь на такой:
Text
<link rel="stylesheet" type="text/css" href="{$base}at_blog/js/skins/markitup/style.css" />
<link rel="stylesheet" type="text/css" href="{$base}at_blog/js/sets/default/style.css" />

Добавьте jQuery в пакет загрузки, а то его там нету.
И ещё одно, не знаю, может это не столь существенно, но у меня с этим были проблемы: для js-файлов важен порядок подключения, а подключаются они в алфавитном порядке. Мне пришлось изменять имена файлов, а поскольку там не пару js + ещё <script> в tpl файле - я долго подбирал очерёдность с отладчиком. Вот что у меня получилось:
Пути исправил, спасибо!
Что бы все заработало, нужно подключить файл самого фреймворка jQuery раньше, то бишь положить его в папку "js" самого скина, а не модуля. Теперь файл с jQuery уже лежит, где нужно, и ничего больше менять не потребуется.
Сейчас тестирую последнюю версию модуля, так вот была замечена странная штука...
Я добавил 2 режима работы модуля, вот как выглядит config.xml:
XML
 <config>
            <name>blog_mode</name>
            <type>select</type>
            <title>Режим работы модуля (однопользовательский / многопользовательский)</title>
            <describe>В однопользовательском режиме блоги может добавлять и вести только админ. А в многопользовательском, другие пользователи сайта так же могут вести свои блоги.</describe>
            <default>1</default>
            <callback>config_blog_mode</callback>
        </config>

Вот так выглядит callback функция:
PHP
function config_blog_mode()
    {
        $blog_modes[1] = "Однопользовательский";
        $blog_modes[2] = "Многопользовательский";
        return $blog_modes;
    }

В чем проблема: если, например, изменить в настройках сайта режим работы, и войти на сайт как админ, то в LabConfig::$mcfg['blog_mode'] лежит 2, как и нужно, а если зайти обычным пользователем, - лежит 1.
Что не так ?
А конфиг на всех общий? Вы не включали раздельный конфиг для каждой группы?
Можно так же проверить что лежит в файлах data/configs/
Нет, не включал. В core.conf :
PHP
$config['separate_config']='';
А режим отладки включен?
Если нет, то попробуйте сбросить кэш.
Да, я тестирую в режиме отладки...
Приветствую всех!
Есть хорошие новости касательно модуля блога.
Итак, что было добавлено в новой версии:
 
- Ajax комментарии. Теперь комментарии работают на ajax, с помощью jQuery.
- Возможность переключения в  одно / многопользовательский режимы.
В однопользовательском режиме блоги может добавлять и вести только админ. А в многопользовательском, другие пользователи сайта так же могут вести свои блоги.
- Добавлена личная лента для пользователей.
Каждый пользователь может подписаться под интересующий его публичный блог, но до этого нужно вступить в него.
- Возможность подписаться в ленте на пользователя.
- Изменен и доработан листинг блогов.
- Добавлен предпросмотр при добавлении топика.
- Добавлен предпросмотр при добавлении комментария.
- Ajax перезагрузка новых комментариев на странице.
- Добавлен автокомплит при добавлении меток, и при подписке на пользователя в ленте.
- Исправлено много мелких ошибок.
Пожалуйста, обратите внимание, что в стандартном шаблоне модуль выглядит не совсем хорошо, потому, что он просто не помещается по ширине, из-за боковых блоков, где расположены настройки ленты.
Вроде бы все