mirror of
https://github.com/processwire/processwire.git
synced 2025-08-26 16:14:35 +02:00
Various updates supporting core admin theme customization and bump version to 3.0.54
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.pw-init .InputfieldAsmSelect select[multiple],
|
||||
.pw-fouc-fix .InputfieldAsmSelect select[multiple] {
|
||||
display: none;
|
||||
}
|
||||
|
@@ -116,8 +116,13 @@
|
||||
// existing link
|
||||
$existingLink = jQuery(node.$);
|
||||
selectionText = node.getHtml();
|
||||
selection.selectElement(node);
|
||||
|
||||
selection.selectElement(node);
|
||||
} else if(nodeName == 'td' || nodeName == 'th' || nodeName == 'tr') {
|
||||
var firstChar = selectionText.substring(0,1);
|
||||
if(firstChar == "\n" || firstChar == "\r") {
|
||||
ProcessWire.alert('Your selection includes part of the table. Please try selecting the text again.');
|
||||
return;
|
||||
}
|
||||
} else if(nodeName == 'img') {
|
||||
// linked image
|
||||
var $img = jQuery(node.$);
|
||||
|
@@ -1 +1 @@
|
||||
(function(){CKEDITOR.plugins.add("pwlink",{requires:"dialog,fakeobjects",init:function(b){var d="a[!href,target,name,title,rel]";var c="a[href]";var e=ProcessWire.config.InputfieldCKEditor.pwlink.classOptions;if(e.length){d+="("+e+")"}b.addCommand("pwlink",{allowedContent:d,requiredContent:c,exec:a});b.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));b.addCommand("unlink",new CKEDITOR.unlinkCommand());b.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand());b.setKeystroke(CKEDITOR.CTRL+76,"pwlink");if(b.ui.addButton){b.ui.addButton("PWLink",{label:b.lang.link.toolbar,command:"pwlink",toolbar:"links,10",hidpi:true,icon:(CKEDITOR.env.hidpi?this.path+"images/hidpi/pwlink.png":this.path+"images/pwlink.png")});b.ui.addButton("Unlink",{label:b.lang.link.unlink,command:"unlink",toolbar:"links,20"});b.ui.addButton("Anchor",{label:b.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"})}b.on("doubleclick",function(f){var g=CKEDITOR.plugins.link.getSelectedLink(b)||f.data.element;if(g.is("a")&&!g.getAttribute("name")&&!g.isReadOnly()){var h=jQuery(g.$);if(h.children("img").length==0){f.cancel();b.commands.pwlink.exec()}}});b.on("instanceReady",function(f){f.editor.removeMenuItem("link")});if(b.contextMenu){b.addMenuItem("pwlinkitem",{label:ProcessWire.config.InputfieldCKEditor.pwlink.edit,command:"pwlink",group:"link",icon:(CKEDITOR.env.hidpi?this.path+"images/hidpi/pwlink.png":this.path+"images/pwlink.png")});b.contextMenu.addListener(function(g){if(!g||g.isReadOnly()){return null}var f=CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,g);var h={};if(!f&&!(f=CKEDITOR.plugins.link.getSelectedLink(b))){return null}if(f.getAttribute("href")&&f.getChildCount()){h={pwlinkitem:CKEDITOR.TRISTATE_OFF}}return h})}}});function a(g){var i=jQuery("#Inputfield_id");if(i.length){var f=i.val()}else{var f=jQuery("#"+g.name).closest(".Inputfield").attr("data-pid")}var u=jQuery("#"+g.name);var v=g.getSelection(true);var s=v.getStartElement();var b=s.getName();var j=v.getSelectedText();var t=null;var p=CKEDITOR.plugins.link.getEditorAnchors(g);if(b=="a"){t=jQuery(s.$);j=s.getHtml();v.selectElement(s)}else{if(b=="img"){var k=jQuery(s.$);t=k.parent("a");j=s.$.outerHTML}else{if(j.length<1){return}else{}}}var m=ProcessWire.config.urls.admin+"page/link/?id="+f+"&modal=1";var d=u.closest(".LanguageSupport");if(d.length){m+="&lang="+d.data("language")}if(t!=null){var q=["href","title","class","rel","target"];for(var r=0;r<q.length;r++){var w=t.attr(q[r]);if(w&&w.length){m+="&"+q[r]+"="+encodeURIComponent(w)}}}if(p.length>0){for(var r=0;r<p.length;r++){m+="&anchors[]="+encodeURIComponent(p[r].id)}}var c=ProcessWire.config.InputfieldCKEditor.pwlink.label;var l=ProcessWire.config.InputfieldCKEditor.pwlink.cancel;var o;function h(){var y=o.contents();var x=jQuery(jQuery("#link_markup",y).text());if(x.attr("href")&&x.attr("href").length){x.html(j);var n=jQuery("<div />").append(x).html();g.insertHtml(n)}o.dialog("close")}var e={title:"<i class='fa fa-link'></i> "+c,open:function(){if(jQuery(".cke_maximized").length>0){jQuery(".ui-dialog").css("z-index",9999);jQuery(".ui-widget-overlay").css("z-index",9998)}},buttons:[{"class":"pw_link_submit_insert",html:"<i class='fa fa-link'></i> "+c,click:h},{html:"<i class='fa fa-times-circle'></i> "+l,click:function(){o.dialog("close")},"class":"ui-priority-secondary"}]};var o=pwModalWindow(m,e,"medium");o.load(function(){var n=o.contents();n.find("#ProcessPageEditLinkForm").data("iframe",o);jQuery("#link_page_url",n).keydown(function(x){var y=jQuery(this);var z=jQuery.trim(y.val());if(x.keyCode==13){x.preventDefault();if(z.length>0){h()}return false}})})}})();
|
||||
(function(){CKEDITOR.plugins.add("pwlink",{requires:"dialog,fakeobjects",init:function(b){var d="a[!href,target,name,title,rel]";var c="a[href]";var e=ProcessWire.config.InputfieldCKEditor.pwlink.classOptions;if(e.length){d+="("+e+")"}b.addCommand("pwlink",{allowedContent:d,requiredContent:c,exec:a});b.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));b.addCommand("unlink",new CKEDITOR.unlinkCommand());b.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand());b.setKeystroke(CKEDITOR.CTRL+76,"pwlink");if(b.ui.addButton){b.ui.addButton("PWLink",{label:b.lang.link.toolbar,command:"pwlink",toolbar:"links,10",hidpi:true,icon:(CKEDITOR.env.hidpi?this.path+"images/hidpi/pwlink.png":this.path+"images/pwlink.png")});b.ui.addButton("Unlink",{label:b.lang.link.unlink,command:"unlink",toolbar:"links,20"});b.ui.addButton("Anchor",{label:b.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"})}b.on("doubleclick",function(f){var g=CKEDITOR.plugins.link.getSelectedLink(b)||f.data.element;if(g.is("a")&&!g.getAttribute("name")&&!g.isReadOnly()){var h=jQuery(g.$);if(h.children("img").length==0){f.cancel();b.commands.pwlink.exec()}}});b.on("instanceReady",function(f){f.editor.removeMenuItem("link")});if(b.contextMenu){b.addMenuItem("pwlinkitem",{label:ProcessWire.config.InputfieldCKEditor.pwlink.edit,command:"pwlink",group:"link",icon:(CKEDITOR.env.hidpi?this.path+"images/hidpi/pwlink.png":this.path+"images/pwlink.png")});b.contextMenu.addListener(function(g){if(!g||g.isReadOnly()){return null}var f=CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,g);var h={};if(!f&&!(f=CKEDITOR.plugins.link.getSelectedLink(b))){return null}if(f.getAttribute("href")&&f.getChildCount()){h={pwlinkitem:CKEDITOR.TRISTATE_OFF}}return h})}}});function a(g){var i=jQuery("#Inputfield_id");if(i.length){var f=i.val()}else{var f=jQuery("#"+g.name).closest(".Inputfield").attr("data-pid")}var u=jQuery("#"+g.name);var w=g.getSelection(true);var s=w.getStartElement();var c=s.getName();var j=w.getSelectedText();var t=null;var p=CKEDITOR.plugins.link.getEditorAnchors(g);if(c=="a"){t=jQuery(s.$);j=s.getHtml();w.selectElement(s)}else{if(c=="td"||c=="th"||c=="tr"){var v=j.substring(0,1);if(v=="\n"||v=="\r"){ProcessWire.alert("Your selection includes part of the table. Please try selecting the text again.");return}}else{if(c=="img"){var k=jQuery(s.$);t=k.parent("a");j=s.$.outerHTML}else{if(j.length<1){return}else{}}}}var m=ProcessWire.config.urls.admin+"page/link/?id="+f+"&modal=1";var d=u.closest(".LanguageSupport");if(d.length){m+="&lang="+d.data("language")}if(t!=null){var q=["href","title","class","rel","target"];for(var r=0;r<q.length;r++){var x=t.attr(q[r]);if(x&&x.length){m+="&"+q[r]+"="+encodeURIComponent(x)}}}if(p.length>0){for(var r=0;r<p.length;r++){m+="&anchors[]="+encodeURIComponent(p[r].id)}}var b=ProcessWire.config.InputfieldCKEditor.pwlink.label;var l=ProcessWire.config.InputfieldCKEditor.pwlink.cancel;var o;function h(){var z=o.contents();var y=jQuery(jQuery("#link_markup",z).text());if(y.attr("href")&&y.attr("href").length){y.html(j);var n=jQuery("<div />").append(y).html();g.insertHtml(n)}o.dialog("close")}var e={title:"<i class='fa fa-link'></i> "+b,open:function(){if(jQuery(".cke_maximized").length>0){jQuery(".ui-dialog").css("z-index",9999);jQuery(".ui-widget-overlay").css("z-index",9998)}},buttons:[{"class":"pw_link_submit_insert",html:"<i class='fa fa-link'></i> "+b,click:h},{html:"<i class='fa fa-times-circle'></i> "+l,click:function(){o.dialog("close")},"class":"ui-priority-secondary"}]};var o=pwModalWindow(m,e,"medium");o.load(function(){var n=o.contents();n.find("#ProcessPageEditLinkForm").data("iframe",o);jQuery("#link_page_url",n).keydown(function(y){var z=jQuery(this);var A=jQuery.trim(z.val());if(y.keyCode==13){y.preventDefault();if(A.length>0){h()}return false}})})}})();
|
@@ -37,6 +37,7 @@ class InputfieldCheckboxes extends InputfieldSelectMultiple implements Inputfiel
|
||||
$inline = $columns === 1 || $columns > 10;
|
||||
$liAttr = '';
|
||||
$ulClass = '';
|
||||
$inputClass = $this->wire('sanitizer')->entities($this->attr('class'));
|
||||
$entityEncode = $this->getSetting('entityEncodeText') === false ? false : true;
|
||||
|
||||
if($this->table) {
|
||||
@@ -69,7 +70,7 @@ class InputfieldCheckboxes extends InputfieldSelectMultiple implements Inputfiel
|
||||
$checked = '';
|
||||
|
||||
if($this->isOptionSelected($key)) $checked = " checked='checked'";
|
||||
$id = $this->id . "_" . $this->wire('sanitizer')->name($key);
|
||||
$id = $this->id . "_" . $this->wire('sanitizer')->name($key);
|
||||
|
||||
$attrs = $this->getOptionAttributes($key);
|
||||
$disabled = empty($attrs['disabled']) ? '' : " disabled='disabled'";
|
||||
@@ -85,6 +86,7 @@ class InputfieldCheckboxes extends InputfieldSelectMultiple implements Inputfiel
|
||||
"type='checkbox' " .
|
||||
"name='{$this->name}[]' " .
|
||||
"id='$id' " .
|
||||
"class='$inputClass' " .
|
||||
"value='" . htmlspecialchars($key, ENT_QUOTES, 'UTF-8') . "' />";
|
||||
|
||||
if($table) {
|
||||
|
@@ -399,18 +399,27 @@ $(document).ready(function() {
|
||||
this.value = '';
|
||||
}, false);
|
||||
|
||||
dropArea.addEventListener("dragleave", function() { $(this).removeClass('ui-state-hover'); }, false);
|
||||
dropArea.addEventListener("dragenter", function() { $(this).addClass('ui-state-hover'); }, false);
|
||||
dropArea.addEventListener("dragleave", function() {
|
||||
$(this).removeClass('ui-state-hover');
|
||||
$(this).closest('.Inputfield').removeClass('pw-drag-in-file');
|
||||
}, false);
|
||||
dropArea.addEventListener("dragenter", function() {
|
||||
$(this).addClass('ui-state-hover');
|
||||
$(this).closest('.Inputfield').addClass('pw-drag-in-file InputfieldStateConfirmLeave');
|
||||
}, false);
|
||||
|
||||
dropArea.addEventListener("dragover", function (evt) {
|
||||
if(!$(this).is('ui-state-hover')) $(this).addClass('ui-state-hover');
|
||||
if(!$(this).is('ui-state-hover')) {
|
||||
$(this).addClass('ui-state-hover');
|
||||
$(this).closest('.Inputfield').addClass('pw-drag-in-file');
|
||||
}
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
}, false);
|
||||
|
||||
dropArea.addEventListener("drop", function (evt) {
|
||||
traverseFiles(evt.dataTransfer.files);
|
||||
$(this).removeClass("ui-state-hover");
|
||||
$(this).removeClass("ui-state-hover").closest('.Inputfield').removeClass('pw-drag-in-file InputfieldStateConfirmLeave');
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
}, false);
|
||||
|
File diff suppressed because one or more lines are too long
@@ -79,6 +79,14 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
|
||||
protected $isAjax = false;
|
||||
|
||||
/**
|
||||
* Admin theme specific settings
|
||||
*
|
||||
* @var array
|
||||
*
|
||||
*/
|
||||
protected $themeSettings = array();
|
||||
|
||||
/**
|
||||
* Commonly used text labels, translated, indexed by label name
|
||||
*
|
||||
@@ -142,6 +150,12 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
$this->uploadOnlyMode = (int) $this->wire('input')->get('uploadOnlyMode');
|
||||
$this->addClass('InputfieldItemList', 'wrapClass');
|
||||
$this->addClass('InputfieldHasFileList', 'wrapClass');
|
||||
|
||||
$themeDefaults = array(
|
||||
'error' => "<span class='ui-state-error-text'>{out}</span>",
|
||||
);
|
||||
$themeSettings = $this->wire('config')->InputfieldFile;
|
||||
$this->themeSettings = is_array($themeSettings) ? array_merge($themeDefaults, $themeSettings) : $themeDefaults;
|
||||
}
|
||||
|
||||
public function get($key) {
|
||||
@@ -209,6 +223,7 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
$out = '';
|
||||
$tabs = '';
|
||||
static $hasLangTabs = null;
|
||||
static $langTabSettings = array();
|
||||
|
||||
if($this->renderValueMode) {
|
||||
if($this->wire('languages')) {
|
||||
@@ -231,7 +246,12 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
$languages = array(null);
|
||||
} else {
|
||||
$numLanguages = $languages->count();
|
||||
if(is_null($hasLangTabs)) $hasLangTabs = $this->wire('modules')->isInstalled('LanguageTabs');
|
||||
if(is_null($hasLangTabs)) {
|
||||
$hasLangTabs = $this->wire('modules')->isInstalled('LanguageTabs');
|
||||
if($hasLangTabs) {
|
||||
$langTabSettings = $this->wire('modules')->getModule('LanguageTabs')->getSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach($languages as $language) {
|
||||
@@ -241,7 +261,8 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
$labelClass = "detail";
|
||||
|
||||
if($language) {
|
||||
$descriptionFieldLabel = (string) $language->getUnformatted('title');
|
||||
$tabField = empty($langTabSettings['tabField']) ? 'title' : $langTabSettings['tabField'];
|
||||
$descriptionFieldLabel = (string) $language->getUnformatted($tabField);
|
||||
if(empty($descriptionFieldLabel)) $descriptionFieldLabel = $language->get('name');
|
||||
$descriptionFieldLabel = $this->wire('sanitizer')->entities($descriptionFieldLabel);
|
||||
if(!$language->isDefault()) $descriptionFieldName = "description{$language->id}_$id";
|
||||
@@ -251,7 +272,9 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
$descriptionFieldLabel = "<s>$descriptionFieldLabel</s>";
|
||||
}
|
||||
$tabID = "langTab_{$id}__$language";
|
||||
$tabs .= "<li><a data-lang='$language' class='langTab$language' href='#$tabID'>$descriptionFieldLabel</a></li>";
|
||||
$aClass = "langTab$language";
|
||||
if(!empty($langTabSettings['aClass'])) $aClass .= " " . $langTabSettings['aClass'];
|
||||
$tabs .= "<li><a data-lang='$language' class='$aClass' href='#$tabID'>$descriptionFieldLabel</a></li>";
|
||||
$out .= "<div class='InputfieldFileDescription LanguageSupport' data-language='$language' id='$tabID'>"; // open wrapper
|
||||
} else {
|
||||
$out .= "<div class='InputfieldFileDescription'>"; // open wrapper
|
||||
@@ -271,7 +294,9 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
}
|
||||
|
||||
if($numLanguages && $hasLangTabs) {
|
||||
$out = "<div class='hasLangTabs langTabsContainer'><div class='langTabs'><ul>$tabs</ul>$out</div></div>";
|
||||
$ulClass = empty($langTabSettings['ulClass']) ? '' : " class='$langTabSettings[ulClass]'";
|
||||
$ulAttr = empty($langTabSettings['ulAttrs']) ? '' : " $langTabSettings[ulAttrs]";
|
||||
$out = "<div class='hasLangTabs langTabsContainer'><div class='langTabs'><ul $ulAttr$ulClass>$tabs</ul>$out</div></div>";
|
||||
if($this->isAjax) $out .= "<script>setupLanguageTabs($('#wrap_" . $this->attr('id') . "'));</script>";
|
||||
}
|
||||
|
||||
@@ -328,7 +353,7 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
|
||||
$out =
|
||||
"<p class='InputfieldFileInfo InputfieldItemHeader ui-state-default ui-widget-header'>" .
|
||||
wireIconMarkupFile($pagefile->basename, "fa-fw HideIfEmpty") .
|
||||
wireIconMarkupFile($pagefile->basename, "fa-fw HideIfEmpty") . ' ' .
|
||||
"<a class='InputfieldFileName' title='$pagefile->basename' target='_blank' href='{$pagefile->url}'>$displayName</a> " .
|
||||
"<span class='InputfieldFileStats'>" . str_replace(' ', ' ', $pagefile->filesizeStr) . "</span> ";
|
||||
|
||||
@@ -443,7 +468,7 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|
||||
if(!$this->noAjax) $out .= "
|
||||
<span class='AjaxUploadDropHere description'>
|
||||
<span>
|
||||
<i class='fa fa-upload'></i> $dragDropLabel
|
||||
<i class='fa fa-cloud-upload'></i> $dragDropLabel
|
||||
</span>
|
||||
</span>
|
||||
";
|
||||
|
@@ -80,7 +80,6 @@ class InputfieldImage extends InputfieldFile implements InputfieldItemList, Inpu
|
||||
*/
|
||||
protected $modalClass = 'pw-modal-large';
|
||||
|
||||
protected $themeSettings = array();
|
||||
|
||||
public function init() {
|
||||
parent::init();
|
||||
@@ -126,15 +125,15 @@ class InputfieldImage extends InputfieldFile implements InputfieldItemList, Inpu
|
||||
'na' => $this->_('N/A'), // for JS
|
||||
'changes' => $this->_('This images field may have unsaved changes that could be lost after this action. Please save before cropping, or double-click the button proceed anyway.'),
|
||||
));
|
||||
|
||||
|
||||
$themeDefaults = array(
|
||||
'error' => "<span class='ui-state-error-text'>{out}</span>",
|
||||
// 'error' => "<span class='ui-state-error-text'>{out}</span>", // provided by InputfieldFile
|
||||
'buttonClass' => "ui-button ui-corner-all ui-state-default",
|
||||
'buttonText' => "<span class='ui-button-text'>{out}</span>",
|
||||
);
|
||||
$themeSettings = $this->wire('config')->InputfieldImage;
|
||||
$this->themeSettings = is_array($themeSettings) ? array_merge($themeDefaults, $themeSettings) : $themeDefaults;
|
||||
|
||||
$themeSettings = is_array($themeSettings) ? array_merge($themeDefaults, $themeSettings) : $themeDefaults;
|
||||
$this->themeSettings = array_merge($this->themeSettings, $themeSettings);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -67,6 +67,7 @@ class InputfieldRadios extends InputfieldSelect {
|
||||
$label = $this->entityEncode($label, Inputfield::textFormatBasic);
|
||||
$label = str_replace('!wbr!', '<wbr>', $label);
|
||||
$label = "<span class='$textClass'>$label</span>";
|
||||
$class = trim($this->wire('sanitizer')->entities($this->attr('class')));
|
||||
|
||||
$out .=
|
||||
"<li$liAttr><label$attrs>" .
|
||||
@@ -74,6 +75,7 @@ class InputfieldRadios extends InputfieldSelect {
|
||||
"type='radio' " .
|
||||
"name='{$this->name}' " .
|
||||
"id='$id' " .
|
||||
"class='$class' " .
|
||||
"value='" . htmlspecialchars($key, ENT_QUOTES) . "' />" .
|
||||
"<span class='$textClass'>$label</span>" .
|
||||
"</label></li>";
|
||||
|
@@ -7,8 +7,9 @@
|
||||
* https://processwire.com
|
||||
* License: MPL 2.0
|
||||
*
|
||||
* @property bool $header Whether or not button will also appear in header.
|
||||
* @property bool $secondary Whether or not button is secondary.
|
||||
* @property bool $header Whether or not button will also appear in header (default=false).
|
||||
* @property bool $secondary Whether or not button is secondary (default=false).
|
||||
* @property bool $small Whether or not button should be small, where supported (default=false).
|
||||
* @property string $dropdownInputName #pw-internal
|
||||
*
|
||||
*/
|
||||
@@ -42,6 +43,7 @@ class InputfieldSubmit extends Inputfield {
|
||||
$this->attr('value', $this->_('Submit')); // Standard submit button label
|
||||
$this->attr('class', 'ui-button ui-widget ui-state-default ui-corner-all');
|
||||
$this->skipLabel = Inputfield::skipLabelBlank;
|
||||
$this->set('small', false);
|
||||
|
||||
// name of 'hidden' input that will receive the clicked dropdown item value
|
||||
$this->set('dropdownInputName', '_action_value');
|
||||
@@ -95,6 +97,21 @@ class InputfieldSubmit extends Inputfield {
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this button small?
|
||||
*
|
||||
* By default, buttons are regular size. This makes them small.
|
||||
* Supported only for non-dropdown, non-header buttons.
|
||||
*
|
||||
* @param bool $small Default=true
|
||||
* @return $this
|
||||
*
|
||||
*/
|
||||
public function setSmall($small = true) {
|
||||
$this->set('small', $small ? true : false);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render ready
|
||||
@@ -111,6 +128,9 @@ class InputfieldSubmit extends Inputfield {
|
||||
$class = str_replace('head_button_clone', 'pw-head-button', $class);
|
||||
$this->attr('class', $class);
|
||||
}
|
||||
if($this->getSetting('small')) {
|
||||
$this->addClass('InputfieldSubmitSmall', 'wrapClass');
|
||||
}
|
||||
return parent::renderReady($parent, $renderValueMode);
|
||||
}
|
||||
|
||||
@@ -126,6 +146,7 @@ class InputfieldSubmit extends Inputfield {
|
||||
$icon = $icon ? "<i class='fa fa-$icon'></i> " : '';
|
||||
$value = $this->entityEncode($this->attr('value'));
|
||||
$out = "<button $attrs><span class='ui-button-text'>$icon$value</span></button>";
|
||||
if($this->getSetting('small')) $out = "<small>$out</small>";
|
||||
if(count($this->dropdownItems)) $out .= $this->renderDropdown();
|
||||
return $out;
|
||||
}
|
||||
|
@@ -144,8 +144,14 @@
|
||||
var $oldTab = $tabList.find("a." + aActiveClass);
|
||||
var $newTab = $(this);
|
||||
|
||||
var $oldTabContent = $($oldTab.attr('href'));
|
||||
var $newTabContent = $($newTab.attr('href'));
|
||||
if(!$oldTab.length) $oldTab = $tabList.find("a:eq(0)");
|
||||
|
||||
|
||||
var oldTabHref = $oldTab.attr('href');
|
||||
var newTabHref = $newTab.attr('href');
|
||||
|
||||
var $oldTabContent = oldTabHref && oldTabHref.indexOf('#') === 0 ? $(oldTabHref) : null;
|
||||
var $newTabContent = newTabHref && newTabHref.indexOf('#') === 0 ? $(newTabHref) : null;
|
||||
|
||||
var newTabID = $newTab.attr('id');
|
||||
var oldTabID = $oldTab.attr('id');
|
||||
@@ -158,8 +164,13 @@
|
||||
$newTab.closest('li').addClass(liActiveClass);
|
||||
}
|
||||
|
||||
$oldTabContent.hide();
|
||||
$newTabContent.show();
|
||||
if($oldTabContent) $oldTabContent.hide();
|
||||
if($newTabContent) {
|
||||
$newTabContent.show();
|
||||
} else if(newTabHref && newTabHref.length) {
|
||||
window.location.href = newTabHref;
|
||||
return true;
|
||||
}
|
||||
|
||||
// add a target classname equal to the ID of the selected tab
|
||||
// so there is opportunity for 3rd party CSS adjustments outside this plugin
|
||||
|
@@ -1 +1 @@
|
||||
(function(a){a.fn.WireTabs=function(d){var e={rememberTabs:0,cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var c=0;var b=ProcessWire.config.JqueryWireTabs;var g=["rememberTabs","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var h=0;h<g.length;h++){var f=g[h];if(b[f]!="undefined"){e[f]=b[f]}}a.extend(e,d);return this.each(function(m){var o=null;var i=a(this);var l="";var q=true;function r(){if(!e.items){return}if(e.items.length<1){return}if(e.id.length){o=a("#"+e.id);if(o.length){q=false}else{o=null}}if(!o){o=a("<ul"+(e.ulAttrs?" "+e.ulAttrs:"")+"></ul>");o.addClass(e.ulClass);if(e.id.length){o.attr("id",e.id)}}e.items.each(j);if(q){i.prepend(o)}var t=i;var w=null;var y=p();if(e.rememberTabs==0){t.submit(function(){k(l);return true})}var s=window.location.href;var u="";if(s.indexOf("WireTab")){var v=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");u=s.match(v);u=u?u[1]:"";if(u.length){w=o.find("a#_"+u)}}if(w==null){var x=document.location.hash.replace("#","");if(x.length){w=o.find("a#_"+x);if(w.length==0){w=null}else{document.location.hash=""}}}if(w==null&&y.length>0&&e.rememberTabs>-1){w=o.find("a#_"+y)}if(w&&w.length>0){w.click();if(e.rememberTabs==0){k("")}setTimeout(function(){w.click()},200)}else{o.children("li:first").children("a").click()}}function j(){c++;var w=a(this);if(!w.attr("id")){w.attr("id","WireTab"+c)}var v=w.attr("title")||w.attr("id");w.removeAttr("title");var s=w.attr("id");var u=a("a#_"+s);if(u.length>0){u.click(n)}else{var u=a("<a></a>").attr("href","#"+s).attr("id","_"+s).html(v).click(n);o.append(a("<li></li>").append(u))}var t=w.attr("data-tooltip");if(w.hasClass("WireTabTip")||t){u.addClass("tooltip");u.attr("title",t?t:v)}w.hide()}function n(){var u=e.aActiveClass;var s=e.liActiveClass;var t=o.find("a."+u);var w=a(this);var v=a(t.attr("href"));var y=a(w.attr("href"));var x=w.attr("id");var z=t.attr("id");t.removeClass(u);w.addClass(u);if(s.length){t.closest("li").removeClass(s);w.closest("li").addClass(s)}v.hide();y.show();if(z){i.removeClass(v.attr("id"))}i.addClass(x);if(e.rememberTabs>-1){if(jQuery.inArray(x,e.skipRememberTabIDs)!=-1){x=""}if(e.rememberTabs==1){k(x)}l=x}a(document).trigger("wiretabclick",[y,v]);return false}function k(s){document.cookie=e.cookieName+"="+escape(s)}function p(){var t=new RegExp("(?:^|;)\\s?"+e.cookieName+"=(.*?)(?:;|$)","i");var s=document.cookie.match(t);s=s?s[1]:"";return s}r()})}})(jQuery);
|
||||
(function(a){a.fn.WireTabs=function(d){var e={rememberTabs:0,cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var c=0;var b=ProcessWire.config.JqueryWireTabs;var g=["rememberTabs","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var h=0;h<g.length;h++){var f=g[h];if(b[f]!="undefined"){e[f]=b[f]}}a.extend(e,d);return this.each(function(m){var o=null;var i=a(this);var l="";var q=true;function r(){if(!e.items){return}if(e.items.length<1){return}if(e.id.length){o=a("#"+e.id);if(o.length){q=false}else{o=null}}if(!o){o=a("<ul"+(e.ulAttrs?" "+e.ulAttrs:"")+"></ul>");o.addClass(e.ulClass);if(e.id.length){o.attr("id",e.id)}}e.items.each(j);if(q){i.prepend(o)}var t=i;var w=null;var y=p();if(e.rememberTabs==0){t.submit(function(){k(l);return true})}var s=window.location.href;var u="";if(s.indexOf("WireTab")){var v=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");u=s.match(v);u=u?u[1]:"";if(u.length){w=o.find("a#_"+u)}}if(w==null){var x=document.location.hash.replace("#","");if(x.length){w=o.find("a#_"+x);if(w.length==0){w=null}else{document.location.hash=""}}}if(w==null&&y.length>0&&e.rememberTabs>-1){w=o.find("a#_"+y)}if(w&&w.length>0){w.click();if(e.rememberTabs==0){k("")}setTimeout(function(){w.click()},200)}else{o.children("li:first").children("a").click()}}function j(){c++;var w=a(this);if(!w.attr("id")){w.attr("id","WireTab"+c)}var v=w.attr("title")||w.attr("id");w.removeAttr("title");var s=w.attr("id");var u=a("a#_"+s);if(u.length>0){u.click(n)}else{var u=a("<a></a>").attr("href","#"+s).attr("id","_"+s).html(v).click(n);o.append(a("<li></li>").append(u))}var t=w.attr("data-tooltip");if(w.hasClass("WireTabTip")||t){u.addClass("tooltip");u.attr("title",t?t:v)}w.hide()}function n(){var t=e.aActiveClass;var z=e.liActiveClass;var u=o.find("a."+t);var x=a(this);if(!u.length){u=o.find("a:eq(0)")}var w=u.attr("href");var y=x.attr("href");var v=w&&w.indexOf("#")===0?a(w):null;var s=y&&y.indexOf("#")===0?a(y):null;var B=x.attr("id");var A=u.attr("id");u.removeClass(t);x.addClass(t);if(z.length){u.closest("li").removeClass(z);x.closest("li").addClass(z)}if(v){v.hide()}if(s){s.show()}else{if(y&&y.length){window.location.href=y;return true}}if(A){i.removeClass(v.attr("id"))}i.addClass(B);if(e.rememberTabs>-1){if(jQuery.inArray(B,e.skipRememberTabIDs)!=-1){B=""}if(e.rememberTabs==1){k(B)}l=B}a(document).trigger("wiretabclick",[s,v]);return false}function k(s){document.cookie=e.cookieName+"="+escape(s)}function p(){var t=new RegExp("(?:^|;)\\s?"+e.cookieName+"=(.*?)(?:;|$)","i");var s=document.cookie.match(t);s=s?s[1]:"";return s}r()})}})(jQuery);
|
@@ -1,50 +1,36 @@
|
||||
.langTabs {
|
||||
.body.LanguageTabsJqueryUI .pw-content .langTabsContainer .InputfieldError,
|
||||
.body.LanguageTabsJqueryUI #content .langTabsContainer .InputfieldError {
|
||||
margin-bottom: 0; }
|
||||
|
||||
.langTabs.ui-tabs {
|
||||
position: relative;
|
||||
padding: 0; }
|
||||
|
||||
.LanguageTabsJqueryUI .langTabs > ul {
|
||||
display: none; }
|
||||
.LanguageTabsJqueryUI .hasLangTabs .langTabs > ul {
|
||||
display: block; }
|
||||
.LanguageTabsJqueryUI .pw-content .langTabsContainer,
|
||||
.LanguageTabsJqueryUI #content .langTabsContainer {
|
||||
padding-bottom: 0; }
|
||||
.LanguageTabsJqueryUI .pw-content .langTabsContainer .InputfieldError,
|
||||
.LanguageTabsJqueryUI #content .langTabsContainer .InputfieldError {
|
||||
margin-bottom: 0; }
|
||||
.LanguageTabsJqueryUI .langTabs .ui-tabs-nav.ui-widget-header {
|
||||
padding: 2px 3px 0;
|
||||
border-bottom: none; }
|
||||
.LanguageTabsJqueryUI .langTabs .ui-tabs-panel {
|
||||
padding: 0.9em;
|
||||
border-top: none; }
|
||||
.LanguageTabsJqueryUI .langTabs .ui-tabs-panel .LanguageSupportLabel {
|
||||
display: none; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav {
|
||||
margin-bottom: 0; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav li {
|
||||
margin: 0 4px 0 0; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav li a {
|
||||
padding: 0.3em 0.7em;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
font-size: 0.846153846153846em; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-default {
|
||||
border: 1px solid #fff;
|
||||
padding-bottom: 0; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav li.ui-state-active {
|
||||
background: #fff; }
|
||||
.LanguageTabsJqueryUI .langTabs.ui-tabs .ui-tabs-nav li.ui-state-active a {
|
||||
cursor: default;
|
||||
background: #fff;
|
||||
margin: 0; }
|
||||
.LanguageTabsJqueryUI .langTabEmpty a {
|
||||
opacity: 0.7;
|
||||
font-weight: normal !important; }
|
||||
.LanguageTabsJqueryUI .InputfieldImage .InputfieldFileLink + .langTabsContainer {
|
||||
margin-top: 0.5em; }
|
||||
.LanguageTabsJqueryUI .hadLanguageSupport > .InputfieldContent > .LanguageSupport {
|
||||
margin-bottom: 0; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav {
|
||||
margin-bottom: 0; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav.ui-widget-header {
|
||||
padding: 2px 3px 0;
|
||||
border-bottom: none; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav li {
|
||||
margin: 0 4px 0 0; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav li a {
|
||||
padding: 0.3em 0.7em;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
font-size: 0.846153846153846em; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-default {
|
||||
border: 1px solid #fff;
|
||||
padding-bottom: 0; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active {
|
||||
background: #fff; }
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active a {
|
||||
cursor: default;
|
||||
background: #fff;
|
||||
margin: 0; }
|
||||
.langTabs.ui-tabs .ui-tabs-panel {
|
||||
padding: 0.9em;
|
||||
border-top: none; }
|
||||
.langTabs.ui-tabs .ui-tabs-panel .LanguageSupportLabel {
|
||||
display: none; }
|
||||
|
||||
.langTabsToggle {
|
||||
float: right;
|
||||
@@ -53,6 +39,22 @@
|
||||
.InputfieldStateCollapsed .langTabsToggle {
|
||||
display: none; }
|
||||
|
||||
.langTabEmpty a {
|
||||
opacity: 0.7;
|
||||
font-weight: normal !important; }
|
||||
|
||||
.langTabs > ul.ui-tabs {
|
||||
display: none; }
|
||||
|
||||
.hasLangTabs .langTabs > ul.ui-tabs {
|
||||
display: block; }
|
||||
|
||||
.InputfieldImage .InputfieldFileLink + .langTabsContainer {
|
||||
margin-top: 0.5em; }
|
||||
|
||||
.hadLanguageSupport > .InputfieldContent > .LanguageSupport {
|
||||
margin-bottom: 0; }
|
||||
|
||||
.langTabsHidden,
|
||||
.hadLanguageSupport .LanguageSupportLabel {
|
||||
display: none; }
|
||||
@@ -63,7 +65,105 @@
|
||||
right: 1em;
|
||||
display: none; }
|
||||
|
||||
/*
|
||||
.langTabs {
|
||||
position: relative;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body.LanguageTabsJqueryUI {
|
||||
.langTabs > ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hasLangTabs .langTabs > ul {
|
||||
display: block;
|
||||
}
|
||||
.pw-content .langTabsContainer,
|
||||
#content .langTabsContainer {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.pw-content .langTabsContainer .InputfieldError,
|
||||
#content .langTabsContainer .InputfieldError {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.langTabs .ui-tabs-nav.ui-widget-header {
|
||||
padding: 2px 3px 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
.langTabs .ui-tabs-panel {
|
||||
padding: 0.9em;
|
||||
border-top: none;
|
||||
}
|
||||
.langTabs .ui-tabs-panel .LanguageSupportLabel {
|
||||
display: none;
|
||||
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav li {
|
||||
margin: 0 4px 0 0;
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav li a {
|
||||
padding: 0.3em 0.7em;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
font-size: 0.846153846153846em;
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-default {
|
||||
border: 1px solid #fff;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active {
|
||||
background: #fff;
|
||||
}
|
||||
.langTabs.ui-tabs .ui-tabs-nav li.ui-state-active a {
|
||||
cursor: default;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
}
|
||||
.langTabEmpty a {
|
||||
opacity: 0.7;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
|
||||
.InputfieldImage .InputfieldFileLink + .langTabsContainer {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.hadLanguageSupport > .InputfieldContent > .LanguageSupport {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.langTabsToggle {
|
||||
float: right;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.InputfieldStateCollapsed .langTabsToggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.langTabsHidden,
|
||||
.hadLanguageSupport .LanguageSupportLabel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.langTabsNote {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 1em;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.langTabs > ul > li {
|
||||
cursor: pointer; }
|
||||
cursor: pointer;
|
||||
}
|
||||
*/
|
||||
|
||||
/*# sourceMappingURL=LanguageTabs.css.map */
|
||||
|
@@ -39,7 +39,7 @@ function setupLanguageTabs($form) {
|
||||
else $langTabs = $form.find('.langTabs');
|
||||
$langTabs.each(function() {
|
||||
var $this = $(this);
|
||||
if($this.hasClass('langTabsInit')) return;
|
||||
if($this.hasClass('langTabsInit') || $this.hasClass('ui-tabs')) return;
|
||||
var $inputfield = $this.closest('.Inputfield');
|
||||
var $content = $inputfield.children('.InputfieldContent');
|
||||
if(!$content.hasClass('langTabsContainer')) {
|
||||
|
@@ -1 +1 @@
|
||||
var clickLanguageTabActive=false;function longclickLanguageTab(c){if(clickLanguageTabActive){return}clickLanguageTabActive=true;var b=$(this);var d=b.attr("data-lang");var a=b.closest("form").find("a.langTab"+d).not(b);b.click();a.click();a.effect("highlight",250);setTimeout(function(){clickLanguageTabActive=false},250)}function setupLanguageTabs(b){var c;var a=ProcessWire.config.LanguageTabs;if(b.hasClass("langTabs")){c=b}else{c=b.find(".langTabs")}c.each(function(){var j=$(this);if(j.hasClass("langTabsInit")){return}var g=j.closest(".Inputfield");var f=g.children(".InputfieldContent");if(!f.hasClass("langTabsContainer")){if(g.find(".langTabsContainer").length==0){f.addClass("langTabsContainer")}}if(a.jQueryUI){j.tabs({active:a.activeTab})}j.addClass("langTabsInit");if(g.length){g.addClass("hasLangTabs")}var i=j.parent(".InputfieldContent");if(i.length){var e=$("<span></span>").attr("title",a.labelOpen).attr("class","langTabsToggle").append("<i class='fa fa-folder-o'></i>");i.prev(".InputfieldHeader").append(e)}var k=j.find("a");var h=null;var d=i.find(".langTabsNote");k.on("mouseover",function(){if(h){clearTimeout(h)}if(i.width()<500){return}h=setTimeout(function(){d.fadeIn("fast")},250)}).on("mouseout",function(){if(h){clearTimeout(h)}if(i.width()<500){return}h=setTimeout(function(){d.fadeOut("fast")},250)}).on("click",function(){var n=$(this);var o=n.closest("ul").siblings(".LanguageSupport");var m=o.filter(".LanguageSupportCurrent");var l=o.filter(n.attr("href"));if(m.attr("id")==l.attr("id")){n.trigger("longclick")}else{m.removeClass("LanguageSupportCurrent");l.addClass("LanguageSupportCurrent")}});if(!a.jQueryUI){k.eq(a.activeTab).click()}})}function toggleLanguageTabs(){var g=$(this);var b=g.closest(".InputfieldHeader");var d=b.next(".InputfieldContent");var f=b.parent(".Inputfield");var e=d.children(".langTabs");var c=e.children("ul");var a=ProcessWire.config.LanguageTabs;if(d.hasClass("langTabsContainer")){c.find("a").click();d.removeClass("langTabsContainer");f.removeClass("hasLangTabs").addClass("langTabsOff");g.addClass("langTabsOff");if(a.jQueryUI){e.tabs("destroy")}else{c.hide()}g.attr("title",ProcessWire.config.LanguageTabs.labelClose).find("i").removeClass("fa-folder-o").addClass("fa-folder-open-o")}else{d.addClass("langTabsContainer");f.addClass("hasLangTabs").removeClass("langTabsOff");g.removeClass("langTabsOff");if(a.jQueryUI){e.tabs()}else{c.show()}$(this).attr("title",a.labelOpen).find("i").addClass("fa-folder-o").removeClass("fa-folder-open-o")}return false}function hideLanguageTabs(){$(".InputfieldContent").each(function(){var c=0;$(this).children(".LanguageSupport").each(function(){if(++c==1){$(this).closest(".Inputfield").addClass("hadLanguageSupport");return}$(this).addClass("langTabsHidden")})});var b=$(".langTabs").find("li:eq(0)");var a=ProcessWire.config.LanguageTabs;if(!b.hasClass(a.liActiveClass)){b.find("a").click()}$(".langTabsToggle, .LanguageSupportLabel:visible, .langTabs > ul").addClass("langTabsHidden");$(".hasLangTabs").removeClass("hasLangTabs").addClass("hadLangTabs")}function unhideLanguageTabs(){$(".langTabsHidden").removeClass("langTabsHidden");$(".hadLangTabs").removeClass("hadLangTabs").addClass("hasLangTabs");$(".hadLanguageSupport").removeClass("hadLanguageSupport")}jQuery(document).ready(function(){$(document).on("click",".langTabsToggle",toggleLanguageTabs);$(document).on("longclick",".langTabs a",longclickLanguageTab);$(document).on("reloaded",".Inputfield",function(){setupLanguageTabs($(this))});$(document).on("AjaxUploadDone",".InputfieldHasFileList .InputfieldFileList",function(){setupLanguageTabs($(this))})});
|
||||
var clickLanguageTabActive=false;function longclickLanguageTab(c){if(clickLanguageTabActive){return}clickLanguageTabActive=true;var b=$(this);var d=b.attr("data-lang");var a=b.closest("form").find("a.langTab"+d).not(b);b.click();a.click();a.effect("highlight",250);setTimeout(function(){clickLanguageTabActive=false},250)}function setupLanguageTabs(b){var c;var a=ProcessWire.config.LanguageTabs;if(b.hasClass("langTabs")){c=b}else{c=b.find(".langTabs")}c.each(function(){var j=$(this);if(j.hasClass("langTabsInit")||j.hasClass("ui-tabs")){return}var g=j.closest(".Inputfield");var f=g.children(".InputfieldContent");if(!f.hasClass("langTabsContainer")){if(g.find(".langTabsContainer").length==0){f.addClass("langTabsContainer")}}if(a.jQueryUI){j.tabs({active:a.activeTab})}j.addClass("langTabsInit");if(g.length){g.addClass("hasLangTabs")}var i=j.parent(".InputfieldContent");if(i.length){var e=$("<span></span>").attr("title",a.labelOpen).attr("class","langTabsToggle").append("<i class='fa fa-folder-o'></i>");i.prev(".InputfieldHeader").append(e)}var k=j.find("a");var h=null;var d=i.find(".langTabsNote");k.on("mouseover",function(){if(h){clearTimeout(h)}if(i.width()<500){return}h=setTimeout(function(){d.fadeIn("fast")},250)}).on("mouseout",function(){if(h){clearTimeout(h)}if(i.width()<500){return}h=setTimeout(function(){d.fadeOut("fast")},250)}).on("click",function(){var n=$(this);var o=n.closest("ul").siblings(".LanguageSupport");var m=o.filter(".LanguageSupportCurrent");var l=o.filter(n.attr("href"));if(m.attr("id")==l.attr("id")){n.trigger("longclick")}else{m.removeClass("LanguageSupportCurrent");l.addClass("LanguageSupportCurrent")}});if(!a.jQueryUI){k.eq(a.activeTab).click()}})}function toggleLanguageTabs(){var g=$(this);var b=g.closest(".InputfieldHeader");var d=b.next(".InputfieldContent");var f=b.parent(".Inputfield");var e=d.children(".langTabs");var c=e.children("ul");var a=ProcessWire.config.LanguageTabs;if(d.hasClass("langTabsContainer")){c.find("a").click();d.removeClass("langTabsContainer");f.removeClass("hasLangTabs").addClass("langTabsOff");g.addClass("langTabsOff");if(a.jQueryUI){e.tabs("destroy")}else{c.hide()}g.attr("title",ProcessWire.config.LanguageTabs.labelClose).find("i").removeClass("fa-folder-o").addClass("fa-folder-open-o")}else{d.addClass("langTabsContainer");f.addClass("hasLangTabs").removeClass("langTabsOff");g.removeClass("langTabsOff");if(a.jQueryUI){e.tabs()}else{c.show()}$(this).attr("title",a.labelOpen).find("i").addClass("fa-folder-o").removeClass("fa-folder-open-o")}return false}function hideLanguageTabs(){$(".InputfieldContent").each(function(){var c=0;$(this).children(".LanguageSupport").each(function(){if(++c==1){$(this).closest(".Inputfield").addClass("hadLanguageSupport");return}$(this).addClass("langTabsHidden")})});var b=$(".langTabs").find("li:eq(0)");var a=ProcessWire.config.LanguageTabs;if(!b.hasClass(a.liActiveClass)){b.find("a").click()}$(".langTabsToggle, .LanguageSupportLabel:visible, .langTabs > ul").addClass("langTabsHidden");$(".hasLangTabs").removeClass("hasLangTabs").addClass("hadLangTabs")}function unhideLanguageTabs(){$(".langTabsHidden").removeClass("langTabsHidden");$(".hadLangTabs").removeClass("hadLangTabs").addClass("hasLangTabs");$(".hadLanguageSupport").removeClass("hadLanguageSupport")}jQuery(document).ready(function(){$(document).on("click",".langTabsToggle",toggleLanguageTabs);$(document).on("longclick",".langTabs a",longclickLanguageTab);$(document).on("reloaded",".Inputfield",function(){setupLanguageTabs($(this))});$(document).on("AjaxUploadDone",".InputfieldHasFileList .InputfieldFileList",function(){setupLanguageTabs($(this))})});
|
@@ -84,6 +84,7 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
|
||||
'aClass' => '',
|
||||
'loadStyles' => true,
|
||||
'loadScripts' => true,
|
||||
'tabField' => $this->get('tabField'),
|
||||
);
|
||||
|
||||
$settings = $this->wire('config')->get('LanguageTabs');
|
||||
|
@@ -1,10 +1,105 @@
|
||||
|
||||
.body.LanguageTabsJqueryUI {
|
||||
.pw-content .langTabsContainer,
|
||||
#content .langTabsContainer {
|
||||
// padding-bottom: 0;
|
||||
}
|
||||
.pw-content .langTabsContainer .InputfieldError,
|
||||
#content .langTabsContainer .InputfieldError {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.langTabs.ui-tabs {
|
||||
position: relative;
|
||||
padding: 0;
|
||||
|
||||
.ui-tabs-nav {
|
||||
margin-bottom: 0;
|
||||
&.ui-widget-header {
|
||||
padding: 2px 3px 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
li {
|
||||
margin: 0 4px 0 0;
|
||||
a {
|
||||
padding: 0.3em 0.7em;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
font-size: 0.846153846153846em;
|
||||
}
|
||||
}
|
||||
li.ui-state-active.ui-state-default {
|
||||
border: 1px solid #fff;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
li.ui-state-active {
|
||||
background: #fff;
|
||||
a {
|
||||
cursor: default;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-tabs-panel {
|
||||
padding: 0.9em;
|
||||
border-top: none;
|
||||
.LanguageSupportLabel {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.langTabsToggle {
|
||||
float: right;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.InputfieldStateCollapsed .langTabsToggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.langTabEmpty a {
|
||||
opacity: 0.7;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
|
||||
.langTabs > ul.ui-tabs {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hasLangTabs .langTabs > ul.ui-tabs {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.InputfieldImage .InputfieldFileLink + .langTabsContainer {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.hadLanguageSupport > .InputfieldContent > .LanguageSupport {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.langTabsHidden,
|
||||
.hadLanguageSupport .LanguageSupportLabel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.langTabsNote {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 1em;
|
||||
display: none;
|
||||
}
|
||||
/*
|
||||
.langTabs {
|
||||
position: relative;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.LanguageTabsJqueryUI {
|
||||
body.LanguageTabsJqueryUI {
|
||||
.langTabs > ul {
|
||||
display: none;
|
||||
}
|
||||
@@ -97,3 +192,4 @@
|
||||
.langTabs > ul > li {
|
||||
cursor: pointer;
|
||||
}
|
||||
*/
|
||||
|
@@ -4,7 +4,7 @@
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#columnWidthSlider {
|
||||
.InputfieldColumnWidthSlider {
|
||||
float: left;
|
||||
width: 70%;
|
||||
position: relative;
|
||||
|
@@ -34,7 +34,7 @@ $(document).ready(function() {
|
||||
setAsmListItemStatus();
|
||||
|
||||
if($columnWidth.size() > 0) {
|
||||
var $slider = $("<div id='columnWidthSlider'></div>");
|
||||
var $slider = $("<div class='InputfieldColumnWidthSlider'></div>");
|
||||
var columnWidthVal = parseInt($("#columnWidth").val());
|
||||
$columnWidth.val(columnWidthVal + '%');
|
||||
$columnWidth.after($slider);
|
||||
|
@@ -1 +1 @@
|
||||
$(document).ready(function(){var e=function(){$("#field_filter_form").submit()};$("#templates_id").change(e);$("#fieldtype").change(e);$("#show_system").click(e);var b=$("#asmListItemStatus");var d=$("#columnWidth");function a(){var i=b.attr("data-tpl");if(!i){return}var k=$("#Inputfield_showIf").val();var j=$("#Inputfield_required").is(":checked")?true:false;if(k&&k.length>0){i="<i class='fa fa-question-circle'></i>"+i}if(j){i="<i class='fa fa-asterisk'></i>"+i}var h=parseInt(d.val());if(h==100){h=0}if(h>0){h=h+"%"}else{h=""}i=i.replace("%",h);b.val(i)}$("#Inputfield_showIf").change(a);$("#Inputfield_required").change(a);a();if(d.size()>0){var f=$("<div id='columnWidthSlider'></div>");var c=parseInt($("#columnWidth").val());d.val(c+"%");d.after(f);f.slider({range:"min",min:10,max:100,value:parseInt(d.val()),slide:function(i,h){var j=h.value+"%";d.val(j);a()}});d.change(function(){var h=parseInt($(this).val());if(h>100){h=100}if(h<10){h=10}$(this).val(h+"%");f.slider("option","value",h)})}var g=$("#ProcessFieldEdit");if(g.size()>0&&$("li.WireTab").size()>1){g.find("script").remove();g.WireTabs({items:$(".Inputfields li.WireTab"),id:"FieldEditTabs",skipRememberTabIDs:["delete"]})}$("#fieldgroupContextSelect").change(function(){var i=$("#Inputfield_id").val();var j=$(this).val();var h="./edit?id="+i;if(j>0){h+="&fieldgroup_id="+j}window.location=h});$("a.fieldFlag").click(function(){return false});$("#export_data").click(function(){$(this).select()});$(".import_toggle input[type=radio]").change(function(){var h=$(this).parents("p.import_toggle").next("table");var i=$(this).closest(".InputfieldFieldset");if($(this).is(":checked")&&$(this).val()==0){h.hide();i.addClass("ui-priority-secondary")}else{h.show();i.removeClass("ui-priority-secondary")}}).change();$("#wrap_Inputfield_send_templates").find(":input").change(function(){$("#_send_templates_changed").val("changed")});$("#viewRoles_37").click(function(){if($(this).is(":checked")){$("input.viewRoles").attr("checked","checked")}});$("input.viewRoles:not(#viewRoles_37)").click(function(){if($("#viewRoles_37").is(":checked")){return false}return true});$("input.editRoles:not(:disabled)").click(function(){if($(this).is(":checked")){$(this).closest("tr").find("input.viewRoles").attr("checked","checked")}});$(".override-select-all").click(function(){var h=$(this).closest("table").find("input[type=checkbox]");if($(this).hasClass("override-checked")){h.removeAttr("checked");$(this).removeClass("override-checked")}else{h.attr("checked","checked");$(this).addClass("override-checked")}return false})});
|
||||
$(document).ready(function(){var e=function(){$("#field_filter_form").submit()};$("#templates_id").change(e);$("#fieldtype").change(e);$("#show_system").click(e);var b=$("#asmListItemStatus");var d=$("#columnWidth");function a(){var i=b.attr("data-tpl");if(!i){return}var k=$("#Inputfield_showIf").val();var j=$("#Inputfield_required").is(":checked")?true:false;if(k&&k.length>0){i="<i class='fa fa-question-circle'></i>"+i}if(j){i="<i class='fa fa-asterisk'></i>"+i}var h=parseInt(d.val());if(h==100){h=0}if(h>0){h=h+"%"}else{h=""}i=i.replace("%",h);b.val(i)}$("#Inputfield_showIf").change(a);$("#Inputfield_required").change(a);a();if(d.size()>0){var f=$("<div class='InputfieldColumnWidthSlider'></div>");var c=parseInt($("#columnWidth").val());d.val(c+"%");d.after(f);f.slider({range:"min",min:10,max:100,value:parseInt(d.val()),slide:function(i,h){var j=h.value+"%";d.val(j);a()}});d.change(function(){var h=parseInt($(this).val());if(h>100){h=100}if(h<10){h=10}$(this).val(h+"%");f.slider("option","value",h)})}var g=$("#ProcessFieldEdit");if(g.size()>0&&$("li.WireTab").size()>1){g.find("script").remove();g.WireTabs({items:$(".Inputfields li.WireTab"),id:"FieldEditTabs",skipRememberTabIDs:["delete"]})}$("#fieldgroupContextSelect").change(function(){var i=$("#Inputfield_id").val();var j=$(this).val();var h="./edit?id="+i;if(j>0){h+="&fieldgroup_id="+j}window.location=h});$("a.fieldFlag").click(function(){return false});$("#export_data").click(function(){$(this).select()});$(".import_toggle input[type=radio]").change(function(){var h=$(this).parents("p.import_toggle").next("table");var i=$(this).closest(".InputfieldFieldset");if($(this).is(":checked")&&$(this).val()==0){h.hide();i.addClass("ui-priority-secondary")}else{h.show();i.removeClass("ui-priority-secondary")}}).change();$("#wrap_Inputfield_send_templates").find(":input").change(function(){$("#_send_templates_changed").val("changed")});$("#viewRoles_37").click(function(){if($(this).is(":checked")){$("input.viewRoles").attr("checked","checked")}});$("input.viewRoles:not(#viewRoles_37)").click(function(){if($("#viewRoles_37").is(":checked")){return false}return true});$("input.editRoles:not(:disabled)").click(function(){if($(this).is(":checked")){$(this).closest("tr").find("input.viewRoles").attr("checked","checked")}});$(".override-select-all").click(function(){var h=$(this).closest("table").find("input[type=checkbox]");if($(this).hasClass("override-checked")){h.removeAttr("checked");$(this).removeClass("override-checked")}else{h.attr("checked","checked");$(this).addClass("override-checked")}return false})});
|
@@ -634,6 +634,7 @@ class ProcessPageAdd extends Process implements ConfigurableModule, WirePageEdit
|
||||
$inputfield = $field->getInputfield($page);
|
||||
if($inputfield) {
|
||||
if($this->template && $this->template->noLang) $inputfield->useLanguages = false;
|
||||
$inputfield->columnWidth = 100;
|
||||
$form->append($inputfield);
|
||||
}
|
||||
break;
|
||||
@@ -646,6 +647,7 @@ class ProcessPageAdd extends Process implements ConfigurableModule, WirePageEdit
|
||||
// skip it
|
||||
} else {
|
||||
$inputfield = $field->getInputfield($page);
|
||||
$inputfield->columnWidth = 100;
|
||||
if($inputfield) $form->append($inputfield);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user