This reverts commit e9ad11742876f9f78d743a28afd547ee7480c7f9, reversing
changes made to f30fc6204a6bc7643d7952b1df98a3aa7b462dea.
This commit is contained in:
azett 2022-07-02 13:30:56 +02:00
parent fa95af79fc
commit af1aa7759b
150 changed files with 1527 additions and 4763 deletions

1
.gitignore vendored
View File

@ -7,7 +7,6 @@
/.buildpath
/.project
/.settings
/.vscode
/fp-content/attachs
/fp-content/images
/fp-content_

View File

@ -1,6 +1,5 @@
# Under development: [FlatPress 1.3](https://github.com/flatpressblog/flatpress/releases/tag/1.3)
## General
- New responsive Admin Area: All the functions you know, but fresh'n'clean, and adapts to your screen size
- Added [SECURITY.md](https://github.com/flatpressblog/flatpress/blob/master/SECURITY.md)
- [README](https://github.com/flatpressblog/flatpress/blob/master/README.md): added "help and support" section

View File

@ -1,123 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$flatpress.title}{$pagetitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset={$flatpress.charset}" />
<meta name="viewport" content="width=device-width, user-scalable=no">
<link href="https://fonts.googleapis.com/css?family=Nunito&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{$smarty.const.BLOG_BASEURL}/fp-includes/bootstrap/css/bootstrap.min.css">
<script src="{$smarty.const.BLOG_BASEURL}/fp-includes/jquery/jquery.min.js"></script>
<link rel="stylesheet" href="{$smarty.const.BLOG_BASEURL}/admin/res/admin.css">
<link rel="stylesheet" href="{$smarty.const.BLOG_BASEURL}/fp-includes/themify-icons/themify-icons.css">
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/admin.js" ></script>
<link rel="stylesheet" href="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/themes/default.min.css" />
</head>
{if isset($action)}
<body class="{"admin-$panel-$action"|tag:admin_body_class}">
{else}
<body class="{"admin-$panel"|tag:admin_body_class}">
{/if}
<nav class="navbar navbar-dark flex-md-nowrap top-nav top-color">
<div class="container-fluid">
<div class="row master-row top-row mobile_menu_hide">
<div class="col-lg-6"><a href="#" onclick="mobile_open_button()"><span class="ti-menu mobile-menu" style="color: #fff;"></span></a><h3><span class="ti-arrow-circle-right"></span> {if isset($panelstrings.head)}{$panelstrings.head}{/if}</h3></div>
<div class="col-lg-6 top-right-bar">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="login.php?do=logout">
<span class="d-lg-inline small"><span class="ti-power-off"></span><span class="top_menu_item"> {$logout}</span></span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" target="_blank" href="https://wiki.flatpress.org/">
<span class="d-lg-inline small"><span class="ti-help-alt"></span><span class="top_menu_item"> {$help_top}</span></span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="admin.php?p=config">
<span class="d-lg-inline small"><span class="ti-user"></span><span class="top_menu_item"> {$username}</span></span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{$smarty.const.BLOG_BASEURL}">
<span class="d-lg-inline small"><span class="ti-home"></span><span class="top_menu_item"> {$blog}</span></span>
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
<div class="top-background top-color shadow mobile_menu_hide"></div>
<div class="container-fluid">
<div class="row master-row">
<nav class="bg-light sidebar left-sidebar" id="sidebar">
<a href="admin.php">
<div class="admin-logo">
<img src="{$smarty.const.BLOG_BASEURL}/admin/res/fp-logo.png">
</div>
</a>
<div class="admin-logo-border"></div>
<div class="sidebar-sticky">
<ul class="nav flex-column">
{foreach from=$menubar item=tab}
{if isset($tab) && isset($panel) && $tab eq $panel}
<li id="admin-{$tab}" class="nav-item">
<a id="admin-link-{$tab}" class="admin-tab-current nav-link active" href="{$smarty.const.BLOG_BASEURL}admin.php?p={$tab}">
{$lang.admin.panels[$tab]|default:$tab}
</a>
</li>
{if isset($submenu)}
<ul class="nav flex-column submenu">
{foreach from=$submenu key=subtab item=item}
{if isset($item) && $item}
<li id="admin-{$panel}-{$subtab}" class="nav-item">
<a class="nav-link{if isset($action) && isset($subtab) && $action == $subtab} sub-active{/if}"
href="{$smarty.const.BLOG_BASEURL}admin.php?p={$panel}&amp;action={$subtab}">
<span class="ti-arrow-circle-right"></span>
{$lang.admin[$panel].submenu[$subtab]|default:$subtab}
</a>
</li>
{/if}
{/foreach}
</ul>
{/if}
{else}
<li id="admin-{$tab}" class="nav-item">
<a id="admin-link-{$tab}" class="nav-link" href="{$smarty.const.BLOG_BASEURL}admin.php?p={$tab}">
{$lang.admin.panels[$tab]|default:$tab}
</a>
</li>
{/if}
{/foreach}
<li id="close-button">
<div class="admin-logo-border"></div>
<a class="nav-link" onclick="mobile_close_button()">
<div class="btn btn-primary">
<span class="ti-close"></span>
{$close}
</div>
</a>
</li>
</ul>
<script>generate_menu_icons()</script>
</div>
</nav>
<main role="main" class="container-fluid mobile_menu_hide">
{page}
<div class="body">{controlpanel}</div>
{/page}
</div>
<div id="footer" class="mobile_menu_hide">
{action hook=wp_footer}
<p>
{$footer} <a href="http://www.flatpress.org/">FlatPress</a>.
</p>
</div> <!-- end of #footer -->
</main>
</div>
</body>
</html>

View File

@ -1,41 +0,0 @@
<?php
/* An admin AJAX Functions */
$AjaxFunctionMap = [];
define('ROOT_CONTENT', [
['attachs', true],
['images', true]
]);
$AjaxFunctionListMediaDirectory = function($route) {
$newRoute = FP_CONTENT . $route;
$dirContent = scandir($newRoute);
if(!$dirContent) {
throw new Exception('Error when trying to access the folder'.$newRoute);
}
$result = [];
if(!strlen($route)) { // Root. We show only images and attachs dir
checkIfDirAndAttachsDirExists();
return ROOT_CONTENT;
}
for($i = 2; $i < sizeof($dirContent); ++$i) { // Result = [[dir1, true], [file1, false], [file2, false]] ...
array_push($result, []);
array_push($result[$i - 2], $dirContent[$i]);
array_push($result[$i - 2], is_dir($newRoute . $dirContent[$i])); // True if is dir, false is not
}
return $result;
};
function checkIfDirAndAttachsDirExists() {
if (!file_exists(IMAGES_DIR)) {
fs_mkdir(IMAGES_DIR);
}
if (!file_exists(ATTACHS_DIR)) {
fs_mkdir(ATTACHS_DIR);
}
}
$AjaxFunctionMap['ListMediaDirectory'] = $AjaxFunctionListMediaDirectory;
?>

BIN
admin/imgs/config.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
admin/imgs/entries.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
admin/imgs/maintain.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
admin/imgs/newentry.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
admin/imgs/plugins.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

BIN
admin/imgs/widgets.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

19
admin/main.php Normal file → Executable file
View File

@ -170,22 +170,6 @@ $v = $lang ['admin'] [$panel] [$action];
$smarty->assign_by_ref('panelstrings', $v);
$smarty->assign_by_ref('plang', $v);
// We create a varible to write user name in tpls
if($user = user_loggedin()) {
$smarty->assign("username", $user['userid']);
} else {
$smarty->assign("username", "#NAME#");
}
// Custom lang message for admin panel
$smarty->assign("help_top", $lang['admin']['general']['help_top']);
$smarty->assign("logout", $lang['admin']['general']['logout_top']);
$smarty->assign("close", $lang['admin']['general']['close']);
$smarty->assign("blog", $lang['admin']['general']['blog']);
$smarty->assign("footer", $lang['admin']['general']['footer']);
$smarty->assign("sceditor_display", "bbcode");
if (isset($_GET ['mod'])) {
switch ($_GET ['mod']) {
@ -196,8 +180,7 @@ if (isset($_GET ['mod'])) {
echo $smarty->get_template_vars('success');
}
} else {
#$smarty->display('admin.tpl');
$smarty->display(ABS_PATH . ADMIN_DIR . 'admin.tpl');
$smarty->display('admin.tpl');
}
?>

34
admin/main.tpl Normal file → Executable file
View File

@ -1,4 +1,38 @@
<ul id="admin-tabmenu">
{foreach from=$menubar item=tab}
{if $tab eq $panel}
<li id="admin-{$tab}">
<a class="admin-tab-current" href="{$smarty.const.BLOG_BASEURL}admin.php?p={$tab}">
{$lang.admin.panels[$tab]|default:$tab}
</a>
</li>
{else}
<li id="admin-{$tab}">
<a href="{$smarty.const.BLOG_BASEURL}admin.php?p={$tab}">
{$lang.admin.panels[$tab]|default:$tab}
</a>
</li>
{/if}
{/foreach}
</ul>
{if isset($submenu)}
<ul id="admin-submenu">
{foreach from=$submenu key=subtab item=item}
{if $item}
<li id="admin-{$panel}-{$subtab}">
<a {if $action == $subtab}class="active" {/if}
href="{$smarty.const.BLOG_BASEURL}admin.php?p={$panel}&amp;action={$subtab}">
{$lang.admin[$panel].submenu[$subtab]|default:$subtab}
</a>
</li>
{/if}
{/foreach}
</ul>
{/if}
<div id="admin-content">
{if isset($action)}
{include file=$admin_resource|default:"admin:$panel/$action"}

View File

@ -67,7 +67,7 @@
'style' => @$fp_config['general']['style'],
'blogid' => $fp_config['general']['blogid'],
'charset'=> 'utf-8',
'sceditor_display' => $_POST['sceditor_format']
);
$fp_config['locale'] = array(

115
admin/panels/config/admin.config.tpl Normal file → Executable file
View File

@ -1,55 +1,66 @@
{include file='shared:admin_errorlist.tpl'}
{include file='shared:errorlist.tpl'}
{html_form}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body options_page">
<div class="row">
<div class="col-lg-6 mb-4">
<div id="admin-config" class="option-set">
<div id="admin-config-general">
<h2> {$panelstrings.gensetts} </h2>
<dl class="option-list">
<dt><label for="title"> {$panelstrings.blogtitle} </label></dt>
<dd><input type="text" name="title" id="title" class="textinput{if isset($error)}{$error.title|notempty:' field-error'}{/if} form-control input_gray"
{if isset($error) && isset($error.title) && !empty($error.title)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd><input type="text" name="title" id="title" class="textinput {$class}"
value="{$flatpress.TITLE|escape:"html"}" />
</dd>
<dt><label for="subtitle"> {$panelstrings.blogsubtitle} </label></dt>
<dd><input type="text" name="subtitle" id="subtitle" class="bigtextinput form-control input_gray" value="{$flatpress.subtitle|escape:"html"}" /></dd>
<dd><input type="text" name="subtitle" id="subtitle" class="bigtextinput" value="{$flatpress.subtitle|escape:"html"}" /></dd>
<dt><label for="blogfooter"> {$panelstrings.blogfooter} </label></dt>
<dd><input type="text" name="blogfooter" id="blogfooter" class="textinput form-control input_gray" value="{$flatpress.footer|escape:"html"}" /></dd>
<dd><input type="text" name="blogfooter" id="blogfooter" class="textinput" value="{$flatpress.footer|escape:"html"}" /></dd>
<dt><label for="author"> {$panelstrings.blogauthor} </label></dt>
<dd><input type="text" name="author" id="author" class="textinput form-control input_gray" value="{$flatpress.author}" /></dd>
<dd><input type="text" name="author" id="author" class="textinput" value="{$flatpress.author}" /></dd>
<dt><label for="www"> {$panelstrings.blogurl} </label></dt>
<dd><input type="text" name="www" id="www" class="form-control input_gray textinput{if isset($error)}{$error.www|notempty:" field-error"}{/if}"
{if isset($error) && isset($error.www) && !empty($error.www)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd><input type="text" name="www" id="www" class="textinput {$class}"
value="{$flatpress.www|escape:"html"}" /></dd>
<dt><label for="email"> {$panelstrings.blogemail} </label></dt>
<dd><input type="text" name="email" id="email" class="form-control input_gray textinput{if isset($error)}{$error.email|notempty:" field-error"}{/if}"
{if isset($error) && isset($error.email) && !empty($error.email)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd><input type="text" name="email" id="email" class="textinput {$class}"
value="{$flatpress.email}" /></dd>
<dt> {$panelstrings.notifications} </dt>
<dd>
<label for="notify">
<input type="checkbox" name="notify" id="notify"{if isset($flatpress.NOTIFY) && $flatpress.NOTIFY}checked="checked"{/if} />
<input type="checkbox" name="notify" id="notify"{if $flatpress.NOTIFY}checked="checked"{/if} />
{$panelstrings.mailnotify}
</label>
</dd>
<dt><label for="startpage"> {$panelstrings.startpage} </label></dt>
<dd><select name="startpage" id="startpage" class="textinput form-select form-control input_gray">
<dd><select name="startpage" id="startpage" class="textinput">
<option value=":NULL:">
{$panelstrings.stdstartpage}
</option>
@ -62,44 +73,72 @@
</dd>
<dt><label for="maxentries"> {$panelstrings.blogmaxentries} </label></dt>
{if isset($error) && isset($error.maxentries) && !empty($error.maxentries)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd><input type="text" name="maxentries" id="maxentries"
class="form-control input_gray smalltextinput{if isset($error)}{$error.maxentries|notempty:" field-error"}{/if}" value="{$flatpress.maxentries}" /></dd>
class="smalltextinput {$class}" value="{$flatpress.maxentries}" /></dd>
</dl>
</div>
</div>
<div class="col-lg-6 mb-4">
<div id="admin-config-intsetts">
<h2> {$panelstrings.intsetts} </h2>
<dl class="option-list">
<dt> {$panelstrings.utctime} </dt>
{assign var=temp_time value="%b %d %Y %H:%M:%S"}
<dd> <code> {"r"|date:$smarty.now} </code> </dd>
<dt><label for="timeoffset"> {$panelstrings.timeoffset} </label></dt>
{if isset($error) && isset($error.timeoffset) && !empty($error.timeoffset)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd><input type="text" name="timeoffset" id="timeoffset"
class="form-control input_gray smalltextinput{if isset($error)}{$error.timeoffset|notempty:" field-error"}{/if}"
class="smalltextinput {$class}"
value="{$fp_config.locale.timeoffset}" /> {$panelstrings.hours}
</dd>
<dt><label for="dateformat"> {$panelstrings.dateformat} </label></dt>
{if isset($error) && isset($error.dateformat) && !empty($error.dateformat)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd> <p> <input type="text" name="dateformat" id="dateformat"
class="form-control input_gray textinput{if isset($error)}{$error.dateformat|notempty:" field-error"}{/if}"
class="textinput {$class}"
value="{$fp_config.locale.dateformat}" /> </p>
<p> {$panelstrings.output}: {$smarty.now|date_format:$fp_config.locale.dateformat} </p>
</dd>
<dt><label for="dateformatshort"> {$panelstrings.dateformatshort} </label></dt>
{if isset($error) && isset($error.dateformatshort) && !empty($error.dateformatshort)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd> <p> <input type="text" name="dateformatshort" id="dateformatshort"
class="form-control input_gray textinput{if isset($error)}{$error.dateformatshort|notempty:" field-error"}{/if}"
class="textinput {$class}"
value="{$fp_config.locale.dateformatshort}" /> </p>
<p> {$panelstrings.output}: {$smarty.now|date_format:$fp_config.locale.dateformatshort} </p>
</dd>
<dt><label for="timeformat"> {$panelstrings.timeformat} </label></dt>
{if isset($error) && isset($error.timeformat) && !empty($error.timeformat)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd> <p> <input type="text" name="timeformat" id="timeformat"
class="form-control input_gray textinput{if isset($error)}{$error.timeformat|notempty:" field-error"}{/if}"
class="textinput {$class}"
value="{$fp_config.locale.timeformat}" /> </p>
{assign var=currentTime value=$smarty.now}
{assign var=timeDiff value=$fp_config.locale.timeoffset}
@ -110,7 +149,7 @@
<dt><label for="lang"> {$panelstrings.langchoice} </label></dt>
<dd>
<select name="lang" id="lang" class="form-control form-select input_gray textinput">
<select name="lang" id="lang" class="textinput">
{foreach from=$lang_list item=langsetts}
<option value="{$langsetts.locale}"
{if $langsetts.locale == $fp_config.locale.lang}selected="selected"{/if}>
@ -121,23 +160,27 @@
</dd>
<dt> <label for="charset"> {$panelstrings.charset} </label></dt>
{if isset($error) && isset($error.charset) && !empty($error.charset)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<dd> <p><input type="text" name="charset" id="charset"
class="form-control input_gray smalltextinput{if isset($error)}{$error.charset|notempty:" field-error"}{/if}"
class="smalltextinput {$class}"
value="{$fp_config.locale.charset}" /></p>
<p>{$panelstrings.charsettip}</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="buttonbar">
{html_submit name="save" id="save" class="btn btn-primary" value=$panelstrings.submit}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="buttonbar">
{html_submit name="save" id="save" value=$panelstrings.submit}
</div>
{/html_form}

View File

@ -20,6 +20,7 @@
function main() {
if (isset($_GET['do']) && $_GET['do'] == 'clear') {
$ret1 = fs_delete(CONTENT_DIR . 'categories_encoded.dat') &&
$ret2 = fs_delete(CONTENT_DIR . 'categories.txt');

53
admin/panels/entry/admin.entry.cats.tpl Normal file → Executable file
View File

@ -1,32 +1,27 @@
{include file=shared:admin_errorlist.tpl}
<h2>{$panelstrings.head}</h2>
{include file=shared:errorlist.tpl}
<div class="row">
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
{html_form}
<p>
<textarea name="content" id="content" class="form-control cat-textarea" rows="20" cols="74">{if isset($catdefs)}{$catdefs|escape}{/if}</textarea>
</p>
<div class="buttonbar text-center">
{html_submit name="save" id="save" class="btn btn-primary" value=$panelstrings.submit}
<a class="btn btn-secondary" href="?p=entry&amp;action=cats&amp;do=clear">{$panelstrings.clear}</a>
</div>
{/html_form}
</div>
</div>
</div>
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.cats_info}</h6>
</div>
<div class="card-body">
{$panelstrings.descr}
<p><a href="?p=entry&amp;action=cats&amp;do=clear">{$panelstrings.clear}</a></p>
{if !isset($catdefs)}
{assign var=catdefs value=""}
{/if}
{html_form}
<p>
<textarea name="content" id="content" rows="20" cols="74">{$catdefs|escape}</textarea><br />
</p>
<div class="buttonbar">
{html_submit name="save" id="save" value=$panelstrings.submit}
</div>
</div>
</div>
</div>
{/html_form}

View File

@ -1,35 +1,36 @@
<h2>{$plang.head} <a href="admin.php?p=entry&amp;action=write&amp;entry={$entryid}">{$entrysubject}</a></h2>
<p>{$plang.descr}</p>
{html_form}
{include file='shared:admin_errorlist.tpl'}
{include file='shared:errorlist.tpl'}
<div class="row">
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4 edit_comments">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$plang.head} {$entrysubject}</h6>
</div>
<div class="card-body">
<p><input type="hidden" name="entry" value="{$entryid}" /><input type="hidden" name="comment" value="{$id}" />
<div class="option-set">
<dl>
<dt><label class="textlabel" for="name">{$plang.author}</label></dt>
<dd>
<input type="text" class="bigtextinput {$error.name|notempty:'field-error'} form-control input_gray" name="name" id="name" value="{$values.name}" />
<input type="text" class="bigtextinput {$error.name|notempty:'field-error'}" name="name" id="name" value="{$values.name}" />
</dd>
<dt><label class="textlabel" for="email">{$plang.email}</label></dt>
<dd>
<input type="text" class="bigtextinput {$error.email|notempty:'field-error'} form-control input_gray" name="email" id="email" value="{$values.email}" />
<input type="text" class="bigtextinput {$error.email|notempty:'field-error'}" name="email" id="email" value="{$values.email}" />
</dd>
<dt><label class="textlabel" for="www">{$plang.www}</label></dt>
<dd>
<input type="text" class="bigtextinput {$error.www|notempty:'field-error'} form-control input_gray" name="url" id="url" value="{$values.url}" />
<input type="text" class="bigtextinput {$error.www|notempty:'field-error'}" name="url" id="url" value="{$values.url}" />
</dd>
<dt><label class="textlabel" for="ip">{$plang.ip}</label></dt>
<dd>
<input type="text" id="ip" name="ip" class="bigtextinput form-control" value="{$values.ip_address}" disabled="disabled" />
<input type="text" id="ip" name="ip" class="bigtextinput" value="{$values.ip_address}" disabled="disabled" />
</dd>
<dt><label class="textlabel" for"loggedin">{$plang.loggedin}</label></dt>
@ -41,16 +42,13 @@
<div class="option-set">
<textarea name="content" {$error.content|notempty:'class="field-error"'}
id="content" class="form-control input_gray">{$values.content}</textarea>
id="content" rows="10" cols="74">{$values.content}</textarea>
</div>
<div class="buttonbar">
<input type="submit" name="save" id="submit" value="{$plang.submit}" class="btn btn-primary" />
</div>
</div>
</div>
</div>
<input type="submit" name="save" id="submit" value="{$plang.submit}" />
</div>
{/html_form}

View File

@ -1,8 +1,18 @@
{include file="shared:admin_errorlist.tpl"}
{entry_block}
{entry}
<h2>{$panelstrings.head} <a href="admin.php?p=entry&amp;action=write&amp;entry={$id}">{$subject}</a></h2>
{include file=shared:errorlist.tpl}
<p>{$panelstrings.descr}</p>
{comment_block}
{html_form}
<script>
{literal}
@ -10,15 +20,7 @@ function admin_entry_comment_delete() { return confirm({/literal}'{$plang.act_de
{/literal}
</script>
<div class="row">
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head} {$subject}</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="entrylist table">
<table class="entrylist">
<thead><tr>
<th>{$panelstrings.date}</th>
<th>{$panelstrings.content}</th>
@ -50,11 +52,6 @@ function admin_entry_comment_delete() { return confirm({/literal}'{$plang.act_de
</tr>
{/comment}
</tbody></table>
</div>
</div>
</div>
</div>
</div>
{/html_form}
{/comment_block}

View File

@ -1,25 +1,19 @@
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{entry_block}
{html_form}
<fieldset><legend>{$panelstrings.preview}</legend>
{include file=preview.tpl}
</fieldset>
</br>
<p class="delete_confirm">{$panelstrings.confirm}</p>
<p>{$panelstrings.confirm}</p>
<input type="hidden" name="entry" value="{$id}" />
<div class="buttonbar">
{html_submit name="delete" id="delete" class="btn btn-primary" value=$panelstrings.ok}
{html_submit name="cancel" id="cancel" class="btn btn-secondary" value=$panelstrings.cancel}
{html_submit name="delete" id="delete" value=$panelstrings.ok}
{html_submit name="cancel" id="cancel" value=$panelstrings.cancel}
</div>
{/html_form}
{/entry_block}
</div>
</div>
</div>
</div>

111
admin/panels/entry/admin.entry.list.tpl Normal file → Executable file
View File

@ -1,13 +1,48 @@
{include file=shared:admin_errorlist.tpl}
<div class="row">
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
<h2>{$panelstrings.head}</h2>
{draft_block}
<div id="admin-drafts">
<p>Your drafts:</p>
<ul>
{draft}
<li>
<a href="admin.php?p=entry&amp;entry={$id}&amp;action=write">{$subject|truncate:70}</a>
</li>
{/draft}
</ul>
</div>
<div class="card-body">
<div class="table-responsive table-striped">
<table class="entrylist table">
{/draft_block}
{include file=shared:errorlist.tpl}
<p>{$panelstrings.descr}</p>
<form method="get" action="{$smarty.server.PHP_SELF}?p=entry">
<p> <input type="hidden" name="p" value="entry" /> </p>
<fieldset><legend>{$panelstrings.filter}</legend>
<select name="category" class="alignleft">
<option label="Unfiltered" value="all">{$panelstrings.nofilter}</option>
{*html_options options=$lang.entry.flags.short selected=$smarty.request.cat*}
{if isset($smarty.request.category)} {assign var=category value=$smarty.request.category} {else} {assign var=category value=""}{/if}
{html_options options=$categories_all selected=$category}
</select>
{html_submit name='filter' id='filter' class="alignright" value=$panelstrings.filterbtn}
</fieldset>
</form>
{entry_block}
<table class="entrylist">
<thead><tr>{*<th>{$panelstrings.sel}</th>*}
<th>{$panelstrings.date}</th>
<th class="main-cell">{$panelstrings.title}</th>
@ -19,7 +54,7 @@
<tr>
<td>{$id|entry_idtotime|date_format:"`$fp_config.locale.dateformatshort`, `$fp_config.locale.timeformat`"}</td>
<td class="main-cell">
{if isset($categories) && in_array('draft',$categories)}
{if in_array('draft',$categories)}
(<em class="entry-flag">{$lang.entry.flags.short.draft}</em>)
{/if}
<a class="link-general"
@ -31,73 +66,33 @@
<td><a class="link-general"
href="{$panel_url|action_link:commentlist}&amp;entry={$id}">
{* Compatibility with pre-0.702 *}
{$commentcount|default:$comments}
<span class="ti-comments"></span></a></td>
{$commentcount|default:$comments}</a></td>
<td>
<a class="link-general"
href="{$id|link:post_link}">
<span class="ti-desktop"></span>
{$panelstrings.act_view}
</a>
<a class="link-general"
href="{$panel_url|action_link:write}&amp;entry={$id}">
<span class="ti-pencil-alt"></span>
{$panelstrings.act_edit}
</a>
<a class="link-delete"
href="{$panel_url|action_link:delete}&amp;entry={$id}">
<span class="ti-trash"></span>
{$panelstrings.act_del}
</a>
</td>
</tr>
{/entry}
</tbody></table>
</div>
{entry_block}
<div class="navigation">
<div class="prevpage">{prevpage admin=yes}</div>
<div class="nextpage">{nextpage admin=yes}</div>
{prevpage admin=yes}
{nextpage admin=yes}
</div>
</br>
{/entry_block}
<div class="entry_filter">
<form method="get" action="{if isset($smarty.request.PHP_SELF)}{$smarty.request.PHP_SELF}{/if}?p=entry">
<p> <input type="hidden" name="p" value="entry" /> </p>
<select name="category" class="alignleft form-control select_filter">
<option label="Unfiltered" value="all">{$panelstrings.nofilter}</option>
{*html_options options=$lang.entry.flags.short selected=$smarty.request.cat*}
{html_options options=$categories_all selected=$smarty.request.category}
</select>
{html_submit name='filter' id='filter' class="alignright btn btn-primary select_filter apply_filter_button" value=$panelstrings.filterbtn}
</fieldset>
</form>
</div>
<a href="admin.php?p=entry&action=write" class="btn btn-primary new_entry_button"><span class="ti-user text-white-100 small"></span> {$panelstrings.add_new_entry}</a>
</div>
</div>
</div>
{draft_block}
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.your_drafts}</h6>
</div>
<div class="card-body">
<div id="admin-drafts">
<ul>
{draft}
<li>
<a href="admin.php?p=entry&amp;entry={$id}&amp;action=write">{$subject|truncate:70}</a>
</li>
{/draft}
</ul>
</div>
</div>
</div>
</div>
{/draft_block}
</div>

View File

@ -1,6 +1,6 @@
<h2>{"Statistics"}</h2>
{include file='shared:admin_errorlist'}
{include file='shared:errorlist.tpl'}
<h3>{"Entries"}</h3>
{"<p>You have <strong>%s</strong>

View File

@ -13,6 +13,9 @@
*
*/
class admin_entry_write extends AdminPanelActionValidated {
var $validators = array(
@ -79,11 +82,12 @@
$this->id = @$_REQUEST['entry'];
$this->smarty->assign('id', $this->id);
global $fp_config;
$this->smarty->assign("lang_locale", $fp_config['locale']['lang']);
}
function main() {
global $lang;
$id = $this->id;

213
admin/panels/entry/admin.entry.write.tpl Normal file → Executable file
View File

@ -1,140 +1,48 @@
{include file='shared:admin_errorlist.tpl'}
<h2>{$panelstrings.head}</h2>
{include file='shared:errorlist.tpl'}
{entry_block}
<div id="admin-post-preview">
{if isset($preview)}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.preview}</h6>
</div>
<div class="card-body">
<fieldset id="post-preview"><legend>{$panelstrings.preview}</legend>
{include file=preview.tpl}
</div>
</div>
</div>
</div>
</fieldset>
{/if}
</div>
{html_form}
{if !isset($post)}
{assign var="post" value=""}
{assign var=post value=""}
{/if}
{entry content=$post alwaysshow=true}
<div class="row">
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<div id="admin-editor">
<input type="text" {if isset($error)}{$error.subject|notempty:'class="field-error form-control input_gray input-max-width"'}{/if}
<p><label for="subject">{$panelstrings.subject}</label><br />
{if isset($error) && isset($error.subject) && !empty($error.subject)}
{assign var=class value="field-error"}
{else}
{assign var=class value=""}
{/if}
<input type="text" class="{$class}"
name="subject" id="subject"
value="{$subject|default:$smarty.request.subject|wp_specialchars:1}" placeholder="{$panelstrings.subject}"/ class="form-control input_gray input-max-width"><br />
value="{$subject|default:$smarty.request.subject|wp_specialchars:1}" /><br />
<input type="hidden" name="timestamp" value="{$date}" />
<input type="hidden" name="entry" value="{$id}" />
<p>
<textarea name="content" class="{if isset($error)}{$error.content|notempty:'field-error'}{/if} form-control"
id="content_textarea" placeholder="{$panelstrings.content}">{$content|default:$smarty.request.content|htmlspecialchars}</textarea><br />
{if isset($sceditor_display) && $sceditor_display != 'disable'}
<script src="{$smarty.const.BLOG_BASEURL}/fp-includes/bootstrap/js/bootstrap.min.js"></script>
<!-- Here is the SCEditor -->
<link rel="stylesheet" type="text/css" href="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/themes/square.min.css">
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/sceditor.min.js"></script>
<!--
{if $sce_display=='bbcode'}
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/bbcode.js"></script>
{else}
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/xhtml.js"></script>
{/if}
-->
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/bbcode.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/fp-interface/lang/{$lang_locale}/sceditor.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressFileManager.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressCustomBBCodes.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressEmojis.js"></script>
<script>
// Replace the textarea #example with SCEditor
var lang_editor = "{$lang_locale}";
var eRoot = "admin/res/sceditor/";
{literal}
var textarea = document.getElementById('content_textarea');
sceditor.create(textarea, {
plugins: 'flatPressFileManager',
toolbar: 'bold,italic,underline,strike,subscript,superscript|left,center,right,justify|font,size,color,removeformat|cut,copy,pastetext|bulletlist,orderedlist,indent,outdent|table|code,quote|horizontalrule,flatPressFileManager,email,link,unlink|emojis,youtube,date,time|ltr,rtl|print,maximize,source',
emoticonsRoot: eRoot,
format: 'bbcode',
height: "400px",
locale: lang_editor
});
</script>
{/literal}
{/if}
{*here will go a plugin hook*}
</p>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4 save_options">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.saveopts}</h6>
</div>
<div class="card-body">
<div class="buttonbar">
{html_submit name="save" id="save" class="btn btn-primary" value=$panelstrings.submit accesskey=s}
{html_submit name="savecontinue" id="savecontinue" class="btn btn-primary" value=Save accesskey=c}
{html_submit name="preview" id="preview" class="btn btn-primary" value=$panelstrings.preview accesskey=p}
</div>
<p>
{foreach from=$saved_flags item=flag}
<label><input name="flags[{$flag}]" {if $categories and (bool)array_intersect(array($flag),$categories) }checked="checked"{/if} type="checkbox" /> {$lang.entry.flags.long[$flag]} </label><br />
{/foreach}
<label for="content">{$panelstrings.content}</label>
</p>
</div>
</div>
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.categories}</h6>
</div>
<div class="card-body categories_panel">
{list_categories type=form selected=$categories}
</div>
</div>
{if isset($draft) && !$draft || isset($entry)}
<div class="card shadow mb-4 other_options">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.otheropts}</h6>
</div>
<p>
<ul>
{if isset($draft) && !$draft}
<li><a href="admin.php?p=entry&amp;entry={$smarty.get.entry}&amp;action=commentlist">
{$panelstrings.commmsg}</a></li>
{/if}
{if isset($entry)}
<li><a href="admin.php?p=entry&amp;entry={$smarty.get.entry}&amp;action=delete">
{$panelstrings.delmsg}</a></li>
{/if}
</ul>
</p>
</div>
{/if}
<div class="card shadow mb-4 plugin_options">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">Plugins Options</h6>
</div>
<div class="m-4">
{toolbar}
<p>
<textarea name="content" class="{$class}"
id="content" rows="20" cols="74">{$content|default:$smarty.request.content|htmlspecialchars}</textarea><br />
{*here will go a plugin hook*}
{action hook=simple_edit_form}
</div>
</div>
</div>
</p>
</div>
<div id="admin-options">
@ -149,6 +57,27 @@
*}
{* end of inline form *}
<fieldset id="admin-entry-categories"><legend>{$panelstrings.categories}</legend>
{list_categories type=form selected=$categories}
</fieldset>
<fieldset id="admin-entry-saveopts"><legend>{$panelstrings.saveopts}</legend>
<p>
{foreach from=$saved_flags item=flag}
<label><input name="flags[{$flag}]" {if $categories and (bool)array_intersect(array($flag),$categories) }checked="checked"{/if} type="checkbox" /> {$lang.entry.flags.long[$flag]} </label><br />
{/foreach}
</p>
</fieldset>
</div>
<div class="buttonbar">
{html_submit name="save" id="save" value=$panelstrings.submit accesskey=s}
{html_submit name="savecontinue" id="savecontinue" value=$panelstrings.savecontinue accesskey=c}
{html_submit name="preview" id="preview" value=$panelstrings.preview accesskey=p}
</div>
@ -156,33 +85,23 @@
{/html_form}
{/entry_block}
<!-- Bootstrap Modal (Open the editor) -->
<div class="modal fade" id="flatpress-files-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">File Manager</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" id="currentDirectory">
<input class="form-control mw-100" id="directoryInput" readonly>
</div>
</div>
<div class="row visualizator">
<div class="p-2 col-6 h-100">
<div class="flatpress-files-modal-box h-100 p-3" id="mediaDirectory"></div>
</div>
<div class="p-2 col-6 h-100">
<div class="flatpress-files-modal-box h-100" id="mediaPreview"></div>
</div>
</div>
</div>
<div class="modal-footer">
<div class="w-100 text-center" id="FilesModalFooter">
</div>
</div>
</div>
</div>
{if isset($smarty.get.entry) }
<div id="admin-otheroptions">
<h2>{$panelstrings.otheropts}</h2>
<ul>
{if !isset($draft)}
<li><a href="admin.php?p=entry&amp;entry={$smarty.get.entry}&amp;action=commentlist">
{$panelstrings.commmsg}</a></li>
{/if}
<li><a href="admin.php?p=entry&amp;entry={$smarty.get.entry}&amp;action=delete">
{$panelstrings.delmsg}</a></li>
</ul>
</div>
{/if}

View File

@ -1,58 +1,46 @@
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
<dl>
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/newentry.png" class="alignleft" alt="{$panelstrings.op1}"
title="{$panelstrings.op1}" />
<a href="admin.php?p=entry&amp;action=write">{$panelstrings.op1}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op1d}</dd>
<div class="row">
<!-- Pie Chart -->
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4 quick_menu">
<!-- Card Header - Dropdown -->
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.quick_menu}</h6>
</div>
<!-- Card Body -->
<div class="card-body">
<p>Wecome back <b>{$username}</b>, {$panelstrings.can_do}</p>
<ul>
<li><a href="admin.php?p=entry&amp;action=write"><span class="ti-pencil-alt"></span> {$panelstrings.op1d}</a></li>
<li><a href="admin.php?p=entry"><span class="ti-layers-alt"></span> {$panelstrings.op2d}</a></li>
<li><a href="admin.php?p=widgets"><span class="ti-move"></span> {$panelstrings.op3d}</a></li>
<li><a href="admin.php?p=plugin"><span class="ti-hummer"></span> {$panelstrings.op4d}</a></li>
<li><a href="admin.php?p=config"><span class="ti-settings"></span> {$panelstrings.op5d}</a></li>
<li><a href="admin.php?p=maintain"><span class="ti-check-box"></span> {$panelstrings.op6d}</a></li>
</ul>
</div>
</div>
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.help}</h6>
</div>
<div class="card-body maintain">
<p>{$panelstrings.useful_links}</p>
<ul>
<li><a href="https://www.flatpress.org"><span class="ti-home"></span> {$panelstrings.fp_home}</a></li>
<li><a href="https://www.flatpress.org/blog.php?x=entry"><span class="ti-layers-alt"></span> {$panelstrings.fp_blog}</a></li>
<li><a href="http://forum.flatpress.org/"><span class="ti-comments"></span> {$panelstrings.fp_forums}</a></li>
<li><a href="http://wiki.flatpress.org/"><span class="ti-help-alt"></span> {$panelstrings.fp_wiki}</a></li>
</ul>
</div>
</div>
</div>
<div class="col-lg-6 mb-4">
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/entries.png" class="alignleft" alt="{$panelstrings.op2}"
title="{$panelstrings.op2}" />
<a href="admin.php?p=entry">{$panelstrings.op2}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op2d}</dd>
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.last_comments}</h6>
</div>
<div class="card-body lc_table">
{if isset($last_comments_table)}
{$last_comments_table}
{else}
<h2 class="text-center font-italic">No comments yet :(</h2>
{/if}
</div>
</div>
</div>
</div>
<div class="row">
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/widgets.png" class="alignleft" alt="{$panelstrings.op3}"
title="{$panelstrings.op3}" />
<a href="admin.php?p=widgets">{$panelstrings.op3}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op3d}</dd>
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/plugins.png" class="alignleft" alt="{$panelstrings.op4}"
title="{$panelstrings.op4}" />
<a href="admin.php?p=plugin">{$panelstrings.op4}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op4d}</dd>
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/config.png" class="alignleft" alt="{$panelstrings.op5}"
title="{$panelstrings.op5}" />
<a href="admin.php?p=config">{$panelstrings.op5}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op5d}</dd>
</div>
<dt class="admin-mainmenu-item">
<img src="{$smarty.const.ADMIN_DIR}imgs/maintain.png" class="alignleft" alt="{$panelstrings.op6}"
title="{$panelstrings.op6}" />
<a href="admin.php?p=maintain">{$panelstrings.op6}</a>
</dt>
<dd class="admin-icon-descr">{$panelstrings.op6d}</dd>
</dl>

View File

@ -1,12 +1,5 @@
<div class="maintain">
<div class="row">
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
{include file=shared:admin_errorlist.tpl}
<h2>{$panelstrings.head}</h2>
{include file=shared:errorlist.tpl}
{if isset($files)}
<p>{$panelstrings.chmod_info}</p>
<p><a href="admin.php?p=maintain">{$panelstrings.opt0}</a></p>
@ -23,31 +16,10 @@
{else}
<p>{$panelstrings.descr}</p>
<ul>
<li><a href="{$action_url|cmd_link:do:rebuild}"><span class="ti-reload"></span> {$panelstrings.opt1}</a></li>
<li><a href="{$action_url|cmd_link:do:purgetplcache}"><span class="ti-paint-bucket"></span> {$panelstrings.opt2}</a></li>
<li><a href="{$action_url|cmd_link:do:restorechmods}"><span class="ti-lock"></span> {$panelstrings.opt3}</a></li>
<li><a href="{$action_url|cmd_link:do:phpinfo}"><span class="ti-info-alt"></span> {$panelstrings.opt4}</a></li>
<li><a href="{$panel_url|action_link:updates}"><span class="ti-package"></span> {$panelstrings.opt5}</a></li>
<li><a href="{$action_url|cmd_link:do:rebuild}">{$panelstrings.opt1}</a></li>
<li><a href="{$action_url|cmd_link:do:purgetplcache}">{$panelstrings.opt2}</a></li>
<li><a href="{$action_url|cmd_link:do:restorechmods}">{$panelstrings.opt3}</a></li>
<li><a href="{$action_url|cmd_link:do:phpinfo}">{$panelstrings.opt4}</a></li>
<li><a href="{$panel_url|action_link:updates}">{$panelstrings.opt5}</a></li>
</ul>
{/if}
</div>
</div>
</div>
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.help}</h6>
</div>
<div class="card-body">
<p>{$panelstrings.useful_links}</p>
<ul>
<li><a href="https://www.flatpress.org/" target="_blank"><span class="ti-home"></span> {$panelstrings.fp_home}</a></li>
<li><a href="https://www.flatpress.org/blog.php?x=entry" target="_blank"><span class="ti-layers-alt"></span> {$panelstrings.fp_blog}</a></li>
<li><a href="http://forum.flatpress.org/" target="_blank"><span class="ti-comments"></span> {$panelstrings.fp_forums}</a></li>
<li><a href="http://wiki.flatpress.org/" target="_blank"><span class="ti-help-alt"></span> {$panelstrings.fp_wiki}</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,30 +1,7 @@
{include file=shared:admin_errorlist.tpl}
<div class="row">
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<h2>{$panelstrings.head}</h2>
{include file=shared:errorlist.tpl}
{$panelstrings.list|sprintf:$smarty.const.SYSTEM_VER:$sfweb:$stableversion:$fpweb:$unstableversion}
</div>
</div>
</div>
{if $notice}
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.notice}</h6>
</div>
<div class="card-body">
{if isset($panelstrings) && isset($panelstrings.notice)}
<h5>{$panelstrings.notice}</h5>
<p>{$notice}</p>
{else}
<p>{$panelstrings.no_news}</p>
{/if}
</div>
</div>
</div>
{/if}
</div>

View File

@ -1,15 +1,13 @@
{include file='shared:admin_errorlist.tpl'}
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{include file='shared:errorlist.tpl'}
{html_form}
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<div class="table-responsive table-striped">
<table id="plugin-table" class="table">
<table id="plugin-table">
<thead id="plugin-table-head">
<tr>
<th>{$panelstrings.name}</th>
@ -44,8 +42,5 @@
{/foreach}
</tbody>
</table>
</div>
</div>
</div>
</div>
{/html_form}

View File

@ -1,25 +1,18 @@
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{statics}
<fieldset><legend>{$panelstrings.preview}</legend>
{include file=previewstatic.tpl}
</fieldset>
{/statics}
</br>
<p class="delete_confirm">{$panelstrings.confirm}</p>
<p>{$panelstrings.confirm}</p>
{html_form}
<input type="hidden" name="page" value="{$pageid}" />
<div class="buttonbar">
{html_submit name="delete" id="delete" class="btn btn-primary" value=$panelstrings.ok}
{html_submit name="cancel" id="cancel" class="btn btn-secondary" value=$panelstrings.cancel}
{html_submit name="delete" id="delete" value=$panelstrings.ok}
{html_submit name="cancel" id="cancel" value=$panelstrings.cancel}
</div>
{/html_form}
</div>
</div>
</div>
</div>

View File

@ -1,15 +1,15 @@
{include file='shared:admin_errorlist.tpl'}
<h2>{$panelstrings.head}</h2>
{include file='shared:errorlist.tpl'}
<p>{$panelstrings.descr}</p>
{static_block}
{html_form}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<div class="table-responsive table-striped">
<table class="entrylist table">
<table class="entrylist">
<thead><tr>{*<th>{$panelstrings.sel}</th>*}
<th>{$panelstrings.name}</th>
<th class="main-cell">{$panelstrings.title}</th>
@ -30,18 +30,15 @@
<td>
<a class="link-general"
href="{$id|link:page_link}">
<span class="ti-desktop"></span>
{$panelstrings.act_view}
</a>
<a
class="link-general"
href="{$panel_url|action_link:write}&amp;page={$id}">
<span class="ti-pencil-alt"></span>
{$panelstrings.act_edit}
</a>
<a class="link-delete"
href="{$panel_url|action_link:delete}&amp;page={$id}">
<span class="ti-trash"></span>
{$panelstrings.act_del}
</a>
</td>
@ -50,11 +47,6 @@
{/static}
</tbody></table>
</div>
</div>
</div>
</div>
</div>
{/html_form}
{/static_block}

View File

@ -63,9 +63,6 @@
$this->smarty->assign('static_id', 'static'.date_time());
global $fp_config;
$this->smarty->assign("lang_locale", $fp_config['locale']['lang']);
if (isset($_GET['page'])) {
$id = $_GET['page'];
$arr = static_parse($id);

165
admin/panels/static/admin.static.write.tpl Normal file → Executable file
View File

@ -1,134 +1,71 @@
{include file='shared:admin_errorlist.tpl'}
<h2>{$panelstrings.head}</h2>
{include file='shared:errorlist.tpl'}
{static_block}
{if isset($preview)}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.preview}</h6>
</div>
<div class="card-body">
<fieldset id="post-preview"><legend>{$panelstrings.preview}</legend>
{include file=preview.tpl}
</div>
</div>
</div>
</div>
</fieldset>
{/if}
<div class="row">
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
{html_form}
{if !isset($post)}
{assign var="post" value=""}
{assign var=post value=""}
{/if}
{static content=$post alwaysshow=true}
<input type="text" name="subject" id="subject" class="form-control input_gray input-max-width" placeholder="{$panelstrings.subject}" {if isset($error)}{$error.subject|notempty:'class="field-error"'}{/if}
value="{$subject|default:$smarty.request.subject|default:$smarty.request.page|wp_specialchars:1}" />
<input type="hidden" name="timestamp" value="{$date}" />
<p>
<label for="content"></label>
<textarea name="content" {if isset($error)}{$error.content|notempty:'class="field-error"'}{/if} id="content_textarea" placeholder="{$panelstrings.content}" class="form-control">{$content|default:$smarty.request.content|htmlspecialchars}</textarea><br />
{if $sceditor_display != 'disable'}
<script src="{$smarty.const.BLOG_BASEURL}/fp-includes/bootstrap/js/bootstrap.min.js"></script>
<!-- Here is the SCEditor -->
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/sceditor.min.js"></script>
<!--
{if $sce_display=='bbcode'}
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/bbcode.js"></script>
<p><label for="subject">{$panelstrings.subject}</label><br />
{if isset($error) && isset($error.subject) && !empty($error.subject)}
{assign var=class value=" field-error"}
{else}
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/xhtml.js"></script>
{assign var=class value=""}
{/if}
-->
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/formats/bbcode.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/fp-interface/lang/{$lang_locale}/sceditor.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressFileManager.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressCustomBBCodes.js"></script>
<script src="{$smarty.const.BLOG_BASEURL}/admin/res/sceditor/plugins/flatPressEmojis.js"></script>
<script>
// Replace the textarea #example with SCEditor
var lang_editor = "{$lang_locale}";
var eRoot = "admin/res/sceditor/";
var FileManagerDir = "{$smarty.const.BLOG_BASEURL}/fp-plugins/sceditorfilemanager";
{literal}
var textarea = document.getElementById('content_textarea');
sceditor.create(textarea, {
plugins: 'flatPressFileManager',
toolbar: 'bold,italic,underline,strike,subscript,superscript|left,center,right,justify|font,size,color,removeformat|cut,copy,pastetext|bulletlist,orderedlist,indent,outdent|table|code,quote|horizontalrule,flatPressFileManager,email,link,unlink|emojis,youtube,date,time|ltr,rtl|print,maximize,source',
emoticonsRoot: eRoot,
format: 'bbcode',
height: "400px",
locale: lang_editor
});
</script>
{/literal}
<input type="text" name="subject" id="subject" class="{$class}"
value="{$subject|default:$smarty.request.subject|default:$smarty.request.page|wp_specialchars:1}" /><br />
<input type="hidden" name="timestamp" value="{$date}" />
</p>
<p>
<label for="content">{$panelstrings.content}</label>
</p>
{toolbar}
<p>
{if isset($error) && isset($error.content) && !empty($error.content)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<textarea name="content" class="{$class}" id="content"
rows="20" cols="74">{$content|default:$smarty.request.content|htmlspecialchars}</textarea><br />
{*here will go a plugin hook*}
</p>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.pagename}</h6>
</div>
<div class="card-body">
<input type="hidden" name="oldid" id="oldid" class="form-control input_gray" value="{$id|default:$smarty.request.oldid}" />
<input type="text" name="id" id="id" class="maxsize{if isset($error)}{$error.id|notempty:' field-error'}{/if} form-control input_gray "
<fieldset id="admin-static-filename"><legend>{$panelstrings.fieldset2}</legend>
<input type="hidden" name="oldid" id="oldid" value="{$id|default:$smarty.request.oldid}" />
<p><label for="id">{$panelstrings.pagename}</label><br />
{if isset($error) && isset($error.id) && !empty($error.id)}
{assign var=class value=" field-error"}
{else}
{assign var=class value=""}
{/if}
<input type="text" name="id" id="id" class="maxsize{$class}"
value="{$smarty.request.id|default:$smarty.request.page|default:$static_id}" /></p>
{html_submit name="save" id="save" class="btn btn-primary" value=$panelstrings.submit accesskey=s}
{html_submit name="preview" id="preview" class="btn btn-primary" value=$panelstrings.preview accesskey=p}
{html_submit name="save" id="save" value=$panelstrings.submit accesskey=s}
{html_submit name="preview" id="preview" value=$panelstrings.preview accesskey=p}
</fieldset>
</div>
</div>
<div class="card shadow mb-4 plugin_options">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">Plugins Options</h6>
</div>
<div class="m-4">
{toolbar}
<!-- {action hook=simple_edit_form} (Only writting an entry) -->
</div>
</div>
</div>
</div>
</div>
{/static}
{/html_form}
{/static_block}
<!-- Bootstrap Modal (Open the editor) -->
<div class="modal fade" id="flatpress-files-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">File Manager</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" id="currentDirectory">
<input class="form-control mw-100" id="directoryInput" readonly>
</div>
</div>
<div class="row visualizator">
<div class="p-2 col-6 h-100">
<div class="flatpress-files-modal-box h-100 p-3" id="mediaDirectory"></div>
</div>
<div class="p-2 col-6 h-100">
<div class="flatpress-files-modal-box h-100" id="mediaPreview"></div>
</div>
</div>
</div>
<div class="modal-footer">
<div class="w-100 text-center" id="FilesModalFooter">
</div>
</div>
</div>
</div>
</div>

View File

@ -1,48 +1,23 @@
{include file=shared:admin_errorlist.tpl}
{include file=shared:errorlist.tpl}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head1}</h6>
</div>
<div class="card-body">
<div id="current-theme">
<img src="{$current_style.preview}" class="current-theme-img" alt="{$current_style.name}" />
<div class="current-theme-description">
<h3>{$current_style.title} &#8212; {$current_style.author|default:$panelstrings.noauthor}</h3>
<h2>{$panelstrings.head1}</h2>
<img src="{$current_style.preview}" alt="{$current_style.name}" />
<h5>{$current_style.title} &#8212; {$current_style.author|default:$panelstrings.noauthor}</h5>
{$current_style.description|default:$panelstrings.nodescr}
</div>
</div>
</div>
</div>
</div>
</div>
{if $available_styles}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header all_radius text-center red_background">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head2}</h6>
</div>
</div>
</div>
</div>
<div id="available-themes">
<div class="row">
{foreach from=$available_styles item=thm}
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary text-center"><a href="{$action_url|cmd_link:select:$thm.id}">{$thm.title}</a></h6>
</div>
<div class="card-body">
<h2>{$panelstrings.head2}</h2>
<p>{$panelstrings.descr}</p>
{if $available_styles}
<ul >
{foreach from=$available_styles item=thm}
<li>
<h5><a href="{$action_url|cmd_link:select:$thm.id}">{$thm.title}</a></h5>
<a href="{$action_url|cmd_link:select:$thm.id}"><img src="{$thm.preview}" alt="{$thm.name}" /></a>
@ -50,12 +25,8 @@
<p>{$thm.description|default:$panelstrings.nodescr}</p>
</li>
</ul>
</div>
</div>
</div>
{/foreach}
</div>
</ul>
{/if}

View File

@ -1,59 +1,36 @@
{include file=shared:admin_errorlist.tpl}
{include file=shared:errorlist.tpl}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head1}</h6>
</div>
<div class="card-body">
<div id="current-theme">
<img src="{$current_theme.preview}" alt="{$current_theme.name}" class="current-theme-img"/>
<div class="current-theme-description">
<h3>
<h2>{$panelstrings.head1}</h2>
<img src="{$current_theme.preview}" alt="{$current_theme.name}" />
<h5>
{$current_theme.title} &#8212; {$current_theme.author|default:$panelstrings.noauthor}
</h3>
</h5>
{$current_theme.description|default:$panelstrings.nodescr}
</div>
</div>
</div>
</div>
</div>
</div>
</div> <!-- end of #current-theme -->
{if $available_themes}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header all_radius text-center red_background">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head2}</h6>
</div>
</div>
</div>
</div>
<div id="available-themes">
<div class="row">
{foreach from=$available_themes item=thm}
<div class="col-lg-6 mb-4">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary text-center"><a href="{$action_url|cmd_link:select:$thm.id}">{$thm.title}</a></h6>
</div>
<div class="card-body">
<ul>
<li>
<a href="{$action_url|cmd_link:select:$thm.id}"><img src="{$thm.preview}" alt="{$thm.name}" /></a>
<p>{$thm.description|default:$panelstrings.nodescr}</p>
</li>
</ul>
</div>
</div>
</div>
{/foreach}
</div>
</div>
<h2>{$panelstrings.head2}</h2>
<p>{$panelstrings.descr}</p>
<ul>
{foreach from=$available_themes item=thm}
<li>
<h5><a href="{$action_url|cmd_link:select:$thm.id}">{$thm.title}</a></h5>
<a href="{$action_url|cmd_link:select:$thm.id}"><img src="{$thm.preview}" alt="{$thm.name}" /></a>
<p>{$thm.description|default:$panelstrings.nodescr}</p>
</li>
{/foreach}
</ul>
</div> <!-- end of #available-themes -->
{/if}

View File

@ -139,6 +139,7 @@
}
return 1;
}
}

