Changeset 3298894
- Timestamp:
- 05/22/2025 04:02:10 PM (9 months ago)
- Location:
- chordpress
- Files:
-
- 5 edited
- 23 copied
-
tags/3.9.0 (copied) (copied from chordpress/trunk)
-
tags/3.9.0/admin/class-chordpress-admin.php (copied) (copied from chordpress/trunk/admin/class-chordpress-admin.php)
-
tags/3.9.0/admin/js/chordpress-admin.js (copied) (copied from chordpress/trunk/admin/js/chordpress-admin.js)
-
tags/3.9.0/admin/js/tinymce_buttons.js (copied) (copied from chordpress/trunk/admin/js/tinymce_buttons.js)
-
tags/3.9.0/admin/partials/chordpress-admin-chord-meta-box.php (copied) (copied from chordpress/trunk/admin/partials/chordpress-admin-chord-meta-box.php)
-
tags/3.9.0/admin/partials/chordpress-admin-license.php (copied) (copied from chordpress/trunk/admin/partials/chordpress-admin-license.php)
-
tags/3.9.0/admin/partials/chordpress-admin-options.php (copied) (copied from chordpress/trunk/admin/partials/chordpress-admin-options.php)
-
tags/3.9.0/chordpress.php (copied) (copied from chordpress/trunk/chordpress.php) (2 diffs)
-
tags/3.9.0/includes/class-chordpress-activator.php (copied) (copied from chordpress/trunk/includes/class-chordpress-activator.php)
-
tags/3.9.0/includes/class-chordpress-chord.php (copied) (copied from chordpress/trunk/includes/class-chordpress-chord.php)
-
tags/3.9.0/includes/class-chordpress-deactivator.php (copied) (copied from chordpress/trunk/includes/class-chordpress-deactivator.php)
-
tags/3.9.0/includes/class-chordpress-i18n.php (copied) (copied from chordpress/trunk/includes/class-chordpress-i18n.php)
-
tags/3.9.0/includes/class-chordpress-license.php (copied) (copied from chordpress/trunk/includes/class-chordpress-license.php)
-
tags/3.9.0/includes/class-chordpress-loader.php (copied) (copied from chordpress/trunk/includes/class-chordpress-loader.php)
-
tags/3.9.0/includes/class-chordpress-plugin.php (copied) (copied from chordpress/trunk/includes/class-chordpress-plugin.php)
-
tags/3.9.0/includes/class-chordpress-renderer.php (copied) (copied from chordpress/trunk/includes/class-chordpress-renderer.php) (4 diffs)
-
tags/3.9.0/languages/chordpress.pot (copied) (copied from chordpress/trunk/languages/chordpress.pot) (3 diffs)
-
tags/3.9.0/makepot.cmd (copied) (copied from chordpress/trunk/makepot.cmd)
-
tags/3.9.0/public/class-chordpress-public.php (copied) (copied from chordpress/trunk/public/class-chordpress-public.php)
-
tags/3.9.0/public/css/chordpress-public.css (copied) (copied from chordpress/trunk/public/css/chordpress-public.css)
-
tags/3.9.0/public/js/chordpress-public.js (copied) (copied from chordpress/trunk/public/js/chordpress-public.js) (4 diffs)
-
tags/3.9.0/readme.txt (copied) (copied from chordpress/trunk/readme.txt) (2 diffs)
-
tags/3.9.0/uninstall.php (copied) (copied from chordpress/trunk/uninstall.php)
-
trunk/chordpress.php (modified) (2 diffs)
-
trunk/includes/class-chordpress-renderer.php (modified) (4 diffs)
-
trunk/languages/chordpress.pot (modified) (3 diffs)
-
trunk/public/js/chordpress-public.js (modified) (4 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
chordpress/tags/3.9.0/chordpress.php
r3275645 r3298894 19 19 * Plugin URI: https://lewe.gitbook.io/lewe-chordpress/ 20 20 * Description: This plugin renders ChordPro formatted text and chord diagrams in WordPress sites. 21 * Version: 3. 8.221 * Version: 3.9.0 22 22 * Author: George Lewe 23 23 * Author URI: https://www.lewe.com … … 38 38 */ 39 39 define('CHORDPRESS_NAME', 'ChordPress'); 40 define('CHORDPRESS_VERSION', '3. 8.2');40 define('CHORDPRESS_VERSION', '3.9.0'); 41 41 define('CHORDPRESS_AUTHOR', 'George Lewe'); 42 42 define('CHORDPRESS_AUTHOR_URI', 'https://www.lewe.com'); -
chordpress/tags/3.9.0/includes/class-chordpress-renderer.php
r3243398 r3298894 496 496 array( 'tremolo' => '12', 'diatonic' => '10', 'chromatic' => '12', 'note' => "C4" ), 497 497 array( 'tremolo' => '-', 'diatonic' => '-', 'chromatic' => '12s', 'note' => "C#4" ), 498 ); 499 500 private $arrChromaticTranspose = array( 501 '1' => ['1', '1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4'], 502 '1s' => ['1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4' ], 503 '-1' => ['-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s' ], 504 '-1s' => ['-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5' ], 505 '2' => ['2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s' ], 506 '-2' => ['-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6' ], 507 '-2s' => ['-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6' ], 508 '3' => ['3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s' ], 509 '3s' => ['3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7' ], 510 '-3' => ['-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s' ], 511 '-3s' => ['-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7' ], 512 '-4' => ['-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s' ], 513 '4' => ['4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8' ], 514 '4s' => ['4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8' ], 515 '-5' => ['-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9' ], 516 '-5s' => ['-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s' ], 517 '6' => ['6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9' ], 518 '-6' => ['-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s' ], 519 '-6s' => ['-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10' ], 520 '7' => ['7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10' ], 521 '7s' => ['7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s' ], 522 '-7' => ['-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11' ], 523 '-7s' => ['-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s' ], 524 '-8' => ['-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11' ], 525 '8' => ['8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s' ], 526 '9' => ['9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12' ], 527 '9s' => ['9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12' ], 528 '-9' => ['-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s' ], 529 '-9s' => ['-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ' ], 530 '10' => ['10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ' ], 531 '-10' => ['-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ' ], 532 '-10s' => ['-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ' ], 533 '11' => ['11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ' ], 534 '11s' => ['11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ' ], 535 '-11' => ['-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 536 '-11s' => ['-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 537 '-12' => ['-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 538 '12' => ['12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 539 '12s' => ['12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 498 540 ); 499 541 … … 787 829 } 788 830 831 $interactionForm .= 832 "<div class='cpress-row'> 833 <div class='cpress-col-2'>"; 834 789 835 $interactionForm .= __('Harmonica', 'chordpress') . "<br> 790 <div class=\"float-left\"> 791 <select 792 class=\"cpress-form-control cpress-form-control-sm cpress-py-0 cpress-px-2\" 793 id=\"selTranspose-%cpressID%\" 794 onchange=\"transposeHarmonica('%cpressID%', 'selTranspose-', this.value);return false;\" 795 title=\"" . __('Only works when using harmonica notation', 'chordpress') . ".\" 796 > 797 <option value=\"diatonic\" " . $selectedDiatonic . ">" . __('Diatonic', 'chordpress') . "</option> 798 <option value=\"chromatic\" " . $selectedChromatic . ">" . __('Chromatic', 'chordpress') . "</option> 799 <option value=\"tremolo\" " . $selectedTremolo . ">" . __('Tremolo', 'chordpress') . "</option> 800 </select> 836 <select 837 class=\"cpress-form-control cpress-form-control-sm cpress-py-0 cpress-px-2\" 838 id=\"selTranspose-%cpressID%\" 839 onchange=\"transposeHarmonica('%cpressID%', 'selTranspose-', this.value);return false;\" 840 title=\"" . __('Only works when using harmonica notation', 'chordpress') . ".\" 841 > 842 <option value=\"diatonic\" " . $selectedDiatonic . ">" . __('Diatonic', 'chordpress') . "</option> 843 <option value=\"chromatic\" " . $selectedChromatic . ">" . __('Chromatic', 'chordpress') . "</option> 844 <option value=\"tremolo\" " . $selectedTremolo . ">" . __('Tremolo', 'chordpress') . "</option> 845 </select>"; 846 847 $interactionForm .= " 848 </div> 849 <div class='cpress-col-3'>"; 850 851 if ($this->harmonica == 'chromatic') { 852 $baseNote = "''"; 853 $initialText = '0'; 854 $interactionForm .= "<span id='btnTranspose-chromatic'>" . __('Transpose', 'chordpress') . "<br> 855 <div class='cpress-btn-group' role='group'> 856 <button type='button' class='cpress-btn cpress-btn-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'down', " . $baseNote . ");\">-</button> 857 <button id=\"btnTranspose-%cpressID%\" type='button' class='cpress-btn cpress-btn-outline-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'reset', " . $baseNote . ");\" value='0'>" . $initialText . "</button> 858 <button type='button' class='cpress-btn cpress-btn-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'up', " . $baseNote . ");\">+</button> 859 </div> 860 </span>"; 861 } 862 $interactionForm .= " 863 </div> 801 864 </div>"; 802 865 } … … 1120 1183 $returnText .= "\n"; 1121 1184 } 1185 /** 1186 * If harmonica type is 'chromatic' prepare all transposed values of the harmonica note. 1187 * They need to be on the page for interactive mode to show/hide them via Javascript. 1188 */ 1189 if ($this->harmonica == 'chromatic') { 1190 for ($t = 1; $t <= 11; $t++) { 1191 $returnText .= '<div class="chord chord-hidable-%cpressID% key-%cpressID%-chromatic-' . $t . '" style="display:none"><span class="chordshort">' . $this->transposeChromaticNote($theChord, $t) . '</span> </div>'; 1192 $returnText .= "\n"; 1193 } 1194 $returnText .= "\n"; 1195 } 1122 1196 } 1123 1197 … … 1275 1349 */ 1276 1350 return $xlatedNote . $this->formatRemainder($rem); 1351 } 1352 1353 /** 1354 * -------------------------------------------------------------------------- 1355 * Format Chromatic Note. 1356 * -------------------------------------------------------------------------- 1357 * 1358 * Processes a Chromatic harmonica note and returns the formatted HTML. 1359 * 1360 * @param string $note - Chromatic note, e.g. "1" or "1s" or "-1" or "-1s". 1361 * 1362 * @return string - Transposed chromatic note 1363 * @since 2.8.0 1364 */ 1365 public function transposeChromaticNote($note, $transpose) { 1366 if (strlen($note) == 0) return ''; 1367 if ($transpose === 0 || $transpose > 11) return $note; 1368 1369 /** 1370 * Find the submitted note in the chromaticNotes array 1371 */ 1372 if (array_key_exists($note, $this->arrChromaticTranspose)) { 1373 $noteToTranspose = $this->arrChromaticTranspose[$note]; 1374 // $noteToTranspose now contains the array object for the submitted note 1375 } else { 1376 $noteToTranspose = false; // Note not found 1377 } 1378 1379 if ($noteToTranspose !== false) { 1380 /** 1381 * Value found. Add transpose 1382 */ 1383 return $noteToTranspose[$transpose]; 1384 } else { 1385 /** 1386 * Value not found 1387 */ 1388 return $note; 1389 } 1277 1390 } 1278 1391 -
chordpress/tags/3.9.0/languages/chordpress.pot
r3243398 r3298894 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Lewe ChordPress 3. 8.1\n"5 "Project-Id-Version: Lewe ChordPress 3.9.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/chordpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-0 2-19T18:00:13+01:00\n"12 "POT-Creation-Date: 2025-05-22T18:00:03+02:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.4.0\n" … … 1248 1248 msgstr "" 1249 1249 1250 #: includes/class-chordpress-renderer.php: 6981250 #: includes/class-chordpress-renderer.php:740 1251 1251 msgid "Font" 1252 1252 msgstr "" 1253 1253 1254 #: includes/class-chordpress-renderer.php:725 1255 #: includes/class-chordpress-renderer.php:744 1254 #: includes/class-chordpress-renderer.php:767 1255 #: includes/class-chordpress-renderer.php:786 1256 #: includes/class-chordpress-renderer.php:854 1256 1257 msgid "Transpose" 1257 1258 msgstr "" 1258 1259 1259 #: includes/class-chordpress-renderer.php:7 461260 #: includes/class-chordpress-renderer.php:788 1260 1261 msgid "Only works for international key names" 1261 1262 msgstr "" 1262 1263 1263 #: includes/class-chordpress-renderer.php: 7891264 #: includes/class-chordpress-renderer.php:835 1264 1265 msgid "Harmonica" 1265 1266 msgstr "" 1266 1267 1267 #: includes/class-chordpress-renderer.php: 7951268 #: includes/class-chordpress-renderer.php:840 1268 1269 msgid "Only works when using harmonica notation" 1269 1270 msgstr "" 1270 1271 1271 #: includes/class-chordpress-renderer.php: 7971272 #: includes/class-chordpress-renderer.php:842 1272 1273 msgid "Diatonic" 1273 1274 msgstr "" 1274 1275 1275 #: includes/class-chordpress-renderer.php: 7981276 #: includes/class-chordpress-renderer.php:843 1276 1277 msgid "Chromatic" 1277 1278 msgstr "" 1278 1279 1279 #: includes/class-chordpress-renderer.php: 7991280 #: includes/class-chordpress-renderer.php:844 1280 1281 msgid "Tremolo" 1281 1282 msgstr "" 1282 1283 1283 #: includes/class-chordpress-renderer.php:8 071284 #: includes/class-chordpress-renderer.php:870 1284 1285 msgid "Print" 1285 1286 msgstr "" 1286 1287 1287 #: includes/class-chordpress-renderer.php: 8431288 #: includes/class-chordpress-renderer.php:906 1288 1289 msgid "Composer" 1289 1290 msgstr "" 1290 1291 1291 #: includes/class-chordpress-renderer.php: 8441292 #: includes/class-chordpress-renderer.php:907 1292 1293 msgid "Artist" 1293 1294 msgstr "" 1294 1295 1295 #: includes/class-chordpress-renderer.php: 8451296 #: includes/class-chordpress-renderer.php:908 1296 1297 msgid "Year" 1297 1298 msgstr "" 1298 1299 1299 #: includes/class-chordpress-renderer.php: 8461300 #: includes/class-chordpress-renderer.php:909 1300 1301 msgid "Album" 1301 1302 msgstr "" 1302 1303 1303 #: includes/class-chordpress-renderer.php: 8491304 #: includes/class-chordpress-renderer.php:912 1304 1305 msgid "Key (original)" 1305 1306 msgstr "" 1306 1307 1307 #: includes/class-chordpress-renderer.php: 8501308 #: includes/class-chordpress-renderer.php:913 1308 1309 msgid "Key (transposed)" 1309 1310 msgstr "" 1310 1311 1311 #: includes/class-chordpress-renderer.php: 8571312 #: includes/class-chordpress-renderer.php:920 1312 1313 msgid "Time" 1313 1314 msgstr "" 1314 1315 1315 #: includes/class-chordpress-renderer.php: 8581316 #: includes/class-chordpress-renderer.php:921 1316 1317 msgid "Tempo" 1317 1318 msgstr "" 1318 1319 1319 #: includes/class-chordpress-renderer.php: 8591320 #: includes/class-chordpress-renderer.php:922 1320 1321 msgid "Capo" 1321 1322 msgstr "" 1322 1323 1323 #: includes/class-chordpress-renderer.php: 8891324 #: includes/class-chordpress-renderer.php:952 1324 1325 msgid "These known chords are used in this song" 1325 1326 msgstr "" 1326 1327 1327 #: includes/class-chordpress-renderer.php:10 071328 #: includes/class-chordpress-renderer.php:1070 1328 1329 msgid "Missing square bracket in line" 1329 1330 msgstr "" -
chordpress/tags/3.9.0/public/js/chordpress-public.js
r3234199 r3298894 99 99 x--; 100 100 } else { 101 x = 0;101 x = 11; 102 102 } 103 103 } else if (direction === 'reset') { … … 138 138 /** 139 139 * ---------------------------------------------------------------------------- 140 * Transposes Chromatic. 141 * ---------------------------------------------------------------------------- 142 * 143 * This function hides all chromatic note divs, then shows those for the given 144 * transpose value. 145 * 146 * @since 3.8.3 147 */ 148 function transposeChromatic(cpressId, formControlId, direction, baseNote) { 149 150 const arrTransposeValues = { 151 '1': ['1', '1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4'], 152 '1s': ['1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4' ], 153 '-1': ['-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s' ], 154 '-1s': ['-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5' ], 155 '2': ['2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s' ], 156 '-2': ['-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6' ], 157 '-2s': ['-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6' ], 158 '3': ['3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s' ], 159 '3s': ['3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7' ], 160 '-3': ['-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s' ], 161 '-3s': ['-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7' ], 162 '-4': ['-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s' ], 163 '4': ['4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8' ], 164 '4s': ['4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8' ], 165 '-5': ['-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9' ], 166 '-5s': ['-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s' ], 167 '6': ['6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9' ], 168 '-6': ['-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s' ], 169 '-6s': ['-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10' ], 170 '7': ['7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10' ], 171 '7s': ['7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s' ], 172 '-7': ['-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11' ], 173 '-7s': ['-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s' ], 174 '-8': ['-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11' ], 175 '8': ['8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s' ], 176 '9': ['9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12' ], 177 '9s': ['9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12' ], 178 '-9': ['-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s' ], 179 '-9s': ['-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ' ], 180 '10': ['10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ' ], 181 '-10': ['-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ' ], 182 '-10s': ['-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ' ], 183 '11': ['11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ' ], 184 '11s': ['11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ' ], 185 '-11': ['-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 186 '-11s': ['-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 187 '-12': ['-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 188 '12': ['12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 189 '12s': ['12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 190 }; 191 192 let transposeElementId = "selTranspose-" + cpressId; 193 if (formControlId) { 194 transposeElementId = formControlId + cpressId; 195 } 196 // console.log(">>> transposeElementId: " + transposeElementId); 197 198 /** 199 * Get value from transpose form element 200 */ 201 var x = document.getElementById(transposeElementId).value; 202 // console.log(">>> direction: " + direction); 203 if (direction) { 204 if (direction === 'up') { 205 if (x < 11) { 206 x++; 207 } else { 208 x = 0; 209 } 210 } else if (direction === 'down') { 211 if (x > 0) { 212 x--; 213 } else { 214 x = 11; 215 } 216 } else if (direction === 'reset') { 217 x = 0; 218 } 219 } 220 221 /** 222 * Hide all hidable chords 223 */ 224 var divsToHide = document.getElementsByClassName("chord-hidable-" + cpressId); 225 // console.log(">>> divsToHide" + divsToHide); 226 for (var i = 0; i < divsToHide.length; i++) { 227 divsToHide[i].style.display = "none"; 228 } 229 230 /** 231 * Now show those for the selected transpose value 232 */ 233 var divsToShow = document.getElementsByClassName("key-" + cpressId + '-chromatic-' + x); 234 if (x === 0) { 235 divsToShow = document.getElementsByClassName("key-" + cpressId + '-chromatic'); 236 } 237 // console.log(">>> divsToShow[0]" + divsToShow[0]); 238 239 for (var j = 0; j < divsToShow.length; j++) { 240 divsToShow[j].style.display = ""; 241 } 242 243 /** 244 * Change value and text of the transpose button 245 */ 246 if (formControlId === 'btnTranspose-') { 247 var btn = document.getElementById(transposeElementId); 248 btn.value = x; 249 if (baseNote !== '') { 250 btn.innerText = x + ' (' + arrTransposeValues[baseNote][x] + ')'; 251 } else { 252 btn.innerText = x; 253 } 254 } 255 } 256 257 /** 258 * ---------------------------------------------------------------------------- 140 259 * Transposes Harmonica. 141 260 * ---------------------------------------------------------------------------- … … 147 266 */ 148 267 function transposeHarmonica(cpressId, formControlId, harmonicaType) { 268 269 /** 270 * Hide/show the transpose button if harmonica type id no chromatic. 271 */ 272 const transposeButton = document.getElementById('btnTranspose-chromatic'); 273 if (harmonicaType === 'chromatic') { 274 transposeButton.style.display = ""; 275 } else { 276 transposeButton.style.display = "none"; 277 } 149 278 150 279 /** … … 160 289 */ 161 290 var divsToShow = document.getElementsByClassName("key-" + cpressId + '-' + harmonicaType); 162 for (var i = 0; i < divsToShow.length; i++) {163 divsToShow[ i].style.display = "";291 for (var j = 0; j < divsToShow.length; j++) { 292 divsToShow[j].style.display = ""; 164 293 } 165 294 } -
chordpress/tags/3.9.0/readme.txt
r3275645 r3298894 5 5 Requires at least: 4.0 6 6 Tested up to: 6.8 7 Stable tag: 3. 8.27 Stable tag: 3.9.0 8 8 Requires PHP: 5.2.4 9 9 License: GPLv3 … … 130 130 131 131 == Changelog == 132 = 3.9.0 = 133 * 2025-05-22 134 * Added option to transpose chromatic harmonica notes 135 132 136 = 3.8.1 = 133 137 * 2025-02-19 -
chordpress/trunk/chordpress.php
r3275645 r3298894 19 19 * Plugin URI: https://lewe.gitbook.io/lewe-chordpress/ 20 20 * Description: This plugin renders ChordPro formatted text and chord diagrams in WordPress sites. 21 * Version: 3. 8.221 * Version: 3.9.0 22 22 * Author: George Lewe 23 23 * Author URI: https://www.lewe.com … … 38 38 */ 39 39 define('CHORDPRESS_NAME', 'ChordPress'); 40 define('CHORDPRESS_VERSION', '3. 8.2');40 define('CHORDPRESS_VERSION', '3.9.0'); 41 41 define('CHORDPRESS_AUTHOR', 'George Lewe'); 42 42 define('CHORDPRESS_AUTHOR_URI', 'https://www.lewe.com'); -
chordpress/trunk/includes/class-chordpress-renderer.php
r3243398 r3298894 496 496 array( 'tremolo' => '12', 'diatonic' => '10', 'chromatic' => '12', 'note' => "C4" ), 497 497 array( 'tremolo' => '-', 'diatonic' => '-', 'chromatic' => '12s', 'note' => "C#4" ), 498 ); 499 500 private $arrChromaticTranspose = array( 501 '1' => ['1', '1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4'], 502 '1s' => ['1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4' ], 503 '-1' => ['-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s' ], 504 '-1s' => ['-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5' ], 505 '2' => ['2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s' ], 506 '-2' => ['-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6' ], 507 '-2s' => ['-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6' ], 508 '3' => ['3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s' ], 509 '3s' => ['3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7' ], 510 '-3' => ['-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s' ], 511 '-3s' => ['-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7' ], 512 '-4' => ['-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s' ], 513 '4' => ['4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8' ], 514 '4s' => ['4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8' ], 515 '-5' => ['-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9' ], 516 '-5s' => ['-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s' ], 517 '6' => ['6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9' ], 518 '-6' => ['-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s' ], 519 '-6s' => ['-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10' ], 520 '7' => ['7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10' ], 521 '7s' => ['7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s' ], 522 '-7' => ['-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11' ], 523 '-7s' => ['-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s' ], 524 '-8' => ['-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11' ], 525 '8' => ['8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s' ], 526 '9' => ['9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12' ], 527 '9s' => ['9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12' ], 528 '-9' => ['-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s' ], 529 '-9s' => ['-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ' ], 530 '10' => ['10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ' ], 531 '-10' => ['-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ' ], 532 '-10s' => ['-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ' ], 533 '11' => ['11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ' ], 534 '11s' => ['11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ' ], 535 '-11' => ['-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 536 '-11s' => ['-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 537 '-12' => ['-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 538 '12' => ['12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 539 '12s' => ['12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 498 540 ); 499 541 … … 787 829 } 788 830 831 $interactionForm .= 832 "<div class='cpress-row'> 833 <div class='cpress-col-2'>"; 834 789 835 $interactionForm .= __('Harmonica', 'chordpress') . "<br> 790 <div class=\"float-left\"> 791 <select 792 class=\"cpress-form-control cpress-form-control-sm cpress-py-0 cpress-px-2\" 793 id=\"selTranspose-%cpressID%\" 794 onchange=\"transposeHarmonica('%cpressID%', 'selTranspose-', this.value);return false;\" 795 title=\"" . __('Only works when using harmonica notation', 'chordpress') . ".\" 796 > 797 <option value=\"diatonic\" " . $selectedDiatonic . ">" . __('Diatonic', 'chordpress') . "</option> 798 <option value=\"chromatic\" " . $selectedChromatic . ">" . __('Chromatic', 'chordpress') . "</option> 799 <option value=\"tremolo\" " . $selectedTremolo . ">" . __('Tremolo', 'chordpress') . "</option> 800 </select> 836 <select 837 class=\"cpress-form-control cpress-form-control-sm cpress-py-0 cpress-px-2\" 838 id=\"selTranspose-%cpressID%\" 839 onchange=\"transposeHarmonica('%cpressID%', 'selTranspose-', this.value);return false;\" 840 title=\"" . __('Only works when using harmonica notation', 'chordpress') . ".\" 841 > 842 <option value=\"diatonic\" " . $selectedDiatonic . ">" . __('Diatonic', 'chordpress') . "</option> 843 <option value=\"chromatic\" " . $selectedChromatic . ">" . __('Chromatic', 'chordpress') . "</option> 844 <option value=\"tremolo\" " . $selectedTremolo . ">" . __('Tremolo', 'chordpress') . "</option> 845 </select>"; 846 847 $interactionForm .= " 848 </div> 849 <div class='cpress-col-3'>"; 850 851 if ($this->harmonica == 'chromatic') { 852 $baseNote = "''"; 853 $initialText = '0'; 854 $interactionForm .= "<span id='btnTranspose-chromatic'>" . __('Transpose', 'chordpress') . "<br> 855 <div class='cpress-btn-group' role='group'> 856 <button type='button' class='cpress-btn cpress-btn-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'down', " . $baseNote . ");\">-</button> 857 <button id=\"btnTranspose-%cpressID%\" type='button' class='cpress-btn cpress-btn-outline-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'reset', " . $baseNote . ");\" value='0'>" . $initialText . "</button> 858 <button type='button' class='cpress-btn cpress-btn-secondary cpress-btn-sm' onclick=\"transposeChromatic('%cpressID%', 'btnTranspose-', 'up', " . $baseNote . ");\">+</button> 859 </div> 860 </span>"; 861 } 862 $interactionForm .= " 863 </div> 801 864 </div>"; 802 865 } … … 1120 1183 $returnText .= "\n"; 1121 1184 } 1185 /** 1186 * If harmonica type is 'chromatic' prepare all transposed values of the harmonica note. 1187 * They need to be on the page for interactive mode to show/hide them via Javascript. 1188 */ 1189 if ($this->harmonica == 'chromatic') { 1190 for ($t = 1; $t <= 11; $t++) { 1191 $returnText .= '<div class="chord chord-hidable-%cpressID% key-%cpressID%-chromatic-' . $t . '" style="display:none"><span class="chordshort">' . $this->transposeChromaticNote($theChord, $t) . '</span> </div>'; 1192 $returnText .= "\n"; 1193 } 1194 $returnText .= "\n"; 1195 } 1122 1196 } 1123 1197 … … 1275 1349 */ 1276 1350 return $xlatedNote . $this->formatRemainder($rem); 1351 } 1352 1353 /** 1354 * -------------------------------------------------------------------------- 1355 * Format Chromatic Note. 1356 * -------------------------------------------------------------------------- 1357 * 1358 * Processes a Chromatic harmonica note and returns the formatted HTML. 1359 * 1360 * @param string $note - Chromatic note, e.g. "1" or "1s" or "-1" or "-1s". 1361 * 1362 * @return string - Transposed chromatic note 1363 * @since 2.8.0 1364 */ 1365 public function transposeChromaticNote($note, $transpose) { 1366 if (strlen($note) == 0) return ''; 1367 if ($transpose === 0 || $transpose > 11) return $note; 1368 1369 /** 1370 * Find the submitted note in the chromaticNotes array 1371 */ 1372 if (array_key_exists($note, $this->arrChromaticTranspose)) { 1373 $noteToTranspose = $this->arrChromaticTranspose[$note]; 1374 // $noteToTranspose now contains the array object for the submitted note 1375 } else { 1376 $noteToTranspose = false; // Note not found 1377 } 1378 1379 if ($noteToTranspose !== false) { 1380 /** 1381 * Value found. Add transpose 1382 */ 1383 return $noteToTranspose[$transpose]; 1384 } else { 1385 /** 1386 * Value not found 1387 */ 1388 return $note; 1389 } 1277 1390 } 1278 1391 -
chordpress/trunk/languages/chordpress.pot
r3243398 r3298894 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Lewe ChordPress 3. 8.1\n"5 "Project-Id-Version: Lewe ChordPress 3.9.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/chordpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-0 2-19T18:00:13+01:00\n"12 "POT-Creation-Date: 2025-05-22T18:00:03+02:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.4.0\n" … … 1248 1248 msgstr "" 1249 1249 1250 #: includes/class-chordpress-renderer.php: 6981250 #: includes/class-chordpress-renderer.php:740 1251 1251 msgid "Font" 1252 1252 msgstr "" 1253 1253 1254 #: includes/class-chordpress-renderer.php:725 1255 #: includes/class-chordpress-renderer.php:744 1254 #: includes/class-chordpress-renderer.php:767 1255 #: includes/class-chordpress-renderer.php:786 1256 #: includes/class-chordpress-renderer.php:854 1256 1257 msgid "Transpose" 1257 1258 msgstr "" 1258 1259 1259 #: includes/class-chordpress-renderer.php:7 461260 #: includes/class-chordpress-renderer.php:788 1260 1261 msgid "Only works for international key names" 1261 1262 msgstr "" 1262 1263 1263 #: includes/class-chordpress-renderer.php: 7891264 #: includes/class-chordpress-renderer.php:835 1264 1265 msgid "Harmonica" 1265 1266 msgstr "" 1266 1267 1267 #: includes/class-chordpress-renderer.php: 7951268 #: includes/class-chordpress-renderer.php:840 1268 1269 msgid "Only works when using harmonica notation" 1269 1270 msgstr "" 1270 1271 1271 #: includes/class-chordpress-renderer.php: 7971272 #: includes/class-chordpress-renderer.php:842 1272 1273 msgid "Diatonic" 1273 1274 msgstr "" 1274 1275 1275 #: includes/class-chordpress-renderer.php: 7981276 #: includes/class-chordpress-renderer.php:843 1276 1277 msgid "Chromatic" 1277 1278 msgstr "" 1278 1279 1279 #: includes/class-chordpress-renderer.php: 7991280 #: includes/class-chordpress-renderer.php:844 1280 1281 msgid "Tremolo" 1281 1282 msgstr "" 1282 1283 1283 #: includes/class-chordpress-renderer.php:8 071284 #: includes/class-chordpress-renderer.php:870 1284 1285 msgid "Print" 1285 1286 msgstr "" 1286 1287 1287 #: includes/class-chordpress-renderer.php: 8431288 #: includes/class-chordpress-renderer.php:906 1288 1289 msgid "Composer" 1289 1290 msgstr "" 1290 1291 1291 #: includes/class-chordpress-renderer.php: 8441292 #: includes/class-chordpress-renderer.php:907 1292 1293 msgid "Artist" 1293 1294 msgstr "" 1294 1295 1295 #: includes/class-chordpress-renderer.php: 8451296 #: includes/class-chordpress-renderer.php:908 1296 1297 msgid "Year" 1297 1298 msgstr "" 1298 1299 1299 #: includes/class-chordpress-renderer.php: 8461300 #: includes/class-chordpress-renderer.php:909 1300 1301 msgid "Album" 1301 1302 msgstr "" 1302 1303 1303 #: includes/class-chordpress-renderer.php: 8491304 #: includes/class-chordpress-renderer.php:912 1304 1305 msgid "Key (original)" 1305 1306 msgstr "" 1306 1307 1307 #: includes/class-chordpress-renderer.php: 8501308 #: includes/class-chordpress-renderer.php:913 1308 1309 msgid "Key (transposed)" 1309 1310 msgstr "" 1310 1311 1311 #: includes/class-chordpress-renderer.php: 8571312 #: includes/class-chordpress-renderer.php:920 1312 1313 msgid "Time" 1313 1314 msgstr "" 1314 1315 1315 #: includes/class-chordpress-renderer.php: 8581316 #: includes/class-chordpress-renderer.php:921 1316 1317 msgid "Tempo" 1317 1318 msgstr "" 1318 1319 1319 #: includes/class-chordpress-renderer.php: 8591320 #: includes/class-chordpress-renderer.php:922 1320 1321 msgid "Capo" 1321 1322 msgstr "" 1322 1323 1323 #: includes/class-chordpress-renderer.php: 8891324 #: includes/class-chordpress-renderer.php:952 1324 1325 msgid "These known chords are used in this song" 1325 1326 msgstr "" 1326 1327 1327 #: includes/class-chordpress-renderer.php:10 071328 #: includes/class-chordpress-renderer.php:1070 1328 1329 msgid "Missing square bracket in line" 1329 1330 msgstr "" -
chordpress/trunk/public/js/chordpress-public.js
r3234199 r3298894 99 99 x--; 100 100 } else { 101 x = 0;101 x = 11; 102 102 } 103 103 } else if (direction === 'reset') { … … 138 138 /** 139 139 * ---------------------------------------------------------------------------- 140 * Transposes Chromatic. 141 * ---------------------------------------------------------------------------- 142 * 143 * This function hides all chromatic note divs, then shows those for the given 144 * transpose value. 145 * 146 * @since 3.8.3 147 */ 148 function transposeChromatic(cpressId, formControlId, direction, baseNote) { 149 150 const arrTransposeValues = { 151 '1': ['1', '1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4'], 152 '1s': ['1s', '-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4' ], 153 '-1': ['-1', '-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s' ], 154 '-1s': ['-1s', '2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5' ], 155 '2': ['2', '-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s' ], 156 '-2': ['-2', '-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6' ], 157 '-2s': ['-2s', '3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6' ], 158 '3': ['3', '3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s' ], 159 '3s': ['3s', '-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7' ], 160 '-3': ['-3', '-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s' ], 161 '-3s': ['-3s', '-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7' ], 162 '-4': ['-4', '4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s' ], 163 '4': ['4', '4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8' ], 164 '4s': ['4s', '-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8' ], 165 '-5': ['-5', '-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9' ], 166 '-5s': ['-5s', '6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s' ], 167 '6': ['6', '-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9' ], 168 '-6': ['-6', '-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s' ], 169 '-6s': ['-6s', '7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10' ], 170 '7': ['7', '7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10' ], 171 '7s': ['7s', '-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s' ], 172 '-7': ['-7', '-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11' ], 173 '-7s': ['-7s', '-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s' ], 174 '-8': ['-8', '8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11' ], 175 '8': ['8', '9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s' ], 176 '9': ['9', '9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12' ], 177 '9s': ['9s', '-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12' ], 178 '-9': ['-9', '-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s' ], 179 '-9s': ['-9s', '10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ' ], 180 '10': ['10', '-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ' ], 181 '-10': ['-10', '-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ' ], 182 '-10s': ['-10s', '11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ' ], 183 '11': ['11', '11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ' ], 184 '11s': ['11s', '-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ' ], 185 '-11': ['-11', '-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 186 '-11s': ['-11s', '-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 187 '-12': ['-12', '12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 188 '12': ['12', '12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 189 '12s': ['12s', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ], 190 }; 191 192 let transposeElementId = "selTranspose-" + cpressId; 193 if (formControlId) { 194 transposeElementId = formControlId + cpressId; 195 } 196 // console.log(">>> transposeElementId: " + transposeElementId); 197 198 /** 199 * Get value from transpose form element 200 */ 201 var x = document.getElementById(transposeElementId).value; 202 // console.log(">>> direction: " + direction); 203 if (direction) { 204 if (direction === 'up') { 205 if (x < 11) { 206 x++; 207 } else { 208 x = 0; 209 } 210 } else if (direction === 'down') { 211 if (x > 0) { 212 x--; 213 } else { 214 x = 11; 215 } 216 } else if (direction === 'reset') { 217 x = 0; 218 } 219 } 220 221 /** 222 * Hide all hidable chords 223 */ 224 var divsToHide = document.getElementsByClassName("chord-hidable-" + cpressId); 225 // console.log(">>> divsToHide" + divsToHide); 226 for (var i = 0; i < divsToHide.length; i++) { 227 divsToHide[i].style.display = "none"; 228 } 229 230 /** 231 * Now show those for the selected transpose value 232 */ 233 var divsToShow = document.getElementsByClassName("key-" + cpressId + '-chromatic-' + x); 234 if (x === 0) { 235 divsToShow = document.getElementsByClassName("key-" + cpressId + '-chromatic'); 236 } 237 // console.log(">>> divsToShow[0]" + divsToShow[0]); 238 239 for (var j = 0; j < divsToShow.length; j++) { 240 divsToShow[j].style.display = ""; 241 } 242 243 /** 244 * Change value and text of the transpose button 245 */ 246 if (formControlId === 'btnTranspose-') { 247 var btn = document.getElementById(transposeElementId); 248 btn.value = x; 249 if (baseNote !== '') { 250 btn.innerText = x + ' (' + arrTransposeValues[baseNote][x] + ')'; 251 } else { 252 btn.innerText = x; 253 } 254 } 255 } 256 257 /** 258 * ---------------------------------------------------------------------------- 140 259 * Transposes Harmonica. 141 260 * ---------------------------------------------------------------------------- … … 147 266 */ 148 267 function transposeHarmonica(cpressId, formControlId, harmonicaType) { 268 269 /** 270 * Hide/show the transpose button if harmonica type id no chromatic. 271 */ 272 const transposeButton = document.getElementById('btnTranspose-chromatic'); 273 if (harmonicaType === 'chromatic') { 274 transposeButton.style.display = ""; 275 } else { 276 transposeButton.style.display = "none"; 277 } 149 278 150 279 /** … … 160 289 */ 161 290 var divsToShow = document.getElementsByClassName("key-" + cpressId + '-' + harmonicaType); 162 for (var i = 0; i < divsToShow.length; i++) {163 divsToShow[ i].style.display = "";291 for (var j = 0; j < divsToShow.length; j++) { 292 divsToShow[j].style.display = ""; 164 293 } 165 294 } -
chordpress/trunk/readme.txt
r3275645 r3298894 5 5 Requires at least: 4.0 6 6 Tested up to: 6.8 7 Stable tag: 3. 8.27 Stable tag: 3.9.0 8 8 Requires PHP: 5.2.4 9 9 License: GPLv3 … … 130 130 131 131 == Changelog == 132 = 3.9.0 = 133 * 2025-05-22 134 * Added option to transpose chromatic harmonica notes 135 132 136 = 3.8.1 = 133 137 * 2025-02-19
Note: See TracChangeset
for help on using the changeset viewer.