Overview
Comment: | Fix and improve UX for mobile use |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev | 1.0.0-alpha6 |
Files: | files | file ages | folders |
SHA1: |
cea689ace6439e72e8e097a6d0a61508 |
User & Date: | bohwaz on 2020-11-11 15:19:58 |
Other Links: | branch diff | manifest | tags |
Context
2020-11-11
| ||
15:49 | Fix negative values in expense/revenue (thanks @Fred) check-in: 9e0fbf1dd9 user: bohwaz tags: dev, 1.0.0-alpha6 | |
15:19 | Fix and improve UX for mobile use check-in: cea689ace6 user: bohwaz tags: dev, 1.0.0-alpha6 | |
13:46 | Fix: adding a payment to a service should be done after the service is saved check-in: 87493a2303 user: bohwaz tags: dev, 1.0.0-alpha6 | |
Changes
Modified src/templates/acc/charts/index.tpl from [222ec4aa08] to [085c49afb1].
︙ | ︙ | |||
30 31 32 33 34 35 36 | <tbody> {foreach from=$list item="item"} <tr{if $item.archived} class="disabled"{/if}> <td>{$item.country|get_country_name}</td> <th><a href="{$admin_url}acc/charts/accounts/?id={$item.id}">{$item.label}</a></th> <td>{if $item.code}Officiel{else}Personnel{/if}</td> <td>{if $item.archived}<em>Archivé</em>{/if}</td> | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <tbody> {foreach from=$list item="item"} <tr{if $item.archived} class="disabled"{/if}> <td>{$item.country|get_country_name}</td> <th><a href="{$admin_url}acc/charts/accounts/?id={$item.id}">{$item.label}</a></th> <td>{if $item.code}Officiel{else}Personnel{/if}</td> <td>{if $item.archived}<em>Archivé</em>{/if}</td> <td class="actions"> {linkbutton shape="star" label="Comptes favoris" href="acc/charts/accounts/?id=%d"|args:$item.id} {linkbutton shape="menu" label="Tous les comptes" href="acc/charts/accounts/all.php?id=%d"|args:$item.id} {if $session->canAccess('compta', Membres::DROIT_ADMIN)} {linkbutton shape="edit" label="Modifier" href="acc/charts/edit.php?id=%d"|args:$item.id} {linkbutton shape="export" label="Export CSV" href="acc/charts/export.php?id=%d"|args:$item.id} {linkbutton shape="export" label="Export tableur" href="acc/charts/export.php?id=%d&ods"|args:$item.id} {if !$item.code && !$item.archived} |
︙ | ︙ |
Modified src/templates/acc/reports/_header.tpl from [31fe879fc1] to [f3e75759d5].
︙ | ︙ | |||
15 16 17 18 19 20 21 | {if isset($projet)} <h3>Projet : {$projet.libelle}</h3> {else} <p>Exercice comptable {if $year.closed}clôturé{else}en cours{/if} du {$year.start_date|date_fr:'d/m/Y'} au {$year.end_date|date_fr:'d/m/Y'}, généré le {$close_date|date_fr:'d/m/Y'}</p> {/if} | | | 15 16 17 18 19 20 21 22 23 24 25 | {if isset($projet)} <h3>Projet : {$projet.libelle}</h3> {else} <p>Exercice comptable {if $year.closed}clôturé{else}en cours{/if} du {$year.start_date|date_fr:'d/m/Y'} au {$year.end_date|date_fr:'d/m/Y'}, généré le {$close_date|date_fr:'d/m/Y'}</p> {/if} <p class="noprint print-btn"> <button onclick="window.print(); return false;" class="icn-btn" data-icon="⎙">Imprimer</button> </p> </div> |
Modified src/templates/admin/config/membres.tpl from [390ae58764] to [97234c6526].
︙ | ︙ | |||
92 93 94 95 96 97 98 | <form method="post" action="{$self_url}"> <fieldset> <legend>Ajouter un champ personnalisé</legend> <dl> <dt><label for="f_name">Nom unique</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd class="help">Ne peut comporter que des lettres minuscules et des tirets bas.</dd> | | | | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | <form method="post" action="{$self_url}"> <fieldset> <legend>Ajouter un champ personnalisé</legend> <dl> <dt><label for="f_name">Nom unique</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd class="help">Ne peut comporter que des lettres minuscules et des tirets bas.</dd> <dd><input type="text" name="new" id="f_name" value="{form_field name=new}" required="required" /></dd> <dt><label for="f_title">Titre</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd><input type="text" name="new_title" id="f_title" value="{form_field name=new_title}" required="required" /></dd> <dt><label for="f_type">Type de champ</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd> <select name="new_type" id="f_type" required="required"> {foreach from=$types key="type" item="nom"} <option value="{$type}" {form_field name=new_type selected=$type}>{$nom}</option> {/foreach} </select> |
︙ | ︙ | |||
122 123 124 125 126 127 128 | {if $nom == 'passe'}{continue}{/if} <fieldset id="f_{$nom}"> <legend>{$nom}</legend> <dl> <dt><label>Type</label></dt> <dd><input type="hidden" name="champs[{$nom}][type]" value="{$champ.type}" />{$champ.type|get_type}</dd> <dt><label for="f_{$nom}_title">Titre</label> <b title="(Champ obligatoire)">obligatoire</b></dt> | | | | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | {if $nom == 'passe'}{continue}{/if} <fieldset id="f_{$nom}"> <legend>{$nom}</legend> <dl> <dt><label>Type</label></dt> <dd><input type="hidden" name="champs[{$nom}][type]" value="{$champ.type}" />{$champ.type|get_type}</dd> <dt><label for="f_{$nom}_title">Titre</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd><input type="text" name="champs[{$nom}][title]" id="f_{$nom}_title" value="{form_field data=$champs->$nom name=title}" required="required" /></dd> <dt><label for="f_{$nom}_help">Aide</label></dt> <dd><input type="text" name="champs[{$nom}][help]" id="f_{$nom}_help" value="{form_field data=$champs->$nom name=help}" /></dd> <dt><label><input type="checkbox" name="champs[{$nom}][private]" value="1" {form_field data=$champs->$nom name=private checked="1"} /> Caché pour les membres</label></dt> <dd class="help">Si coché, ce champ ne sera pas visible par les membres dans leur espace personnel.</dd> <dt><label><input type="checkbox" name="champs[{$nom}][editable]" value="1" {form_field data=$champs->$nom name=editable checked="1"} /> Modifiable par les membres</label></dt> <dd class="help">Si coché, les membres pourront changer cette information depuis leur espace personnel.</dd> <dt><label><input type="checkbox" name="champs[{$nom}][mandatory]" value="1" {form_field data=$champs->$nom name=mandatory checked="1"} /> Champ obligatoire</label></dt> <dd class="help">Si coché, ce champ ne pourra rester vide.</dd> {if $champ.type == 'select' || $champ.type == 'multiple'} <dt><label>Options disponibles</label></dt> {if $champ.type == 'multiple'} <dd class="help">Attention changer l'ordre des options peut avoir des effets indésirables.</dd> {else} <dd class="help">Attention renommer ou supprimer une option n'affecte pas ce qui a déjà été enregistré dans les fiches des membres.</dd> {/if} <dd> <{if $champ.type == 'multiple'}ol{else}ul{/if} class="options"> {if !empty($champ.options)} {foreach from=$champ.options key="key" item="opt"} <li><input type="text" name="champs[{$nom}][options][]" value="{$opt}" /></li> {/foreach} {/if} {if $champ.type == 'select' || empty($champ.options) || count($champ.options) < 32} <li><input type="text" name="champs[{$nom}][options][]" value="" /></li> {/if} </dd> {/if} <dt><label for="f_{$nom}_list_row">Numéro de colonne dans la liste des membres</label></dt> <dd class="help">Laisser vide ou indiquer le chiffre zéro pour que ce champ n'apparaisse pas dans la liste des membres. Inscrire un chiffre entre 1 et 10 pour indiquer l'ordre d'affichage du champ dans le tableau de la liste des membres.</dd> <dd><input type="number" id="f_{$nom}_list_row" name="champs[{$nom}][list_row]" min="0" max="10" value="{form_field data=$champs->$nom name=list_row}" /></dd> </dl> |
︙ | ︙ |
Modified src/templates/admin/index.tpl from [de2904cc75] to [280594afc5].
1 2 3 4 5 6 7 | {include file="admin/_head.tpl" title="Bonjour %s !"|args:$user.identite current="home"} {$banniere|raw} <nav class="tabs"> <ul> <li><a href="{$admin_url}mes_infos.php">Modifier mes informations personnelles</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | {include file="admin/_head.tpl" title="Bonjour %s !"|args:$user.identite current="home"} {$banniere|raw} <nav class="tabs"> <ul> <li><a href="{$admin_url}mes_infos.php">Modifier mes informations personnelles</a></li> <li><a href="{$admin_url}my_services.php">Suivi de mes cotisations</a></li> </ul> </nav> <aside class="describe"> <h3>{$config.nom_asso}</h3> {if !empty($config.adresse_asso)} <p> |
︙ | ︙ |
Modified src/templates/services/_service_form.tpl from [f4b4371dba] to [576ac0d0e7].
1 2 | {form_errors} | | | 1 2 3 4 5 6 7 8 9 10 | {form_errors} <form method="post" action="{$self_url}"> <fieldset> <legend>{$legend}</legend> <dl> {input name="label" type="text" required=1 label="Libellé" source=$service} {input name="description" type="textarea" label="Description" source=$service} |
︙ | ︙ |
Modified src/www/admin/static/admin.css from [7683289c5f] to [799a6dd915].
︙ | ︙ | |||
414 415 416 417 418 419 420 | padding: .2em .4em; margin: .2em .5em; transition: color .3s, background-color .3s; color: #333; } form .radio-btn h3 { | < | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 | padding: .2em .4em; margin: .2em .5em; transition: color .3s, background-color .3s; color: #333; } form .radio-btn h3 { text-decoration: underline; } form .radio-btn input { margin: 1em; } |
︙ | ︙ | |||
587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 | color: #fff; } /** Dialogs pop-ins */ #dialog { width: 100%; height: 100%; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); position: fixed; opacity: 1; transition: opacity .5s; z-index: 100000; display: flex; align-items: center; justify-content: center; } #dialog > iframe { width: 90%; height: 90%; border: none; | > > > > < > > > > > > > > | 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 | color: #fff; } /** Dialogs pop-ins */ #dialog { width: 100%; height: 100%; margin: 0; padding: 0; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); position: fixed; opacity: 1; transition: opacity .5s; z-index: 100000; display: flex; flex-direction: column; align-items: center; justify-content: center; border: none; } #dialog > iframe { width: 90%; height: 90%; border: none; box-shadow: 0px 0px 5px #000; } #dialog button { background: rgb(var(--gMainColor)); color: #fff; font-size: 1.3em; display: block; width: 90%; } .loader { width: 100%; min-height: 32px; display: block; position: relative; } |
︙ | ︙ | |||
975 976 977 978 979 980 981 | .year-header { text-align: center; margin-bottom: .8em; padding-bottom: .5em; border-bottom: 1pt solid #999; } | | | 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 | .year-header { text-align: center; margin-bottom: .8em; padding-bottom: .5em; border-bottom: 1pt solid #999; } .year-header .print-btn button { font-size: 1.3rem; } .year-infos { text-align: center; } |
︙ | ︙ |
Modified src/www/admin/static/handheld.css from [2785cac0a7] to [b035449fe2].
1 2 3 4 5 6 7 8 9 10 | body { background-position: -180px 0px; background-attachment: scroll; font-size: 11pt; } .header h1 { margin: 0; text-align: center; font-size: 1.2em; | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | body { background-position: -180px 0px; background-attachment: scroll; font-size: 11pt; } .header h1 { margin: 0; text-align: center; font-size: 1.2em; margin: 6em 0 .3em 0; } .header .menu { background: none !important; position: fixed; bottom: inherit; overflow: visible; |
︙ | ︙ | |||
77 78 79 80 81 82 83 84 85 86 87 | .header .menu > ul > li.current_parent b { color: rgb(var(--gMainColor)); } .header .menu > ul > li.current > ul, .header .menu > ul > li.current_parent > ul { display: flex; position: absolute; top: 30pt; left: 0; right: 0; | > > < > < > > | | | | > | > | < > | > > > > > > | 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | .header .menu > ul > li.current_parent b { color: rgb(var(--gMainColor)); } .header .menu > ul > li.current > ul, .header .menu > ul > li.current_parent > ul { display: flex; flex-wrap: wrap; justify-content: center; position: absolute; top: 30pt; left: 0; right: 0; background: rgba(255, 255, 255, 0.75); border-bottom: .2rem solid rgba(var(--gMainColor), 0.5); } .header .menu > ul > li.current > ul li, .header .menu > ul > li.current_parent > ul li { text-align: center; display: block; } .header .menu > ul > li.current > ul a, .header .menu > ul > li.current_parent > ul a { background: rgb(var(--gSecondColor), 0.3); border-radius: .5em; margin: .2rem; color: rgb(var(--gMainColor)); padding: .3em .5em; font-size: .9em; font-weight: normal; } .header .menu > ul > li > ul li.current a { background: rgb(var(--gSecondColor)); color: #fff; } main { margin: 0; padding: .1em; } nav.tabs ul { border: none; padding: 0; margin: .3em 0; justify-content: center; } nav.tabs ul li a, nav.tabs ul li label { margin: .1em; border-radius: .5em; } nav.tabs .sub { margin: 1em 0; border: none; border-top: .2rem dashed rgb(var(--gSecondColor)); } .filterCategory, .searchMember { width: auto; float: none; } pre.sql_schema, .wikiChildren, fieldset.wikiMain, fieldset.wikiRights, fieldset.wikiEncrypt { |
︙ | ︙ | |||
161 162 163 164 165 166 167 168 169 | width: auto; margin-left: 0; margin-right: 0; } /* Petits écrans (smartphones) */ @media screen and (max-width:600px) { table.list td, table.list th { display: inline-block; | > > > > | > > > > > > > > > > > > > > > > | > > > | > > > > > > > > > > > > > > > | > > | > > > > > > > > > > > > > > > > > > > > > | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 | width: auto; margin-left: 0; margin-right: 0; } /* Petits écrans (smartphones) */ @media screen and (max-width:600px) { table.list tr { display: block; } table.list td, table.list th { display: inline-block; border-left: 2px dashed #999; width: auto !important; } colgroup { /* Hack pour désactiver les largeurs de colonnes */ display: none; } .print-btn { display: none; } .radio-btn input { position: absolute; right: 1em; } table.list td:first-child, table.list th:first-child { border-left: none; } .infos_asso { float: none; width: auto; } nav.acc-year { flex-direction: column; border: none; border-radius: 0; background: rgba(var(--gMainColor), 0.2); font-size: .8em; } .actions, table.list .actions { text-align: center; } .actions a { margin: .2em; font-size: .9em; } nav.tabs aside { float: none; text-align: center; } #dialog { background: black; } #dialog > iframe { width: 100%; height: 100%; margin: 0; } #dialog > button { border: none; background: none; } body#popup main { margin: .2em; } dl.list { text-align: center; } table.statement td, table.statement tr { display: block; } dl.describe { grid-template: auto / 30% 1fr; } } |
Modified src/www/admin/static/scripts/global.js from [772e0fb33f] to [27094d6a98].
︙ | ︙ | |||
96 97 98 99 100 101 102 | if (null !== g.dialog) { g.closeDialog(); } g.dialog = document.createElement('dialog'); g.dialog.id = 'dialog'; g.dialog.open = true; | > > > > > > > > > | | > < | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | if (null !== g.dialog) { g.closeDialog(); } g.dialog = document.createElement('dialog'); g.dialog.id = 'dialog'; g.dialog.open = true; var btn = document.createElement('button'); btn.className = 'icn-btn'; btn.setAttribute('data-icon', '✘'); btn.type = 'button'; btn.innerHTML = 'Fermer'; btn.onclick = g.closeDialog; g.dialog.appendChild(btn); content.style.opacity = g.dialog.style.opacity = 0; g.dialog.appendChild(content); g.dialog.onclick = (e) => { if (e.target == g.dialog) g.closeDialog(); }; window.onkeyup = (e) => { if (e.key == 'Escape') g.closeDialog(); }; document.body.appendChild(g.dialog); // Restore CSS defaults window.setTimeout(() => { g.dialog.style.opacity = ''; }, 50); window.setTimeout(() => { content.style.opacity = ''; }, 100); } g.openFrameDialog = function (url) { var iframe = document.createElement('iframe'); iframe.src = url; iframe.name = 'dialog'; iframe.frameborder = '0'; iframe.scrolling = 'yes'; iframe.width = iframe.height = 0; iframe.onload = () => { iframe.contentWindow.onkeyup = (e) => { if (e.key == 'Escape') g.closeDialog(); };} g.openDialog(iframe); }; g.closeDialog = function () { if (null === g.dialog) { return; } var d = g.dialog; d.style.opacity = 0; window.onkeyup = g.dialog = null; window.setTimeout(() => { d.parentNode.removeChild(d); }, 500); } // From KD2fw/js/xhr.js g.load = function(b,d,f,e){var a=new XMLHttpRequest();if(!a||!b)return false;if(a.overrideMimeType)a.overrideMimeType('text/xml');b+=(b.indexOf('?')+1?'&':'?')+(+(new Date));a.onreadystatechange=function(){if(a.readyState!=4)return;if((s=a.status)==200){if(!d)return true;var c=a.responseText;if(f=='json'){return((j=window.JSON)&&j.parse)?j.parse(c):eval('('+c.replace(/[\n\r]/g,'')+')')}d(c)}else if(e){e(s)}};a.open('GET',b,true);a.send(null)}; |
︙ | ︙ | |||
252 253 254 255 256 257 258 259 260 261 262 263 264 265 | i.appendChild(span); g.closeDialog(); i.firstChild.focus(); }; g.formatMoney = (v) => { var s = v < 0 ? '-' : ''; v = '' + Math.abs(v); return s + (v.substr(0, v.length-2) || '0') + ',' + ('00' + v).substr(-2); }; g.getMoneyAsInt = (v) => { v = v.replace(/[^0-9.,]/, ''); | > > > > | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 | i.appendChild(span); g.closeDialog(); i.firstChild.focus(); }; g.formatMoney = (v) => { if (!v) { return '0,00'; } var s = v < 0 ? '-' : ''; v = '' + Math.abs(v); return s + (v.substr(0, v.length-2) || '0') + ',' + ('00' + v).substr(-2); }; g.getMoneyAsInt = (v) => { v = v.replace(/[^0-9.,]/, ''); |
︙ | ︙ |