PDA

Zobacz pełną wersję : Accordion Menu źle wyświetlane w Operze



jakup13
11-01-2018, 10:12
Mam na stronie mdk.lublin.pl (http://www.mdk.lublin.pl/index.php?option=com_content&view=category&layout=blog&id=9&Itemid=161) moduł Code 7 Responsive Accordion Module - Pracownie przy Grodzkiej / przy Chrobrego, po prawej stronie.
W Firefoxie wyświetla się i działa poprawnie, tak jak potrzebuję, Opera natomiast przykrywa pozycje menu tymi poniżej, zwija wszystko "za bardzo".
Czy ktoś może wie, co Opera interpretuje inaczej od FF, że tak się dzieje? Co napisać, żeby obu przeglądarkom zrobić dobrze?
(Joomla 3.8.3)
Pozdrawiam

siristru
11-01-2018, 10:19
To wina parametru overflow:hidden.
Zobacz: http://prntscr.com/hyw7jl


@media only screen and (min-width: 320px) {
.fancypantsaccordionholder .accordion .accordion-item {
height: 30px;
border-bottom: 1px solid #ccc;
border-top: 1px solid #fff;
/* overflow: hidden; */
}
}

Zakomentuj jak wyżej albo nadpisz własnym ciągiem klas.

Poza tym widać, że tekst jest zawijany więc zmieści nie widać w FF.
Albo skróć teksty pozycji albo pobaw się w cess by to jakoś wyglądało.

jakup13
11-01-2018, 12:44
Zakomentuj jak wyżej albo nadpisz własnym ciągiem klas.

Dzięki, OK, bez overflow można zacząć myśleć, co dalej z wyglądem - zawijane wiersze, punktory itp.
Ale w Operze link "skacze" kilka pikseli w dół po kliknięciu, a po rozwinięciu danej pozycji wraca na miejsce więc jeszcze coś nie gra.

lukdan
11-01-2018, 12:53
spróbuj dodać w miejscu wskazanym przez @siristru:


display:block;

jakup13
11-01-2018, 13:26
spróbuj dodać w miejscu wskazanym przez @siristru:

display:block;

Tak, pomogło, dziękuję. Teraz działa w FF i Operze identycznie.
Pozostaje kwestia pozawijanych wierszy (które się rozwijają po kliknięciu w pozycję menu powyżej nich).
Może jeszcze jakiś pomysł?

siristru
11-01-2018, 14:02
Tak, skróć je albo powiększ panel boczny... albo zmniejsz czcionkę :P

jakup13
11-01-2018, 14:31
...albo wszystko razem i "cursor:magnifajer glas" :-)

Jakieś jeszcze pomysły? (@siristru się wyczerpał :P )

siristru
11-01-2018, 14:59
Nie wyczerpałem się - to są twoje alternatywy.

lukdan
11-01-2018, 15:02
Znacznik <li otrzymuje po rozwinięciu i zwinięciu stałą wysokość (style="height: 60px"), więc według mnie trzeba szukać w kodzie (js), bo cssem się tego nie nadpisze.

jakup13
12-01-2018, 08:56
W ustawieniach modułu jest m.in. opcja "Enter height of headings (px)" i tooltip "Leave blank for default 30px". pozostawienie tej opcji pustej powoduje w Operze błędne wyświetlanie (pozakrywane), ale już wpisanie tam wartości odmula moduł i teraz wyświetla się lepiej.
Szczyt szczęścia to nie jest, ale już przynajmniej widać i działa.

lukdan
12-01-2018, 09:09
Ale jak tam dasz 30px, to dalej nie działa?

jakup13
12-01-2018, 09:21
Dałem 30.
Podpowiedzi mówią, że pozostawienie pól pustych powoduje zastosowanie domyślnych wartości (14, 30, 10), czyli bez wpisywania czegokolwiek też powinno nadać te 30px i działać, ale nie działa (w Operze). Dopiero jak ręcznie wklepię na sztywno 30 lub jakąś inną wartość - działa.

