feat: add videodb media index with Docker stack
- Add videodb PHP/MySQL media collection manager (Blu-ray, DVD, CD) - Dockerfile: PHP 8.1 + Apache with GD/mysqli/exif extensions - docker-compose.yml: app on port 6761 + MySQL 8.0 with health checks - docker-entrypoint.sh: auto-generates config.inc.php from env vars, waits for MySQL, initializes DB schema idempotently - init-db.php: CLI schema installer using app's own prefix_query() logic - Persistent volumes for DB, cache, and cover images Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
216
videodb/lib/foundation4/fonts/general_foundicons.css
Normal file
216
videodb/lib/foundation4/fonts/general_foundicons.css
Normal file
@@ -0,0 +1,216 @@
|
||||
/* font-face */
|
||||
@font-face {
|
||||
font-family: "GeneralFoundicons";
|
||||
src: url("../fonts/general_foundicons.eot");
|
||||
src: url("../fonts/general_foundicons.eot?#iefix") format("embedded-opentype"), url("../fonts/general_foundicons.woff") format("woff"), url("../fonts/general_foundicons.ttf") format("truetype"), url("../fonts/general_foundicons.svg#GeneralFoundicons") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* global foundicon styles */
|
||||
[class*="foundicon-"] {
|
||||
display: inline;
|
||||
width: auto;
|
||||
height: auto;
|
||||
line-height: inherit;
|
||||
vertical-align: baseline;
|
||||
background-image: none;
|
||||
background-position: 0 0;
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
[class*="foundicon-"]:before {
|
||||
font-family: "GeneralFoundicons";
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
|
||||
/* icons */
|
||||
.foundicon-settings:before {
|
||||
content: "\f000";
|
||||
}
|
||||
|
||||
.foundicon-heart:before {
|
||||
content: "\f001";
|
||||
}
|
||||
|
||||
.foundicon-star:before {
|
||||
content: "\f002";
|
||||
}
|
||||
|
||||
.foundicon-plus:before {
|
||||
content: "\f003";
|
||||
}
|
||||
|
||||
.foundicon-minus:before {
|
||||
content: "\f004";
|
||||
}
|
||||
|
||||
.foundicon-checkmark:before {
|
||||
content: "\f005";
|
||||
}
|
||||
|
||||
.foundicon-remove:before {
|
||||
content: "\f006";
|
||||
}
|
||||
|
||||
.foundicon-mail:before {
|
||||
content: "\f007";
|
||||
}
|
||||
|
||||
.foundicon-calendar:before {
|
||||
content: "\f008";
|
||||
}
|
||||
|
||||
.foundicon-page:before {
|
||||
content: "\f009";
|
||||
}
|
||||
|
||||
.foundicon-tools:before {
|
||||
content: "\f00a";
|
||||
}
|
||||
|
||||
.foundicon-globe:before {
|
||||
content: "\f00b";
|
||||
}
|
||||
|
||||
.foundicon-home:before {
|
||||
content: "\f00c";
|
||||
}
|
||||
|
||||
.foundicon-quote:before {
|
||||
content: "\f00d";
|
||||
}
|
||||
|
||||
.foundicon-people:before {
|
||||
content: "\f00e";
|
||||
}
|
||||
|
||||
.foundicon-monitor:before {
|
||||
content: "\f00f";
|
||||
}
|
||||
|
||||
.foundicon-laptop:before {
|
||||
content: "\f010";
|
||||
}
|
||||
|
||||
.foundicon-phone:before {
|
||||
content: "\f011";
|
||||
}
|
||||
|
||||
.foundicon-cloud:before {
|
||||
content: "\f012";
|
||||
}
|
||||
|
||||
.foundicon-error:before {
|
||||
content: "\f013";
|
||||
}
|
||||
|
||||
.foundicon-right-arrow:before {
|
||||
content: "\f014";
|
||||
}
|
||||
|
||||
.foundicon-left-arrow:before {
|
||||
content: "\f015";
|
||||
}
|
||||
|
||||
.foundicon-up-arrow:before {
|
||||
content: "\f016";
|
||||
}
|
||||
|
||||
.foundicon-down-arrow:before {
|
||||
content: "\f017";
|
||||
}
|
||||
|
||||
.foundicon-trash:before {
|
||||
content: "\f018";
|
||||
}
|
||||
|
||||
.foundicon-add-doc:before {
|
||||
content: "\f019";
|
||||
}
|
||||
|
||||
.foundicon-edit:before {
|
||||
content: "\f01a";
|
||||
}
|
||||
|
||||
.foundicon-lock:before {
|
||||
content: "\f01b";
|
||||
}
|
||||
|
||||
.foundicon-unlock:before {
|
||||
content: "\f01c";
|
||||
}
|
||||
|
||||
.foundicon-refresh:before {
|
||||
content: "\f01d";
|
||||
}
|
||||
|
||||
.foundicon-paper-clip:before {
|
||||
content: "\f01e";
|
||||
}
|
||||
|
||||
.foundicon-video:before {
|
||||
content: "\f01f";
|
||||
}
|
||||
|
||||
.foundicon-photo:before {
|
||||
content: "\f020";
|
||||
}
|
||||
|
||||
.foundicon-graph:before {
|
||||
content: "\f021";
|
||||
}
|
||||
|
||||
.foundicon-idea:before {
|
||||
content: "\f022";
|
||||
}
|
||||
|
||||
.foundicon-mic:before {
|
||||
content: "\f023";
|
||||
}
|
||||
|
||||
.foundicon-cart:before {
|
||||
content: "\f024";
|
||||
}
|
||||
|
||||
.foundicon-address-book:before {
|
||||
content: "\f025";
|
||||
}
|
||||
|
||||
.foundicon-compass:before {
|
||||
content: "\f026";
|
||||
}
|
||||
|
||||
.foundicon-flag:before {
|
||||
content: "\f027";
|
||||
}
|
||||
|
||||
.foundicon-location:before {
|
||||
content: "\f028";
|
||||
}
|
||||
|
||||
.foundicon-clock:before {
|
||||
content: "\f029";
|
||||
}
|
||||
|
||||
.foundicon-folder:before {
|
||||
content: "\f02a";
|
||||
}
|
||||
|
||||
.foundicon-inbox:before {
|
||||
content: "\f02b";
|
||||
}
|
||||
|
||||
.foundicon-website:before {
|
||||
content: "\f02c";
|
||||
}
|
||||
|
||||
.foundicon-smiley:before {
|
||||
content: "\f02d";
|
||||
}
|
||||
|
||||
.foundicon-search:before {
|
||||
content: "\f02e";
|
||||
}
|
||||
BIN
videodb/lib/foundation4/fonts/general_foundicons.eot
Normal file
BIN
videodb/lib/foundation4/fonts/general_foundicons.eot
Normal file
Binary file not shown.
15
videodb/lib/foundation4/fonts/general_foundicons.svg
Normal file
15
videodb/lib/foundation4/fonts/general_foundicons.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
|
||||
<defs >
|
||||
<font id="generalfoundicons" horiz-adv-x="955" ><font-face
|
||||
font-family="General Foundicons"
|
||||
units-per-em="1000"
|
||||
panose-1="0 0 0 0 0 0 0 0 0 0"
|
||||
ascent="1000"
|
||||
descent="0"
|
||||
alphabetic="0" />
|
||||
<missing-glyph horiz-adv-x="250" />
|
||||
<glyph unicode=" " glyph-name="space" horiz-adv-x="250" />
|
||||
<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1000" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 616 B |
BIN
videodb/lib/foundation4/fonts/general_foundicons.ttf
Normal file
BIN
videodb/lib/foundation4/fonts/general_foundicons.ttf
Normal file
Binary file not shown.
BIN
videodb/lib/foundation4/fonts/general_foundicons.woff
Normal file
BIN
videodb/lib/foundation4/fonts/general_foundicons.woff
Normal file
Binary file not shown.
194
videodb/lib/foundation4/fonts/general_foundicons_ie7.css
Normal file
194
videodb/lib/foundation4/fonts/general_foundicons_ie7.css
Normal file
@@ -0,0 +1,194 @@
|
||||
/* general icons for IE7 */
|
||||
[class*="foundicon-"] {
|
||||
font-family: "GeneralFoundicons";
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.foundicon-settings {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-heart {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-star {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-plus {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-minus {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-checkmark {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-remove {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-mail {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-calendar {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-page {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-tools {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-globe {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-home {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-quote {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-people {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-monitor {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-laptop {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-phone {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-cloud {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-error {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-right-arrow {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-left-arrow {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-up-arrow {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-down-arrow {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-trash {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-add-doc {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-edit {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-lock {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-unlock {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-refresh {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-paper-clip {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-video {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-photo {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-graph {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-idea {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-mic {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-cart {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-address-book {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-compass {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-flag {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-location {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-clock {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-folder {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-inbox {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-website {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-smiley {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
|
||||
.foundicon-search {
|
||||
*zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
|
||||
}
|
||||
Reference in New Issue
Block a user