Created
September 30, 2017 11:57
-
-
Save Crizz0/c82a0f68d755a49d2249939713a170eb to your computer and use it in GitHub Desktop.
About us - Diff v2.1.1 to v2.1.2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/README.md b/README.md | |
index 53757c8..567d6dd 100644 | |
--- a/README.md | |
+++ b/README.md | |
@@ -6,7 +6,7 @@ Author: Christian Schnegelberger | |
URL: http://www.crizzo.de | |
-Version: v2.1.x | |
+Version: v2.1.2 | |
## Install instructions: | |
1. Download the extension | |
diff --git a/acp/acp_aboutus_info.php b/acp/acp_aboutus_info.php | |
index c223e64..caf8615 100644 | |
--- a/acp/acp_aboutus_info.php | |
+++ b/acp/acp_aboutus_info.php | |
@@ -17,7 +17,7 @@ class acp_aboutus_info | |
return array( | |
'filename' => '\crizzo\aboutus\acp\acp_aboutus_module', | |
'title' => 'ACP_ABOUTUS_SETTINGS', | |
- 'version' => '2.1.1', | |
+ 'version' => '2.1.2', | |
'modes' => array( | |
'config_aboutus' => array('title' => 'ACP_ABOUTUS_SETTINGS', 'auth' => 'ext_crizzo/aboutus && acl_a_board', 'cat' => array('ACP_ABOUTUS_SETTINGS')), | |
), | |
diff --git a/acp/acp_aboutus_module.php b/acp/acp_aboutus_module.php | |
index e45ad10..c9f5d7a 100644 | |
--- a/acp/acp_aboutus_module.php | |
+++ b/acp/acp_aboutus_module.php | |
@@ -50,10 +50,10 @@ class acp_aboutus_module | |
} | |
$config_text = $phpbb_container->get('config_text'); | |
$aboutus_data = $config_text->get_array(array( | |
- 'aboutus_info', | |
- 'aboutus_info_uid', | |
- 'aboutus_info_bitfield', | |
- 'aboutus_info_flags', | |
+ 'aboutus_info', | |
+ 'aboutus_info_uid', | |
+ 'aboutus_info_bitfield', | |
+ 'aboutus_info_flags', | |
)); | |
$aboutus_info = $aboutus_data['aboutus_info']; | |
@@ -84,10 +84,10 @@ class acp_aboutus_module | |
$config->set('acp_aboutus_enable', $request->variable('acp_aboutus_enable', false)); | |
$config_text->set_array(array( | |
- 'aboutus_info' => $aboutus_info, | |
- 'aboutus_info_uid' => $aboutus_info_uid, | |
- 'aboutus_info_bitfield' => $aboutus_info_bitfield, | |
- 'aboutus_info_flags' => $aboutus_info_flags, | |
+ 'aboutus_info' => $aboutus_info, | |
+ 'aboutus_info_uid' => $aboutus_info_uid, | |
+ 'aboutus_info_bitfield' => $aboutus_info_bitfield, | |
+ 'aboutus_info_flags' => $aboutus_info_flags, | |
)); | |
trigger_error($language->lang('ABOUTUS_UPDATED') . adm_back_link($this->u_action)); | |
} | |
@@ -108,14 +108,19 @@ class acp_aboutus_module | |
'TERMS_OF_USE' => $config['acp_aboutus_termsofuse_enable'], | |
'PRIVACY' => $config['acp_aboutus_privacy_enable'], | |
'ABOUTUS_ENABLE' => $config['acp_aboutus_enable'], | |
+ | |
'S_BBCODE_DISABLE_CHECKED' => !$aboutus_edit['allow_bbcode'], | |
'S_SMILIES_DISABLE_CHECKED' => !$aboutus_edit['allow_smilies'], | |
'S_MAGIC_URL_DISABLE_CHECKED' => !$aboutus_edit['allow_urls'], | |
- 'BBCODE_STATUS' => $language->lang('BBCODE_IS_ON', '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), | |
- 'SMILIES_STATUS' => $language->lang('SMILIES_ARE_ON'), | |
+ | |
+ 'BBCODE_STATUS' => $language->lang('BBCODE_IS_ON', '<a href="' . $phpbb_container->get('controller.helper')->route('phpbb_help_bbcode_controller') . '">', '</a>'), | |
+ 'SMILIES_STATUS' => $language->lang('SMILIES_ARE_ON'), | |
'IMG_STATUS' => $language->lang('IMAGES_ARE_ON'), | |
'FLASH_STATUS' => $language->lang('FLASH_IS_ON'), | |
'URL_STATUS' => $language->lang('URL_IS_ON'), | |
+ | |
+ 'U_ACTION' => $this->u_action, | |
+ | |
'S_BBCODE_ALLOWED' => true, | |
'S_SMILIES_ALLOWED' => true, | |
'S_BBCODE_IMG' => true, | |
diff --git a/adm/style/acp_aboutus.html b/adm/style/acp_aboutus.html | |
index 548b5a3..0b236f1 100644 | |
--- a/adm/style/acp_aboutus.html | |
+++ b/adm/style/acp_aboutus.html | |
@@ -1,4 +1,4 @@ | |
-<!-- INCLUDE overall_header.html --> | |
+{% include 'overall_header.html' %} | |
<script type="text/javascript"> | |
// <![CDATA[ | |
@@ -14,77 +14,77 @@ | |
<a id="maincontent"></a> | |
-<h1>{L_ACP_ABOUTUS_SETTINGS}</h1> | |
+<h1>{{ lang('ACP_ABOUTUS_SETTINGS') }}</h1> | |
-<p>{L_ACP_ABOUTUS_SETTINGS_EXPLAIN}</p> | |
+<p>{{ lang('ACP_ABOUTUS_SETTINGS_EXPLAIN') }}</p> | |
-<form id="acp_aboutus" method="post" action="{U_ACTION}"> | |
- <!-- IF ACP_ABOUTUS_INFO_PREVIEW --> | |
+<form id="acp_aboutus" method="post" action="{{ U_ACTION }}"> | |
+ {% if ACP_ABOUTUS_INFO_PREVIEW %} | |
<fieldset> | |
- <legend>{L_ACP_ABOUTUS_INFO_PREVIEW}</legend> | |
- <p>{ACP_ABOUTUS_INFO_PREVIEW}</p> | |
+ <legend>{{ lang('ACP_ABOUTUS_INFO_PREVIEW') }}</legend> | |
+ <p>{{ ACP_ABOUTUS_INFO_PREVIEW }}</p> | |
</fieldset> | |
- <!-- ENDIF --> | |
+ {% endif %} | |
<fieldset> | |
- <legend>{L_ACP_ABOUTUS_INFO}</legend> | |
- <p>{L_ACP_ABOUTUS_INFO_EXPLAIN}</p> | |
+ <legend>{{ lang('ACP_ABOUTUS_INFO') }}</legend> | |
+ <p>{{ lang('ACP_ABOUTUS_INFO_EXPLAIN') }}</p> | |
- <!-- INCLUDE acp_posting_buttons.html --> | |
+ {% include 'acp_posting_buttons.html' %} | |
<dl class="responsive-columns"> | |
<dt style="width: 90px;" id="color_palette_placeholder" data-orientation="v" data-height="12" data-width="15" data-bbcode="true"> | |
</dt> | |
- <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;"> | |
- <textarea name="aboutus_info" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{ACP_ABOUTUS_INFO}</textarea> | |
+ <dd style="margin-{{ S_CONTENT_FLOW_BEGIN }}: 90px;"> | |
+ <textarea name="aboutus_info" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{{ ACP_ABOUTUS_INFO }}</textarea> | |
</dd> | |
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;"> | |
- <!-- IF S_BBCODE_ALLOWED --> | |
- <label><input type="checkbox" class="radio" name="disable_bbcode"<!-- IF S_BBCODE_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_BBCODE}</label> | |
- <!-- ENDIF --> | |
- <!-- IF S_SMILIES_ALLOWED --> | |
- <label><input type="checkbox" class="radio" name="disable_smilies"<!-- IF S_SMILIES_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_SMILIES}</label> | |
- <!-- ENDIF --> | |
- <!-- IF S_LINKS_ALLOWED --> | |
- <label><input type="checkbox" class="radio" name="disable_magic_url"<!-- IF S_MAGIC_URL_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_MAGIC_URL}</label> | |
- <!-- ENDIF --> | |
+ {% if S_BBCODE_ALLOWED %} | |
+ <label><input type="checkbox" class="radio" name="disable_bbcode"{% if S_BBCODE_DISABLE_CHECKED %} checked="checked"{% endif %} /> {{ lang('DISABLE_BBCODE') }}</label> | |
+ {% endif %} | |
+ {% if S_SMILIES_ALLOWED %} | |
+ <label><input type="checkbox" class="radio" name="disable_smilies"{% if S_SMILIES_DISABLE_CHECKED %} checked="checked"{% endif %} /> {{ lang('DISABLE_SMILIES') }}</label> | |
+ {% endif %} | |
+ {% if S_LINKS_ALLOWED %} | |
+ <label><input type="checkbox" class="radio" name="disable_magic_url"{% if S_MAGIC_URL_DISABLE_CHECKED %} checked="checked"{% endif %} /> {{ lang('DISABLE_MAGIC_URL') }}</label> | |
+ {% endif %} | |
</dd> | |
- <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{L_OPTIONS}{L_COLON} </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd> | |
+ <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{{ lang('OPTIONS') }}{{ lang('COLON') }} </strong>{{ BBCODE_STATUS }} :: {{ IMG_STATUS }} :: {{ FLASH_STATUS }} :: {{ URL_STATUS }} :: {{ SMILIES_STATUS }}</dd> | |
</dl> | |
</fieldset> | |
<fieldset> | |
- <legend>{L_GENERAL_OPTIONS}</legend> | |
+ <legend>{{ lang('GENERAL_OPTIONS') }}</legend> | |
<dl> | |
- <dt><label for="acp_aboutus_termsofuse_enable">{L_ACP_TERMS_OF_USE_ENABLE}{L_COLON}</label><br /><span>{L_ACP_TERMS_OF_USE_ENABLE_EXPLAIN}</span></dt> | |
+ <dt><label for="acp_aboutus_termsofuse_enable">{{ lang('ACP_TERMS_OF_USE_ENABLE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('ACP_TERMS_OF_USE_ENABLE_EXPLAIN') }}</span></dt> | |
<dd> | |
- <label><input type="radio" class="radio" id="acp_aboutus_termsofuse_enable" name="acp_aboutus_termsofuse_enable" value="1"<!-- IF TERMS_OF_USE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> | |
- <label><input type="radio" class="radio" name="acp_aboutus_termsofuse_enable" value="0"<!-- IF not TERMS_OF_USE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label> | |
+ <label><input type="radio" class="radio" id="acp_aboutus_termsofuse_enable" name="acp_aboutus_termsofuse_enable" value="1"{% if TERMS_OF_USE %} checked="checked"{% endif %} /> {{ lang('YES') }}</label> | |
+ <label><input type="radio" class="radio" name="acp_aboutus_termsofuse_enable" value="0"{% if not TERMS_OF_USE %} checked="checked"{% endif %} /> {{ lang('NO') }}</label> | |
</dd> | |
</dl> | |
<dl> | |
- <dt><label for="acp_aboutus_privacy_enable">{L_ACP_PRIVACY_ENABLE}{L_COLON}</label><br /><span>{L_ACP_PRIVACY_ENABLE_EXPLAIN}</span></dt> | |
+ <dt><label for="acp_aboutus_privacy_enable">{{ lang('ACP_PRIVACY_ENABLE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('ACP_PRIVACY_ENABLE_EXPLAIN') }}</span></dt> | |
<dd> | |
- <label><input type="radio" class="radio" id="acp_aboutus_privacy_enable" name="acp_aboutus_privacy_enable" value="1"<!-- IF PRIVACY --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> | |
- <label><input type="radio" class="radio" name="acp_aboutus_privacy_enable" value="0"<!-- IF not PRIVACY --> checked="checked"<!-- ENDIF --> /> {L_NO}</label> | |
+ <label><input type="radio" class="radio" id="acp_aboutus_privacy_enable" name="acp_aboutus_privacy_enable" value="1"{% if PRIVACY %} checked="checked"{% endif %} /> {{ lang('YES') }}</label> | |
+ <label><input type="radio" class="radio" name="acp_aboutus_privacy_enable" value="0"{% if not PRIVACY %} checked="checked"{% endif %} /> {{ lang('NO') }}</label> | |
</dd> | |
</dl> | |
<dl> | |
- <dt><label for="acp_aboutus_enable">{L_ACP_ABOUTUS_ENABLE}{L_COLON}</label><br /><span>{L_ACP_ABOUTUS_ENABLE_EXPLAIN}</span></dt> | |
+ <dt><label for="acp_aboutus_enable">{{ lang('ACP_ABOUTUS_ENABLE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('ACP_ABOUTUS_ENABLE_EXPLAIN') }}</span></dt> | |
<dd> | |
- <label><input type="radio" class="radio" id="acp_aboutus_enable" name="acp_aboutus_enable" value="1"<!-- IF ABOUTUS_ENABLE -->checked="checked"<!-- ENDIF --> /> {L_YES} </label> | |
- <label><input type="radio" class="radio" name="acp_aboutus_enable" value="0"<!-- IF not ABOUTUS_ENABLE -->checked="checked"<!-- ENDIF --> /> {L_NO} </label> | |
+ <label><input type="radio" class="radio" id="acp_aboutus_enable" name="acp_aboutus_enable" value="1"{% if ABOUTUS_ENABLE %}checked="checked"{% endif %} /> {{ lang('YES') }} </label> | |
+ <label><input type="radio" class="radio" name="acp_aboutus_enable" value="0"{% if not ABOUTUS_ENABLE %} checked="checked"{% endif %} /> {{ lang('NO') }} </label> | |
</dd> | |
</dl> | |
</fieldset> | |
<fieldset class="submit-buttons"> | |
- <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> | |
- <input class="button2" type="submit" name="preview" value="{L_PREVIEW}" /> | |
- {S_FORM_TOKEN} | |
+ <input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" /> | |
+ <input class="button2" type="submit" name="preview" value="{{ lang('PREVIEW') }}" /> | |
+ {{ S_FORM_TOKEN }} | |
</fieldset> | |
</form> | |
-<!-- INCLUDE overall_footer.html --> | |
+{% include 'overall_footer.html' %} | |
diff --git a/composer.json b/composer.json | |
index 4c5dfbd..f7dccad 100644 | |
--- a/composer.json | |
+++ b/composer.json | |
@@ -3,8 +3,8 @@ | |
"type": "phpbb-extension", | |
"description": "About us is an extension which adds to phpBB 3.2 an about us or legal notice-page, where you can add your contact details and more.", | |
"homepage": "https://github.com/Crizz0/phpbb3-about-us", | |
- "version": "2.1.1", | |
- "time": "2017-03-12", | |
+ "version": "2.1.2", | |
+ "time": "2017-09-30", | |
"license": "GPL-2.0", | |
"authors": [{ | |
"name": "Christian Schnegelberger", | |
@@ -13,10 +13,10 @@ | |
"role": "Developer/Founder" | |
}], | |
"require": { | |
- "php": ">=5.4,<=7.1" | |
+ "php": ">=5.4,<7.2" | |
}, | |
"require-dev": { | |
- "phpbb/epv": "dev-master" | |
+ "phpbb/translation-validator": "1.3.*" | |
}, | |
"extra": { | |
"display-name": "About us", | |
diff --git a/event/main_listener.php b/event/main_listener.php | |
index d861acb..479ad28 100644 | |
--- a/event/main_listener.php | |
+++ b/event/main_listener.php | |
@@ -47,7 +47,7 @@ class main_listener implements EventSubscriberInterface | |
* Constructor | |
* | |
* @param \phpbb\controller\helper $helper Controller helper object | |
- * @param \phpbb\template $template Template object | |
+ * @param \phpbb\template\template $template Template object | |
* @param \phpbb\language\language $language | |
* @param string $php_ext phpEx | |
*/ | |
diff --git a/language/fr/common.php b/language/fr/common.php | |
index 2d496db..7e0cc85 100644 | |
--- a/language/fr/common.php | |
+++ b/language/fr/common.php | |
@@ -45,7 +45,7 @@ $lang = array_merge($lang, array( | |
'ABOUTUS_AND' => 'et', | |
'ACP_ABOUTUS_ENABLE' => 'Activer l’extension « À propos »', | |
- 'ACP_ABOUTUS_ENABLE_EXPLAIN' => 'Si la page « À propos » est désactivée, son lien dans le pied de page ne sera pas affiché. Néanmoins, avec l’adresse URL « app.php/aboutus » ou « /aboutus » il sera possible de consulter cette page. ', | |
+ 'ACP_ABOUTUS_ENABLE_EXPLAIN' => 'Si la page « À propos » est désactivée, son lien dans le pied de page ne sera pas affiché. Néanmoins, avec l’adresse URL « app.php/aboutus » ou « /aboutus » il sera possible de consulter cette page. ', | |
'ACP_ABOUTUS_INFO' => 'Texte de la page « À propos »', | |
'ACP_ABOUTUS_INFO_EXPLAIN' => 'Éditeur complet et aperçu du texte qui sera affiché sur la page « À propos ».', | |
'ACP_ABOUTUS_INFO_PREVIEW' => 'Aperçu de la page « À propos »', | |
diff --git a/styles/prosilver/template/aboutus.html b/styles/prosilver/template/aboutus.html | |
index d1b68c6..e885bfe 100644 | |
--- a/styles/prosilver/template/aboutus.html | |
+++ b/styles/prosilver/template/aboutus.html | |
@@ -1,25 +1,25 @@ | |
-<!-- INCLUDE overall_header.html --> | |
+{% include 'overall_header.html' %} | |
-<h2>{L_ABOUTUS}</h2> | |
+<h2>{{ lang('ABOUTUS') }}</h2> | |
<div class="panel aboutus"> | |
<div class="inner"> | |
<div class="content"> | |
- {ABOUTUS_OUTPUT} | |
+ {{ ABOUTUS_OUTPUT }} | |
</div> | |
- <!-- IF TERMS_OF_USE or PRIVACY --> | |
- <!-- IF TERMS_OF_USE and PRIVACY --> | |
- <h2>{L_TERMS_USE} {L_ABOUTUS_AND} {L_PRIVACY}</h2> | |
- <p>{L_DESCRIPTION_PRIVACY_TERMS_OF_USE} <a href="{U_TERMS_USE}">{L_TERMS_USE}</a> {L_ABOUTUS_AND} <a href="{U_PRIVACY}">{L_PRIVACY}</a></p> | |
- <!-- ELSEIF PRIVACY --> | |
- <h2>{L_PRIVACY}</h2> | |
- <p>{L_DESCRIPTION_PRIVACY} <a href="{U_PRIVACY}">{L_PRIVACY}</a></p> | |
- <!-- ELSEIF TERMS_OF_USE --> | |
- <h2>{L_TERMS_USE}</h2> | |
- <p>{L_DESCRIPTION_TERMS_OF_USE} <a href="{U_TERMS_USE}">{L_TERMS_USE}</a></p> | |
- <!-- ENDIF --> | |
- <!-- ENDIF --> | |
+ {% if TERMS_OF_USE or PRIVACY %} | |
+ {% if TERMS_OF_USE and PRIVACY %} | |
+ <h2>{{ lang('TERMS_USE') }} {{ lang('ABOUTUS_AND') }} {{ lang('PRIVACY') }}</h2> | |
+ <p>{{ lang('DESCRIPTION_PRIVACY_TERMS_OF_USE') }} <a href="{{ U_TERMS_USE }}">{{ lang('TERMS_USE') }}</a> {{ lang('ABOUTUS_AND') }} <a href="{{ U_PRIVACY }}">{{ lang('PRIVACY') }}</a></p> | |
+ {% elseif PRIVACY %} | |
+ <h2>{{ lang('PRIVACY') }}</h2> | |
+ <p>{{ lang('DESCRIPTION_PRIVACY') }} <a href="{{ U_PRIVACY }}">{{ lang('PRIVACY') }}</a></p> | |
+ {% elseif TERMS_OF_USE %} | |
+ <h2>{{ lang('TERMS_USE') }}</h2> | |
+ <p>{{ lang('DESCRIPTION_TERMS_OF_USE') }} <a href="{{ U_TERMS_USE }}">{{ lang('TERMS_USE') }}</a></p> | |
+ {% endif %} | |
+ {% endif %} | |
</div> | |
</div> | |
-<!-- INCLUDE overall_footer.html --> | |
+{% include 'overall_footer.html' %} | |
diff --git a/styles/prosilver/template/event/overall_footer_teamlink_after.html b/styles/prosilver/template/event/overall_footer_teamlink_after.html | |
index 27604d1..319c292 100644 | |
--- a/styles/prosilver/template/event/overall_footer_teamlink_after.html | |
+++ b/styles/prosilver/template/event/overall_footer_teamlink_after.html | |
@@ -1 +1 @@ | |
-<!-- IF ABOUTUS_ENABLE --><li class="rightside" data-last-responsive="true"><a href="{U_ABOUTUS}" role="menuitem"><i class="icon fa-info-circle fa-fw" aria-hidden="true"></i><span>{L_ABOUTUS}</span></a></li><!-- ENDIF --> | |
+{% if ABOUTUS_ENABLE %}<li class="rightside" data-last-responsive="true"><a href="{{ U_ABOUTUS }}" role="menuitem"><i class="icon fa-info-circle fa-fw" aria-hidden="true"></i><span>{{ lang('ABOUTUS') }}</span></a></li>{% endif %} | |
diff --git a/styles/prosilver/template/event/overall_header_head_append.html b/styles/prosilver/template/event/overall_header_head_append.html | |
index e092271..24de345 100644 | |
--- a/styles/prosilver/template/event/overall_header_head_append.html | |
+++ b/styles/prosilver/template/event/overall_header_head_append.html | |
@@ -1 +1 @@ | |
-<!-- INCLUDECSS @crizzo_aboutus/aboutus.css --> | |
\ No newline at end of file | |
+{% INCLUDECSS '@crizzo_aboutus/aboutus.css' %} | |
diff --git a/styles/prosilver/theme/aboutus.css b/styles/prosilver/theme/aboutus.css | |
index 6d951cc..7f1e07a 100644 | |
--- a/styles/prosilver/theme/aboutus.css | |
+++ b/styles/prosilver/theme/aboutus.css | |
@@ -3,12 +3,12 @@ | |
line-height: 1.5; | |
} | |
-.aboutus ul li { | |
- list-style-type: none; | |
+.aboutus ul { | |
+ margin-left: 1em; | |
} | |
-.aboutus ul { | |
- margin-left: 1em; | |
+.aboutus ul li { | |
+ list-style-type: none; | |
} | |
.aboutus p { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment