mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 12:48:24 +01:00
Removed old bootstrap-editable folder. Added experimental front-end inline editing for shortcodes.
This commit is contained in:
parent
a1e70651cf
commit
210abeaba0
@ -98,9 +98,12 @@ class e_parse_shortcode
|
||||
protected $wrapper = null; // current wrapper being processed.
|
||||
protected $wrapperDebugDone = array(); // Flag to avoid repetition of debug info.
|
||||
protected $sc_style = array(); // Former $sc_style global variable. Internally used - performance reasons
|
||||
protected $editableCodes = array(); // Array of editable shortcode data.
|
||||
|
||||
function __construct()
|
||||
{
|
||||
// $_SESSION['editable'] = array();
|
||||
|
||||
$this->ignoreCodes = e107::getParser()->getUrlConstants(); // ignore all URL shortcodes. ie. {e_PLUGIN}
|
||||
$this->loadOverrideShortcodes();
|
||||
$this->loadThemeShortcodes();
|
||||
@ -494,7 +497,7 @@ class e_parse_shortcode
|
||||
*
|
||||
* @return e_parse_shortcode
|
||||
*/
|
||||
protected function loadThemeShortcodes()
|
||||
public function loadThemeShortcodes()
|
||||
{
|
||||
global $register_sc;
|
||||
|
||||
@ -763,8 +766,6 @@ class e_parse_shortcode
|
||||
if (is_object($extraCodes))
|
||||
{
|
||||
|
||||
|
||||
|
||||
$this->addedCodes = &$extraCodes;
|
||||
|
||||
// e107::getDebug()->log("Codes".print_a($this->addedCodes,true));
|
||||
@ -776,7 +777,6 @@ class e_parse_shortcode
|
||||
{
|
||||
// $cname = get_class($this->addedCodes);
|
||||
|
||||
|
||||
$tmpWrap = e107::templateWrapper($this->addedCodes->wrapper());
|
||||
if(!empty($tmpWrap)) // FIX for #3 above.
|
||||
{
|
||||
@ -792,6 +792,86 @@ class e_parse_shortcode
|
||||
|
||||
}
|
||||
|
||||
if(method_exists($this->addedCodes, 'editable'))
|
||||
{
|
||||
$this->editableCodes = $this->addedCodes->editable();
|
||||
|
||||
if(isset($this->editableCodes['perms']) && getperms($this->editableCodes['perms']))
|
||||
{
|
||||
e107::js('core', 'jquery.contenteditable.js', 'jquery');
|
||||
|
||||
$_SESSION['editable'][e_TOKEN] = $this->editableCodes;
|
||||
|
||||
e107::js('footer-inline', '$(".e-editable-front").each(function ()
|
||||
{
|
||||
|
||||
var sc = $(this).attr("data-edit-sc");
|
||||
var id = $(this).attr("data-edit-id");
|
||||
var token = "'.e_TOKEN.'";
|
||||
|
||||
$(this).contentEditable({
|
||||
"placeholder" : "",
|
||||
"onBlur" : function(element){
|
||||
var edited_content = element.content;
|
||||
|
||||
$.post("'.e_WEB_ABS.'js/inline.php",{ content : edited_content, sc: sc, id: id, token: token }, function (data){
|
||||
console.log(data);
|
||||
try
|
||||
{
|
||||
var d = $.parseJSON(data);
|
||||
} catch(e)
|
||||
{
|
||||
// Not JSON.
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
console.log(d);
|
||||
|
||||
|
||||
|
||||
// Show pop-up message.
|
||||
if(d.msg)
|
||||
{
|
||||
var alertType = "info";
|
||||
|
||||
if(d.status == "ok")
|
||||
{
|
||||
alertType = "success";
|
||||
}
|
||||
|
||||
if(d.status == "error")
|
||||
{
|
||||
alertType = "danger";
|
||||
}
|
||||
|
||||
if(jQuery().notify)
|
||||
{
|
||||
$("#uiAlert").notify({
|
||||
type: alertType,
|
||||
message: {text: d.msg},
|
||||
fadeOut: {enabled: true, delay: 3000}
|
||||
}).show();
|
||||
}
|
||||
else
|
||||
{
|
||||
alert(d.msg);
|
||||
// location.reload();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
$classname = get_class($extraCodes);
|
||||
@ -1206,50 +1286,11 @@ class e_parse_shortcode
|
||||
|
||||
if (isset($ret) && ($ret != '' || is_numeric($ret)))
|
||||
{
|
||||
// Wrapper support - see contact_template.php
|
||||
if(isset($this->wrappers[$code]) && !empty($this->wrappers[$code])) // eg: $NEWS_WRAPPER['view']['item']['NEWSIMAGE']
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->wrappers[$code], 2);
|
||||
$ret = $pre.$ret.$post;
|
||||
|
||||
}
|
||||
elseif(!empty($fullShortcodeKey) && !empty($this->wrappers[$fullShortcodeKey]) ) // eg: $NEWS_WRAPPER['view']['item']['NEWSIMAGE: item=1']
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->wrappers[$fullShortcodeKey], 2);
|
||||
$ret = $pre.$ret.$post;
|
||||
}
|
||||
else
|
||||
{
|
||||
//if $sc_mode exists, we need it to parse $sc_style
|
||||
if ($sc_mode)
|
||||
{
|
||||
$code = $code.'|'.$sc_mode;
|
||||
}
|
||||
if (is_array($this->sc_style) && array_key_exists($code, $this->sc_style))
|
||||
{
|
||||
$pre = $post = '';
|
||||
// old way - pre/post keys
|
||||
if(is_array($this->sc_style[$code]))
|
||||
{
|
||||
if (isset($this->sc_style[$code]['pre']))
|
||||
{
|
||||
$pre = $this->sc_style[$code]['pre'];
|
||||
}
|
||||
if (isset($this->sc_style[$code]['post']))
|
||||
{
|
||||
$post = $this->sc_style[$code]['post'];
|
||||
}
|
||||
}
|
||||
// new way - same format as wrapper
|
||||
else
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->sc_style[$code], 2);
|
||||
}
|
||||
|
||||
$ret = $pre.$ret.$post;
|
||||
}
|
||||
}
|
||||
$ret = $this->makeEditable($ret, $code);
|
||||
$ret = $this->makeWrapper($ret, $code, $fullShortcodeKey, $sc_mode);
|
||||
}
|
||||
|
||||
|
||||
if (E107_DBG_SC || E107_DBG_TIMEDETAILS)
|
||||
{
|
||||
$sql->db_Mark_Time("(After SC {$code})");
|
||||
@ -1279,8 +1320,6 @@ class e_parse_shortcode
|
||||
$other['path'] = str_replace('../','',$_path);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if($this->debug_legacy)
|
||||
{
|
||||
$other = $this->debug_legacy;
|
||||
@ -1288,7 +1327,7 @@ class e_parse_shortcode
|
||||
|
||||
if(!empty($this->wrappers[$code]))
|
||||
{
|
||||
$other['wrapper'] = $this->wrappers[$code];
|
||||
$other['wrapper'] = str_replace(array("\n","\t")," ",$this->wrappers[$code]);
|
||||
}
|
||||
elseif(!empty($this->wrappers[$fullShortcodeKey]) )
|
||||
{
|
||||
@ -1305,15 +1344,118 @@ class e_parse_shortcode
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return isset($ret) ? $ret : '';
|
||||
|
||||
|
||||
|
||||
|
||||
return isset($ret) ? $ret: '';
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add Wrapper to Shortcode (when detected)
|
||||
* @param mixed $ret
|
||||
* @param string $code
|
||||
* @param string $fullShortcodeKey
|
||||
* @param string $sc_mode
|
||||
* // Wrapper support - see contact_template.php
|
||||
* @return string
|
||||
*/
|
||||
private function makeWrapper($ret, $code, $fullShortcodeKey, $sc_mode)
|
||||
{
|
||||
|
||||
if(isset($this->wrappers[$code]) && !empty($this->wrappers[$code])) // eg: $NEWS_WRAPPER['view']['item']['NEWSIMAGE']
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->wrappers[$code], 2);
|
||||
return $pre.$ret.$post;
|
||||
}
|
||||
|
||||
if(!empty($fullShortcodeKey) && !empty($this->wrappers[$fullShortcodeKey]) ) // eg: $NEWS_WRAPPER['view']['item']['NEWSIMAGE: item=1']
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->wrappers[$fullShortcodeKey], 2);
|
||||
return $pre.$ret.$post;
|
||||
}
|
||||
|
||||
//if $sc_mode exists, we need it to parse $sc_style
|
||||
if ($sc_mode)
|
||||
{
|
||||
$code = $code.'|'.$sc_mode;
|
||||
}
|
||||
|
||||
if (is_array($this->sc_style) && array_key_exists($code, $this->sc_style))
|
||||
{
|
||||
$pre = $post = '';
|
||||
// old way - pre/post keys
|
||||
if(is_array($this->sc_style[$code]))
|
||||
{
|
||||
if (isset($this->sc_style[$code]['pre']))
|
||||
{
|
||||
$pre = $this->sc_style[$code]['pre'];
|
||||
}
|
||||
if (isset($this->sc_style[$code]['post']))
|
||||
{
|
||||
$post = $this->sc_style[$code]['post'];
|
||||
}
|
||||
}
|
||||
else // new way - same format as wrapper
|
||||
{
|
||||
list($pre, $post) = explode("{---}", $this->sc_style[$code], 2);
|
||||
}
|
||||
|
||||
$ret = $pre.$ret.$post;
|
||||
}
|
||||
|
||||
|
||||
return $ret;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add Editable Container to shortcode (when detected)
|
||||
* @param string $text
|
||||
* @param string $code
|
||||
* @return string
|
||||
*/
|
||||
private function makeEditable($text, $code)
|
||||
{
|
||||
$lcode = strtolower($code);
|
||||
|
||||
if(empty($code)
|
||||
|| empty($this->editableCodes)
|
||||
|| empty($this->editableCodes['shortcodes'][$lcode])
|
||||
|| !isset($this->editableCodes['perms'])
|
||||
|| empty($this->editableCodes['table'])
|
||||
|| empty($this->editableCodes['pid'])
|
||||
|| !getperms($this->editableCodes['perms'])
|
||||
|| empty($this->editableCodes['shortcodes'][$lcode]['field'])
|
||||
)
|
||||
{
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
if(!empty($this->editableCodes['vars']))
|
||||
{
|
||||
$varID = $this->editableCodes['vars'];
|
||||
$var = $this->addedCodes->getScVar($varID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$var = $this->addedCodes->getVars();
|
||||
}
|
||||
|
||||
|
||||
$container = empty($this->editableCodes['shortcodes'][$lcode]['container']) ? 'span' : $this->editableCodes['shortcodes'][$lcode]['container'];
|
||||
$pid = $this->editableCodes['pid'];
|
||||
$id = intval($var[$pid]);
|
||||
|
||||
$attributes = "contenteditable='true' class='e-editable-front' data-edit-id='".$id."' data-edit-sc='".$lcode."' ";
|
||||
|
||||
return ($container == 'div') ? "<div ".$attributes." >".$text."</div>" : "<span ".$attributes." >".$text."</span>";
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@ -1415,6 +1557,8 @@ class e_shortcode
|
||||
protected $wrapper = null; // holds template/key value of the currently used wrapper (if any) - see contact_template.php for an example.
|
||||
|
||||
protected $override = false;
|
||||
|
||||
protected $editable = null;
|
||||
/**
|
||||
* Storage for shortcode values
|
||||
* @var e_vars
|
||||
@ -1461,6 +1605,15 @@ class e_shortcode
|
||||
}
|
||||
|
||||
|
||||
public function editable($data=null)
|
||||
{
|
||||
if(null === $data) return $this->editable;
|
||||
$this->editable = $data;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set external array data to be used in the batch
|
||||
* Use setVars() - preferred.
|
||||
|
@ -324,4 +324,6 @@ optgroup.level-5 { padding-left:4em }
|
||||
.online-menu-extended-label { font-size:1.2em; }
|
||||
|
||||
/* Emoticons */
|
||||
img.e-emoticon { vertical-align:middle; border:0; width:24px }
|
||||
img.e-emoticon { vertical-align:middle; border:0; width:24px }
|
||||
|
||||
.e-editable:hover { background-color:#FCF8E3 }
|
||||
|
@ -1,663 +0,0 @@
|
||||
/*! X-editable - v1.5.1
|
||||
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
|
||||
* http://github.com/vitalets/x-editable
|
||||
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
|
||||
.editableform {
|
||||
margin-bottom: 0; /* overwrites bootstrap margin */
|
||||
}
|
||||
|
||||
.editableform .control-group {
|
||||
margin-bottom: 0; /* overwrites bootstrap margin */
|
||||
white-space: nowrap; /* prevent wrapping buttons on new line */
|
||||
line-height: 20px; /* overwriting bootstrap line-height. See #133 */
|
||||
}
|
||||
|
||||
/*
|
||||
BS3 width:1005 for inputs breaks editable form in popup
|
||||
See: https://github.com/vitalets/x-editable/issues/393
|
||||
*/
|
||||
.editableform .form-control {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.editable-buttons {
|
||||
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
|
||||
vertical-align: top;
|
||||
margin-left: 7px;
|
||||
/* inline-block emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-buttons.editable-buttons-bottom {
|
||||
display: block;
|
||||
margin-top: 7px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.editable-input {
|
||||
vertical-align: top;
|
||||
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
|
||||
width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
|
||||
white-space: normal; /* reset white-space decalred in parent*/
|
||||
/* display-inline emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-buttons .editable-cancel {
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
/*for jquery-ui buttons need set height to look more pretty*/
|
||||
.editable-buttons button.ui-button-icon-only {
|
||||
height: 24px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.editableform-loading {
|
||||
background: url('../img/loading.gif') center center no-repeat;
|
||||
height: 25px;
|
||||
width: auto;
|
||||
min-width: 25px;
|
||||
}
|
||||
|
||||
.editable-inline .editableform-loading {
|
||||
background-position: left 5px;
|
||||
}
|
||||
|
||||
.editable-error-block {
|
||||
max-width: 300px;
|
||||
margin: 5px 0 0 0;
|
||||
width: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*add padding for jquery ui*/
|
||||
.editable-error-block.ui-state-error {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.editable-error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* ---- For specific types ---- */
|
||||
|
||||
.editableform .editable-date {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
|
||||
.editable-inline .add-on .icon-th {
|
||||
margin-top: 3px;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
|
||||
/* checklist vertical alignment */
|
||||
.editable-checklist label input[type="checkbox"],
|
||||
.editable-checklist label span {
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.editable-checklist label {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* set exact width of textarea to fit buttons toolbar */
|
||||
.editable-wysihtml5 {
|
||||
width: 566px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
/* clear button shown as link in date inputs */
|
||||
.editable-clear {
|
||||
clear: both;
|
||||
font-size: 0.9em;
|
||||
text-decoration: none;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* IOS-style clear button for text inputs */
|
||||
.editable-clear-x {
|
||||
background: url('../img/clear.png') center center no-repeat;
|
||||
display: block;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
position: absolute;
|
||||
opacity: 0.6;
|
||||
z-index: 100;
|
||||
|
||||
top: 50%;
|
||||
right: 6px;
|
||||
margin-top: -6px;
|
||||
|
||||
}
|
||||
|
||||
.editable-clear-x:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.editable-pre-wrapped {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.editable-container.editable-popup {
|
||||
max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
|
||||
}
|
||||
|
||||
.editable-container.popover {
|
||||
width: auto; /* without this rule popover does not stretch */
|
||||
}
|
||||
|
||||
.editable-container.editable-inline {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
/* inline-block emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-container.ui-widget {
|
||||
font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */
|
||||
z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
|
||||
}
|
||||
.editable-click,
|
||||
a.editable-click,
|
||||
a.editable-click:hover {
|
||||
text-decoration: none;
|
||||
border-bottom: dashed 1px #0088cc;
|
||||
}
|
||||
|
||||
.editable-click.editable-disabled,
|
||||
a.editable-click.editable-disabled,
|
||||
a.editable-click.editable-disabled:hover {
|
||||
color: #585858;
|
||||
cursor: default;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.editable-empty, .editable-empty:hover, .editable-empty:focus{
|
||||
font-style: italic;
|
||||
color: #DD1144;
|
||||
/* border-bottom: none; */
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.editable-unsaved {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.editable-unsaved:after {
|
||||
/* content: '*'*/
|
||||
}
|
||||
|
||||
.editable-bg-transition {
|
||||
-webkit-transition: background-color 1400ms ease-out;
|
||||
-moz-transition: background-color 1400ms ease-out;
|
||||
-o-transition: background-color 1400ms ease-out;
|
||||
-ms-transition: background-color 1400ms ease-out;
|
||||
transition: background-color 1400ms ease-out;
|
||||
}
|
||||
|
||||
/*see https://github.com/vitalets/x-editable/issues/139 */
|
||||
.form-horizontal .editable
|
||||
{
|
||||
padding-top: 5px;
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datepicker td,
|
||||
.datepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
background-color: #f3d17a;
|
||||
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
|
||||
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
|
||||
border-color: #f3e97a #f3e97a #edde34;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled] {
|
||||
background-color: #f3e97a;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #efe24b \9;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
background-color: #9e9e9e;
|
||||
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
|
||||
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: linear-gradient(top, #b3b3b3, #808080);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
|
||||
border-color: #808080 #808080 #595959;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled] {
|
||||
background-color: #808080;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #666666 \9;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
-webkit-border-radius: 3px 0 0 3px;
|
||||
-moz-border-radius: 3px 0 0 3px;
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
-webkit-border-radius: 0 3px 3px 0;
|
||||
-moz-border-radius: 0 3px 3px 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .add-on {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
height: 18px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 509 B |
Binary file not shown.
Before Width: | Height: | Size: 1.8 KiB |
File diff suppressed because one or more lines are too long
114
e107_web/js/inline.php
Normal file
114
e107_web/js/inline.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
/**
|
||||
* e107 website system
|
||||
*
|
||||
* Copyright (C) 2008-2016 e107 Inc (e107.org)
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
*/
|
||||
|
||||
$_E107['debug'] = false;
|
||||
$_E107['no_forceuserupdate'] = true;
|
||||
$_E107['no_menus'] = true;
|
||||
$_E107['allow_guest'] = false; // allow crons to run while in members-only mode.
|
||||
$_E107['no_maintenance'] = true;
|
||||
// error_reporting(0); // suppress all errors
|
||||
require_once("../../class2.php");
|
||||
|
||||
|
||||
class e107InlineEdit
|
||||
{
|
||||
|
||||
function __construct()
|
||||
{
|
||||
|
||||
$token = e107::getParser()->filter($_POST['token']);
|
||||
|
||||
$perm = (string) $_SESSION['editable'][$token]['perm'];
|
||||
|
||||
if(!ADMIN || !e_AJAX_REQUEST || !isset($_SESSION['editable'][$token]) || !getperms($perm))
|
||||
{
|
||||
$ret['msg'] = "Access Denied";
|
||||
$ret['status'] = 'error';
|
||||
echo json_encode($ret);
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
$keys = array('sc','id','token');
|
||||
foreach($keys as $k)
|
||||
{
|
||||
if(empty($_POST[$k])){ return; }
|
||||
}
|
||||
|
||||
// unset($_SESSION['editable'][$token]);
|
||||
$shortcode = e107::getParser()->filter($_POST['sc']);
|
||||
|
||||
$ret = array();
|
||||
$id = intval($_POST['id']);
|
||||
$table = $_SESSION['editable'][$token]['table'];
|
||||
$field = $_SESSION['editable'][$token]['shortcodes'][$shortcode]['field'];
|
||||
$pid = $_SESSION['editable'][$token]['pid'];
|
||||
$type = $_SESSION['editable'][$token]['shortcodes'][$shortcode]['type'];
|
||||
|
||||
|
||||
if(empty($field) || empty($pid) || empty($table))
|
||||
{
|
||||
$ret['msg'] = "Missing Data";
|
||||
$ret['status'] = 'error';
|
||||
echo json_encode($ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$content = e107::getParser()->toDB($_POST['content']);
|
||||
|
||||
$srch = array("<!-- bbcode-html-start -->","<!-- bbcode-html-end -->","[html]","[/html]");
|
||||
$content = str_replace($srch,'',$content);
|
||||
|
||||
if($type == 'html')
|
||||
{
|
||||
$content = '[html]'.$content.'[/html]';
|
||||
}
|
||||
else
|
||||
{
|
||||
$content = strip_tags($content);
|
||||
}
|
||||
|
||||
$update = array(
|
||||
$field => $content,
|
||||
'WHERE' => $pid ." = ".$id . " LIMIT 1"
|
||||
);
|
||||
|
||||
// print_r($table);
|
||||
// print_r($update);
|
||||
|
||||
if(e107::getDb()->update($table, $update) !== false)
|
||||
{
|
||||
$ret['msg'] = "Saved"; // LAN_UPDATED; or LAN_SAVED
|
||||
$ret['status'] = 'ok';
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret['msg'] = "Saving Failed"; // LAN_UPDATED_FAILED;
|
||||
$ret['status'] = 'error';
|
||||
}
|
||||
|
||||
|
||||
echo json_encode($ret);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
new e107InlineEdit;
|
||||
|
||||
|
||||
exit;
|
||||
|
21
page.php
21
page.php
@ -578,7 +578,11 @@ class pageClass
|
||||
$this->authorized = 'nf';
|
||||
$this->template = e107::getCoreTemplate('page', 'default');
|
||||
// $this->batch = e107::getScBatch('page',null,'cpage')->setVars(new e_vars($ret))->setScVar('page', array()); ///Upgraded to setVars() array. (not using '$this->page')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$this->batch = e107::getScBatch('page',null,'cpage')->setVars($this->page)->wrapper('page/'.$this->templateID);
|
||||
|
||||
|
||||
@ -608,9 +612,21 @@ class pageClass
|
||||
$this->template = e107::getCoreTemplate('page', 'default');
|
||||
$this->templateID = 'default';
|
||||
}
|
||||
|
||||
|
||||
$editable = array(
|
||||
'table' => 'page',
|
||||
'pid' => 'page_id',
|
||||
'perms' => '5',
|
||||
'shortcodes' => array(
|
||||
'cpagetitle' => array('field'=>'page_subtitle','type'=>'text', 'container'=>'span'),
|
||||
'cpagebody' => array('field'=>'page_text','type'=>'html', 'container'=>'div'),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$this->batch = e107::getScBatch('page',null,'cpage');
|
||||
$this->batch->wrapper('page/'.$this->templateID );
|
||||
$this->batch->editable($editable);
|
||||
|
||||
$this->pageText = $this->page['page_text'];
|
||||
|
||||
@ -774,6 +790,7 @@ class pageClass
|
||||
$extend->message = e107::getMessage()->render();
|
||||
$tp = e107::getParser();
|
||||
|
||||
|
||||
switch ($this->authorized)
|
||||
{
|
||||
case 'class':
|
||||
|
Loading…
x
Reference in New Issue
Block a user