Установка оригинальных модов phpBB (ошибки/решения)

Список разделов phpBBex 1.x (поддерживается) Мастерская 1.x

Описание: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Модератор: Поддержка

Сообщение #1 daftMan » 27.11.2012, 23:01

По понятной причине существует проблема с установкой оригинальных phpBB'шных модов. Предлагаю в отдельной теме писать ошибки, возникающие при установке и искать/или предлагать варианты решения оных ошибок. Если прошляпил похожую тему, — простите. Но не нашел-с.

Board3 Portal
Для расширения возможностей «главной» форума использую именно этот модуль. Модуль монструозный, не очень гибкий, но позволяет… многое.

При установке можно получить такие вот ошибки:
styles/prosilver/template/overall_header.html:Find
Код: Выделить всё
<div class="navbar">
Add Before
Код: Выделить всё
<!-- IF not $S_IN_PORTAL or S_DISPLAY_PHPBB_MENU -->
The Find specified by the MOD could not be found

Find
Код: Выделить всё
<li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a> <!-- BEGIN navlinks --> <strong>&#8249;</strong>
In-Line Find
Код: Выделить всё
<li class="icon-home">
The In-Line Find specified by the MOD could not be found. The Find specified by the MOD could not be found

Find
Код: Выделить всё
               <li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="x">{L_LOGIN_LOGOUT}</a></li>
            <!-- ENDIF -->
         </ul>

         <span class="corners-bottom"><span></span></span></div>
      </div>

Add After
Код: Выделить всё
<!-- ENDIF -->
The Find specified by the MOD could not be found
Установщик всего-лишь пытается добавить свою ссылку на главную страницу в шаблон темы. Я лично забил на данную ошибку. На скорость не влияет ;) :)
daftMan
Автор темы
Репутация: 17
С нами: 11 лет 4 месяца

Сообщение #2 JoteRuso » 28.11.2012, 14:59

Странно... У меня на phpBBex (v1.5.3) портал (v2.0) установился без каких либо ошибок и предупреждений.
Ставил его сразу после галереи.
Других модов до галереи не устанавливал.
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #3 daftMan » 28.11.2012, 19:21

JoteRuso:на phpBBex (v1.5.3) портал (v2.0)
Ставил последний на текущий момент: 2.0.1
И делал это исключительно на чистую и «свежую» ББеху из репозитория :smile: через АвтоМОД. Для чистоты эксперимента дважды.
И дважды получал «One or more install actions failed. Please review the actions below, make any adjustments and retry. бла-бла-бла».
Почему так я не знаю :-) Ей-ей.

Галерея, кстати, тоже не совсем чисто устанавливается. Как и ЧПУ-модуль (phpBB SEO Ultimate) :oops:
Подумалось, кстати, что в принципе, можно модифицировать установочные файлы модов под phpBBex… :spy: И создавать отдельный «репозиторий» под модификации.

phpBB Gallery (v.1.1.6)
Установка вызывает следующие ошибки:

common.php:Find
Код: Выделить всё
$cache      = new cache();
$db         = new $sql_db();
Add After
Код: Выделить всё
// Setup class loader for the gallery
require($phpbb_root_path . 'includes/gallery/class_loader.' . $phpEx);
$gallery_class_loader = new phpbb_gallery_class_loader($phpbb_root_path, '.' . $phpEx, $cache);
$gallery_class_loader->register();
The Find specified by the MOD could not be found

includes/functions_display.php:Find
Код: Выделить всё
   $num_predefined_bbcodes = 22;
Add After
Код: Выделить всё
   $user->add_lang('mods/info_acp_gallery');
The Find specified by the MOD could not be found

includes/acp/acp_language.php:Find
Код: Выделить всё
'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply',
In-Line Find
Код: Выделить всё
 'button_topic_reply',
The In-Line Find specified by the MOD could not be found. The Find specified by the MOD could not be found

includes/acp/acp_styles.php:Find
Код: Выделить всё
'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply',
In-Line Find
Код: Выделить всё
 'button_topic_reply',
The In-Line Find specified by the MOD could not be found. The Find specified by the MOD could not be found

