<?php
/*-------------------------------------------------------+
| PHPFusion Content Management System
| Copyright (C) PHP Fusion Inc
| https://phpfusion.com/
+--------------------------------------------------------+
| Filename: Atom.php
| Author: Frederick MC Chan (Chan)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
namespace PHPFusion\Atom;
require_once LOCALE.LOCALESET."admin/theme.php";
class Atom {
public $target_folder = '';
public $theme_name = '';
public $compress = TRUE;
public $debug = FALSE;
public $compiler = TRUE; // turn off compiler here.
private $font_decoration_options = [];
private $fills = [];
/**
* For internals CSS compilers - These are actual css properties. Do not translate.
*/
private $text_weight = ['400', '600', '400', '400', '600', '600', '400', '600'];
private $text_decoration = [
'none',
'none',
'none',
'underline',
'underline',
'none',
'underline',
'underline'
];
private $text_style = ['normal', 'normal', 'italic', 'normal', 'normal', 'italic', 'italic', 'italic'];
/**
* Initialize Data
*
* @var array
*/
private $data = [
'theme_id' => 0,
'theme_title' => '',
'sans_serif_fonts' => 'Helvetica Neue, Helvetica, Arial, sans-serif',
'serif_fonts' => 'Georgia, Times New Roman, Times, serif',
'monospace_fonts' => 'Menlo, Monaco, Consolas, Courier New, monospace',
'base_font' => 0,
'base_font_size' => 14,
'base_font_height' => 1.428571429,
'base_font_color' => '#333333',
'base_font_size_l' => 18,
'base_font_size_s' => 11,
//h1
'font_size_h1' => 36,
'font_height_h1' => 1.1,
'font_color_h1' => '#333333',
'font_decoration_h1' => 0,
//h2
'font_size_h2' => 30,
'font_height_h2' => 1.1,
'font_color_h2' => '#333333',
'font_decoration_h2' => 0,
//h3
'font_size_h3' => 24,
'font_height_h3' => 1.1,
'font_color_h3' => '#333333',
'font_decoration_h3' => 0,
// h4
'font_size_h4' => 18,
'font_height_h4' => 1.1,
'font_color_h4' => '#333333',
'font_decoration_h4' => 0,
// h5
'font_size_h5' => 14,
'font_height_h5' => 1.1,
'font_color_h5' => '#333333',
'font_decoration_h5' => 0,
// h6
'font_size_h6' => 12,
'font_height_h6' => 1.1,
'font_color_h6' => '#333333',
'font_decoration_h6' => 0,
// link
'link_color' => '#428bca',
'link_hover_color' => '#428bca',
'link_decoration' => 0,
'link_hover_decoration' => 0,
// code
'code_color' => '#c7254e',
'code_bgcolor' => '#f9f2f4', //f9f2f4
// quote
'quote_size' => 14,
'quote_height' => 1.1,
'quote_color' => '#000000',
'quote_decoration' => 5,
// components
'container_sm' => 720,
'container_md' => 940,
'container_lg' => 1140,
'btn_fill' => 0,
'btn_border' => 1, //
'btn_radius' => 4, //
// colors
'primary_color' => '#428bca',
'warning_color' => '#f0ad4e',
'success_color' => '#5cb85c',
'danger_color' => '#d9534f',
'info_color' => '#5bc0de',
// btn-primary
'btn_primary' => '#428bca',
'btn_primary_color' => '#ffffff',
'btn_primary_hover' => '#3276b1',
'btn_primary_color_hover' => '#ffffff',
'btn_primary_active' => '#3276b1',
'btn_primary_color_active' => '#ffffff',
// btn-info
'btn_info' => '#5bc0de',
'btn_info_color' => '#ffffff',
'btn_info_hover' => '#39b3d7',
'btn_info_color_hover' => '#ffffff',
'btn_info_active' => '#39b3d7',
'btn_info_color_active' => '#ffffff',
// btn-success
'btn_success' => '#5cb85c',
'btn_success_color' => '#ffffff',
'btn_success_hover' => '#47a447',
'btn_success_color_hover' => '#ffffff',
'btn_success_active' => '#47a447',
'btn_success_color_active' => '#ffffff',
// btn-warning
'btn_warning' => '#f0ad4e',
'btn_warning_color' => '#ffffff',
'btn_warning_hover' => '#ed9c28',
'btn_warning_color_hover' => '#ffffff',
'btn_warning_active' => '#ed9c28',
'btn_warning_color_active' => '#ffffff',
// btn-danger
'btn_danger' => '#d9534f',
'btn_danger_color' => '#ffffff',
'btn_danger_hover' => '#d2322d',
'btn_danger_color_hover' => '#ffffff',
'btn_danger_active' => '#d2322d',
'btn_danger_color_active' => '#ffffff',
// global navbars
'navbar_height' => 50,
'navbar_border' => 1,
'navbar_radius' => 4,
// navbar 1
'navbar_fill' => 0,
'navbar_bg' => '#f8f8f8',
'navbar_bg_hover' => '#f8f8f8', // need this
'navbar_bg_active' => '#e7e7e7', // need this
'navbar_link_border' => 0,
'navbar_link_radius' => 0,
'navbar_link_border_color' => '#f8f8f8',
'navbar_brand_color' => '#777',
'navbar_font_color' => '#777',
'navbar_brand_decoration' => 0,
'navbar_font_decoration' => 0,
'navbar_link_color' => '#777',
'navbar_link_decoration' => 0,
'navbar_link_color_hover' => '#333',
'navbar_link_decoration_hover' => 0,
'navbar_link_color_active' => '#555',
'navbar_link_decoration_active' => 0,
];
private $less_var = [];
/**
* Theme Overview Page
*/
public function displayThemeOverview() {
$locale = fusion_get_locale();
$data = [
"theme_name" => $this->theme_name,
"theme_screenshot" => "",
"theme_author" => "",
"theme_web" => "",
"theme_license" => 'AGPL3',
"theme_version" => "",
"theme_description" => "",
];
$theme_dbfile = '/theme_db.php';
$result = dbquery("SELECT * FROM ".DB_THEME." WHERE theme_name=:theme_name ORDER BY theme_datestamp DESC", [
':theme_name' => $this->theme_name,
]);
if (file_exists(THEMES.$this->theme_name.$theme_dbfile)) { // new 9.00
include THEMES.$this->theme_name.$theme_dbfile;
$data = [
'theme_name' => !empty($theme_title) ? $theme_title : $data['theme_name'],
'theme_screenshot' => isset($theme_screenshot) && file_exists(THEMES.$this->theme_name."/".$theme_screenshot) ? THEMES.$this->theme_name."/".$theme_screenshot : IMAGES.'imagenotfound.jpg',
'theme_author' => !empty($theme_author) ? $theme_author : $data['theme_author'],
'theme_web' => !empty($theme_web) ? $theme_web : $data['theme_web'],
'theme_license' => !empty($theme_license) ? $theme_license : $data['theme_license'],
'theme_version' => !empty($theme_version) ? $theme_version : $data['theme_version'],
'theme_description' => !empty($theme_description) ? $theme_description : $data['theme_description'],
'theme_widgets' => file_exists(THEMES.$this->theme_name.'/widget.php')
];
}
echo "<div class='list-group-item p-20'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-6'>\n";
echo "<span><strong>".$locale['theme_1001']."</strong> ".$data['theme_name']."</span><br/>";
if ($data['theme_description']) {
echo "<span><strong>".$locale['theme_1025']."</strong> ".$data['theme_description']."</span><br/>";
}
if (isset($data['theme_widgets'])) {
echo "<span><strong>".$locale['theme_1027']."</strong> ".($data['theme_widgets'] ? $locale['yes'] : $locale['no'])."</span><br/>";
}
echo "</div>\n<div class='col-xs-12 col-sm-6'>\n";
if ($data['theme_author']) {
echo "<span><strong>".$locale['theme_1026']."</strong> ".$data['theme_author']."</span><br/>";
}
if ($data['theme_web']) {
echo "<span><strong>".$locale['theme_1015']."</strong>: <a href='".$data['theme_web']."'>Link</a></span><br/>";
}
if ($data['theme_version']) {
echo "<span><strong>".$locale['theme_1014']."</strong>: ".$data['theme_version']."</span><br/>";
}
if ($data['theme_license']) {
echo "<span><strong>".$locale['theme_1013']."</strong> ".$data['theme_license']."</span><br/>";
}
echo "<span><strong>".$locale['theme_1028']."</strong> ".dbrows($result)."</span><br/>";
echo "</div>\n";
echo "</div>\n";
echo "</div>\n";
/*if (dbrows($result) > 0) {
echo "<div class='m-b-20 p-b-20 m-t-20'>\n";
echo openform('preset-form', 'post', FUSION_REQUEST, ['notice' => 0, 'max_tokens' => 1]);
while ($preset = dbarray($result)) {
// @to fix: set as active, edit, delete options.
echo "<div class='list-group-item m-t-10 display-inline-block clearfix text-center'>\n".thumbnail($data['theme_screenshot'], '150px')."
<div class='display-block strong m-t-10 m-b-20'>".trimlink($preset['theme_title'], 30)."</div>";
echo "<div class='btn-group m-t-10 m-b-10'>\n";
if ($preset['theme_active'] == 1) {
echo form_button('active', $locale['theme_1003'], 'active', [
'class' => 'btn-sm btn-default active',
'deactivate' => 1
]);
} else {
echo form_button('load_preset', $locale['theme_1004'], $preset['theme_id'], [
'class' => 'btn-sm btn-default',
'icon' => 'fa fa-upload'
]);
}
// dropdown
echo "<a id='dd".$preset['theme_id']."' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false' class='btn btn-default btn-sm dropdown-toggle'><i class='fa fa-cog fa-fw'></i><span class='caret'></span></a>\n";
echo "<ul class='dropdown-menu' aria-labelledby='dd".$preset['theme_id']."'>\n";
echo "<li><a href='".clean_request("section=css&e_action=edit&preset=".$preset['theme_id'], [
"aid",
"action",
"theme"
], TRUE)."'>".$locale['edit']."</a></li>\n";
echo "<li><a href='".clean_request("delete_preset=".$preset['theme_id'], [
"aid",
"action",
"theme"
], TRUE)."'>".$locale['delete']."</a></li>\n";
echo "</ul>\n";
echo form_hidden('theme', '', $preset['theme_name']);
echo "</div>\n";
echo "</div>\n";
}
echo closeform();
echo "</div>\n";
} else {
echo "<div class='m-t-20 well text-center'>".$locale['theme_1030']."</div>\n";
}*/
}
/**
* Theme Widget Page
*/
public function displayThemeWidgets() {
$locale = fusion_get_locale();
if (Admin::themeWidgetExists($this->theme_name)) {
require_once THEMES.$this->theme_name."/theme_db.php";
/**
* Infuse Widget Action
*/
if (isset($_POST['infuse_widget']) && fusion_get_settings('theme') == $_POST['infuse_widget'] && !dbcount("(settings_name)",
DB_SETTINGS_THEME,
"settings_theme='".$this->theme_name."'")
) {
if (isset($theme_newtable) && is_array($theme_newtable)) {
foreach ($theme_newtable as $item) {
$result = dbquery("CREATE TABLE ".$item);
if (!$result) {
fusion_stop();
}
}
}
// insertion ok
if (isset($theme_insertdbrow) && is_array($theme_insertdbrow)) {
foreach ($theme_insertdbrow as $item) {
$result = dbquery("INSERT INTO ".$item);
if (!$result) {
fusion_stop();
}
}
}
$widgetData = [
"settings_theme" => $this->theme_name,
"settings_name" => $this->theme_name,
"settings_value" => 1
];
dbquery_insert(DB_SETTINGS_THEME, $widgetData, "save");
addnotice('success', sprintf($locale['theme_1019'], ucwords($this->theme_name)));
redirect(FUSION_REQUEST);
}
/**
* Defuse Widget Action
*/
if (isset($_POST['defuse_widget']) && fusion_get_settings('theme') == $_POST['defuse_widget'] && dbcount("(settings_name)",
DB_SETTINGS_THEME,
"settings_theme='".$this->theme_name."'")
) {
if (isset($theme_droptable) && is_array($theme_droptable)) {
foreach ($theme_droptable as $item) {
$result = dbquery("DROP TABLE ".$item);
if (!$result) {
fusion_stop();
}
}
}
// row deletion ok
if (isset($theme_deldbrow) && is_array($theme_deldbrow)) {
foreach ($theme_deldbrow as $item) {
$result = dbquery("DELETE FROM ".$item);
if (!$result) {
fusion_stop();
}
}
}
addnotice('success', sprintf($locale['theme_1019b'], ucwords($this->theme_name)));
redirect(FUSION_REQUEST);
}
if ((isset($theme_newtable) || isset($theme_insertdbrow)) && !dbcount("(settings_name)", DB_SETTINGS_THEME, "settings_theme='".$this->theme_name."'")) {
echo openform("widget_infuse", "post", FUSION_REQUEST);
echo "<div>".$locale['theme_1032']."</div>";
echo form_button("infuse_widget", $locale['theme_1016'], $this->theme_name, ["class" => "btn-primary m-t-10"]);
echo closeform();
} else {
$html = openform("widget_defuse", "post", FUSION_REQUEST, ["class" => "text-right"]);
$html .= form_button("defuse_widget", $locale['theme_1017'], $this->theme_name, ["class" => "btn-danger"]);
$html .= closeform();
$html .= "<hr/>\n";
add_to_jquery("
$('#defuse_widget').bind('click', function(e) {
var val = confirm('".$locale['theme_1033']."');
if (val == false) {
e.preventDefault();
}
});
");
echo $html;
echo "<!---start widget form--->\n";
include THEMES.$this->theme_name."/widget.php";
echo "<!---end widget form--->\n";
}
} else {
echo "<div class='m-t-20 well text-center'>".$locale['theme_1031']."</div>\n";
}
}
/**
* Theme Styler Page
* Edit done, save done. Now load.
*/
public function themeEditor() {
$locale = fusion_get_locale();
if (isset($_GET['e_action']) && ($_GET['e_action'] == "edit") && isset($_GET['preset']) && isnum($_GET['preset'])) {
$result = dbquery("SELECT * FROM ".DB_THEME." WHERE theme_name='".$this->theme_name."' AND theme_id='".intval($_GET['preset'])."'");
if (dbrows($result) > 0) {
$this->data = dbarray($result);
if ($this->data['theme_config']) {
$this->data += unserialize(stripslashes($this->data['theme_config']));
}
}
}
self::saveTheme();
$this->font_decoration_options = [
$locale['theme_5000'],
$locale['theme_5001'],
$locale['theme_5002'],
$locale['theme_5003'],
$locale['theme_5004'],
$locale['theme_5005'],
$locale['theme_5006'],
$locale['theme_5007'],
];
$this->fills = [
$locale['theme_5008'],
$locale['theme_5009'],
$locale['theme_5010'],
$locale['theme_5011'],
$locale['theme_5012'],
];
$tab_title['title'][] = $locale['theme_2001'];
$tab_title['id'][] = 'font';
$tab_title['icon'][] = 'fa fa-text-width m-r-10';
$tab_title['title'][] = $locale['theme_2002'];
$tab_title['id'][] = 'grid';
$tab_title['icon'][] = 'fa fa-magic m-r-10';
$tab_title['title'][] = $locale['theme_2003'];
$tab_title['id'][] = 'nav';
$tab_title['icon'][] = 'fa fa-navicon m-r-10';
$tab_active = tab_active($tab_title, 0);
if ($this->debug) {
print_p($_POST);
}
// how come my multiple preset missing now?
echo openform('theme_edit', 'post', FUSION_REQUEST, ["class" => "m-t-20"]);
echo "<div class='list-group-item m-b-20 clearfix'>\n";
echo "<div class='pull-right m-l-10'>\n";
echo form_button('save_theme', $locale['theme_5013'], 'save_theme', ['class' => 'btn-primary m-r-10']);
echo form_button('close_theme', $locale['close'], 'close_theme', ['class' => 'btn-default']);
echo "</div>\n";
echo "<div class='overflow-hide'>\n";
echo form_hidden('theme_id', '', $this->data['theme_id']);
echo form_hidden("theme_datestamp", '', time());
echo form_text('theme_title', $locale['theme_2007'], $this->data['theme_title'], [
'inline' => 1,
'required' => TRUE
]);
echo form_hidden('theme_name', $locale['theme_2008'], $this->theme_name, [
'inline' => 1,
'deactivate' => 1
]);
echo "</div>\n";
echo "</div>\n";
echo opentab($tab_title, $tab_active, 'atom');
echo opentabbody($tab_title['title'][0], $tab_title['id'][0], $tab_active);
echo "<div class='m-t-20'>\n";
$this->fontAdmin();
echo "</div>\n";
echo closetabbody();
echo opentabbody($tab_title['title'][1], $tab_title['id'][1], $tab_active);
echo "<div class='m-t-20'>\n";
$this->layoutAdmin();
echo "</div>\n";
echo closetabbody();
echo opentabbody($tab_title['title'][2], $tab_title['id'][2], $tab_active);
echo "<div class='m-t-20'>\n";
$this->navAdmin();
echo "</div>\n";
echo closetabbody();
echo closetab();
echo closeform();
}
/**
* Save theme
*/
public function saveTheme() {
$locale = fusion_get_locale();
$userdata = fusion_get_userdata();
if (isset($_POST['save_theme'])) {
/*$modal = openmodal('dbi', sprintf($locale['theme_2005'], ucwords($this->theme_name)), [
'class' => 'zindex-boost modal-center',
'button_id' => 'save_theme',
'static' => 1
]);
$modal .= "<div class='overflow-hide'>".$locale['theme_2006']."</div>\n";
$modal .= closemodal();
add_to_footer($modal);*/
$fieldArrays = $this->data;
foreach ($fieldArrays as $fieldNames => $fieldDefaults) {
$this->data[$fieldNames] = isset($_POST[$fieldNames]) ? form_sanitizer($_POST[$fieldNames], $fieldDefaults, $fieldNames) : "";
}
$old_file = !empty($this->data['theme_file']) ? $this->data['theme_file'] : '';
if (isset($this->data['theme_config'])) {
unset($this->data['theme_config']);
} // will need to rebuild. unset it.
if (isset($this->data['theme_file'])) {
unset($this->data['theme_file']);
} // important to unset.
// rebuild entire structure
$data = [
"theme_name" => $this->theme_name,
"theme_title" => form_sanitizer($_POST['theme_title'], '', 'theme_title'),
"theme_id" => form_sanitizer($_POST['theme_id'], '0', 'theme_id'),
"theme_user" => $userdata['user_id'],
"theme_datestamp" => time()
];
if (fusion_safe()) {
$data['theme_file'] = $this->buildCss();
if (dbcount("(theme_id)", DB_THEME, "theme_name='".$data['theme_name']."' AND theme_id='".intval($data['theme_id'])."'")) {
if (!empty($data['theme_file'])) {
$data['theme_active'] = 1;
$data['theme_config'] = addslashes(serialize($this->data));
if (!$this->debug && $data['theme_file']) {
if (file_exists(THEMES.$old_file) && !is_dir(THEMES.$old_file)) {
unlink(THEMES.$old_file);
}
dbquery_insert(DB_THEME, $data, 'update');
if (fusion_safe()) {
addnotice('success', $locale['theme_success_003']);
redirect(clean_request("", ["aid", "action", "theme"], TRUE));
}
} else {
// debug messages
print_p('Update Mode');
print_p($data);
}
}
} else {
$rows = dbcount("(theme_id)", DB_THEME, "theme_name='".$data['theme_name']."'");
if (!$this->debug && !empty($data['theme_file'])) {
$data['theme_active'] = $rows < 1 ? 1 : 0;
$data['theme_config'] = addslashes(serialize($this->data));
dbquery_insert(DB_THEME, $data, 'save');
if (fusion_safe()) {
addnotice('success', $locale['theme_success_004']);
redirect(clean_request("", ["aid", "action", "theme"], TRUE));
}
} else {
// debug messages
$data['theme_active'] = $rows < 1 ? 1 : 0;
$data['theme_config'] = addslashes(serialize($this->data));
print_p($data);
}
}
}
}
}
/**
* Build CSS
*
* @return string|null
*/
protected function buildCss() {
$this->debug = FALSE;
$locale = fusion_get_locale();
$inputFile = CLASSES."PHPFusion/Atom/less/atom.less";
$outputFolder = THEMES.$this->target_folder."/";
$outputFile = THEMES.$this->target_folder."/fusion_".$this->target_folder."_".time().".css";
$returnFile = str_replace(THEMES, '', $outputFile);
$options = ['output' => $outputFile, 'compress' => $this->compress,];
$this->setLessVariables();
if (!empty($this->less_var) && fusion_safe() && $this->compiler) {
if ($this->debug) {
print_p("current less var");
print_p($this->less_var);
print_p($inputFile);
print_p($outputFile);
}
try {
require_once "lessc.inc.php";
$parser = new \Less_Parser($options);
//$parser->SetImportDirs($directories);
$parser->parseFile($inputFile, $outputFolder);
$parser->ModifyVars($this->less_var);
$css = $parser->getCss();
if (!$this->debug) {
$css_file = fopen($outputFile, "w");
if (fwrite($css_file, $css)) {
fclose($css_file);
}
if ($css_file) {
return (string)$returnFile;
}
} else {
print_p($outputFile);
print_p($css); // this is your css
}
} catch (\Exception $e) {
$error_message = $e->getMessage();
fusion_stop();
addnotice('danger', $error_message);
}
} else {
fusion_stop();
if (!$this->compiler) {
addnotice('danger', $locale['theme_error_008']);
} else {
addnotice('danger', $locale['theme_error_007']);
}
}
return NULL;
}
/**
* Set LESS vars
*/
private function setLessVariables() {
$this->less_var = $this->data;
// css which requires atom's custom parse rules.
// base foot parsing.
$this->less_var['sans_serif_fonts'] = $this->parseFonts($this->data['sans_serif_fonts']);
$this->less_var['serif_fonts'] = $this->parseFonts($this->data['serif_fonts']);
$this->less_var['monospace_fonts'] = $this->parseFonts($this->data['monospace_fonts']);
$this->less_var['base_font'] = $this->parseFontSet($this->data['base_font']);
$this->less_var['base_font_size'] = $this->parseSize($this->data['base_font_size']);
$this->less_var['base_font_size_l'] = $this->parseSize($this->data['base_font_size_l']);
$this->less_var['base_font_size_s'] = $this->parseSize($this->data['base_font_size_s']);
//h1
$this->less_var['font_size_h1'] = $this->parseSize($this->data['font_size_h1']);
$this->less_var['font_weight_h1'] = $this->parseFontWeight($this->data['font_decoration_h1']);
$this->less_var['font_style_h1'] = $this->parseFontStyle($this->data['font_decoration_h1']);
$this->less_var['font_decoration_h1'] = $this->parseFontDecoration($this->data['font_decoration_h1']);
//h2
$this->less_var['font_size_h2'] = $this->parseSize($this->data['font_size_h2']);
$this->less_var['font_weight_h2'] = $this->parseFontWeight($this->data['font_decoration_h2']);
$this->less_var['font_style_h2'] = $this->parseFontStyle($this->data['font_decoration_h2']);
$this->less_var['font_decoration_h2'] = $this->parseFontDecoration($this->data['font_decoration_h2']);
//h3
$this->less_var['font_size_h3'] = $this->parseSize($this->data['font_size_h3']);
$this->less_var['font_weight_h3'] = $this->parseFontWeight($this->data['font_decoration_h3']);
$this->less_var['font_style_h3'] = $this->parseFontStyle($this->data['font_decoration_h3']);
$this->less_var['font_decoration_h3'] = $this->parseFontDecoration($this->data['font_decoration_h3']);
//h4
$this->less_var['font_size_h4'] = $this->parseSize($this->data['font_size_h4']);
$this->less_var['font_weight_h4'] = $this->parseFontWeight($this->data['font_decoration_h4']);
$this->less_var['font_style_h4'] = $this->parseFontStyle($this->data['font_decoration_h4']);
$this->less_var['font_decoration_h4'] = $this->parseFontDecoration($this->data['font_decoration_h4']);
//h5
$this->less_var['font_size_h5'] = $this->parseSize($this->data['font_size_h5']);
$this->less_var['font_weight_h5'] = $this->parseFontWeight($this->data['font_decoration_h5']);
$this->less_var['font_style_h5'] = $this->parseFontStyle($this->data['font_decoration_h5']);
$this->less_var['font_decoration_h5'] = $this->parseFontDecoration($this->data['font_decoration_h5']);
//h6
$this->less_var['font_size_h6'] = $this->parseSize($this->data['font_size_h6']);
$this->less_var['font_weight_h6'] = $this->parseFontWeight($this->data['font_decoration_h6']);
$this->less_var['font_style_h6'] = $this->parseFontStyle($this->data['font_decoration_h6']);
$this->less_var['font_decoration_h6'] = $this->parseFontDecoration($this->data['font_decoration_h6']);
// link
$this->less_var['link_weight'] = $this->parseFontWeight($this->data['link_decoration']);
$this->less_var['link_style'] = $this->parseFontStyle($this->data['link_decoration']);
$this->less_var['link_decoration'] = $this->parseFontDecoration($this->data['link_decoration']);
$this->less_var['link_hover_weight'] = $this->parseFontWeight($this->data['link_decoration']);
$this->less_var['link_hover_style'] = $this->parseFontStyle($this->data['link_decoration']);
$this->less_var['link_hover_decoration'] = $this->parseFontDecoration($this->data['link_decoration']);
// code follow back $data.
//quote decorations
$this->less_var['quote_weight'] = $this->parseFontWeight($this->data['quote_decoration']);
$this->less_var['quote_style'] = $this->parseFontStyle($this->data['quote_decoration']);
$this->less_var['quote_decoration'] = $this->parseFontDecoration($this->data['quote_decoration']);
// max screen
$this->less_var['container_sm'] = $this->parseSize($this->data['container_sm']);
$this->less_var['container_md'] = $this->parseSize($this->data['container_md']);
$this->less_var['container_lg'] = $this->parseSize($this->data['container_lg']);
$this->less_var['btn_border'] = $this->parseSize($this->data['btn_border']);
$this->less_var['btn_radius'] = $this->parseSize($this->data['btn_radius']);
// global navbars
$this->less_var['navbar_height'] = $this->parseSize($this->data['navbar_height']);
$this->less_var['navbar_border'] = $this->parseSize($this->data['navbar_border']);
$this->less_var['navbar_radius'] = $this->parseSize($this->data['navbar_radius']);
$this->less_var['navbar_link_border'] = $this->parseSize($this->data['navbar_link_border']);
$this->less_var['navbar_link_radius'] = $this->parseSize($this->data['navbar_link_radius']);
$this->less_var['navbar_brand_weight'] = $this->parseFontWeight($this->data['navbar_brand_decoration']);
$this->less_var['navbar_brand_style'] = $this->parseFontStyle($this->data['navbar_brand_decoration']);
$this->less_var['navbar_brand_decoration'] = $this->parseFontDecoration($this->data['navbar_brand_decoration']);
$this->less_var['navbar_font_weight'] = $this->parseFontWeight($this->data['navbar_font_decoration']);
$this->less_var['navbar_font_style'] = $this->parseFontStyle($this->data['navbar_font_decoration']);
$this->less_var['navbar_font_decoration'] = $this->parseFontDecoration($this->data['navbar_font_decoration']);
$this->less_var['navbar_link_weight'] = $this->parseFontWeight($this->data['navbar_link_decoration']);
$this->less_var['navbar_link_style'] = $this->parseFontStyle($this->data['navbar_link_decoration']);
$this->less_var['navbar_link_decoration'] = $this->parseFontDecoration($this->data['navbar_link_decoration']);
$this->less_var['navbar_link_weight_hover'] = $this->parseFontWeight($this->data['navbar_link_decoration_hover']);
$this->less_var['navbar_link_style_hover'] = $this->parseFontStyle($this->data['navbar_link_decoration_hover']);
$this->less_var['navbar_link_decoration_hover'] = $this->parseFontDecoration($this->data['navbar_link_decoration_hover']);
$this->less_var['navbar_link_weight_active'] = $this->parseFontWeight($this->data['navbar_link_decoration_active']);
$this->less_var['navbar_link_style_active'] = $this->parseFontStyle($this->data['navbar_link_decoration_active']);
$this->less_var['navbar_link_decoration_active'] = $this->parseFontDecoration($this->data['navbar_link_decoration_active']);
}
/**
* Parse fonts
*
* @param string $font
*
* @return string|null
*/
static function parseFonts($font) {
$_parsedFonts = [];
if ($font) {
$font = explode(',', $font);
if (count($font)) {
foreach ($font as $font_name) {
$_parsedFonts[] = (preg_match('/\s/', $font_name)) ? '"'.$font_name.'"' : $font_name;
}
return implode(', ', $_parsedFonts);
} else {
return NULL;
}
} else {
return NULL;
}
}
/**
* Parse font set
*
* @param string $font
*
* @return string
*/
static function parseFontSet($font) {
$fonts_family_opts = [
'0' => '@font-family-sans-serif',
'1' => '@font-family-monospace',
'2' => '@font-family-serif'
];
return $fonts_family_opts[$font];
}
/**
* Parse font size
*
* @param string $font
*
* @return int|string
*/
static function parseSize($font) {
return $font > 0 ? $font.'px' : 0;
}
/**
* Parse font weight
*
* @param string $font
*
* @return string
*/
private function parseFontWeight($font) {
if (!$font) {
return $this->text_weight[0];
} else {
return $this->text_weight[$font];
}
}
/**
* Parse font style
*
* @param string $font
*
* @return string
*/
private function parseFontStyle($font) {
if (!$font) {
return $this->text_style[0];
} else {
return $this->text_style[$font];
}
}
/**
* Parse text decoration
*
* @param string $font
*
* @return string
*/
private function parseFontDecoration($font) {
if (!$font) {
return $this->text_decoration[0];
} else {
return $this->text_decoration[$font];
}
}
/**
* Fonts admin
*/
private function fontAdmin() {
$locale = fusion_get_locale();
$base_font = array_values(array_flip($this->baseFonts()));
$web_font = array_values(array_flip($this->googleFonts()));
$font_list = array_merge($base_font, $web_font);
$color_options = ["placeholder" => $locale['theme_2009'], 'width' => '100%', "format" => "hex"];
$font_options = [
'width' => '100%',
'placeholder' => $locale['theme_2010'],
'tags' => TRUE,
'multiple' => TRUE,
'max_select' => 6,
'inline' => TRUE,
'inner_width' => '100%'
];
$font_type_options = ['placeholder' => $locale['theme_2011'], 'width' => '280px', 'inline' => 1];
$font_size_options = [
'placeholder' => '(px)',
'width' => '100%',
'number' => 1,
'class' => 'pull-left display-inline m-r-10'
];
$fonts_family_opts = [
'0' => $locale['theme_2012'],
'1' => $locale['theme_2013'],
'2' => $locale['theme_2014'],
];
echo form_hidden('theme', '', $this->theme_name);
openside('');
$font_options['options'] = $font_list;
$font_type_options['options'] = $fonts_family_opts;
echo form_select("sans_serif_fonts", $locale['theme_2015'], $this->data['sans_serif_fonts'], $font_options);
echo form_select("serif_fonts", $locale['theme_2016'], $this->data['serif_fonts'], $font_options);
echo form_select("monospace_fonts", $locale['theme_2017'], $this->data['monospace_fonts'], $font_options);
echo form_select("base_font", $locale['theme_2001'], $this->data['base_font'], $font_type_options);
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2018'], 'base-font-size');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("base_font_size", $locale['theme_2019'], $this->data['base_font_size'], $font_size_options);
echo form_text("base_font_height", $locale['theme_2019'], $this->data['base_font_height'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("base_font_size_l", $locale['theme_2021'], $this->data['base_font_size_l'], $font_size_options);
echo form_colorpicker("base_font_color", $locale['theme_2022'], $this->data['base_font_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("base_font_size_s", $locale['theme_2023'], $this->data['base_font_size_s'], $font_size_options);
echo "</div>\n</div>\n";
closeside();
// h1
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 1', 'h1');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h1", $locale['theme_2019'], $this->data['font_size_h1'], $font_size_options);
echo form_text("font_height_h1", $locale['theme_2020'], $this->data['font_height_h1'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h1", $locale['theme_2022'], $this->data['font_color_h1'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
$color_options['options'] = $this->font_decoration_options;
echo form_select("font_decoration_h1", $locale['theme_2025'], $this->data['font_decoration_h1'], $color_options);
echo "</div>\n</div>\n";
closeside();
// h2
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 2', 'h2');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h2", $locale['theme_2019'], $this->data['font_size_h2'], $font_size_options);
echo form_text("font_height_h2", $locale['theme_2020'], $this->data['font_height_h2'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h2", $locale['theme_2022'], $this->data['font_color_h2'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("font_decoration_h2", $locale['theme_2025'], $this->data['font_decoration_h2'], $color_options);
echo "</div>\n</div>\n";
closeside();
// h3
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 3', 'h3');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h3", $locale['theme_2019'], $this->data['font_size_h3'], $font_size_options);
echo form_text("font_height_h3", $locale['theme_2020'], $this->data['font_height_h3'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h3", $locale['theme_2022'], $this->data['font_color_h3'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("font_decoration_h3", $locale['theme_2025'], $this->data['font_decoration_h3'], $color_options);
echo "</div>\n</div>\n";
closeside();
// h4
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 4', 'h4');
echo "</div>\n<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h4", $locale['theme_2019'], $this->data['font_size_h4'], $font_size_options);
echo form_text("font_height_h4", $locale['theme_2020'], $this->data['font_height_h4'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h4", $locale['theme_2022'], $this->data['font_color_h4'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_select("font_decoration_h4", $locale['theme_2025'], $this->data['font_decoration_h4'], $color_options);
echo "</div>\n</div>\n";
closeside();
// h5
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 5', 'h5');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h5", $locale['theme_2019'], $this->data['font_size_h5'], $font_size_options);
echo form_text("font_height_h5", $locale['theme_2020'], $this->data['font_height_h5'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h5", $locale['theme_2022'], $this->data['font_color_h5'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("font_decoration_h5", $locale['theme_2025'], $this->data['font_decoration_h5'], $color_options);
echo "</div>\n</div>\n";
closeside();
// h6
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2024'].' 6', 'h6');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("font_size_h6", $locale['theme_2019'], $this->data['font_size_h6'], $font_size_options);
echo form_text("font_height_h6", $locale['theme_2020'], $this->data['font_height_h6'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("font_color_h6", $locale['theme_2022'], $this->data['font_color_h6'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("font_decoration_h6", $locale['theme_2025'], $this->data['font_decoration_h6'], $color_options);
echo "</div>\n</div>\n";
closeside();
// link
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2026'], 'link');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("link_color", $locale['theme_2027'], $this->data['link_color'], $color_options);
echo form_colorpicker("link_hover_color", $locale['theme_2028'], $this->data['link_hover_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("link_decoration", $locale['theme_2025'], $this->data['link_decoration'], $color_options);
echo form_select("link_hover_decoration", $locale['theme_2029'], $this->data['link_hover_decoration'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo "</div>\n</div>\n";
closeside();
// code
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2030'], 'link');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("code_color", $locale['theme_2027'], $this->data['code_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("code_bgcolor", $locale['theme_2031'], $this->data['code_bgcolor'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo "</div>\n</div>\n";
closeside();
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_2032'], 'blqte');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("quote_size", $locale['theme_2019'], $this->data['quote_size'], $font_size_options);
echo form_text("quote_height", $locale['theme_2020'], $this->data['quote_height'], $font_size_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("quote_color", $locale['theme_2022'], $this->data['quote_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("quote_decoration", $locale['theme_2029'], $this->data['quote_decoration'], $color_options);
echo "</div>\n</div>\n";
closeside();
}
/**
* Return base fonts
*
* @return string[]
*/
static function baseFonts() {
// OS Font Defaults
return [
"Arial" => "Arial",
"Avant Garde" => "Avant+Garde",
"Cambria" => "Cambria",
"Copse" => "Copse",
"Garamond" => "Garamond",
"Georgia" => "Georgia",
"Heofler_Text" => "Hoefler+Text",
"Helvetica" => "Helvetica",
"Helvetica Neue" => "Helvetica+Neue",
"Tahoma" => "Tahoma",
"Times New Roman" => "Times+New+Roman",
"Times" => "Times",
"Lucida Grande" => "Lucida+Grande",
"Lucida Sans Unicode" => "Lucida+Sans+Unicode",
"Verdana" => "Verdana",
"sans-serif" => "sans-serif",
"serif" => "serif"
];
//print_p($os_faces);
}
/**
* Return Google Fonts
*
* @return string[]
*/
static function googleFonts() {
//api at google : <link href=http://fonts.googleapis.com/css?family=Signika Negative rel=stylesheet type=text/css>
return [
"ABeeZee" => "ABeeZee",
"Abel" => "Abel",
"Abril Fatface" => "Abril+Fatface",
"Aclonica" => "Aclonica",
"Acme" => "Acme",
"Actor" => "Actor",
"Adamina" => "Adamina",
"Advent Pro" => "Advent+Pro",
"Aguafina Script" => "Aguafina+Script",
"Akronim" => "Akronim",
"Aladin" => "Aladin",
"Aldrich" => "Aldrich",
"Alegreya" => "Alegreya",
"Alegreya SC" => "Alegreya+SC",
"Alex Brush" => "Alex+Brush",
"Alfa Slab One" => "Alfa+Slab+One",
"Alice" => "Alice",
"Alike" => "Alike",
"Alike Angular" => "Alike+Angular",
"Allan" => "Allan",
"Allerta" => "Allerta",
"Allerta Stencil" => "Allerta+Stencil",
"Allura" => "Allura",
"Almendra" => "Almendra",
"Almendra Display" => "Almendra+Display",
"Almendra SC" => "Almendra+SC",
"Amarante" => "Amarante",
"Amaranth" => "Amaranth",
"Amatic SC" => "Amatic+SC",
"Amethysta" => "Amethysta",
"Anaheim" => "Anaheim",
"Andada" => "Andada",
"Andika" => "Andika",
"Angkor" => "Angkor",
"Annie Use Your Telescope" => "Annie+Use+Your+Telescope",
"Anonymous Pro" => "Anonymous+Pro",
"Antic" => "Antic",
"Antic Didone" => "Antic+Didone",
"Antic Slab" => "Antic+Slab",
"Anton" => "Anton",
"Arapey" => "Arapey",
"Arbutus" => "Arbutus",
"Arbutus Slab" => "Arbutus+Slab",
"Architects Daughter" => "Architects+Daughter",
"Archivo Black" => "Archivo+Black",
"Archivo Narrow" => "Archivo+Narrow",
"Arimo" => "Arimo",
"Arizonia" => "Arizonia",
"Armata" => "Armata",
"Artifika" => "Artifika",
"Arvo" => "Arvo",
"Asap" => "Asap",
"Asset" => "Asset",
"Astloch" => "Astloch",
"Asul" => "Asul",
"Atomic Age" => "Atomic+Age",
"Aubrey" => "Aubrey",
"Audiowide" => "Audiowide",
"Autour One" => "Autour+One",
"Average" => "Average",
"Average Sans" => "Average+Sans",
"Averia Gruesa Libre" => "Averia+Gruesa+Libre",
"Averia Libre" => "Averia+Libre",
"Averia Sans Libre" => "Averia+Sans+Libre",
"Averia Serif Libre" => "Averia+Serif+Libre",
"Bad Script" => "Bad+Script",
"Balthazar" => "Balthazar",
"Bangers" => "Bangers",
"Basic" => "Basic",
"Battambang" => "Battambang",
"Baumans" => "Baumans",
"Bayon" => "Bayon",
"Belgrano" => "Belgrano",
"Belleza" => "Belleza",
"BenchNine" => "BenchNine",
"Bentham" => "Bentham",
"Berkshire Swash" => "Berkshire+Swash",
"Bevan" => "Bevan",
"Bigelow Rules" => "Bigelow+Rules",
"Bigshot One" => "Bigshot+One",
"Bilbo" => "Bilbo",
"Bilbo Swash Caps" => "Bilbo+Swash+Caps",
"Bitter" => "Bitter",
"Black Ops One" => "Black+Ops+One",
"Bokor" => "Bokor",
"Bonbon" => "Bonbon",
"Boogaloo" => "Boogaloo",
"Bowlby One" => "Bowlby+One",
"Bowlby One SC" => "Bowlby+One+SC",
"Brawler" => "Brawler",
"Bree Serif" => "Bree+Serif",
"Bubblegum Sans" => "Bubblegum+Sans",
"Bubbler One" => "Bubbler+One",
"Buda" => "Buda",
"Buenard" => "Buenard",
"Butcherman" => "Butcherman",
"Butterfly Kids" => "Butterfly+Kids",
"Cabin" => "Cabin",
"Cabin Condensed" => "Cabin+Condensed",
"Cabin Sketch" => "Cabin+Sketch",
"Caesar Dressing" => "Caesar+Dressing",
"Cagliostro" => "Cagliostro",
"Calligraffitti" => "Calligraffitti",
"Cambo" => "Cambo",
"Candal" => "Candal",
"Cantarell" => "Cantarell",
"Cantata One" => "Cantata+One",
"Cantora One" => "Cantora+One",
"Capriola" => "Capriola",
"Cardo" => "Cardo",
"Carme" => "Carme",
"Carrois Gothic" => "Carrois+Gothic",
"Carrois Gothic SC" => "Carrois+Gothic+SC",
"Carter One" => "Carter+One",
"Caudex" => "Caudex",
"Cedarville Cursive" => "Cedarville+Cursive",
"Ceviche One" => "Ceviche+One",
"Changa One" => "Changa+One",
"Chango" => "Chango",
"Chau Philomene One" => "Chau+Philomene+One",
"Chela One" => "Chela+One",
"Chelsea Market" => "Chelsea+Market",
"Chenla" => "Chenla",
"Cherry Cream Soda" => "Cherry+Cream+Soda",
"Cherry Swash" => "Cherry+Swash",
"Chewy" => "Chewy",
"Chicle" => "Chicle",
"Chivo" => "Chivo",
"Cinzel" => "Cinzel",
"Cinzel Decorative" => "Cinzel+Decorative",
"Clicker Script" => "Clicker+Script",
"Coda" => "Coda",
"Coda Caption" => "Coda+Caption",
"Codystar" => "Codystar",
"Combo" => "Combo",
"Comfortaa" => "Comfortaa",
"Coming Soon" => "Coming+Soon",
"Concert One" => "Concert+One",
"Condiment" => "Condiment",
"Content" => "Content",
"Contrail One" => "Contrail+One",
"Convergence" => "Convergence",
"Cookie" => "Cookie",
"Copse" => "Copse",
"Corben" => "Corben",
"Courgette" => "Courgette",
"Cousine" => "Cousine",
"Coustard" => "Coustard",
"Covered By Your Grace" => "Covered+By+Your+Grace",
"Crafty Girls" => "Crafty+Girls",
"Creepster" => "Creepster",
"Crete Round" => "Crete+Round",
"Crimson Text" => "Crimson+Text",
"Croissant One" => "Croissant+One",
"Crushed" => "Crushed",
"Cuprum" => "Cuprum",
"Cutive" => "Cutive",
"Cutive Mono" => "Cutive+Mono",
"Damion" => "Damion",
"Dancing Script" => "Dancing+Script",
"Dangrek" => "Dangrek",
"Dawning of a New Day" => "Dawning+of+a+New+Day",
"Days One" => "Days+One",
"Delius" => "Delius",
"Delius Swash Caps" => "Delius+Swash+Caps",
"Delius Unicase" => "Delius+Unicase",
"Della Respira" => "Della+Respira",
"Denk One" => "Denk+One",
"Devonshire" => "Devonshire",
"Didact Gothic" => "Didact+Gothic",
"Diplomata" => "Diplomata",
"Diplomata SC" => "Diplomata+SC",
"Domine" => "Domine",
"Donegal One" => "Donegal+One",
"Doppio One" => "Doppio+One",
"Dorsa" => "Dorsa",
"Dosis" => "Dosis",
"Dr Sugiyama" => "Dr+Sugiyama",
"Droid Sans" => "Droid+Sans",
"Droid Sans Mono" => "Droid+Sans+Mono",
"Droid Serif" => "Droid+Serif",
"Duru Sans" => "Duru+Sans",
"Dynalight" => "Dynalight",
"EB Garamond" => "EB+Garamond",
"Eagle Lake" => "Eagle+Lake",
"Eater" => "Eater",
"Economica" => "Economica",
"Electrolize" => "Electrolize",
"Elsie" => "Elsie",
"Elsie Swash Caps" => "Elsie+Swash+Caps",
"Emblema One" => "Emblema+One",
"Emilys Candy" => "Emilys+Candy",
"Engagement" => "Engagement",
"Englebert" => "Englebert",
"Enriqueta" => "Enriqueta",
"Erica One" => "Erica+One",
"Esteban" => "Esteban",
"Euphoria Script" => "Euphoria+Script",
"Ewert" => "Ewert",
"Exo" => "Exo",
"Expletus Sans" => "Expletus+Sans",
"Fanwood Text" => "Fanwood+Text",
"Fascinate" => "Fascinate",
"Fascinate Inline" => "Fascinate+Inline",
"Faster One" => "Faster+One",
"Fasthand" => "Fasthand",
"Federant" => "Federant",
"Federo" => "Federo",
"Felipa" => "Felipa",
"Fenix" => "Fenix",
"Finger Paint" => "Finger+Paint",
"Fjalla One" => "Fjalla+One",
"Fjord One" => "Fjord+One",
"Flamenco" => "Flamenco",
"Flavors" => "Flavors",
"Fondamento" => "Fondamento",
"Fontdiner Swanky" => "Fontdiner+Swanky",
"Forum" => "Forum",
"Francois One" => "Francois+One",
"Freckle Face" => "Freckle+Face",
"Fredericka the Great" => "Fredericka+the+Great",
"Fredoka One" => "Fredoka+One",
"Freehand" => "Freehand",
"Fresca" => "Fresca",
"Frijole" => "Frijole",
"Fruktur" => "Fruktur",
"Fugaz One" => "Fugaz+One",
"GFS Didot" => "GFS+Didot",
"GFS Neohellenic" => "GFS+Neohellenic",
"Gabriela" => "Gabriela",
"Gafata" => "Gafata",
"Galdeano" => "Galdeano",
"Galindo" => "Galindo",
"Gentium Basic" => "Gentium+Basic",
"Gentium Book Basic" => "Gentium+Book+Basic",
"Geo" => "Geo",
"Geostar" => "Geostar",
"Geostar Fill" => "Geostar+Fill",
"Germania One" => "Germania+One",
"Gilda Display" => "Gilda+Display",
"Give You Glory" => "Give+You+Glory",
"Glass Antiqua" => "Glass+Antiqua",
"Glegoo" => "Glegoo",
"Gloria Hallelujah" => "Gloria+Hallelujah",
"Goblin One" => "Goblin+One",
"Gochi Hand" => "Gochi+Hand",
"Gorditas" => "Gorditas",
"Goudy Bookletter 1911" => "Goudy+Bookletter+1911",
"Graduate" => "Graduate",
"Grand Hotel" => "Grand+Hotel",
"Gravitas One" => "Gravitas+One",
"Great Vibes" => "Great+Vibes",
"Griffy" => "Griffy",
"Gruppo" => "Gruppo",
"Gudea" => "Gudea",
"Habibi" => "Habibi",
"Hammersmith One" => "Hammersmith+One",
"Hanalei" => "Hanalei",
"Hanalei Fill" => "Hanalei+Fill",
"Handlee" => "Handlee",
"Hanuman" => "Hanuman",
"Happy Monkey" => "Happy+Monkey",
"Headland One" => "Headland+One",
"Henny Penny" => "Henny+Penny",
"Herr Von Muellerhoff" => "Herr+Von+Muellerhoff",
"Holtwood One SC" => "Holtwood+One+SC",
"Homemade Apple" => "Homemade+Apple",
"Homenaje" => "Homenaje",
"IM Fell DW Pica" => "IM+Fell+DW+Pica",
"IM Fell DW Pica SC" => "IM+Fell+DW+Pica+SC",
"IM Fell Double Pica" => "IM+Fell+Double+Pica",
"IM Fell Double Pica SC" => "IM+Fell+Double+Pica+SC",
"IM Fell English" => "IM+Fell+English",
"IM Fell English SC" => "IM+Fell+English+SC",
"IM Fell French Canon" => "IM+Fell+French+Canon",
"IM Fell French Canon SC" => "IM+Fell+French+Canon+SC",
"IM Fell Great Primer" => "IM+Fell+Great+Primer",
"IM Fell Great Primer SC" => "IM+Fell+Great+Primer+SC",
"Iceberg" => "Iceberg",
"Iceland" => "Iceland",
"Imprima" => "Imprima",
"Inconsolata" => "Inconsolata",
"Inder" => "Inder",
"Indie Flower" => "Indie+Flower",
"Inika" => "Inika",
"Irish Grover" => "Irish+Grover",
"Istok Web" => "Istok+Web",
"Italiana" => "Italiana",
"Italianno" => "Italianno",
"Jacques Francois" => "Jacques+Francois",
"Jacques Francois Shadow" => "Jacques+Francois+Shadow",
"Jim Nightshade" => "Jim+Nightshade",
"Jockey One" => "Jockey+One",
"Jolly Lodger" => "Jolly+Lodger",
"Josefin Sans" => "Josefin+Sans",
"Josefin Slab" => "Josefin+Slab",
"Joti One" => "Joti+One",
"Judson" => "Judson",
"Julee" => "Julee",
"Julius Sans One" => "Julius+Sans+One",
"Junge" => "Junge",
"Jura" => "Jura",
"Just Another Hand" => "Just+Another+Hand",
"Just Me Again Down Here" => "Just+Me+Again+Down+Here",
"Kameron" => "Kameron",
"Karla" => "Karla",
"Kaushan Script" => "Kaushan+Script",
"Kavoon" => "Kavoon",
"Keania One" => "Keania+One",
"Kelly Slab" => "Kelly+Slab",
"Kenia" => "Kenia",
"Khmer" => "Khmer",
"Kite One" => "Kite+One",
"Knewave" => "Knewave",
"Kotta One" => "Kotta+One",
"Koulen" => "Koulen",
"Kranky" => "Kranky",
"Kreon" => "Kreon",
"Kristi" => "Kristi",
"Krona One" => "Krona+One",
"La Belle Aurore" => "La+Belle+Aurore",
"Lancelot" => "Lancelot",
"Lato" => "Lato",
"League Script" => "League+Script",
"Leckerli One" => "Leckerli+One",
"Ledger" => "Ledger",
"Lekton" => "Lekton",
"Lemon" => "Lemon",
"Libre Baskerville" => "Libre+Baskerville",
"Life Savers" => "Life+Savers",
"Lilita One" => "Lilita+One",
"Limelight" => "Limelight",
"Linden Hill" => "Linden+Hill",
"Lobster" => "Lobster",
"Lobster Two" => "Lobster+Two",
"Londrina Outline" => "Londrina+Outline",
"Londrina Shadow" => "Londrina+Shadow",
"Londrina Sketch" => "Londrina+Sketch",
"Londrina Solid" => "Londrina+Solid",
"Lora" => "Lora",
"Love Ya Like A Sister" => "Love+Ya+Like+A+Sister",
"Loved by the King" => "Loved+by+the+King",
"Lovers Quarrel" => "Lovers+Quarrel",
"Luckiest Guy" => "Luckiest+Guy",
"Lusitana" => "Lusitana",
"Lustria" => "Lustria",
"Macondo" => "Macondo",
"Macondo Swash Caps" => "Macondo+Swash+Caps",
"Magra" => "Magra",
"Maiden Orange" => "Maiden+Orange",
"Mako" => "Mako",
"Marcellus" => "Marcellus",
"Marcellus SC" => "Marcellus+SC",
"Marck Script" => "Marck+Script",
"Margarine" => "Margarine",
"Marko One" => "Marko+One",
"Marmelad" => "Marmelad",
"Marvel" => "Marvel",
"Mate" => "Mate",
"Mate SC" => "Mate+SC",
"Maven Pro" => "Maven+Pro",
"McLaren" => "McLaren",
"Meddon" => "Meddon",
"MedievalSharp" => "MedievalSharp",
"Medula One" => "Medula+One",
"Megrim" => "Megrim",
"Meie Script" => "Meie+Script",
"Merienda" => "Merienda",
"Merienda One" => "Merienda+One",
"Merriweather" => "Merriweather",
"Merriweather Sans" => "Merriweather+Sans",
"Metal" => "Metal",
"Metal Mania" => "Metal+Mania",
"Metamorphous" => "Metamorphous",
"Metrophobic" => "Metrophobic",
"Michroma" => "Michroma",
"Milonga" => "Milonga",
"Miltonian" => "Miltonian",
"Miltonian Tattoo" => "Miltonian+Tattoo",
"Miniver" => "Miniver",
"Miss Fajardose" => "Miss+Fajardose",
"Modern Antiqua" => "Modern+Antiqua",
"Molengo" => "Molengo",
"Molle" => "Molle",
"Monda" => "Monda",
"Monofett" => "Monofett",
"Monoton" => "Monoton",
"Monsieur La Doulaise" => "Monsieur+La+Doulaise",
"Montaga" => "Montaga",
"Montez" => "Montez",
"Montserrat" => "Montserrat",
"Montserrat Alternates" => "Montserrat+Alternates",
"Montserrat Subrayada" => "Montserrat+Subrayada",
"Moul" => "Moul",
"Moulpali" => "Moulpali",
"Mountains of Christmas" => "Mountains+of+Christmas",
"Mouse Memoirs" => "Mouse+Memoirs",
"Mr Bedfort" => "Mr+Bedfort",
"Mr Dafoe" => "Mr+Dafoe",
"Mr De Haviland" => "Mr+De+Haviland",
"Mrs Saint Delafield" => "Mrs+Saint+Delafield",
"Mrs Sheppards" => "Mrs+Sheppards",
"Muli" => "Muli",
"Mystery Quest" => "Mystery+Quest",
"Neucha" => "Neucha",
"Neuton" => "Neuton",
"New Rocker" => "New+Rocker",
"News Cycle" => "News+Cycle",
"Niconne" => "Niconne",
"Nixie One" => "Nixie+One",
"Nobile" => "Nobile",
"Nokora" => "Nokora",
"Norican" => "Norican",
"Nosifer" => "Nosifer",
"Nothing You Could Do" => "Nothing+You+Could+Do",
"Noticia Text" => "Noticia+Text",
"Nova Cut" => "Nova+Cut",
"Nova Flat" => "Nova+Flat",
"Nova Mono" => "Nova+Mono",
"Nova Oval" => "Nova+Oval",
"Nova Round" => "Nova+Round",
"Nova Script" => "Nova+Script",
"Nova Slim" => "Nova+Slim",
"Nova Square" => "Nova+Square",
"Numans" => "Numans",
"Nunito" => "Nunito",
"Odor Mean Chey" => "Odor+Mean+Chey",
"Offside" => "Offside",
"Old Standard TT" => "Old+Standard+TT",
"Oldenburg" => "Oldenburg",
"Oleo Script" => "Oleo+Script",
"Oleo Script Swash Caps" => "Oleo+Script+Swash+Caps",
"Open Sans" => "Open+Sans",
"Open Sans Condensed" => "Open+Sans+Condensed",
"Oranienbaum" => "Oranienbaum",
"Orbitron" => "Orbitron",
"Oregano" => "Oregano",
"Orienta" => "Orienta",
"Original Surfer" => "Original+Surfer",
"Oswald" => "Oswald",
"Over the Rainbow" => "Over+the+Rainbow",
"Overlock" => "Overlock",
"Overlock SC" => "Overlock+SC",
"Ovo" => "Ovo",
"Oxygen" => "Oxygen",
"Oxygen Mono" => "Oxygen+Mono",
"PT Mono" => "PT+Mono",
"PT Sans" => "PT+Sans",
"PT Sans Caption" => "PT+Sans+Caption",
"PT Sans Narrow" => "PT+Sans+Narrow",
"PT Serif" => "PT+Serif",
"PT Serif Caption" => "PT+Serif+Caption",
"Pacifico" => "Pacifico",
"Paprika" => "Paprika",
"Parisienne" => "Parisienne",
"Passero One" => "Passero+One",
"Passion One" => "Passion+One",
"Patrick Hand" => "Patrick+Hand",
"Patrick Hand SC" => "Patrick+Hand+SC",
"Patua One" => "Patua+One",
"Paytone One" => "Paytone+One",
"Peralta" => "Peralta",
"Permanent Marker" => "Permanent+Marker",
"Petit Formal Script" => "Petit+Formal+Script",
"Petrona" => "Petrona",
"Philosopher" => "Philosopher",
"Piedra" => "Piedra",
"Pinyon Script" => "Pinyon+Script",
"Pirata One" => "Pirata+One",
"Plaster" => "Plaster",
"Play" => "Play",
"Playball" => "Playball",
"Playfair Display" => "Playfair+Display",
"Playfair Display SC" => "Playfair+Display+SC",
"Podkova" => "Podkova",
"Poiret One" => "Poiret+One",
"Poller One" => "Poller+One",
"Poly" => "Poly",
"Pompiere" => "Pompiere",
"Pontano Sans" => "Pontano+Sans",
"Port Lligat Sans" => "Port+Lligat+Sans",
"Port Lligat Slab" => "Port+Lligat+Slab",
"Prata" => "Prata",
"Preahvihear" => "Preahvihear",
"Press Start 2P" => "Press+Start+2P",
"Princess Sofia" => "Princess+Sofia",
"Prociono" => "Prociono",
"Prosto One" => "Prosto+One",
"Puritan" => "Puritan",
"Purple Purse" => "Purple+Purse",
"Quando" => "Quando",
"Quantico" => "Quantico",
"Quattrocento" => "Quattrocento",
"Quattrocento Sans" => "Quattrocento+Sans",
"Questrial" => "Questrial",
"Quicksand" => "Quicksand",
"Quintessential" => "Quintessential",
"Qwigley" => "Qwigley",
"Racing Sans One" => "Racing+Sans+One",
"Radley" => "Radley",
"Raleway" => "Raleway",
"Raleway Dots" => "Raleway+Dots",
"Rambla" => "Rambla",
"Rammetto One" => "Rammetto+One",
"Ranchers" => "Ranchers",
"Rancho" => "Rancho",
"Rationale" => "Rationale",
"Redressed" => "Redressed",
"Reenie Beanie" => "Reenie+Beanie",
"Revalia" => "Revalia",
"Ribeye" => "Ribeye",
"Ribeye Marrow" => "Ribeye+Marrow",
"Righteous" => "Righteous",
"Risque" => "Risque",
"Roboto" => "Roboto",
"Roboto Condensed" => "Roboto+Condensed",
"Rochester" => "Rochester",
"Rock Salt" => "Rock+Salt",
"Rokkitt" => "Rokkitt",
"Romanesco" => "Romanesco",
"Ropa Sans" => "Ropa+Sans",
"Rosario" => "Rosario",
"Rosarivo" => "Rosarivo",
"Rouge Script" => "Rouge+Script",
"Ruda" => "Ruda",
"Rufina" => "Rufina",
"Ruge Boogie" => "Ruge+Boogie",
"Ruluko" => "Ruluko",
"Rum Raisin" => "Rum+Raisin",
"Ruslan Display" => "Ruslan+Display",
"Russo One" => "Russo+One",
"Ruthie" => "Ruthie",
"Rye" => "Rye",
"Sacramento" => "Sacramento",
"Sail" => "Sail",
"Salsa" => "Salsa",
"Sanchez" => "Sanchez",
"Sancreek" => "Sancreek",
"Sansita One" => "Sansita+One",
"Sarina" => "Sarina",
"Satisfy" => "Satisfy",
"Scada" => "Scada",
"Schoolbell" => "Schoolbell",
"Seaweed Script" => "Seaweed+Script",
"Sevillana" => "Sevillana",
"Seymour One" => "Seymour+One",
"Shadows Into Light" => "Shadows+Into+Light",
"Shadows Into Light Two" => "Shadows+Into+Light+Two",
"Shanti" => "Shanti",
"Share" => "Share",
"Share Tech" => "Share+Tech",
"Share Tech Mono" => "Share+Tech+Mono",
"Shojumaru" => "Shojumaru",
"Short Stack" => "Short+Stack",
"Siemreap" => "Siemreap",
"Sigmar One" => "Sigmar+One",
"Signika" => "Signika",
"Signika Negative" => "Signika+Negative",
"Simonetta" => "Simonetta",
"Sintony" => "Sintony",
"Sirin Stencil" => "Sirin+Stencil",
"Six Caps" => "Six+Caps",
"Skranji" => "Skranji",
"Slackey" => "Slackey",
"Smokum" => "Smokum",
"Smythe" => "Smythe",
"Sniglet" => "Sniglet",
"Snippet" => "Snippet",
"Snowburst One" => "Snowburst+One",
"Sofadi One" => "Sofadi+One",
"Sofia" => "Sofia",
"Sonsie One" => "Sonsie+One",
"Sorts Mill Goudy" => "Sorts+Mill+Goudy",
"Source Code Pro" => "Source+Code+Pro",
"Source Sans Pro" => "Source+Sans+Pro",
"Special Elite" => "Special+Elite",
"Spicy Rice" => "Spicy+Rice",
"Spinnaker" => "Spinnaker",
"Spirax" => "Spirax",
"Squada One" => "Squada+One",
"Stalemate" => "Stalemate",
"Stalinist One" => "Stalinist+One",
"Stardos Stencil" => "Stardos+Stencil",
"Stint Ultra Condensed" => "Stint+Ultra+Condensed",
"Stint Ultra Expanded" => "Stint+Ultra+Expanded",
"Stoke" => "Stoke",
"Strait" => "Strait",
"Sue Ellen Francisco" => "Sue+Ellen+Francisco",
"Sunshiney" => "Sunshiney",
"Supermercado One" => "Supermercado+One",
"Suwannaphum" => "Suwannaphum",
"Swanky and Moo Moo" => "Swanky+and+Moo+Moo",
"Syncopate" => "Syncopate",
"Tangerine" => "Tangerine",
"Taprom" => "Taprom",
"Tauri" => "Tauri",
"Telex" => "Telex",
"Tenor Sans" => "Tenor+Sans",
"Text Me One" => "Text+Me+One",
"The Girl Next Door" => "The+Girl+Next+Door",
"Tienne" => "Tienne",
"Tinos" => "Tinos",
"Titan One" => "Titan+One",
"Titillium Web" => "Titillium+Web",
"Trade Winds" => "Trade+Winds",
"Trocchi" => "Trocchi",
"Trochut" => "Trochut",
"Trykker" => "Trykker",
"Tulpen One" => "Tulpen+One",
"Ubuntu" => "Ubuntu",
"Ubuntu Condensed" => "Ubuntu+Condensed",
"Ubuntu Mono" => "Ubuntu+Mono",
"Ultra" => "Ultra",
"Uncial Antiqua" => "Uncial+Antiqua",
"Underdog" => "Underdog",
"Unica One" => "Unica+One",
"UnifrakturCook" => "UnifrakturCook",
"UnifrakturMaguntia" => "UnifrakturMaguntia",
"Unkempt" => "Unkempt",
"Unlock" => "Unlock",
"Unna" => "Unna",
"VT323" => "VT323",
"Vampiro One" => "Vampiro+One",
"Varela" => "Varela",
"Varela Round" => "Varela+Round",
"Vast Shadow" => "Vast+Shadow",
"Vibur" => "Vibur",
"Vidaloka" => "Vidaloka",
"Viga" => "Viga",
"Voces" => "Voces",
"Volkhov" => "Volkhov",
"Vollkorn" => "Vollkorn",
"Voltaire" => "Voltaire",
"Waiting for the Sunrise" => "Waiting+for+the+Sunrise",
"Wallpoet" => "Wallpoet",
"Walter Turncoat" => "Walter+Turncoat",
"Warnes" => "Warnes",
"Wellfleet" => "Wellfleet",
"Wendy One" => "Wendy+One",
"Wire One" => "Wire+One",
"Yanone Kaffeesatz" => "Yanone+Kaffeesatz",
"Yellowtail" => "Yellowtail",
"Yeseva One" => "Yeseva+One",
"Yesteryear" => "Yesteryear",
"Zeyada" => "Zeyada"
];
}
/**
* Administration
*/
private function layoutAdmin() {
$locale = fusion_get_locale();
$width_options = ["width" => "100%", 'placeholder' => 'px'];
$color_options = ["placeholder" => $locale['theme_2009'], "width" => "100%", "format" => "hex"];
// max widths
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3001'], 'max_width');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("container_sm", $locale['theme_3002'], $this->data['container_sm'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("container_md", $locale['theme_3003'], $this->data['container_md'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("container_lg", $locale['theme_3004'], $this->data['container_lg'], $width_options);
echo "</div>\n</div>\n";
closeside();
// primary color themes
openside('');
echo "<hr>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3005'], 'info-default');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("primary_color", $locale['theme_3006'], $this->data['primary_color'], $color_options);
echo form_colorpicker("warning_color", $locale['theme_3007'], $this->data['warning_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("success_color", $locale['theme_3008'], $this->data['success_color'], $color_options);
echo form_colorpicker("danger_color", $locale['theme_3009'], $this->data['danger_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("info_color", $locale['theme_3010'], $this->data['info_color'], $color_options);
echo "</div>\n</div>\n";
closeside();
//buttons
openside('');
echo "<hr>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3011'], 'btneff');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("btn_fill", $locale['theme_3012'], $this->data['btn_fill'], [
"placeholder" => $locale['theme_2033'],
"width" => "100%",
"options" => $this->fills
]);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("btn_border", $locale['theme_3013'], $this->data['btn_border'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("btn_radius", $locale['theme_3014'], $this->data['btn_radius'], $width_options);
echo "</div>\n</div>\n";
echo "<hr>\n";
// button primary
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3015'], 'btn-p');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3016'], 'btn-p-normal');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary", $locale['theme_2031'], $this->data['btn_primary'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary_color", $locale['theme_2022'], $this->data['btn_primary_color'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3017'], 'btn-p-hover');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary_hover", $locale['theme_3019'], $this->data['btn_primary_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary_color_hover", $locale['theme_2022'], $this->data['btn_primary_color_hover'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3018'], 'btn-p-active');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary_active", $locale['theme_3020'], $this->data['btn_primary_active'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_primary_color_active", $locale['theme_2022'], $this->data['btn_primary_color_active'], $color_options);
echo "</div></div>\n";
echo "</div>\n</div>\n";
closeside();
// button info
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3021'], 'btn-p');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3016'], 'btn-info-normal');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info", $locale['theme_2031'], $this->data['btn_info'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info_color", $locale['theme_2022'], $this->data['btn_info_color'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3017'], 'btn-p-hover');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info_hover", $locale['theme_2022'], $this->data['btn_info_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info_color_hover", $locale['theme_2022'], $this->data['btn_info_color_hover'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3018'], 'btn-p-active');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info_active", $locale['theme_3020'], $this->data['btn_info_active'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_info_color_active", $locale['theme_2022'], $this->data['btn_info_color_active'], $color_options);
echo "</div></div>\n";
echo "</div>\n</div>\n";
closeside();
// success
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3022'], 'btn-scs');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3016'], 'btn-success-normal');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success", $locale['theme_2031'], $this->data['btn_success'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success_color", $locale['theme_2022'], $this->data['btn_success_color'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3017'], 'btn-p-hover');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success_hover", $locale['theme_3019'], $this->data['btn_success_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success_color_hover", $locale['theme_2022'], $this->data['btn_success_color_hover'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3018'], 'btn-p-active');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success_active", $locale['theme_3020'], $this->data['btn_success_active'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_success_color_active", $locale['theme_2022'], $this->data['btn_success_color_active'], $color_options);
echo "</div></div>\n";
echo "</div>\n</div>\n";
closeside();
// warning
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3023'], 'btn-warning');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3016'], 'btn-warning-normal');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning", $locale['theme_2031'], $this->data['btn_warning'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning_color", $locale['theme_2022'], $this->data['btn_warning_color'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3017'], 'btn-p-hover');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning_hover", $locale['theme_3019'], $this->data['btn_warning_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning_color_hover", $locale['theme_2022'], $this->data['btn_warning_color_hover'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3018'], 'btn-p-active');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning_active", $locale['theme_3020'], $this->data['btn_warning_active'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_warning_color_active", $locale['theme_2022'], $this->data['btn_warning_color_active'], $color_options);
echo "</div></div>\n";
echo "</div>\n</div>\n";
closeside();
// danger
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3024'], 'btn-danger');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3016'], 'btn-danger-normal');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger", $locale['theme_2031'], $this->data['btn_danger'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger_color", $locale['theme_2022'], $this->data['btn_danger_color'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3017'], 'btn-p-hover');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger_hover", $locale['theme_3017'], $this->data['btn_danger_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger_color_hover", $locale['theme_2022'], $this->data['btn_danger_color_hover'], $color_options);
echo "</div></div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_3018'], 'btn-p-active');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger_active", $locale['theme_3018'], $this->data['btn_danger_active'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("btn_danger_color_active", $locale['theme_2022'], $this->data['btn_danger_color_active'], $color_options);
echo "</div></div>\n";
echo "</div>\n</div>\n";
closeside();
}
/**
* Admin navigation
*/
private function navAdmin() {
$locale = fusion_get_locale();
$width_options = ["width" => "100%", 'placeholder' => 'px'];
$color_options = ["placeholder" => $locale['theme_2009'], "width" => "100%", "format" => "hex"];
$fill_options = ["placeholder" => $locale['theme_2033'], "width" => "280px"];
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_4001'], 'navbar-h');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("navbar_height", $locale['theme_4002'], $this->data['navbar_height'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("navbar_border", $locale['theme_4003'], $this->data['navbar_border'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("navbar_radius", $locale['theme_4004'], $this->data['navbar_radius'], $width_options);
echo "</div>\n</div>\n";
closeside();
openside('');
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_4005'], 'navbar-h2a');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-9 col-lg-9'>\n";
$fill_options['options'] = $this->fills;
echo form_select("navbar_fill", $locale['theme_4006'], $this->data['navbar_fill'], $fill_options);
echo "</div>\n</div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_bg", $locale['theme_2031'], $this->data['navbar_bg'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_bg_hover", $locale['theme_3019'], $this->data['navbar_bg_hover'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_bg_active", $locale['theme_3020'], $this->data['navbar_bg_active'], $color_options);
echo "</div>\n</div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_4007'], 'navbar-h2');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("navbar_link_border", $locale['theme_4008'], $this->data['navbar_link_border'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_text("navbar_link_radius", $locale['theme_4009'], $this->data['navbar_link_radius'], $width_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_link_border_color", $locale['theme_4010'], $this->data['navbar_link_border_color'], $color_options);
echo "</div>\n</div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_4011'], 'navbar-h3');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_brand_color", $locale['theme_4012'], $this->data['navbar_brand_color'], $color_options);
echo form_colorpicker("navbar_font_color", $locale['theme_4013'], $this->data['navbar_font_color'], $color_options);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_select("navbar_brand_decoration", $locale['theme_4014'], $this->data['navbar_brand_decoration'], [
"width" => "100%",
"options" => $this->font_decoration_options
]);
echo form_select("navbar_font_decoration", $locale['theme_2025'], $this->data['navbar_font_decoration'], [
"width" => "100%",
"options" => $this->font_decoration_options
]);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo "</div>\n</div>\n";
echo "<div class='row'>\n";
echo "<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_para($locale['theme_4015'], 'navbar-h4');
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_link_color", $locale['theme_4013'], $this->data['navbar_link_color'], $color_options);
echo form_select("navbar_link_decoration", $locale['theme_4016'], $this->data['navbar_link_decoration'], [
"width" => "100%",
"options" => $this->font_decoration_options
]);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_link_color_hover", $locale['theme_2028'], $this->data['navbar_link_color_hover'], $color_options);
echo form_select("navbar_link_decoration_hover", $locale['theme_2025'], $this->data['navbar_link_decoration_hover'], [
"width" => "100%",
"options" => $this->font_decoration_options
]);
echo "</div>\n<div class='col-xs-12 col-sm-12 col-md-3 col-lg-3'>\n";
echo form_colorpicker("navbar_link_color_active", $locale['theme_2034'], $this->data['navbar_link_color_active'], $color_options);
echo form_select("navbar_link_decoration_active", $locale['theme_2035'], $this->data['navbar_link_decoration_active'], [
"width" => "100%",
"options" => $this->font_decoration_options
]);
echo "</div>\n</div>\n";
closeside();
}
}