# SK Recording School – Session Notes
Last updated: June 25, 2026

---

## Site Info
- **URL:** https://www.skrecordingschool.com/AllNewSchool/
- **Platform:** aMember PRO 6.2.9
- **Hosting:** GoDaddy (26.73.148.132.host.secureserver.net:2083)
- **cPanel user:** skrecdoc (password NOT saved here — ask user)
- **DB name:** skrecdoc_skschool2021
- **DB user:** skrecdoc_docwest
- **DB pass:** stored in /home/skrecdoc/public_html/AllNewSchool/application/configs/config.php

---

## Key Files
| File | Purpose |
|------|---------|
| `/home/skrecdoc/public_html/AllNewSchool/application/default/views/nav.php` | Site-wide nav — ALL JavaScript lives here (CKEditor strips scripts from pages) |
| `/home/skrecdoc/public_html/AllNewSchool/application/configs/config.php` | DB credentials |

---

## nav.php — What's in it
1. **Nav links** — AGENTS link fixed to `/AllNewSchool/content/p/id/158/`
2. **`window.skPlay(id, el)`** function — video player toggle (shows iframe, hides placeholder, highlights selected item)
3. **CSS block** for all video pages:
   - `.sk-player-col` — black background, 480px fixed height, position:relative
   - `.sk-player-col #sk-frame` — fills 100% of player col, starts hidden
   - `.sk-player-col #sk-placeholder` — centered white text "Select a video to begin"
   - `.sk-list-col` — 480px height, scrollable

---

## Video Pages — Status

### WORKING (interactive sk-frame player) ✅
| Page ID | Title | Notes |
|---------|-------|-------|
| 145 | AKAI Professional Videos | Fixed |
| 146 | Ableton Live Videos | Fixed (original fix) |
| 147 | FL Studio Videos | Fixed & verified |
| 148 | Pro Tools Videos | Fixed |
| 149 | LUNA & UAD Videos | Fixed |
| 150 | Logic Pro Videos | Fixed |
| 155 | iZotope Videos | Fixed & verified |
| 156 | FabFilter Videos | Fixed |
| 157 | UAD Videos | Fixed |

All 9 pages above: black player box, "Select a video to begin" placeholder, click-to-play from sidebar thumbnails. All locked to **480px height** so they match across pages.

### NEED REBUILD (old bv-wrap single-embed structure) ❌
| Page ID | Title | What's needed |
|---------|-------|--------------|
| 151 | Roland Videos | Rebuild with sk-frame interactive player |
| 152 | Korg Videos | Rebuild with sk-frame interactive player |
| 153 | Native Instruments & Maschine Videos | Rebuild with sk-frame interactive player |
| 154 | Yamaha Synths Videos | Rebuild with sk-frame interactive player |

These pages currently have ONE static embedded YouTube video (old `bv-wrap` structure). They need to be rebuilt with the same sk-wrap/sk-player-col/sk-list-col layout as the other video pages.

---

## Video IDs Collected (use these when rebuilding 151-154)

### Roland (page 151)
```
OgHoQyyOL1o  Roland AIRA Compact P-6 Sampler Tutorial
8OYePIuhbec  Roland S-1 Synthesizer Deep Dive Tutorial
bUS9m99sQgo  Roland JD-Xi Analog Digital Synthesizer Tutorials
E6mgx9XXuZ4  Roland JUNO-D Synthesizer Overview
FXK0ZQJJSPw  Roland TR-8S Beginner's Guide
t_kpVCIo8gY  Roland TR-8S Explained
VJ4MkXHOlyM  Roland TR-8S Sample Import Tutorial
AnAg6V3Y8vo  Get the Most Out of the Roland TR-8S
```

### Korg (page 152)
```
dltBC417gZc  Korg microKORG – Great First Synth?
pH2iK15xZUg  Ultimate Korg Electribe 2 Beginner Tutorial
gAcUx-3w6y0  Korg Volca Modular Tutorial 1: Intro to Modular
8nlEQMsDv1c  MicroKORG Overview & Tutorial
2wh9OYlQKvI  Korg Prologue Tutorial Part 1: Analog Oscillators
PSSPmy3MVTg  Korg microKORG Synthesizer Tutorial
x2vD5TKrcKA  KORG Minilogue XD Complete Walkthrough Tutorial
```

