Add site settings editor

master
Skylar Ittner 6 years ago
parent 54dd701bee
commit 80913718ac

@ -30,6 +30,35 @@ function returnToSender($msg, $arg = "") {
} }
switch ($VARS['action']) { switch ($VARS['action']) {
case "sitesettings":
if (!$database->has("sites", ["siteid" => $VARS['siteid']])) {
returnToSender("invalid_parameters");
}
if (is_empty($VARS['name'])) {
returnToSender("invalid_parameters");
}
if (is_empty($VARS['url'])) {
returnToSender("invalid_parameters");
}
if (is_empty($VARS['theme'])) {
returnToSender("invalid_parameters");
}
if (is_empty($VARS['color'])) {
returnToSender("invalid_parameters");
}
$theme = preg_replace("/[^A-Za-z0-9]/", '', $VARS['theme']);
$color = preg_replace("/[^A-Za-z0-9]/", '', $VARS['color']);
if (!file_exists(__DIR__ . "/public/themes/$theme/theme.json")) {
returnToSender("invalid_parameters");
}
if ($color != "default" && !file_exists(__DIR__ . "/public/themes/$theme/colors/$color")) {
returnToSender("invalid_parameters");
}
$database->update('sites',
["sitename" => $VARS['name'], "url" => $VARS['url'], "theme" => $theme, "color" => $color],
["siteid" => $VARS['siteid']]);
returnToSender("settings_saved");
break;
case "saveedits": case "saveedits":
header("Content-Type: application/json"); header("Content-Type: application/json");
$slug = $VARS['slug']; $slug = $VARS['slug'];

@ -46,6 +46,7 @@ define("STRINGS", [
"save" => "Save", "save" => "Save",
"edit" => "Edit", "edit" => "Edit",
"view" => "View", "view" => "View",
"preview" => "Preview",
"cancel" => "Cancel", "cancel" => "Cancel",
"save needed" => "Press Save to see recent changes.", "save needed" => "Press Save to see recent changes.",
"saved" => "Saved", "saved" => "Saved",
@ -53,5 +54,6 @@ define("STRINGS", [
"link" => "Link", "link" => "Link",
"text" => "Text", "text" => "Text",
"select page or enter url" => "Select a page or enter URL", "select page or enter url" => "Select a page or enter URL",
"edit component" => "Edit component" "edit component" => "Edit component",
"default" => "Default"
]); ]);

@ -44,7 +44,7 @@ if (!is_empty($VARS['siteid'])) {
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<div class="form-group"> <div class="form-group">
<label for="style"><i class="fas fa-paint-brush"></i> <?php lang('theme'); ?></label> <label for="theme"><i class="fas fa-paint-brush"></i> <?php lang('theme'); ?></label>
<div class="theme_bin"> <div class="theme_bin">
<?php <?php
$themedir = __DIR__ . "/../public/themes/"; $themedir = __DIR__ . "/../public/themes/";
@ -57,27 +57,66 @@ if (!is_empty($VARS['siteid'])) {
$ts = $sitedata["theme"] == $t ? " checked" : ""; $ts = $sitedata["theme"] == $t ? " checked" : "";
?> ?>
<label> <label>
<input type="radio" name="style" value="<?php echo $t; ?>" <?php echo $ts; ?> /> <input type="radio" name="theme" value="<?php echo $t; ?>" <?php echo $ts; ?> />
<div class="card theme"> <div class="card theme">
<div class="card-body m-0 p-1"> <div class="card-body m-0 p-1">
<b><?php echo $info['name']; ?></b><br /> <span class="d-flex">
<h4 class="mr-auto"><?php echo $info['name']; ?></h4>
<a href="public/index.php?page=index&siteid=<?php echo $VARS['siteid']; ?>&theme=<?php echo $t; ?>" target="_BLANK">
<i class="fas fa-eye"></i> <?php lang("preview"); ?>
</a>
</span>
<b><?php lang("theme type"); ?></b>:
<?php <?php
lang("theme type");
echo ": ";
if ($info['singlepage'] == true) { if ($info['singlepage'] == true) {
lang("single page"); lang("single page");
} else { } else {
lang("multiple page"); lang("multiple page");
} }
?><br /> ?><br />
<?php lang("templates"); <b><?php lang("templates"); ?></b>:
echo ": " . count($info['templates']); <?php
$temtitles = [];
foreach ($info['templates'] as $tem) {
$temtitles[] = $tem['title'];
}
echo implode(", ", $temtitles);
?><br /> ?><br />
<?php lang("color styles"); <b><?php lang("color styles"); ?></b>:
echo ": " . count($info['colors']); <div class="list-group colorSelector">
<?php
if (count($info['colors']) == 0) {
$info['colors'] = ["default" => ["title" => lang("default", false), "description" => ""]];
}
foreach ($info['colors'] as $c => $color) {
$checked = "";
if ($sitedata["theme"] == $t && $sitedata["color"] == $c) {
$checked = "checked";
}
?>
<div class="list-group-item">
<div class="d-flex justify-content-between">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="color" id="color_<?php echo $t; ?>_<?php echo $c; ?>" value="<?php echo $c; ?>" <?php echo $checked; ?>>
<label class="form-check-label" for="color_<?php echo $t; ?>_<?php echo $c; ?>">
<b><?php echo $color["title"]; ?></b>
</label>
</div>
<div>
<a href="public/index.php?page=index&siteid=<?php echo $VARS['siteid']; ?>&theme=<?php echo $t; ?>&color=<?php echo $c; ?>" target="_BLANK">
<i class="fas fa-eye"></i>
<?php lang("preview"); ?>
</a>
</div>
</div>
<?php echo $color["description"]; ?>
</div>
<?php
}
?> ?>
</div> </div>
</div> </div>
</div>
</label> </label>
<?php } ?> <?php } ?>
</div> </div>
@ -86,7 +125,7 @@ if (!is_empty($VARS['siteid'])) {
</div> </div>
</div> </div>
<input type="hidden" name="siteid" value="<?php echo htmlspecialchars($VARS['siteid']); ?>" /> <input type="hidden" name="siteid" value="<?php echo $VARS['siteid']; ?>" />
<input type="hidden" name="action" value="sitesettings" /> <input type="hidden" name="action" value="sitesettings" />
<input type="hidden" name="source" value="sites" /> <input type="hidden" name="source" value="sites" />

@ -4,7 +4,7 @@ License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
.theme_bin { .theme_bin {
max-height: 300px; max-height: 75vh;
overflow-y: scroll; overflow-y: scroll;
padding: 5px; padding: 5px;
} }
@ -14,6 +14,11 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
position: absolute; position: absolute;
} }
.theme_bin label input[type=radio].form-check-input {
visibility: visible;
position: inherit;
}
.theme_bin label input[type=radio] + .theme { .theme_bin label input[type=radio] + .theme {
cursor: pointer; cursor: pointer;
border: 3px solid white; border: 3px solid white;
@ -23,3 +28,12 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
.theme_bin label input[type=radio]:checked + .theme { .theme_bin label input[type=radio]:checked + .theme {
border: 3px solid rgba(0,0,0,.8); border: 3px solid rgba(0,0,0,.8);
} }
.theme_bin label {
max-width: 250px;
}
.colorSelector {
max-height: 50vh;
overflow-y: scroll;
}
Loading…
Cancel
Save