Skip to content

Commit

Permalink
#0 update extension pdbox a btnSpinner
Browse files Browse the repository at this point in the history
- Extension `pdbox` nyní zachovává vypnutí historie pro automaticky zAJAXované odkazy a formuláře uvnitř otevřeného pdboxu. Tj. pokud je historie vypnutá při otevření pdboxu, zůstane i v rámci tohoto pdboxu vypnutá.
- Extension `btnSpinner` je možné použít nejen pro `<button>`, ale pro libovolný element spouštějící AJAXový požadavek (vzhledem k tomu, jak extension funguje, nejde použít např. pro `<input>`, protože do něj nelze vložit html kód).
  • Loading branch information
zipper committed Jan 3, 2019
1 parent ffe36e6 commit 23665b4
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 11 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ Vlastní extensions pro nette.ajax

## Changelog

### 1.3.0
- Extension `pdbox` nyní zachovává vypnutí historie pro automaticky zAJAXované odkazy a formuláře uvnitř otevřeného pdboxu. Tj. pokud je historie vypnutá při otevření pdboxu, zůstane i v rámci tohoto pdboxu vypnutá.
- Extension `btnSpinner` je možné použít nejen pro `<button>`, ale pro libovolný element spouštějící AJAXový požadavek (vzhledem k tomu, jak extension funguje, nejde použít např. pro `<input>`, protože do něj nelze vložit html kód).

### 1.2.3
- oprava chyby `scrollTo` extension, kdy:
- nebylo možno nastavit přes data atribut offset na 0
Expand Down
4 changes: 2 additions & 2 deletions extensions/pd/btnSpinner.ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@
});
},
start: function (xhr, settings) {
if ('nette' in settings && settings.nette.form && settings.nette.isSubmit) {
if ('nette' in settings && settings.nette.el && settings.nette.el.length) {
settings.$btnSpinner = $(this.spinnerHtml);
$(settings.nette.ui).append(settings.$btnSpinner);
settings.nette.el.append(settings.$btnSpinner);
}
},
complete: function (xhr, status, settings) {
Expand Down
34 changes: 26 additions & 8 deletions extensions/pdbox.ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @todo Nemělo by v lastState a original být též uloženo ui?
*/

// init a snippets jsou definovány v nette.ajax.js a history v history.nette.ajax.js, tj. vždy jsou v tuto chvíli dostupné (soubory musí být před pd.ajax soubory)
// init a snippets jsou definovány v nette.ajax.js a history v history.nette.ajax.js, tj. vždy jsou v tuto chvíli dostupné (soubory musí být před pd.ajax soubory)
var snippetsExt = $.nette.ext('snippets');
var historyExt = $.nette.ext('history');
var initExt = $.nette.ext('init');
Expand Down Expand Up @@ -75,23 +75,25 @@

// pokud success nastal po kliknutí na elementu s class this.pdboxSelector, vyvoláme load událost, nastavíme vlastnosti pdbox a pokud je povolená historie, nahradíme stávající stav naším, kde přidáváme do state vlastnost pdbox
if (('nette' in settings && 'el' in settings.nette && settings.nette.el.is(this.pdboxSelector)) || settings.pdbox) {
// je pro současný request povolená historie?
var requestHistory = ($.inArray('history', settings.off) === -1 && this.historySupported);

// zpracování vráceného redirectu v rámci pdbox
if (payload.redirect) {
var options = {
url: payload.redirect,
pdbox: true
};

if ($.inArray('history', settings.off) !== -1 || !this.historySupported) {
if (! requestHistory) {
options.off = ['history'];
} else {
this.historyEnabled = true;
}
if ('spinnerQueue' in settings) {
options.spinnerQueue = settings.spinnerQueue.slice(0);
settings.spinnerQueue = [];
}
if ($.inArray('history', settings.off) === -1 && this.historySupported) {
this.historyEnabled = true;
}

$.nette.ajax(options);

Expand All @@ -100,10 +102,24 @@

var $opener = ('nette' in settings && 'el' in settings.nette && settings.nette.el) ? settings.nette.el : null;

this.box.window.content.find(this.ajaxified).addClass(this.pdboxAutoClass); // .slice(1) odstraní z názvu class
this.box.dispatchEvent('load', {element: $opener, content: payload});
var $ajaxified = this.box.window.content.find(this.ajaxified);
$ajaxified.addClass(this.pdboxAutoClass);

// Pokud není historie při otevírání, vypneme ji i pro automaticky zAJAXované odkazy a formuláře
if (! requestHistory) {
$ajaxified.each(function() {
var off = $(this).attr('data-ajax-off') || '';

if ($.inArray('history', settings.off) === -1 && this.historySupported) {
if ((' ' + off + ' ').indexOf(' history ') === -1) {
off += (off ? ' ' : '') + 'history';

$(this).attr('data-ajax-off', off);
}
});
}

// Pokud je historie, upravíme nový stav přidáním 'pdbox' pole
if (requestHistory) {
this.historyEnabled = true;

// element, který otevřel pdbox; aby bylo možné serializovat, tak jako string a ne jako DOM element
Expand All @@ -119,6 +135,8 @@
ui: (historyExt && historyExt.cache && snippetsExt) ? snippetsExt.findSnippets() : null
}), document.title, location.href);
}

this.box.dispatchEvent('load', {element: $opener, content: payload});
}
},
complete: function () {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pd.ajax",
"title": "pd.ajax",
"description": "Collection of nette ajax extensions, including `pd` for creating disabled-by-deafult extensions",
"version": "1.2.3",
"version": "1.3.0",
"author": "PeckaDesign, s.r.o <[email protected]>",
"contributors": [
"Radek Šerý <[email protected]>",
Expand Down

0 comments on commit 23665b4

Please sign in to comment.