Разделение смайликов на группы

Тема в разделе "Модификации для TorrentPier (архив)", создана пользователем Chumaster59, 18 сен 2011.

  1. Chumaster59

    Chumaster59 Пользователь

    Сообщения:
    256
    Симпатии:
    22
    Версия TP:
    2.0 (R400)
    ##############################################################
    ## Название: Разделение смайликов на группы (как на тапках)
    ## Автор: kaspergreen
    ## Адаптация: Chumaster59 ( _Xz_ build_smilies.php)
    ## Сложность: Норм
    ## Время: 5мин
    ##############################################################

    Выполнить запрос в БД
    Код:
    ALTER TABLE `bb_smilies` ADD `type` TINYINT( 1 ) NOT NULL DEFAULT '1'
    Открыть posting.php и заменить
    PHP:
    if ($mode == 'smilies')
    {
        
    generate_smilies('window');
        exit;
    }
    на
    PHP:
    if ($mode == 'smilies')
    {
    if(isset(
    $_GET['smtid'])) $smtid = (int)$_GET['smtid'];
    else 
    $smtid=1;

    switch(
    $smtid) {
    case 
    1:
    $smtype 1;
    break;
    case 
    2:
    $smtype 2;
    break;
    default:
    $smtype 1;
    }
        
    generate_smilies('window'$smtype);
        exit;
    }
    Открыть includes/bbcode.php и заменить
    PHP:
    function generate_smilies($mode)
    {
        global 
    $bb_cfg$template$lang$images$user$datastore;

        
    $inline_columns 4;
        
    $inline_rows 7;
        
    $window_columns 8;

        if (
    $mode == 'window')
        {
            
    $user->session_start();
        }

        
    $data $datastore->get('smile_replacements');

        if (
    $sql $data['smile'])
    на
    PHP:
    function generate_smilies($mode$smtype=1)
    {
        global 
    $bb_cfg$template$lang$images$user$datastore;

        
    $inline_columns 4;
        
    $inline_rows 7;
        
    $window_columns 8;

        if (
    $mode == 'window')
        {
            
    $user->session_start();
        }

        
    $data $datastore->get('smile_replacements');

        if (
    $sql $data['smile'][$smtype])
    Открыть и заменить содержимое includes/datastore/build_smilies.php на
    PHP:
    <?php

    if (!defined('BB_ROOT')) die(basename(__FILE__));

    global 
    $bb_cfg;

    $smilies = array();

    $rowset DB()->fetch_rowset("SELECT * FROM "BB_SMILIES ." ORDER BY smilies_id");

    foreach (
    $rowset as $smile)
    {
      
    $smilies['orig'][] = '#(?<=^|\W)'preg_quote($smile['code'], '#') .'(?=$|\W)#';
      
    $smilies['repl'][] = ' <img class="smile" src="'$bb_cfg['smilies_path'] .'/'.  $smile['smile_url'] .'" alt="'$smile['emoticon'] .'" align="absmiddle" border="0" />';
      
    $smilies['smile'][$smile['type']][] = $smile;
    }

    $this->store('smile_replacements'$smilies);
    Открыть templates/default/posting_smilies.tpl и найти
    Код:
            <tr>
                    <th>{L_EMOTICONS}</th>
                </tr>
    
    вставить после
    Код:
            <tr>
                    <td class="row2" align=center><a href=posting.php?mode=smilies&smtid=1>Стандартные</a> | <a href=posting.php?mode=smilies&smtid=2>Anime</a></td>
                </tr>
    
    изменить кодировку на UTF-8
    или возимся с лангами
    заменяем слово Стандартные например на {L_SMILES1} а Anime на {L_SMILES2}
    в оба lang_main.php добавляем в конец
    PHP:
    //Группы смайлов
    $lang['SMILES1'] = 'Стандартные';
    $lang['SMILES2'] = 'Anime';
    Всё сохраняем и закрываем
    В таблицу bb_smilies БД добавляем новые смайлы с типом 2 после чего выполняем Datastore в админке

    Безымянный.png

    -----
    Дополнение для админки (20.09.2011)
    Открыть оба lang_admin.php
    найти
    PHP:
    $lang['SMILEY_EMOT']
    вставить на следующею строку
    PHP:
    $lang['SMILEY_TYPE'] = 'Номер группы';
    Открыть templates/admin/admin_smilies.tpl
    найти
    Код:
        <tr>
            <td class="row2">{L_SMILEY_EMOT}</td>
            <td class="row2"><input class="post" type="text" name="smile_emotion" value="{SMILEY_EMOTICON}" /></td>
        </tr>
    вставить после
    Код:
        <tr>
            <td class="row2">{L_SMILEY_TYPE}</td>
            <td class="row2"><input class="post" type="text" name="smile_type" value="{SMILEY_TYPE}" /></td>
        </tr>
    Открыть admin/admin_smilies.php
    Найти
    PHP:
                $smile_emotion = ( isset($_POST['smile_emotion']) ) ? trim($_POST['smile_emotion']) : trim($_GET['smile_emotion']);
    вставить после
    PHP:
                $smile_type = ( isset($_POST['smile_type']) ) ? trim($_POST['smile_type']) : trim($_GET['smile_type']);
    Найти
    PHP:
    SET code '" . DB()->escape($smile_code) . "'smile_url '" . DB()->escape($smile_url) . "'emoticon '" . DB()->escape($smile_emotion) . "'
    вставить на линии после
    PHP:
    type '" . DB()->escape($smile_type) . "'
    Найти
    PHP:
                $smile_emotion = ( isset($_POST['smile_emotion']) ) ? $_POST['smile_emotion'] : $_GET['smile_emotion'];
    вставить после
    PHP:
                $smile_type = ( isset($_POST['smile_type']) ) ? $_POST['smile_type'] : $_GET['smile_type'];
    Ниже найти
    PHP:
                $smile_emotion trim($smile_emotion);
    вставить после
    PHP:
                $smile_type trim($smile_type);
    Найти два раза
    PHP:
    $sql "INSERT INTO " BB_SMILIES " (code, smile_url, emoticon)
    вставить на линии после emoticon
    PHP:
    type
    Найти
    PHP:
    VALUES ('" . DB()->escape($smile_code) . "''" . DB()->escape($smile_url) . "''" . DB()->escape($smile_emotion) . "'
    вставить на линии после
    PHP:
    '" . DB()->escape($smile_type) . "'
    всё сохраняем и закрываем
    Безымянный2.png
     
    REM, Alexander.S, Didier и ещё 1-му нравится это.
  2. Didier

    Didier Пользователь

    Сообщения:
    118
    Симпатии:
    8
    Самое главное, что нет возможности из админки ставить номер группы для смайликов :) Мне конечно не лень сгонять до ветру базы, но тем не менее. :) _Xz_ на тебя одна надежда :)
     
  3. Chumaster59

    Chumaster59 Пользователь

    Сообщения:
    256
    Симпатии:
    22
    Версия TP:
    2.0 (R400)
    Didier,
    Там вроде не чего сложного, всего одно значение добавить, попробую
     
  4. _Xz_

    _Xz_ Пользователь

    Сообщения:
    391
    Симпатии:
    240
    Версия TP:
    иная
    а что именно ты тут адаптировал? вижу полностью свой код)) (мысли в слух)
     
  5. Didier

    Didier Пользователь

    Сообщения:
    118
    Симпатии:
    8
    Скромно молчу в тряпочку. Мод прекрасно работает, но хотелось бы изменения в админке :)
     
  6. Chumaster59

    Chumaster59 Пользователь

    Сообщения:
    256
    Симпатии:
    22
    Версия TP:
    2.0 (R400)
    До всего остального я сам допёр )
     
  7. Harry

    Harry Гость

    Код:
    Notice: Undefined offset: 2 in /includes/bbcode.php on line 113
    Код:
        if ($sql = $data['smile'][$smtype])
    
     
  8. Chumaster59

    Chumaster59 Пользователь

    Сообщения:
    256
    Симпатии:
    22
    Версия TP:
    2.0 (R400)
    Добавил в инструкцию
    ---

    Проверил только что, поставил на чистую R292
    всё работает, логи чисты
    Проверяйте внимательно всё по инструкции (в админке не забываем про Datestore)
     
  9. Harry

    Harry Гость

    если айди группы к примеру 3, и она пуста (т.е. нет смайлов в ней) то вылазит ошибка
    Notice: Undefined offset: 3 in /home/x360boxc/public_html/xbt-tracker.ru/includes/bbcode.php on line 113

    if ($sql = $data['smile'][$smtype])
     
  10. Didier

    Didier Пользователь

    Сообщения:
    118
    Симпатии:
    8
    Hу раз пошла такая пьянка и назвался груздем и даже есть кузов, то нужно в админке сделать создание групп :) Хотя это будет уже сложнее :)
     
  11. krumax

    krumax Пользователь

    Сообщения:
    1.133
    Симпатии:
    329
    Версия TP:
    иная
    Уже давно сделано так:
    [​IMG]
    Да и нечего там особо менять...
     
  12. Didier

    Didier Пользователь

    Сообщения:
    118
    Симпатии:
    8
    krumax,
    Я конечно заранее прошу прощения, но ГДЕ сделано, КЕМ сделано и вообще. На данном ресурсе этого (вашего) мода нет. Или я плохо и отвратительно пялился не туда? ;)
     
  13. krumax

    krumax Пользователь

    Сообщения:
    1.133
    Симпатии:
    329
    Версия TP:
    иная
    Didier, я себе просто установил мод каспера и стянул кнопки выбора смайлов с юнионпира :rolleyes:...
     
  14. Alekseev

    Alekseev Гость

    у кого в админке добавляет?
    при добавление смайла в админке "Не удалось вставить новый смайлик"
     
  15. Bustra

    Bustra Гость

    Alekseev, только у тебя
     
  16. omi131

    omi131 Пользователь

    Сообщения:
    23
    Симпатии:
    0
    Подскажите как в таблицу бд добавить смайлы? Таблицу bb_smilies нашёл открыл её а как добавить не знаю.
     
  17. lexXxa

    lexXxa Пользователь

    Сообщения:
    64
    Симпатии:
    8
    Версия TP:
    2.1.6
    через админку
     
  18. omi131

    omi131 Пользователь

    Сообщения:
    23
    Симпатии:
    0
    Это понятно, дак как?
    Это же через phpMyAdmin
     
  19. lexXxa

    lexXxa Пользователь

    Сообщения:
    64
    Симпатии:
    8
    Версия TP:
    2.1.6
    omi131, админка Смайлики->Импортировать набор смайликов
     
  20. omi131

    omi131 Пользователь

    Сообщения:
    23
    Симпатии:
    0
    Я это не могу сделать
     
  21. kenny

    kenny Гость

    insert into и тд.
    В чем проблемы составить запрос?
     
    Alekseev нравится это.
  22. dimka3210

    dimka3210 Разработчик

    Сообщения:
    1.337
    Симпатии:
    525
    Версия TP:
    2.1.5
    Да???? А что мешает?
     
  23. REM

    REM Пользователь

    Сообщения:
    92
    Симпатии:
    8
    Версия TP:
    2.1.5
    на 2.1.5 кто-нибудь ставил?
     
  24. REM

    REM Пользователь

    Сообщения:
    92
    Симпатии:
    8
    Версия TP:
    2.1.5
    Вопрос закрыт!
     
  25. Exile

    Exile Администратор

    Сообщения:
    3.023
    Симпатии:
    1.516
    Версия TP:
    2.1.6
    Ну так, ставится?
     

Поделиться этой страницей