styles/prosilver/template/overall_header.html:Find
Код: Выделить всё
<li class="icon-faq"><a href="{U_FAQ}" title="{L_FAQ_EXPLAIN}">{L_FAQ}</a></li>
Add After
Код: Выделить всё
<li class="icon-gallery"><a href="{U_GALLERY_MOD}" title="{L_GALLERY_EXPLAIN}">{L_GALLERY}</a></li>
The Find specified by the MOD could not be found

styles/prosilver/template/posting_buttons.html:Find
Код: Выделить всё
      <input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
   <!-- END custom_tags -->
Add After
Код: Выделить всё
   <!-- IF S_GALLERY_POPUP -->
      <input type="button" class="button2" name="gallery_button" value="{L_GALLERY_POPUP}" onclick="popup('{U_GALLERY_POPUP}', 800, 600);" title="{L_GALLERY_POPUP_HELPLINE}" />
   <!-- ENDIF -->
The Find specified by the MOD could not be found

styles/prosilver/template/ucp_pm_viewmessage.html:Find
Код: Выделить всё
<!-- IF U_JABBER --><li class="jabber-icon"><a href="{U_JABBER}" onclick="popup(this.href, 550, 320); return false;" title="{L_JABBER}"><span>{L_JABBER}</span></a></li><!-- ENDIF -->
Add After
Код: Выделить всё
<!-- IF U_GALLERY --><li class="gallery-icon"><a href="{U_GALLERY}" title="{L_PERSONAL_ALBUM}"><span>{L_PERSONAL_ALBUM}</span></a></li><!-- ENDIF -->
The Find specified by the MOD could not be found

styles/prosilver/template/viewtopic_body.html:Find
Код: Выделить всё
<!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->
Add After
Код: Выделить всё
<!-- IF postrow.GALLERY_IMAGES != '' --><dd><strong>{L_IMAGES}:</strong> <!-- IF postrow.U_GALLERY_SEARCH --><a href="{postrow.U_GALLERY_SEARCH}">{postrow.GALLERY_IMAGES}</a><!-- ELSE -->{postrow.GALLERY_IMAGES}<!-- ENDIF --></dd><!-- ENDIF -->
The Find specified by the MOD could not be found
Find
Код: Выделить всё
<!-- IF postrow.U_JABBER --><li class="jabber-icon"><a href="{postrow.U_JABBER}" onclick="popup(this.href, 550, 320); return false;" title="{L_JABBER}"><span>{L_JABBER}</span></a></li><!-- ENDIF -->
Add After
Код: Выделить всё
<!-- IF postrow.U_GALLERY --><li class="gallery-icon"><a href="{postrow.U_GALLERY}" title="{L_PERSONAL_ALBUM}"><span>{L_PERSONAL_ALBUM}</span></a></li><!-- ENDIF -->
The Find specified by the MOD could not be found

Что делаем?
1) Форсируем установку.
2) Вносим изменения в первые два файла ( и includes/functions_display.php)
common.php:Ищем
Код: Выделить всё
$cache      = new phpbb_cache();
$db         = new $sql_db();
Добавляем после
Код: Выделить всё
// Setup class loader for the gallery
require($phpbb_root_path . 'includes/gallery/class_loader.' . $phpEx);
$gallery_class_loader = new phpbb_gallery_class_loader($phpbb_root_path, '.' . $phpEx, $cache);
$gallery_class_loader->register();
includes/functions_display.php:Ищем
Код: Выделить всё
   $num_predefined_bbcodes = 24;
Добавляем после
Код: Выделить всё
   $user->add_lang('mods/info_acp_gallery');
3) Запускаем установку из папки forum/install/

Остальные ошибки — попытки внести изменения в файлы шаблона на предмет добавления ссылок на галеру + инфу о галере в профили пользователей. Надеюсь с правкой этих файлов особых проблем не возникнет :-)
daftMan
Автор темы
Репутация: 17
С нами: 11 лет 4 месяца

Сообщение #4 JoteRuso » 28.11.2012, 23:23

daftMan:делал это исключительно на чистую и «свежую» ББеху из репозитория через АвтоМОД
Я ставил вручную, через инсталлятор. Версию 2.0.0. ))) 2.0.1. ещё не пробовал.

daftMan:Галерея, кстати, тоже не совсем чисто устанавливается.
Это нам хорошо известно. :smile: Просто надо ставить доработанную под phpBBex версию галереи. Здесь на форуме есть темы с указанием, где её найти и как правильно и беспроблемно устанавливать. :smile:
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #5 daftMan » 29.11.2012, 15:24