View File

@ -1,7 +1,7 @@
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{include file='shared:admin_errorlist.tpl'}
{include file='shared:errorlist.tpl'}

78
admin/panels/uploader/admin.uploader.tpl Normal file → Executable file
View File

@ -1,12 +1,11 @@
{include file='shared:admin_errorlist.tpl'}
{if !isset($smarty.request.mod) || $smarty.request.mod != 'inline'}
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{/if}
{include file='shared:errorlist.tpl'}
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.fset1}</h6>
</div>
<div class="card-body">
{if $success}
<ul id="admin-uploader-filelist">
{foreach from=$uploaded_files item=file}
@ -22,49 +21,26 @@
{/if}
{html_form enctype='multipart/form-data'}
<div class="row">
<div class="col-lg-6 mb-4">
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile2">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
</div>
<div class="col-lg-6 mb-4">
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
<div class="mb-3">
<input class="form-control mw-100" type="file" id="formFile1">
</div>
</div>
<div class="buttonbar upload-buttom">
{html_submit name="upload" id="upload" class="btn btn-primary" value=$panelstrings.submit}
</div>
</div>
</div>
</div>
</div>
{if !isset($smarty.request.mod) || $smarty.request.mod != 'inline'}
<fieldset><legend>{$panelstrings.fset1}</legend>
{/if}
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
{if !isset($smarty.request.mod) || $smarty.request.mod != 'inline'}
</fieldset>
{/if}
<div class="buttonbar">
{html_submit name="upload" id="upload" value=$panelstrings.submit}
</div>
{/html_form}
{literal}
<script>
/* This event to change name to namesfiles */
startUploadEvent();
</script>
{/literal}

