Update ui to use bootstrap ui in more places
This commit is contained in:
@@ -48,7 +48,7 @@ var rc = {
|
||||
dialog: {
|
||||
|
||||
init: function() {
|
||||
$("#dialogheaderclose").click(rc.dialog.close);
|
||||
$("#dialog-header-close").click(rc.dialog.close);
|
||||
},
|
||||
|
||||
prepare: function(d) {
|
||||
@@ -57,61 +57,67 @@ var rc = {
|
||||
if (d.dialog.buttons) {
|
||||
switch (d.dialog.buttons.type) {
|
||||
case 'ok':
|
||||
$("#dialogfooterok").click(
|
||||
$("#dialog-footer-ok-ok").click(
|
||||
function() {
|
||||
rc.trigger(d.dialog.buttons.actions.ok, d.dialog.buttons.params);
|
||||
}
|
||||
);
|
||||
$("#dialogfooterok").show();
|
||||
$("#dialog-footer-ok").show();
|
||||
break;
|
||||
case 'okcancel':
|
||||
$("#dialogfooterokcancel_ok").click(function() {
|
||||
$("#dialog-footer-okcancel-ok").click(function() {
|
||||
rc.trigger(d.dialog.buttons.actions.ok, d.dialog.buttons.params);
|
||||
});
|
||||
$("#dialogfooterokcancel_cancel").click(function() {
|
||||
$("#dialog-footer-okcancel-cancel").click(function() {
|
||||
rc.trigger(d.dialog.buttons.actions.cancel, d.dialog.buttons.params);
|
||||
});
|
||||
$("#dialogfooterokcancel").show();
|
||||
$("#dialog-footer-okcancel").show();
|
||||
break;
|
||||
case 'yesno':
|
||||
$("#dialogfooteryes").click(
|
||||
$("#dialog-footer-yesno-yes").click(
|
||||
function() {
|
||||
rc.trigger(d.dialog.buttons.actions.yes, d.dialog.buttons.params);
|
||||
}
|
||||
);
|
||||
$("#dialogfooterno").click(
|
||||
$("#dialog-footer-yesno-no").click(
|
||||
function() {
|
||||
rc.trigger(d.dialog.buttons.actions.no, d.dialog.buttons.params);
|
||||
}
|
||||
);
|
||||
$("#dialogfooteryesno").show();
|
||||
$("#dialog-footer-yesno").show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (d.dialog.title) {
|
||||
$('#dialogheadertitle').html(d.dialog.title);
|
||||
$('#dialog-header-title').html(d.dialog.title);
|
||||
}
|
||||
|
||||
if (d.dialog.content) {
|
||||
$('#dialogcontent').html(d.dialog.content);
|
||||
$('#dialog-body').html(d.dialog.content);
|
||||
}
|
||||
|
||||
$("#dialog").show();
|
||||
$("#dialog").modal({
|
||||
show: true,
|
||||
backdrop: true,
|
||||
keyboard: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
close: function() {
|
||||
// Hide the dialog
|
||||
$("#dialog").hide();
|
||||
$("#dialog").modal({
|
||||
show: false,
|
||||
});
|
||||
|
||||
// Remove the dialog content
|
||||
$("#dialogcontent").html();
|
||||
$("#dialog-body").html();
|
||||
|
||||
// Hide all buttons
|
||||
$(".dialogfooterbuttonset").hide();
|
||||
$(".dialog-footer-buttonset").hide();
|
||||
// Strip all event handlers
|
||||
$(".dialogfooterbuttonset input[type='button']").unbind('click');
|
||||
$(".dialog-footer-buttonset input[type='button']").unbind('click');
|
||||
},
|
||||
|
||||
error: function(title, content, messages) {
|
||||
@@ -145,7 +151,18 @@ var rc = {
|
||||
page: {
|
||||
|
||||
init: function() {
|
||||
$('.progressBar').each(
|
||||
rc.page.updateEvents($('#page_content'));
|
||||
},
|
||||
|
||||
update: function(d) {
|
||||
for ( var f in d.page_replacements) {
|
||||
$("#" + f).html(d.page_replacements[f].content);
|
||||
rc.page.updateEvents('#' + f);
|
||||
}
|
||||
},
|
||||
|
||||
updateEvents: function(d) {
|
||||
$(d).find('.progressBar').each(
|
||||
function() {
|
||||
$(this).progressBar({
|
||||
steps: 100,
|
||||
@@ -161,12 +178,24 @@ var rc = {
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
update: function(d) {
|
||||
for ( var f in d.page_replacements) {
|
||||
$("#" + f).html(d.page_replacements[f].content);
|
||||
}
|
||||
|
||||
$(d).find('.hover-highlight').hover(
|
||||
function() {
|
||||
$(this).addClass('highlight');
|
||||
},
|
||||
function() {
|
||||
$(this).removeClass('highlight');
|
||||
}
|
||||
);
|
||||
|
||||
$(d).find('a[rel=popover]').popover({
|
||||
offset: 10,
|
||||
html: true,
|
||||
});
|
||||
|
||||
$(d).find('input[type=checkbox].select_all').click(function() {
|
||||
$('input[type=checkbox].'+$(this).attr('id')).attr('checked', $(this).attr('checked') == 'checked');
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -268,7 +297,7 @@ var rc = {
|
||||
rc.dialog.prepare({
|
||||
dialog: {
|
||||
show: true,
|
||||
title: 'Remove setting',
|
||||
title: 'Remove this setting?',
|
||||
content: "Do you really want to remove setting '" + name + "'",
|
||||
buttons: {
|
||||
type: 'okcancel',
|
||||
@@ -322,11 +351,11 @@ var rc = {
|
||||
var line = $('<div>');
|
||||
line.attr('id', 'settings_'+id+'_line'+next.val());
|
||||
|
||||
var hash_key = $('<input type="text" value="New" class="setting hash_key" />');
|
||||
var hash_value = $('<input type="text" id="setting_'+id+'_value'+next_value+'" name="'+id+'[New]" class="setting hash_value" />');
|
||||
var hash_key = $('<input type="text" value="" class="small setting hash_key" />');
|
||||
var hash_value = $('<input type="text" id="setting_'+id+'_value'+next_value+'" name="'+id+'[New]" class="xlarge setting hash_value" />');
|
||||
hash_key.change(function() {
|
||||
$('#setting_'+id+'_value'+next_value).attr('name', id+'['+$(this).val()+']');
|
||||
})
|
||||
});
|
||||
|
||||
line.append(hash_key).append(' ').append(hash_value).append(' ');
|
||||
var button = $('<input type="button" value="-" class="settings_field_remove"/>');
|
||||
|
||||
@@ -32,53 +32,14 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Centred dialog taken from http://stackoverflow.com/questions/1205457/how-to-design-a-css-for-a-centered-floating-confirm-dialog */
|
||||
#centrepoint {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
}
|
||||
#dialog {
|
||||
position: relative;
|
||||
width: 600px;
|
||||
margin-left: -300px;
|
||||
/*height: 20em;*/
|
||||
margin-top: -20em;
|
||||
|
||||
.dialog-footer-buttonset {
|
||||
display: none;
|
||||
background: #eeeeee;
|
||||
border: 2px solid #a7a09a;
|
||||
}
|
||||
#dialogheader {
|
||||
height: 2em;
|
||||
width: 100%;
|
||||
margin: 0.3em;
|
||||
}
|
||||
#dialogheadertitle {
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
}
|
||||
#dialogheaderclose {
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
background-color: crimson;
|
||||
color: white;
|
||||
border: 1px solid fireBrick;
|
||||
float: right;
|
||||
margin-right: 1em;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
display: table-cell;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
#dialogcontent {
|
||||
padding: 0.5em;
|
||||
}
|
||||
.dialogfooterbuttonset {
|
||||
display: none;
|
||||
text-align: right;
|
||||
|
||||
.dialog-footer-buttonset fieldset {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.default {
|
||||
@@ -92,16 +53,13 @@
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
form#setup-rips input[type="text"] {
|
||||
width: 30em;
|
||||
}
|
||||
|
||||
#quantizer-slider {
|
||||
width: 20em;
|
||||
width: 10em;
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
select.rip-streams {
|
||||
width: 20em;
|
||||
.highlight {
|
||||
background: #dceaf4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -353,6 +353,10 @@ class RippingCluster_Job {
|
||||
public function destinationFilename() {
|
||||
return $this->destination_filename;
|
||||
}
|
||||
|
||||
public function destinationFileBasename() {
|
||||
return basename($this->destination_filename);
|
||||
}
|
||||
|
||||
public function title() {
|
||||
return $this->title;
|
||||
|
||||
@@ -32,7 +32,7 @@ try {
|
||||
} break;
|
||||
case 'hash': {
|
||||
$type = Sihnon_Config::TYPE_HASH;
|
||||
$value = array();
|
||||
$value = array('' => '');
|
||||
} break;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,14 @@ if ($req->exists('submit')) {
|
||||
|
||||
// Update the recently used list
|
||||
$recent_output_directories = $config->get('rips.output_directories.recent');
|
||||
if ( ! in_array($_POST['rip-options']['output-directory'], $recent_output_directories)) {
|
||||
if (( $key = array_search($_POST['rip-options']['output-directory'], $recent_output_directories, true))) {
|
||||
// Move the entry to the top of the recently used list if necessary
|
||||
$recent_directory = array_splice($recent_output_directories, $key, 1);
|
||||
if ($key > 0) {
|
||||
array_unshift($recent_output_directories, $recent_directory[0]);
|
||||
$config->set('rips.output_directories.recent', array_slice($recent_output_directories, 0, $config->get('rips.output_directories.recent_limit', 10)));
|
||||
}
|
||||
} else {
|
||||
array_unshift($recent_output_directories, $_POST['rip-options']['output-directory']);
|
||||
$config->set('rips.output_directories.recent', array_slice($recent_output_directories, 0, $config->get('rips.output_directories.recent_limit', 10)));
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
$main = RippingCluster_Main::instance();
|
||||
$req = $main->request();
|
||||
$config = $main->config();
|
||||
|
||||
// Grab the name of this source
|
||||
$encoded_filename = null;
|
||||
if ($req->exists('confirm')) {
|
||||
$plugin = $req->get('plugin', 'RippingCluster_Exception_InvalidParameters');
|
||||
$encoded_filename = $req->get('id', 'RippingCluster_Exception_InvalidParameters');
|
||||
|
||||
$source = RippingCluster_Source_PluginFactory::loadEncoded($plugin, $encoded_filename, false);
|
||||
$source->delete();
|
||||
|
||||
// Redirect back to the sources page
|
||||
RippingCluster_Page::redirect('rips/sources');
|
||||
|
||||
} else {
|
||||
$plugin = $req->get('plugin', 'RippingCluster_Exception_InvalidParameters');
|
||||
$encoded_filename = $req->get('id', 'RippingCluster_Exception_InvalidParameters');
|
||||
|
||||
$source = RippingCluster_Source_PluginFactory::loadEncoded($plugin, $encoded_filename, false);
|
||||
|
||||
$this->smarty->assign('source', $source);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -17,8 +17,8 @@
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="button" id="settings_save" name="save" value="Save" />
|
||||
<input type="button" id="settings_new" name="new_setting" value="New Setting" />
|
||||
<button id="settings_save" class="btn primary" name="save">Save</button>
|
||||
<button id="settings_new" class="btn" name="new_setting">New Setting</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"page_replacements": {
|
||||
|
||||
"dialogheadertitle": {
|
||||
"dialog-header-title": {
|
||||
"content": "Add Setting"
|
||||
},
|
||||
|
||||
"dialogcontent": {
|
||||
"dialog-body": {
|
||||
{include file="fragments/new-setting-dialog.tpl" assign=new_setting_dialog_content}
|
||||
"content": {$new_setting_dialog_content|json_encode}
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
"success": {$success|json_encode}
|
||||
{else}
|
||||
"page_replacements": {
|
||||
"dialogheadertitle": {
|
||||
"dialog-header-title": {
|
||||
"content": "Rename Setting"
|
||||
},
|
||||
|
||||
"dialogcontent": {
|
||||
"dialog-body": {
|
||||
{include file="fragments/rename-setting-dialog.tpl" assign="content"}
|
||||
"content": {$content|json_encode}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
"content": {$sources_html|json_encode}
|
||||
}
|
||||
{else}
|
||||
"dialogheadertitle": {
|
||||
"content": "Delete Source"
|
||||
"dialog-header-title": {
|
||||
"content": "Delete this source?"
|
||||
},
|
||||
|
||||
"dialogcontent": {
|
||||
"dialog-body": {
|
||||
{include file="fragments/delete-source.tpl" assign="delete_source_html"}
|
||||
"content": {$delete_source_html|json_encode}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"page_replacements": {
|
||||
|
||||
"dialogheadertitle": {
|
||||
"content": "Update Settings"
|
||||
"dialog-header-title": {
|
||||
"content": "Settings updated"
|
||||
},
|
||||
|
||||
"dialogcontent": {
|
||||
"dialog-body": {
|
||||
{include file="fragments/update-settings-dialog.tpl" assign=dialog_content}
|
||||
"content": {$dialog_content|json_encode}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<tr id="setting_{$id}_row">
|
||||
<td>
|
||||
<p>
|
||||
{$name}<br />
|
||||
<input type="button" id="setting_{$id}_rename" value="Rename" onclick="rc.settings.rename_setting('{$id}', '{$name}');" />
|
||||
<input type="button" id="setting_{$id}_remove" value="Remove" onclick="rc.settings.remove_setting('{$id}', '{$name}');" />
|
||||
<strong>{$name}</strong>
|
||||
</p>
|
||||
<p>
|
||||
<button id="setting_{$id}_rename" class="btn" onclick="rc.settings.rename_setting('{$id}', '{$name}');">Rename</button>
|
||||
<button id="setting_{$id}_remove" class="btn" onclick="rc.settings.remove_setting('{$id}', '{$name}');">Remove</button>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
@@ -3,38 +3,40 @@
|
||||
<input type="checkbox" id="setting_{$id}" name="{$id}" value="1" {if $value}checked="checked" {/if} class="setting" />
|
||||
{/case}
|
||||
{case Sihnon_Config::TYPE_INT}
|
||||
<input type="text" id="setting_{$id}" name="{$id}" value="{$value}" class="setting settings_field_numeric" />
|
||||
<input type="text" id="setting_{$id}" name="{$id}" value="{$value}" class="small setting settings_field_numeric" />
|
||||
{/case}
|
||||
{case Sihnon_Config::TYPE_STRING}
|
||||
<input type="text" id="setting_{$id}" name="{$id}" value="{$value}" class="setting settings_field_string" />
|
||||
<input type="text" id="setting_{$id}" name="{$id}" value="{$value}" class="xxlarge setting settings_field_string" />
|
||||
{/case}
|
||||
{case Sihnon_Config::TYPE_STRING_LIST}
|
||||
<div id="container_{$id}">
|
||||
{foreach from=$value item=line name=settings}
|
||||
<div id="settings_{$id}_line{$smarty.foreach.settings.iteration}">
|
||||
<input type="text" name="{$id}[]" value="{$line}" class="setting settings_field_string" />
|
||||
<input type="button" value="-" class="settings_field_remove" onclick="rc.settings.remove_stringlist_field('{$id}', '{$smarty.foreach.settings.iteration}')" />
|
||||
<input type="text" name="{$id}[]" value="{$line}" class="xxlarge setting settings_field_string" />
|
||||
<button class="btn small settings_field_remove" onclick="rc.settings.remove_stringlist_field('{$id}', '{$smarty.foreach.settings.iteration}')">-</button>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
<div class="settings_addfieldcontainer">
|
||||
<input type="hidden" id="settings_{$id}_next" value="{$smarty.foreach.settings.iteration+1}" />
|
||||
<input type="button" value="+" class="settings_field_add" onclick="rc.settings.add_stringlist_field('{$id}')" />
|
||||
<button class="btn small settings_field_add" onclick="rc.settings.add_stringlist_field('{$id}')">+</button>
|
||||
</div>
|
||||
{/case}
|
||||
{case Sihnon_Config::TYPE_HASH}
|
||||
<div id="container_{$id}">
|
||||
{foreach from=$value item=hash_value key=hash_key name=settings}
|
||||
<div id="settings_{$id}_line{$smarty.foreach.settings.iteration}">
|
||||
<input type="text" value="{$hash_key}" class="setting hash_key" />
|
||||
<input type="text" name="{$id}[{$hash_key}]" value="{$hash_value}" class="setting hash_value" />
|
||||
<input type="button" value="-" class="settings_field_remove" onclick="rc.settings.remove_hash_field('{$id}', '{$smarty.foreach.settings.iteration}')" />
|
||||
</div>
|
||||
{/foreach}
|
||||
{if $value}
|
||||
{foreach from=$value item=hash_value key=hash_key name=settings}
|
||||
<div id="settings_{$id}_line{$smarty.foreach.settings.iteration}">
|
||||
<input type="text" value="{$hash_key}" class="small setting hash_key" />
|
||||
<input type="text" name="{$id}[{$hash_key}]" value="{$hash_value}" class="xlarge setting hash_value" />
|
||||
<button class="btn small settings_field_remove" onclick="rc.settings.remove_hash_field('{$id}', '{$smarty.foreach.settings.iteration}')">-</button>
|
||||
</div>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="settings_addfieldcontainer">
|
||||
<input type="hidden" id="settings_{$id}_next" value="{$smarty.foreach.settings.iteration+1}" />
|
||||
<input type="button" value="+" class="settings_field_add" onclick="rc.settings.add_hash_field('{$id}')" />
|
||||
<button class="btn small settings_field_add" onclick="rc.settings.add_hash_field('{$id}')">+</button>
|
||||
</div>
|
||||
|
||||
{/case}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<dl>
|
||||
<dt>Destination Filename</dt>
|
||||
<dd>{$job->destinationFilename()|escape:html}</dd>
|
||||
|
||||
{if $job->isFinished()}
|
||||
<dt>File size</dt>
|
||||
<dd>({$job->outputFilesize()|formatFilesize|escape:html})</dd>
|
||||
{/if}
|
||||
</dl>
|
||||
15
source/webui/templates/fragments/job-status-popover.tpl
Normal file
15
source/webui/templates/fragments/job-status-popover.tpl
Normal file
@@ -0,0 +1,15 @@
|
||||
<dl>
|
||||
{if $current_status->hasProgressInfo()}
|
||||
<dt>Started</dt>
|
||||
<dd>{$current_status->ctime()|date_format:"%D %T"}</dd>
|
||||
|
||||
<dt>Progress</dt>
|
||||
<dd>{$current_status->ripProgress()}%</dd>
|
||||
|
||||
<dt>ETA</dt>
|
||||
<dd>{$job->calculateETA()|formatDuration}</dd>
|
||||
{/if}
|
||||
|
||||
<dt>Last update</dt>
|
||||
<dd>{$current_status->mtime()|date_format:"%D %T"}</dd>
|
||||
</dl>
|
||||
@@ -1,22 +1,11 @@
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="text" id="settings_add_name" value="" />
|
||||
</td>
|
||||
<td>
|
||||
<select id="settings_add_type">
|
||||
<option value="int">Integer</option>
|
||||
<option value="bool">Boolean</option>
|
||||
<option value="string">String</option>
|
||||
<option value="string-list">String List</option>
|
||||
<option value="hash">Hash</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<label for="settings_add_name">Name</label>
|
||||
<input type="text" id="settings_add_name" value="" />
|
||||
|
||||
<label for="settings_add_type">Type</label>
|
||||
<select id="settings_add_type">
|
||||
<option value="int">Integer</option>
|
||||
<option value="bool">Boolean</option>
|
||||
<option value="string">String</option>
|
||||
<option value="string-list">String List</option>
|
||||
<option value="hash">Hash</option>
|
||||
</select>
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
<p>
|
||||
Enter a new name for setting '{$name|escape}' below.
|
||||
</p>
|
||||
<input type="text" id="settings_rename_name" value="" />
|
||||
<input type="text" id="settings_rename_name" value="{$name|escape:html}" />
|
||||
</div>
|
||||
@@ -7,7 +7,7 @@
|
||||
{assign var='source_filename' value=$source->filename()}
|
||||
{assign var='source_filename_encoded' value=$source->filenameEncoded()}
|
||||
{assign var='source_cached' value=$source->isCached()}
|
||||
<li>
|
||||
<li class="hover-highlight">
|
||||
[ <a href="{$base_uri}sources/details/plugin/{$source_plugin}/id/{$source_filename_encoded}" title="Browse source details">Browse</a> |
|
||||
<a href="{$base_uri}rips/setup/plugin/{$source_plugin}/id/{$source_filename_encoded}" title="Rip this source">Rip</a> |
|
||||
<a href="javascript:rc.sources.remove('{$source_plugin|escape:'quote'}', '{$source_filename_encoded|escape:'quote'}');" title="Delete this source">Delete</a> ]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<p>
|
||||
Settings have been saved.
|
||||
Your changes have been saved.
|
||||
</p>
|
||||
|
||||
{if $messages}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<title>{$title}</title>
|
||||
|
||||
<!-- JQuery //-->
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
|
||||
<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/smoothness/jquery-ui.css" rel="Stylesheet" />
|
||||
<!-- JQuery Plugins //-->
|
||||
@@ -99,31 +99,29 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div id="centrepoint">
|
||||
<div id="dialog">
|
||||
<div id="dialogheader">
|
||||
<div id="dialogheadertitle">Dialog</div>
|
||||
<div id="dialogheaderclose">X</div>
|
||||
<div id="dialog" class="modal hide fade">
|
||||
<div class="modal-header">
|
||||
<a href="#" class="close">×</a>
|
||||
<h3 id="dialog-header-title"></h3>
|
||||
</div>
|
||||
<div id="dialog-body" class="modal-body"></div>
|
||||
<div id="dialog-footer" class="modal-footer">
|
||||
<div id="dialog-footer-ok" class="dialog-footer-buttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="btn primary" id="dialog-footer-ok-ok" value="Ok" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div id="dialogcontent"></div>
|
||||
<div id="dialogfooter">
|
||||
<div id="dialogfooterok" class="dialogfooterbuttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="dialogbutton" id="dialogfooterok" value="Ok" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div id="dialogfooterokcancel" class="dialogfooterbuttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="dialogbutton" id="dialogfooterokcancel_ok" value="Ok" />
|
||||
<input type="button" class="dialogbutton" id="dialogfooterokcancel_cancel" value="Cancel" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div id="dialogfooteryesno" class="dialogfooterbuttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="dialogbutton" id="dialogfooteryes" value="Yes" />
|
||||
<input type="button" class="dialogbutton" id="dialogfooterno" value="No" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div id="dialog-footer-okcancel" class="dialog-footer-buttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="btn primary" id="dialog-footer-okcancel-ok" value="Ok" />
|
||||
<input type="button" class="btn secondary" id="dialog-footer-okcancel-cancel" value="Cancel" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div id="dialog-footer-yesno" class="dialog-footer-buttonset">
|
||||
<fieldset>
|
||||
<input type="button" class="btn primary" id="dialog-footer-yesno-yes" value="Yes" />
|
||||
<input type="button" class="btn secondary" id="dialog-footer-yesno-no" value="No" />
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -31,44 +31,41 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<input id="jobs_select_all" class="select_all" type="checkbox" />
|
||||
Actions
|
||||
</th>
|
||||
<th>Name</th>
|
||||
<th>Destination</th>
|
||||
<th>Title</th>
|
||||
<th>Status</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$jobs item=job}
|
||||
{assign var=current_status value=$job->currentStatus()}
|
||||
<tr>
|
||||
<td><a href="{$base_uri}jobs/details/id/{$job->id()}" title="View job details">{$job->name()}</a></td>
|
||||
<td>
|
||||
{$job->destinationFilename()}
|
||||
{if $job->isFinished()}
|
||||
({$job->outputFilesize()|formatFilesize})
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$job->title()}</td>
|
||||
<td>
|
||||
{$current_status->statusName()}
|
||||
{if $current_status->hasProgressInfo()}
|
||||
<br />
|
||||
Started: <em>{$current_status->ctime()|date_format:"%D %T"}</em><br />
|
||||
Progress: {$current_status->ripProgress()}%<br />
|
||||
Last update: <em>{$current_status->mtime()|date_format:"%D %T"}</em><br />
|
||||
ETA: <em>{$job->calculateETA()|formatDuration}</em>
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<fieldset>
|
||||
<input type="checkbox" name="include[]" value="{$job->id()}" />
|
||||
<input type="checkbox" class="jobs_select_all" name="include[]" value="{$job->id()}" />
|
||||
<input type="image" class="icon" name="action" id="mark-failed-{$job->id()}" value="mark-failed[{$job->id()}]" src="{$base_uri}images/caution.png" alt="Mark job as failed" />
|
||||
<input type="image" class="icon" name="action" id="redo-{$job->id()}" value="retry[{$job->id()}]" src="{$base_uri}images/redo.png" alt="Repeat job" />
|
||||
<input type="image" class="icon" name="action" id="delete-{$job->id()}" value="delete[{$job->id()}]" src="{$base_uri}images/trash.png" alt="Delete job" />
|
||||
<input type="image" class="icon" name="action" id="fix-broken-timestamps-{$job->id()}" value="fix-broken-timestamps[{$job->id()}]" src="{$base_uri}images/clock.png" alt="Fix broken status timestamps" />
|
||||
</fieldset>
|
||||
</td>
|
||||
<td><a href="{$base_uri}jobs/details/id/{$job->id()}" title="View job details">{$job->name()}</a></td>
|
||||
<td>
|
||||
{include file="fragments/job-filename-popover.tpl" assign=popover_content}
|
||||
<a href="#" rel="popover" data-placement="below" data-title="Destination details" data-content="{$popover_content|escape:html}">{$job->destinationFileBasename()|escape:html}</a>
|
||||
</td>
|
||||
<td>
|
||||
{include file="fragments/job-status-popover.tpl" assign=popover_content}
|
||||
<a href="#" rel="popover" title="{$current_status->statusName()|escape:html}" data-placement="below" data-content="{$popover_content|escape:html}">{$current_status->statusName()}</a>
|
||||
{if $current_status->hasProgressInfo()}
|
||||
<br />
|
||||
<small>{$job->calculateETA()|formatDuration:1} remaining</small>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
|
||||
<input type="hidden" name="id" value="{$source->filenameEncoded()|escape:"html"}" />
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="global-output-directory">Output directory</label>
|
||||
<select id="global-output-directory" name="rip-options[output-directory]">
|
||||
<select id="global-output-directory" name="rip-options[output-directory]" class="xxlarge">
|
||||
<optgroup label="Custom"></optgroup>
|
||||
<optgroup label="Defaults">
|
||||
{foreach from=$default_output_directories item=dir key=name}
|
||||
@@ -45,41 +45,45 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="global-format">Output format</label>
|
||||
<select id="global-format" name="rip-options[format]">
|
||||
<select id="global-format" name="rip-options[format]" class="small">
|
||||
<option value="mkv" selected="selected">MKV</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="global-video-codec">Video codec</label>
|
||||
<select id="global-video-codec" name="rip-options[video-codec]">
|
||||
<select id="global-video-codec" name="rip-options[video-codec]" class="small">
|
||||
<option value="x264" selected="selected">x264</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="global-video-width">Video width</label>
|
||||
<input type="text" id="global-video-width" name="rip-options[video-width]" value="0" />
|
||||
<em>(Use 0 to leave size unchanged from source.)</em>
|
||||
</div>
|
||||
<div>
|
||||
<label for="global-video-height">Video height</label>
|
||||
<input type="text" id="global-video-height" name="rip-options[video-height]" value="0" />
|
||||
<em>(Use 0 to leave size unchanged from source.)</em>
|
||||
<div class="input">
|
||||
<input type="text" id="global-video-width" name="rip-options[video-width]" value="0" />
|
||||
<span class="help-inline">(Use 0 to leave size unchanged from source.)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="global-video-height">Video height</label>
|
||||
<div class="input">
|
||||
<input type="text" id="global-video-height" class="small" name="rip-options[video-height]" value="0" />
|
||||
<span class="help-inline">(Use 0 to leave size unchanged from source.)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<label for="global-quantizer">Quantizer</label>
|
||||
<input type="text" id="global-quantizer" name="rip-options[quantizer]" value="" readonly="readonly" />
|
||||
<em>(Defaults to 0.61, x264's quantizer value for 20)</em>
|
||||
<div id="quantizer-slider"></div>
|
||||
<div class="input">
|
||||
<div id="quantizer-slider"></div>
|
||||
<input type="text" id="global-quantizer" class="small" name="rip-options[quantizer]" value="" readonly="readonly" />
|
||||
<span class="help-inline">(Defaults to 0.61, x264's quantizer value for 20)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<input type="submit" name="submit" value="Queue rips" />
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div id="available-titles">
|
||||
@@ -89,17 +93,17 @@
|
||||
<fieldset>
|
||||
<legend>Configure title rip options</legend>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rip-title-{$title->id()}">Rip this title</label>
|
||||
<input type="checkbox" id="rip-title-{$title->id()}" name="rips[{$title->id()}][queue]" value="1" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rip-name-{$title->id()}">Short Name</label>
|
||||
<input type="text" id="rip-name-{$title->id()}" name="rips[{$title->id()}][name]" value="" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rip-audio-{$title->id()}">Audio tracks</label>
|
||||
<select id="rip-audio-{$title->id()}" name="rips[{$title->id()}][audio][]" title="Select audio tracks" size="5" multiple="multiple" class="rip-streams">
|
||||
{foreach from=$title->audioTracks() item=audio}
|
||||
@@ -107,22 +111,7 @@
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
<table class="audio-tracks">
|
||||
<caption>Selected audio tracks</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Track</th>
|
||||
<th>Encoder</th>
|
||||
<th>Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rip-subtitle-{$title->id()}">Subtitle tracks</label>
|
||||
<select id="rip-subtitle-{$title->id()}" name="rips[{$title->id()}][subtitles][]" title="Select subtitle tracks" size="5" multiple="multiple" class="rip-streams">
|
||||
{foreach from=$title->subtitleTracks() item=subtitle}
|
||||
@@ -130,27 +119,12 @@
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
<table class="subtitle-tracks">
|
||||
<caption>Selected subtitle tracks</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Track</th>
|
||||
<th>Language</th>
|
||||
<th>Format</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rips-output-{$title->id()}">Output filename</label>
|
||||
<input type="text" id="rips-output-{$title->id()}" name="rips[{$title->id()}][output_filename]" value="" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="clearfix">
|
||||
<label for="rip-deinterlace-{$title->id()}">Deinterlacing</label>
|
||||
<select id="rip-deinterlace-{$title->id()}" name="rips[{$title->id()}][deinterlace]">
|
||||
<option value="0">None</option>
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<h2>Delete Source</h2>
|
||||
|
||||
<p>
|
||||
Are you sure you want to delete {$source->plugin()|escape:"html"}:{$source->filename()|escape:"html"}?
|
||||
[ <a href="{$base_uri}sources/delete/plugin/{$source->plugin()}/id/{$source->filenameEncoded()}/confirm" title="Delete it">Delete</a>
|
||||
| <a href="{$base_uri}rips/sources" title="Return to sources list">Cancel</a> ]
|
||||
</p>
|
||||
Reference in New Issue
Block a user