+22.63
Рейтинг
49.63
Сила

Андрей

Стандартов кодирования действительно не хватает (.
На счет «повторять» — категорически не согласен. Все, что там (altocms.ru/blog/inside/328.html) написано — описание уже существующего кода и, по большей части, кода LS.

Сейчас, авторы плагинов работают по подобию уже написанного, было бы очень замечательно, если бы основные моменты правил кодирования были заранее известны, а не возникали по наитию.
Для этого нужно:
1. Зарегистрировать хук шаблона, куда Вы хотите вывести список со стены, в классе HookNews, например «template_content_begin» — хук на начало контента.
/**
     * Регистрация хуков
     */
    public function RegisterHook() {
        $this->AddHook('template_content_begin', 'ShowNews');
    }


2. Реализовать метод, который будет получать данные стены, как-то так:
public function ShowNews(){
        $aWall = $this->Wall_GetWall(
        // Так будет выводиться вся стена
        //array('wall_user_id' => 1, 'pid' => null),
        // А так, только записи админа ('user_id' => 1)
            array('wall_user_id' => 1, 'pid' => null, 'user_id' => 1),
            array('id' => 'desc'),
            1,   // Ид. пользователя со стены которого получаем записи 
            5);  // 5-количество получаемых и выводимых записей
        $oLocalViewer = $this->Viewer_GetLocalViewer();
        $oLocalViewer->Assign('aWall', $aWall['collection']);

        return $oLocalViewer->Fetch(Plugin::GetTemplatePath(__CLASS__) . 'admin_wall_list.tpl');
    }


3. Создать шаблон admin_wall_list.tpl для вывода списка также как и для блока.
  • avatar andreyv
  • 2
Спасибо, очень кстати )
  • avatar andreyv
  • 0
Не знал. :(
  • avatar andreyv
  • 0
Дело не в отправке сообщений. Дело в том, что push-сообщения принимает программа на телефоне и ее эту программу нужно писать. То есть нужен не скрипт отправки а приложение для iФона, которое будет принимать push-сообщения.
Нет. Я не умею в iOS.
Я не рассматривал Jabber вообще, поэтому не могу ничего сказать.
Ok.
Я использую стандартный компонент Андроида WebView и думаю дело в его кодировке, но может быть и:
— Вы принимаете сообщения в AVD и в нем что-то не то;
— я зря принудительно конвертирую сообщения в приложении в UTF8$
— Ваш телефон не поддерживает кириллицу;
— другая херня.

В любом случае буду думать.
В файле config.php прописан перечень событий — это:
1. Уведомление об ответе на его комментарий
2. Уведомление о новом топике в блоге, в котором он состоит
3. Уведомление при новом личном сообщении*/
4. Уведомление о новом комментарии к письму в личке */
5. Уведомление пользователю о том, что его добавили в друзья */
6. Уведомление о приглашении пользователя в закрытый блог */
7. Уведомление при ответе на сообщение на стене */
8. Уведомление о новом сообщение на стене */

Другие уведомления не предусмотрены. Пользователь не может выбирать перечень присылаемых ему уведомлений. Админки у плагина нет.
  • avatar andreyv
  • 1
Мне идея понравилась, как только стану посвободнее, опробую и скорее всего добавлю, скорее всего опционально, настройкой из конфига.
Да, с помощью CSS.
Для блока добавьте уникальный класс, например news-block. Затем можно обращаться к частям блока новостей, например к первой по списку новости:
<style type="text/css">
    .news-block div[id^="wall-item-"]:nth-child(2) .comment{
        background:  red;
    }
</style>

Здесь указан селектор для элемента класса .comment, находящемся во втором диве с идентификатором, начинающимся с wall-item- в блоке новостей.
Нужно подобрать подходящий z-index.
Что бы отцентровать меню нужно немного доработать код так:
$(function(){
    $(window).scroll(function(){
        if ($(window).scrollTop()>130) {
            $('#nav')
                .css({
                    position: 'fixed',
                    top: 0,
                    left: 0,
                    width: '100%',
                    'border-radius': 0,
                    'z-index': '999999'
                }).find('ul').css({
                    margin: '0 auto',
                    width: $('#container').width()
                });
        } else {
            $('#nav')
                .attr('style', '')
                .find('ul').removeAttr('style');
        }

    });
});


Добавлен код устанавливающий ширину меню по контейнеру и само выравнивание:
.find('ul').css({
                    margin: '0 auto',
                    width: $('#container').width()
                })


Добавлен код удаляющий атрибут стиля у меню:
.find('ul').removeAttr('style');
Что именно не работает?
Спасибо за замечание, статью подправил.
Добавьте еще одно условие в метод получения записей, проверяющее авторство ('user_id' => 1) так:
$aWall = $this->Wall_GetWall(
            array('wall_user_id' => 1, 'pid' => null, 'user_id' => 1),
            array('id' => 'desc'),
            1,
            Config::Get('plugin.areas.news_count'));
Можно и так.
Да, практической ценности от нее маловато, но красиво)
Вариантов действительно много:
— лучше реализовать через .addClass() и .removeClass(), с соответствующим дополнением таблиц стилей;
— добавить проверку на hasClass перед изменением или, в моем случае, на пустое значение атрибута style, а то он очищается при каждом скролле;
— border-radius не кросс-браузерен;
— position: fixed в ie?
— а еще лучше в виде плагина
— и т.п.

Простора для творчества хоть отбавляй — я показал всего лишь способ)