93
admin/panels/widgets/admin.widgets.default.tpl Normal file → Executable file
View File

@ -1,35 +1,18 @@
{include file='shared:admin_errorlist.tpl'}
<!-- Jquery and Jqueryui (For widgets) -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<div class="row">
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.head}</h6>
</div>
<div class="card-body">
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
</div>
</div>
</div>
</div>
{include file='shared:errorlist.tpl'}
{html_form id="admin-widgets-default"}
<div class="row">
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.availwdgs}</h6>
</div>
<div class="card-body">
<div id="widget-trashcan">
<span class="ti-trash"></span> {$panelstrings.trashcan}
</div>
<div id="available-widgets">
<h2>{$panelstrings.availwdgs}</h2>
<div id="widget-trashcan">
{$panelstrings.trashcan}
</div>
<ul>
{foreach from=$fp_registered_widgets key=widgetid item=widget}
<li class="widget-class widget-id-{$widgetid}">
@ -39,35 +22,24 @@
{* class is for javascript: this input will be converted into a type="text" :) *}
<input class="textinput" style="float:right" type="hidden" />
{/if}
<p><span class="ti-move"></span> {$widget.name}</p>
<p>{$widget.name}</p>
</li>
{/foreach}
</ul>
<div class="buttonbar text-center">
<input type="submit" name="save" class="btn btn-primary" value="{$panelstrings.submit}" />
<div class="buttonbar">
<input type="submit" name="save" value="{$panelstrings.submit}" />
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="m-0 font-weight-bold text-primary">{$panelstrings.themewdgs}</h6>
</div>
<div class="card-body widgetset_theme">
{$panelstrings.themewdgsdescr}
<div id="admin-widgetset-list">
</br>
<h2>{$panelstrings.themewdgs}</h2>
<p>{$panelstrings.themewdgsdescr}</p>
<ul>
{assign var=counter value=0}
{foreach from=$widgetlist key=widgetset item=widgetarr}
{if ($counter%2)==0}
<div class="row justify-content-center">
{/if}
<div class="col-xl-5 col-lg-5">
<li class="admin-widgetset">
<h3 class="widgetset-name">
{$panelstrings.stdsets[$widgetset]|default:$widgetset}
@ -85,7 +57,7 @@
{else}
{assign var=widgetparams value=""}
{/if}
<li class="widget-instance widget-id-{$widget.id} {if isset($widget.class)}{$widget.class}{/if}">
<li class="widget-instance widget-id-{$widget.id} {$widgetclass}">
<input class="widget-id" type="hidden" name="widgets[{$widgetset}][]"
value="{$widget.id}{$widgetparams}" />
{if !empty($widgetparams)}
@ -93,18 +65,13 @@
<input class="textinput" style="float:right"
type="text" value="{$widgetparams}"/>
{/if}
<p> <span class="ti-move"></span> {$widget.name} </p>
<p> {$widget.name} </p>
</li>
{foreachelse}
<li class="widget-placeholder"><span class="ti-layers"></span> Drop here </li>
<li class="widget-placeholder"> Drop here </li>
{/foreach}
</ul>
</li>
</div>
{if ($counter%2)!=0}
</div>
{/if}
{assign var=counter value=$counter+1}
{/foreach}
@ -126,8 +93,8 @@
{foreach from=$widgetarr item=widget}
<li class="widget-instance widget-id-{$widget.id}">
<input class="widget-id" type="hidden" name="widgets[{$widgetset}][]"
value="{$widget.id}{if isset($widget.params)}:{$widget.params}{/if}" />
{if isset($widget.params)}
value="{$widget.id}{if $widget.params}:{$widget.params}{/if}" />
{if $widget.params}
{* this will be hooked from javascript *}
<input class="textinput" style="float:right"
type="text" value="{$widget.params}"/>
@ -145,13 +112,9 @@
{/if}
</div>
<div class="buttonbar text-center">
{html_submit name="save" id="save" class="btn btn-primary" value=$panelstrings.submit}
</div>
</div>
</div>
</div>
</div>
{/html_form}
<script src="{$smarty.const.BLOG_BASEURL}admin/panels/widgets/admin.widgets.js"></script>
<div class="buttonbar">
{html_submit name="save" id="save" value=$panelstrings.submit}
</div>
{/html_form}