JoteRuso:2.0.1. ещё не пробовал.
Там кучка всяких изменений :-)

Руками действительно никаких ошибок не будет :-) Но АвтоМод сильно уменьшает ручной труд и высвобождает время, которое можно потратить на что-либо ещё :smoke: Тот-же SEO Ultimate руками просто… устанешь ставить :-)

JoteRuso:Здесь на форуме есть темы с указанием, где её найти и как правильно и беспроблемно устанавливать.
Буду очень благодарен если меня ткнут в соотв.тему! Ну никак не найду, ни поиском, ни гуглом :sad: (не так ищу похоже… Нахожу только вот эту тему и по сути всё). Хотя, конечно, проблем с установкой у меня по сути нет %-)

phpBB Seo Ultimate (v0.7.0)

Самая проблемная (на данный момент по установке) из всех нужных мне модификаций. Самая монструозная. Ошибок выскакивает… достаточно. Справедливости для замечу, что при обычной установке на phpBB этот мод у меня никогда не ставился без напилинга.

В паре мест выбирая между «родным» phpBB-кодом и кодом phpBBex останавливался на … последнем конечно. Иначе зачем VEG трудился?!

зы: как и все остальные не застрахован от ошибок, так что внимательней при установке и внимательней тестируйте форум перед выпуском его в продакшен

1) Загружаете через AutoMod зип-архив с СЕО-модом 0.7.0
2) Начинаете установку, при парсинге выдаётся ошибка.
3) Подменяете в /forum/store/mods/phpbb_seo_ultimate_seo_url_v0_tmp (путь приблизительный, смотрите сами) install.xml вложением
4) Жмёте Retry в установке, после чего форсируете её и ставите мод.
………
5) По желанию вносите изменения в файлы шаблона. В самом низу перечислены ошибки, которые не стал выпиливать, но не стал и устранять. Причина по которой я поступил столь жестоким образом проста: не вижу смысла во всех тех изменениях что хочет добавить данный мод в шаблоны. На скорость будут влиять вряд ли лучшим образом, к ЧПУ отношения никакого не имеют, а по «улучшайзингу» не лучше уже существующего.

зы: из установки зверским образом выпилен кусок кода, вызывающий энтот вот варнинг:
viewtopic.php:Find
Код: Выделить всё
      'U_MINI_POST'      => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . (($topic_data['topic_type'] == POST_GLOBAL) ? '&amp;f=' . $forum_id : '') . '#p' . $row['post_id'],
Replace With
Код: Выделить всё
      // www.phpBB-SEO.com SEO TOOLKIT BEGIN
      'U_MINI_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id'] . (($topic_data['topic_type'] == POST_GLOBAL) ? '&amp;f=' . $forum_id : '')) . '#p' . $row['post_id'],
      // www.phpBB-SEO.com SEO TOOLKIT END
The Find specified by the MOD could not be found
По той причине, что существующий код, на мой взгляд, и без этих костылей оптимален:
Код: Выделить всё
      'U_MINI_POST'      => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'],

Код ошибок, которые я не стал устранять:

styles/prosilver/template/attachment.html:Find
Код: Выделить всё
         <dt><a href="{_file.U_DOWNLOAD_LINK}"><img src="{_file.THUMB_IMAGE}" alt="{_file.DOWNLOAD_NAME}" title="{_file.DOWNLOAD_NAME} ({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}" /></a></dt>
Replace With
Код: Выделить всё
         <dt><a href="{_file.U_DOWNLOAD_LINK}"><img src="{_file.THUMB_IMAGE}" alt="{_file.DOWNLOAD_NAME}" title="<!-- IF _file.COMMENT_CLEAN -->{_file.COMMENT_CLEAN} / {_file.DOWNLOAD_NAME}<!-- ELSE -->{_file.DOWNLOAD_NAME} ({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}<!-- ENDIF -->" /></a></dt>
The Find specified by the MOD could not be found
Find
Код: Выделить всё
         <dt class="attach-image"><img src="{_file.U_INLINE_LINK}" alt="{_file.DOWNLOAD_NAME}" onclick="viewableArea(this);" /></dt>