9264

Teraz jest w miarę OK (http://www.mdk.lublin.pl/index.php?option=com_content&view=category&layout=blog&id=9&Itemid=161), kłóci się jeszcze z moimi nadpisaniami cssa, ale na razie w to nie wnikam.

lukdan
12-01-2018, 09:28
dalej po rozwinięciu i zwinięciu LI ma wysokość 60px ("poezja śpiewana.."). Jeśli jest teraz ustawione na stałe 30px, to tak jak pisałem wcześniej pozostaje tylko dłubanie w js'ie.

jakup13
12-01-2018, 09:35
pozostaje tylko dłubanie w js'ie

Pewnie tak.
Ale teraz przynajmniej zakrywa drugi wiersz przed rozwinięciem, nie nakładają się. Rozwiązanie tymczasowe, bo nie widać całych nazw pracowni.
Wrócę jeszcze do tego i dam znać jak już wydłubię.

siristru
12-01-2018, 09:51
Osobiście wolał bym raczej napisać własną modyfikację szablonu modułu i wykorzystać bootstrapa. Nie jest to bardzo trudne i da się zrobić. W moim przekonaniu i mniej dodatków tym lepiej... ale rozumiem, że to może być dla niektórych adminów nieco trudne. Może kiedyś znajdę czas by napisać taki tutek... ale nie obiecuję.

jakup13
12-01-2018, 10:11
@siristru czekam na tego tutka,
a nawet na początek może być trochę wyjaśnień, jakieś linki, trochę dokumentacji i spróbuję sam. Dać mi szansę!

siristru
12-01-2018, 13:08
Oooo, chcesz się uczyć? Bardzo dobrze, to rzadkość teraz.
Zacznij od tego: http://getbootstrap.com/2.3.2/javascript.html#collapse
Joomla! domyślnie używa skryptów bootstrapa, zatem trzeba to wykorzystać.
Na tej stronce jest składnia i przykład.

I teraz - dalej można na dwa sposoby:

1. Prosty: budujesz "statyczną" wersję w znaczeniu, że będzie to po prostu html, struktura + aktywne linki. Używasz do tego modułu HTML (custom html) i tam sobie kodujesz. Zaleta jest, że to proste, wadą, że statyczne - wszelkie zmiany, dodawanie elementów będą wymagały dodawania tam kodu. Tak samo aktualizacja linków.

2. Trudny: zakładam, że ten moduł zawiera artykuły i do nich linkuje (nie jest to menu samo w sobie). Zatem najlepiej wykorzystać moduł mod_articles_news. Wtedy robimy override
https://docs.joomla.org/Layout_Overrides_in_Joomla
I wykorzystujemy strukturę bootstrapa. Plik

ROOT/modules/mod_articles_news/tmpl/default.php

będzie zawierał część statyczną - tworzącą "zewnętrze" akordeonu. A Plik:

ROOT/modules/mod_articles_news/tmpl/_item.php

jako, że zawiera pętlę, będzie ładował wstępy artykułów czyli godziny i linki do pełnej treści.

Możesz skopiować te pliki i zmienić je nazwy by było przejrzyściej w strukturze. W ustawianiu stylu modułu wybierzesz nazwę z listy ;)
Pamiętaj tylko by w pliku default.php (czy jak go nazwiesz) zmienisz:


<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item'); ?>

_item na nazwę własnego pliku.

Ten moduł jest genialny w swojej prostocie. Wykorzystuję go bardzo często robiąc pokazy slajdów i inne cudaniewidy. Wtedy użytkownicy tylko tworzą nowe artykuły i wstawiają do nich treść np. obrazki, teksty. A kiedy wprowadzono dodatkowe pola... to tym modułem można zrobić niemal wszystko :)

Mam nadzieję, że tak wstępnie wszystko jest zrozumiałe - jak by co to pytaj. Najwyżej poprosimy modów o wydzielenie wątku.