View File

@ -1,7 +1,7 @@
<h2>{$panelstrings.head}</h2>
<p>{$panelstrings.descr}</p>
{include file='shared:admin_errorlist.tpl'}
{include file='shared:errorlist.tpl'}
{html_form}

View File

@ -1,774 +1,197 @@
html {
height: 100%;
}
body {
height: 100%;
font-family: 'Nunito', sans-serif;
background-color: #f2f2f2;
}
.left-sidebar {
background-color: #fff !important;
}
.left-sidebar a {
color: #212529 !important;
}
.master-row {
height: 100%;
margin-left: 14rem !important;
padding-right: 15px;
}
.top-row {
width: 100%;
color: #fff;
align-items: center;
height: 56px;
}
.top-row h3 {
margin: 0px;
font-size: 1.5rem;
}
.top-right-bar {
text-align: right;
}
.top-right-bar .nav-link {
padding: 0px;
padding-left: 1.5rem;
font-size: 1.25rem;
}
.top-right-bar a {
color: #fff !important;
}
.top-right-bar .nav-item, .top-right-bar .navbar-nav, .top-right-bar .nav-link {
display: inline;
}
.top-right-bar .nav-item {
float: right;
}
.feather {
width: 16px;
height: 16px;
vertical-align: text-bottom;
}
/*
* Sidebar
compatibility for old themes, soon
this hackish and ugly css will be
DROPPED
*/
.sidebar {
position: fixed;
top: 0;
bottom: 0;
left: 0;
z-index: 300; /* Behind the navbar */
padding: 0; /* Height of navbar */
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
width: 14rem !important;
}
.sidebar-sticky {
position: relative;
top: 0;
height: calc(100vh - 48px);
padding-top: .5rem;
overflow-x: hidden;
overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
font-size: 0.9rem;
}
@supports ((position: -webkit-sticky) or (position: sticky)) {
.sidebar-sticky {
position: -webkit-sticky;
position: sticky;
}
}
.sidebar .nav-link {
font-weight: 500;
color: #333;
padding: 0.8rem;
}
.sidebar .nav-link .feather {
margin-right: 4px;
color: #999;
}
.sidebar .nav-link.active {
border-left: 5px solid #aa4142;
background-color: #f9f9f9;
}
.sidebar .nav-link:hover .feather,
.sidebar .nav-link.active .feather {
color: inherit;
}
.sidebar-heading {
font-size: .75rem;
text-transform: uppercase;
}
/*
* Content
*/
[role="main"] {
padding-top: 133px; /* Space for fixed navbar */
}
@media (min-width: 768px) {
[role="main"] {
padding-top: 0px; /* Space for fixed navbar */
margin-top: -7.5rem !important;
}
}
/*
* Navbar
*/
.navbar-brand {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: 1rem;
background-color: rgba(0, 0, 0, .25);
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
}
.navbar .form-control {
padding: .75rem 1rem;
border-width: 0;
border-radius: 0;
}
.admin-logo {
height: 56px;
text-align: center;
}
.admin-logo img {
height: 75%;
width: auto;
margin-top:5px
}
.admin-logo-border {
height: 1px;
background-color: #eee;
margin: 0 1.5rem;
}
.submenu {
margin-left: 0rem;
border-left: 5px solid #aa4142;
background-color:#f9f9f9;
}
.submenu li {
margin-left: 0rem;
}
.submenu .nav-link {
padding-left: 3rem;
}
.sub-active {
background-color: #d9d9d9;
}
.form-control-dark {
color: #fff;
background-color: rgba(255, 255, 255, .1);
border-color: rgba(255, 255, 255, .1);
}
.form-control-dark:focus {
border-color: transparent;
box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
}
.top-nav {
padding: 0px;
}
.top-background {
width: 100%;
padding-bottom: 9rem !important;
padding-top: 57px;
}
.top-color {
background-color: #aa4142;
}
.bg-gradient-primary {
background: -moz-linear-gradient(45deg,rgba(184,60,50,1) 0%,rgba(254,80,68,1) 99%,rgba(255,81,69,1) 100%);
background: -webkit-gradient(linear,left bottom,right top,color-stop(0%,rgba(184,60,50,1)),color-stop(99%,rgba(254,80,68,1)),color-stop(100%,rgba(255,81,69,1)));
background: -webkit-linear-gradient(45deg,rgba(184,60,50,1) 0%,rgba(254,80,68,1) 99%,rgba(255,81,69,1) 100%);
background: -o-linear-gradient(45deg,rgba(184,60,50,1) 0%,rgba(254,80,68,1) 99%,rgba(255,81,69,1) 100%);
background: -ms-linear-gradient(45deg,rgba(184,60,50,1) 0%,rgba(254,80,68,1) 99%,rgba(255,81,69,1) 100%);
background: linear-gradient(45deg,rgba(184,60,50,1) 0%,rgba(254,80,68,1) 99%,rgba(255,81,69,1) 100%);
background-color: rgba(0, 0, 0, 0);
background-size: auto;
background-color:rgba(0,0,0,0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5145',endColorstr='#b83c32',GradientType=1);
background-size: cover;
}
.text-primary {
color: #aa4142 !important;
}
a {
color: #aa4142 !important;
}
a:hover {
text-decoration: none !important;
}
.quick_menu ul, .maintain ul {
list-style: none;
}
.sidebar-sticky span {
color: #aa4142;
}
#footer {
text-align: center;
margin-left: 14rem;
margin-right: 15px;
font-size: 0.8rem;
opacity: 0.6;
}
.sceditor-container {
width: 100% !important;
}
.sceditor-container textarea {
max-width: 100% !important;
}
.card-header .text-primary {
color: #212529 !important;
font-weight: bold;
padding: 0.2rem;
}
.shadow {
box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important;
}
.form-control::placeholder {
color: #bdbdbd;
}
.form-control {
margin-bottom: 1rem;
background-color: #fbfbfb;
}
.new_entry_buttons {
text-align: center;
}
.btn {
box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important;
padding-left: 1rem;
padding-right: 1rem;
}
.btn-primary {
background-color: #aa4142;
border: 1px solid #933233;
color: #fff !important;
}
.btn-secondary {
color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
background-color: #802627 !important;
border: 1px solid #933233 !important;
}
.buttonbar {
margin-bottom: 0.5rem;
}
ul {
list-style: square;
}
.sidebar .nav-link:hover {
background-color: #f9f9f9;
}
.sidebar .nav-link.active:hover {
padding-left: 0.8rem !important;
}
.sidebar .nav-link.sub-active:hover {
padding-left: 3rem !important;
background-color: #d9d9d9;
}
.navbar.navbar-dark.flex-md-nowrap.top-nav.top-color {
position: fixed;
z-index: 200;
width: 100%;
border-bottom: 1px solid #8a2a2b;
}
.select_filter {
width: auto;
float: left;
margin-right: 0.5rem;
}
input, textarea, select {
max-width: 300px;
}
.upload-buttom {
padding-left: 15px;
}
.cat-textarea {
max-width: 100%;
}
.input-max-width {
max-width: 100% !important;
}
#widget-trashcan {
text-align: center;
padding: 1rem;
background-color: #aa4142;
border: 1px solid #933233;
border-radius: 4px;
color:#fff;
font-weight: bold;
margin: 0 3rem;
margin-bottom: 0px;
margin-bottom: 1rem;
}
#available-widgets ul {
list-style: none;
padding: 0px;
text-align: center;
}
#available-widgets ul li, .admin-widgetset li {
background-color: rgba(0, 0, 0, 0.05);
margin: 0.5rem 5rem;
padding: 0.5rem;
border-radius: 4px;
border: 1px solid #dbdbdb;
}
#available-widgets p {
margin-bottom: 0px;
}
#errorlist ul {
list-style: none;
}
.msgs.warnings {
padding: 0px;
}
.table {
border-left: 1px solid #dee2e6;
border-right: 1px solid #dee2e6;
border-bottom: 1px solid #dee2e6;
}
.table thead {
background-color: #aa4142;
color: #fff;
}
.red_background {
background-color: #212529;
}
.red_background .text-primary {
color: #fff !important;
}
.card-header a {
color: #212529 !important;
}
#admin-widgetset-list ul {
list-style: none;
padding: 0px;
text-align: center;
}
#admin-content .card-body a {
text-decoration: none;
}
#admin-content .card-body a:hover {
text-decoration: underline !important;
}
.admin-widgetset p {
margin-bottom: 0px;
}
.widgetset_theme {
text-align: center;
}
.admin-widgetset {
background-color: rgba(106, 106, 106, 0.05);
width: 100%;
padding: 0.5rem 0;
margin-bottom: 2rem;
border: 1px solid #e8e8e8;
border-radius: 4px;
}
.current-theme-img {
float: left;
}
.current-theme-description {
float: left;
margin-left: 2rem;
margin-top: 1rem;
}
.current-theme-description h3 {
font-weight: bold;
}
#available-themes {
text-align: center;
}
#available-themes ul {
list-style: none;
padding: 0px;
}
#available-themes p {
margin-top: 0.5rem;
}
#available-themes h5 {
display: none;
}
.mobile-menu {
display: none;
}
@media only screen and (max-width: 1100px) {
.top-row h3 {
font-size: 1.2rem !important;
}
.top-right-bar .nav-link {
font-size: 1.1rem !important;
}
.top-row .col-lg-6 {
width: 60%;
}
.top-right-bar {
text-align: right;
width: 40% !important;
}
.top-row .top_menu_item {
display: none;
}
}
@media only screen and (max-width:768px) {
.master-row {
margin-left: 0px !important;
}
[role="main"] {
#admin-tabmenu {
text-align: left;
padding-right: 0px;
padding-left: 0px;
z-index: 1;
padding-bottom: 0px;
margin: 12px 0px 0px;
padding-top: 0px;
margin-top: -7.5rem;
border-bottom: black 2px solid;
font-size: 80%;
_font-size: 90%;
font-weight: normal;
}
#footer {
margin-left: 0px;
}
.top-row .col-lg-6 h3 {
display: none;
}
.mobile-menu {
display: block;
}
.top-row .col-lg-6 {
width: 20%;
}
.top-right-bar {
width: 80% !important;
}
#sidebar {
position: absolute;
z-index: 1000;
width: 100% !important;
height: 100%;
display: none;
}
.submenu .nav-link {
padding-left: 0rem;
}
.sidebar .nav-link {
text-align: center;
}
.sidebar-sticky {
height: auto;
}
.submenu {
border: 1px solid #ccc;
border-bottom: 1px solid #ececec;
}
.sidebar .nav-link.active {
border-top: 1px solid #ececec;
border-bottom: 1px solid #ececec;
}
.sidebar .nav-link:hover {
padding-left: 0.8rem !important;
background-color: #fff;
}
#available-widgets ul li, .admin-widgetset li {
margin: 0.5rem 0.5rem;
}
#close-button {
display: block !important;
}
}
#close-button {
display: none;
}
#close-button span {
color: #fff;
}
.display_off {
display: none !important;
}
.display_on {
display: block !important;
}
.btn {
margin-bottom: 0.5rem;
}
img {
max-width: 100%;
height: auto;
}
.paginator-left {
float: left;
padding-top: 0.2rem;
}
.paginator-right {
float: right;
}
.widget-placeholder {
background-color:#212529 !important;
border: 1px solid#000 !important;
color: #fff !important;
}
.login {
display: flex;
align-items: center;
}
.msgs.errors {
padding-left: 0px;
}
#content_textarea {
max-width: 100%;
height: 250px;
}
.lc_table ul {
padding-left: 0px;
list-style: none;
margin-bottom: 0px;
}
.lc_table li {
#admin-tabmenu li {
display: inline;
overflow: hidden;
width: 100%;
border-bottom: 1px solid #dee2e6;
border-right: 1px solid #dee2e6;
list-style-type: none;
padding-left: -10px
}
.lc_table li:nth-of-type(2n+1) {
background-color: rgba(0,0,0,.05);
}
.top-lc-table {
border-top: 1px solid #dee2e6;
background-color: #aa4142;
font-weight: lighter;
font-style: italic;
overflow:hidden;
width: 100%;
}
.comment-quote {
margin: 0rem;
}
.no_comments {
text-align: center;
}
.top-lc-table p {
color: #fff;
}
.lc_table p {
width: 50%;
float: left;
text-align: center;
border-left: 1px solid #dee2e6;
margin-bottom: 0px;
border-top: 0px;
padding: .75rem;
}
.sceditor-container iframe, .sceditor-container textarea {
margin: 0px !important;
background: #fbfbfb !important;
}
.sceditor-button.flatpress-media {
background-image: url('icons/drive_disk.png');
background-color: #aa4142;
background-position: center;
background-repeat: no-repeat;
}
.sceditor-button.flatpress-media:hover {
background-image: url('icons/drive_disk.png');
background-position: center;
background-repeat: no-repeat;
}
.sceditor-button-flatPressFileManager div {
background-position: 0px -416px !important;
}
.sceditor-container textarea {
color: #111 !important;
}
#sceditor-Emojis {
text-align: center;
}
#sceditor-Emojis a {
margin: 0.2rem;
cursor: pointer;
display: inline-block;
}
.sceditor-button-emojis div {
background-position: 0px -480px !important;
}
/* Modal to upload files */
#flatpress-files-modal .modal-header {
background-color: #aa4142;
color: #fff;
}
.flatpress-files-modal-box {
background-color: #e9ecef;
border: 1px solid #ced4da;
border-radius: .25rem;
margin-right: 15px;
margin-left: 15px;
overflow: auto;
scrollbar-width: thin;
}
#mediaDirectory ul {
list-style: none;
#admin-tabmenu a {
border-right: black 2px solid;
padding-right: 5px;
border-top: black 2px solid;
padding-left: 5px;
background: #f9f9f9;
padding-bottom: 0px;
margin: 0px;
padding: 0px;
border-left: black 2px solid;
padding-top: 2px;
border-bottom: black 2px solid;
text-decoration: none
}
#mediaDirectory li {
background-position-x: left;
background-position-y: center;
background-repeat: no-repeat;
cursor: pointer;
#cpmain ul, #main li{
list-style-type:none;
}
#mediaDirectory li img {
margin-right: 0.3rem;
margin-bottom: 0.1rem;
#cpmain ul li:before {
content: none;
}
#flatpress-files-modal .visualizator {
height: 300px;
#admin-tabmenu a#admin-tab-current {
background: #f9f9f9;
color: black;
border-bottom: #f9f9f9 3px solid;
}
.managerTypeFile {
width: 16px;
height: 16px;
.admin-mainmenu-item {
clear:both;
display:block;
padding:1em;
}
.login {
max-width: 400px;
#admin-content {
border-right: black 2px solid;
padding-right: 20px;
border-top: black 2px;
padding-left: 20px;
z-index: 2;
padding-bottom: 20px;
border-left: black 2px solid;
padding-top: 20px;
border-bottom: black 2px solid;
_font-size: 1em;
}
#admin-content table {
border-collapse: collapse;
width: 100%;
_width: 470px;
_font-size:100%;
}
#admin-content td {
border-bottom: solid 1px black;
width: 8px;
font-size: 0.8em;
_font-size:1em;
padding: 4px;
}
#admin-content td.main_cell {
text-align: left;
font-weight: bold;
width: 20%;
}
#admin-content th {
border-bottom: solid 2px black;
padding: 4px;
font-size: 0.75em;
_font-size: 100%;
font-style: italic;
}
#subject {
font-size: 18px;
font-weight: bold;
width: 99%;
}
.underOpt {
font-size: 80%;
font-style: oblique;
margin: .5em 0 0 0
}
.maxsize {
width: 99%;
}
input.maxsize { width: 99% }
.msg {
font-weight: bold;
}
.error {
color: red;
padding-left: 10px;
}
.disabled {
background-color: red;
}
.enabled {
background-color: green;
}
.locked {
background-color: grey;
}
.draft {
background-color: lightgrey;
}
/* ===== NOTIFICATION ===== */
#main ul.msgs, ul.msgs {
margin-top: 1em;
margin-left: 0em;
padding: 1em 2em
}
.errors {
color: #901d1d;
border-top: 1px solid;
border-bottom: 1px solid;
border-color: #ffbbbb;
background: #ffdddd
}
.errors a {
color: #901d1d;
text-decoration: underline;
font-weight: normal
}
.notifications {
color : #1d901d;
border-top: 1px solid #bbffbb;
border-bottom: 1px solid #bbffbb;
background: #ddffdd
}
.field-error {
border: red 1px solid;
background: #fdd
}

