Changeset 3763979
- Timestamp:
- 10/25/2026 06:13:21 AM (2 hours ago)
- Location:
- oh6kw-jasenrekisteri
- Files:
-
- 14 edited
- 1 copied
-
tags/4.9.0 (copied) (copied from oh6kw-jasenrekisteri/trunk )
-
tags/4.9.0/CHANGELOG.md (modified) (1 diff)
-
tags/4.9.0/README.md (modified) (1 diff)
-
tags/4.9.0/assets/admin.css (modified) (1 diff)
-
tags/4.9.0/assets/admin.js (modified) (1 diff)
-
tags/4.9.0/includes/settings.php (modified) (9 diffs)
-
tags/4.9.0/oh6kw-jasenrekisteri.php (modified) (2 diffs)
-
tags/4.9.0/readme.txt (modified) (2 diffs)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/README.md (modified) (1 diff)
-
trunk/assets/admin.css (modified) (1 diff)
-
trunk/assets/admin.js (modified) (1 diff)
-
trunk/includes/settings.php (modified) (9 diffs)
-
trunk/oh6kw-jasenrekisteri.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
oh6kw-jasenrekisteri/tags/4.9.0/CHANGELOG.md
r3755968 r3763979 2 2 3 3 Tekijä: Jarno Jaskari (oh6kw). Versiosta 3.0 alkaen lisäosaa on kehitetty yhdessä Claude-tekoälyn (Anthropic) kanssa. 4 5 ## 4.9.0 (2026-10-25) 6 7 ### Asetussivu selkeämmäksi – vain ulkoasu muuttuu 8 - Asetukset on jaettu välilehdille: **Yhdistys**, **Jäsenet**, **Laskut**, **Sähköposti** ja **Ylläpito**. Kaikki kentät ovat edelleen samassa lomakkeessa: *Tallenna asetukset* tallentaa kaikkien välilehtien asetukset kerralla, eikä mikään asetus muutu tai katoa. Avoinna ollut välilehti muistetaan. 9 - **Yhdistys:** nimi, IBAN, BIC, Y-tunnus ja osoite. 10 - **Jäsenet:** jäsenten lisätunniste (siirretty yhdistyksen tiedoista), jäsenluokat, omat lisäkentät ja merkkipäivät. 11 - **Laskut** omissa lokeroissaan: *Kaikki laskut* (oletussaate ja maksukoodi), *Sähköpostilaskut* (malli ja PDF-liite), *Paperilaskut* (postimaksu, malli ja palautusosoite), *Maksumuistutukset* (muistutuksen teksti ja automaattinen muistutus yhdessä), *Maksuvahvistus* ja *Jäsenmaksut kirjanpitoon*. 12 - **Sähköposti:** lähettäjä, vastausosoite ja yhteystiedot viestien alalaitaan sekä `{omat_tiedot}`-kentät. 13 - **Muutosloki:** muutoslokin säilytysaika. 14 - **Varmuuskopiot ja poisto:** varmuuskopio ja siirto, automaattinen varmuuskopio sähköpostiin sekä lisäosan poistaminen. 15 - Muilta sivuilta tulevat linkit (esim. *Asetukset → Paperilaskut*, *Jäsenluokat*, *Varmuuskopio*) avaavat oikean välilehden. Jos tallennettaessa jokin kenttä on virheellinen (esim. sähköpostiosoite), sen välilehti avataan, jotta selain voi näyttää virheen. Ilman JavaScriptiä välilehtirivi on piilossa ja kaikki asetukset näkyvät allekkain kuten ennen. 16 - README:n asetussivun kuva päivitetty (Laskut-välilehti). 4 17 5 18 ## 4.8.9 (2026-10-19) -
oh6kw-jasenrekisteri/tags/4.9.0/README.md
r3755968 r3763979 90 90 |  **Lasku:** lähetys, muistutukset ja maksutilanne. Maksajan nimi ja poikkeava summa näkyvät. |  **Jäsenen saama sähköpostilasku (maksukortti):** summa ja eräpäivä, kopioitavat maksutiedot, QR-koodi ja virtuaaliviivakoodi. | 91 91 |  **Uusi lasku:** summat jäsenluokittain. Luokat, joiden jäsenmaksu on 0 €, jätetään laskutuksesta pois. |  **Maksujen tuonti pankista:** esikatselu ennen kirjausta. | 92 |  **Jäsenen tiedot** sekä kaikki laskut ja maksut. |  **Asetukset :** jäsenluokat ja automaattinen muistutus. |92 |  **Jäsenen tiedot** sekä kaikki laskut ja maksut. |  **Asetukset** välilehdillä: laskujen asetukset omissa lokeroissaan. | 93 93 |  **Tiedote** koko jäsenistölle tai yhdelle luokalle. |  **Laskut:** maksukertymä ja maksujen tuonti. | 94 94 |  **Paperilaskut** laskun sivulla: tulosta, laita kuoreen ja merkitse postitetuksi. |  **Tulostettava lasku** ikkunakuoreen (C5 tai DL) tilisiirtolomakkeella. Sähköpostilaskun PDF-liite on samanlainen. | -
oh6kw-jasenrekisteri/tags/4.9.0/assets/admin.css
r3755968 r3763979 254 254 .jasrek-mail-intro { max-width: 900px; margin: 12px 0 14px; } 255 255 .jasrek-esikatselu .jasrek-preview-frame { display: block; width: 100%; max-width: 700px; height: 640px; border: 1px solid var(--jasrek-border); border-radius: 6px; background: #eef1f5; } 256 257 /* Asetussivun välilehdet */ 258 .jasrek-settabs { margin-bottom: 16px; } 259 .jasrek-tab[hidden] { display: none; } 260 .jasrek-panel h3 { font-size: 1em; margin: 18px 0 6px; } 261 .jasrek-save { margin-top: 4px; } -
oh6kw-jasenrekisteri/tags/4.9.0/assets/admin.js
r3755968 r3763979 194 194 }); 195 195 196 // Asetussivun välilehdet: kaikki kentät ovat samassa lomakkeessa, joten tallennus koskee aina kaikkia. 197 // Ilman JavaScriptiä kaikki välilehdet näkyvät allekkain. 198 (function () { 199 var $nav = $('.jasrek-settabs'); 200 if (!$nav.length) return; 201 $nav.prop('hidden', false); // ilman JavaScriptiä välilehtirivi pysyy piilossa ja kaikki näkyy allekkain 202 var KEY = 'jasrek_asetus_tab'; 203 function show(k, keepHash) { 204 if (!$nav.find('a[data-tab="' + k + '"]').length) k = $nav.find('a').first().data('tab'); 205 $('.jasrek-tab').each(function () { $(this).prop('hidden', $(this).data('tab') !== k); }); 206 $nav.find('a').removeClass('nav-tab-active').filter('[data-tab="' + k + '"]').addClass('nav-tab-active'); 207 try { window.localStorage.setItem(KEY, k); } catch (err) { /* ei tallennusta */ } 208 if (!keepHash && window.history && history.replaceState) history.replaceState(null, '', '#' + k); 209 } 210 // Avaa välilehti, jolla annettu elementti on (esim. linkki …#jasrek-paperi-asetukset) 211 function showFor(id) { 212 var $el = id ? $(document.getElementById(id)) : $(); 213 if (!$el.length) return false; 214 var $tab = $el.closest('.jasrek-tab'); 215 if (!$tab.length) return false; 216 show($tab.data('tab'), true); 217 setTimeout(function () { $el[0].scrollIntoView({ block: 'start' }); }, 0); 218 return true; 219 } 220 var hash = window.location.hash.replace('#', ''); 221 if (!showFor(hash)) { 222 var k = hash; 223 if (!$nav.find('a[data-tab="' + k + '"]').length) { 224 try { k = window.localStorage.getItem(KEY) || ''; } catch (err) { k = ''; } 225 } 226 show(k, !hash); 227 } 228 $nav.on('click', 'a', function (e) { e.preventDefault(); show($(this).data('tab')); }); 229 $(window).on('hashchange', function () { 230 var h = window.location.hash.replace('#', ''); 231 if (!showFor(h) && $nav.find('a[data-tab="' + h + '"]').length) show(h, true); 232 }); 233 $(document).on('click', 'a[href^="#jasrek-"]', function (e) { 234 if (showFor(this.getAttribute('href').slice(1))) e.preventDefault(); 235 }); 236 // Virheellinen kenttä piilotetulla välilehdellä: näytetään se, jotta selain voi kertoa virheestä 237 document.addEventListener('invalid', function (e) { 238 var tab = $(e.target).closest('.jasrek-tab'); 239 if (tab.length && tab.prop('hidden')) show(tab.data('tab')); 240 }, true); 241 })(); 242 196 243 // Sähköpostin esikatselu: kehys yhtä korkeaksi kuin viesti 197 244 function fitPreview(frame) { -
oh6kw-jasenrekisteri/tags/4.9.0/includes/settings.php
r3755968 r3763979 146 146 <h1>Jäsenrekisterin asetukset</h1> 147 147 <?php jasrek_notice(); ?> 148 <nav class="nav-tab-wrapper jasrek-navtabs jasrek-settabs" hidden> 149 <a class="nav-tab" href="#yhdistys" data-tab="yhdistys">Yhdistys</a> 150 <a class="nav-tab" href="#jasenet" data-tab="jasenet">Jäsenet</a> 151 <a class="nav-tab" href="#laskut" data-tab="laskut">Laskut</a> 152 <a class="nav-tab" href="#sposti" data-tab="sposti">Sähköposti</a> 153 <a class="nav-tab" href="#loki" data-tab="loki">Muutosloki</a> 154 <a class="nav-tab" href="#varmuus" data-tab="varmuus">Varmuuskopiot ja poisto</a> 155 </nav> 156 <div class="jasrek-tab" data-tab="varmuus"> 157 <?php jasrek_backup_panel(); ?> 158 </div> 148 159 <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" class="jasrek-form"> 149 160 <input type="hidden" name="action" value="jasrek_save_settings"> 150 161 <?php wp_nonce_field('jasrek_save_settings'); ?> 151 162 163 164 <div class="jasrek-tab" data-tab="yhdistys"> 152 165 <div class="jasrek-panel"> 153 166 <h2>Yhdistys ja tilitiedot</h2> 154 <p class="description">Näkyvät laskuissa .</p>167 <p class="description">Näkyvät laskuissa ja tilisiirtolomakkeessa.</p> 155 168 <div class="jasrek-grid"> 156 169 <p class="jasrek-span-2"><label for="jasrek-yhdistys">Yhdistyksen nimi (laskun saaja)</label> … … 170 183 <textarea id="jasrek-osoite" name="osoite" rows="2" style="max-width:420px" placeholder="esim. Kerhotie 1 60100 Seinäjoki"><?php echo esc_textarea($s['osoite']); ?></textarea> 171 184 <span class="description">Yhdistyksen virallinen osoite. Näkyy tilisiirtolomakkeen Saaja-kentässä ja tietosuojaselosteen rekisterinpitäjän tiedoissa. Kuoren palautusosoitteen voi antaa erikseen kohdassa <em>Paperilaskut</em>.</span></p> 172 <fieldset class="jasrek-fieldset" id="jasrek-lisatunniste"><legend>Jäsenten lisätunniste</legend> 173 <span class="description">Vapaaehtoinen lisäkenttä jäsenille, esim. jäsennumero, tunnus tai kutsutunnus. Näkyy jäsenlistassa, jäsenen lomakkeella ja laskussa. Nimen voi vaihtaa vapaasti.</span> 185 </div> 186 </div> 187 <div class="jasrek-tab" data-tab="jasenet"> 188 <div class="jasrek-panel" id="jasrek-lisatunniste"> 189 <h2>Jäsenten lisätunniste</h2> 190 <span class="description">Vapaaehtoinen lisäkenttä jäsenille, esim. jäsennumero, tunnus tai kutsutunnus. Näkyy jäsenlistassa, jäsenen lomakkeella ja laskussa. Nimen voi vaihtaa vapaasti.</span> 174 191 <label class="jasrek-radio"><input type="checkbox" name="tunnus_kaytossa" value="1" <?php checked($s['tunnus_kaytossa'], '1'); ?>> Lisätunniste käytössä</label> 175 192 <div class="jasrek-grid"> … … 178 195 <p><label class="jasrek-radio" style="margin-top:28px"><input type="checkbox" name="tunnus_isot" value="1" <?php checked($s['tunnus_isot'], '1'); ?>> Muunna isoiksi kirjaimiksi (esim. kutsutunnukset)</label></p> 179 196 </div> 180 </fieldset>181 <p><label for="jasrek-maksukoodi">Maksukoodi laskussa</label>182 <select id="jasrek-maksukoodi" name="maksukoodi">183 <option value="molemmat" <?php selected($s['maksukoodi'], 'molemmat'); ?>>QR-koodi ja pankkiviivakoodi</option>184 <option value="qr" <?php selected($s['maksukoodi'], 'qr'); ?>>Vain QR-koodi</option>185 <option value="viivakoodi" <?php selected($s['maksukoodi'], 'viivakoodi'); ?>>Vain pankkiviivakoodi</option>186 <option value="ei" <?php selected($s['maksukoodi'], 'ei'); ?>>Ei kuvaa (vain virtuaaliviivakoodi tekstinä)</option>187 </select>188 <span class="description">QR-koodi on EPC-standardin mukainen (viite RF-muodossa, jonka pankit kohdistavat samaan viitteeseen). Pankkiviivakoodi on perinteinen suomalainen laskun viivakoodi. Virtuaaliviivakoodi tekstinä on laskussa aina.</span></p>189 <fieldset class="jasrek-fieldset"><legend>Sähköpostilaskun malli</legend>190 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="perus" <?php checked($s['sposti_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot taulukkona sekä QR-koodi ja pankkiviivakoodi kuvina (kohdan <em>Maksukoodi laskussa</em> mukaan).</label>191 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="maksukortti" <?php checked($s['sposti_malli'], 'maksukortti'); ?>> <strong>Maksukortti</strong> (suositus) – summa ja eräpäivä isolla, maksun tiedot allekkain helposti kopioitavina, virtuaaliviivakoodi ja QR-koodi (jos valittu kohdassa <em>Maksukoodi laskussa</em>). Toimii hyvin puhelimessa ja tietokoneella. Pankkiviivakoodia ei näytetä, koska sitä ei voi lukea näytöltä – tulostettava lasku viivakoodeineen tulee PDF-liitteenä, jos se on valittu alla.</label>192 <label class="jasrek-radio"><input type="checkbox" name="sposti_pdf" value="1" <?php checked($s['sposti_pdf'], '1'); ?>> <strong>Liitä lasku PDF:nä</strong> – viestin liitteenä sama lasku kuin paperilaskussa: A4-sivu tilisiirtolomakkeineen, QR-koodi ja pankkiviivakoodi kohdan <em>Maksukoodi laskussa</em> mukaan. Jäsen voi tulostaa ja arkistoida laskun. Liite kasvattaa viestiä noin 5–10 kt. Koskee myös muistutuksia ja testilaskuja.</label>193 </fieldset>194 <p><label for="jasrek-yhteystiedot">Yhteystiedot viestien alalaitaan</label>195 <textarea id="jasrek-yhteystiedot" name="yhteystiedot" rows="3" placeholder="Esim. Yhdistys ry · rahastonhoitaja@example.fi · www.example.fi"><?php echo esc_textarea($s['yhteystiedot']); ?></textarea></p>196 197 </div> 197 198 … … 223 224 <p><button type="button" class="button" id="jasrek-laji-add">+ Lisää jäsenluokka</button></p> 224 225 <p class="description">Jos poistat luokan, sen jäsenet siirtyvät välilehdelle ”Ilman jäsenluokkaa”, josta heille voi valita uuden luokan joukkona. Luokan voi nimetä uudelleen – jäsenet pysyvät siinä.</p> 225 </div>226 227 <div class="jasrek-panel" id="jasrek-paperi-asetukset">228 <h2>Paperilaskut</h2>229 <p class="description">Paperilaskun saavat jäsenet, joille on valittu ”Haluaa laskun paperilla”, sekä jäsenet ilman sähköpostia.</p>230 <p><label for="jasrek-postimaksu">Postimaksu (€)</label>231 <input type="text" id="jasrek-postimaksu" name="postimaksu" inputmode="decimal" style="max-width:140px" value="<?php echo esc_attr(number_format((float) $s['postimaksu'], 2, ',', '')); ?>" placeholder="0,00">232 <span class="description">Lisätään jäsenmaksuun vain paperilaskun saajille, esim. postimerkin ja kirjekuoren hinta. 0 = ei postimaksua. Summaa voi muuttaa laskua tehdessä.233 Postimaksu näkyy laskussa omana rivinään, ja se on mukana QR- ja viivakoodin summassa. Sähköpostilaskuihin sitä ei lisätä.234 Saatetekstissä <code>{summa}</code> on jäsenmaksu ilman postimaksua ja <code>{maksettava}</code> maksettava yhteensä.</span></p>235 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend>236 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="perus" <?php checked($s['paperi_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot, QR-koodi ja pankkiviivakoodi saatteen alla.</label>237 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="tilisiirto" <?php checked($s['paperi_malli'], 'tilisiirto'); ?>> <strong>Tilisiirtolomake</strong> – perinteinen suomalainen pankkisiirtolomake sivun alareunassa, QR-koodi sen yläpuolella. Saateteksti mahtuu noin puolelle sivulle.</label>238 <span class="description">Kummassakin mallissa jäsenen nimi ja osoite osuvat ikkunakuoren (C5 tai DL) ikkunaan. QR-koodi ja pankkiviivakoodi tulostuvat kohdan <em>Maksukoodi</em> mukaan.</span>239 </fieldset>240 <p><label for="jasrek-postiosoite">Palautusosoite (kuoren ikkuna)</label>241 <textarea id="jasrek-postiosoite" name="postiosoite" rows="2" style="max-width:420px" placeholder="esim. Rahastonhoitaja Matti Meikäläinen Kotikatu 5, 60100 Seinäjoki"><?php echo esc_textarea($s['postiosoite']); ?></textarea>242 <span class="description">Tulostetaan pienellä ikkunakuoren ikkunaan vastaanottajan yläpuolelle, jotta kirje palautuu, jos sitä ei voida toimittaa. Voi olla eri kuin yhdistyksen osoite, esim. rahastonhoitajan osoite, jos yhdistyksellä ei ole postilaatikkoa. Yhdistyksen nimi lisätään eteen automaattisesti.243 Mahtuu enintään kaksi riviä (noin 110 merkkiä yhdistyksen nimi mukaan lukien); pidempi teksti pienennetään tai siitä varoitetaan tulostettaessa. Tyhjänä palautusosoitetta ei tulosteta.</span></p>244 226 </div> 245 227 … … 276 258 </div> 277 259 260 <div class="jasrek-panel" id="jasrek-merkkipaivat"> 261 <h2>Merkkipäivät</h2> 262 <p class="description">Vuosiraportti ja jäsenlista kertovat, ketkä täyttävät valittuja tasavuosia tai ovat olleet jäsenenä valitut vuodet. Täytettävät vuodet lasketaan jäsenen tiedoissa olevasta <em>syntymävuodesta tai -päivästä</em>. Kenttä on vapaaehtoinen, ja se näkyy jäsenen lomakkeella vain, kun merkkipäivät ovat käytössä. Jos jäsenestä on merkitty vain syntymävuosi, merkkipäivä näkyy vuosiraportissa ilman päivää. Jäsenyysvuodet lasketaan liittymispäivästä. Tyhjä kenttä = sitä merkkipäivää ei näytetä.</p> 263 <p><label class="jasrek-radio"><input type="checkbox" name="merkki_kaytossa" value="1" <?php checked($s['merkki_kaytossa'], '1'); ?>> Merkkipäivät käytössä</label> 264 <span class="description">Pois päältä merkkipäiviä ei näytetä jäsenlistassa, vuosiraportissa eikä Excel-viennissä, eikä jäsenen lomakkeella kysytä syntymävuotta. Asetetut vuodet ja tallennetut syntymävuodet säilyvät.</span></p> 265 <div class="jasrek-grid"> 266 <p><label for="jasrek-merkki-ika">Täytettävät vuodet</label> 267 <input type="text" id="jasrek-merkki-ika" name="merkki_ika" value="<?php echo esc_attr($s['merkki_ika']); ?>" placeholder="50, 60, 70, 80, 90"></p> 268 <p><label for="jasrek-merkki-jasen">Jäsenyysvuodet</label> 269 <input type="text" id="jasrek-merkki-jasen" name="merkki_jasen" value="<?php echo esc_attr($s['merkki_jasen']); ?>" placeholder="10, 20, 25, 30, 40, 50"></p> 270 </div> 271 </div> 272 </div> 273 <div class="jasrek-tab" data-tab="laskut"> 274 <div class="jasrek-panel" id="jasrek-laskut-yleiset"> 275 <h2>Kaikki laskut</h2> 276 <p class="description">Koskevat sekä sähköposti- että paperilaskuja.</p> 277 <p><label for="jasrek-vo">Laskun saateteksti (oletus uusille laskuille)</label> 278 <textarea id="jasrek-vo" name="viesti_oletus" rows="7"><?php echo esc_textarea($s['viesti_oletus']); ?></textarea> 279 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vo', 'lasku')); ?></p> 280 <p><label for="jasrek-maksukoodi">Maksukoodi laskussa</label> 281 <select id="jasrek-maksukoodi" name="maksukoodi"> 282 <option value="molemmat" <?php selected($s['maksukoodi'], 'molemmat'); ?>>QR-koodi ja pankkiviivakoodi</option> 283 <option value="qr" <?php selected($s['maksukoodi'], 'qr'); ?>>Vain QR-koodi</option> 284 <option value="viivakoodi" <?php selected($s['maksukoodi'], 'viivakoodi'); ?>>Vain pankkiviivakoodi</option> 285 <option value="ei" <?php selected($s['maksukoodi'], 'ei'); ?>>Ei kuvaa (vain virtuaaliviivakoodi tekstinä)</option> 286 </select> 287 <span class="description">QR-koodi on EPC-standardin mukainen (viite RF-muodossa, jonka pankit kohdistavat samaan viitteeseen). Pankkiviivakoodi on perinteinen suomalainen laskun viivakoodi. Virtuaaliviivakoodi tekstinä on laskussa aina.</span></p> 288 </div> 289 290 <div class="jasrek-panel" id="jasrek-sposti-laskut"> 291 <h2>Sähköpostilaskut</h2> 292 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend> 293 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="perus" <?php checked($s['sposti_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot taulukkona sekä QR-koodi ja pankkiviivakoodi kuvina (kohdan <em>Maksukoodi laskussa</em> mukaan).</label> 294 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="maksukortti" <?php checked($s['sposti_malli'], 'maksukortti'); ?>> <strong>Maksukortti</strong> (suositus) – summa ja eräpäivä isolla, maksun tiedot allekkain helposti kopioitavina, virtuaaliviivakoodi ja QR-koodi (jos valittu kohdassa <em>Maksukoodi laskussa</em>). Toimii hyvin puhelimessa ja tietokoneella. Pankkiviivakoodia ei näytetä, koska sitä ei voi lukea näytöltä – tulostettava lasku viivakoodeineen tulee PDF-liitteenä, jos se on valittu alla.</label> 295 <label class="jasrek-radio"><input type="checkbox" name="sposti_pdf" value="1" <?php checked($s['sposti_pdf'], '1'); ?>> <strong>Liitä lasku PDF:nä</strong> – viestin liitteenä sama lasku kuin paperilaskussa: A4-sivu tilisiirtolomakkeineen, QR-koodi ja pankkiviivakoodi kohdan <em>Maksukoodi laskussa</em> mukaan. Jäsen voi tulostaa ja arkistoida laskun. Liite kasvattaa viestiä noin 5–10 kt. Koskee myös muistutuksia ja testilaskuja.</label> 296 </fieldset> 297 </div> 298 299 <div class="jasrek-panel" id="jasrek-paperi-asetukset"> 300 <h2>Paperilaskut</h2> 301 <p class="description">Paperilaskun saavat jäsenet, joille on valittu ”Haluaa laskun paperilla”, sekä jäsenet ilman sähköpostia.</p> 302 <p><label for="jasrek-postimaksu">Postimaksu (€)</label> 303 <input type="text" id="jasrek-postimaksu" name="postimaksu" inputmode="decimal" style="max-width:140px" value="<?php echo esc_attr(number_format((float) $s['postimaksu'], 2, ',', '')); ?>" placeholder="0,00"> 304 <span class="description">Lisätään jäsenmaksuun vain paperilaskun saajille, esim. postimerkin ja kirjekuoren hinta. 0 = ei postimaksua. Summaa voi muuttaa laskua tehdessä. 305 Postimaksu näkyy laskussa omana rivinään, ja se on mukana QR- ja viivakoodin summassa. Sähköpostilaskuihin sitä ei lisätä. 306 Saatetekstissä <code>{summa}</code> on jäsenmaksu ilman postimaksua ja <code>{maksettava}</code> maksettava yhteensä.</span></p> 307 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend> 308 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="perus" <?php checked($s['paperi_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot, QR-koodi ja pankkiviivakoodi saatteen alla.</label> 309 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="tilisiirto" <?php checked($s['paperi_malli'], 'tilisiirto'); ?>> <strong>Tilisiirtolomake</strong> – perinteinen suomalainen pankkisiirtolomake sivun alareunassa, QR-koodi sen yläpuolella. Saateteksti mahtuu noin puolelle sivulle.</label> 310 <span class="description">Kummassakin mallissa jäsenen nimi ja osoite osuvat ikkunakuoren (C5 tai DL) ikkunaan. QR-koodi ja pankkiviivakoodi tulostuvat kohdan <em>Maksukoodi</em> mukaan.</span> 311 </fieldset> 312 <p><label for="jasrek-postiosoite">Palautusosoite (kuoren ikkuna)</label> 313 <textarea id="jasrek-postiosoite" name="postiosoite" rows="2" style="max-width:420px" placeholder="esim. Rahastonhoitaja Matti Meikäläinen Kotikatu 5, 60100 Seinäjoki"><?php echo esc_textarea($s['postiosoite']); ?></textarea> 314 <span class="description">Tulostetaan pienellä ikkunakuoren ikkunaan vastaanottajan yläpuolelle, jotta kirje palautuu, jos sitä ei voida toimittaa. Voi olla eri kuin yhdistyksen osoite, esim. rahastonhoitajan osoite, jos yhdistyksellä ei ole postilaatikkoa. Yhdistyksen nimi lisätään eteen automaattisesti. 315 Mahtuu enintään kaksi riviä (noin 110 merkkiä yhdistyksen nimi mukaan lukien); pidempi teksti pienennetään tai siitä varoitetaan tulostettaessa. Tyhjänä palautusosoitetta ei tulosteta.</span></p> 316 </div> 317 318 <div class="jasrek-panel" id="jasrek-muistutukset"> 319 <h2>Maksumuistutukset</h2> 320 <p><label for="jasrek-mt">Maksumuistutuksen teksti</label> 321 <textarea id="jasrek-mt" name="muistutus_teksti" rows="6"><?php echo esc_textarea($s['muistutus_teksti']); ?></textarea> 322 <?php echo wp_kses_post(jasrek_placeholders('jasrek-mt', 'lasku')); ?></p> 323 <h3>Automaattinen maksumuistutus</h3> 324 <p><label class="jasrek-radio"><input type="checkbox" name="auto_muistutus" value="1" <?php checked($s['auto_muistutus'], '1'); ?>> Lähetä maksamattomille muistutus automaattisesti</label></p> 325 <div class="jasrek-grid"> 326 <p><label for="jasrek-apaiv">Päivää eräpäivän jälkeen</label> 327 <input type="number" id="jasrek-apaiv" name="auto_paivia" min="1" max="365" value="<?php echo esc_attr($s['auto_paivia']); ?>"></p> 328 <p><label for="jasrek-amax">Muistutuksia enintään</label> 329 <input type="number" id="jasrek-amax" name="auto_max" min="1" max="10" value="<?php echo esc_attr($s['auto_max']); ?>"> 330 <span class="description">Seuraava muistutus lähtee aina saman päivämäärän kuluttua edellisestä.</span></p> 331 </div> 332 <p><label class="jasrek-radio"><input type="checkbox" name="auto_raportti" value="1" <?php checked($s['auto_raportti'], '1'); ?>> Lähetä yhteenveto lähetetyistä muistutuksista osoitteeseen <?php echo esc_html($raportti_to); ?></label></p> 333 <p class="description">Muistutuksen saavat vain jäsenet, joille lasku on jo lähetetty ja joilla on sähköpostiosoite. Automaattisen muistutuksen voi kytkeä pois myös yksittäiseltä laskulta. WordPress tarkistaa tilanteen kerran tunnissa, kun sivustolla on kävijöitä. 334 <?php if ($s['auto_muistutus'] === '1' && $next): ?><br>Seuraava tarkistus: <?php echo esc_html(wp_date('j.n.Y H:i', $next)); ?><?php endif; ?></p> 335 </div> 336 337 <div class="jasrek-panel" id="jasrek-vahvistus"> 338 <h2>Maksuvahvistus jäsenelle</h2> 339 <p><label class="jasrek-radio"><input type="checkbox" name="vahvistus_kaytossa" value="1" <?php checked($s['vahvistus_kaytossa'], '1'); ?>> Lähetä jäsenelle sähköpostilla vahvistus, kun hänen maksunsa kirjataan</label></p> 340 <p class="description">Kun maksuja kirjataan pankkitiedostosta tai joukkotoiminnolla, kirjauksen yhteydessä on ruksi <em>Lähetä maksuvahvistus</em> (valmiiksi valittuna), jonka voi poistaa esim. vanhoja maksuja kirjattaessa. Laskun sivulla maksetun rivin kohdalla on lisäksi painike <em>Lähetä vahvistus</em>. Vahvistukset lähtevät taustalla pienissä erissä. Vain jäsenille, joilla on sähköpostiosoite.</p> 341 <p><label for="jasrek-vot">Otsikko</label> 342 <input type="text" id="jasrek-vot" name="vahvistus_otsikko" value="<?php echo esc_attr($s['vahvistus_otsikko']); ?>"></p> 343 <p><label for="jasrek-vte">Viesti</label> 344 <textarea id="jasrek-vte" name="vahvistus_teksti" rows="6"><?php echo esc_textarea($s['vahvistus_teksti']); ?></textarea> 345 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vte', 'vahvistus', '{summa} on maksettu summa.')); ?></p> 346 </div> 347 278 348 <div class="jasrek-panel" id="jasrek-kirjanpito"> 279 349 <h2>Jäsenmaksut kirjanpitoon</h2> … … 289 359 </div> 290 360 </div> 291 292 <div class="jasrek-panel" id="jasrek-merkkipaivat"> 293 <h2>Merkkipäivät</h2> 294 <p class="description">Vuosiraportti ja jäsenlista kertovat, ketkä täyttävät valittuja tasavuosia tai ovat olleet jäsenenä valitut vuodet. Täytettävät vuodet lasketaan jäsenen tiedoissa olevasta <em>syntymävuodesta tai -päivästä</em>. Kenttä on vapaaehtoinen, ja se näkyy jäsenen lomakkeella vain, kun merkkipäivät ovat käytössä. Jos jäsenestä on merkitty vain syntymävuosi, merkkipäivä näkyy vuosiraportissa ilman päivää. Jäsenyysvuodet lasketaan liittymispäivästä. Tyhjä kenttä = sitä merkkipäivää ei näytetä.</p> 295 <p><label class="jasrek-radio"><input type="checkbox" name="merkki_kaytossa" value="1" <?php checked($s['merkki_kaytossa'], '1'); ?>> Merkkipäivät käytössä</label> 296 <span class="description">Pois päältä merkkipäiviä ei näytetä jäsenlistassa, vuosiraportissa eikä Excel-viennissä, eikä jäsenen lomakkeella kysytä syntymävuotta. Asetetut vuodet ja tallennetut syntymävuodet säilyvät.</span></p> 297 <div class="jasrek-grid"> 298 <p><label for="jasrek-merkki-ika">Täytettävät vuodet</label> 299 <input type="text" id="jasrek-merkki-ika" name="merkki_ika" value="<?php echo esc_attr($s['merkki_ika']); ?>" placeholder="50, 60, 70, 80, 90"></p> 300 <p><label for="jasrek-merkki-jasen">Jäsenyysvuodet</label> 301 <input type="text" id="jasrek-merkki-jasen" name="merkki_jasen" value="<?php echo esc_attr($s['merkki_jasen']); ?>" placeholder="10, 20, 25, 30, 40, 50"></p> 302 </div> 303 </div> 304 305 <div class="jasrek-panel"> 306 <h2>Automaattinen maksumuistutus</h2> 307 <p><label class="jasrek-radio"><input type="checkbox" name="auto_muistutus" value="1" <?php checked($s['auto_muistutus'], '1'); ?>> Lähetä maksamattomille muistutus automaattisesti</label></p> 308 <div class="jasrek-grid"> 309 <p><label for="jasrek-apaiv">Päivää eräpäivän jälkeen</label> 310 <input type="number" id="jasrek-apaiv" name="auto_paivia" min="1" max="365" value="<?php echo esc_attr($s['auto_paivia']); ?>"></p> 311 <p><label for="jasrek-amax">Muistutuksia enintään</label> 312 <input type="number" id="jasrek-amax" name="auto_max" min="1" max="10" value="<?php echo esc_attr($s['auto_max']); ?>"> 313 <span class="description">Seuraava muistutus lähtee aina saman päivämäärän kuluttua edellisestä.</span></p> 314 </div> 315 <p><label class="jasrek-radio"><input type="checkbox" name="auto_raportti" value="1" <?php checked($s['auto_raportti'], '1'); ?>> Lähetä yhteenveto lähetetyistä muistutuksista osoitteeseen <?php echo esc_html($raportti_to); ?></label></p> 316 <p class="description">Muistutuksen saavat vain jäsenet, joille lasku on jo lähetetty ja joilla on sähköpostiosoite. Automaattisen muistutuksen voi kytkeä pois myös yksittäiseltä laskulta. WordPress tarkistaa tilanteen kerran tunnissa, kun sivustolla on kävijöitä. 317 <?php if ($s['auto_muistutus'] === '1' && $next): ?><br>Seuraava tarkistus: <?php echo esc_html(wp_date('j.n.Y H:i', $next)); ?><?php endif; ?></p> 318 </div> 319 320 <div class="jasrek-panel" id="jasrek-omat-tiedot"> 321 <h2>Jäsenen omat tiedot viesteissä <code>{omat_tiedot}</code></h2> 322 <p class="description">Valitse, mitkä tiedot paikkamerkki <code>{omat_tiedot}</code> näyttää jäsenelle tietojentarkistuspyynnössä ja laskun saatteessa. Puuttuva osoite, puhelin tai sähköposti korostetaan. Jos kaikki on valittu, myöhemmin lisättävät omat kentät tulevat mukaan automaattisesti.</p> 323 <p class="jasrek-checks"><?php $ot_val = jasrek_omat_tiedot_valitut(); foreach (jasrek_omat_tiedot_valinnat() as $k => $nimi): ?> 324 <label class="jasrek-radio"><input type="checkbox" name="ot_kentat[]" value="<?php echo esc_attr($k); ?>" <?php checked(in_array($k, $ot_val, true)); ?>> <?php echo esc_html($nimi); ?></label> 325 <?php endforeach; ?></p> 326 </div> 327 328 <div class="jasrek-panel" id="jasrek-vahvistus"> 329 <h2>Maksuvahvistus jäsenelle</h2> 330 <p><label class="jasrek-radio"><input type="checkbox" name="vahvistus_kaytossa" value="1" <?php checked($s['vahvistus_kaytossa'], '1'); ?>> Lähetä jäsenelle sähköpostilla vahvistus, kun hänen maksunsa kirjataan</label></p> 331 <p class="description">Kun maksuja kirjataan pankkitiedostosta tai joukkotoiminnolla, kirjauksen yhteydessä on ruksi <em>Lähetä maksuvahvistus</em> (valmiiksi valittuna), jonka voi poistaa esim. vanhoja maksuja kirjattaessa. Laskun sivulla maksetun rivin kohdalla on lisäksi painike <em>Lähetä vahvistus</em>. Vahvistukset lähtevät taustalla pienissä erissä. Vain jäsenille, joilla on sähköpostiosoite.</p> 332 <p><label for="jasrek-vot">Otsikko</label> 333 <input type="text" id="jasrek-vot" name="vahvistus_otsikko" value="<?php echo esc_attr($s['vahvistus_otsikko']); ?>"></p> 334 <p><label for="jasrek-vte">Viesti</label> 335 <textarea id="jasrek-vte" name="vahvistus_teksti" rows="6"><?php echo esc_textarea($s['vahvistus_teksti']); ?></textarea> 336 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vte', 'vahvistus', '{summa} on maksettu summa.')); ?></p> 337 </div> 338 361 </div> 362 <div class="jasrek-tab" data-tab="sposti"> 339 363 <div class="jasrek-panel"> 340 364 <h2>Sähköpostin lähettäjä</h2> … … 351 375 <?php endif; ?> 352 376 <p class="description">Suositus: asenna SMTP-lisäosa (esim. WP Mail SMTP tai FluentSMTP), jolloin viestit lähtevät yhdistyksen oikean sähköpostitilin kautta eivätkä päädy roskapostiin. Kokeile asetukset lähettämällä testilasku itsellesi.</p> 353 </div> 354 355 <div class="jasrek-panel"> 356 <h2>Oletustekstit</h2> 357 <p><label for="jasrek-vo">Laskun saateteksti (oletus uusille laskuille)</label> 358 <textarea id="jasrek-vo" name="viesti_oletus" rows="7"><?php echo esc_textarea($s['viesti_oletus']); ?></textarea> 359 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vo', 'lasku')); ?></p> 360 <p><label for="jasrek-mt">Maksumuistutuksen teksti</label> 361 <textarea id="jasrek-mt" name="muistutus_teksti" rows="6"><?php echo esc_textarea($s['muistutus_teksti']); ?></textarea> 362 <?php echo wp_kses_post(jasrek_placeholders('jasrek-mt', 'lasku')); ?></p> 363 </div> 364 377 <p><label for="jasrek-yhteystiedot">Yhteystiedot viestien alalaitaan</label> 378 <textarea id="jasrek-yhteystiedot" name="yhteystiedot" rows="3" placeholder="Esim. Yhdistys ry · rahastonhoitaja@example.fi · www.example.fi"><?php echo esc_textarea($s['yhteystiedot']); ?></textarea></p> 379 </div> 380 381 <div class="jasrek-panel" id="jasrek-omat-tiedot"> 382 <h2>Jäsenen omat tiedot viesteissä <code>{omat_tiedot}</code></h2> 383 <p class="description">Valitse, mitkä tiedot paikkamerkki <code>{omat_tiedot}</code> näyttää jäsenelle tietojentarkistuspyynnössä ja laskun saatteessa. Puuttuva osoite, puhelin tai sähköposti korostetaan. Jos kaikki on valittu, myöhemmin lisättävät omat kentät tulevat mukaan automaattisesti.</p> 384 <p class="jasrek-checks"><?php $ot_val = jasrek_omat_tiedot_valitut(); foreach (jasrek_omat_tiedot_valinnat() as $k => $nimi): ?> 385 <label class="jasrek-radio"><input type="checkbox" name="ot_kentat[]" value="<?php echo esc_attr($k); ?>" <?php checked(in_array($k, $ot_val, true)); ?>> <?php echo esc_html($nimi); ?></label> 386 <?php endforeach; ?></p> 387 </div> 388 </div> 389 <div class="jasrek-tab" data-tab="loki"> 365 390 <div class="jasrek-panel" id="jasrek-loki"> 366 391 <h2>Muutosloki</h2> … … 374 399 <span class="description">Loki sisältää henkilötietoja (esim. vanhoja osoitteita), joten sitä ei kannata säilyttää tarpeettoman pitkään. Vanhemmat merkinnät poistetaan automaattisesti.</span></p> 375 400 </div> 376 401 </div> 402 403 <div class="jasrek-tab" data-tab="varmuus"> 377 404 <?php jasrek_autobackup_panel($s); ?> 378 405 … … 382 409 <label class="jasrek-radio"><input type="radio" name="poista_tiedot" value="0" <?php checked($s['poista_tiedot'], '0'); ?>> <strong>Säilytä tiedot</strong> – jäsenet, laskut, maksut ja asetukset jäävät tietokantaan, ja lisäosan voi asentaa myöhemmin uudelleen.</label> 383 410 <label class="jasrek-radio"><input type="radio" name="poista_tiedot" value="1" <?php checked($s['poista_tiedot'], '1'); ?> data-confirm="Haluatko varmasti, että kaikki jäsenrekisterin tiedot poistetaan pysyvästi, kun lisäosa poistetaan? Tätä ei voi perua."> <strong>Poista kaikki tiedot</strong> – kaikki lisäosan luomat taulut ja asetukset poistetaan pysyvästi.</label> 384 <p class="description">Ota ennen poistamista <a href="#jasrek-varmuuskopio">varmuuskopio</a> (alla), jolla kaikki tiedot voi palauttaa myöhemmin. Valinta kysytään myös, kun lisäosa poistetaan käytöstä.</p> 385 </div> 386 387 <p><button type="submit" class="button button-primary button-large">Tallenna asetukset</button></p> 411 <p class="description">Ota ennen poistamista <a href="#jasrek-varmuuskopio">varmuuskopio</a> (ylempänä), jolla kaikki tiedot voi palauttaa myöhemmin. Valinta kysytään myös, kun lisäosa poistetaan käytöstä.</p> 412 </div> 413 </div> 414 415 <p class="jasrek-save"><button type="submit" class="button button-primary button-large">Tallenna asetukset</button> 416 <span class="description">Tallentaa kaikkien välilehtien asetukset.</span></p> 388 417 </form> 389 <?php jasrek_backup_panel(); ?>390 418 </div> 391 419 <?php -
oh6kw-jasenrekisteri/tags/4.9.0/oh6kw-jasenrekisteri.php
r3755968 r3763979 4 4 Plugin URI: https://github.com/oh6kw/oh6kw-jasenrekisteri 5 5 Description: Yhdistyksen jäsenrekisteri: jäsenet, jäsenluokat ja omat lisäkentät, jäsenmaksulaskut omilla viitenumeroilla sähköpostilla tai paperilla, QR-koodi ja pankkiviivakoodi, maksujen tuonti pankista, muistutukset, tiedotteet, vuosiraportti ja muutosloki. 6 Version: 4. 8.96 Version: 4.9.0 7 7 Author: Jarno Jaskari (oh6kw) 8 8 Author URI: https://github.com/oh6kw … … 28 28 } 29 29 30 define('JASREK_VERSION', '4. 8.9');30 define('JASREK_VERSION', '4.9.0'); 31 31 define('JASREK_DB_VERSION', '10'); 32 32 define('JASREK_FILE', __FILE__); -
oh6kw-jasenrekisteri/tags/4.9.0/readme.txt
r3755968 r3763979 6 6 Tested up to: 7.1 7 7 Requires PHP: 7.4 8 Stable tag: 4. 8.98 Stable tag: 4.9.0 9 9 License: AGPLv3 or later 10 10 License URI: https://www.gnu.org/licenses/agpl-3.0.html … … 146 146 == Changelog == 147 147 148 = 4.9.0 = 149 * The settings page is now divided into tabs: Association, Members, Invoices, Email, Audit log, and Backups and removal. Invoice settings are grouped into boxes for all invoices, email invoices, paper invoices, reminders, payment confirmation and bookkeeping accounts. Only the layout changed – every setting is kept and still saved with one button. 150 148 151 = 4.8.9 = 149 152 * New (optional): payment confirmation email to the member when a payment is imported from the bank file or marked as paid on the invoice page; a single confirmation can also be sent from the invoice row. Off by default; subject and text are editable in the settings. Sent in the background in small batches, only to members with an email address. -
oh6kw-jasenrekisteri/trunk/CHANGELOG.md
r3755968 r3763979 2 2 3 3 Tekijä: Jarno Jaskari (oh6kw). Versiosta 3.0 alkaen lisäosaa on kehitetty yhdessä Claude-tekoälyn (Anthropic) kanssa. 4 5 ## 4.9.0 (2026-10-25) 6 7 ### Asetussivu selkeämmäksi – vain ulkoasu muuttuu 8 - Asetukset on jaettu välilehdille: **Yhdistys**, **Jäsenet**, **Laskut**, **Sähköposti** ja **Ylläpito**. Kaikki kentät ovat edelleen samassa lomakkeessa: *Tallenna asetukset* tallentaa kaikkien välilehtien asetukset kerralla, eikä mikään asetus muutu tai katoa. Avoinna ollut välilehti muistetaan. 9 - **Yhdistys:** nimi, IBAN, BIC, Y-tunnus ja osoite. 10 - **Jäsenet:** jäsenten lisätunniste (siirretty yhdistyksen tiedoista), jäsenluokat, omat lisäkentät ja merkkipäivät. 11 - **Laskut** omissa lokeroissaan: *Kaikki laskut* (oletussaate ja maksukoodi), *Sähköpostilaskut* (malli ja PDF-liite), *Paperilaskut* (postimaksu, malli ja palautusosoite), *Maksumuistutukset* (muistutuksen teksti ja automaattinen muistutus yhdessä), *Maksuvahvistus* ja *Jäsenmaksut kirjanpitoon*. 12 - **Sähköposti:** lähettäjä, vastausosoite ja yhteystiedot viestien alalaitaan sekä `{omat_tiedot}`-kentät. 13 - **Muutosloki:** muutoslokin säilytysaika. 14 - **Varmuuskopiot ja poisto:** varmuuskopio ja siirto, automaattinen varmuuskopio sähköpostiin sekä lisäosan poistaminen. 15 - Muilta sivuilta tulevat linkit (esim. *Asetukset → Paperilaskut*, *Jäsenluokat*, *Varmuuskopio*) avaavat oikean välilehden. Jos tallennettaessa jokin kenttä on virheellinen (esim. sähköpostiosoite), sen välilehti avataan, jotta selain voi näyttää virheen. Ilman JavaScriptiä välilehtirivi on piilossa ja kaikki asetukset näkyvät allekkain kuten ennen. 16 - README:n asetussivun kuva päivitetty (Laskut-välilehti). 4 17 5 18 ## 4.8.9 (2026-10-19) -
oh6kw-jasenrekisteri/trunk/README.md
r3755968 r3763979 90 90 |  **Lasku:** lähetys, muistutukset ja maksutilanne. Maksajan nimi ja poikkeava summa näkyvät. |  **Jäsenen saama sähköpostilasku (maksukortti):** summa ja eräpäivä, kopioitavat maksutiedot, QR-koodi ja virtuaaliviivakoodi. | 91 91 |  **Uusi lasku:** summat jäsenluokittain. Luokat, joiden jäsenmaksu on 0 €, jätetään laskutuksesta pois. |  **Maksujen tuonti pankista:** esikatselu ennen kirjausta. | 92 |  **Jäsenen tiedot** sekä kaikki laskut ja maksut. |  **Asetukset :** jäsenluokat ja automaattinen muistutus. |92 |  **Jäsenen tiedot** sekä kaikki laskut ja maksut. |  **Asetukset** välilehdillä: laskujen asetukset omissa lokeroissaan. | 93 93 |  **Tiedote** koko jäsenistölle tai yhdelle luokalle. |  **Laskut:** maksukertymä ja maksujen tuonti. | 94 94 |  **Paperilaskut** laskun sivulla: tulosta, laita kuoreen ja merkitse postitetuksi. |  **Tulostettava lasku** ikkunakuoreen (C5 tai DL) tilisiirtolomakkeella. Sähköpostilaskun PDF-liite on samanlainen. | -
oh6kw-jasenrekisteri/trunk/assets/admin.css
r3755968 r3763979 254 254 .jasrek-mail-intro { max-width: 900px; margin: 12px 0 14px; } 255 255 .jasrek-esikatselu .jasrek-preview-frame { display: block; width: 100%; max-width: 700px; height: 640px; border: 1px solid var(--jasrek-border); border-radius: 6px; background: #eef1f5; } 256 257 /* Asetussivun välilehdet */ 258 .jasrek-settabs { margin-bottom: 16px; } 259 .jasrek-tab[hidden] { display: none; } 260 .jasrek-panel h3 { font-size: 1em; margin: 18px 0 6px; } 261 .jasrek-save { margin-top: 4px; } -
oh6kw-jasenrekisteri/trunk/assets/admin.js
r3755968 r3763979 194 194 }); 195 195 196 // Asetussivun välilehdet: kaikki kentät ovat samassa lomakkeessa, joten tallennus koskee aina kaikkia. 197 // Ilman JavaScriptiä kaikki välilehdet näkyvät allekkain. 198 (function () { 199 var $nav = $('.jasrek-settabs'); 200 if (!$nav.length) return; 201 $nav.prop('hidden', false); // ilman JavaScriptiä välilehtirivi pysyy piilossa ja kaikki näkyy allekkain 202 var KEY = 'jasrek_asetus_tab'; 203 function show(k, keepHash) { 204 if (!$nav.find('a[data-tab="' + k + '"]').length) k = $nav.find('a').first().data('tab'); 205 $('.jasrek-tab').each(function () { $(this).prop('hidden', $(this).data('tab') !== k); }); 206 $nav.find('a').removeClass('nav-tab-active').filter('[data-tab="' + k + '"]').addClass('nav-tab-active'); 207 try { window.localStorage.setItem(KEY, k); } catch (err) { /* ei tallennusta */ } 208 if (!keepHash && window.history && history.replaceState) history.replaceState(null, '', '#' + k); 209 } 210 // Avaa välilehti, jolla annettu elementti on (esim. linkki …#jasrek-paperi-asetukset) 211 function showFor(id) { 212 var $el = id ? $(document.getElementById(id)) : $(); 213 if (!$el.length) return false; 214 var $tab = $el.closest('.jasrek-tab'); 215 if (!$tab.length) return false; 216 show($tab.data('tab'), true); 217 setTimeout(function () { $el[0].scrollIntoView({ block: 'start' }); }, 0); 218 return true; 219 } 220 var hash = window.location.hash.replace('#', ''); 221 if (!showFor(hash)) { 222 var k = hash; 223 if (!$nav.find('a[data-tab="' + k + '"]').length) { 224 try { k = window.localStorage.getItem(KEY) || ''; } catch (err) { k = ''; } 225 } 226 show(k, !hash); 227 } 228 $nav.on('click', 'a', function (e) { e.preventDefault(); show($(this).data('tab')); }); 229 $(window).on('hashchange', function () { 230 var h = window.location.hash.replace('#', ''); 231 if (!showFor(h) && $nav.find('a[data-tab="' + h + '"]').length) show(h, true); 232 }); 233 $(document).on('click', 'a[href^="#jasrek-"]', function (e) { 234 if (showFor(this.getAttribute('href').slice(1))) e.preventDefault(); 235 }); 236 // Virheellinen kenttä piilotetulla välilehdellä: näytetään se, jotta selain voi kertoa virheestä 237 document.addEventListener('invalid', function (e) { 238 var tab = $(e.target).closest('.jasrek-tab'); 239 if (tab.length && tab.prop('hidden')) show(tab.data('tab')); 240 }, true); 241 })(); 242 196 243 // Sähköpostin esikatselu: kehys yhtä korkeaksi kuin viesti 197 244 function fitPreview(frame) { -
oh6kw-jasenrekisteri/trunk/includes/settings.php
r3755968 r3763979 146 146 <h1>Jäsenrekisterin asetukset</h1> 147 147 <?php jasrek_notice(); ?> 148 <nav class="nav-tab-wrapper jasrek-navtabs jasrek-settabs" hidden> 149 <a class="nav-tab" href="#yhdistys" data-tab="yhdistys">Yhdistys</a> 150 <a class="nav-tab" href="#jasenet" data-tab="jasenet">Jäsenet</a> 151 <a class="nav-tab" href="#laskut" data-tab="laskut">Laskut</a> 152 <a class="nav-tab" href="#sposti" data-tab="sposti">Sähköposti</a> 153 <a class="nav-tab" href="#loki" data-tab="loki">Muutosloki</a> 154 <a class="nav-tab" href="#varmuus" data-tab="varmuus">Varmuuskopiot ja poisto</a> 155 </nav> 156 <div class="jasrek-tab" data-tab="varmuus"> 157 <?php jasrek_backup_panel(); ?> 158 </div> 148 159 <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" class="jasrek-form"> 149 160 <input type="hidden" name="action" value="jasrek_save_settings"> 150 161 <?php wp_nonce_field('jasrek_save_settings'); ?> 151 162 163 164 <div class="jasrek-tab" data-tab="yhdistys"> 152 165 <div class="jasrek-panel"> 153 166 <h2>Yhdistys ja tilitiedot</h2> 154 <p class="description">Näkyvät laskuissa .</p>167 <p class="description">Näkyvät laskuissa ja tilisiirtolomakkeessa.</p> 155 168 <div class="jasrek-grid"> 156 169 <p class="jasrek-span-2"><label for="jasrek-yhdistys">Yhdistyksen nimi (laskun saaja)</label> … … 170 183 <textarea id="jasrek-osoite" name="osoite" rows="2" style="max-width:420px" placeholder="esim. Kerhotie 1 60100 Seinäjoki"><?php echo esc_textarea($s['osoite']); ?></textarea> 171 184 <span class="description">Yhdistyksen virallinen osoite. Näkyy tilisiirtolomakkeen Saaja-kentässä ja tietosuojaselosteen rekisterinpitäjän tiedoissa. Kuoren palautusosoitteen voi antaa erikseen kohdassa <em>Paperilaskut</em>.</span></p> 172 <fieldset class="jasrek-fieldset" id="jasrek-lisatunniste"><legend>Jäsenten lisätunniste</legend> 173 <span class="description">Vapaaehtoinen lisäkenttä jäsenille, esim. jäsennumero, tunnus tai kutsutunnus. Näkyy jäsenlistassa, jäsenen lomakkeella ja laskussa. Nimen voi vaihtaa vapaasti.</span> 185 </div> 186 </div> 187 <div class="jasrek-tab" data-tab="jasenet"> 188 <div class="jasrek-panel" id="jasrek-lisatunniste"> 189 <h2>Jäsenten lisätunniste</h2> 190 <span class="description">Vapaaehtoinen lisäkenttä jäsenille, esim. jäsennumero, tunnus tai kutsutunnus. Näkyy jäsenlistassa, jäsenen lomakkeella ja laskussa. Nimen voi vaihtaa vapaasti.</span> 174 191 <label class="jasrek-radio"><input type="checkbox" name="tunnus_kaytossa" value="1" <?php checked($s['tunnus_kaytossa'], '1'); ?>> Lisätunniste käytössä</label> 175 192 <div class="jasrek-grid"> … … 178 195 <p><label class="jasrek-radio" style="margin-top:28px"><input type="checkbox" name="tunnus_isot" value="1" <?php checked($s['tunnus_isot'], '1'); ?>> Muunna isoiksi kirjaimiksi (esim. kutsutunnukset)</label></p> 179 196 </div> 180 </fieldset>181 <p><label for="jasrek-maksukoodi">Maksukoodi laskussa</label>182 <select id="jasrek-maksukoodi" name="maksukoodi">183 <option value="molemmat" <?php selected($s['maksukoodi'], 'molemmat'); ?>>QR-koodi ja pankkiviivakoodi</option>184 <option value="qr" <?php selected($s['maksukoodi'], 'qr'); ?>>Vain QR-koodi</option>185 <option value="viivakoodi" <?php selected($s['maksukoodi'], 'viivakoodi'); ?>>Vain pankkiviivakoodi</option>186 <option value="ei" <?php selected($s['maksukoodi'], 'ei'); ?>>Ei kuvaa (vain virtuaaliviivakoodi tekstinä)</option>187 </select>188 <span class="description">QR-koodi on EPC-standardin mukainen (viite RF-muodossa, jonka pankit kohdistavat samaan viitteeseen). Pankkiviivakoodi on perinteinen suomalainen laskun viivakoodi. Virtuaaliviivakoodi tekstinä on laskussa aina.</span></p>189 <fieldset class="jasrek-fieldset"><legend>Sähköpostilaskun malli</legend>190 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="perus" <?php checked($s['sposti_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot taulukkona sekä QR-koodi ja pankkiviivakoodi kuvina (kohdan <em>Maksukoodi laskussa</em> mukaan).</label>191 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="maksukortti" <?php checked($s['sposti_malli'], 'maksukortti'); ?>> <strong>Maksukortti</strong> (suositus) – summa ja eräpäivä isolla, maksun tiedot allekkain helposti kopioitavina, virtuaaliviivakoodi ja QR-koodi (jos valittu kohdassa <em>Maksukoodi laskussa</em>). Toimii hyvin puhelimessa ja tietokoneella. Pankkiviivakoodia ei näytetä, koska sitä ei voi lukea näytöltä – tulostettava lasku viivakoodeineen tulee PDF-liitteenä, jos se on valittu alla.</label>192 <label class="jasrek-radio"><input type="checkbox" name="sposti_pdf" value="1" <?php checked($s['sposti_pdf'], '1'); ?>> <strong>Liitä lasku PDF:nä</strong> – viestin liitteenä sama lasku kuin paperilaskussa: A4-sivu tilisiirtolomakkeineen, QR-koodi ja pankkiviivakoodi kohdan <em>Maksukoodi laskussa</em> mukaan. Jäsen voi tulostaa ja arkistoida laskun. Liite kasvattaa viestiä noin 5–10 kt. Koskee myös muistutuksia ja testilaskuja.</label>193 </fieldset>194 <p><label for="jasrek-yhteystiedot">Yhteystiedot viestien alalaitaan</label>195 <textarea id="jasrek-yhteystiedot" name="yhteystiedot" rows="3" placeholder="Esim. Yhdistys ry · rahastonhoitaja@example.fi · www.example.fi"><?php echo esc_textarea($s['yhteystiedot']); ?></textarea></p>196 197 </div> 197 198 … … 223 224 <p><button type="button" class="button" id="jasrek-laji-add">+ Lisää jäsenluokka</button></p> 224 225 <p class="description">Jos poistat luokan, sen jäsenet siirtyvät välilehdelle ”Ilman jäsenluokkaa”, josta heille voi valita uuden luokan joukkona. Luokan voi nimetä uudelleen – jäsenet pysyvät siinä.</p> 225 </div>226 227 <div class="jasrek-panel" id="jasrek-paperi-asetukset">228 <h2>Paperilaskut</h2>229 <p class="description">Paperilaskun saavat jäsenet, joille on valittu ”Haluaa laskun paperilla”, sekä jäsenet ilman sähköpostia.</p>230 <p><label for="jasrek-postimaksu">Postimaksu (€)</label>231 <input type="text" id="jasrek-postimaksu" name="postimaksu" inputmode="decimal" style="max-width:140px" value="<?php echo esc_attr(number_format((float) $s['postimaksu'], 2, ',', '')); ?>" placeholder="0,00">232 <span class="description">Lisätään jäsenmaksuun vain paperilaskun saajille, esim. postimerkin ja kirjekuoren hinta. 0 = ei postimaksua. Summaa voi muuttaa laskua tehdessä.233 Postimaksu näkyy laskussa omana rivinään, ja se on mukana QR- ja viivakoodin summassa. Sähköpostilaskuihin sitä ei lisätä.234 Saatetekstissä <code>{summa}</code> on jäsenmaksu ilman postimaksua ja <code>{maksettava}</code> maksettava yhteensä.</span></p>235 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend>236 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="perus" <?php checked($s['paperi_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot, QR-koodi ja pankkiviivakoodi saatteen alla.</label>237 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="tilisiirto" <?php checked($s['paperi_malli'], 'tilisiirto'); ?>> <strong>Tilisiirtolomake</strong> – perinteinen suomalainen pankkisiirtolomake sivun alareunassa, QR-koodi sen yläpuolella. Saateteksti mahtuu noin puolelle sivulle.</label>238 <span class="description">Kummassakin mallissa jäsenen nimi ja osoite osuvat ikkunakuoren (C5 tai DL) ikkunaan. QR-koodi ja pankkiviivakoodi tulostuvat kohdan <em>Maksukoodi</em> mukaan.</span>239 </fieldset>240 <p><label for="jasrek-postiosoite">Palautusosoite (kuoren ikkuna)</label>241 <textarea id="jasrek-postiosoite" name="postiosoite" rows="2" style="max-width:420px" placeholder="esim. Rahastonhoitaja Matti Meikäläinen Kotikatu 5, 60100 Seinäjoki"><?php echo esc_textarea($s['postiosoite']); ?></textarea>242 <span class="description">Tulostetaan pienellä ikkunakuoren ikkunaan vastaanottajan yläpuolelle, jotta kirje palautuu, jos sitä ei voida toimittaa. Voi olla eri kuin yhdistyksen osoite, esim. rahastonhoitajan osoite, jos yhdistyksellä ei ole postilaatikkoa. Yhdistyksen nimi lisätään eteen automaattisesti.243 Mahtuu enintään kaksi riviä (noin 110 merkkiä yhdistyksen nimi mukaan lukien); pidempi teksti pienennetään tai siitä varoitetaan tulostettaessa. Tyhjänä palautusosoitetta ei tulosteta.</span></p>244 226 </div> 245 227 … … 276 258 </div> 277 259 260 <div class="jasrek-panel" id="jasrek-merkkipaivat"> 261 <h2>Merkkipäivät</h2> 262 <p class="description">Vuosiraportti ja jäsenlista kertovat, ketkä täyttävät valittuja tasavuosia tai ovat olleet jäsenenä valitut vuodet. Täytettävät vuodet lasketaan jäsenen tiedoissa olevasta <em>syntymävuodesta tai -päivästä</em>. Kenttä on vapaaehtoinen, ja se näkyy jäsenen lomakkeella vain, kun merkkipäivät ovat käytössä. Jos jäsenestä on merkitty vain syntymävuosi, merkkipäivä näkyy vuosiraportissa ilman päivää. Jäsenyysvuodet lasketaan liittymispäivästä. Tyhjä kenttä = sitä merkkipäivää ei näytetä.</p> 263 <p><label class="jasrek-radio"><input type="checkbox" name="merkki_kaytossa" value="1" <?php checked($s['merkki_kaytossa'], '1'); ?>> Merkkipäivät käytössä</label> 264 <span class="description">Pois päältä merkkipäiviä ei näytetä jäsenlistassa, vuosiraportissa eikä Excel-viennissä, eikä jäsenen lomakkeella kysytä syntymävuotta. Asetetut vuodet ja tallennetut syntymävuodet säilyvät.</span></p> 265 <div class="jasrek-grid"> 266 <p><label for="jasrek-merkki-ika">Täytettävät vuodet</label> 267 <input type="text" id="jasrek-merkki-ika" name="merkki_ika" value="<?php echo esc_attr($s['merkki_ika']); ?>" placeholder="50, 60, 70, 80, 90"></p> 268 <p><label for="jasrek-merkki-jasen">Jäsenyysvuodet</label> 269 <input type="text" id="jasrek-merkki-jasen" name="merkki_jasen" value="<?php echo esc_attr($s['merkki_jasen']); ?>" placeholder="10, 20, 25, 30, 40, 50"></p> 270 </div> 271 </div> 272 </div> 273 <div class="jasrek-tab" data-tab="laskut"> 274 <div class="jasrek-panel" id="jasrek-laskut-yleiset"> 275 <h2>Kaikki laskut</h2> 276 <p class="description">Koskevat sekä sähköposti- että paperilaskuja.</p> 277 <p><label for="jasrek-vo">Laskun saateteksti (oletus uusille laskuille)</label> 278 <textarea id="jasrek-vo" name="viesti_oletus" rows="7"><?php echo esc_textarea($s['viesti_oletus']); ?></textarea> 279 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vo', 'lasku')); ?></p> 280 <p><label for="jasrek-maksukoodi">Maksukoodi laskussa</label> 281 <select id="jasrek-maksukoodi" name="maksukoodi"> 282 <option value="molemmat" <?php selected($s['maksukoodi'], 'molemmat'); ?>>QR-koodi ja pankkiviivakoodi</option> 283 <option value="qr" <?php selected($s['maksukoodi'], 'qr'); ?>>Vain QR-koodi</option> 284 <option value="viivakoodi" <?php selected($s['maksukoodi'], 'viivakoodi'); ?>>Vain pankkiviivakoodi</option> 285 <option value="ei" <?php selected($s['maksukoodi'], 'ei'); ?>>Ei kuvaa (vain virtuaaliviivakoodi tekstinä)</option> 286 </select> 287 <span class="description">QR-koodi on EPC-standardin mukainen (viite RF-muodossa, jonka pankit kohdistavat samaan viitteeseen). Pankkiviivakoodi on perinteinen suomalainen laskun viivakoodi. Virtuaaliviivakoodi tekstinä on laskussa aina.</span></p> 288 </div> 289 290 <div class="jasrek-panel" id="jasrek-sposti-laskut"> 291 <h2>Sähköpostilaskut</h2> 292 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend> 293 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="perus" <?php checked($s['sposti_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot taulukkona sekä QR-koodi ja pankkiviivakoodi kuvina (kohdan <em>Maksukoodi laskussa</em> mukaan).</label> 294 <label class="jasrek-radio"><input type="radio" name="sposti_malli" value="maksukortti" <?php checked($s['sposti_malli'], 'maksukortti'); ?>> <strong>Maksukortti</strong> (suositus) – summa ja eräpäivä isolla, maksun tiedot allekkain helposti kopioitavina, virtuaaliviivakoodi ja QR-koodi (jos valittu kohdassa <em>Maksukoodi laskussa</em>). Toimii hyvin puhelimessa ja tietokoneella. Pankkiviivakoodia ei näytetä, koska sitä ei voi lukea näytöltä – tulostettava lasku viivakoodeineen tulee PDF-liitteenä, jos se on valittu alla.</label> 295 <label class="jasrek-radio"><input type="checkbox" name="sposti_pdf" value="1" <?php checked($s['sposti_pdf'], '1'); ?>> <strong>Liitä lasku PDF:nä</strong> – viestin liitteenä sama lasku kuin paperilaskussa: A4-sivu tilisiirtolomakkeineen, QR-koodi ja pankkiviivakoodi kohdan <em>Maksukoodi laskussa</em> mukaan. Jäsen voi tulostaa ja arkistoida laskun. Liite kasvattaa viestiä noin 5–10 kt. Koskee myös muistutuksia ja testilaskuja.</label> 296 </fieldset> 297 </div> 298 299 <div class="jasrek-panel" id="jasrek-paperi-asetukset"> 300 <h2>Paperilaskut</h2> 301 <p class="description">Paperilaskun saavat jäsenet, joille on valittu ”Haluaa laskun paperilla”, sekä jäsenet ilman sähköpostia.</p> 302 <p><label for="jasrek-postimaksu">Postimaksu (€)</label> 303 <input type="text" id="jasrek-postimaksu" name="postimaksu" inputmode="decimal" style="max-width:140px" value="<?php echo esc_attr(number_format((float) $s['postimaksu'], 2, ',', '')); ?>" placeholder="0,00"> 304 <span class="description">Lisätään jäsenmaksuun vain paperilaskun saajille, esim. postimerkin ja kirjekuoren hinta. 0 = ei postimaksua. Summaa voi muuttaa laskua tehdessä. 305 Postimaksu näkyy laskussa omana rivinään, ja se on mukana QR- ja viivakoodin summassa. Sähköpostilaskuihin sitä ei lisätä. 306 Saatetekstissä <code>{summa}</code> on jäsenmaksu ilman postimaksua ja <code>{maksettava}</code> maksettava yhteensä.</span></p> 307 <fieldset class="jasrek-fieldset"><legend>Laskun malli</legend> 308 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="perus" <?php checked($s['paperi_malli'], 'perus'); ?>> <strong>Perusmalli</strong> – maksutiedot, QR-koodi ja pankkiviivakoodi saatteen alla.</label> 309 <label class="jasrek-radio"><input type="radio" name="paperi_malli" value="tilisiirto" <?php checked($s['paperi_malli'], 'tilisiirto'); ?>> <strong>Tilisiirtolomake</strong> – perinteinen suomalainen pankkisiirtolomake sivun alareunassa, QR-koodi sen yläpuolella. Saateteksti mahtuu noin puolelle sivulle.</label> 310 <span class="description">Kummassakin mallissa jäsenen nimi ja osoite osuvat ikkunakuoren (C5 tai DL) ikkunaan. QR-koodi ja pankkiviivakoodi tulostuvat kohdan <em>Maksukoodi</em> mukaan.</span> 311 </fieldset> 312 <p><label for="jasrek-postiosoite">Palautusosoite (kuoren ikkuna)</label> 313 <textarea id="jasrek-postiosoite" name="postiosoite" rows="2" style="max-width:420px" placeholder="esim. Rahastonhoitaja Matti Meikäläinen Kotikatu 5, 60100 Seinäjoki"><?php echo esc_textarea($s['postiosoite']); ?></textarea> 314 <span class="description">Tulostetaan pienellä ikkunakuoren ikkunaan vastaanottajan yläpuolelle, jotta kirje palautuu, jos sitä ei voida toimittaa. Voi olla eri kuin yhdistyksen osoite, esim. rahastonhoitajan osoite, jos yhdistyksellä ei ole postilaatikkoa. Yhdistyksen nimi lisätään eteen automaattisesti. 315 Mahtuu enintään kaksi riviä (noin 110 merkkiä yhdistyksen nimi mukaan lukien); pidempi teksti pienennetään tai siitä varoitetaan tulostettaessa. Tyhjänä palautusosoitetta ei tulosteta.</span></p> 316 </div> 317 318 <div class="jasrek-panel" id="jasrek-muistutukset"> 319 <h2>Maksumuistutukset</h2> 320 <p><label for="jasrek-mt">Maksumuistutuksen teksti</label> 321 <textarea id="jasrek-mt" name="muistutus_teksti" rows="6"><?php echo esc_textarea($s['muistutus_teksti']); ?></textarea> 322 <?php echo wp_kses_post(jasrek_placeholders('jasrek-mt', 'lasku')); ?></p> 323 <h3>Automaattinen maksumuistutus</h3> 324 <p><label class="jasrek-radio"><input type="checkbox" name="auto_muistutus" value="1" <?php checked($s['auto_muistutus'], '1'); ?>> Lähetä maksamattomille muistutus automaattisesti</label></p> 325 <div class="jasrek-grid"> 326 <p><label for="jasrek-apaiv">Päivää eräpäivän jälkeen</label> 327 <input type="number" id="jasrek-apaiv" name="auto_paivia" min="1" max="365" value="<?php echo esc_attr($s['auto_paivia']); ?>"></p> 328 <p><label for="jasrek-amax">Muistutuksia enintään</label> 329 <input type="number" id="jasrek-amax" name="auto_max" min="1" max="10" value="<?php echo esc_attr($s['auto_max']); ?>"> 330 <span class="description">Seuraava muistutus lähtee aina saman päivämäärän kuluttua edellisestä.</span></p> 331 </div> 332 <p><label class="jasrek-radio"><input type="checkbox" name="auto_raportti" value="1" <?php checked($s['auto_raportti'], '1'); ?>> Lähetä yhteenveto lähetetyistä muistutuksista osoitteeseen <?php echo esc_html($raportti_to); ?></label></p> 333 <p class="description">Muistutuksen saavat vain jäsenet, joille lasku on jo lähetetty ja joilla on sähköpostiosoite. Automaattisen muistutuksen voi kytkeä pois myös yksittäiseltä laskulta. WordPress tarkistaa tilanteen kerran tunnissa, kun sivustolla on kävijöitä. 334 <?php if ($s['auto_muistutus'] === '1' && $next): ?><br>Seuraava tarkistus: <?php echo esc_html(wp_date('j.n.Y H:i', $next)); ?><?php endif; ?></p> 335 </div> 336 337 <div class="jasrek-panel" id="jasrek-vahvistus"> 338 <h2>Maksuvahvistus jäsenelle</h2> 339 <p><label class="jasrek-radio"><input type="checkbox" name="vahvistus_kaytossa" value="1" <?php checked($s['vahvistus_kaytossa'], '1'); ?>> Lähetä jäsenelle sähköpostilla vahvistus, kun hänen maksunsa kirjataan</label></p> 340 <p class="description">Kun maksuja kirjataan pankkitiedostosta tai joukkotoiminnolla, kirjauksen yhteydessä on ruksi <em>Lähetä maksuvahvistus</em> (valmiiksi valittuna), jonka voi poistaa esim. vanhoja maksuja kirjattaessa. Laskun sivulla maksetun rivin kohdalla on lisäksi painike <em>Lähetä vahvistus</em>. Vahvistukset lähtevät taustalla pienissä erissä. Vain jäsenille, joilla on sähköpostiosoite.</p> 341 <p><label for="jasrek-vot">Otsikko</label> 342 <input type="text" id="jasrek-vot" name="vahvistus_otsikko" value="<?php echo esc_attr($s['vahvistus_otsikko']); ?>"></p> 343 <p><label for="jasrek-vte">Viesti</label> 344 <textarea id="jasrek-vte" name="vahvistus_teksti" rows="6"><?php echo esc_textarea($s['vahvistus_teksti']); ?></textarea> 345 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vte', 'vahvistus', '{summa} on maksettu summa.')); ?></p> 346 </div> 347 278 348 <div class="jasrek-panel" id="jasrek-kirjanpito"> 279 349 <h2>Jäsenmaksut kirjanpitoon</h2> … … 289 359 </div> 290 360 </div> 291 292 <div class="jasrek-panel" id="jasrek-merkkipaivat"> 293 <h2>Merkkipäivät</h2> 294 <p class="description">Vuosiraportti ja jäsenlista kertovat, ketkä täyttävät valittuja tasavuosia tai ovat olleet jäsenenä valitut vuodet. Täytettävät vuodet lasketaan jäsenen tiedoissa olevasta <em>syntymävuodesta tai -päivästä</em>. Kenttä on vapaaehtoinen, ja se näkyy jäsenen lomakkeella vain, kun merkkipäivät ovat käytössä. Jos jäsenestä on merkitty vain syntymävuosi, merkkipäivä näkyy vuosiraportissa ilman päivää. Jäsenyysvuodet lasketaan liittymispäivästä. Tyhjä kenttä = sitä merkkipäivää ei näytetä.</p> 295 <p><label class="jasrek-radio"><input type="checkbox" name="merkki_kaytossa" value="1" <?php checked($s['merkki_kaytossa'], '1'); ?>> Merkkipäivät käytössä</label> 296 <span class="description">Pois päältä merkkipäiviä ei näytetä jäsenlistassa, vuosiraportissa eikä Excel-viennissä, eikä jäsenen lomakkeella kysytä syntymävuotta. Asetetut vuodet ja tallennetut syntymävuodet säilyvät.</span></p> 297 <div class="jasrek-grid"> 298 <p><label for="jasrek-merkki-ika">Täytettävät vuodet</label> 299 <input type="text" id="jasrek-merkki-ika" name="merkki_ika" value="<?php echo esc_attr($s['merkki_ika']); ?>" placeholder="50, 60, 70, 80, 90"></p> 300 <p><label for="jasrek-merkki-jasen">Jäsenyysvuodet</label> 301 <input type="text" id="jasrek-merkki-jasen" name="merkki_jasen" value="<?php echo esc_attr($s['merkki_jasen']); ?>" placeholder="10, 20, 25, 30, 40, 50"></p> 302 </div> 303 </div> 304 305 <div class="jasrek-panel"> 306 <h2>Automaattinen maksumuistutus</h2> 307 <p><label class="jasrek-radio"><input type="checkbox" name="auto_muistutus" value="1" <?php checked($s['auto_muistutus'], '1'); ?>> Lähetä maksamattomille muistutus automaattisesti</label></p> 308 <div class="jasrek-grid"> 309 <p><label for="jasrek-apaiv">Päivää eräpäivän jälkeen</label> 310 <input type="number" id="jasrek-apaiv" name="auto_paivia" min="1" max="365" value="<?php echo esc_attr($s['auto_paivia']); ?>"></p> 311 <p><label for="jasrek-amax">Muistutuksia enintään</label> 312 <input type="number" id="jasrek-amax" name="auto_max" min="1" max="10" value="<?php echo esc_attr($s['auto_max']); ?>"> 313 <span class="description">Seuraava muistutus lähtee aina saman päivämäärän kuluttua edellisestä.</span></p> 314 </div> 315 <p><label class="jasrek-radio"><input type="checkbox" name="auto_raportti" value="1" <?php checked($s['auto_raportti'], '1'); ?>> Lähetä yhteenveto lähetetyistä muistutuksista osoitteeseen <?php echo esc_html($raportti_to); ?></label></p> 316 <p class="description">Muistutuksen saavat vain jäsenet, joille lasku on jo lähetetty ja joilla on sähköpostiosoite. Automaattisen muistutuksen voi kytkeä pois myös yksittäiseltä laskulta. WordPress tarkistaa tilanteen kerran tunnissa, kun sivustolla on kävijöitä. 317 <?php if ($s['auto_muistutus'] === '1' && $next): ?><br>Seuraava tarkistus: <?php echo esc_html(wp_date('j.n.Y H:i', $next)); ?><?php endif; ?></p> 318 </div> 319 320 <div class="jasrek-panel" id="jasrek-omat-tiedot"> 321 <h2>Jäsenen omat tiedot viesteissä <code>{omat_tiedot}</code></h2> 322 <p class="description">Valitse, mitkä tiedot paikkamerkki <code>{omat_tiedot}</code> näyttää jäsenelle tietojentarkistuspyynnössä ja laskun saatteessa. Puuttuva osoite, puhelin tai sähköposti korostetaan. Jos kaikki on valittu, myöhemmin lisättävät omat kentät tulevat mukaan automaattisesti.</p> 323 <p class="jasrek-checks"><?php $ot_val = jasrek_omat_tiedot_valitut(); foreach (jasrek_omat_tiedot_valinnat() as $k => $nimi): ?> 324 <label class="jasrek-radio"><input type="checkbox" name="ot_kentat[]" value="<?php echo esc_attr($k); ?>" <?php checked(in_array($k, $ot_val, true)); ?>> <?php echo esc_html($nimi); ?></label> 325 <?php endforeach; ?></p> 326 </div> 327 328 <div class="jasrek-panel" id="jasrek-vahvistus"> 329 <h2>Maksuvahvistus jäsenelle</h2> 330 <p><label class="jasrek-radio"><input type="checkbox" name="vahvistus_kaytossa" value="1" <?php checked($s['vahvistus_kaytossa'], '1'); ?>> Lähetä jäsenelle sähköpostilla vahvistus, kun hänen maksunsa kirjataan</label></p> 331 <p class="description">Kun maksuja kirjataan pankkitiedostosta tai joukkotoiminnolla, kirjauksen yhteydessä on ruksi <em>Lähetä maksuvahvistus</em> (valmiiksi valittuna), jonka voi poistaa esim. vanhoja maksuja kirjattaessa. Laskun sivulla maksetun rivin kohdalla on lisäksi painike <em>Lähetä vahvistus</em>. Vahvistukset lähtevät taustalla pienissä erissä. Vain jäsenille, joilla on sähköpostiosoite.</p> 332 <p><label for="jasrek-vot">Otsikko</label> 333 <input type="text" id="jasrek-vot" name="vahvistus_otsikko" value="<?php echo esc_attr($s['vahvistus_otsikko']); ?>"></p> 334 <p><label for="jasrek-vte">Viesti</label> 335 <textarea id="jasrek-vte" name="vahvistus_teksti" rows="6"><?php echo esc_textarea($s['vahvistus_teksti']); ?></textarea> 336 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vte', 'vahvistus', '{summa} on maksettu summa.')); ?></p> 337 </div> 338 361 </div> 362 <div class="jasrek-tab" data-tab="sposti"> 339 363 <div class="jasrek-panel"> 340 364 <h2>Sähköpostin lähettäjä</h2> … … 351 375 <?php endif; ?> 352 376 <p class="description">Suositus: asenna SMTP-lisäosa (esim. WP Mail SMTP tai FluentSMTP), jolloin viestit lähtevät yhdistyksen oikean sähköpostitilin kautta eivätkä päädy roskapostiin. Kokeile asetukset lähettämällä testilasku itsellesi.</p> 353 </div> 354 355 <div class="jasrek-panel"> 356 <h2>Oletustekstit</h2> 357 <p><label for="jasrek-vo">Laskun saateteksti (oletus uusille laskuille)</label> 358 <textarea id="jasrek-vo" name="viesti_oletus" rows="7"><?php echo esc_textarea($s['viesti_oletus']); ?></textarea> 359 <?php echo wp_kses_post(jasrek_placeholders('jasrek-vo', 'lasku')); ?></p> 360 <p><label for="jasrek-mt">Maksumuistutuksen teksti</label> 361 <textarea id="jasrek-mt" name="muistutus_teksti" rows="6"><?php echo esc_textarea($s['muistutus_teksti']); ?></textarea> 362 <?php echo wp_kses_post(jasrek_placeholders('jasrek-mt', 'lasku')); ?></p> 363 </div> 364 377 <p><label for="jasrek-yhteystiedot">Yhteystiedot viestien alalaitaan</label> 378 <textarea id="jasrek-yhteystiedot" name="yhteystiedot" rows="3" placeholder="Esim. Yhdistys ry · rahastonhoitaja@example.fi · www.example.fi"><?php echo esc_textarea($s['yhteystiedot']); ?></textarea></p> 379 </div> 380 381 <div class="jasrek-panel" id="jasrek-omat-tiedot"> 382 <h2>Jäsenen omat tiedot viesteissä <code>{omat_tiedot}</code></h2> 383 <p class="description">Valitse, mitkä tiedot paikkamerkki <code>{omat_tiedot}</code> näyttää jäsenelle tietojentarkistuspyynnössä ja laskun saatteessa. Puuttuva osoite, puhelin tai sähköposti korostetaan. Jos kaikki on valittu, myöhemmin lisättävät omat kentät tulevat mukaan automaattisesti.</p> 384 <p class="jasrek-checks"><?php $ot_val = jasrek_omat_tiedot_valitut(); foreach (jasrek_omat_tiedot_valinnat() as $k => $nimi): ?> 385 <label class="jasrek-radio"><input type="checkbox" name="ot_kentat[]" value="<?php echo esc_attr($k); ?>" <?php checked(in_array($k, $ot_val, true)); ?>> <?php echo esc_html($nimi); ?></label> 386 <?php endforeach; ?></p> 387 </div> 388 </div> 389 <div class="jasrek-tab" data-tab="loki"> 365 390 <div class="jasrek-panel" id="jasrek-loki"> 366 391 <h2>Muutosloki</h2> … … 374 399 <span class="description">Loki sisältää henkilötietoja (esim. vanhoja osoitteita), joten sitä ei kannata säilyttää tarpeettoman pitkään. Vanhemmat merkinnät poistetaan automaattisesti.</span></p> 375 400 </div> 376 401 </div> 402 403 <div class="jasrek-tab" data-tab="varmuus"> 377 404 <?php jasrek_autobackup_panel($s); ?> 378 405 … … 382 409 <label class="jasrek-radio"><input type="radio" name="poista_tiedot" value="0" <?php checked($s['poista_tiedot'], '0'); ?>> <strong>Säilytä tiedot</strong> – jäsenet, laskut, maksut ja asetukset jäävät tietokantaan, ja lisäosan voi asentaa myöhemmin uudelleen.</label> 383 410 <label class="jasrek-radio"><input type="radio" name="poista_tiedot" value="1" <?php checked($s['poista_tiedot'], '1'); ?> data-confirm="Haluatko varmasti, että kaikki jäsenrekisterin tiedot poistetaan pysyvästi, kun lisäosa poistetaan? Tätä ei voi perua."> <strong>Poista kaikki tiedot</strong> – kaikki lisäosan luomat taulut ja asetukset poistetaan pysyvästi.</label> 384 <p class="description">Ota ennen poistamista <a href="#jasrek-varmuuskopio">varmuuskopio</a> (alla), jolla kaikki tiedot voi palauttaa myöhemmin. Valinta kysytään myös, kun lisäosa poistetaan käytöstä.</p> 385 </div> 386 387 <p><button type="submit" class="button button-primary button-large">Tallenna asetukset</button></p> 411 <p class="description">Ota ennen poistamista <a href="#jasrek-varmuuskopio">varmuuskopio</a> (ylempänä), jolla kaikki tiedot voi palauttaa myöhemmin. Valinta kysytään myös, kun lisäosa poistetaan käytöstä.</p> 412 </div> 413 </div> 414 415 <p class="jasrek-save"><button type="submit" class="button button-primary button-large">Tallenna asetukset</button> 416 <span class="description">Tallentaa kaikkien välilehtien asetukset.</span></p> 388 417 </form> 389 <?php jasrek_backup_panel(); ?>390 418 </div> 391 419 <?php -
oh6kw-jasenrekisteri/trunk/oh6kw-jasenrekisteri.php
r3755968 r3763979 4 4 Plugin URI: https://github.com/oh6kw/oh6kw-jasenrekisteri 5 5 Description: Yhdistyksen jäsenrekisteri: jäsenet, jäsenluokat ja omat lisäkentät, jäsenmaksulaskut omilla viitenumeroilla sähköpostilla tai paperilla, QR-koodi ja pankkiviivakoodi, maksujen tuonti pankista, muistutukset, tiedotteet, vuosiraportti ja muutosloki. 6 Version: 4. 8.96 Version: 4.9.0 7 7 Author: Jarno Jaskari (oh6kw) 8 8 Author URI: https://github.com/oh6kw … … 28 28 } 29 29 30 define('JASREK_VERSION', '4. 8.9');30 define('JASREK_VERSION', '4.9.0'); 31 31 define('JASREK_DB_VERSION', '10'); 32 32 define('JASREK_FILE', __FILE__); -
oh6kw-jasenrekisteri/trunk/readme.txt
r3755968 r3763979 6 6 Tested up to: 7.1 7 7 Requires PHP: 7.4 8 Stable tag: 4. 8.98 Stable tag: 4.9.0 9 9 License: AGPLv3 or later 10 10 License URI: https://www.gnu.org/licenses/agpl-3.0.html … … 146 146 == Changelog == 147 147 148 = 4.9.0 = 149 * The settings page is now divided into tabs: Association, Members, Invoices, Email, Audit log, and Backups and removal. Invoice settings are grouped into boxes for all invoices, email invoices, paper invoices, reminders, payment confirmation and bookkeeping accounts. Only the layout changed – every setting is kept and still saved with one button. 150 148 151 = 4.8.9 = 149 152 * New (optional): payment confirmation email to the member when a payment is imported from the bank file or marked as paid on the invoice page; a single confirmation can also be sent from the invoice row. Off by default; subject and text are editable in the settings. Sent in the background in small batches, only to members with an email address.
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)