Replace With
Код: Выделить всё
         <dt class="attach-image"><img src="{_file.U_INLINE_LINK}" alt="{_file.DOWNLOAD_NAME}" title="<!-- IF _file.COMMENT_CLEAN -->{_file.COMMENT_CLEAN} / <!-- ENDIF -->{_file.DOWNLOAD_NAME}" onclick="viewableArea(this);" /></dt>
The Find specified by the MOD could not be found
Find
Код: Выделить всё
         <dt><!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --><a class="postlink" href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a></dt>
Replace With
Код: Выделить всё
         <dt><!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --><a class="postlink" href="{_file.U_DOWNLOAD_LINK}" title="<!-- IF _file.COMMENT_CLEAN -->{_file.COMMENT_CLEAN} / <!-- ENDIF -->{_file.DOWNLOAD_NAME}">{_file.DOWNLOAD_NAME}</a></dt>
The Find specified by the MOD could not be found
styles/prosilver/template/overall_header.html:Find
Код: Выделить всё
   var onload_functions = new Array();
   var onunload_functions = new Array();
Add After
Код: Выделить всё
   // www.phpBB-SEO.com SEO TOOLKIT BEGIN
   var seo_delim_start = '{SEO_START_DELIM}';
   var seo_static_pagination = '{SEO_SATIC_PAGE}';
   var seo_ext_pagination = '{SEO_EXT_PAGE}';
   var seo_external = {SEO_EXTERNAL};
   var seo_external_sub = {SEO_EXTERNAL_SUB};
   var seo_ext_classes = {SEO_EXT_CLASSES};
   var seo_hashfix = {SEO_HASHFIX};
   // www.phpBB-SEO.com SEO TOOLKIT END
The Find specified by the MOD could not be found
styles/prosilver/template/posting_editor.html:Find
Код: Выделить всё
   <dl style="clear: left;">
      <dt><label for="subject">{L_SUBJECT}:</label></dt>
      <dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
   </dl>
Add After
Код: Выделить всё
   <!-- IF S_URL -->
   <dl style="clear: left;">
      <dt><label for="url">URL:</label></dt>
         <dd><input type="text" name="url" id="url" size="45" maxlength="250" tabindex="2" value="{TOPIC_URL}" class="inputbox autowidth" /></dd>
   </dl>
   <!-- ENDIF -->
The Find specified by the MOD could not be found
styles/prosilver/template/simple_header.html:Find
Код: Выделить всё
   var onload_functions = new Array();
   var onunload_functions = new Array();
   var style_cookie_settings = '{A_COOKIE_SETTINGS}';
Add After
Код: Выделить всё
   // www.phpBB-SEO.com SEO TOOLKIT BEGIN
   var seo_delim_start = '{SEO_START_DELIM}';
   var seo_static_pagination = '{SEO_SATIC_PAGE}';
   var seo_ext_pagination = '{SEO_EXT_PAGE}';
   var seo_external = {SEO_EXTERNAL};
   var seo_external_sub = {SEO_EXTERNAL_SUB};
   var seo_ext_classes = {SEO_EXT_CLASSES};
   var seo_hashfix = {SEO_HASHFIX};
   // www.phpBB-SEO.com SEO TOOLKIT END
The Find specified by the MOD could not be found
styles/prosilver/template/viewtopic_body.html:Find
Код: Выделить всё
<a href="#p{postrow.POST_ID}">
In-Line Find
Код: Выделить всё
#p{postrow.POST_ID}
The In-Line Find specified by the MOD could not be found. The Find specified by the MOD could not be found
Find
Код: Выделить всё
<a href="#wrap" class="top" title="{L_BACK_TO_TOP}">
In-Line Find
Код: Выделить всё
#wrap
The In-Line Find specified by the MOD could not be found. The Find specified by the MOD could not be found
Вложения
install.xml
(106.09 КБ) Скачиваний: 810
daftMan
Автор темы
Репутация: 17
С нами: 11 лет 4 месяца

Сообщение #6 JoteRuso » 03.12.2012, 15:05