View File

@ -1,224 +0,0 @@
// This function generates the menu icons
function generate_menu_icons() {
let admin_tabs = ["main","entry","static","uploader","widgets","plugin","themes","config","maintain"];
let admin_icons = ["panel","pencil-alt2","file","upload","move","hummer","palette","settings","check-box"];
for(let i=0; i<admin_tabs.length; ++i) {
let new_span = document.getElementById("admin-link-"+admin_tabs[i]);
new_span.insertAdjacentHTML('afterbegin', "<span class=\"ti-"+admin_icons[i]+"\"></span>");
}
}
// Responsive functions
function mobile_close_button() {
// This close the menu and show the page
let open_element1 = document.getElementsByClassName("mobile_menu_hide");
let open_element2 = document.getElementById("sidebar");
for(let i=0; i<open_element1.length; ++i ) {
open_element1[i].classList.remove("display_off");
}
open_element2.classList.remove("display_on");
}
function mobile_open_button() {
// This open the menu and close the page
let open_element1 = document.getElementsByClassName("mobile_menu_hide");
let open_element2 = document.getElementById("sidebar");
for(let i=0; i<open_element1.length; ++i ) {
open_element1[i].classList.add("display_off");
}
open_element2.classList.add("display_on");
}
// End Responsive functions
/* Functions of uploaderFiles */
/* This function is called in the admin.uploader.tpl */
function startUploadEvent() {
const uploadInputs = document.querySelectorAll('.custom-file-input');
uploadInputs.forEach(function(currentInput) {
currentInput.addEventListener('change', function(e){ // Change namefile when user select it
const currentInputFileID = e.srcElement.id;
const fileName = document.getElementById(currentInputFileID).files[0].name;
const nextSibling = e.target.nextElementSibling
nextSibling.innerText = fileName
});
});
}
/* Functions of FileManager */
let mediaManagerRoute = '';
let currentPromiseResolve;
let currentPromiseReject; // Called in Ajax errors
function openMediaManagerAndGetMediaUrl(callback) {
return new Promise(function(resolvePromise, rejectPromise) {
currentPromiseResolve = resolvePromise;
currentPromiseReject = rejectPromise;
open_media_manager();
}).then(function(value) {
$('#flatpress-files-modal').modal('hide');
callback(value);
}).catch(function(err) {
$('#flatpress-files-modal').modal('hide');
console.log(err);
});
}
// Open the botton
function open_media_manager() {
mediaManagerRoute = '';
$('#flatpress-files-modal').modal('show');
$.post('ajax.php', {Operation : 'ListMediaDirectory', Arguments : mediaManagerRoute}, function(data) {
data = JSON.parse(data);
if(data.result) {
showDirectory(data.content); // data.content = Array of pairs: dirname + isdirectory
} else {
currentPromiseReject(data.content);
}
});
}
function showDirectory(DirectoryList) {
let mediaDirectoryModal = document.getElementById('mediaDirectory');
let mediaDirectoryULDOM = document.createElement('ul');
if(mediaManagerRoute.length) { // We add ../ to back to parent Directory
let currentMediaDirectoryLI = document.createElement('li');
currentMediaDirectoryLI.innerHTML = "..";
currentMediaDirectoryLI.onclick = () => openNewDirectory('..');
writeLiContent(currentMediaDirectoryLI, '..', true);
mediaDirectoryULDOM.appendChild(currentMediaDirectoryLI);
}
for(let i = 0; i < DirectoryList.length; ++i) {
let currentMediaDirectoryLI = document.createElement('li');
currentMediaDirectoryLI.innerHTML = DirectoryList[i][0]; // File or directory name
if(DirectoryList[i][1]) { // It is a directory
currentMediaDirectoryLI.onclick = () => openNewDirectory(DirectoryList[i][0]); // Directory name
} else { // It is a file
currentMediaDirectoryLI.onclick = () => openNewFile(DirectoryList[i][0]); // File name
}
writeLiContent(currentMediaDirectoryLI, DirectoryList[i][0], DirectoryList[i][1]); // Content = Icon + fileName
mediaDirectoryULDOM.appendChild(currentMediaDirectoryLI);
}
mediaDirectoryModal.innerHTML = '';
mediaDirectoryModal.appendChild(mediaDirectoryULDOM);
changeDirectoryInput();
}
const PARENT_DIRECTORY_REGEX = /[^\/]+\/?$/;
function writeLiContent(currentMediaDirectoryLI, fileName, isDirectory) {
const fileExtension = detectTypeFile(fileName);
let imageName;
if(isDirectory) {
imageName = 'folder';
} else {
switch(fileExtension) {
case IMAGE: {
imageName = 'image';
break;
}
default: {
imageName = 'file';
}
}
}
let currentImage = '<img src="admin/res/images/' + imageName + '.png" class="managerTypeFile">';
currentMediaDirectoryLI.innerHTML = currentImage + fileName;
}
function openNewDirectory(DirectoryName) {
if(DirectoryName === '..') { // Go Back
/* Delete last directory name from variable */
mediaManagerRoute = mediaManagerRoute.substr(0, mediaManagerRoute.length - PARENT_DIRECTORY_REGEX.exec(DirectoryName));
} else {
mediaManagerRoute += DirectoryName + '/';
}
$.post('ajax.php', {Operation : 'ListMediaDirectory', Arguments : mediaManagerRoute}, function(data) {
data = JSON.parse(data);
if(data.result) {
showDirectory(data.content);
} else {
currentPromiseReject(data.content);
//throw new Error(data.content);
}
});
}
function openNewFile(FileName) {
const fileType = detectTypeFile(FileName);
const functionType = FUNCTION_BY_FILE_FORMAT.get(fileType);
selectedFile = FileName;
selectedURL = mediaManagerRoute;
functionType(FileName);
}
function changeDirectoryInput() {
const directoryInput = document.getElementById('directoryInput');
directoryInput.value = '/' + mediaManagerRoute;
}
const FILE = 0;
const IMAGE = 1;
const VIDEO = 2;
const AUDIO = 3;
const REGEX_FILE_DETECTOR = /\.([^\.]+)$/;
/* Video and Audio files not implemented yet */
const FILE_EXTENSIONS_MAP = new Map();
FILE_EXTENSIONS_MAP.set('jpg', IMAGE);
FILE_EXTENSIONS_MAP.set('jpeg', IMAGE);
FILE_EXTENSIONS_MAP.set('gif', IMAGE);
FILE_EXTENSIONS_MAP.set('png', IMAGE);
function detectTypeFile(FileName) {
// It detects if is and image, a file, etc.
const fileExtension = REGEX_FILE_DETECTOR.exec(FileName);
if(fileExtension === null) return FILE;
const fileExtensionDetection = FILE_EXTENSIONS_MAP.get(fileExtension[1]);
if(!fileExtensionDetection) {
return FILE;
}
return fileExtensionDetection;
}
const FUNCTION_BY_FILE_FORMAT = new Map();
const INSERT_MEDIA_BUTTON = '<button type="button" class="btn btn-primary" onclick="insertMediaInSceditor()">Insert Media</button>';
FUNCTION_BY_FILE_FORMAT.set(IMAGE, function(imageURL) {
const img = '<img src="' + 'fp-content/' + mediaManagerRoute + imageURL + '" class="img-fluid">';
changeMediaPreviewContent(img);
});
FUNCTION_BY_FILE_FORMAT.set(FILE, function(fileURL) {
changeMediaPreviewContent('<p class="text-center">No file preview</p>');
});
function changeMediaPreviewContent(content) {
const mediaPreviewDiv = document.getElementById('mediaPreview');
mediaPreviewDiv.innerHTML = content;
const modalFooter = document.getElementById('FilesModalFooter');
modalFooter.innerHTML = INSERT_MEDIA_BUTTON;
}
let selectedURL;
let selectedFile;
function insertMediaInSceditor() {
/* Onyl bbcode at the moment */
const fileType = detectTypeFile(selectedFile);
switch(fileType) {
case IMAGE: {
//insertSCEditorFunction('[img]' + selectedURL + selectedFile + '[/img]')
currentPromiseResolve('[img]' + selectedURL + selectedFile + '[/img]');
break;
}
default: { /* Other files = url link */
currentPromiseResolve('[url=' + selectedURL + selectedFile + ']' + selectedFile +'[/url]');
//insertSCEditorFunction('[url=' + selectedURL + selectedFile + ']' + selectedFile +'[/url]')
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 781 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 965 B

View File

@ -1,9 +0,0 @@
Presenting, Nomicons: The Full Monty :o
Credits:
Oscar Gruno, aka Nominell v. 2.0 -> oscargruno@mac.com
Andy Fedosjeenko, aka Nightwolf -> bobo@animevanguard.com
Copyright (C) 2001-Infinity, Oscar Gruno & Andy Fedosjeenko
You can redistribute these files as much as you like, as long as you keep this file with them and give us the proper credit. You may even rape them if you please, just give us credit for our work.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 783 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1010 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,80 +0,0 @@
/* Include a headers and IMG fix */
// IMG copied and modified from format/bbcode.js
sceditor.formats.bbcode.set('img', {
allowsEmpty: true,
tags: {
img: {
src: null
}
},
allowedChildren: ['#'],
quoteType: sceditor.BBCodeParser.QuoteType.never,
format: function (element, content) {
var width, height,
attribs = '',
style = function (name) {
return element.style ? element.style[name] : null;
};
const EMOTICON_DATA_ATTR = 'data-sceditor-emoticon';
// check if this is an emoticon image
if (sceditor.dom.attr(element, EMOTICON_DATA_ATTR)) {
return content;
}
width = sceditor.dom.attr(element, 'width') || style('width');
height = sceditor.dom.attr(element, 'height') || style('height');
// only add width and height if one is specified
if ((element.complete && (width || height)) ||
(width && height)) {
attribs = '=' + sceditor.dom.width(element) + 'x' +
sceditor.dom.height(element);
}
return '[img=' + sceditor.dom.attr(element, 'src') + '' + attribs + ']' + '[/img]';
},
html: function (token, attrs, content) {
var undef, width, height, match,
attribs = '';
// handle [img width=340 height=240]url[/img]
width = attrs.width;
height = attrs.height;
// handle [img=IMAGE_URL][/img]
if (attrs.defaultattr) {
content = attrs.defaultattr;
}
if (width !== undef) {
attribs += ' width="' + sceditor.escapeEntities(width, true) + '"';
}
if (height !== undef) {
attribs += ' height="' + sceditor.escapeEntities(height, true) + '"';
}
if(/^images/.test(content)) { // Fix small bug with fp-content directory
return '<img' + attribs + ' src="fp-content/' + sceditor.escapeUriScheme(content) + '" />';
} else {
return '<img' + attribs + ' src="' + sceditor.escapeUriScheme(content) + '" />';
}
}
});
// Header tag (From h1 to h6)
for(let i = 1; i < 7; ++i) { // Headers: h1 to h6
sceditor.formats.bbcode.set('h' + i, {
tags: {
['h' + i] : null,
},
isInline: false,
format: '[h'+ i +']{0}[/h' + i + ']',
html: '<h' + i + '>{0}</h' + i + '>',
});
}

View File

@ -1,41 +0,0 @@
const EMOJIS = [
'😀', '😃', '😄', '😁', '😆', '😅', '😂', '🤣', '😊', '😇',
'🙂', '🙃', '😉', '😌', '😍', '🥰', '😘', '😗', '😙', '😚',
'😋', '😛', '😝', '😜', '🤪', '🤨', '🧐', '🤓', '😎', '🤩',
'🥳', '😏', '😒', '😞', '😔', '😟', '😕', '🙁', '☹️', '😣',
'😖', '😫', '😩', '🥺', '😢', '😭', '😤', '😠', '😡', '🤬',
'🤯', '😳', '🥵', '🥶', '😱', '😨', '😰', '😥', '😓', '🤗',
'🤔', '🤭', '🤫', '🤥', '😶', '😐', '😑', '😬', '🙄', '😯',
'😦', '😧', '😮', '😲', '🥱', '😴', '🤤', '😪', '😵', '🤐',
'🥴', '🤢', '🤮', '🤧', '😷', '🤒', '🤕', '🤑', '🤠', '😈',
'👿'
];
sceditor.command.set('emojis', {
exec: function(caller) {
const sceditorInsert = this.insert;
const createEmojiLink = function(emoji) {
let link = document.createElement('a');
const linkText = document.createTextNode(emoji);
link.appendChild(linkText);
link.onclick = () => { sceditorInsert(emoji) };
return link;
};
const emojisShowListContent = function() {
let content = document.createElement('div');
content.id = 'sceditor-Emojis';
EMOJIS.forEach(function(emoji) {
content.appendChild(createEmojiLink(emoji));
});
return content;
};
this.createDropDown(caller, 'emojis-list', emojisShowListContent());
},
tooltip: 'Insert a emoji emoticon'
});

View File

@ -1,38 +0,0 @@
/**
* SCEditor FlatPress File Manager
* http://www.flatpress.org
*
* Copyright (C) 2020, Francisco Arocas (franciscoarocas.com)
*
* SCEditor is licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* @author Francisco Arocas
*/
// After load the plugin, we add first the editor icon
sceditor.command.set('flatPressFileManager', {
exec: function() {
/*
An a open bootstrap modal function
The modal html is in the .tpl file, where sceditor is included
*/
const insertIntoSceditor = this.insert;
openMediaManagerAndGetMediaUrl(function(value) {
insertIntoSceditor(value);
});
},
tooltip: 'Open FlatPress File Manager',
});
(function (sceditor) {
'use strict';
var extend = sceditor.utils.extend;
sceditor.plugins.flatPressFileManager = function () {
this.init = function () { };
};
}(sceditor));

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
/*! SCEditor | (C) 2011-2013, Sam Clarke | sceditor.com/license */body,code:before,html,p,table{margin:0;padding:0;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;color:#111;line-height:1.25;overflow:visible}html{height:100%}.ios{overflow:auto;-webkit-overflow-scrolling:touch}.ios body{position:relative;overflow:auto}body{min-height:100%;word-wrap:break-word}body.placeholder::before{content:attr(placeholder);color:#555;font-style:italic}ol,ul{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}table,td{border:1px dotted #000;empty-cells:show}table td{min-width:5px}code{display:block;background:#f1f1f1;white-space:pre;padding:1em;text-align:left;margin:.25em 0;direction:ltr}blockquote{background:#fff7d9;margin:.25em 0;border-left:.3em solid #f4e59f;padding:.5em .5em .5em .75em}blockquote cite{font-weight:700;display:block;font-size:1em;margin:0 -.5em .25em -.75em;padding:0 .5em .15em .75em;border-bottom:1px solid #f4e59f}h1,h2,h3,h4,h5,h6{padding:0;margin:0}div,p{min-height:1.25em}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,91 +0,0 @@
<?php
/*
Flatpress Ajax
It recives OP and arguments, and return the result
Created by Francisco Arocas
Website: franciscoarocas.com
*/
require_once ('defaults.php');
require_once (INCLUDES_DIR.'includes.php');
system_init();
// It contents all Operations and code
$ajaxFunctions = [];
// It contents if Operation is and admin operation or not
// If is and admin, user need to be logged
// True if needs admin, false if not
$ajaxIsAdminOrNot = [];
/* Functions to add Flarpress Ajax operations */
function addAjaxOperation($operationName, $isAdminOrNot, $operationFunction) {
global $ajaxFunctions, $ajaxIsAdminOrNot;
if(array_key_exists($operationName, $ajaxFunctions)) {
throw new Exception('Error, AjaxOperationName exists.');
}
$ajaxFunctions[$operationName] = $operationFunction;
$ajaxIsAdminOrNot[$operationName] = $isAdminOrNot;
}
function addAdminAjaxOperation($operationName, $operationFunction) {
addAjaxOperation($operationName, true, $operationFunction);
}
function addAdminNoAjaxOperation($operationName, $operationFunction) {
addAjaxOperation($operationName, false, $operationFunction);
}
define('AJAXERROR', false);
define('AJAXSUCCESS', true);
function returnJSONValue($resultValue, $resultContent) {
$Value = new stdClass;
$Value->result = $resultValue;
$Value->content = $resultContent;
echo json_encode($Value);
die();
}
/* Include all Admin Ajax operations */
require_once(ADMIN_DIR . 'adminAjaxOperations.php');
foreach($AjaxFunctionMap as $currentName => $currentFunction) {
addAdminAjaxOperation($currentName, $currentFunction);
}
/* Recibe $POST to access ajax Function */
if(isset($_POST)) {
if(!isset($_POST['Operation'])) {
returnJSONValue(AJAXERROR, 'Flatpress Ajax needs operation');
}
if(!array_key_exists($_POST['Operation'], $ajaxFunctions)) {
returnJSONValue(AJAXERROR, 'Flatpress Ajax Operation doesnt not exist');
}
//Check if this OP needs admin permissions. If true, check users permissions.
if($ajaxIsAdminOrNot[$_POST['Operation']]) {
if(!user_loggedin()) {
returnJSONValue(AJAXERROR, 'Forbidden. You dont have admin permissions');
}
}
try {
if(!isset($_POST['Arguments'])) {
$result = $ajaxFunctions[$_POST['Operation']]();
} else {
$result = $ajaxFunctions[$_POST['Operation']]($_POST['Arguments']);
}
returnJSONValue(AJAXSUCCESS, $result);
} catch(Exception $e) {
returnJSONValue(AJAXERROR, $e->getMessage());
}
}
?>

View File

@ -1 +0,0 @@
4.4.1

File diff suppressed because one or more lines are too long

View File

@ -1,8 +0,0 @@
/*!
* Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

Some files were not shown because too many files have changed in this diff Show More