Ajout du FR
Ajout du FR + correction du "functions.php"
This commit is contained in:
BIN
ext/planetstyles/flightdeck.zip
Normal file
BIN
ext/planetstyles/flightdeck.zip
Normal file
Binary file not shown.
21
ext/planetstyles/flightdeck/acp/main_info.php
Normal file
21
ext/planetstyles/flightdeck/acp/main_info.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace planetstyles\flightdeck\acp;
|
||||
|
||||
class main_info
|
||||
{
|
||||
function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => '\planetstyles\flightdeck\acp\main_module',
|
||||
'title' => 'ACP_STYLE_SETTINGS_TITLE',
|
||||
'modes' => array(
|
||||
'settings' => array(
|
||||
'title' => 'ACP_STYLE_SETTINGS_SETTINGS',
|
||||
'auth' => 'ext_planetstyles/flightdeck && acl_a_board',
|
||||
'cat' => array('ACP_STYLE_SETTINGS_TITLE')
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
286
ext/planetstyles/flightdeck/acp/main_module.php
Normal file
286
ext/planetstyles/flightdeck/acp/main_module.php
Normal file
@@ -0,0 +1,286 @@
|
||||
<?php
|
||||
|
||||
namespace planetstyles\flightdeck\acp;
|
||||
|
||||
class main_module
|
||||
{
|
||||
/** @var \phpbb\cache\driver\driver_interface */
|
||||
protected $cache;
|
||||
|
||||
/** @var \phpbb\config\config */
|
||||
protected $config;
|
||||
|
||||
/** @var \phpbb\config\db_text */
|
||||
protected $config_text;
|
||||
|
||||
/** @var \phpbb\request\request */
|
||||
protected $request;
|
||||
|
||||
/** @var \phpbb\template\template */
|
||||
protected $template;
|
||||
|
||||
/** @var \phpbb\user */
|
||||
protected $user;
|
||||
|
||||
/** @var string */
|
||||
protected $root_path;
|
||||
|
||||
/** @var string */
|
||||
public $u_action;
|
||||
|
||||
public function main()
|
||||
{
|
||||
global $phpbb_container, $phpbb_root_path;
|
||||
|
||||
$this->cache = $phpbb_container->get('cache.driver');
|
||||
$this->config = $phpbb_container->get('config');
|
||||
$this->config_text = $phpbb_container->get('config_text');
|
||||
$this->request = $phpbb_container->get('request');
|
||||
$this->template = $phpbb_container->get('template');
|
||||
$this->user = $phpbb_container->get('user');
|
||||
$this->root_path = $phpbb_root_path;
|
||||
|
||||
$this->user->add_lang_ext('planetstyles/flightdeck', 'acp_style_settings');
|
||||
$this->tpl_name = 'acp_style_settings_body';
|
||||
$this->page_title = $this->user->lang('ACP_STYLE_SETTINGS_TITLE');
|
||||
add_form_key('planetstyles/flightdeck');
|
||||
|
||||
try
|
||||
{
|
||||
$style_settings = $this->load_json_data();
|
||||
}
|
||||
catch (\phpbb\exception\runtime_exception $e)
|
||||
{
|
||||
$style_settings = array();
|
||||
}
|
||||
|
||||
if ($this->request->is_set_post('submit'))
|
||||
{
|
||||
if (!check_form_key('planetstyles/flightdeck'))
|
||||
{
|
||||
trigger_error('FORM_INVALID');
|
||||
}
|
||||
|
||||
$this->config->set('style_settings_logo_path', $this->request->variable('style_settings_logo_path', ''));
|
||||
$this->config->set('style_settings_logo_width', $this->request->variable('style_settings_logo_width', 0));
|
||||
$this->config->set('style_settings_logo_height', $this->request->variable('style_settings_logo_height', 0));
|
||||
|
||||
// Start PS-Test
|
||||
$this->config->set('style_settings_header_path', $this->request->variable('style_settings_header_path', ''));
|
||||
$this->config->set('style_settings_favicon_path', $this->request->variable('style_settings_favicon_path', ''));
|
||||
// End PS-Test
|
||||
|
||||
foreach ($style_settings as $style_setting)
|
||||
{
|
||||
$this->config->set('style_settings_config_' . $style_setting['name'], $this->request->variable($style_setting['name'], ''));
|
||||
}
|
||||
|
||||
$this->cache->destroy('_style_settings_html_data');
|
||||
$this->config_text->set_array(array(
|
||||
'style_settings_html_1' => $this->request->variable('style_settings_html_1', '', 'true'),
|
||||
'style_settings_html_2' => $this->request->variable('style_settings_html_2', '', 'true'),
|
||||
'style_settings_html_3' => $this->request->variable('style_settings_html_3', '', 'true'),
|
||||
'style_settings_html_4' => $this->request->variable('style_settings_html_4', '', 'true'),
|
||||
));
|
||||
|
||||
|
||||
$file = $this->request->file('style_settings_logo_upload');
|
||||
if ($file['error'] == UPLOAD_ERR_OK)
|
||||
{
|
||||
$destination = 'ext/planetstyles/flightdeck/store/';
|
||||
if (!$this->upload($file, $this->root_path . $destination))
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_LOGO_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
$this->config->set('style_settings_logo_path', $destination . $file['name']);
|
||||
}
|
||||
else if ($file['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_LOGO_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// Start PS-Test
|
||||
$file = $this->request->file('style_settings_header_upload');
|
||||
if ($file['error'] == UPLOAD_ERR_OK)
|
||||
{
|
||||
$destination = 'ext/planetstyles/flightdeck/store/';
|
||||
if (!$this->upload($file, $this->root_path . $destination))
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_HEADER_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
$this->config->set('style_settings_header_path', $destination . $file['name']);
|
||||
}
|
||||
else if ($file['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_HEADER_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
|
||||
// Favicon
|
||||
$file = $this->request->file('style_settings_favicon_upload');
|
||||
if ($file['error'] == UPLOAD_ERR_OK)
|
||||
{
|
||||
$destination = 'ext/planetstyles/flightdeck/store/';
|
||||
if (!$this->upload($file, $this->root_path . $destination))
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_FAVICON_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
$this->config->set('style_settings_favicon_path', $destination . $file['name']);
|
||||
}
|
||||
else if ($file['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_HEADER_ERROR', $file['name']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
// End PS-Test
|
||||
|
||||
trigger_error($this->user->lang('STYLE_SETTINGS_SAVED') . adm_back_link($this->u_action));
|
||||
}
|
||||
|
||||
foreach ($style_settings as $name => $data)
|
||||
{
|
||||
$config_name = 'style_settings_config_' . $data['name'];
|
||||
$this->template->assign_block_vars('style_settings_config', array(
|
||||
'VALUE' => $this->config->offsetExists($config_name) ? $this->config->offsetGet($config_name) : 0,
|
||||
'OPTIONS' => isset($data['values']) ? $data['values'] : null,
|
||||
'LABEL' => $name,
|
||||
'LABEL_EXPLAIN' => $this->user->lang('STYLE_SETTINGS_CONFIG_EXPLAIN', strtoupper($config_name)),
|
||||
'CONFIG_NAME' => $data['name'],
|
||||
'LABEL_HELP' => $data['help'],
|
||||
'S_BOOL' => $data['type'] === 'bool',
|
||||
'S_LIST' => $data['type'] === 'list',
|
||||
'S_STRING' => $data['type'] === 'string',
|
||||
));
|
||||
}
|
||||
|
||||
$html_code_block_data = $this->config_text->get_array(array(
|
||||
'style_settings_html_1',
|
||||
'style_settings_html_2',
|
||||
'style_settings_html_3',
|
||||
'style_settings_html_4',
|
||||
));
|
||||
|
||||
ksort($html_code_block_data);
|
||||
$index = 0;
|
||||
foreach ($html_code_block_data as $key => $data)
|
||||
{
|
||||
$this->template->assign_block_vars('style_settings_html', array(
|
||||
'VALUE' => $data,
|
||||
'NAME' => 'style_settings_html_' . ++$index,
|
||||
'LABEL' => $this->user->lang('STYLE_SETTINGS_HTML_' . $index),
|
||||
'LABEL_HELP' => $this->user->lang('STYLE_SETTINGS_HTML_HELP_' . $index),
|
||||
'LABEL_EXPLAIN' => $this->user->lang('STYLE_SETTINGS_HTML_EXPLAIN', $index),
|
||||
));
|
||||
}
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'STYLE_SETTINGS_LOGO_PATH' => $this->config->offsetGet('style_settings_logo_path'),
|
||||
'STYLE_SETTINGS_LOGO_WIDTH' => $this->config->offsetGet('style_settings_logo_width'),
|
||||
'STYLE_SETTINGS_LOGO_HEIGHT' => $this->config->offsetGet('style_settings_logo_height'),
|
||||
|
||||
// Start PS-Test
|
||||
'STYLE_SETTINGS_HEADER_PATH' => $this->config->offsetGet('style_settings_header_path'),
|
||||
'STYLE_SETTINGS_FAVICON_PATH' => $this->config->offsetGet('style_settings_favicon_path'),
|
||||
// End PS-Test
|
||||
|
||||
|
||||
'U_ACTION' => $this->u_action,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return decoded JSON data from a JSON file
|
||||
*
|
||||
* @return array JSON data
|
||||
* @throws \phpbb\exception\runtime_exception
|
||||
* @access protected
|
||||
*/
|
||||
protected function load_json_data()
|
||||
{
|
||||
$json_file = $this->root_path . 'ext/planetstyles/flightdeck/styles/style_config.json';
|
||||
|
||||
if (!file_exists($json_file))
|
||||
{
|
||||
throw new \phpbb\exception\runtime_exception('FILE_NOT_FOUND', array($json_file));
|
||||
}
|
||||
|
||||
if (!($file_contents = file_get_contents($json_file)))
|
||||
{
|
||||
throw new \phpbb\exception\runtime_exception('FILE_CONTENT_ERR', array($json_file));
|
||||
}
|
||||
|
||||
if (($json_data = json_decode($file_contents, true)) === null)
|
||||
{
|
||||
throw new \phpbb\exception\runtime_exception('FILE_JSON_DECODE_ERR', array($json_file));
|
||||
}
|
||||
|
||||
return $json_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Upload the file to the given directory
|
||||
*
|
||||
* @param array $fp File pointer data
|
||||
* @param string $location Path to directory where to upload
|
||||
*
|
||||
* @return bool True if upload was successful, false otherwise
|
||||
* @access protected
|
||||
*/
|
||||
protected function upload($fp, $location)
|
||||
{
|
||||
if ($this->allowedExtension($fp['name']) && $this->allowedSize($fp['size']))
|
||||
{
|
||||
$destination = $location . basename($fp['name']);
|
||||
if (move_uploaded_file($fp['tmp_name'], $destination))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if file is allowed by its extension
|
||||
*
|
||||
* @param string $filename File name
|
||||
*
|
||||
* @return bool True if file ext is allowed, false otherwise
|
||||
* @access protected
|
||||
*/
|
||||
protected function allowedExtension($filename)
|
||||
{
|
||||
return in_array($this->getExtension($filename), array('gif', 'jpeg', 'jpg', 'png', 'svg'), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check file size in Mb, against php.ini upload_max_filesize setting
|
||||
*
|
||||
* @param string $filesize File size
|
||||
*
|
||||
* @return bool True if file size is allowed, false otherwise
|
||||
* @access protected
|
||||
*/
|
||||
protected function allowedSize($filesize)
|
||||
{
|
||||
return ($filesize < ((int) ini_get('upload_max_filesize')) * 1000000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file extension
|
||||
*
|
||||
* @param string $filename Name of file
|
||||
*
|
||||
* @return string File's extension or nothing if not found
|
||||
* @access protected
|
||||
*/
|
||||
protected function getExtension($filename)
|
||||
{
|
||||
if (strpos($filename, '.') === false)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$parts = explode('.', $filename);
|
||||
return strtolower(array_pop($parts));
|
||||
}
|
||||
}
|
||||
BIN
ext/planetstyles/flightdeck/adm/style/acp-logo.png
Normal file
BIN
ext/planetstyles/flightdeck/adm/style/acp-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,92 @@
|
||||
{% include 'overall_header.html' %}
|
||||
<div class="flightdeck">
|
||||
<div class="flightdeck-wrapper">
|
||||
<img src="{ROOT_PATH}/ext/planetstyles/flightdeck/adm/style/acp-logo.png" width="500" />
|
||||
<br /><br /><p>Milk Theme Control Panel. Please refer to the documentation for help.</p>
|
||||
</div>
|
||||
<div class="errorbox purgewarning">
|
||||
<p><strong>Important:</strong> Purge Cache in: "ACP → General » Purge Cache → Run Now" to remove this message and enable flightdeck.</p>
|
||||
</div>
|
||||
<form id="acp_board" method="post" action="{{ U_ACTION }}" enctype="multipart/form-data">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ lang('STYLE_SETTINGS_LOGO') }}</legend>
|
||||
<p>{{ lang('STYLE_SETTINGS_LOGO_EXPLAIN') }}</p>
|
||||
<dl>
|
||||
<dt><label for="style_settings_logo_upload">{{ lang('STYLE_SETTINGS_LOGO_UPLOAD') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_LOGO_UPLOAD_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="file" name="style_settings_logo_upload" id="style_settings_logo_upload"></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_settings_logo_path">{{ lang('STYLE_SETTINGS_LOGO_PATH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_LOGO_PATH_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="text" id="style_settings_logo_path" name="style_settings_logo_path" value="{{ STYLE_SETTINGS_LOGO_PATH }}" size="40" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_settings_logo_width">{{ lang('STYLE_SETTINGS_LOGO_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_LOGO_WIDTH_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="number" id="style_settings_logo_width" name="style_settings_logo_width" value="{{ STYLE_SETTINGS_LOGO_WIDTH }}" size="3" maxlength="3" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_settings_logo_height">{{ lang('STYLE_SETTINGS_LOGO_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_LOGO_HEIGHT_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="number" id="style_settings_logo_height" name="style_settings_logo_height" value="{{ STYLE_SETTINGS_LOGO_HEIGHT }}" size="3" maxlength="3" min="0" max="999" /> {{ lang('PIXEL') }}</dd>
|
||||
</dl>
|
||||
<hr />
|
||||
<dl>
|
||||
<dt><label for="style_settings_header_upload">{{ lang('STYLE_SETTINGS_FAVICON_UPLOAD') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_FAVICON_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="file" name="style_settings_favicon_upload" id="style_settings_favicon_upload"></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_settings_favicon_path">{{ lang('STYLE_SETTINGS_FAVICON_PATH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_FAVICON_PATH_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="text" id="style_settings_favicon_path" name="style_settings_favicon_path" value="{{ STYLE_SETTINGS_FAVICON_PATH }}" size="40" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<hr />
|
||||
<dl>
|
||||
<dt><label for="style_settings_header_upload">{{ lang('STYLE_SETTINGS_HEADER_UPLOAD') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_HEADER_UPLOAD_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="file" name="style_settings_header_upload" id="style_settings_header_upload"></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_settings_header_path">{{ lang('STYLE_SETTINGS_HEADER_PATH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('STYLE_SETTINGS_HEADER_PATH_EXPLAIN') }}</span></dt>
|
||||
<dd><input type="text" id="style_settings_header_path" name="style_settings_header_path" value="{{ STYLE_SETTINGS_HEADER_PATH }}" size="40" maxlength="255" /></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ lang('STYLE_SETTINGS_CONFIG') }}</legend>
|
||||
{% for style_settings_config in loops.style_settings_config %}
|
||||
<dl>
|
||||
<dt><label for="{{ style_settings_config.CONFIG_NAME }}">{{ style_settings_config.LABEL }}{{ lang('COLON') }}</label><br /><span>{{ style_settings_config.LABEL_HELP }}</span>
|
||||
<!-- <br /><span>{{ style_settings_config.LABEL_EXPLAIN }}</span></dt> -->
|
||||
<dd>
|
||||
{% if style_settings_config.S_BOOL %}
|
||||
<label><input type="radio" class="radio" id="{{ style_settings_config.CONFIG_NAME }}" name="{{ style_settings_config.CONFIG_NAME }}" value="1"{% if style_settings_config.VALUE %} checked="checked"{% endif %} /> {{ lang('YES') }}</label>
|
||||
<label><input type="radio" class="radio" name="{{ style_settings_config.CONFIG_NAME }}" value="0"{% if not style_settings_config.VALUE %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||
{% elseif style_settings_config.S_LIST %}
|
||||
{% for OPTION in style_settings_config.OPTIONS %}
|
||||
<label><input type="radio" class="radio" {% if loop.first %}id="{{ style_settings_config.CONFIG_NAME }}" {% endif %}name="{{ style_settings_config.CONFIG_NAME }}" value="{{ OPTION }}"{% if style_settings_config.VALUE === OPTION %} checked="checked"{% endif %} /> {{ OPTION }}</label>
|
||||
{% endfor %}
|
||||
{% elseif style_settings_config.S_STRING %}
|
||||
<input type="text" id="{{ style_settings_config.CONFIG_NAME }}" name="{{ style_settings_config.CONFIG_NAME }}" value="{{ style_settings_config.VALUE }}" size="40" maxlength="255" />
|
||||
{% endif %}
|
||||
</dd>
|
||||
</dl>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<p>Refer to documentation for corresponding output locations.</p>
|
||||
<legend>{{ lang('STYLE_SETTINGS_HTML_CODE') }}</legend>
|
||||
{% for style_settings_html in loops.style_settings_html %}
|
||||
<dl>
|
||||
<dt><label for="{{ style_settings_html.NAME }}">{{ style_settings_html.LABEL }}</label><br /><span>{% if style_settings_html.LABEL_HELP %}{{ style_settings_html.LABEL_HELP }}{% endif %} <!-- {{ style_settings_html.LABEL_EXPLAIN }} --></span></dt>
|
||||
<dd><textarea id="{{ style_settings_html.NAME }}" name="{{ style_settings_html.NAME }}" rows="10" cols="500" >{{ style_settings_html.VALUE }}</textarea></dd>
|
||||
</dl>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||
</p>
|
||||
{{ S_FORM_TOKEN }}
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
{% include 'overall_footer.html' %}
|
||||
@@ -0,0 +1,7 @@
|
||||
<!-- INCLUDEJS jscolor.js -->
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$("input#colour_picker").addClass("jscolor {width:243, height:150}");
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
<!-- INCLUDECSS flightdeck.css -->
|
||||
53
ext/planetstyles/flightdeck/adm/style/flightdeck.css
Normal file
53
ext/planetstyles/flightdeck/adm/style/flightdeck.css
Normal file
@@ -0,0 +1,53 @@
|
||||
.flightdeck-wrapper, .flightdeck fieldset {
|
||||
background-color: #FFFFFF;
|
||||
padding: 30px;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 0 5px 3px rgba(0, 0, 0, 0.02);
|
||||
}
|
||||
|
||||
.flightdeck * {
|
||||
font-family: 'Arial', sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.flightdeck fieldset {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.flightdeck fieldset dl {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.flightdeck fieldset dd {
|
||||
padding-left: 20px;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.flightdeck fieldset dt,.flightdeck fieldset dt:hover {
|
||||
border-right-color: #E3EBEF !important;
|
||||
}
|
||||
|
||||
.flightdeck fieldset legend, .flightdeck fieldset dt label {
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.flightdeck fieldset input[type=text], .flightdeck fieldset input[type=file], .flightdeck fieldset input[type=number], .flightdeck fieldset textarea {
|
||||
background: rgba(0,0,0,0.05);
|
||||
border: none;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.flightdeck textarea {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
.flightdeck .purgewarning {
|
||||
display: none;
|
||||
}
|
||||
|
||||
fieldset dl span {
|
||||
opacity: 0.6;
|
||||
}
|
||||
1844
ext/planetstyles/flightdeck/adm/style/jscolor.js
Normal file
1844
ext/planetstyles/flightdeck/adm/style/jscolor.js
Normal file
File diff suppressed because it is too large
Load Diff
23
ext/planetstyles/flightdeck/composer.json
Normal file
23
ext/planetstyles/flightdeck/composer.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "planetstyles/flightdeck",
|
||||
"type": "phpbb-extension",
|
||||
"description": "Control Panel for Milk v2 Theme",
|
||||
"homepage": "http://www.planetstyles.net",
|
||||
"version": "2.0.3",
|
||||
"license": "Private use only",
|
||||
"authors": [
|
||||
{
|
||||
"name": "PlanetStyles",
|
||||
"homepage": "http://www.planetstyles.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"extra": {
|
||||
"display-name": "PlanetStyles Flight Deck (v2)",
|
||||
"soft-require": {
|
||||
"phpbb/phpbb": ">=3.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
10
ext/planetstyles/flightdeck/config/services.yml
Normal file
10
ext/planetstyles/flightdeck/config/services.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
planetstyles.flightdeck.listener:
|
||||
class: planetstyles\flightdeck\event\listener
|
||||
arguments:
|
||||
- '@cache.driver'
|
||||
- '@config'
|
||||
- '@config_text'
|
||||
- '@template'
|
||||
tags:
|
||||
- { name: event.listener }
|
||||
149
ext/planetstyles/flightdeck/event/listener.php
Normal file
149
ext/planetstyles/flightdeck/event/listener.php
Normal file
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
namespace planetstyles\flightdeck\event;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
class listener implements EventSubscriberInterface
|
||||
{
|
||||
/** @var \phpbb\cache\driver\driver_interface */
|
||||
protected $cache;
|
||||
|
||||
/** @var \phpbb\config\config */
|
||||
protected $config;
|
||||
|
||||
/** @var \phpbb\config\db_text */
|
||||
protected $config_text;
|
||||
|
||||
/** @var \phpbb\template\template */
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\cache\driver\driver_interface $cache Cache driver interface
|
||||
* @param \phpbb\config\config $config Config object
|
||||
* @param \phpbb\config\db_text $config_text DB text object
|
||||
* @param \phpbb\template\template $template Template object
|
||||
* @access public
|
||||
*/
|
||||
public function __construct(\phpbb\cache\driver\driver_interface $cache, \phpbb\config\config $config, \phpbb\config\db_text $config_text, \phpbb\template\template $template)
|
||||
{
|
||||
$this->cache = $cache;
|
||||
$this->config = $config;
|
||||
$this->config_text = $config_text;
|
||||
$this->template = $template;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign functions defined in this class to event listeners in the core
|
||||
*
|
||||
* @return array
|
||||
* @static
|
||||
* @access public
|
||||
*/
|
||||
static public function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'core.page_header' => 'load_style_settings_data',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load style settings data
|
||||
*
|
||||
* @return null
|
||||
* @access public
|
||||
*/
|
||||
public function load_style_settings_data()
|
||||
{
|
||||
$this->get_style_configs();
|
||||
|
||||
$html_code_data = $this->get_html_code();
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'FORUM_LOGO' => $this->get_forum_logo(),
|
||||
'FORUM_HEADER' => $this->get_forum_header(),
|
||||
'FORUM_FAVICON' => $this->get_forum_favicon(),
|
||||
|
||||
'STYLE_SETTINGS_HTML_1' => $html_code_data['style_settings_html_1'],
|
||||
'STYLE_SETTINGS_HTML_2' => $html_code_data['style_settings_html_2'],
|
||||
'STYLE_SETTINGS_HTML_3' => $html_code_data['style_settings_html_3'],
|
||||
'STYLE_SETTINGS_HTML_4' => $html_code_data['style_settings_html_4'],
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the forum logo IMG tag
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function get_forum_logo()
|
||||
{
|
||||
$logo_src = $this->config['style_settings_logo_path'];
|
||||
$logo_width = $this->config['style_settings_logo_width'] ? ' width="' . $this->config['style_settings_logo_width'] . '"' : '';
|
||||
$logo_height = $this->config['style_settings_logo_height'] ? ' height="' . $this->config['style_settings_logo_height'] . '"' : '';
|
||||
|
||||
return $logo_src ? '<img src="' . generate_board_url() . '/' . $logo_src . '"' . $logo_width . $logo_height . ' alt="">' : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the forum header image
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function get_forum_header()
|
||||
{
|
||||
$header_src = $this->config['style_settings_header_path'];
|
||||
|
||||
return $header_src ? generate_board_url() . '/' . $header_src : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the forum favicon
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function get_forum_favicon()
|
||||
{
|
||||
$favicon_src = $this->config['style_settings_favicon_path'];
|
||||
|
||||
return $favicon_src ? generate_board_url() . '/' . $favicon_src : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HTML code blocks as an array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function get_html_code()
|
||||
{
|
||||
if (($html_code_data = $this->cache->get('_style_settings_html_data')) === false)
|
||||
{
|
||||
$html_code_data = $this->config_text->get_array(array(
|
||||
'style_settings_html_1',
|
||||
'style_settings_html_2',
|
||||
'style_settings_html_3',
|
||||
'style_settings_html_4',
|
||||
));
|
||||
|
||||
$this->cache->put('_style_settings_html_data', $html_code_data);
|
||||
}
|
||||
|
||||
return array_map('htmlspecialchars_decode', $html_code_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the style settings and output them to the template
|
||||
*/
|
||||
protected function get_style_configs()
|
||||
{
|
||||
foreach ($this->config as $key => $value)
|
||||
{
|
||||
if (strpos($key, 'style_settings_config_') === 0)
|
||||
{
|
||||
$this->template->assign_var(strtoupper($key), $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
$lang = array_merge($lang, array(
|
||||
'STYLE_SETTINGS_LOGO' => 'Logos & Header Background',
|
||||
'STYLE_SETTINGS_LOGO_EXPLAIN' => '',
|
||||
'STYLE_SETTINGS_LOGO_UPLOAD' => 'Logo image upload',
|
||||
'STYLE_SETTINGS_LOGO_UPLOAD_EXPLAIN'=> 'Upload a logo image. The logo location below will automatically be filled in when an image is uploaded. Accepted formats: gif, jpg, png, svg.',
|
||||
'STYLE_SETTINGS_LOGO_PATH' => 'Logo image location',
|
||||
'STYLE_SETTINGS_LOGO_PATH_EXPLAIN' => 'This will be filled in automatically. Delete and submit to remove logo.',
|
||||
'STYLE_SETTINGS_LOGO_WIDTH' => 'Logo width',
|
||||
'STYLE_SETTINGS_LOGO_WIDTH_EXPLAIN' => 'Leave blank to use default logo size',
|
||||
'STYLE_SETTINGS_LOGO_HEIGHT' => 'Logo height',
|
||||
'STYLE_SETTINGS_LOGO_HEIGHT_EXPLAIN' => 'Leave blank to use default logo size',
|
||||
'STYLE_SETTINGS_LOGO_ERROR' => 'The logo file %s failed to upload.',
|
||||
|
||||
'STYLE_SETTINGS_HEADER_ERROR' => 'The header file %s failed to upload.',
|
||||
'STYLE_SETTINGS_HEADER_UPLOAD' => 'Header background upload.',
|
||||
'STYLE_SETTINGS_HEADER_UPLOAD_EXPLAIN' => 'Upload a header image (leave blank to use theme accent colour as background). The header location below will automatically be filled in when an image is uploaded.',
|
||||
'STYLE_SETTINGS_HEADER_PATH' => 'Header image location',
|
||||
'STYLE_SETTINGS_HEADER_PATH_EXPLAIN' => 'This will be filled in automatically. Delete and submit to remove header image.',
|
||||
|
||||
'STYLE_SETTINGS_FAVICON_ERROR' => 'The favicon file %s failed to upload.',
|
||||
'STYLE_SETTINGS_FAVICON_UPLOAD' => 'Favicon upload.',
|
||||
'STYLE_SETTINGS_FAVICON_EXPLAIN' => 'Upload a favicon. Square images strongly recommended.',
|
||||
'STYLE_SETTINGS_FAVICON_PATH' => 'Favicon image location',
|
||||
'STYLE_SETTINGS_FAVICON_PATH_EXPLAIN' => 'This will be filled in automatically. Delete and submit to remove favicon.',
|
||||
|
||||
'STYLE_SETTINGS_HTML_CODE' => 'HTML code blocks',
|
||||
'STYLE_SETTINGS_HTML_1' => 'Left Sidebar Custom Content',
|
||||
'STYLE_SETTINGS_HTML_2' => 'Right Sidebar Custom Content',
|
||||
'STYLE_SETTINGS_HTML_3' => 'Social Footer Code',
|
||||
'STYLE_SETTINGS_HTML_4' => 'Global <head> Code',
|
||||
'STYLE_SETTINGS_HTML_HELP_1' => 'Supports HTML and special characters',
|
||||
'STYLE_SETTINGS_HTML_HELP_2' => 'Supports HTML and special characters',
|
||||
'STYLE_SETTINGS_HTML_HELP_3' => 'See documentation for examples',
|
||||
'STYLE_SETTINGS_HTML_HELP_4' => 'WARNING! Bad things will happen if you\'re inexperienced',
|
||||
'STYLE_SETTINGS_HTML_EXPLAIN' => 'Uses the template var <samp>{STYLE_SETTINGS_HTML_%d}</samp>',
|
||||
|
||||
'STYLE_SETTINGS_CONFIG' => 'Style Settings',
|
||||
'STYLE_SETTINGS_CONFIG_EXPLAIN' => 'Uses the template var <samp>{%s}</samp>',
|
||||
|
||||
'STYLE_SETTINGS_SAVED' => 'Style settings have been saved.',
|
||||
));
|
||||
16
ext/planetstyles/flightdeck/language/en/info_acp_style.php
Normal file
16
ext/planetstyles/flightdeck/language/en/info_acp_style.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
$lang = array_merge($lang, array(
|
||||
'ACP_STYLE_SETTINGS_TITLE' => 'Flight Deck (Control Panel)',
|
||||
'ACP_STYLE_SETTINGS_SETTINGS' => 'Theme Settings',
|
||||
));
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace planetstyles\flightdeck\migrations;
|
||||
|
||||
class install_style_settings extends \phpbb\db\migration\migration
|
||||
{
|
||||
static public function depends_on()
|
||||
{
|
||||
return array('\phpbb\db\migration\data\v310\gold');
|
||||
}
|
||||
|
||||
public function update_data()
|
||||
{
|
||||
return array(
|
||||
array('config.add', array('style_settings_logo_path', '')),
|
||||
array('config.add', array('style_settings_logo_width', '')),
|
||||
array('config.add', array('style_settings_logo_height', '')),
|
||||
|
||||
// PS- Test
|
||||
array('config.add', array('style_settings_header_path', '')),
|
||||
array('config.add', array('style_settings_favicon_path', '')),
|
||||
|
||||
array('config_text.add', array('style_settings_html_1', '')),
|
||||
array('config_text.add', array('style_settings_html_2', '')),
|
||||
array('config_text.add', array('style_settings_html_3', '')),
|
||||
array('config_text.add', array('style_settings_html_4', '')),
|
||||
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_CAT_DOT_MODS',
|
||||
'ACP_STYLE_SETTINGS_TITLE'
|
||||
)),
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_STYLE_SETTINGS_TITLE',
|
||||
array(
|
||||
'module_basename' => '\planetstyles\flightdeck\acp\main_module',
|
||||
'modes' => array('settings'),
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
public function revert_data()
|
||||
{
|
||||
return array(
|
||||
array('custom', array(array($this, 'clean_style_configs'))),
|
||||
);
|
||||
}
|
||||
|
||||
public function clean_style_configs()
|
||||
{
|
||||
foreach ($this->config as $key => $value)
|
||||
{
|
||||
if (strpos($key, 'style_settings_config_') === 0)
|
||||
{
|
||||
$this->config->delete($key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
263
ext/planetstyles/flightdeck/styles/style_config.json
Normal file
263
ext/planetstyles/flightdeck/styles/style_config.json
Normal file
@@ -0,0 +1,263 @@
|
||||
{
|
||||
|
||||
"Logo Position": {
|
||||
"name": "logo_position",
|
||||
"type": "list",
|
||||
"help": "Sets the position of the forum logo. <br />Default value: 'middle'.",
|
||||
"values": [
|
||||
"Left",
|
||||
"Middle",
|
||||
"Right"
|
||||
]
|
||||
},
|
||||
|
||||
"Header Background Repeat": {
|
||||
"name": "header_repeat",
|
||||
"type": "list",
|
||||
"help": "Sets the repeat direction for the header background image. <br />Default value: 'no-repeat'.",
|
||||
"values": [
|
||||
"repeat-x",
|
||||
"repeat-y",
|
||||
"repeat",
|
||||
"no-repeat"
|
||||
]
|
||||
},
|
||||
|
||||
"Header Background Position": {
|
||||
"name": "header_position",
|
||||
"type": "list",
|
||||
"help": "Sets position for header background. <br />Default value: 'middle top'.",
|
||||
"values": [
|
||||
"left top",
|
||||
"left center",
|
||||
"left bottom",
|
||||
"center top",
|
||||
"center center",
|
||||
"center bottom",
|
||||
"right top",
|
||||
"right center",
|
||||
"right bottom"
|
||||
]
|
||||
},
|
||||
|
||||
"Stretch header background to fill space?": {
|
||||
"name": "header_size",
|
||||
"type": "bool",
|
||||
"help": "Stretches background image to fill header space. Only recommended for large backgrounds that don't repeat.<br /><strong>Note: Automatically applied when parallax header is enabled</strong>.<br />Default value: No."
|
||||
},
|
||||
|
||||
"Header Background Effect": {
|
||||
"name": "header_effect",
|
||||
"type": "list",
|
||||
"help": "Applies a visual style to the header bg image (if uploaded). <br />Default value: 'none'.",
|
||||
"values": [
|
||||
"None",
|
||||
"Colour Overlay",
|
||||
"Darken"
|
||||
]
|
||||
},
|
||||
|
||||
"Parallax Header?": {
|
||||
"name": "parallax_header",
|
||||
"type": "bool",
|
||||
"help": "Subtly moves the header background when scrolling.<br /><strong>Note: Requires a header image taller than the forum header. See documentation.</strong><br />Default value: No."
|
||||
},
|
||||
|
||||
"Enable Animated Header Particles?": {
|
||||
"name": "header_particles",
|
||||
"type": "bool",
|
||||
"help": "Enables an animated geometric overlay across the header.<br />Default value: No."
|
||||
},
|
||||
|
||||
"Header Format": {
|
||||
"name": "header_format",
|
||||
"type": "list",
|
||||
"help": "Text uses forum's sitename and description.<br />Default value: Both.",
|
||||
"values": [
|
||||
"Logo Only",
|
||||
"Sitename and Description Only",
|
||||
"Both"
|
||||
]
|
||||
},
|
||||
|
||||
"Navbar Position": {
|
||||
"name": "navbar_position",
|
||||
"type": "list",
|
||||
"help": "Defines where the primary navigation is displayed.<br />Default value: 'Outside Header'.",
|
||||
"values": [
|
||||
"Outside Header",
|
||||
"Inside Header"
|
||||
]
|
||||
},
|
||||
|
||||
"Font": {
|
||||
"name": "font_family",
|
||||
"type": "list",
|
||||
"help": "Set the font face. Previews can be found in description'<br />Default: Roboto.",
|
||||
"values": [
|
||||
"Roboto",
|
||||
"Roboto Slab",
|
||||
"Bubbler One",
|
||||
"Dosis",
|
||||
"Exo 2",
|
||||
"Raleway",
|
||||
"Rubik",
|
||||
"Quicksand"
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
"Layout Type": {
|
||||
"name": "layout_type",
|
||||
"type": "list",
|
||||
"help": "Sets the width of your forum.<br /><strong>Fluid:</strong> Full width, resizes and scales with the browser. <br /><strong>Boxed:</strong> Fixed width, margins between content and browser edges. <br/ ><strong>Note: In boxed layout sidebars won't display on smaller devices</strong><br />Default value: Fluid.",
|
||||
"values": [
|
||||
"Fluid",
|
||||
"Boxed"
|
||||
]
|
||||
},
|
||||
|
||||
"Theme Base Colour": {
|
||||
"name": "base_colour",
|
||||
"type": "list",
|
||||
"help": "Choose a light or dark base colour. See documentation for previews.<br />Default value: 'Light'.",
|
||||
"values": [
|
||||
"Light",
|
||||
"Dark"
|
||||
]
|
||||
},
|
||||
|
||||
"Theme Preset Colour": {
|
||||
"name": "colour_preset",
|
||||
"type": "list",
|
||||
"help": "Choose a predefined colour palette for your forum's accent colour. See documentation for previews.<br />Default value: 'No Preset'.",
|
||||
"values": [
|
||||
"Custom (Use colour picker below)",
|
||||
"No Custom Colour",
|
||||
"Aqua",
|
||||
"Blush",
|
||||
"Blue_Lagoon",
|
||||
"Calm_Darya",
|
||||
"Electric_Violet",
|
||||
"HoneyDew",
|
||||
"Hot_Red",
|
||||
"Ibiza_Sunset",
|
||||
"Little_Leaf",
|
||||
"Neon_Blue",
|
||||
"Nighthawk",
|
||||
"Pacific_Dream",
|
||||
"Peach",
|
||||
"Purple_Love",
|
||||
"Rose_Water",
|
||||
"Sahara",
|
||||
"Titanium",
|
||||
"Warm_Sunset"
|
||||
]
|
||||
},
|
||||
|
||||
"Theme Accent Colour": {
|
||||
"name": "colour_picker",
|
||||
"help": "Select colour of category headers, links and buttons.<br /><strong>Note: Only applied if 'No Preset' is selected above.</strong>",
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
"High Contrast Footer Links?": {
|
||||
"name": "high_contrast_links",
|
||||
"type": "bool",
|
||||
"help": "Overrides custom colour above with white links. Enable if you've set a dark colour above.<br />Default Value: No"
|
||||
},
|
||||
|
||||
|
||||
"Forumlist Display": {
|
||||
"name": "forumlist_display",
|
||||
"help": "Defines how forums are displayed on the index page.<br />Default setting: List.",
|
||||
"type": "list",
|
||||
"values": [
|
||||
"List",
|
||||
"List (Simplified)",
|
||||
"Grid"
|
||||
]
|
||||
},
|
||||
|
||||
"Content Block Headers": {
|
||||
"name": "content_block_header",
|
||||
"type": "list",
|
||||
"help": "Defines how category headers are displayed. <br />Default value: 'Block'.",
|
||||
"values": [
|
||||
"Stripe",
|
||||
"Block"
|
||||
]
|
||||
},
|
||||
|
||||
"Enable Sidebars?": {
|
||||
"name": "sidebars",
|
||||
"type": "bool",
|
||||
"help": "Choose to enable or disable sidebars. Further options configured below. <br />Default Value: No"
|
||||
},
|
||||
|
||||
"Sidebar Placement": {
|
||||
"name": "sidebar_placement",
|
||||
"type": "list",
|
||||
"help": "Choose which sidebars to display. <br /><strong>Note: Left Sidebar will be hidden on handheld devices and small desktops</strong>.<br />Default value: 'Right only'.",
|
||||
"values": [
|
||||
"Left Only",
|
||||
"Right Only",
|
||||
"Both"
|
||||
]
|
||||
},
|
||||
|
||||
"Enable Sidebar Profile Widget?": {
|
||||
"name": "profile_widget",
|
||||
"type": "bool",
|
||||
"help": "Displays User Avatar and basic profile links in right sidebar. Guests see a login/registration form, <br />Default Value: No"
|
||||
},
|
||||
|
||||
"Enable Sidebar Search Widget?": {
|
||||
"name": "search_widget",
|
||||
"type": "bool",
|
||||
"help": "Displays a quick search form in the sidebar. <br />Default Value: No"
|
||||
},
|
||||
|
||||
"Postprofile Side": {
|
||||
"name": "postprofile_side",
|
||||
"help": "Sets which side avatars / post counts display on when reading a topic.<br />Default setting: Right.",
|
||||
"type": "list",
|
||||
"values": [
|
||||
"Left",
|
||||
"Right"
|
||||
]
|
||||
},
|
||||
|
||||
"Enable Collapsible Panels?": {
|
||||
"name": "collapsible_panels",
|
||||
"type": "bool",
|
||||
"help": "Allows end-users to collapse/hide categories and sidebar blocks.<br />Default Value: No"
|
||||
},
|
||||
|
||||
|
||||
"Enable Scroll to Top button?": {
|
||||
"name": "scroll_to_top",
|
||||
"type": "bool",
|
||||
"help": "Adds a scroll to top shortcut on long pages.<br />Default Value: No"
|
||||
},
|
||||
|
||||
|
||||
"Hide Social Bar (footer)?": {
|
||||
"name": "hide_social_bar",
|
||||
"type": "bool",
|
||||
"help": "Hides the social bar above the footer.<br />Default Value: No"
|
||||
},
|
||||
|
||||
"Force Rounded 'Last Post' Avatars?": {
|
||||
"name": "rounded_avatars",
|
||||
"type": "bool",
|
||||
"help": "Forces the avatars within the 'last post' column to be round. <br />Requires <a href=\"https://www.phpbb.com/customise/db/extension/avatar_in_last_post/\" style=\"text-decoration: underline;\">Avatar in last post</a> extension.<br />Default Value: No"
|
||||
},
|
||||
|
||||
"Hide PlanetStyles link in footer?": {
|
||||
"name": "credit_line",
|
||||
"type": "bool",
|
||||
"help": "We'd rather you didn't, but it's OK if you really want to :)"
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user