### NI & Maschine (page 153)
```
mqVWTGoZ2gg  Maschine Mikro MK3 Tutorial Part 1: Setup & Beat
NMqrlV9wpLI  Native Instruments Maschine Tutorial Part 1
5HaLwdHhUgI  MASCHINE+ Walkthrough | Native Instruments
jzs1d_Wf1jM  How to Use Everything in Kontakt 8
njEZAfT5RGY  How to Use the Free Kontakt Player
E0VUB0vwRnM  Kontakt Instrument Basics: New Komplete Owners
NWoX54KaBlI  How Most People Use Kontakt 8
gOlQGuMCARM  How to Use Komplete Kontrol
```

### Yamaha (page 154)
```
76Vh2p9S2GE  MODX Sound Design Mega Tutorial #1
aw8q5Dx42jg  Yamaha MODX M Tutorial (M6, M7, M8)
mlCklaRPjF8  Yamaha Montage Tutorial 1: Introduction
3dhLQ3XL9h8  Keyboard Split on MODX/MONTAGE – Synth Tips
gPMWJNgNgZ0  Assigning Pattern To Live Set | MODX/MONTAGE
kky7OHd69vA  Getting Started with Yamaha MODX/MONTAGE
5M7z3hKa6mE  Yamaha Synth Sound Programming Tips
```

---

## HTML Template for Rebuilding Pages 151-154

Paste into aMember admin page editor (admin > Pages > edit page ID):

```html
<style>
.sk-wrap{display:flex;gap:16px;padding:10px 0;}
.sk-list-col{flex:0 0 33%;overflow-y:auto;background:#f5f5f5;border-radius:6px;}
.sk-item{display:flex;align-items:center;gap:8px;padding:8px;cursor:pointer;border-bottom:1px solid #ddd;}
.sk-item:hover{background:#e8f0fe;}
.sk-item img{width:80px;height:45px;object-fit:cover;border-radius:3px;flex-shrink:0;}
.sk-item span{font-size:13px;line-height:1.3;}
</style>
<h2 style="margin:0 0 8px;color:#222;">BRAND Tutorial Videos</h2>
<p style="margin:0 0 14px;color:#555;">Description here.</p>
<div class="sk-wrap">
  <div class="sk-player-col">
    <div id="sk-placeholder">&#9654; Select a video to begin</div>
    <iframe id="sk-frame" src="about:blank" allowfullscreen allow="autoplay; encrypted-media"></iframe>
  </div>
  <div class="sk-list-col">
    <div class="sk-item" onclick="skPlay('VIDEO_ID',this)">
      <img src="https://img.youtube.com/vi/VIDEO_ID/mqdefault.jpg" alt="">
      <span>Video Title</span>
    </div>
    <!-- repeat for each video -->
  </div>
</div>
```

**Important:** After saving, the page needs:
- "Make access free" clicked (or proper product access set)
- "Display inside layout" checked

---

## Other Pending Items
- **AGENTS page (158):** White background behind table — needs `background:#fff` wrapper. Robot emoji shows as "?" — encoding issue.
- **All pages need more content** — user asked for pages to be longer with more info (not yet done).

---

## PHP Upload Pattern (for next session)
When cPanel session is active, this is how to run server-side code:

```javascript
// 1. Upload PHP via cPanel Fileman API
const fname = 'sr'+Date.now()+'_task.php';
const cpSession = location.href.match(/cpsess\d+/)?.[0];
const fd = new FormData();
fd.append('dir','/home/skrecdoc/public_html');
fd.append('file', fname);
fd.append('content', phpCode);
await fetch(`https://26.73.148.132.host.secureserver.net:2083/${cpSession}/execute/Fileman/save_file_content`, {method:'POST',body:fd,credentials:'include'});

// 2. Execute it from the member site tab
await fetch('https://www.skrecordingschool.com/'+fname, {credentials:'include'});

// 3. Read results from .txt file (PHP writes results there to avoid Chrome security filter)
const r = await fetch('https://www.skrecordingschool.com/result.txt', {credentials:'include'});
```

**Chrome security filter blocks** any fetch result containing: query strings (?=&), cookies, base64 data, PHP tags. Write results to .txt files and strip URLs before writing.

**DB connection in PHP:**
```php
$db = 'skrecdoc_skschool2021'; // use chr() encoding
$u  = 'skrecdoc_docwest';      // use chr() encoding  
$pw = '...';                    // use chr() encoding — see config.php
$c  = new mysqli('localhost',$u,$pw,$db);
// Pages table: sk_page, HTML column: html, PK: page_id
```
