Kvendi Опубликовано 21 Февраля 2008 Жалоба Поделиться Опубликовано 21 Февраля 2008 http://www.ibresource.ru/forums/index.php?showtopic=50234 Ссылка на комментарий Поделиться на других сайтах Прочее
-Cross- Опубликовано 21 Февраля 2008 Жалоба Поделиться Опубликовано 21 Февраля 2008 Сейчас поддержим. Ссылка на комментарий Поделиться на других сайтах Прочее
Hrumtik Опубликовано 29 Марта 2008 Жалоба Поделиться Опубликовано 29 Марта 2008 У меня сейчас 2.2.2, но я помню когда ставил этот мод еще на 2.1.7 и вполне был им доволен...Можно самим попробовать поковырять и переделать под 2.2.x )) Ссылка на комментарий Поделиться на других сайтах Прочее
aromashka Опубликовано 30 Мая 2008 Жалоба Поделиться Опубликовано 30 Мая 2008 Ничего не менял и не переделывал. Сегодня стала появляться ошибка. Форум на мастерхосте. При нажатии на "Показать все" в окне смайлов. Выдает пустое окно с ниже приведенной информацией. Not FoundThe requested URL /forums/java script:emo_pop() was not found on this server. Подскажите люди добрые Форум 2.1.3 Ссылка на комментарий Поделиться на других сайтах Прочее
in_fact Опубликовано 28 Февраля 2009 Жалоба Поделиться Опубликовано 28 Февраля 2009 (изменено) на данный момент категории выводятся.смайлы вставляются короче, мод будет под 23х в скором времени. или не будет )))) Изменено 2 Марта 2009 пользователем in_fact Ссылка на комментарий Поделиться на других сайтах Прочее
in_fact Опубликовано 5 Марта 2009 Жалоба Поделиться Опубликовано 5 Марта 2009 Костыли для версии 2.3.х. комментарий: категории смайлов выводятся в форме быстрого ответа. в форме полного ответа не выводятся. (связано с передачей идентификатора формы ответа.) я не стал ломать структуру форума и делать обе формы с одним именем. далее... из-за уе*анской системы папок смайлов, реализованной в версии 2.3.х будете иметь редкий геморой на свою задницу с добавлением этих самых категорий (точнее, с сортировкой по категориям).из всех авторских примочек остался только вывод категорий. размеры окна в админке не настраиваются. почему - хз, мне было влом разбираться Итак, если вас это все не пугает, поехали: 1. SQL Запросы Перейдите в Управление SQL - > Утилита (или phpMyAdmin->SQL) и запустите запросы:(Примечание: Если у вас префикс таблиц отличается от ibf_, замените его на соответствущий в запросах)1.1.CREATE TABLE `ibf_emo_categories` ( `id` INT( 2 ) NOT NULL AUTO_INCREMENT , `name` VARCHAR( 30 ) NOT NULL , `dir` VARCHAR( 30 ) NOT NULL , `groups` TEXT NOT NULL , `active` TEXT NOT NULL , `inactive` TEXT NOT NULL , PRIMARY KEY ( `id` ) );1.2.CREATE TABLE ibf_emo_options ( id INT( 2 ) NOT NULL , name VARCHAR( 20 ) NOT NULL , value INT( 4 ) NOT NULL , PRIMARY KEY (id) );1.3. Запустите один за одним запросы:INSERT INTO `ibf_emo_options` VALUES (1, 'W_Width', '250');INSERT INTO `ibf_emo_options` VALUES (2, 'W_Height', '500');INSERT INTO `ibf_emo_options` VALUES (3, 'emo_in_row', '6');INSERT INTO `ibf_emo_options` VALUES (4, 'show_codes', '0');INSERT INTO `ibf_emo_options` VALUES (5, 'enabled', '1'); 2. Редактирование ШАБЛОНОВ Перейдите ВНЕШНИЙ ВИД -> Изменить HTML фрагменты -> skin_legends (Легенды форума) (он же Board Legends) 2.1 Отредактировать ШАБЛОН "emoticons_row" Отредактировать входящие переменные: ----------------------------------- ДОБАВИТЬ В КОНЦЕ СТРОКИ function show_emoticons() { $tid = intval( $this->ipsclass->input['t'] ); $this->page_title = $this->ipsclass->lang['emo_title']; $smilie_id = 0; $editor_id = $this->ipsclass->txt_alphanumerical_clean( $this->ipsclass->input['editor_id'] ); $cat_count = 0; $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => "tid=".$tid, ) ); $this->ipsclass->DB->simple_exec(); $topic = $this->ipsclass->DB->fetch_row(); $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emoticon_javascript( $editor_id ); $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emo_categories_top($this->ipsclass->lang['cat_title']); $this->ipsclass->DB->simple_construct(array('select' => '*', 'from' => 'emo_categories')); $this->ipsclass->DB->simple_exec(); if ( $this->ipsclass->DB->get_num_rows() ) { while ( $r = $this->ipsclass->DB->fetch_row() ) { $checkA='true'; $checkInactive='true'; $checkGroups='true'; // ------------------------------------------------------------ // ---------- Checking INactive Topics and Folders ------------ if ($r[inactive]!="") { $inactives=explode(",",trim($r[inactive])); for ($k=0;$k<count($inactives);$k++) $inactives[$k]=trim($inactives[$k]); if (in_array($this->ipsclass->cache['forum_cache'][ $this->ipsclass->input['f'] ][ 'name' ],$inactives) OR in_array(trim($topic['title']),$inactives)) $checkInactive='false'; else $checkInactive='true'; } else $checkInactive='true'; // ------------------------------------------------------------ // ------------ Checking Active Topics and Folders ------------ if ($r[active]!="") { $actives=explode(",",trim($r[active])); for ($k=0;$k<count($actives);$k++) $actives[$k]=trim($actives[$k]); if (in_array($this->ipsclass->cache['forum_cache'][ $this->ipsclass->input['f'] ][ 'name' ],$actives) OR in_array(trim($topic['title']),$actives)) $checkA='true'; else $checkA='false'; } else $checkA='true'; // ------------------------------------------------------------ // ------------ Checking Groups Access ------------------------- if ($r[groups]!="") { $groupes=explode(",",trim($r[groups])); $mgroups = explode( ",", trim($this->ipsclass->member['mgroup_others']) ); $mgroups[]=trim($this->ipsclass->member['mgroup']); $CheckCount=0; for ($k=0;$k<count($groupes);$k++) for ($j=0;$j<count($mgroups);$j++) if (trim($groupes[$k])==$this->ipsclass->cache['group_cache'][ trim($mgroups[$j]) ]['g_title'] and trim($groupes[$k]!="")) $CheckCount++; if ($CheckCount>0) $checkGroups='true'; else $checkGroups='false'; } else $checkGroups='true'; if ($checkInactive=='true' AND $checkA=='true' AND $checkGroups=='true') { $cat_count++; if ($this->ipsclass->input['category']==NULL) $this->ipsclass->input['category']=$r[id]; if ($this->ipsclass->input['category']==$r[id]) { $r2='<b>'.$r[name].'</b>'; $cat_dir=$r[dir]; } else $r2=$r[name]; $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emo_categories_row($r[id],$r2,$this->ipsclass->input['f'],$tid); } } } if($cat_count==0) $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emo_categories_row(0,$this->ipsclass->lang['cat_no_active']); $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emo_categories_end(); $this->output .= $this->ipsclass->compiled_templates['skin_legends']->page_header( $this->ipsclass->lang['emo_title'], $this->ipsclass->lang['emo_type'], $this->ipsclass->lang['emo_img']); $emo_opts=array(); $this->ipsclass->DB->simple_select( '*', 'emo_options'); $this->ipsclass->DB->exec_query(); while( $row = $this->ipsclass->DB->fetch_row() ) { $emo_opts[$row['name']]=$row['value']; } $this->ipsclass->DB->simple_construct( array( 'select' => 'typed, image', 'from' => 'emoticons', 'where' => "emo_set='".$cat_dir."'" ) ); $this->ipsclass->DB->simple_exec(); if ( $this->ipsclass->DB->get_num_rows() ) { while ( $r = $this->ipsclass->DB->fetch_row() ) { $num_in_row=$emo_opts['emo_in_row']; if ( $smilie_id%$num_in_row == 0) $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emoticons_row_top(); $smilie_id++; if (strstr( $r['typed'], """ ) ) { $in_delim = "'"; $out_delim = '"'; } else { $in_delim = '"'; $out_delim = "'"; } if ($emo_opts['show_codes']) $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emoticons_row_code( stripslashes($r['typed']), $in_delim, $out_delim, $smilie_id ); $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emoticons_row( stripslashes($r['typed']), stripslashes($r['image']), $in_delim, $out_delim, $smilie_id,$cat_dir ); if ( $smilie_id%$num_in_row == 0) $this->output .= $this->ipsclass->compiled_templates['skin_legends']->emoticons_row_end(); } } $this->output .= $this->ipsclass->compiled_templates['skin_legends']->page_footer(); } 4.2 ОТКРЫТЬ sources/acp_loaders/acp_pages_lookandfeel.php ---------------------------------------------------------------------------------------------------------------------------------- НАЙТИ function emo_cat_manage() { $emodirs = array(); $emodirs2 = array( 0 => array("","")); $dh = opendir( CACHE_PATH.'style_emoticons' ); while ( $file = readdir( $dh ) ) if (($file != ".") && ($file != "..")) if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) ) { $emodirs[] = array($file,$file); $emodirs2[] = array($file,$file); } closedir( $dh ); $this->ipsclass->admin->page_title = "Категории Смайлов"; $this->ipsclass->admin->page_detail = "Настройки Категорий"; $this->ipsclass->adskin->td_header[] = array( "" , "1%" ); $this->ipsclass->adskin->td_header[] = array( "Название Категории" , "15%" ); $this->ipsclass->adskin->td_header[] = array( "Связанная папка" , "15%" ); $this->ipsclass->adskin->td_header[] = array( "Доступно группам" , "15%" ); $this->ipsclass->adskin->td_header[] = array( "Активна в Форумах и/или темах" , "20%" ); $this->ipsclass->adskin->td_header[] = array( "НЕактивна в Форумах и/или темах" , "20%" ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Существующие категории"); if ($this->ipsclass->input['new_emo_cat_name'] != "" and $this->ipsclass->input['new_emo_cat_dir'] != "" and $this->ipsclass->input['operation']==1 ) { $this->ipsclass->DB->do_insert( 'emo_categories', array( 'name' => $this->ipsclass->input['new_emo_cat_name'], 'dir' => $this->ipsclass->input['new_emo_cat_dir'], 'active' => $this->ipsclass->input['new_emo_cat_active'], 'inactive' => $this->ipsclass->input['new_emo_cat_inactive'] ) ); } if ($this->ipsclass->input['delete_emo_cat_name'] != "" and $this->ipsclass->input['operation']==0 ) { $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emo_categories', 'where' => "name='".$this->ipsclass->input['delete_emo_cat_name']."'" ) ); } if ($this->ipsclass->input['modify_emo_cat_dir'] != "" and $this->ipsclass->input['operation']==2 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'emo_categories', 'set' => "`dir`='".$this->ipsclass->input['modify_emo_cat_dir']."'" , 'where' => "`name`='".$this->ipsclass->input['chosen_emo_cat_name']."'" ) ); } if ($this->ipsclass->input['operation']==2 ) { $this->ipsclass->DB->do_update( 'emo_categories', array( 'name' => $this->ipsclass->input['modify_emo_cat_name'],'groups' => $this->ipsclass->input['modify_emo_cat_groups'], 'active' => $this->ipsclass->input['modify_emo_cat_active'],'inactive' => $this->ipsclass->input['modify_emo_cat_inactive']), "name='".$this->ipsclass->input['chosen_emo_cat_name']."'" ); } $cat_info = array(); $cat_names = array(); $this->ipsclass->DB->simple_select( '*', 'emo_categories'); $this->ipsclass->DB->exec_query(); while( $row = $this->ipsclass->DB->fetch_row() ) { $cat_info['id'][] = $row['id']; $cat_info['name'][] = $row['name']; $cat_info['dir'][] = $row['dir']; $cat_info['active'][] = $row['active']; $cat_info['inactive'][] = $row['inactive']; $cat_info['groups'][] = $row['groups']; $cat_names[] = array($row[name],$row[name]); } if ($this->ipsclass->input['operation']==8 AND $this->ipsclass->input['values']>0) { $value=$this->ipsclass->input['values']; $cats = array(); foreach($cat_info as $key => $v) { $cats[$key]=$cat_info[$key][$value]; $cat_info[$key][$value]=$cat_info[$key][$value-1]; $cat_info[$key][$value-1]=$cats[$key]; } $this->ipsclass->DB->do_update( 'emo_categories',array( 'name' => $cats['name'],'dir' => $cats['dir'],'groups' => $cats['groups'], 'active' => $cats['active'],'inactive' => $cats['inactive']), "id='".$cat_info['id'][$value]."'" ); $this->ipsclass->DB->do_update( 'emo_categories', array( 'name' => $cat_info['name'][$value],'dir' => $cat_info['dir'][$value],'groups' => $cat_info['groups'][$value], 'active' => $cat_info['active'][$value],'inactive' => $cat_info['inactive'][$value]), "id='".$cat_info['id'][$value-1]."'" ); } if ($this->ipsclass->input['operation']==9 AND $this->ipsclass->input['values']<count($cat_info['name'])-1) { $value=$this->ipsclass->input['values']; $cats = array(); foreach($cat_info as $key => $v) { $cats[$key]=$cat_info[$key][$value]; $cat_info[$key][$value]=$cat_info[$key][$value+1]; $cat_info[$key][$value+1]=$cats[$key]; } $this->ipsclass->DB->do_update( 'emo_categories',array( 'name' => $cats['name'],'dir' => $cats['dir'],'groups' => $cats['groups'], 'active' => $cats['active'],'inactive' => $cats['inactive']), "id='".$cat_info['id'][$value]."'" ); $this->ipsclass->DB->do_update( 'emo_categories', array( 'name' => $cat_info['name'][$value],'dir' => $cat_info['dir'][$value],'groups' => $cat_info['groups'][$value], 'active' => $cat_info['active'][$value],'inactive' => $cat_info['inactive'][$value]), "id='".$cat_info['id'][$value+1]."'" ); } for ($i=0;$i<count($cat_info['inactive']);$i++) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=emo_cat&operation=8&values=".$i."'><img src='{$this->ipsclass->skin_acp_url}/images/arrow_up.png' border='0' class='ipd' /></a><br> <a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=emo_cat&operation=9&values=".$i."'><img src='{$this->ipsclass->skin_acp_url}/images/arrow_down.png' border='0' class='ipd' /></a><br> ", $cat_info["name"][$i],$cat_info["dir"][$i],$cat_info["groups"][$i],$cat_info["active"][$i],$cat_info["inactive"][$i]));} $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_cat' ), 2 => array( 'act' , 'emoticons' ), 4 => array( 'section', $this->ipsclass->section_code ), 5 => array( 'operation', 1 ), ) ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Добавить категорию" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Введите название категории</b><div style='color:gray'>Можно вводить на любом языке</div>", $this->ipsclass->adskin->form_input( 'new_emo_cat_name' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Связать с существующей папкой со смайлами</b><div style='color:gray'>Примечение: Разные категории не должны иметь одинаковые связанные папки</div>", $this->ipsclass->adskin->form_dropdown( 'new_emo_cat_dir', $emodirs ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Введите группы, которым будет доступна эта категория</b><div style='color:gray'>Разделяйте несколько запятыми.<br> Оставить чистым для общего доступа</div>", $this->ipsclass->adskin->form_input( 'new_emo_cat_groups') ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Введите названия форумов и/или темах, где категория будет доступной</b><div style='color:gray'>Если введено, категория будет доступна только в указанных форумах и/или темах. Вы можете смешивать названия форумов и тем.<br> Разделяйте несколько запятыми.<br> Оставить чистым для полного доступа.</div>", $this->ipsclass->adskin->form_input( 'new_emo_cat_active') ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Введите названия форумов и/или темах, где категория будет неактивна</b><div style='color:gray'>Если введено, категория будет доступна везде, кроме указанных форумом и/или тем. Вы можете смешивать названия форумов и тем.<br> Разделяйте несколько запятыми.<br> Оставить чистым для полного доступа.</div>", $this->ipsclass->adskin->form_input( 'new_emo_cat_inactive' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Добавить категорию"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_cat' ), 2 => array( 'act' , 'emoticons' ), 4 => array( 'section', $this->ipsclass->section_code ), 5 => array( 'operation', 2 ), ) ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Изменить категорию" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->html .= "<script type='text/javascript'> function update(n,m,k,g) { var s1 = n.split('-?|-'); var s2 = m.split('-?|-'); var s3 = k.split('-?|-'); var s4 = g.split('-?|-'); document.forms[1].modify_emo_cat_active.value = s1[document.forms[1].chosen_emo_cat_name.selectedIndex]; document.forms[1].modify_emo_cat_inactive.value = s2[document.forms[1].chosen_emo_cat_name.selectedIndex]; document.forms[1].modify_emo_cat_name.value = s3[document.forms[1].chosen_emo_cat_name.selectedIndex]; document.forms[1].modify_emo_cat_groups.value = s4[document.forms[1].chosen_emo_cat_name.selectedIndex]; } </script> "; if ($cat_info['active']!="") $n = implode("-?|-", $cat_info['active']); if ($cat_info['inactive']!="") $m = implode("-?|-", $cat_info['inactive']); if ($cat_info['name']!="") $k = implode("-?|-", $cat_info['name']); if ($cat_info['groups']!="") $g = implode("-?|-", $cat_info['groups']); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Выберите название категории, которую вы хотите изменить</b>", $this->ipsclass->adskin->form_dropdown( 'chosen_emo_cat_name', $cat_names,1,'onchange="update('."'$n','$m','$k','$g'".')"') ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Имя категории</b>", $this->ipsclass->adskin->form_input( 'modify_emo_cat_name',$cat_info['name'][0] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Доступ группам</b><div style='color:gray'>Если вы оставите поле пустым, категория будет доступна всем</div>", $this->ipsclass->adskin->form_input( 'modify_emo_cat_groups',$cat_info['groups'][0]) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Активные Форумы и Темы</b><div style='color:gray'>Если вы оставите поле пустым, категория будет доступна везде.</div>", $this->ipsclass->adskin->form_input( 'modify_emo_cat_active',$cat_info['active'][0]) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>НЕактивные Форумы и Темы</b><div style='color:gray'>Если вы оставите поле пустым, категория будет доступна везде.</div>", $this->ipsclass->adskin->form_input( 'modify_emo_cat_inactive',$cat_info['inactive'][0] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Связать с другой папкой смайлов</b>", $this->ipsclass->adskin->form_dropdown( 'modify_emo_cat_dir', $emodirs2 ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Сохранить"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_cat' ), 2 => array( 'act' , 'emoticons' ), 4 => array( 'section', $this->ipsclass->section_code ), 5 => array( 'operation', 0 ), ) ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Удалить категорию" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->adskin->td_header[] = array( " " , "50%" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Выберите имя категории для удаления</b>", $this->ipsclass->adskin->form_dropdown( 'delete_emo_cat_name', $cat_names ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Удалить"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); // This modification is free to use only if you leave next text without changings! $this->ipsclass->html .= "<div align=center>Emoticons Category Managment v1.01, Created by Kostik.</div>"; $this->ipsclass->admin->output(); } //---------------------------------------------------------------------------- // ----- Emoticons Categories Managment. Created by Kostik. -------------------- //---------------------------------------------------------------------------- function emo_options() { $this->ipsclass->admin->page_title = "Настройка окна смайлов"; $this->ipsclass->admin->page_detail = "Определение размеров и содержания окна"; if ($this->ipsclass->input['W_Width'] != "" and $this->ipsclass->input['operation']==3 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'emo_options', 'set' => "`value`='".$this->ipsclass->input['W_Width']."'" , 'where' => "`name`='W_Width'" ) ); } if ($this->ipsclass->input['W_Height'] != "" and $this->ipsclass->input['operation']==3 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'emo_options', 'set' => "`value`='".$this->ipsclass->input['W_Height']."'" , 'where' => "`name`='W_Height'" ) ); } if ($this->ipsclass->input['emo_in_row'] != "" and $this->ipsclass->input['operation']==3 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'emo_options', 'set' => "`value`='".$this->ipsclass->input['emo_in_row']."'" , 'where' => "`name`='emo_in_row'" ) ); } if ($this->ipsclass->input['show_codes'] != "" and $this->ipsclass->input['operation']==3 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'emo_options', 'set' => "`value`='".$this->ipsclass->input['show_codes']."'" , 'where' => "`name`='show_codes'" ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_options' ), 2 => array( 'act' , 'emoticons' ), 4 => array( 'section', $this->ipsclass->section_code ), 5 => array( 'operation', 3 ), ) ); $emo_opts=array(); $this->ipsclass->DB->simple_select( '*', 'emo_options'); $this->ipsclass->DB->exec_query(); while( $row = $this->ipsclass->DB->fetch_row() ) { $emo_opts[$row['name']]=$row['value']; } $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Настройка окна смайлов" ); $this->ipsclass->adskin->td_header[] = array( " " , "30%" ); $this->ipsclass->adskin->td_header[] = array( " " , "70%" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Размер окна</b>", $this->ipsclass->adskin->form_simple_input( 'W_Width',$emo_opts['W_Width'],5 )." x ".$this->ipsclass->adskin->form_simple_input( 'W_Height',$emo_opts['W_Height'],5 )." пикселей" ) ); $row_nums=array(); for ($i=1;$i<11;$i++) $row_nums[] = array($i,$i); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Количвество смайлов в строке</b>", $this->ipsclass->adskin->form_dropdown( 'emo_in_row', $row_nums, $emo_opts['emo_in_row']) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Отображать коды смайлов?</b><div style='color:gray'>Опция добавляет текстовый код смайла слева от смайла</div>", $this->ipsclass->adskin->form_yes_no( 'show_codes', $emo_opts['show_codes'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Обновить"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); // This modification is free to use only if you leave next text without changings! $this->ipsclass->html .= "<div align=center>Emoticons Category Managment v1.01, Created by Kostik.</div>"; $this->ipsclass->admin->output(); } Итак, самая легкая часть закончена. Теперь приступим к самой дебильной (дружно говорим спасибо IPS) Суть такова:у нас есть родительская папка default в папке style_emoticonsсоздавая другую папку в админке, форум помещает ее в папку default и заливает в новую папку все смайлы из папки default. соответственно в базе прописываются все смайлы (только с другим идентификатором)в результате, зайдя в новую папку, мы не увидим там ровным счетом ничего. поэтому все смайлы благополучно вливаются в default и там валяются кашей. Итак, а теперь вагон мата вырезан цензурой начнем делать псевдокатегории для смайлов. описывать я буду на своем примере. 1. подготовлено три пака иконок. пак-1: имя каждого файла начинается на qip- (это важно! для каждого своего пака переименуйте все файлы по шаблону: имя+номер. тотал с этой задачей справляется аж бегом) пак-2 и пак-3 точно также.все три пака сделаны с помощью утилитки smilexmlizer или как-то так.. есть на форуме. это было сделано для будущей фильтрации по категориям2. импортируем наши смайлы. (тут возможны варианты. теоретически, вам повезет, и каждый такой файл сделает себе запись в новую папку с новым именем в базе. эта мысль только что пришла в голову, но проверять на боевом сервере желания уже нет. работает, и пусть работает)3. далее я делал такие запросы в БД:UPDATE `database`.`ibf_emoticons` SET `emo_set` = 'qipp' WHERE `image` LIKE '%qip-%' AND `emo_set`='qip';таким запросом я менял значение emo_set с qip на qipp только для файлов которые начинаются на "qip-"это я делал по нескольким причинам:- у меня все залитые смайлы были в трех экземплярах. каждый смайл в базе имел три записи (с разными emo_set)- менял qip на qipp именно для категорий смайлов. после того как я сделал эти запросы, я сменил имена папок на фтп с qip на qipp ну и в АЦ - Добавить категорию указываем имя категории и папку для нее.указывать форумы и группы смыслу нет. я его не трогал, и не проверял. и не вносил изменения для его работы. да, это костыли. дикий ужас и все такое. зато оно работает. и мои 300+ смайликов теперь раскиданы по категориям, а не валятся одним скопом, который слабые машинки просто убивает. за сим вроде все Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения