Merge branch 'master' into smartblock-overflow

This commit is contained in:
frecuencialibre 2018-12-11 14:17:18 -06:00 committed by GitHub
commit c7b55f60e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
72 changed files with 3804 additions and 3949 deletions

6
Vagrantfile vendored
View File

@ -60,12 +60,6 @@ Vagrant.configure("2") do |config|
os.vm.box = "bento/debian-9.2"
provision_libretime(os, "debian.sh", installer_args)
end
config.vm.define "debian-wheezy" do |os|
STDERR.puts 'WARNING: The "debian-wheezy" option is deprecated. Please migrate to "debian-stretch".'
STDERR.puts
os.vm.box = "bento/debian-7.11"
provision_libretime(os, "debian.sh", installer_args)
end
config.vm.define "centos" do |os|
os.vm.box = 'centos/7'
provision_libretime(os, "centos.sh", installer_args + "--selinux")

View File

@ -15,7 +15,7 @@ class Application_Form_AddShowAutoPlaylist extends Zend_Form_SubForm
// Add autoplaylist checkbox element
$this->addElement('checkbox', 'add_show_has_autoplaylist', array(
'label' => _('Auto Schedule Playlist ?'),
'label' => _('Add Autoloading Playlist ?'),
'required' => false,
'class' => 'input_text',
'decorators' => array('ViewHelper')
@ -29,7 +29,7 @@ class Application_Form_AddShowAutoPlaylist extends Zend_Form_SubForm
$this->addElement($autoPlaylistSelect);
// Add autoplaylist checkbox element
$this->addElement('checkbox', 'add_show_autoplaylist_repeat', array(
'label' => _('Repeat AutoPlaylist Until Show is Full ?'),
'label' => _('Repeat Playlist Until Show is Full ?'),
'required' => false,
'class' => 'input_text',
'decorators' => array('ViewHelper')

View File

@ -485,15 +485,6 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
$limitValue->setValue(1);
}
//getting block content candidate count that meets criteria
$bl = new Application_Model_Block($p_blockId);
if ($p_isValid) {
$files = $bl->getListofFilesMeetCriteria();
$showPoolCount = true;
} else {
$files = null;
$showPoolCount = false;
}
$generate = new Zend_Form_Element_Button('generate_button');
$generate->setAttrib('class', 'sp-button btn');

View File

@ -1475,7 +1475,7 @@ SQL;
foreach ($out as $crit) {
$criteria = $crit->getDbCriteria();
$modifier = $crit->getDbModifier();
$value = htmlspecialchars($crit->getDbValue());
$value = $crit->getDbValue();
$extra = $crit->getDbExtra();
if ($criteria == "limit") {

View File

@ -1,251 +0,0 @@
<?php
/**
* Skeleton subclass for representing a row from the 'imported_podcast' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package propel.generator.airtime
*/
class ImportedPodcast extends BaseImportedPodcast
{
// These fields should never be modified with POST/PUT data
private static $privateFields = array(
"id",
"url",
"type",
"owner"
);
/** Creates a Podcast object from the given podcast URL.
* This is used by our Podcast REST API
*
* @param $data An array containing the URL for a Podcast object.
*
* @return array - Podcast Array with a full list of episodes
* @throws Exception
* @throws InvalidPodcastException
* @throws PodcastLimitReachedException
*/
public static function create($data)
{
if (Application_Service_PodcastService::podcastLimitReached()) {
throw new PodcastLimitReachedException();
}
$rss = Application_Service_PodcastService::getPodcastFeed($data["url"]);
if (!$rss) {
throw new InvalidPodcastException();
}
// Ensure we are only creating Podcast with the given URL, and excluding
// any extra data fields that may have been POSTED
$podcastArray = array();
$podcastArray["url"] = $data["url"];
$podcastArray["title"] = $rss->get_title();
$podcastArray["description"] = $rss->get_description();
$podcastArray["link"] = $rss->get_link();
$podcastArray["language"] = $rss->get_language();
$podcastArray["copyright"] = $rss->get_copyright();
$podcastArray["creator"] = $rss->get_author()->get_name();
$podcastArray["category"] = $rss->get_categories();
$itunesChannel = "http://www.itunes.com/dtds/podcast-1.0.dtd";
$itunesSubtitle = $rss->get_channel_tags($itunesChannel, 'subtitle');
$podcastArray["itunes_subtitle"] = isset($itunesSubtitle[0]["data"]) ? $itunesSubtitle[0]["data"] : "";
$itunesCategory = $rss->get_channel_tags($itunesChannel, 'category');
$categoryArray = array();
foreach ($itunesCategory as $c => $data) {
foreach ($data["attribs"] as $attrib) {
array_push($categoryArray, $attrib["text"]);
}
}
$podcastArray["itunes_category"] = implode(",", $categoryArray);
$itunesAuthor = $rss->get_channel_tags($itunesChannel, 'author');
$podcastArray["itunes_author"] = isset($itunesAuthor[0]["data"]) ? $itunesAuthor[0]["data"] : "";
$itunesSummary = $rss->get_channel_tags($itunesChannel, 'summary');
$podcastArray["itunes_summary"] = isset($itunesSummary[0]["data"]) ? $itunesSummary[0]["data"] : "";
$itunesKeywords = $rss->get_channel_tags($itunesChannel, 'keywords');
$podcastArray["itunes_keywords"] = isset($itunesKeywords[0]["data"]) ? $itunesKeywords[0]["data"] : "";
$itunesExplicit = $rss->get_channel_tags($itunesChannel, 'explicit');
$podcastArray["itunes_explicit"] = isset($itunesExplicit[0]["data"]) ? $itunesExplicit[0]["data"] : "";
self::validatePodcastMetadata($podcastArray);
try {
$podcast = new ImportedPodcast();
$podcast->fromArray($podcastArray, BasePeer::TYPE_FIELDNAME);
$podcast->setDbOwner(self::getOwnerId());
$podcast->setDbType(IMPORTED_PODCAST);
$podcast->save();
return self::_generatePodcastArray($podcast, $rss);
} catch(Exception $e) {
$podcast->delete();
throw $e;
}
}
/**
* Fetches a Podcast's rss feed and returns all its episodes with
* the Podcast object
*
* @param $podcastId
*
* @throws PodcastNotFoundException
* @throws InvalidPodcastException
* @return array - Podcast Array with a full list of episodes
*/
public static function getPodcastById($podcastId)
{
$podcast = PodcastQuery::create()->findPk($podcastId);
if (!$podcast) {
throw new PodcastNotFoundException();
}
$rss = Application_Service_PodcastService::getPodcastFeed($podcast->getDbUrl());
if (!$rss) {
throw new InvalidPodcastException();
}
return self::_generatePodcastArray($podcast, $rss);
}
/**
* Given a podcast object and a SimplePie feed object,
* generate a data array to pass back to the front-end
*
* @param Podcast $podcast Podcast model object
* @param SimplePie $rss SimplePie feed object
*
* @return array
*/
private static function _generatePodcastArray($podcast, $rss) {
$podcastArray = $podcast->toArray(BasePeer::TYPE_FIELDNAME);
$podcastArray["episodes"] = array();
foreach ($rss->get_items() as $item) {
/** @var SimplePie_Item $item */
array_push($podcastArray["episodes"], array(
"guid" => $item->get_id(),
"title" => $item->get_title(),
"author" => $item->get_author()->get_name(),
"description" => $item->get_description(),
"pub_date" => $item->get_date("Y-m-d H:i:s"),
"link" => $item->get_link(),
"enclosure" => $item->get_enclosure()
));
}
return $podcastArray;
}
/**
* Updates a Podcast object with the given metadata
*
* @param $podcastId
* @param $data
* @return array
* @throws Exception
* @throws PodcastNotFoundException
*/
public static function updateFromArray($podcastId, $data)
{
$podcast = PodcastQuery::create()->findPk($podcastId);
if (!$podcast) {
throw new PodcastNotFoundException();
}
self::removePrivateFields($data);
self::validatePodcastMetadata($data);
$podcast->fromArray($data, BasePeer::TYPE_FIELDNAME);
$podcast->save();
return $podcast->toArray(BasePeer::TYPE_FIELDNAME);
}
/**
* Deletes a Podcast and its podcast episodes
*
* @param $podcastId
* @throws Exception
* @throws PodcastNotFoundException
*/
public static function deleteById($podcastId)
{
$podcast = PodcastQuery::create()->findPk($podcastId);
if ($podcast) {
$podcast->delete();
} else {
throw new PodcastNotFoundException();
}
}
/**
* Trims the podcast metadata to fit the table's column max size
*
* @param $podcastArray
*/
private static function validatePodcastMetadata(&$podcastArray)
{
$podcastTable = PodcastPeer::getTableMap();
foreach ($podcastArray as $key => &$value) {
try {
// Make sure column exists in table
$columnMaxSize = $podcastTable->getColumn($key)->getSize();
} catch (PropelException $e) {
continue;
}
if (strlen($value) > $columnMaxSize) {
$value = substr($value, 0, $podcastTable->getColumn($key)->getSize());
}
}
}
private static function removePrivateFields(&$data)
{
foreach (self::$privateFields as $key) {
unset($data[$key]);
}
}
//TODO move this somewhere where it makes sense
private static function getOwnerId()
{
try {
if (Zend_Auth::getInstance()->hasIdentity()) {
$service_user = new Application_Service_UserService();
return $service_user->getCurrentUser()->getDbId();
} else {
$defaultOwner = CcSubjsQuery::create()
->filterByDbType('A')
->orderByDbId()
->findOne();
if (!$defaultOwner) {
// what to do if there is no admin user?
// should we handle this case?
return null;
}
return $defaultOwner->getDbId();
}
} catch(Exception $e) {
Logging::info($e->getMessage());
}
}
}

View File

@ -7,9 +7,11 @@
</dt>
<dd>
<?php echo $this->element->getElement('add_show_has_autoplaylist') ?>
<span class="show_autoplaylist_help_icon" aria-describedby="ui-tooltip-2"></span>
</dd>
<div id="add_show_playlist_dropdown">
<p><?php echo _("Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"); ?></p>
<dt id="add_show_autoplaylist_id">
<label for="add_show_autoplaylist_id" class="required">
<?php echo $this->element->getElement('add_show_autoplaylist_id')->getLabel()?>

View File

@ -2,6 +2,23 @@
$items = $this->contents;
$isSmartBlock = ($this->obj instanceof Application_Model_Block);
$isPlaylist = ($this->obj instanceof Application_Model_Playlist);
if ($this->showPoolCount) { ?>
<div class='sp_text_font sp_text_font_bold'>
<span id='sp_pool_count' class='sp_text_font sp_text_font_bold'>
<?php
echo $this->poolCount;
echo ngettext(" track matches your search criteria.", " tracks match your search criteria.", $this->poolCount);
?>
</span>
<?php if ($this->poolCount > 0) { ?>
<span class='checked-icon sp-checked-icon' id='sp_pool_count_icon'></span>
<?php }
else { ?>
<span class='sp-warning-icon' id='sp_pool_count_icon'></span>
<?php } ?>
</div>
<?php
}
if (count($items) && ($isSmartBlock || $isPlaylist)) : ?>
<?php $i = 0; ?>
<?php if ($isSmartBlock && !($this->obj->isStatic())) {
@ -148,4 +165,4 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
}
?>
</div>
<?php endif; ?>
<?php endif; ?>

View File

@ -25,7 +25,7 @@
<?php echo $this->repeats; ?>
</div>
<h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("Automatic Playlist") ?></h3>
<h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("Autoloading Playlist") ?></h3>
<div id="schedule-show-auto" class="collapsible-content">
<?php echo $this->autoplaylist; ?>
</div>
@ -33,12 +33,6 @@
<div id="live-stream-override" class="collapsible-content">
<?php echo $this->live; ?>
</div>
<h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("Record & Rebroadcast")?></h3>
<div id="schedule-record-rebroadcast" class="collapsible-content">
<?php echo $this->rr; ?>
<?php echo $this->absoluteRebroadcast; ?>
<?php echo $this->rebroadcast; ?>
</div>
<h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("Who") ?></h3>
<div id="schedule-show-who" class="collapsible-content">
<?php echo $this->who; ?>

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Musíte počkat alespoň 1 hodinu před dalším vysíláním"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "Co"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2551,13 +2551,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Das Wiederholen einer Sendung ist erst nach einer Stunde Wartezeit möglich."
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4953,7 +4961,7 @@ msgid "What"
msgstr "Was"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2553,13 +2553,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Das Wiederholen einer Sendung ist erst nach einer Stunde Wartezeit möglich."
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4955,7 +4963,7 @@ msgid "What"
msgstr "Was"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr "Automatische Playlist"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Πρέπει να περιμένετε τουλάχιστον 1 ώρα για την αναμετάδοση"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "Τι"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Must wait at least 1 hour to rebroadcast"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "What"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2539,13 +2539,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Must wait at least 1 hour to rebroadcast"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4944,7 +4952,7 @@ msgid "What"
msgstr "What"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Must wait at least 1 hour to rebroadcast"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "What"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2548,13 +2548,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Debes esperar al menos 1 hora para reprogramar"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgstr "¿Auto Programar Lista?"
msgid "Add Autoloading Playlist ?"
msgstr "¿Programar Lista Auto-Cargada?"
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr "Se le agrega los contenidos de las listas auto-cargadas a programas una hora antes de que suenen. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>Mas información</a>"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr "Seleccionar Lista"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr "Repitir lista hasta que termine el programa?"
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4966,8 +4974,8 @@ msgid "What"
msgstr "Qué"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgstr "Lista de reproducción automática"
msgid "Autoloading Playlist"
msgstr "Lista Auto-Cargada"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18
msgid "When"

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Vous devez attendre au moins 1 heure pour retransmettre"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "Quoi"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2537,13 +2537,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Moraš čekati najmanje 1 sat za re-emitiranje"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4939,7 +4947,7 @@ msgid "What"
msgstr "Što"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2700,13 +2700,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Az újraközvetítésre legalább 1 órát kell várni"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr "Lejátszási lista automatikus ütemezése?"
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr "Lejátszási lista kiválasztása"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -5267,7 +5275,7 @@ msgid "What"
msgstr "Mi"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr "Automatikus lejátszási lista"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2531,13 +2531,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4931,7 +4939,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2539,13 +2539,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Aspettare almeno un'ora prima di ritrasmettere"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4941,7 +4949,7 @@ msgid "What"
msgstr "Cosa"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2537,13 +2537,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "再配信するには、1時間以上待たなければなりません"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4939,7 +4947,7 @@ msgid "What"
msgstr "番組内容"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2532,13 +2532,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4932,7 +4940,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2535,13 +2535,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "재방송 설정까지 1시간 기간이 필요합니다"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4937,7 +4945,7 @@ msgid "What"
msgstr "무엇"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2535,13 +2535,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4935,7 +4943,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2541,13 +2541,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Ten minste 1 uur opnieuw uitzenden moet wachten"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4943,7 +4951,7 @@ msgid "What"
msgstr "Wat"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2538,13 +2538,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Należy odczekać przynajmniej 1 godzinę przed ponownym odtworzeniem"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4940,7 +4948,7 @@ msgid "What"
msgstr "Co"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2539,13 +2539,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "É preciso aguardar uma hora para retransmitir"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4941,7 +4949,7 @@ msgid "What"
msgstr "O que"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2554,13 +2554,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "1 час нужно подождать до ретрансляции"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr "Выбрать плейлист"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4982,7 +4990,7 @@ msgid "What"
msgstr "Что"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr "Автоматический Плейлист"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2537,13 +2537,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Мораш да чекаш најмање 1 сат за ре-емитовање"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4939,7 +4947,7 @@ msgid "What"
msgstr "Шта"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2537,13 +2537,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Moraš da čekaš najmanje 1 sat za re-emitovanje"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4939,7 +4947,7 @@ msgid "What"
msgstr "Šta"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2534,13 +2534,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4934,7 +4942,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2535,13 +2535,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "Tekrar yayın yapmak için en az bir saat bekleyiniz"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4935,7 +4943,7 @@ msgid "What"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -2537,13 +2537,21 @@ msgid "Must wait at least 1 hour to rebroadcast"
msgstr "至少间隔一个小时"
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:18
msgid "Auto Schedule Playlist ?"
msgid "Add Autoloading Playlist ?"
msgstr ""
#: airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml:14
msgid "Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:25
msgid "Select Playlist"
msgstr ""
#: airtime_mvc/application/forms/AddShowAutoPlaylist.php:32
msgid "Repeat Playlist Until Show is Full ?"
msgstr ""
#: airtime_mvc/application/forms/AddShowLiveStream.php:11
#, php-format
msgid "Use %s Authentication:"
@ -4939,7 +4947,7 @@ msgid "What"
msgstr "名称"
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14
msgid "Automatic Playlist"
msgid "Autoloading Playlist"
msgstr ""
#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:18

View File

@ -7,6 +7,11 @@
font-size: 12px;
/*width: 25%;*/
width: 310px;
max-height: calc(100vh - 144px);
overflow-y: scroll;
}
.usability_hint:not(.hidden) + .wrapper #schedule-add-show{
max-height: calc(100vh - 172px);
}
#schedule-add-show textarea {
@ -85,6 +90,9 @@ label.wrapp-label input[type="checkbox"] {
#schedule-add-show fieldset dd input[type="checkbox"] {
margin-top: 6px;
}
#schedule-show-auto input[type="checkbox"] {
margin-left: 6px;
}
#add_show_day_check-element.block-display {
margin-bottom: 15px;

View File

@ -314,7 +314,8 @@ a.fc-event {
.fc-event-time,
.fc-event-title {
padding: 0 1px;
}
height: 12px;
}
.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/
display: block;

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g data-name="Layer 2"><g data-name="clock"><rect width="24" height="24" transform="rotate(180 12 12)" opacity="0"/><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm4 11h-4a1 1 0 0 1-1-1V8a1 1 0 0 1 2 0v3h3a1 1 0 0 1 0 2z" fill="#fff"/></g></g></svg>

After

Width:  |  Height:  |  Size: 313 B

View File

@ -204,14 +204,18 @@ img.logo
.airtime_auth_help_icon, .custom_auth_help_icon, .stream_username_help_icon,
.playlist_type_help_icon, .repeat_tracks_help_icon, .show_linking_help_icon,
.admin_username_help_icon, .stream_type_help_icon, .overflow_tracks_help_icon,
.show_timezone_help_icon{
.show_timezone_help_icon, .show_autoplaylist_help_icon {
cursor: help;
position: relative;
display:inline-block; zoom:1;
width:14px; height:14px;
background:url(images/icon_info.png) 0 0 no-repeat;
top:2px; right:7px; left: 3px;
left: 3px;
line-height:16px !important;
vertical-align: text-top;
}
.qtip a {
color: white;
}
/* Clearfix */
@ -2040,7 +2044,7 @@ span.errors.sp-errors{
margin: 0 0 8px 0;
}
#schedule-add-show .button-bar.bottom {
margin: 16px 0 0;
margin: 16px 0 8px;
}
.schedule {
text-align:left;
@ -2268,14 +2272,15 @@ span.errors.sp-errors{
height:10px;
float:right;
margin-left:3px;
margin-top:2px;
}
.small-icon.linked {
background:url(images/icon_link.png) no-repeat 0 0;
margin-top: 0px !important;
}
.small-icon.autoplaylist {
background:url(images/icon_alert_cal_autoplaylist.png) no-repeat 0 0;
background: url(images/icon-clock.svg) black no-repeat center center;
border-radius: 2px;
background-size: contain;
}
.small-icon.recording {
@ -2888,7 +2893,6 @@ dt.block-display.info-block {
text-align:center;
letter-spacing:-.3px;
text-shadow: rgba(248,248,248,.3) 0 1px 0, rgba(0,0,0,.8) 0 -1px 0;
rgba(51,51,51,.9)
}
.error-content p {
color: #acacac;

View File

@ -310,17 +310,6 @@ function setAddShowEvents(form) {
$(this).blur();
form.find("#add_show_playlist_dropdown").toggle();
form.find("#add_show_autoplaylist_repeat").toggle();
var checkBoxSelected = false;
//must switch rebroadcast displays
if(form.find("#add_show_has_autoplaylist").attr('checked')) {
form.find("#add_show_playlist_dropdown").show();
form.find("#add_show_autoplaylist_repeat").show();
}
else {
form.find("#add_show_playlist_downdown").hide();
}
});
form.find("#add_show_repeats").click(function(){
@ -491,6 +480,27 @@ function setAddShowEvents(form) {
at: "right center"
}
});
form.find(".show_autoplaylist_help_icon").qtip({
content: {
text: $.i18n._("Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/manual/calendar/#autoloading-playlist'>More information</a>")
},
hide: {
delay: 500,
fixed: true
},
style: {
border: {
width: 0,
radius: 4
},
classes: "ui-tooltip-dark ui-tooltip-rounded"
},
position: {
my: "left bottom",
at: "right center"
}
});
form.find(".airtime_auth_help_icon").qtip({
content: {

View File

@ -5,10 +5,10 @@
*/
function scheduleRefetchEvents(json) {
if(json.show_error == true){
if (json.show_error == true) {
alert($.i18n._("The show instance doesn't exist anymore!"));
}
if(json.show_id) {
if (json.show_id) {
var dialog_id = parseInt($("#add_show_id").val(), 10);
//if you've deleted the show you are currently editing, close the add show dialog.
@ -16,10 +16,10 @@ function scheduleRefetchEvents(json) {
$("#add-show-close").click();
}
}
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
$("#schedule_calendar").fullCalendar('refetchEvents');
}
function makeTimeStamp(date){
function makeTimeStamp(date) {
var sy, sm, sd, h, m, s, timestamp;
sy = date.getFullYear();
sm = date.getMonth() + 1;
@ -28,19 +28,19 @@ function makeTimeStamp(date){
m = date.getMinutes();
s = date.getSeconds();
timestamp = sy+"-"+ pad(sm, 2) +"-"+ pad(sd, 2) +" "+ pad(h, 2) +":"+ pad(m, 2) +":"+ pad(s, 2);
timestamp = sy + "-" + pad(sm, 2) + "-" + pad(sd, 2) + " " + pad(h, 2) + ":" + pad(m, 2) + ":" + pad(s, 2);
return timestamp;
}
function dayClick(date, allDay, jsEvent, view){
function dayClick(date, allDay, jsEvent, view) {
// The show from will be preloaded if the user is admin or program manager.
// Hence, if the user if DJ then it won't open anything.
if(userType == "S" || userType == "A" || userType == "P"){
if (userType == "S" || userType == "A" || userType == "P") {
var now, today, selected, chosenDate, chosenTime;
now = adjustDateToServerDate(new Date(), serverTimezoneOffset);
if(view.name === "month") {
if (view.name === "month") {
today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
selected = new Date(date.getFullYear(), date.getMonth(), date.getDate());
}
@ -49,12 +49,12 @@ function dayClick(date, allDay, jsEvent, view){
selected = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
}
if(selected >= today) {
if (selected >= today) {
var addShow = $('.add-button');
//remove the +show button if it exists.
if(addShow.length == 1){
var span = $(addShow).parent();
if (addShow.length == 1) {
var span = $(addShow).parent();
$(span).next().remove();
$(span).remove();
@ -65,10 +65,10 @@ function dayClick(date, allDay, jsEvent, view){
var duration_info = duration_string.split(" ");
var duration_h = 0;
var duration_m = 0;
if(duration_info[0] != null){
if (duration_info[0] != null) {
duration_h = parseInt(duration_info[0], 10);
}
if(duration_info[1] != null){
if (duration_info[1] != null) {
duration_m = parseInt(duration_info[1], 10);
}
// duration in milisec
@ -77,28 +77,28 @@ function dayClick(date, allDay, jsEvent, view){
var startTime_string;
var startTime = 0;
// get start time value on the form
if(view.name === "month") {
if (view.name === "month") {
startTime_string = $("#add_show_start_time").val();
var startTime_info = startTime_string.split(':');
if (startTime_info.length == 2) {
var start_time_temp = (parseInt(startTime_info[0],10) * 60 * 60 * 1000)
var start_time_temp = (parseInt(startTime_info[0], 10) * 60 * 60 * 1000)
+ (parseInt(startTime_info[1], 10) * 60 * 1000);
if (!isNaN(start_time_temp)) {
startTime = start_time_temp;
}
}
}else{
} else {
// if in day or week view, selected has all the time info as well
// so we don't ahve to calculate it explicitly
startTime_string = pad(selected.getHours(),2)+":"+pad(selected.getMinutes(),2)
startTime_string = pad(selected.getHours(), 2) + ":" + pad(selected.getMinutes(), 2)
startTime = 0
}
// calculate endDateTime
var endDateTime = new Date(selected.getTime() + startTime + duration);
chosenDate = selected.getFullYear() + '-' + pad(selected.getMonth()+1,2) + '-' + pad(selected.getDate(),2);
var endDateFormat = endDateTime.getFullYear() + '-' + pad(endDateTime.getMonth()+1,2) + '-' + pad(endDateTime.getDate(),2);
chosenDate = selected.getFullYear() + '-' + pad(selected.getMonth() + 1, 2) + '-' + pad(selected.getDate(), 2);
var endDateFormat = endDateTime.getFullYear() + '-' + pad(endDateTime.getMonth() + 1, 2) + '-' + pad(endDateTime.getDate(), 2);
//TODO: This should all be refactored into a proper initialize() function for the show form.
@ -108,8 +108,8 @@ function dayClick(date, allDay, jsEvent, view){
$("#add_show_start_date").val(chosenDate);
$("#add_show_end_date_no_repeat").val(endDateFormat);
$("#add_show_end_date").val(endDateFormat);
if(view.name !== "month") {
var endTimeString = pad(endDateTime.getHours(),2)+":"+pad(endDateTime.getMinutes(),2);
if (view.name !== "month") {
var endTimeString = pad(endDateTime.getHours(), 2) + ":" + pad(endDateTime.getMinutes(), 2);
$("#add_show_start_time").val(startTime_string)
$("#add_show_end_time").val(endTimeString)
}
@ -123,21 +123,21 @@ function dayClick(date, allDay, jsEvent, view){
}
}
function viewDisplay( view ) {
function viewDisplay(view) {
view_name = view.name;
if(view.name === 'agendaDay' || view.name === 'agendaWeek') {
if (view.name === 'agendaDay' || view.name === 'agendaWeek') {
var calendarEl = this;
var select = $('<select class="schedule_change_slots input_select"/>')
.append('<option value="1">'+$.i18n._("1m")+'</option>')
.append('<option value="5">'+$.i18n._("5m")+'</option>')
.append('<option value="10">'+$.i18n._("10m")+'</option>')
.append('<option value="15">'+$.i18n._("15m")+'</option>')
.append('<option value="30">'+$.i18n._("30m")+'</option>')
.append('<option value="60">'+$.i18n._("60m")+'</option>')
.change(function(){
.append('<option value="1">' + $.i18n._("1m") + '</option>')
.append('<option value="5">' + $.i18n._("5m") + '</option>')
.append('<option value="10">' + $.i18n._("10m") + '</option>')
.append('<option value="15">' + $.i18n._("15m") + '</option>')
.append('<option value="30">' + $.i18n._("30m") + '</option>')
.append('<option value="60">' + $.i18n._("60m") + '</option>')
.change(function () {
var slotMin = $(this).val();
var opt = view.calendar.options;
var date = $(calendarEl).fullCalendar('getDate');
@ -150,11 +150,11 @@ function viewDisplay( view ) {
$(calendarEl)
.fullCalendar('destroy')
.fullCalendar(opt)
.fullCalendar( 'gotoDate', date );
.fullCalendar('gotoDate', date);
//save slotMin value to db
var url = baseUrl+'Schedule/set-time-interval/format/json';
$.post(url, {timeInterval: slotMin});
var url = baseUrl + 'Schedule/set-time-interval/format/json';
$.post(url, { timeInterval: slotMin });
});
var topLeft = $(view.element).find("table.fc-agenda-days > thead th:first");
@ -166,33 +166,33 @@ function viewDisplay( view ) {
.append(select);
var slotMin = view.calendar.options.slotMinutes;
$('.schedule_change_slots option[value="'+slotMin+'"]').attr('selected', 'selected');
$('.schedule_change_slots option[value="' + slotMin + '"]').attr('selected', 'selected');
}
if(($("#add-show-form").length == 1) && ($("#add-show-form").css('display')=='none') && ($('.fc-header-left > span').length == 5)) {
if (($("#add-show-form").length == 1) && ($("#add-show-form").css('display') == 'none') && ($('.fc-header-left > span').length == 5)) {
//userType is defined in bootstrap.php, and is derived from the currently logged in user.
if(userType == "S" || userType == "A" || userType == "P"){
if (userType == "S" || userType == "A" || userType == "P") {
makeAddShowButton();
}
}
//save view name to db if it was changed
if (calendarPref.timeScale !== view.name) {
var url = baseUrl+'Schedule/set-time-scale/format/json';
$.post(url, {timeScale: view.name});
var url = baseUrl + 'Schedule/set-time-scale/format/json';
$.post(url, { timeScale: view.name });
calendarPref.timeScale = view.name;
}
}
function eventRender(event, element, view) {
$(element).addClass("fc-show-instance-"+event.id);
$(element).addClass("fc-show-instance-" + event.id);
$(element).attr("data-show-id", event.showId);
$(element).attr("data-show-linked", event.linked);
$(element).data("event", event);
//only put progress bar on shows that aren't being recorded.
if((view.name === 'agendaDay' || view.name === 'agendaWeek') && event.record === 0) {
if ((view.name === 'agendaDay' || view.name === 'agendaWeek') && event.record === 0) {
var div = $('<div/>');
div
.height('5px')
@ -212,15 +212,15 @@ function eventRender(event, element, view) {
if (event.show_empty === 1) {
if (event.linked) {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon linked"></span><span class="small-icon show-empty"></span>');
// in theory a linked show shouldn't have an automatic playlist so adding this here
.find(".fc-event-time")
.before('<span class="small-icon linked"></span><span class="small-icon show-empty"></span>');
// in theory a linked show shouldn't have an automatic playlist so adding this here
} else if (event.show_has_auto_playlist === true) {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon autoplaylist"></span><span class="small-icon show-empty"></span>');
.before('<span class="small-icon autoplaylist"></span>');
}
else {
else {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon show-empty"></span>');
@ -231,10 +231,10 @@ function eventRender(event, element, view) {
.find(".fc-event-time")
.before('<span class="small-icon linked"></span><span class="small-icon show-partial-filled"></span>');
} else if (event.show_has_auto_playlist === true) {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon autoplaylist"></span><span class="small-icon show-partial-filled"></span>');
} else {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon autoplaylist"></span>');
} else {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon show-partial-filled"></span>');
@ -245,25 +245,25 @@ function eventRender(event, element, view) {
.find(".fc-event-time")
.before('<span class="small-icon linked"></span>');
} else if (event.show_has_auto_playlist === true) {
$(element)
.find(".fc-event-time")
.before('<span class="small-icon autoplaylist"></span>');
$(element)
.find(".fc-event-time")
.before('<span class="small-icon autoplaylist"></span>');
}
}
} else if (view.name === 'month') {
if (event.show_empty === 1) {
if (event.linked) {
$(element)
$(element)
.find(".fc-event-title")
.after('<span class="small-icon linked"></span><span title="'+$.i18n._("Show is empty")+'" class="small-icon show-empty"></span>');
.after('<span class="small-icon linked"></span><span title="' + $.i18n._("Show is empty") + '" class="small-icon show-empty"></span>');
} else if (event.show_has_auto_playlist === true) {
$(element)
$(element)
.find(".fc-event-title")
.after('<span title="'+$.i18n._("Show has an automatic playlist")+'"class="small-icon autoplaylist"></span><span title="'+$.i18n._("Show is empty")+'" class="small-icon show-empty"></span>');
.after('<span title="' + $.i18n._("Show has an automatic playlist") + '"class="small-icon autoplaylist"></span>');
} else {
$(element)
$(element)
.find(".fc-event-title")
.after('<span title="'+$.i18n._("Show is empty")+'" class="small-icon show-empty"></span>');
.after('<span title="' + $.i18n._("Show is empty") + '" class="small-icon show-empty"></span>');
}
} else if (event.show_partial_filled === true) {
if (event.linked) {
@ -271,13 +271,13 @@ function eventRender(event, element, view) {
.find(".fc-event-title")
.after('<span class="small-icon linked"></span><span title="' + $.i18n._("Show is partially filled") + '" class="small-icon show-partial-filled"></span>');
} else if (event.show_has_auto_playlist === true) {
$(element)
$(element)
.find(".fc-event-title")
.after('<span title="'+$.i18n._("Show has an automatic playlist")+'"class="small-icon autoplaylist"></span><span title="'+$.i18n._("Show is partially filled")+'" class="small-icon show-partial-filled"></span>');
.after('<span title="' + $.i18n._("Show has an automatic playlist") + '"class="small-icon autoplaylist"></span>');
} else {
$(element)
$(element)
.find(".fc-event-title")
.after('<span title="'+$.i18n._("Show is partially filled")+'" class="small-icon show-partial-filled"></span>');
.after('<span title="' + $.i18n._("Show is partially filled") + '" class="small-icon show-partial-filled"></span>');
}
} else {
if (event.linked) {
@ -301,44 +301,44 @@ function eventRender(event, element, view) {
$(element).find(".fc-event-title").after('<span class="small-icon rebroadcast"></span>');
}
}
//now playing icon.
var span = '<span class="small-icon now-playing"></span>';
if (event.nowPlaying === true) {
if (view_name === 'agendaDay' || view_name === 'agendaWeek') {
$(element).find(".fc-event-time").before(span);
}
else if (view_name === 'month') {
$(element).find(".fc-event-title").after(span);
}
}
if (event.nowPlaying === true) {
if (view_name === 'agendaDay' || view_name === 'agendaWeek') {
$(element).find(".fc-event-time").before(span);
}
else if (view_name === 'month') {
$(element).find(".fc-event-title").after(span);
}
}
}
function eventAfterRender( event, element, view ) {
function eventAfterRender(event, element, view) {
$(element).find(".small-icon").live('mouseover',function(){
$(element).find(".small-icon").live('mouseover', function () {
addQtipsToIcons($(this), event.id);
});
}
function eventDrop(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
var url = baseUrl+'Schedule/move-show/format/json';
var url = baseUrl + 'Schedule/move-show/format/json';
$.post(url,
{day: dayDelta, min: minuteDelta, showInstanceId: event.id},
function(json){
if(json.show_error == true){
{ day: dayDelta, min: minuteDelta, showInstanceId: event.id },
function (json) {
if (json.show_error == true) {
alertShowErrorAndReload();
}
if(json.error) {
if (json.error) {
alert(json.error);
revertFunc();
}
//Workaround for cases where FullCalendar handles events over DST
//time changes in a different way than Airtime does.
//(Airtime preserves show duration, FullCalendar doesn't.)
@ -347,16 +347,16 @@ function eventDrop(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui
});
}
function eventResize( event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view ) {
var url = baseUrl+'Schedule/resize-show/format/json';
function eventResize(event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view) {
var url = baseUrl + 'Schedule/resize-show/format/json';
$.post(url,
{day: dayDelta, min: minuteDelta, showId: event.showId, instanceId: event.id},
function(json){
if(json.show_error == true){
{ day: dayDelta, min: minuteDelta, showId: event.showId, instanceId: event.id },
function (json) {
if (json.show_error == true) {
alertShowErrorAndReload();
}
if(json.error) {
if (json.error) {
alert(json.error);
revertFunc();
}
@ -365,20 +365,20 @@ function eventResize( event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, vie
});
}
function windowResize() {
// 200 px for top dashboard and 50 for padding on main content
// this calculation was copied from schedule.js line 326
var mainHeight = $(window).height() - 200 - 24;
$('#schedule_calendar').fullCalendar('option', 'contentHeight', mainHeight);
function windowResize() {
// 200 px for top dashboard and 50 for padding on main content
// this calculation was copied from schedule.js line 326
var mainHeight = $(window).height() - 200 - 24;
$('#schedule_calendar').fullCalendar('option', 'contentHeight', mainHeight);
}
function preloadEventFeed () {
createFullCalendar({calendarInit: calendarPref});
function preloadEventFeed() {
createFullCalendar({ calendarInit: calendarPref });
}
var initialLoad = true;
function getFullCalendarEvents(start, end, callback) {
if (initialLoad) {
initialLoad = false;
callback(calendarEvents);
@ -387,39 +387,39 @@ function getFullCalendarEvents(start, end, callback) {
start_date = makeTimeStamp(start);
end_date = makeTimeStamp(end);
url = baseUrl+'Schedule/event-feed';
url = baseUrl + 'Schedule/event-feed';
var d = new Date();
$.post(url, {format: "json", start: start_date, end: end_date, cachep: d.getTime()}, function(json){
callback(json.events);
getUsabilityHint();
});
$.post(url, { format: "json", start: start_date, end: end_date, cachep: d.getTime() }, function (json) {
callback(json.events);
getUsabilityHint();
});
}
$(".fc-button").addClass("btn").addClass("btn-small");
//$("span.fc-button > :button").addClass("btn btn-small");
}
function checkSCUploadStatus(){
var url = baseUrl+'Library/get-upload-to-soundcloud-status/format/json',
id;
$("span[class*=progress]").each(function(){
function checkSCUploadStatus() {
var url = baseUrl + 'Library/get-upload-to-soundcloud-status/format/json',
id;
$("span[class*=progress]").each(function () {
id = $(this).parents("div.fc-event").data("event").id;
$.post(url, {format: "json", id: id, type:"show"}, function(json){
if (json.sc_id > 0){
$(".fc-show-instance-"+id)
.find(".progress")
.removeClass("progress")
.addClass("soundcloud");
$.post(url, { format: "json", id: id, type: "show" }, function (json) {
if (json.sc_id > 0) {
$(".fc-show-instance-" + id)
.find(".progress")
.removeClass("progress")
.addClass("soundcloud");
}
else if (json.sc_id == "-3"){
$(".fc-show-instance-"+id)
.find(".progress")
.removeClass("progress")
.addClass("sc-error");
else if (json.sc_id == "-3") {
$(".fc-show-instance-" + id)
.find(".progress")
.removeClass("progress")
.addClass("sc-error");
}
setTimeout(checkSCUploadStatus, 5000);
});
});
@ -429,47 +429,47 @@ function checkSCUploadStatus(){
* show icon
*/
function getCurrentShow() {
var url = baseUrl+'Schedule/get-current-show/format/json';
var url = baseUrl + 'Schedule/get-current-show/format/json';
function addNowPlaying(json) {
var $el,
span = '<span class="small-icon now-playing"></span>';
$(".now-playing").remove();
var $el,
span = '<span class="small-icon now-playing"></span>';
$(".now-playing").remove();
if (json.current_show === true) {
$el = $(".fc-show-instance-"+json.si_id);
if (view_name === 'agendaDay' || view_name === 'agendaWeek') {
$el.find(".fc-event-time").before(span);
}
else if (view_name === 'month') {
$el.find(".fc-event-title").after(span);
}
$el = $(".fc-show-instance-" + json.si_id);
if (view_name === 'agendaDay' || view_name === 'agendaWeek') {
$el.find(".fc-event-time").before(span);
}
else if (view_name === 'month') {
$el.find(".fc-event-title").after(span);
}
}
setTimeout(getCurrentShow, 5000);
}
$.post(url, {format: "json"}, addNowPlaying);
$.post(url, { format: "json" }, addNowPlaying);
}
function addQtipsToIcons(ele, id){
if ($(ele).hasClass("progress")){
function addQtipsToIcons(ele, id) {
if ($(ele).hasClass("progress")) {
$(ele).qtip({
content: {
text: $.i18n._("Uploading in progress...")
},
position:{
position: {
adjust: {
resize: true,
method: "flip flip"
resize: true,
method: "flip flip"
},
at: "right center",
my: "left top",
@ -482,23 +482,23 @@ function addQtipsToIcons(ele, id){
ready: true // Needed to make it show on first mouseover event
}
});
}else if($(ele).hasClass("soundcloud")){
} else if ($(ele).hasClass("soundcloud")) {
$(ele).qtip({
content: {
text: $.i18n._("Retreiving data from the server..."),
ajax: {
url: baseUrl+"Library/get-upload-to-soundcloud-status",
url: baseUrl + "Library/get-upload-to-soundcloud-status",
type: "post",
data: ({format: "json", id : id, type: "show"}),
success: function(json, status){
this.set('content.text', $.i18n._("The soundcloud id for this file is: ")+json.sc_id);
data: ({ format: "json", id: id, type: "show" }),
success: function (json, status) {
this.set('content.text', $.i18n._("The soundcloud id for this file is: ") + json.sc_id);
}
}
},
position:{
position: {
adjust: {
resize: true,
method: "flip flip"
resize: true,
method: "flip flip"
},
at: "right center",
my: "left top",
@ -511,24 +511,24 @@ function addQtipsToIcons(ele, id){
ready: true // Needed to make it show on first mouseover event
}
});
}else if($(ele).hasClass("sc-error")){
} else if ($(ele).hasClass("sc-error")) {
$(ele).qtip({
content: {
text: $.i18n._("Retreiving data from the server..."),
ajax: {
url: baseUrl+"Library/get-upload-to-soundcloud-status",
url: baseUrl + "Library/get-upload-to-soundcloud-status",
type: "post",
data: ({format: "json", id : id, type: "show"}),
success: function(json, status){
this.set('content.text', $.i18n._("There was error while uploading to soundcloud.")+"<br>"+$.i18n._("Error code: ")+json.error_code+
"<br>"+$.i18n._("Error msg: ")+json.error_msg+"<br>");
data: ({ format: "json", id: id, type: "show" }),
success: function (json, status) {
this.set('content.text', $.i18n._("There was error while uploading to soundcloud.") + "<br>" + $.i18n._("Error code: ") + json.error_code +
"<br>" + $.i18n._("Error msg: ") + json.error_msg + "<br>");
}
}
},
position:{
position: {
adjust: {
resize: true,
method: "flip flip"
resize: true,
method: "flip flip"
},
at: "right center",
my: "left top",
@ -541,15 +541,15 @@ function addQtipsToIcons(ele, id){
ready: true // Needed to make it show on first mouseover event
}
});
}else if ($(ele).hasClass("show-empty")){
} else if ($(ele).hasClass("show-empty")) {
$(ele).qtip({
content: {
text: $.i18n._("This show has no scheduled content.")
},
position:{
position: {
adjust: {
resize: true,
method: "flip flip"
resize: true,
method: "flip flip"
},
at: "right center",
my: "left top",
@ -562,15 +562,15 @@ function addQtipsToIcons(ele, id){
ready: true // Needed to make it show on first mouseover event
}
});
} else if ($(ele).hasClass("show-partial-filled")){
} else if ($(ele).hasClass("show-partial-filled")) {
$(ele).qtip({
content: {
text: $.i18n._("This show is not completely filled with content.")
},
position:{
position: {
adjust: {
resize: true,
method: "flip flip"
resize: true,
method: "flip flip"
},
at: "right center",
my: "left top",
@ -587,12 +587,12 @@ function addQtipsToIcons(ele, id){
}
//Alert the error and reload the page
//this function is used to resolve concurrency issue
function alertShowErrorAndReload(){
alert($.i18n._("The show instance doesn't exist anymore!"));
window.location.reload();
function alertShowErrorAndReload() {
alert($.i18n._("The show instance doesn't exist anymore!"));
window.location.reload();
}
$(document).ready(function(){
$(document).ready(function () {
preloadEventFeed();
checkSCUploadStatus();
getCurrentShow();

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,19 @@
//Serbian Latin
{
"sProcessing": "Obrada...",
"sLengthMenu": "_MENU_ Rezultati po stranici",
"sZeroRecords": "Ništa nije pronađeno",
"sInfo": "Rezultati: _START_ - _END_ Ukupno: _TOTAL_",
"sInfoEmpty": "Nula Rezultat",
"sInfoFiltered": "(filtrirano iz _MAX_ ukupnih rezultata)",
"sInfoPostFix": "",
"sSearch": "Filter",
"sUrl": "",
"oPaginate": {
"sFirst": "Prva",
"sPrevious": "Nazad",
"sNext": "Napred",
"sLast": "Zadnja"
}
//Serbian Latin
{
"sProcessing": "Obrada...",
"sLengthMenu": "_MENU_ Rezultati po stranici",
"sZeroRecords": "Ništa nije pronađeno",
"sInfo": "Rezultati: _START_ - _END_ Ukupno: _TOTAL_",
"sInfoEmpty": "Nula Rezultat",
"sInfoFiltered": "(filtrirano iz _MAX_ ukupnih rezultata)",
"sInfoPostFix": "",
"sSearch": "Filter",
"sUrl": "",
"oPaginate": {
"sFirst": "Prva",
"sPrevious": "Nazad",
"sNext": "Napred",
"sLast": "Zadnja"
}
}

View File

@ -1,111 +1,111 @@
/*
* jQuery.stickyPanel
* ----------------------
* version: 1.4.1
* date: 7/21/11
*
* Copyright (c) 2011 Donny Velazquez
* http://donnyvblog.blogspot.com/
* http://code.google.com/p/sticky-panel/
*
* Licensed under the Apache License 2.0
*
*/
(function ($) {
$.fn.stickyPanel = function (options) {
var options = $.extend({}, $.fn.stickyPanel.defaults, options);
return this.each(function () {
$(window).bind("scroll.stickyPanel", { selected: $(this), options: options }, Scroll);
});
};
function Scroll(event) {
var node = event.data.selected;
var o = event.data.options;
var isMobile = navigator.userAgent.toLowerCase().indexOf('mobile') > 0;
var windowHeight = $(window).height();
var nodeHeight = node.outerHeight(true);
var scrollTop = $(document).scrollTop();
// when top of window reaches the top of the panel detach
if (!isMobile &&
scrollTop <= $(document).height() - windowHeight && // Fix for rubberband scrolling in Safari on Lion
scrollTop > node.offset().top - o.topPadding) {
// topPadding
var newNodeTop = 0;
if (o.topPadding != "undefined") {
newNodeTop = newNodeTop + o.topPadding;
}
// get left before adding spacer
var nodeLeft = node.offset().left;
// save panels top
node.data("PanelsTop", node.offset().top - newNodeTop);
// MOVED: savePanelSpace before afterDetachCSSClass to handle afterDetachCSSClass changing size of node
// savePanelSpace
if (o.savePanelSpace == true) {
var nodeWidth = node.outerWidth(true);
var nodeCssfloat = node.css("float");
var nodeCssdisplay = node.css("display");
var randomNum = Math.ceil(Math.random() * 9999); /* Pick random number between 1 and 9999 */
node.data("PanelSpaceID", "stickyPanelSpace" + randomNum);
node.before("<div id='" + node.data("PanelSpaceID") + "' style='width:" + nodeWidth + "px;height:" + nodeHeight + "px;float:" + nodeCssfloat + ";display:" + nodeCssdisplay + ";'>&nbsp;</div>");
}
// afterDetachCSSClass
if (o.afterDetachCSSClass != "") {
node.addClass(o.afterDetachCSSClass);
}
// save inline css
node.data("Original_Inline_CSS", (!node.attr("style") ? "" : node.attr("style")));
// detach panel
node.css({
"margin": 0,
"left": nodeLeft,
"top": newNodeTop,
"position": "fixed"
});
}
// ADDED: css top check to avoid continuous reattachment
if (scrollTop <= node.data("PanelsTop") && node.css("top") != "auto") {
if (o.savePanelSpace == true) {
$("#" + node.data("PanelSpaceID")).remove();
}
// attach panel
node.attr("style", node.data("Original_Inline_CSS"));
if (o.afterDetachCSSClass != "") {
node.removeClass(o.afterDetachCSSClass);
}
}
};
$.fn.stickyPanel.defaults = {
topPadding: 0,
// Use this to set the top margin of the detached panel.
afterDetachCSSClass: "",
// This class is applied when the panel detaches.
savePanelSpace: false
// When set to true the space where the panel was is kept open.
};
/*
* jQuery.stickyPanel
* ----------------------
* version: 1.4.1
* date: 7/21/11
*
* Copyright (c) 2011 Donny Velazquez
* http://donnyvblog.blogspot.com/
* http://code.google.com/p/sticky-panel/
*
* Licensed under the Apache License 2.0
*
*/
(function ($) {
$.fn.stickyPanel = function (options) {
var options = $.extend({}, $.fn.stickyPanel.defaults, options);
return this.each(function () {
$(window).bind("scroll.stickyPanel", { selected: $(this), options: options }, Scroll);
});
};
function Scroll(event) {
var node = event.data.selected;
var o = event.data.options;
var isMobile = navigator.userAgent.toLowerCase().indexOf('mobile') > 0;
var windowHeight = $(window).height();
var nodeHeight = node.outerHeight(true);
var scrollTop = $(document).scrollTop();
// when top of window reaches the top of the panel detach
if (!isMobile &&
scrollTop <= $(document).height() - windowHeight && // Fix for rubberband scrolling in Safari on Lion
scrollTop > node.offset().top - o.topPadding) {
// topPadding
var newNodeTop = 0;
if (o.topPadding != "undefined") {
newNodeTop = newNodeTop + o.topPadding;
}
// get left before adding spacer
var nodeLeft = node.offset().left;
// save panels top
node.data("PanelsTop", node.offset().top - newNodeTop);
// MOVED: savePanelSpace before afterDetachCSSClass to handle afterDetachCSSClass changing size of node
// savePanelSpace
if (o.savePanelSpace == true) {
var nodeWidth = node.outerWidth(true);
var nodeCssfloat = node.css("float");
var nodeCssdisplay = node.css("display");
var randomNum = Math.ceil(Math.random() * 9999); /* Pick random number between 1 and 9999 */
node.data("PanelSpaceID", "stickyPanelSpace" + randomNum);
node.before("<div id='" + node.data("PanelSpaceID") + "' style='width:" + nodeWidth + "px;height:" + nodeHeight + "px;float:" + nodeCssfloat + ";display:" + nodeCssdisplay + ";'>&nbsp;</div>");
}
// afterDetachCSSClass
if (o.afterDetachCSSClass != "") {
node.addClass(o.afterDetachCSSClass);
}
// save inline css
node.data("Original_Inline_CSS", (!node.attr("style") ? "" : node.attr("style")));
// detach panel
node.css({
"margin": 0,
"left": nodeLeft,
"top": newNodeTop,
"position": "fixed"
});
}
// ADDED: css top check to avoid continuous reattachment
if (scrollTop <= node.data("PanelsTop") && node.css("top") != "auto") {
if (o.savePanelSpace == true) {
$("#" + node.data("PanelSpaceID")).remove();
}
// attach panel
node.attr("style", node.data("Original_Inline_CSS"));
if (o.afterDetachCSSClass != "") {
node.removeClass(o.afterDetachCSSClass);
}
}
};
$.fn.stickyPanel.defaults = {
topPadding: 0,
// Use this to set the top margin of the detached panel.
afterDetachCSSClass: "",
// This class is applied when the panel detaches.
savePanelSpace: false
// When set to true the space where the panel was is kept open.
};
})(jQuery);

View File

@ -1,25 +1,25 @@
// Croatian
plupload.addI18n({
'Select files': 'Izaberite datoteke:',
'Add files to the upload queue and click the start button.': 'Dodajte datoteke u listu i kliknite Upload.',
'Filename': 'Ime datoteke',
'Status': 'Status',
'Size': 'Veličina',
'Add files': 'Dodajte datoteke',
'Stop current upload': 'Zaustavi trenutan upload',
'Start uploading queue': 'Pokreni Upload',
'Uploaded %d/%d files': 'Uploadano %d/%d datoteka',
'N/A': 'N/A',
'Drag files here.': 'Dovucite datoteke ovdje',
'File extension error.': 'Greška ekstenzije datoteke.',
'File size error.': 'Greška veličine datoteke.',
'Init error.': 'Greška inicijalizacije.',
'HTTP Error.': 'HTTP greška.',
'Security error.': 'Sigurnosna greška.',
'Generic error.': 'Generička greška.',
'IO error.': 'I/O greška.',
'Stop Upload': 'Zaustavi upload.',
'Add Files': 'Dodaj datoteke',
'Start Upload': 'Pokreni upload.',
'%d files queued': '%d datoteka na čekanju.'
// Croatian
plupload.addI18n({
'Select files': 'Izaberite datoteke:',
'Add files to the upload queue and click the start button.': 'Dodajte datoteke u listu i kliknite Upload.',
'Filename': 'Ime datoteke',
'Status': 'Status',
'Size': 'Veličina',
'Add files': 'Dodajte datoteke',
'Stop current upload': 'Zaustavi trenutan upload',
'Start uploading queue': 'Pokreni Upload',
'Uploaded %d/%d files': 'Uploadano %d/%d datoteka',
'N/A': 'N/A',
'Drag files here.': 'Dovucite datoteke ovdje',
'File extension error.': 'Greška ekstenzije datoteke.',
'File size error.': 'Greška veličine datoteke.',
'Init error.': 'Greška inicijalizacije.',
'HTTP Error.': 'HTTP greška.',
'Security error.': 'Sigurnosna greška.',
'Generic error.': 'Generička greška.',
'IO error.': 'I/O greška.',
'Stop Upload': 'Zaustavi upload.',
'Add Files': 'Dodaj datoteke',
'Start Upload': 'Pokreni upload.',
'%d files queued': '%d datoteka na čekanju.'
});

View File

@ -1,14 +1,14 @@
// Serbian Cyrillic
plupload.addI18n({
'Select files' : 'Изаберите фајлове',
'Add files to the upload queue and click the start button.' : 'Додајте фајлове у листу и кликните на дугме Старт.',
'Filename' : 'Назив фајла',
'Status' : 'Status',
'Size' : 'Величина',
'Add Files' : 'Додај фајлове',
'Stop current upload' : 'Заустави upload',
'Start uploading queue' : 'Почни upload',
'Drag files here.' : 'Превуци фајлове овде.',
'Start Upload': 'Почни upload',
'Uploaded %d/%d files': 'Снимљено %d/%d фајлова'
});
// Serbian Cyrillic
plupload.addI18n({
'Select files' : 'Изаберите фајлове',
'Add files to the upload queue and click the start button.' : 'Додајте фајлове у листу и кликните на дугме Старт.',
'Filename' : 'Назив фајла',
'Status' : 'Status',
'Size' : 'Величина',
'Add Files' : 'Додај фајлове',
'Stop current upload' : 'Заустави upload',
'Start uploading queue' : 'Почни upload',
'Drag files here.' : 'Превуци фајлове овде.',
'Start Upload': 'Почни upload',
'Uploaded %d/%d files': 'Снимљено %d/%d фајлова'
});

View File

@ -1,14 +1,14 @@
// Serbian Latin
plupload.addI18n({
'Select files' : 'Izaberite fajlove',
'Add files to the upload queue and click the start button.' : 'Dodajte fajlove u listu i kliknite na dugme Start.',
'Filename' : 'Naziv fajla',
'Status' : 'Status',
'Size' : 'Veličina',
'Add Files' : 'Dodaj fajlove',
'Stop current upload' : 'Zaustavi upload',
'Start uploading queue' : 'Počni upload',
'Drag files here.' : 'Prevucite fajlove ovde.',
'Start Upload': 'Počni upload',
'Uploaded %d/%d files': 'Snimljeno %d/%d fajlova'
});
// Serbian Latin
plupload.addI18n({
'Select files' : 'Izaberite fajlove',
'Add files to the upload queue and click the start button.' : 'Dodajte fajlove u listu i kliknite na dugme Start.',
'Filename' : 'Naziv fajla',
'Status' : 'Status',
'Size' : 'Veličina',
'Add Files' : 'Dodaj fajlove',
'Stop current upload' : 'Zaustavi upload',
'Start uploading queue' : 'Počni upload',
'Drag files here.' : 'Prevucite fajlove ovde.',
'Start Upload': 'Počni upload',
'Uploaded %d/%d files': 'Snimljeno %d/%d fajlova'
});

View File

@ -1,183 +1,183 @@
/**
sprintf() for JavaScript 0.7-beta1
http://www.diveintojavascript.com/projects/javascript-sprintf
Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of sprintf() for JavaScript nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Changelog:
2010.09.06 - 0.7-beta1
- features: vsprintf, support for named placeholders
- enhancements: format cache, reduced global namespace pollution
2010.05.22 - 0.6:
- reverted to 0.4 and fixed the bug regarding the sign of the number 0
Note:
Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
who warned me about a bug in 0.5, I discovered that the last update was
a regress. I appologize for that.
2010.05.09 - 0.5:
- bug fix: 0 is now preceeded with a + sign
- bug fix: the sign was not at the right position on padded results (Kamal Abdali)
- switched from GPL to BSD license
2007.10.21 - 0.4:
- unit test and patch (David Baird)
2007.09.17 - 0.3:
- bug fix: no longer throws exception on empty paramenters (Hans Pufal)
2007.09.11 - 0.2:
- feature: added argument swapping
2007.04.03 - 0.1:
- initial release
**/
var sprintf = (function() {
function get_type(variable) {
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
}
function str_repeat(input, multiplier) {
for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
return output.join('');
}
var str_format = function() {
if (!str_format.cache.hasOwnProperty(arguments[0])) {
str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
}
return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
};
str_format.format = function(parse_tree, argv) {
var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
for (i = 0; i < tree_length; i++) {
node_type = get_type(parse_tree[i]);
if (node_type === 'string') {
output.push(parse_tree[i]);
}
else if (node_type === 'array') {
match = parse_tree[i]; // convenience purposes only
if (match[2]) { // keyword argument
arg = argv[cursor];
for (k = 0; k < match[2].length; k++) {
if (!arg.hasOwnProperty(match[2][k])) {
throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
}
arg = arg[match[2][k]];
}
}
else if (match[1]) { // positional argument (explicit)
arg = argv[match[1]];
}
else { // positional argument (implicit)
arg = argv[cursor++];
}
if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
}
switch (match[8]) {
case 'b': arg = arg.toString(2); break;
case 'c': arg = String.fromCharCode(arg); break;
case 'd': arg = parseInt(arg, 10); break;
case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
case 'o': arg = arg.toString(8); break;
case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
case 'u': arg = Math.abs(arg); break;
case 'x': arg = arg.toString(16); break;
case 'X': arg = arg.toString(16).toUpperCase(); break;
}
arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
pad_length = match[6] - String(arg).length;
pad = match[6] ? str_repeat(pad_character, pad_length) : '';
output.push(match[5] ? arg + pad : pad + arg);
}
}
return output.join('');
};
str_format.cache = {};
str_format.parse = function(fmt) {
var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
while (_fmt) {
if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
parse_tree.push(match[0]);
}
else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
parse_tree.push('%');
}
else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
if (match[2]) {
arg_names |= 1;
var field_list = [], replacement_field = match[2], field_match = [];
if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
}
else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
}
else {
throw('[sprintf] huh?');
}
}
}
else {
throw('[sprintf] huh?');
}
match[2] = field_list;
}
else {
arg_names |= 2;
}
if (arg_names === 3) {
throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
}
parse_tree.push(match);
}
else {
throw('[sprintf] huh?');
}
_fmt = _fmt.substring(match[0].length);
}
return parse_tree;
};
return str_format;
})();
var vsprintf = function(fmt, argv) {
argv.unshift(fmt);
return sprintf.apply(null, argv);
};
/**
sprintf() for JavaScript 0.7-beta1
http://www.diveintojavascript.com/projects/javascript-sprintf
Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of sprintf() for JavaScript nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Changelog:
2010.09.06 - 0.7-beta1
- features: vsprintf, support for named placeholders
- enhancements: format cache, reduced global namespace pollution
2010.05.22 - 0.6:
- reverted to 0.4 and fixed the bug regarding the sign of the number 0
Note:
Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
who warned me about a bug in 0.5, I discovered that the last update was
a regress. I appologize for that.
2010.05.09 - 0.5:
- bug fix: 0 is now preceeded with a + sign
- bug fix: the sign was not at the right position on padded results (Kamal Abdali)
- switched from GPL to BSD license
2007.10.21 - 0.4:
- unit test and patch (David Baird)
2007.09.17 - 0.3:
- bug fix: no longer throws exception on empty paramenters (Hans Pufal)
2007.09.11 - 0.2:
- feature: added argument swapping
2007.04.03 - 0.1:
- initial release
**/
var sprintf = (function() {
function get_type(variable) {
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
}
function str_repeat(input, multiplier) {
for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
return output.join('');
}
var str_format = function() {
if (!str_format.cache.hasOwnProperty(arguments[0])) {
str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
}
return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
};
str_format.format = function(parse_tree, argv) {
var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
for (i = 0; i < tree_length; i++) {
node_type = get_type(parse_tree[i]);
if (node_type === 'string') {
output.push(parse_tree[i]);
}
else if (node_type === 'array') {
match = parse_tree[i]; // convenience purposes only
if (match[2]) { // keyword argument
arg = argv[cursor];
for (k = 0; k < match[2].length; k++) {
if (!arg.hasOwnProperty(match[2][k])) {
throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
}
arg = arg[match[2][k]];
}
}
else if (match[1]) { // positional argument (explicit)
arg = argv[match[1]];
}
else { // positional argument (implicit)
arg = argv[cursor++];
}
if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
}
switch (match[8]) {
case 'b': arg = arg.toString(2); break;
case 'c': arg = String.fromCharCode(arg); break;
case 'd': arg = parseInt(arg, 10); break;
case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
case 'o': arg = arg.toString(8); break;
case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
case 'u': arg = Math.abs(arg); break;
case 'x': arg = arg.toString(16); break;
case 'X': arg = arg.toString(16).toUpperCase(); break;
}
arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
pad_length = match[6] - String(arg).length;
pad = match[6] ? str_repeat(pad_character, pad_length) : '';
output.push(match[5] ? arg + pad : pad + arg);
}
}
return output.join('');
};
str_format.cache = {};
str_format.parse = function(fmt) {
var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
while (_fmt) {
if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
parse_tree.push(match[0]);
}
else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
parse_tree.push('%');
}
else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
if (match[2]) {
arg_names |= 1;
var field_list = [], replacement_field = match[2], field_match = [];
if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
}
else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
}
else {
throw('[sprintf] huh?');
}
}
}
else {
throw('[sprintf] huh?');
}
match[2] = field_list;
}
else {
arg_names |= 2;
}
if (arg_names === 3) {
throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
}
parse_tree.push(match);
}
else {
throw('[sprintf] huh?');
}
_fmt = _fmt.substring(match[0].length);
}
return parse_tree;
};
return str_format;
})();
var vsprintf = function(fmt, argv) {
argv.unshift(fmt);
return sprintf.apply(null, argv);
};

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +0,0 @@
/*
Code taken from http://www.jspatterns.com/book/7/observer-game.html
Pub/Sub
*/
var publisher = {
subscribers: {
any: []
},
on: function (type, fn, context) {
type = type || 'any';
fn = typeof fn === "function" ? fn : context[fn];
if (typeof this.subscribers[type] === "undefined") {
this.subscribers[type] = [];
}
this.subscribers[type].push({fn: fn, context: context || this});
},
remove: function (type, fn, context) {
this.visitSubscribers('unsubscribe', type, fn, context);
},
fire: function (type, publication) {
this.visitSubscribers('publish', type, publication);
},
reset: function (type) {
},
visitSubscribers: function (action, type, arg, context) {
var pubtype = type || 'any',
subscribers = this.subscribers[pubtype],
i,
max = subscribers ? subscribers.length : 0;
for (i = 0; i < max; i += 1) {
if (action === 'publish') {
subscribers[i].fn.call(subscribers[i].context, arg);
}
else {
if (subscribers[i].fn === arg && subscribers[i].context === context) {
subscribers.splice(i, 1);
}
}
}
}
};
function makePublisher(o) {
var i;
for (i in publisher) {
if (publisher.hasOwnProperty(i) && typeof publisher[i] === "function") {
o[i] = publisher[i];
}
}
o.subscribers = {any: []};
}

View File

@ -1,25 +0,0 @@
<form class="form-inline">
<select id="time_format">
<option value="seconds">seconds</option>
<option value="thousandths">thousandths</option>
<option value="hh:mm:ss">hh:mm:ss</option>
<option value="hh:mm:ss.uu">hh:mm:ss + hundredths</option>
<option value="hh:mm:ss.uuu">hh:mm:ss + milliseconds</option>
</select>
<input id="audio_start" type="text" class="input-small">
<input id="audio_end" type="text" class="input-small">
<input id="audio_pos" type="text" class="input-small">
<select id="audio_resolution">
<option>4000</option>
<option>5000</option>
<option>6000</option>
<option>7000</option>
<option>8000</option>
<option>9000</option>
<option>10000</option>
<option>11000</option>
<option>12000</option>
<option>15000</option>
<option>20000</option>
</select>
</form>

View File

@ -9,7 +9,8 @@ Recommendations:
- It is not recommended that you install LibreTime on the same computer you are using as a desktop.
- Please review the release notes of the version you are planning on installing.
Once you have downloaded and extracted LibreTime, run the instalation script by navigating into the folder containing the LibreTime codebase, and run it's install script from the command line:
Once you have downloaded and extracted LibreTime, run the installation script by navigating into the
folder containing the LibreTime codebase, and run it's install script from the command line:
```
sudo ./install
@ -18,7 +19,9 @@ sudo ./install
By default, the installer will install and configure all dependencies.
## Alternative OS installations
Instalation in Debian 9 and other Linux distributions is possible, but multiple outstanding issues have yet to be resolved. Instalation on Ubuntu 14.04.5 LTS (Trusty Tahr) is also working, but deprecated due to the fact that this version will reach its official end of life in April 2019.
Installation in Debian 9 and other Linux distributions is possible, but multiple outstanding issues have yet
to be resolved. Installation on Ubuntu 14.04.5 LTS (Trusty Tahr) is also working, but deprecated due to the
fact that this version will reach its official end of life in April 2019.
Plans are in the works for `.deb` and `.rpm` packages, as well as Docker and AWS images.

View File

@ -9,7 +9,7 @@ In the top left corner of the page, you can go back or forward through the **Cal
Adding a show
-------------
Only *Admins* and *Program Managers* can use this feature. To add a new show to the Calendar, click the **+ New Show** button in the top left corner of the page, or click on any future row or box in the Calendar which is empty. Either of these actions opens the **Add this show** box, which has seven sections, arranged vertically: **What**, **Automatic Playlist**, **When**, **Live Stream Input**, **Record & Rebroadcast**, **Who**, and **Style**. Click the small orange triangle to the left of the section name if you wish to minimize or maximize it.
Only *Admins* and *Program Managers* can use this feature. To add a new show to the Calendar, click the **+ New Show** button in the top left corner of the page, or click on any future row or box in the Calendar which is empty. Either of these actions opens the **Add this show** box, which has seven sections, arranged vertically: **What**, **Autoloading Playlist**, **When**, **Live Stream Input**, **Record & Rebroadcast**, **Who**, and **Style**. Click the small orange triangle to the left of the section name if you wish to minimize or maximize it.
What
----
@ -18,7 +18,7 @@ In the **What** box, enter the **Name**, public website **URL**, **Genre** and *
![](static/Screenshot453-Show_what.png)
Automatic Playlist
Autoloading Playlist
------------------
In this section, you can select a playlist that will be used for this show. The playlist must already be defined in your library. **Auto Schedule Playlist** needs to be checked for **Select Playlist** and **Repeat AutoPlaylist Until Show is Full** to be visible.
@ -64,15 +64,7 @@ A reminder of the connection **Host**, **Port** and **Mount** for the live input
Record & Rebroadcast
--------------------
In the **Record & Rebroadcast** section, checking the **Record from Line In?** box enables automatic recording of the soundcard line input, if your LibreTime server has one, at the time of the show. Shows set for line-in recording should not also contain files or playlists. The default audio format for live recordings is 256kbps Ogg Vorbis, and the files are saved in the *recorded* folder, under the **Import Folder** path set in the **Media Folders** page on the **System** menu. See the chapter *Host configuration* for details of recorder settings.
If you wish the recording to be played out at a later time, check the **Rebroadcast?** box, and then select up to ten date and time slots in the **Choose Days** box.
![](static/Screenshot458-Record_and_rebroadcast.png)
Shows set for rebroadcast have a white loop icon in the calendar.
![](static/Screenshot92-Record_and_rebroadcast_icons.png)
The **Record & Rebroadcast** section is currently not working, and so has been removed from the web interface. If this feature is important to you, please search for relevant issues in the [LibreTime github repository](https://github.com/LibreTime/libretime/search?q=record&type=Issues) and help us make it happen!
Who
---

View File

@ -1,16 +1,17 @@
If the server is only being used for Airtime and has a web browser installed, you can access the administration interface directly on that server by opening the address:
If the server is only being used for LibreTime and has a web browser installed, you can access the administration interface directly on that server by opening the address:
http://localhost/
If you have set up Airtime so that it can be accessed from other computers, you would use a domain name instead. For example:
If you have set up LibreTime so that it can be accessed from other computers, you would use a domain name instead. For example:
https://airtime.example.com/
https://libretime.example.com/
You can log in for the first time with the user name *admin* and the password set during installation. Your browser should automatically focus on the **Username** field.
![](static/Screenshot465-Airtime_login.png)
![](static/Screenshot-Login.png)
If you enter the password incorrectly three times, you will be presented with a reCAPTCHA challenge to prove that you are a human, and not a password-guessing robot. This feature helps protect your Airtime installation against brute force attacks.
If you enter the password incorrectly three times, you will be presented with a reCAPTCHA challenge to prove that you are a human, and not a password-guessing robot. This feature helps protect your LibreTime installation against brute force
attacks.
![](static/Screenshot466-Recaptcha_login.png)
@ -22,50 +23,48 @@ The **E-mail** address you enter must match the address stored in the database f
![](static/Screenshot468-Restore_password.png)
Register Airtime
----------------
After you have logged in as *admin* for the first time, a pop-up window will ask if you wish to send technical support data about your server to Sourcefabric.
![](static/Screenshot389-Yes_help_Airtime.png)
These details can be viewed by clicking on the **Show me what I am sending** link, which expands a scrolling window. The data helps Sourcefabric engineers resolve any problems with your Airtime installation, as well as count the number of installations worldwide.
<img src="static/Screenshot546-Remind_me_never_250.png" width="535" height="275" />
Sourcefabric has a privacy policy regarding data collection, which you can read by clicking the link to <http://www.sourcefabric.org/en/about/policy/> further down. After checking the **Send support feedback** and **privacy policy** boxes, you can submit the data by clicking the **Yes, help Airtime** button.
This window also offers the opportunity to **Promote my station on Sourcefabric.org** (on the page <http://www.sourcefabric.org/en/airtime/whosusing/>) by checking the box. Fill in the form which will appear with some details about your station. The contact details are only requested for verification purposes, and will not be made available to the public. Click the **Browse** button to select a **Station Logo** image from the file manager on your computer.
![](static/Screenshot391-Promote_my_station.png)
The Master Panel
----------------
After the pop-up window is closed, you should now see the **Master Panel**, which is present at the top of every page of the Airtime interface. On the left hand side, the Master Panel displays the details of the **Previous** file played out, the current file playing (with an orange progress bar and time elapsed/time remaining), and the details of the **Next** file due to play. It also displays the name and scheduled time of the current show, with a blue progress bar.
The **Master Panel** is present at the top of every page of the LibreTime interface. On the left hand side, the Master Panel displays the details of the **Previous** file played out,
the current file playing (with an orange progress bar and time elapsed/time remaining), and the details of the **Next**
file due to play. It also displays the name and scheduled time of the current show, with a blue progress bar.
Beneath this side of the Master Panel is the main navigation menu, with sub-menus labelled **Now Playing**, **Add Media**, **Library**, **Calendar**, **System**, **History** and **Help**. We'll be looking at the contents of these menus in the following chapters of this book.
![](static/Screenshot-MasterPanel.png)
<img src="static/Screenshot542-Main_menus_250.png" width="595" height="145" />
Beneath this side of the Master Panel is the main navigation menu. We'll be looking at the contents of these menus in the
following chapters of this book.
On the right hand side of the Master Panel are the switches for the **Source Streams**, which enable you to switch from scheduled play to remote live sources, and back. (See the chapter *Stream settings* for details of this feature). The **On Air** indicator turns from dark grey to red whenever audio is being played out. Underneath this indicator is a **Listen** button, which opens a pop-up player that can be used to audition the available playout streams.
![](static/Screenshot-MainMenu.png)
There is also a clock indicating the **Station time** and time zone. Beneath the clock and just to the left, the name of the user currently logged in is displayed, and there is the link for you to **Logout**. 
On the right hand side of the Master Panel are the switches for the **Source Streams**, which enable you to switch from
scheduled play to remote live sources, and back. (See the chapter *Stream settings* for details of this feature). The
**On Air** indicator turns from dark grey to red whenever audio is being played out. Underneath this indicator is a
**Listen** button, which opens a pop-up player that can be used to audition the available playout streams.
There is also a clock indicating the **Station time** and time zone. Beneath the clock and just to the left, the name of
the user currently logged in is displayed, and there is the link for you to **Logout**. 
![](static/Screenshot469-On_Air_light.png)
Clicking the username link opens a page in which you can update your Airtime password, contact details, language and time zone preferences. Click the **Save** button once you have made the changes that you require.
Clicking the username link opens a page in which you can update your LibreTime password, contact details, language and time
zone preferences. Click the **Save** button once you have made the changes that you require.
![](static/Screenshot470-User_settings.png)
On the right of the Logout link, clicking the green check mark opens a pop-up window with information about the version of Airtime installed. If your Airtime installation is not the latest version available, the green check mark changes to a green upgrade arrow. Should your Airtime installation get too far out of date, this arrow will change to a red exclamation mark.
On the right of the Logout link, clicking the green check mark opens a pop-up window with information about the version of
LibreTime installed. If your LibreTime installation is not the latest version available, the green check mark changes to a
green upgrade arrow. Should your LibreTime installation get too far out of date, this arrow will change to a red exclamation
mark.
<img src="static/Screenshot543-Running_latest_version_250.png" width="595" height="230" />
Checking an Icecast server
--------------------------
If you have installed an Icecast streaming media server, you can check that Icecast is running by opening its default server port of 8000 in your web browser. For example, on the server itself, you can use:
If you have installed an Icecast streaming media server, you can check that Icecast is running by opening its default server
port of 8000 in your web browser. For example, on the server itself, you can use:
http://localhost:8000
@ -73,6 +72,7 @@ or from another machine, using the domain name of the Icecast server:
http://streaming.example.com:8000
You should see the Icecast status page, with details of any connections that your Airtime server has made to this Icecast server. If you have only just installed Airtime, there may not be any media playing out yet.
You should see the Icecast status page, with details of any connections that your LibreTime server has made to this Icecast
server. If you have only just installed LibreTime, there may not be any media playing out yet.
![](static/Screenshot293-Icecast_status_page.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -234,12 +234,7 @@ and then run the command (as root):
This should make sure that **rabbitmq-server** starts after the next reboot.
libav on Debian squeeze and .m4a files
--------------------------------------
The version of libav shipped with Debian 6.0 'squeeze' is known to cause problems when Airtime analyses .m4a files containing the AAC codec for silence, using Silan (see <https://github.com/x42/silan/issues/2>). It is recommended that Debian servers are upgraded to the current stable 'wheezy' 7.2 release. As a short-term measure, updated libav packages from the squeeze-backports repository can be used to work around this problem. This work-around is only required if you do not wish to upgrade to 'wheezy' yet, but have AAC codec .m4a files in your Airtime library.
Mail server
-----------
If you wish Airtime to be able to send password reminder emails to your staff users, the server can have an SMTP program installed, such as the **postfix** package in Debian or Ubuntu. For configuration options, refer to the documentation for your mail server of choice. Alternatively, you can specify an external SMTP server in the **Preferences** page on Airtime's **System** menu.
If you wish Airtime to be able to send password reminder emails to your staff users, the server can have an SMTP program installed, such as the **postfix** package in Debian or Ubuntu. For configuration options, refer to the documentation for your mail server of choice. Alternatively, you can specify an external SMTP server in the **Preferences** page on Airtime's **System** menu.

View File

@ -1,5 +1,6 @@
LibreTime 3.x versions support upgrading from Airtime 2.5.x versions. LibreTime
follows the [Semantic Versioning (semver)](http://semver.org/spec/v2.0.0.html) standards.
## LibreTime versioning
LibreTime 3.x versions support upgrading from Airtime 2.5.x versions. LibreTime follows the [Semantic Versioning (semver)](http://semver.org/spec/v2.0.0.html) standards.
In a nutshell, given a version number MAJOR.MINOR.PATCH we increment the:
@ -7,45 +8,17 @@ In a nutshell, given a version number MAJOR.MINOR.PATCH we increment the:
2. MINOR version when we add functionality in a backwards-compatible manner, and
3. PATCH version when we make backwards-compatible bug fixes.
Any pre-release versions of LibreTime are denoted by appending a hyphen and a series
of dot separated identifiers immediately following the patch version. This pre-release
indicates that the version is unstable in a sense that it might contain incomplete
features or not satisfy the intended compatibility requirements as per semver.
Any pre-release versions of LibreTime are denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. This pre-release indicates that the version is unstable in a sense that it might contain incomplete features or not satisfy the intended compatibility requirements as per semver.
Before upgrading a production LibreTime server, you should back up both the PostgreSQL
database and the storage server used by LibreTime. This is especially important if you
have not already set up a regular back up routine. This extra back up is a safety measure
in case of accidental data loss during the upgrade, for example due to the wrong command
being entered when moving files. See [Backing up the server](../backing-up-the-server/)
in this manual for details of how to perform these back ups.
## Upgrading
If you have deployed LibreTime using the method shown in [Automated installation](../automated-installation/),
you can upgrade in the same way. A new LibreTime package available in
the repository can be installed with:
Before upgrading a production LibreTime server, you should back up both the PostgreSQL database and the storage server used by LibreTime. This is especially important if you have not already set up a regular back up routine. This extra back up is a safety measure in case of accidental data loss during the upgrade, for example due to the wrong command being entered when moving files. See [Backing up the server](../backing-up-the-server/) in this manual for details of how to perform these back ups.
sudo apt-get update
sudo apt-get upgrade
The LibreTime [installation script](../install) will detect an existing LibreTime or Airtime deployment and back up any configuration files that it finds. We recommend taking your own manual backups of the configuration yourself nevertheless. The install script also tries to restart the needed services during an upgrade. In any case you should monitor if this happened and also take a quick look at the logs files to be sure everything is still fine. Now might be the time to reboot the system or virtual machine LibreTime is running on since regular reboots are part of a healthy system anyway.
If you have used the method shown in [Manual installation](../manual-installation/), you should
repeat the installation steps of downloading and unpacking the tarball to an
installation directory, or pulling from the git repository with `git pull`, and
running the `./install` script. The installation script will detect an existing
LibreTime deployment and back up any configuration files that it finds. We recommend
taking your own manual backups of the configuration yourself nevertheless.
After the upgrade has completed, you may need to clear your web browser's cache before logging into the new version of the LibreTime administration interface. If the playout engine starts up and detects that a show should be playing at the current time, it will skip to the correct point in the current item and start playing.
The install script tries to restart the needed services during an upgrade. In any case
you should monitor if this happened and also take a quick look at the logs files to
be sure everything is still fine. Now might be the time to reboot the system or
virtual machine LibreTime is running on since regular reboots are part of a healthy
system anyway.
After the upgrade has completed, you may need to clear your web browser's cache
before logging into the new version of the LibreTime administration interface. If
the playout engine starts up and detects that a show should be playing at the
current time, it will skip to the correct point in the current item and start playing.
There will be tested ways to switch from a LibreTime pre-release to a packaged version
of LibreTime.
There will be tested ways to switch from a LibreTime pre-release to a packaged version of LibreTime.
Airtime 2.5.x versions support upgrading from version 2.3.0 and above. If you are
running a production server with a version of Airtime prior to 2.3.0, you should

View File

@ -1,76 +1,9 @@
[Sourcefabric Manuals](http://sourcefabric.booktype.pro/)
- [Sign In / Create Account](http://sourcefabric.booktype.pro/accounts/signin/?redirect=/airtime-25-for-broadcasters/using-the-airtime-import-script/)
 English |  <a href="index.html#" class="langes">Español</a> |  <a href="index.html#" class="langfr">Français</a> |  <a href="index.html#" class="langit">Italiano</a> |  <a href="index.html#" class="langpt">Português</a> |  <a href="index.html#" class="langru">Русский</a> |  <a href="index.html#" class="langsq">Shqip</a>
- [Books](http://sourcefabric.booktype.pro/list-books/)
- [Groups](http://sourcefabric.booktype.pro/list-groups/)
- [People](http://sourcefabric.booktype.pro/list-people/)
Airtime 2.5 for Broadcasters
----------------------------
- **Introduction**
- [What is Airtime?](../index.html)
- [Rights and royalties](../rights-and-royalties/index.html)
- **Using Airtime**
- [On air in 60 seconds!](../on-air-in-60-seconds/index.html)
- [Getting started](../getting-started/index.html)
- [Smartphone journalism](../smartphone-journalism/index.html)
- **The System menu**
- [Preferences](../preferences/index.html)
- [Users](../users/index.html)
- [Media folders](../media-folders/index.html)
- [Stream settings](../stream-settings/index.html)
- [Support feedback](../support-feedback/index.html)
- [Status](../status/index.html)
- [Listener stats](../listener-stats/index.html)
- **The main menus**
- [Now playing](../now-playing/index.html)
- [Add media](../add-media/index.html)
- [Library](../library/index.html)
- [Calendar](../calendar/index.html)
- [History](../playout-history/index.html)
- [Listen](../listen/index.html)
- [Help](../help/index.html)
- **Airtime in the studio**
- [Recording shows](../recording-shows/index.html)
- [Live shows with Mixxx](../live-shows-with-mixxx/index.html)
- [Icecast and SHOUTcast](../icecast-and-shoutcast/index.html)
- **Installation**
- [Preparing the server](../preparing-the-server/index.html)
- [Easy setup](../easy-setup/index.html)
- [Automated installation](../automated-installation/index.html)
- [Manual installation](../manual-installation/index.html)
- [Setting the server time](../setting-the-server-time/index.html)
- **Administration**
- [Preparing media for ingest](../preparing-media-for-ingest/index.html)
- [Using the airtime-import script](index.html)
- [The airtime-log command](../the-airtime-log-command/index.html)
- [Backing up the server](../backing-up-the-server/index.html)
- [Upgrading](../upgrading/index.html)
- [Troubleshooting](../troubleshooting/index.html)
- [Using Monit](../using-monit/index.html)
- **Advanced configuration**
- [Automated file import](../automated-file-import/index.html)
- [Icecast handover](../icecast-handover/index.html)
- [Promoting your station](../promoting-your-station/index.html)
- [Stream player for your website](../stream-player-for-your-website/index.html)
- [Exporting the schedule](../exporting-the-schedule/index.html)
- [Interface customization](../interface-customization/index.html)
- [Interface localization and Git](../interface-localization/index.html)
- [Host configuration](../host-configuration/index.html)
- [Airtime API authentication](../airtime-api-authentication/index.html)
- [Secure login with SSL or TLS](../secure-login-with-ssl/index.html)
- [Icecast statistics with Piwik](../icecast-statistics-with-piwik/index.html)
- **Appendix**
- [HD Audio Models](../hd-audio-models/index.html)
- [About this manual](../about-this-manual/index.html)
Using the import script
=======================
###NOTE: This page has issues, as the import script is not currently functional
If you have a large number of files in your media library, importing these files one at a time into a broadcast automation system would be time-consuming and tedious. That's why Airtime includes a script that can import an entire directory of files in one go.
Copying versus watching

View File

@ -35,7 +35,6 @@ With the above instructions LibreTime is installed on Ubuntu Xenial Xerus. The V
| ------ | ------------------- | ------- |
| Debian 9.2 | `vagrant up debian-stretch` | Install on current Debian Stretch. |
| Debian 8.7 | `vagrant up debian-jessie` | Install on Debian Jessie. |
| Debian 7.11 | `vagrant up debian-wheezy` | Deprecated install on Debian Wheezy. Please switch to debian-stretch. |
| Ubuntu 18.04 | `vagrant up ubuntu-bionic` | Experimental install on current Ubuntu Bionic Beaver. |
| Ubuntu 16.04 | `vagrant up ubuntu-xenial` | Install on Ubuntu Xenial Xerus. |
| Ubuntu 14.04 | `vagrant up ubuntu-trusty` | Deprecated install on Ubuntu Trusty Tahir. Recommended by legacy upstream. |

View File

@ -586,7 +586,6 @@ fi
is_debian_dist=false
is_debian_stretch=false
is_debian_jessie=false
is_debian_wheezy=false
is_ubuntu_dist=false
is_ubuntu_bionic=false
is_ubuntu_xenial=false
@ -636,9 +635,9 @@ case "${dist}-${code}" in
is_debian_jessie=true
;;
debian-7|debian-wheezy)
code="wheezy"
is_debian_dist=true
is_debian_wheezy=true
echo -e "ERROR: Debian Wheezy is archived and does not receive any security or other updates since 2018-05-31." >&2
echo -e "The LibreTime installer dropped support for installing LibreTime on Wheezy in 3.0.0-alpha.6." >&2
exit 1
;;
centos-7)
is_centos_dist=true