jakup13
12-01-2018, 22:21
Oooo, chcesz się uczyć? Bardzo dobrze, to rzadkość teraz.
Tak, usiłuję i dzięki za pomoc! To też coraz rzadsze.

Tak na szybko mam następujące pytania:
1. Override bez zmiany nazw plików na własne po prostu nadpisze moduł i wszelkie zmiany mają wpływ na wszystkie dotychczasowe i przyszłe zastosowania tego modułu, tak? Rozumiem, że chodzi o ogólny wygląd i styl, czyli jak teraz w folderze "/html/mod_articles_news/" zmienię "default.php" na "innylayout.php" - dostanę nowy "Alternatywny układ" w opcjach, a zmieniając "_item.php" na "innystyl.php" będę miał nową pozycję na liście "Styl modułu" tak?
Po prostu wykorzystuję ten moduł na głównej stronie i nie chcę grzebać w nadpisaniu, żeby i jego nie zmieniać w akordeon.
2. No i nie za bardzo wiem jak tej składni bootstrapa (i gdzie konkretnie) używać, ale za link pięknie dziękuję :-) Podrzuć jakiś kawałek swojego override, będzie mi prościej. Proszę.

Przepraszam, że to taka łopatologia.

zwiastun
12-01-2018, 23:44
http://wiki.joomla.pl/Nadpisywanie_szablonem_i_uk%C5%82ady_alternatywne

siristru
13-01-2018, 11:45
1. Tak, dokładnie. Jeśli użyjesz pliku głównego bez zmiany nazwy - to nadpisze się każdym miejscu gdzie użyjesz. Jeśli zastosujesz własna nazwę - będziesz miał wybór - w ustawieniach moduły wybierasz layout z listy.

2. Tutaj jest przykładowy kod:


<div class="accordion" id="accordion2">
<div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne"> Collapsible Group Item #1
</a>
</div> <div id="collapseOne" class="accordion-body collapse in">
<div class="accordion-inner">
Anim pariatur cliche... </div> </div> </div> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo"> Collapsible Group Item #2 </a> </div> <div id="collapseTwo" class="accordion-body collapse"> <div class="accordion-inner"> Anim pariatur cliche... </div> </div> </div>
</div>


Zauważysz, że część jest stała (zewnętrzna) a część się powtarza - to są elementy rozwijane. Czyli powtarzające się elementu idą do pętli foreach.

Na spokojnie, w wolnej chwili postaram się taki override pokazać.

jakup13
13-01-2018, 22:37
Dzięki @zwiastun.

- - - Updated - - -


2. Tutaj jest przykładowy kod:
Kod HTML:
Tak, dzięki, widzę, ale to jest kod wynikowy i z grubsza czaję jego działanie, pętlę itd., chodzi mi o "dokonywanie zamierzonych zmian" w plikach ".php" - jak znając składnię (bootstrapa) modyfikować je, żeby rezultat był taki jak ten kod.
Mając w "_item.php"

defined('_JEXEC') or die;
$item_heading = $params->get('item_heading', 'h4');?><?php if ($params->get('item_title')) : ?>
<<?php echo $item_heading; ?> class="newsflash-title<?php echo $params->get('moduleclass_sfx'); ?>"> <?php if ($item->link !== '' && $params->get('link_titles')) : ?> <a href="<?php echo $item->link; ?>">[/HTML]
...
co dalej z tym zrobić?
Chodzi o samą edycję.

siristru
16-01-2018, 21:11
Jak obiecałem wyjaśniam.

1. Zrobiłem override czyli utworzyłem katalog mod_articles_news w katalogu html mojego szablonu.

2. Tam skopiowałem pliki default.php i _item.php.

3. Zmieniłem nazwę default.php na akordeon.php i _item.php na _item_akordeon.php.

4. Teraz pozostaje wywołać plik _item_akordeon w pętli foreach w pliku akordeon.php, owijając to zewnętrznym divem struktury akordeonu collapse:


<div class="accordion<?php echo $moduleclass_sfx; ?>" id="my-accordion">
<?php foreach ($list as $item) : ?>
<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item_akordeon'); ?>
<?php endforeach; ?>
</div>

5. Teraz czas na plik _item_akordeon.php. Tutaj należy wywołać elementy powtarzalne struktury akordeonu i wywołać odpowiednie treści jak tytuł i wprowadzenie.


<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#my-accordion" data-target="#collapse<?php echo $item->id; ?>">
<?php echo $item->title; ?>
</a>
</div>
<div id="collapse<?php echo $item->id; ?>" class="accordion-body collapse">
<div class="accordion-inner">
<?php if ($params->get('show_introtext', '1')) : ?>
<?php echo $item->introtext; ?>
<?php endif; ?>
<?php if (isset($item->link) && $item->readmore != 0 && $params->get('readmore')) : ?>
<?php echo '<a class="readmore" href="' . $item->link . '">' . $item->linkText . '</a>'; ?>
<?php endif; ?>
</div>
</div>
</div>

Ważne by wywołać unikatowe ID kontenera z wprowadzeniem dlatego wykorzystujemy najprostsze z możliwych - ID artykułu:


data-target="#collapse<?php echo $item->id; ?>"

Oraz to samo już w kontenerze z treścią:


<div id="collapse<?php echo $item->id; ?>" class="accordion-body collapse">

Teraz pozostaje już tylko wywołać tytuł artykułu który będzie przyciskiem akordeonu:


<?php echo $item->title; ?>

Oraz treść wprowadzenia i przycisk więcej:


<?php if ($params->get('show_introtext', '1')) : ?>
<?php echo $item->introtext; ?>
<?php endif; ?>
<?php if (isset($item->link) && $item->readmore != 0 && $params->get('readmore')) : ?>
<?php echo '<a class="readmore" href="' . $item->link . '">' . $item->linkText . '</a>'; ?>
<?php endif; ?>

Wszystko w zasadzie jest podane na tacy w plikach i dokumentacji collapse bootstrapa :)

Jeśli po złożeniu tego kodu nie będzie działać - to może oznaczać, że potrzebny jest aktywator dla collapse ale raczej powinno ruszyć bez problemu. Teraz potrzebujesz tylko stylizacji CSS (z tym pewnie sobie już poradzisz) i masz własny akordeon - jedno rozszerzenie mniej :)

Tutaj ustawienia modułu migawek - istotne ustawienia zaznaczone:

http://prntscr.com/i1dfre
http://prntscr.com/i1dg3x

Tutaj przykład jak to działa na mojej stronie:

http://siristru.prolusatia.pl/test/index.php?option=com_content&view=article&id=1&Itemid=108

Jak nie poradzisz sobie po tej instrukcji to zawsze mogę ci przesłać moje pliki.

jakup13
21-02-2018, 11:08
Dzięki!
Nie miałem czasu do tego zajrzeć, uczę się javy, czarna magia :-/
Ale u mnie akordeon nie działa tak jak u Ciebie - po kliknięciu kolejnego tytułu nie zwija się automatycznie ten poprzednio rozwinięty.

siristru
21-02-2018, 12:27
Ale u mnie akordeon nie działa tak jak u Ciebie - po kliknięciu kolejnego tytułu nie zwija się automatycznie ten poprzednio rozwinięty.

Może to świadczyć o konflikcie js skryptów lub problemem z jQuery.

