Files
Malin f55c91276e 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>
2026-05-11 09:49:52 +02:00

305 lines
9.2 KiB
Smarty

{*
Template for the edit interface
$Id: edit.tpl,v 2.19 2007/12/29 10:23:18 andig2 Exp $
*}
{if $http_error}
<pre>{$http_error}</pre>
{/if}
<script language="JavaScript" type="text/javascript" src="javascript/edit.js"></script>
<form action="edit.php" id="edi" name="edi" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" id="id" value="{if !empty($video.id)}{$video.id}{/if}" />
<input type="hidden" name="engine" id="engine" value="{if !empty($engine)}{$engine}{/if}" />
<input type="hidden" name="save" id="save" value="1" />
<table class="tableborder">
<tr>
<td>
<table>
<tr>
<td>
{$lang.title}
</td>
<td>
<input type="text" name="title" id="title" value="{if !empty($video.q_title)}{$video.q_title}{/if}" size="43" maxlength="255" />
<a href="javascript:void(lookupData(document.edi.title.value))"><img src="images/search.gif" alt="" border="0" align="middle" /></a>
</td>
</tr>
<tr>
<td>
{$lang.subtitle}
</td>
<td>
<input type="text" name="subtitle" id="subtitle" value="{if !empty($video.q_subtitle)}{$video.q_subtitle}{/if}" size="43" maxlength="255" />
<a href="javascript:void(lookupData(document.edi.subtitle.value))"><img src="images/search.gif" alt="" border="0" align="middle" /></a>
</td>
</tr>
<tr>
<td>
{$lang.language}
</td>
<td>
{$video.f_language}
</td>
</tr>
<tr>
<td>
{$lang.diskid}
</td>
<td>
<input type="text" name="diskid" id="diskid" value="{if !empty($video.q_diskid)}{$video.q_diskid}{/if}" size="15" maxlength="255" />
<input type="hidden" name="autoid" id="autoid" value="{$autoid}" />
<input type="hidden" name="oldmediatype" id="oldmediatype" value="{$video.mediatype}" />
{$lang.mediatype} {html_options name="mediatype" options=$mediatypes selected=$video.mediatype}
</td>
</tr>
<tr>
<td>
<label for="istv">{$lang.tvepisode}</label>
</td>
<td>
{if !empty($video.istv)}
{$istv_val = $video.istv}
{else}
{$istv_val = null}
{/if}
{html_checkbox name="istv" value=1 checked=$istv_val}
</td>
</tr>
<tr>
<td>
<label for="seen">{$lang.seen}</label>
</td>
<td>
{if !empty($video.seen)}
{$seen_val = $video.seen}
{else}
{$seen_val = null}
{/if}
{html_checkbox name="seen" value=1 checked=$seen_val}
</td>
</tr>
<tr>
<td>
{$lang.filename}
</td>
<td>
<input type="text" name="filename" id="filename" value="{if !empty($video.q_filename)}{$video.q_filename}{/if}" size="45" maxlength="255" />
</td>
</tr>
<tr>
<td>
{$lang.filesize}
</td>
<td>
<input type="text" name="filesize" id="filesize" value="{if !empty($video.q_filesize)}{$video.q_filesize}{/if}" size="10" maxlength="15" /> bytes
</td>
</tr>
<tr>
<td>
{$lang.filedate}
</td>
<td>
<input type="text" name="filedate" id="filedate" value="{if !empty($video.q_filedate)}{$video.q_filedate}{/if}" maxlength="20" />
</td>
</tr>
<tr>
<td>
{$lang.audiocodec}
</td>
<td>
<input type="text" name="audio_codec" id="audio_codec" value="{if !empty($video.q_audio_codec)}{$video.q_audio_codec}{/if}" />
</td>
</tr>
<tr>
<td>
{$lang.videocodec}
</td>
<td>
<input type="text" name="video_codec" id="video_codec" value="{if !empty($video.q_video_codec)}{$video.q_video_codec}{/if}" />
</td>
</tr>
<tr>
<td>
{$lang.dimension}
</td>
<td>
<input type="text" name="video_width" id="video_width" value="{if !empty($video.q_video_width)}{$video.q_video_width}{/if}" size="5" maxlength="4" /> x
<input type="text" name="video_height" id="video_height" value="{if !empty($video.q_video_height)}{$video.q_video_height}{/if}" size="5" maxlength="4" />
</td>
</tr>
<tr>
<td>{$lang.rating}:</td>
<td>
{if !empty($video.rating)}
{rating_input value = $video.rating}
{else}
{rating_input value = null}
{/if}
</td>
</tr>
<tr>
<td colspan="2">
{$lang.genre}
<br />
{$genreselect}
</td>
</tr>
{if !empty($video.custom1name)}
<tr>
<td>{$video.custom1name}</td>
<td>{$video.custom1in}</td>
</tr>
{/if}
{if !empty($video.custom2name)}
<tr>
<td>{$video.custom2name}</td>
<td>{$video.custom2in}</td>
</tr>
{/if}
{if !empty($video.custom3name)}
<tr>
<td>{$video.custom3name}</td>
<td>{$video.custom3in}</td>
</tr>
{/if}
{if !empty($video.custom4name)}
<tr>
<td>{$video.custom4name}</td>
<td>{$video.custom4in}</td>
</tr>
{/if}
</table>
</td>
<td>
<table>
<tr>
<td>
IMDb-ID
</td>
<td>
<input type="text" name="imdbID" id="imdbID" value="{if !empty($video.q_imdbID)}{$video.q_imdbID}{/if}" size="15" maxlength="30" onchange="{literal}if(document.edi.imdbID.value != '') {document.edi.lookup1.checked=true} else {document.edi.lookup0.checked=true}{/literal}" />
{if !empty($video.q_imdbID) && $video.q_imdbID != ''}
<a href="http://uk.imdb.com/Title?{$video.q_imdbID}" target="_blank">{$lang.visit}</a>
{/if}
</td>
</tr>
<tr>
<td>
{$lang.coverurl}
</td>
<td>
<input type="text" name="imgurl" id="imgurl" value="{if !empty($video.q_imgurl)}{$video.q_imgurl}{/if}" size="45" maxlength="255" />
<a href="javascript:void(lookupImage(document.edi.title.value))"><img src="images/search.gif" alt="" border="0" align="middle" /></a>
</td>
</tr>
<tr>
<td>
{$lang.coverupload}
</td>
<td>
<input type="file" name="coverupload" id="coverupload" size="30" />
</td>
</tr>
<tr>
<td>
{$lang.country}
</td>
<td>
<input type="text" name="country" id="country" value="{if !empty($video.q_country)}{$video.q_country}{/if}" size="45" maxlength="255" />
</td>
</tr>
<tr>
<td>
{$lang.director}
</td>
<td>
<input type="text" name="director" id="director" value="{if !empty($video.q_director)}{$video.qq_director}{/if}" size="45" maxlength="255" />
</td>
</tr>
<tr>
<td>
{$lang.runtime}
</td>
<td>
<input type="text" name="runtime" id="runtime" value="{if !empty($video.q_runtime)}{$video.q_runtime}{/if}" size="5" maxlength="5" />min
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$lang.year}
<input type="text" name="year" id="year" value="{if !empty($video.q_year)}{$video.q_year}{/if}" size="5" maxlength="4" />
</td>
</tr>
<tr>
<td>
{$lang.plot}
</td>
<td>
<textarea cols="36" rows="6" name="plot" id="plot" wrap="virtual" class="textbox">{if !empty($video.q_plot)}{$video.q_plot}{/if}</textarea>
</td>
</tr>
<tr>
<td>
{$lang.cast}
</td>
<td>
<textarea cols="36" rows="6" name="actors" id="actors" wrap="off" class="textbox">{if !empty($video.q_actors)}{$video.q_actors}{/if}</textarea>
</td>
</tr>
<tr>
<td>
{$lang.comment}
</td>
<td>
<textarea cols="36" rows="6" name="comment" id="comment" wrap="virtual" class="textbox">{if !empty($video.q_comment)}{$video.q_comment}{/if}</textarea>
</td>
</tr>
{if !empty($owners)}
<tr>
<td>
{$lang.owner}
</td>
<td>
{html_options name=owner_id options=$owners selected=$video.owner_id}
</td>
</tr>
{/if}
</table>
</td>
</tr>
</table>
<b>{$lang.radio_look_caption}:</b> {html_radios name=lookup options=$lookup checked="$lookup_id"}
{if !empty($add_flag)}{html_checkbox name="add_flag" value=1 checked=$add_flag label=$lang.add_another}{/if}
<div align="center"><input type="submit" value="{$lang.save}" accesskey="s" /></div>
<br />
</form>