Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| js:choca_menu2 [2024/10/30 11:43] – avillepreux | js:choca_menu2 [2026/05/29 14:17] (Version actuelle) – supprimée avillepreux | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | <CSS> | ||
| - | |||
| - | .toggle_choca { cursor: pointer; } | ||
| - | |||
| - | /* CHOCA MENU */ | ||
| - | | ||
| - | .dw-content > .plugin_include_content: | ||
| - | .dw-content > .plugin_include_content: | ||
| - | |||
| - | display: flex; | ||
| - | gap: 1em; | ||
| - | white-space: | ||
| - | flex-wrap: wrap; | ||
| - | border-top: 3px solid var(--color-theme); | ||
| - | padding-top: | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca > .wrap_column { | ||
| - | |||
| - | float: none; | ||
| - | margin: 0; | ||
| - | flex-grow: 1; | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca > * > * { | ||
| - | |||
| - | border: 1px solid #bcbcbc; | ||
| - | box-shadow: 1px 1px 6px 3px #00000012; | ||
| - | border-radius: | ||
| - | padding: 0; | ||
| - | margin: 0 0 10px; | ||
| - | background-color: | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca > * > * > :is(p,ul) { | ||
| - | padding: 0.1em 0.3em; | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca > * > * > : | ||
| - | font-weight: | ||
| - | display: block; | ||
| - | background: #7a7a7a11; | ||
| - | border: none; | ||
| - | margin: 0.1em 0 0; | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca ul { | ||
| - | list-style: none; | ||
| - | margin: 0; | ||
| - | overflow: visible; | ||
| - | } | ||
| - | .wrap_nav.wrap_choca ul ul { | ||
| - | padding-inline: | ||
| - | overflow: hidden; | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca .submenu-toggle { | ||
| - | cursor: pointer; | ||
| - | padding: 0 0.3em 0 0.3em; | ||
| - | color: #999; | ||
| - | display: inline-block; | ||
| - | width: -webkit-fill-available; | ||
| - | } | ||
| - | |||
| - | /* niveau 1 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca > * > *:before { | ||
| - | content: " | ||
| - | color: #999; | ||
| - | float: right; | ||
| - | pointer-events: | ||
| - | } | ||
| - | .wrap_nav.wrap_choca > * > * > P { | ||
| - | cursor: pointer; | ||
| - | } | ||
| - | .wrap_nav.wrap_choca > * > * { | ||
| - | transition: | ||
| - | } | ||
| - | .wrap_nav.wrap_choca > * > *: | ||
| - | content: " | ||
| - | } | ||
| - | .wrap_nav.wrap_choca > * > *: | ||
| - | height: 2.0em; | ||
| - | overflow: hidden; | ||
| - | } | ||
| - | |||
| - | .wrap_nav.wrap_choca > .wrap_column > p, | ||
| - | .wrap_nav.wrap_choca > * > p: | ||
| - | { | ||
| - | display: none; | ||
| - | } | ||
| - | |||
| - | |||
| - | /* Currently selected page */ | ||
| - | |||
| - | .dokuwiki .wrap_choca .curid: | ||
| - | content: " | ||
| - | color: var(--color-accent, | ||
| - | margin-left: | ||
| - | } | ||
| - | |||
| - | .dokuwiki .wrap_choca ul { | ||
| - | height: auto; | ||
| - | transition: all .1s; | ||
| - | } | ||
| - | .dokuwiki .wrap_choca ul: | ||
| - | height: 0; | ||
| - | / | ||
| - | / | ||
| - | } | ||
| - | .dokuwiki .wrap_choca ul: | ||
| - | / | ||
| - | / | ||
| - | } | ||
| - | |||
| - | / | ||
| - | /* Status */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status { padding-right: | ||
| - | |||
| - | .wrap_menu_update_status { /* position: absolute; top: 4px; right: 32px; */ color: #FFAA0088; cursor: pointer; } | ||
| - | |||
| - | / | ||
| - | /* V1 (projets/ | ||
| - | |||
| - | /* | ||
| - | Need design : 🧠 | ||
| - | Need integration : ⌨💻 | ||
| - | Need QA :🎮 | ||
| - | Done :☑ ✓ ✅ | ||
| - | */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.need.design: | ||
| - | .wrap_nav.wrap_choca a span.status.need.integration: | ||
| - | .wrap_nav.wrap_choca a span.status.need.qa: | ||
| - | .wrap_nav.wrap_choca a span.status.done: | ||
| - | |||
| - | /* Combinatoire pour les noeuds parents */ | ||
| - | |||
| - | /* x2 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.done.need.qa: | ||
| - | .wrap_nav.wrap_choca a span.status.done.need.integration: | ||
| - | .wrap_nav.wrap_choca a span.status.done.need.design: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.need.qa.need.integration: | ||
| - | .wrap_nav.wrap_choca a span.status.need.qa.need.design: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.need.integration.need.design: | ||
| - | |||
| - | /* x3 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.done.need.qa.need.integration: | ||
| - | .wrap_nav.wrap_choca a span.status.done.need.qa.need.design: | ||
| - | .wrap_nav.wrap_choca a span.status.done.need.integration.need.design: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.need.qa.need.integration.need.design: | ||
| - | |||
| - | /* x4 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.done.need.qa.need.integration.need.design: | ||
| - | |||
| - | / | ||
| - | /* V2 (Styx / Avalon/ */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.design.ready: | ||
| - | .wrap_nav.wrap_choca a span.status.updated: | ||
| - | .wrap_nav.wrap_choca a span.status.information: | ||
| - | .wrap_nav.wrap_choca a span.status.review: | ||
| - | .wrap_nav.wrap_choca a span.status.rework: | ||
| - | |||
| - | /* Combinatoire pour les noeuds parents */ | ||
| - | |||
| - | /* x2 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.information: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.review: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.updated.information: | ||
| - | .wrap_nav.wrap_choca a span.status.updated.review: | ||
| - | .wrap_nav.wrap_choca a span.status.updated.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.information.review: | ||
| - | .wrap_nav.wrap_choca a span.status.information.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.review.rework: | ||
| - | |||
| - | /* x3 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.information: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.review: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.rework: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.information.review: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.information.rework: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.review.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.updated.information.review: | ||
| - | .wrap_nav.wrap_choca a span.status.updated.information.rework: | ||
| - | .wrap_nav.wrap_choca a span.status.updated.review.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.information.review.rework: | ||
| - | |||
| - | /* x4 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.information.review: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.information.rework: | ||
| - | .wrap_nav.wrap_choca a span.status.design.ready.updated.review.rework: | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.updated.information.review: | ||
| - | |||
| - | /* x5 */ | ||
| - | |||
| - | .wrap_nav.wrap_choca a span.status.updated.updated.information.review.rework: | ||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | /* CHOCA MENU */ | ||
| - | |||
| - | jQuery(function() { | ||
| - | |||
| - | if (typeof choca_nav === ' | ||
| - | { | ||
| - | console.log(" | ||
| - | | ||
| - | choca_nav = true; | ||
| - | |||
| - | /* Status */ | ||
| - | |||
| - | var statuses = [ | ||
| - | |||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | ]; | ||
| - | |||
| - | function at(a, i, d = false) { | ||
| - | |||
| - | if (typeof a == " | ||
| - | if (!(i in a)) return d; | ||
| - | return a[i]; | ||
| - | } | ||
| - | |||
| - | function cookie_get(name) { | ||
| - | |||
| - | var json = localStorage.getItem(name, | ||
| - | /*var json = Cookies.get(name); | ||
| - | if (typeof json == " | ||
| - | value = {}; try { value = JSON.parse(json); | ||
| - | return value; | ||
| - | } | ||
| - | |||
| - | function cookie_set(name, | ||
| - | |||
| - | var json = " | ||
| - | try { json = JSON.stringify(value); | ||
| - | / | ||
| - | localStorage.setItem(name, | ||
| - | } | ||
| - | | ||
| - | function update_status_load(offset) { | ||
| - | | ||
| - | var status = jQuery(" | ||
| - | var value = status == " | ||
| - | | ||
| - | value += offset; | ||
| - | status = value == 0 ? " | ||
| - | | ||
| - | jQuery(" | ||
| - | } | ||
| - | | ||
| - | var update_status_button_li = jQuery('< | ||
| - | jQuery(" | ||
| - | |||
| - | jQuery(" | ||
| - | | ||
| - | for (var s = 0; s < statuses.length; | ||
| - | { | ||
| - | var status = statuses[s]; | ||
| - | cookie_set(" | ||
| - | } | ||
| - | |||
| - | choca_menu_init_indicators(true); | ||
| - | }); | ||
| - | |||
| - | function choca_menu_update_status_from_page(id, | ||
| - | | ||
| - | for (var s = 0; s < statuses.length; | ||
| - | { | ||
| - | var status = statuses[s]; | ||
| - | |||
| - | var cookie_link_status = cookie_get(" | ||
| - | |||
| - | if (status == " | ||
| - | if (status == " | ||
| - | if (status == " | ||
| - | if (status == " | ||
| - | | ||
| - | cookie_set(" | ||
| - | } | ||
| - | |||
| - | choca_menu_update_status_from_cookies(id, | ||
| - | } | ||
| - | |||
| - | function choca_menu_update_status_from_cookies(id, | ||
| - | | ||
| - | for (var s = 0; s < statuses.length; | ||
| - | { | ||
| - | var status = statuses[s]; | ||
| - | |||
| - | var cookie_link_status = cookie_get(" | ||
| - | |||
| - | if (id in cookie_link_status) { | ||
| - | | ||
| - | if (status == " | ||
| - | if (status == " | ||
| - | if (status == " | ||
| - | if (status == " | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | |||
| - | function choca_menu_init_indicators(parse_pages) | ||
| - | { | ||
| - | var block_index = 0; | ||
| - | |||
| - | jQuery(" | ||
| - | |||
| - | ++block_index; | ||
| - | |||
| - | var block_title = jQuery(this).find("> | ||
| - | var block_menu | ||
| - | | ||
| - | block_title.attr(" | ||
| - | | ||
| - | if (block_title.find(" | ||
| - | |||
| - | var block_span = jQuery('< | ||
| - | block_title.prepend(block_span); | ||
| - | } | ||
| - | |||
| - | var block_id = 100*100*block_index; | ||
| - | block_title.attr(" | ||
| - | | ||
| - | console.log(block_index, | ||
| - | |||
| - | if (block_title.attr(" | ||
| - | && | ||
| - | && | ||
| - | |||
| - | var s = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_cookies(block_id, | ||
| - | | ||
| - | if (parse_pages) { | ||
| - | |||
| - | update_status_load(1); | ||
| - | |||
| - | jQuery.ajax({ | ||
| - | |||
| - | url: block_title.attr(" | ||
| - | context: | ||
| - | async: | ||
| - | success: | ||
| - | |||
| - | var _block_id = this; | ||
| - | |||
| - | var s = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_page(this, | ||
| - | }, | ||
| - | |||
| - | complete: function () { | ||
| - | |||
| - | update_status_load(-1); | ||
| - | } | ||
| - | }); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | var level1_index = 0; | ||
| - | |||
| - | block_menu.find("> | ||
| - | |||
| - | ++level1_index; | ||
| - | | ||
| - | var lvl1_title = jQuery(this).find("> | ||
| - | var lvl1_menu | ||
| - | | ||
| - | lvl1_title.attr(" | ||
| - | |||
| - | if (lvl1_title.find(" | ||
| - | | ||
| - | var lvl1_span = jQuery('< | ||
| - | lvl1_title.prepend(lvl1_span); | ||
| - | } | ||
| - | |||
| - | var lvl1_id = 100*100*block_index + 100*level1_index; | ||
| - | lvl1_title.attr(" | ||
| - | |||
| - | console.log(block_index, | ||
| - | |||
| - | if (lvl1_title.attr(" | ||
| - | && | ||
| - | && | ||
| - | |||
| - | var s = " | ||
| - | var s1 = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_cookies(lvl1_id, | ||
| - | | ||
| - | if (parse_pages) { | ||
| - | |||
| - | update_status_load(1); | ||
| - | |||
| - | jQuery.ajax({ | ||
| - | |||
| - | url: lvl1_title.attr(" | ||
| - | context: | ||
| - | async: | ||
| - | success: | ||
| - | |||
| - | var _lvl1_id | ||
| - | var _block_id = 100*100*parseInt(_lvl1_id / (100*100)); | ||
| - | |||
| - | var s = " | ||
| - | var s1 = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_page(this, | ||
| - | }, | ||
| - | |||
| - | complete: function () { | ||
| - | |||
| - | update_status_load(-1); | ||
| - | } | ||
| - | }); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | var level2_index = 0; | ||
| - | |||
| - | lvl1_menu.find("> | ||
| - | |||
| - | ++level2_index; | ||
| - | | ||
| - | var lvl2_title = jQuery(this).find("> | ||
| - | |||
| - | var lvl2_id = 100*100*block_index + 100*level1_index + level2_index; | ||
| - | lvl2_title.attr(" | ||
| - | |||
| - | if (lvl2_title.find(" | ||
| - | | ||
| - | var lvl2_span = jQuery('< | ||
| - | lvl2_title.prepend(lvl2_span); | ||
| - | } | ||
| - | | ||
| - | console.log(block_index, | ||
| - | |||
| - | if (lvl2_title.attr(" | ||
| - | && | ||
| - | && | ||
| - | |||
| - | var s = " | ||
| - | var s2 = " | ||
| - | var s1 = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_cookies(lvl2_id, | ||
| - | | ||
| - | if (parse_pages) { | ||
| - | | ||
| - | update_status_load(1); | ||
| - | |||
| - | jQuery.ajax({ | ||
| - | |||
| - | url: lvl2_title.attr(" | ||
| - | context: | ||
| - | async: | ||
| - | success: | ||
| - | |||
| - | var _lvl2_id | ||
| - | var _lvl1_id | ||
| - | var _block_id = 100*100*parseInt(_lvl1_id / (100*100)); | ||
| - | |||
| - | var s = " | ||
| - | var s2 = " | ||
| - | var s1 = " | ||
| - | var s0 = " | ||
| - | |||
| - | choca_menu_update_status_from_page(this, | ||
| - | }, | ||
| - | |||
| - | complete: function () { | ||
| - | |||
| - | update_status_load(-1); | ||
| - | } | ||
| - | }); | ||
| - | } | ||
| - | } | ||
| - | }); | ||
| - | }); | ||
| - | }); | ||
| - | } | ||
| - | |||
| - | var page = window.location.pathname.substring(window.location.pathname.lastIndexOf('/' | ||
| - | | ||
| - | var use_cookies_menu | ||
| - | var use_cookies_submenu = true; | ||
| - | |||
| - | /* Niveau 1 */ | ||
| - | | ||
| - | var menu_id = 0; | ||
| - | | ||
| - | jQuery(" | ||
| - | | ||
| - | ++menu_id; | ||
| - | | ||
| - | if (use_cookies_menu) { | ||
| - | |||
| - | jQuery(this).attr(" | ||
| - | |||
| - | var menu_click_coockie = cookie_get(' | ||
| - | var hidden = at(menu_click_coockie, | ||
| - | | ||
| - | if (!hidden) { | ||
| - | jQuery(this).attr(' | ||
| - | } | ||
| - | } | ||
| - | |||
| - | jQuery(this).find(" | ||
| - | | ||
| - | if (event.target.tagName == " | ||
| - | |||
| - | if (!!jQuery(this).parent().attr(" | ||
| - | jQuery(this).parent().removeAttr(" | ||
| - | else | ||
| - | jQuery(this).parent().attr(" | ||
| - | | ||
| - | if (use_cookies_menu) { | ||
| - | |||
| - | var hidden = !jQuery(this).parent().attr(" | ||
| - | |||
| - | var id = jQuery(this).parent().attr(" | ||
| - | |||
| - | var menu_click_coockie = cookie_get(' | ||
| - | |||
| - | if (hidden) { | ||
| - | menu_click_coockie[id] = true; | ||
| - | |||
| - | } else { | ||
| - | menu_click_coockie[id] = false; | ||
| - | } | ||
| - | |||
| - | cookie_set(' | ||
| - | } | ||
| - | | ||
| - | }); | ||
| - | | ||
| - | }); | ||
| - | | ||
| - | jQuery(" | ||
| - | | ||
| - | if (!!jQuery(this).attr(" | ||
| - | jQuery(this).removeAttr(" | ||
| - | else | ||
| - | jQuery(this).attr(" | ||
| - | | ||
| - | jQuery(" | ||
| - | }); | ||
| - | | ||
| - | /* Niveau 2 */ | ||
| - | | ||
| - | var submenu_id = 0; | ||
| - | | ||
| - | jQuery(" | ||
| - | | ||
| - | ++submenu_id; | ||
| - | | ||
| - | var l2 = jQuery(this); | ||
| - | | ||
| - | var l2_title | ||
| - | var l2_submenu = l2.find(" | ||
| - | | ||
| - | l2_submenu.attr(" | ||
| - | | ||
| - | if (l2_submenu.find(" | ||
| - | { | ||
| - | l2_title.append('< | ||
| - | | ||
| - | var l2_toogle = l2_title.find(" | ||
| - | |||
| - | var submenu_click_coockie = cookie_get(' | ||
| - | var hidden = !at(submenu_click_coockie, | ||
| - | | ||
| - | if (hidden) { | ||
| - | l2_submenu.addClass(" | ||
| - | } | ||
| - | |||
| - | jQuery(document).on(' | ||
| - | |||
| - | var id = jQuery(e.target).attr(" | ||
| - | jQuery(' | ||
| - | |||
| - | var hidden = jQuery(' | ||
| - | |||
| - | var submenu_click_coockie = cookie_get(' | ||
| - | |||
| - | if (hidden) { | ||
| - | submenu_click_coockie[id] = false; | ||
| - | } else { | ||
| - | submenu_click_coockie[id] = true; | ||
| - | } | ||
| - | |||
| - | cookie_set(' | ||
| - | }); | ||
| - | } | ||
| - | }); | ||
| - | |||
| - | choca_menu_init_indicators(false); | ||
| - | } | ||
| - | }); | ||
| - | |||
| - | </JS> | ||