Ajout du FR

Ajout du FR + correction du "functions.php"
This commit is contained in:
Gauvain Boiché
2020-03-30 14:52:34 +02:00
commit 5e4c5f9418
4541 changed files with 608941 additions and 0 deletions

View 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')
),
),
);
}
}

View 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));
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -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 &rarr; General &raquo; Purge Cache &rarr; 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') }}" />&nbsp;
</p>
{{ S_FORM_TOKEN }}
</fieldset>
</form>
</div>
{% include 'overall_footer.html' %}

View File

@@ -0,0 +1,7 @@
<!-- INCLUDEJS jscolor.js -->
<script>
$( document ).ready(function() {
$("input#colour_picker").addClass("jscolor {width:243, height:150}");
});
</script>

View File

@@ -0,0 +1,2 @@
<!-- INCLUDECSS flightdeck.css -->

View 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;
}

File diff suppressed because it is too large Load Diff

View 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"
}
}
}

View 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 }

View 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);
}
}
}
}

View File

@@ -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 &amp; 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 &lt;head&gt; 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.',
));

View 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',
));

View File

@@ -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);
}
}
}
}

View 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 :)"
}
}