jakup13
21-02-2018, 12:57
Może to świadczyć o konflikcie js skryptów lub problemem z jQuery.
Nie wiem o które js skrypty może chodzić, mogę powyłączać jakieś moduły albo odinstalować parę z nich plus dodatki, w ciemno :-(
Z jQuery też to samo.

siristru
21-02-2018, 13:28
Zobacz najpierw czy konsola przeglądarki pokaże jakieś błędy.

jakup13
21-02-2018, 13:47
Zobacz najpierw czy konsola przeglądarki pokaże jakieś błędy.


/*! jQuery Migrate v1.4.1 | (c) jQuery Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumera ble:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._d efinePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.1";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={} ,a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defe r|disabled|hidden|loop|multiple|open|readonly|requ ired|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b ,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test (j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:functi on(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.find,s=a.parseJSON,t=/^\s*</,u=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,v=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,w=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=w.exec(a.trim(b)))&&g[0]&&(t.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&e.context.nodeType&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML (g[2],e&&e.ownerDocument||e||document,!0),e,f):(h=q.apply(t his,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b. context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.ini t.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&u.test(a))try{document.querySelector(a)}catch(c){a =a.replace(v,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),d("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){d("Attribute selector with '#' was not fixed: "+b[0])}}return r.apply(this,b)};var x;for(x in r)Object.prototype.hasOwnProperty.call(r,x)&&(a.find[x]=r[x]);a.parseJSON=function(a){return a?s.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();v ar b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p= {},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.we bkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=th is,b.fn=b.prototype=this(),b.fn.constructor=b,b.su b=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var y=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return y=!0,a=d.apply(this,arguments),y=!1,a})}),a.swap=f unction(a,b,c,e){var f,g,h={};y||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var z=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._da ta(g,b),e!==c&&e!==f||f===c)?z.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var A=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||documen t,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)f or(i=function(a){return!a.type||A.test(a.type)?f?f .push(a.parentNode?a.parentNode.removeChild(a):a): e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var B=a.event.add,C=a.event.remove,D=a.event.trigger,E =a.fn.toggle,F=a.fn.live,G=a.fn.die,H=a.fn.load,I="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError |ajaxSuccess",J=new RegExp("\\b(?:"+I+")\\b"),K=/(?:^|\s)hover(\.\S+|)\b/,L=function(b){return"string"!=typeof b||a.event.special.hover?b:(K.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(K,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&J.test(b)&&d("AJAX events should be attached to document: "+b),B.call(this,a,L(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){C.cal l(this,a,L(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?H.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply (this,a):(this.triggerHandler.apply(this,a),this)) }}),a.fn.toggle=function(b,c){if(!a.isFunction(b)| |!a.isFunction(c))return E.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){v ar d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),F?F.apply(this,arguments):(a(this.context).on(b, this.selector,c,e),this)},a.fn.die=function(b,c){r eturn d("jQuery.fn.die() is deprecated"),G?G.apply(this,arguments):(a(this.context).off(b ,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){retur n c||J.test(a)||d("Global events are undocumented and deprecated"),D.call(this,a,b,c||document,e)},a.each(I.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototy pe.slice.call(arguments,1),b,!0)}),a._data(this,c, a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={se tup:function(){this===document&&d("'ready' event is deprecated")}};var M=a.fn.andSelf||a.fn.addBack,N=a.fn.find;if(a.fn.a ndSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),M.apply(this,arguments)},a.fn.find=function(a){v ar b=N.apply(this,arguments);return b.context=this.context,b.selector=this.selector?th is.selector+" "+a:a,b},a.Callbacks){var O=a.Deferred,P=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=O(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(P,function(f,g){va r h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve ).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=f unction(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window);


I jeszcze:
9302
O tym mówisz?

jakup13
28-02-2018, 08:47
Kto poradzi co teraz zrobić z tym jQuery? Jest ewidentnie coś nie tak, collapse nie działa w tym akordeonie.

siristru
28-02-2018, 13:40
Ale nie bardzo widzę co nie działa, wszystko działa zarówno w FF jak i Operze:
https://www.youtube.com/watch?v=RH19M_C_eNk

jakup13
28-02-2018, 13:44
Przepraszam, wyłączyłem.
Już wrzucam tymczasowo do testów: http://www.mdk.lublin.pl/menu2-archiwum
("Najświeższe")

siristru
28-02-2018, 14:01
A zobacz jak to działa z innym szablonem np. Protostar.

jakup13
28-02-2018, 14:40
A zobacz jak to działa z innym szablonem np. Protostar.
W ogóle nie działa - rozwinięty na sztywno
9304

(ale za to css ma spoko:-)

Zrobię później osobną stronę do testów, na razie wracam do domyślnego szablonu i zostawiam.

jakup13
20-03-2018, 10:38
Czy może ktoś pomóc z tym akordeonem? Jest jakiś konflikt w jQuery, konsola zwraca błąd "Pusty ciąg znaków przekazany do getElementById()." Elementy listy nie zwijają poprzednich po kliknięciu. Collapse nie działa.

siristru
20-03-2018, 11:20
Sprawdziłem i wydaje mi się, że problem leży w skrypcie bootstrap. Używasz skryptu nie z Joomli ale z T3
http://www.mdk.lublin.pl/plugins/system/t3/base-bs3/bootstrap/js/bootstrap.js?27ff75e554f9ed4b350746f7d16352c0
Te skrypty nie muszą być takie same i stąd różnica w działaniu.

jakup13
20-03-2018, 11:32
Ano, na to wygląda. Jaka na to rada?
Bo np. inny akordeon ma jasno:

public function load_jquery(&$params){
if($params->get('load_jquery')){
JLoader::import( 'joomla.version' );
$version = new JVersion();
if (version_compare( $version->RELEASE, '2.5', '<=')) {
$doc = &JFactory::getDocument();
$app = &JFactory::getApplication();
$file='//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
$file2=JURI::root(true).'/modules/mod_fancypantsaccordion/assets/js/no-conflict.js';
$doc->addScript($file);
$doc->addScript($file2);
} else {
JHtml::_('jquery.framework');
}

siristru
20-03-2018, 12:08
Ten kod tylko określa jakie jQuery załadować przy określonych wymaganiach akordeonu.
Joomla ma domyślnie jQuery 1.9 i to jest właśnie JHtml::_('jquery.framework');
A jak wymaga wyższej wersji to ładuje zdalną 2.5.

Zobacz w ustawieniach szablonu czy możesz wyłączyć ładowanie bootstrapa... ale to może mieć wpływ na szablon.

Rozwiązanie które podałem dotyczyło natywnych bibliotek Joomla! Jeśli ładowane sę inne z dodatków to mogą się pojawić problemy których doświadczasz.
To jest właśnie ten problem w którym developerzy ładują swoje biblioteki zamiast używać tych w Joomli... ale Joomla oferuje przestarzałe wersji i kółko się zamyka.

jakup13
20-03-2018, 12:29
Ten kod tylko określa jakie jQuery załadować przy określonych wymaganiach akordeonu.
No właśnie, a jakby coś podobnego dopisać do tego akordeonu, który Ty zaproponowałeś?

siristru
20-03-2018, 14:21
Ja wykorzystuję kod akordeonu z bootstrap 2.3.2 bo taka jest wersja w Joomla!
nic do niego nie dopiszesz bo to nie moduł tylko kod.
Poza tym to wykrywanie dotyczy jQuery a nie Bootstrapa.
Zobacz czy możesz wyłączyć Bootstrapa w szablonie T3 lub zobacz jaka wersję ładuje.
Jeśli inną niż 2.3.2 to trzeba użyć kodu akordeonu dla tej wersji.

jakup13
20-03-2018, 19:28
Nie ma chyba opcji wyłączenia ładowania bootstrapa w szablonie (zresztą to mało sensowne).
Poza 2.3.2 mam też base-bs3 i wersję 3.3.6. I tę wersję chyba wykorzystuje szablon, bo jak sama nazwa wskazuje to T3 BS3 Blank, z bootstrapem 3 i włączoną "legacy compatible" dla 2.3.2. Z tym, że ja tego collapse 3.3.6 nie napiszę sam :-(

siristru
20-03-2018, 22:05
Dasz radę :) Musisz jedynie przerobić szkielet akordeonu - tutaj masz doksy: https://getbootstrap.com/docs/3.3/javascript/#collapse-example-accordion