mirror of
https://github.com/processwire/processwire.git
synced 2025-08-10 16:54:44 +02:00
Several fixes and impovements to PageFrontEdit per processwire/processwire-issues#609. Plus, this commit also improves PageFrontEdit usage with AdminThemeUikit, and improves behavior of multi-language fields.
This commit is contained in:
@@ -166,6 +166,7 @@ function pwModalWindow(href, options, size) {
|
|||||||
}
|
}
|
||||||
var $iframe = jQuery('<iframe class="pw-modal-window" frameborder="0" src="' + url + '"></iframe>');
|
var $iframe = jQuery('<iframe class="pw-modal-window" frameborder="0" src="' + url + '"></iframe>');
|
||||||
$iframe.attr('id', 'pw-modal-window-' + (pwModalWindows.length+1));
|
$iframe.attr('id', 'pw-modal-window-' + (pwModalWindows.length+1));
|
||||||
|
pwModalWindows[pwModalWindows.length] = $iframe;
|
||||||
|
|
||||||
if(typeof size == "undefined" || size.length == 0) var size = 'large';
|
if(typeof size == "undefined" || size.length == 0) var size = 'large';
|
||||||
var settings = pwModalWindowSettings(size);
|
var settings = pwModalWindowSettings(size);
|
||||||
@@ -261,11 +262,11 @@ function pwModalOpenEvent(e) {
|
|||||||
|
|
||||||
var settings = {
|
var settings = {
|
||||||
title: $a.attr('title'),
|
title: $a.attr('title'),
|
||||||
close: function(event, ui) {
|
close: function(e, ui) {
|
||||||
// abort is true when the "x" button at top right of window is what closed the window
|
// abort is true when the "x" button at top right of window is what closed the window
|
||||||
var abort = typeof event.toElement != "undefined" && jQuery(event.toElement).hasClass('fa-times');
|
var abort = typeof e.originalEvent != "undefined" && jQuery(e.originalEvent.target).closest('.ui-dialog-titlebar-close').length > 0;
|
||||||
var eventData = {
|
var eventData = {
|
||||||
event: event,
|
event: e,
|
||||||
ui: ui,
|
ui: ui,
|
||||||
abort: abort
|
abort: abort
|
||||||
};
|
};
|
||||||
|
2
wire/modules/Jquery/JqueryUI/modal.min.js
vendored
2
wire/modules/Jquery/JqueryUI/modal.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -208,7 +208,7 @@ button.ui-button.ui-state-active,
|
|||||||
background: #E4EBEE;
|
background: #E4EBEE;
|
||||||
border: none;
|
border: none;
|
||||||
margin-top: -8px;
|
margin-top: -8px;
|
||||||
padding: 1px 8px 1px 8px; }
|
padding: 8px 8px 1px 8px; }
|
||||||
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
||||||
float: right; }
|
float: right; }
|
||||||
.ui-dialog .ui-dialog-buttonpane button {
|
.ui-dialog .ui-dialog-buttonpane button {
|
||||||
@@ -262,26 +262,36 @@ button.ui-button.ui-state-active,
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
filter: Alpha(Opacity=0); }
|
filter: Alpha(Opacity=0); }
|
||||||
|
|
||||||
/*** AdminThemeReno jQuery UI ************************************************/
|
/*** AdminThemeReno or Uikit jQuery UI ************************************************/
|
||||||
|
.pw-AdminThemeUikit .ui-dialog .ui-dialog-titlebar,
|
||||||
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar {
|
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar {
|
||||||
background: #2a3c51; }
|
background: #2a3c51; }
|
||||||
|
.pw-AdminThemeUikit .ui-dialog .ui-dialog-titlebar .ui-button,
|
||||||
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar .ui-button {
|
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar .ui-button {
|
||||||
background: none;
|
background: none;
|
||||||
border: none; }
|
border: none; }
|
||||||
|
.pw-AdminThemeUikit .ui-dialog .ui-dialog-buttonpane,
|
||||||
.pw-AdminThemeReno .ui-dialog .ui-dialog-buttonpane {
|
.pw-AdminThemeReno .ui-dialog .ui-dialog-buttonpane {
|
||||||
margin-top: -5px; }
|
margin-top: -5px;
|
||||||
|
padding-top: 6px; }
|
||||||
|
.pw-AdminThemeUikit .ui-dialog .ui-dialog-title,
|
||||||
.pw-AdminThemeReno .ui-dialog .ui-dialog-title {
|
.pw-AdminThemeReno .ui-dialog .ui-dialog-title {
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
font-size: 1.2em; }
|
font-size: 1.2em; }
|
||||||
|
.pw-AdminThemeUikit .ui-dialog .ui-dialog-titlebar-close,
|
||||||
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar-close {
|
.pw-AdminThemeReno .ui-dialog .ui-dialog-titlebar-close {
|
||||||
right: 15px;
|
right: 15px;
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
color: #FFF; }
|
color: #FFF; }
|
||||||
|
.pw-AdminThemeUikit .ui-widget-overlay,
|
||||||
.pw-AdminThemeReno .ui-widget-overlay {
|
.pw-AdminThemeReno .ui-widget-overlay {
|
||||||
background: #1C2836; }
|
background: #1C2836; }
|
||||||
|
.pw-AdminThemeUikit .ui-button,
|
||||||
|
.pw-AdminThemeUikit button.ui-button.ui-state-default,
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-state-default,
|
||||||
.pw-AdminThemeReno .ui-button,
|
.pw-AdminThemeReno .ui-button,
|
||||||
.pw-AdminThemeReno button.ui-button.ui-state-default,
|
.pw-AdminThemeReno button.ui-button.ui-state-default,
|
||||||
.pw-AdminThemeReno .ui-button.ui-state-default {
|
.pw-AdminThemeReno .ui-button.ui-state-default {
|
||||||
@@ -292,20 +302,29 @@ button.ui-button.ui-state-active,
|
|||||||
border: 1px solid #3eb998;
|
border: 1px solid #3eb998;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
transition: all 120ms ease-in; }
|
transition: all 120ms ease-in; }
|
||||||
.pw-AdminThemeReno .ui-button-text, .pw-AdminThemeReno .ui-button-text-only .ui-button-text {
|
.pw-AdminThemeUikit .ui-button-text, .pw-AdminThemeUikit .ui-button-text-only .ui-button-text,
|
||||||
|
.pw-AdminThemeReno .ui-button-text,
|
||||||
|
.pw-AdminThemeReno .ui-button-text-only .ui-button-text {
|
||||||
padding: 0.6em 1.1em;
|
padding: 0.6em 1.1em;
|
||||||
font-size: 1em; }
|
font-size: 1em; }
|
||||||
|
.pw-AdminThemeUikit button.ui-button.ui-priority-secondary,
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-priority-secondary,
|
||||||
.pw-AdminThemeReno button.ui-button.ui-priority-secondary,
|
.pw-AdminThemeReno button.ui-button.ui-priority-secondary,
|
||||||
.pw-AdminThemeReno .ui-button.ui-priority-secondary {
|
.pw-AdminThemeReno .ui-button.ui-priority-secondary {
|
||||||
background: #4d6c76;
|
background: #4d6c76;
|
||||||
border: 1px solid #4d6c76;
|
border: 1px solid #4d6c76;
|
||||||
color: #fff; }
|
color: #fff; }
|
||||||
|
.pw-AdminThemeUikit button.ui-button.ui-priority-secondary:hover,
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-priority-secondary:hover,
|
||||||
.pw-AdminThemeReno button.ui-button.ui-priority-secondary:hover,
|
.pw-AdminThemeReno button.ui-button.ui-priority-secondary:hover,
|
||||||
.pw-AdminThemeReno .ui-button.ui-priority-secondary:hover {
|
.pw-AdminThemeReno .ui-button.ui-priority-secondary:hover {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: 1px solid #3eb998;
|
border: 1px solid #3eb998;
|
||||||
background: #3eb998;
|
background: #3eb998;
|
||||||
cursor: pointer; }
|
cursor: pointer; }
|
||||||
|
.pw-AdminThemeUikit .ui-button:hover,
|
||||||
|
.pw-AdminThemeUikit button.ui-button.ui-state-hover,
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-state-hover,
|
||||||
.pw-AdminThemeReno .ui-button:hover,
|
.pw-AdminThemeReno .ui-button:hover,
|
||||||
.pw-AdminThemeReno button.ui-button.ui-state-hover,
|
.pw-AdminThemeReno button.ui-button.ui-state-hover,
|
||||||
.pw-AdminThemeReno .ui-button.ui-state-hover {
|
.pw-AdminThemeReno .ui-button.ui-state-hover {
|
||||||
@@ -313,6 +332,8 @@ button.ui-button.ui-state-active,
|
|||||||
background: #e83561;
|
background: #e83561;
|
||||||
border: 1px solid #e83561;
|
border: 1px solid #e83561;
|
||||||
text-decoration: none; }
|
text-decoration: none; }
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-state-hover.ui-state-active,
|
||||||
|
.pw-AdminThemeUikit .ui-button.ui-state-hover.ui-priority-secondary.ui-state-active,
|
||||||
.pw-AdminThemeReno .ui-button.ui-state-hover.ui-state-active,
|
.pw-AdminThemeReno .ui-button.ui-state-hover.ui-state-active,
|
||||||
.pw-AdminThemeReno .ui-button.ui-state-hover.ui-priority-secondary.ui-state-active {
|
.pw-AdminThemeReno .ui-button.ui-state-hover.ui-priority-secondary.ui-state-active {
|
||||||
background: #e83561;
|
background: #e83561;
|
||||||
@@ -370,5 +391,3 @@ body.pw-AdminThemeDefault .pw-edit-cancel {
|
|||||||
body.pw-AdminThemeDefault .pw-edit-cancel:hover {
|
body.pw-AdminThemeDefault .pw-edit-cancel:hover {
|
||||||
background-color: #d80e1c;
|
background-color: #d80e1c;
|
||||||
border-color: #d80e1c; }
|
border-color: #d80e1c; }
|
||||||
|
|
||||||
/*# sourceMappingURL=PageFrontEdit.css.map */
|
|
||||||
|
@@ -336,7 +336,7 @@ function PageFrontEditInit($) {
|
|||||||
$(document).on('pw-modal-closed', function(e, eventData) {
|
$(document).on('pw-modal-closed', function(e, eventData) {
|
||||||
if(eventData.abort) return; // modal.js populates 'abort' if "x" button was clicked
|
if(eventData.abort) return; // modal.js populates 'abort' if "x" button was clicked
|
||||||
var target = $(e.target);
|
var target = $(e.target);
|
||||||
if(!target.is('.pw-edit-modal')) return;
|
if(!target.hasClass('pw-edit-modal')) return;
|
||||||
var targetID = target.attr('id');
|
var targetID = target.attr('id');
|
||||||
var viewURL = $('#pw-url').val();
|
var viewURL = $('#pw-url').val();
|
||||||
viewURL += (viewURL.indexOf('?') > -1 ? '&' : '?') + 'pw_edit_fields=' + target.attr('data-fields');
|
viewURL += (viewURL.indexOf('?') > -1 ? '&' : '?') + 'pw_edit_fields=' + target.attr('data-fields');
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@ class PageFrontEdit extends WireData implements Module {
|
|||||||
return array(
|
return array(
|
||||||
'title' => 'Front-End Page Editor',
|
'title' => 'Front-End Page Editor',
|
||||||
'summary' => 'Enables front-end editing of page fields.',
|
'summary' => 'Enables front-end editing of page fields.',
|
||||||
'version' => 2,
|
'version' => 3,
|
||||||
'author' => 'Ryan Cramer',
|
'author' => 'Ryan Cramer',
|
||||||
'license' => 'MPL 2.0',
|
'license' => 'MPL 2.0',
|
||||||
'icon' => 'cube',
|
'icon' => 'cube',
|
||||||
@@ -240,9 +240,13 @@ class PageFrontEdit extends WireData implements Module {
|
|||||||
$className = $field->type->className();
|
$className = $field->type->className();
|
||||||
$supported = false;
|
$supported = false;
|
||||||
foreach($this->inlineAllowFieldtypes as $allowClass) {
|
foreach($this->inlineAllowFieldtypes as $allowClass) {
|
||||||
if($allowClass == $className || in_array($allowClass, $classParents)) {
|
if($allowClass == $className) {
|
||||||
$supported = true;
|
$supported = true;
|
||||||
break;
|
break;
|
||||||
|
} else if(in_array($allowClass, $classParents)) {
|
||||||
|
$test = $field->type->getBlankValue(new NullPage(), $field);
|
||||||
|
if(!is_object($test)) $supported = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $supported;
|
return $supported;
|
||||||
@@ -806,6 +810,7 @@ class PageFrontEdit extends WireData implements Module {
|
|||||||
|
|
||||||
$unformatted = $this->getUnformattedValue($page, $field);
|
$unformatted = $this->getUnformattedValue($page, $field);
|
||||||
$this->inlineEditors[$field->name] = $field->name;
|
$this->inlineEditors[$field->name] = $field->name;
|
||||||
|
$langID = $this->wire('languages') ? $this->wire('user')->language->id : 0;
|
||||||
|
|
||||||
// make sure we've got any initialization from the Inputfield
|
// make sure we've got any initialization from the Inputfield
|
||||||
$inputfield = $field->___getInputfield($page);
|
$inputfield = $field->___getInputfield($page);
|
||||||
@@ -820,7 +825,7 @@ class PageFrontEdit extends WireData implements Module {
|
|||||||
|
|
||||||
return
|
return
|
||||||
"<$tag id=pw-edit-$this->editorNum class='pw-edit pw-edit-$inputfield' data-name=$field->name " .
|
"<$tag id=pw-edit-$this->editorNum class='pw-edit pw-edit-$inputfield' data-name=$field->name " .
|
||||||
"data-page=$page->id style='position:relative'>" .
|
"data-page=$page->id data-lang='$langID' style='position:relative'>" .
|
||||||
"<$tag class=pw-edit-orig>" .
|
"<$tag class=pw-edit-orig>" .
|
||||||
$formatted .
|
$formatted .
|
||||||
"</$tag>" .
|
"</$tag>" .
|
||||||
|
@@ -281,7 +281,7 @@ button.ui-button.ui-state-active,
|
|||||||
background: $subtle-bg;
|
background: $subtle-bg;
|
||||||
border: none;
|
border: none;
|
||||||
margin-top: -8px;
|
margin-top: -8px;
|
||||||
padding: 1px 8px 1px 8px;
|
padding: 8px 8px 1px 8px;
|
||||||
.ui-dialog-buttonset {
|
.ui-dialog-buttonset {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
@@ -345,8 +345,9 @@ button.ui-button.ui-state-active,
|
|||||||
filter:Alpha(Opacity=0);
|
filter:Alpha(Opacity=0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** AdminThemeReno jQuery UI ************************************************/
|
/*** AdminThemeReno or Uikit jQuery UI ************************************************/
|
||||||
|
|
||||||
|
.pw-AdminThemeUikit,
|
||||||
.pw-AdminThemeReno {
|
.pw-AdminThemeReno {
|
||||||
.ui-dialog {
|
.ui-dialog {
|
||||||
.ui-dialog-titlebar {
|
.ui-dialog-titlebar {
|
||||||
@@ -359,6 +360,7 @@ button.ui-button.ui-state-active,
|
|||||||
|
|
||||||
.ui-dialog-buttonpane {
|
.ui-dialog-buttonpane {
|
||||||
margin-top: -5px;
|
margin-top: -5px;
|
||||||
|
padding-top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-dialog-title {
|
.ui-dialog-title {
|
||||||
|
Reference in New Issue
Block a user