По поводу галереи и её установки - алгоритм чистовой установки следующий:
1) ставим последнюю версию phpBBex.
2) качаем и устанавливаем подходящую версию TortoiseHg.
3) запускаем командную строку
4) создаём у себя папку forum с локальной копией репозитория phpBBex:
Код: Выделить всё
hg clone https://code.google.com/p/phpbbex/ forum
5) переходим в папку forum
Код: Выделить всё
cd forum
6) закачиваем в эту папку актуальную версию галереи для phpBBex:
Код: Выделить всё
hg update gallery
7) На установленном форуме авторизуемся под Админом!
8) содержимое папки forum (кроме папки .hg и двух файлов, начинающихся с .hg) зиппуем и перебрасываем на сервер в папку с уже установленным движком phpBBex. Раззиповываем с заменой файлов.
9) Переименовываем папку install_gallery в install
10) Производим установку галереи, следуя всем указаниям (аналогично установке форума phpBBex).

Всё должно встать без проблем.

Единственное пожелание - после выхода очередного релиза phpBBex подождите недельку, чтобы при чистовой установке вы смогли использовать версию галереи, уже доработанную под новый релиз, так как на доработку галереи автору доработки тоже требуется время.
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #7 Andrey1990 » 20.12.2012, 14:26

Никто не пробовал ставить мод подсветски синтаксиса Syntax Highlighter 1.0.15?
На обычном phpbb3 стояла версия 1.0.12 данного модуля и нормально работала, а здесь тег [syntax] никак не обрабатывается.
Также не работает мод ReIMG Image Resizer.

Добавлено спустя 6 часов 50 минут 42 секунды:
Есть предположение почему не работают эти два мода. Они используют систему хуков phpBB. Попробовал создать свой простейший хук, но он тоже не стал работать. В связи с этим вопрос: в phpBBex были какие-то изменения в системе хуков?
Andrey1990 M
Откуда: Воронеж
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #8 VEG » 20.12.2012, 22:29

Andrey1990,
Нет, система хуков не изменялась. Не могли бы вы выложить архив этого мода? По ссылке не даёт качать без регистрации.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #9 Andrey1990 » 21.12.2012, 10:42

Как вложение добавить не получилось, слишком большой размер у одного мода.
Вот оба мода:
http://prog-portal.ru/reimg_image_resizer_2_0_1.zip
http://prog-portal.ru/phpbb3_geshi_syntax_highlighter.1.0.15.1.45c.zip

Добавлено спустя 1 минуту 44 секунды:
Есть правда ещё одно предположение почему не работает. Сайт на phpBBex я ещё не заливал на хостинг, тестирую на домашнем компьютере на связке apache 2.4 + php 5.4 + mysql 5.5. Может что-то из этого не подходит?
Andrey1990 M
Откуда: Воронеж
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #10 VEG » 21.12.2012, 13:56

Andrey1990, в этих скриптах большое количество правок по части BBCode. Хуки здесь не при чём. Для подсветки синтаксиса в блоках code лучше использовать эту библиотеку. Её можно вообще прикрутить без модификаций движка, через встроенную функцию добавления BBCode (по аналогии с BBMedia), либо с простой правкой в шаблоне. Если не получится самостоятельно прикрутить, позднее погляжу.

Добавлено спустя 9 минут 5 секунд:
Вот ещё два мода на основе этой библиотеки:
https://github.com/randomessence/highlight.js-phpbb3-automatic-code-prettify — попроще, полная автоматика
http://www.phpbbguru.net/community/topic18489.html — посложнее в установке
Сразу говорю, что ни один не пробовал. Первый по идее должен работать.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #11 Andrey1990 » 21.12.2012, 14:12

VEG, спасибо, сейчас попробую.

Добавлено спустя 22 минуты 55 секунд:
Первый работает, второй не проверял, т.к. уже не требуется.
Найду аналог ReIMG Image Resizer и полностью перейду на phpBBex.
Andrey1990 M
Откуда: Воронеж
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #12 VEG » 22.12.2012, 02:08

Andrey1990:Найду аналог ReIMG Image Resizer и полностью перейду на phpBBex.
phpBBex по крайней мере умеет автоматом уменьшать вставленные изображения до ширины сообщения, чтобы ничего не вылазило. Также здесь на форуме factotum публиковал мод лайтбокса. Посмотрите в мастерской.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #13 Andrey1990 » 22.12.2012, 11:14

VEG:phpBBex по крайней мере умеет автоматом уменьшать вставленные изображения до ширины сообщения
Я вчера вечером уже поставил мод лайтбокса, всё работает.
Andrey1990 M
Откуда: Воронеж
Репутация: 0
С нами: 11 лет 3 месяца


Вернуться в Мастерская 1.x