1
0
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:
Ryan Cramer
2018-06-12 07:43:55 -04:00
parent 738c2db3c5
commit a465fab672
7 changed files with 44 additions and 17 deletions

View File

@@ -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
}; };

File diff suppressed because one or more lines are too long

View File

@@ -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 */

View File

@@ -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

View File

@@ -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>" .

View File

@@ -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 {