This commit is contained in:
Duncan Sommerville 2015-01-21 15:14:34 -05:00
commit 345b2b5d26
19 changed files with 130 additions and 39 deletions

View File

@ -25,6 +25,7 @@ Community Contributors:
John Chewter
Version 2.5.0
-------------

2
README
View File

@ -43,7 +43,7 @@ For installation from git on Debian wheezy, run:
Quick links to our resources
----------------------------
User manuals: http://www.sourcefabric.org/en/airtime/manuals/
User manual: http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/
Forums and mailing lists: http://forum.sourcefabric.org
Bug tracker: http://dev.sourcefabric.org
Source code: http://github.com/sourcefabric/Airtime

View File

@ -11,7 +11,7 @@ define('COMPANY_SITE_URL' , 'http://sourcefabric.org/');
define('WHOS_USING_URL' , 'http://sourcefabric.org/en/airtime/whosusing');
define('TERMS_AND_CONDITIONS_URL' , 'http://www.sourcefabric.org/en/about/policy/');
define('PRIVACY_POLICY_URL' , 'http://www.sourcefabric.org/en/about/policy/');
define('USER_MANUAL_URL' , 'http://www.sourcefabric.org/en/airtime/manuals/');
define('USER_MANUAL_URL' , 'http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/');
define('LICENSE_VERSION' , 'GNU AGPL v.3');
define('LICENSE_URL' , 'http://www.gnu.org/licenses/agpl-3.0-standalone.html');

View File

@ -128,7 +128,7 @@ $pages = array(
),
array(
'label' => _('User Manual'),
'uri' => "http://www.sourcefabric.org/en/airtime/manuals/",
'uri' => "http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/",
'target' => "_blank"
),
array(

View File

@ -209,8 +209,12 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm
$interval = 'P21D';
} elseif ($formData["add_show_repeat_type"] == 5) {
$interval = 'P28D';
} elseif ($formData["add_show_repeat_type"] == 2) {
} elseif ($formData["add_show_repeat_type"] == 2 && $formData["add_show_monthly_repeat_type"] == 2) {
$interval = 'P1M';
} elseif ($formData["add_show_repeat_type"] == 2 && $formData["add_show_monthly_repeat_type"] == 3) {
list($weekNumberOfMonth, $dayOfWeek) =
Application_Service_ShowService::getMonthlyWeeklyRepeatInterval(
new DateTime($start_time, $showTimezone));
}
/* Check first show
@ -274,12 +278,26 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm
$this->getElement('add_show_duration')->setErrors(array(_('Cannot schedule overlapping shows')));
break 1;
} else {
$repeatShowStart->setTimezone($showTimezone);
$repeatShowEnd->setTimezone($showTimezone);
$repeatShowStart->add(new DateInterval($interval));
$repeatShowEnd->add(new DateInterval($interval));
$repeatShowStart->setTimezone($utc);
$repeatShowEnd->setTimezone($utc);
if ($formData["add_show_repeat_type"] == 2 && $formData["add_show_monthly_repeat_type"] == 3) {
$monthlyWeeklyStart = new DateTime($repeatShowStart->format("Y-m"),
new DateTimeZone("UTC"));
$monthlyWeeklyStart->add(new DateInterval("P1M"));
$repeatShowStart = clone Application_Service_ShowService::getNextMonthlyWeeklyRepeatDate(
$monthlyWeeklyStart,
$formData["add_show_timezone"],
$formData['add_show_start_time'],
$weekNumberOfMonth,
$dayOfWeek);
$repeatShowEnd = clone $repeatShowStart;
$repeatShowEnd->add(new DateInterval("PT".$hours."H".$minutes."M"));
} else {
$repeatShowStart->setTimezone($showTimezone);
$repeatShowEnd->setTimezone($showTimezone);
$repeatShowStart->add(new DateInterval($interval));
$repeatShowEnd->add(new DateInterval($interval));
$repeatShowStart->setTimezone($utc);
$repeatShowEnd->setTimezone($utc);
}
}
}
}

View File

@ -4,6 +4,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
private $criteriaOptions;
private $stringCriteriaOptions;
private $numericCriteriaOptions;
private $sortOptions;
private $limitOptions;
/* We need to know if the criteria value will be a string
@ -122,6 +123,17 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
}
return $this->limitOptions;
}
private function getSortOptions()
{
if (!isset($this->sortOptions)) {
$this->sortOptions = array(
"random" => _("random"),
"newest" => _("newest"),
"oldest" => _("oldest")
);
}
return $this->sortOptions;
}
public function init()
@ -288,6 +300,15 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
}
$this->addElement($repeatTracks);
$sort = new Zend_Form_Element_Select('sp_sort_options');
$sort->setAttrib('class', 'sp_input_select')
->setDecorators(array('viewHelper'))
->setMultiOptions($this->getSortOptions());
if (isset($storedCrit["sort"])) {
$sort->setValue($storedCrit["sort"]["value"]);
}
$this->addElement($sort);
$limit = new Zend_Form_Element_Select('sp_limit_options');
$limit->setAttrib('class', 'sp_input_select')
->setDecorators(array('viewHelper'))
@ -344,7 +365,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
public function preValidation($params)
{
$data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']);
$data = Application_Model_Block::organizeSmartPlaylistCriteria($params['data']);
// add elelments that needs to be added
// set multioption for modifier according to criteria_field
$modRowMap = array();

View File

@ -1156,7 +1156,7 @@ SQL;
*/
public function saveSmartBlockCriteria($p_criteria)
{
$data = $this->organizeSmartPlyalistCriteria($p_criteria);
$data = $this->organizeSmartPlaylistCriteria($p_criteria);
// saving dynamic/static flag
$blockType = $data['etc']['sp_type'] == 0 ? 'static':'dynamic';
$this->saveType($blockType);
@ -1224,6 +1224,16 @@ SQL;
}
}
// insert sort info
$qry = new CcBlockcriteria();
$qry->setDbCriteria("sort")
->setDbModifier("N/A")
->setDbValue($p_criteriaData['etc']['sp_sort_options'])
->setDbBlockId($this->id)
->save();
// insert limit info
$qry = new CcBlockcriteria();
$qry->setDbCriteria("limit")
@ -1231,7 +1241,8 @@ SQL;
->setDbValue($p_criteriaData['etc']['sp_limit_value'])
->setDbBlockId($this->id)
->save();
// insert repeate track option
$qry = new CcBlockcriteria();
$qry->setDbCriteria("repeat_tracks")
@ -1352,6 +1363,7 @@ SQL;
"isrc_number" => _("ISRC"),
"label" => _("Label"),
"language" => _("Language"),
"utime" => _("Upload Time"),
"mtime" => _("Last Modified"),
"lptime" => _("Last Played"),
"length" => _("Length"),
@ -1399,6 +1411,8 @@ SQL;
"display_modifier"=>_($modifier));
} else if($criteria == "repeat_tracks") {
$storedCrit["repeat_tracks"] = array("value"=>$value);
} else if($criteria == "sort") {
$storedCrit["sort"] = array("value"=>$value);
} else {
$storedCrit["crit"][$criteria][] = array(
"criteria"=>$criteria,
@ -1507,8 +1521,20 @@ SQL;
// check if file exists
$qry->add("file_exists", "true", Criteria::EQUAL);
$qry->add("hidden", "false", Criteria::EQUAL);
if (isset($storedCrit['sort'])) {
$sortTracks = $storedCrit['sort']['value'];
}
if ($sortTracks == 'newest') {
$qry->addDescendingOrderByColumn('utime');
}
else if ($sortTracks == 'oldest') {
$qry->addAscendingOrderByColumn('utime');
}
else {
$qry->addAscendingOrderByColumn('random()');
}
}
// construct limit restriction
$limits = array();
@ -1537,9 +1563,8 @@ SQL;
Logging::info($e);
}
}
public static function organizeSmartPlyalistCriteria($p_criteria)
{
public static function organizeSmartPlaylistCriteria($p_criteria)
{
$fieldNames = array('sp_criteria_field', 'sp_criteria_modifier', 'sp_criteria_value', 'sp_criteria_extra');
$output = array();
foreach ($p_criteria as $ele) {

View File

@ -1133,7 +1133,7 @@ SQL;
$start = $this->getNextRepeatingPopulateStartDateTime($showDay);
if (is_null($repeatInterval)&& $repeatType == REPEAT_MONTHLY_WEEKLY) {
$repeatInterval = $this->getMonthlyWeeklyRepeatInterval($start, $timezone);
$repeatInterval = self::getMonthlyWeeklyRepeatInterval($start, $timezone);
}
//DatePeriod in user's local time
@ -1236,7 +1236,7 @@ SQL;
// We will only need this if the repeat type is MONTHLY_WEEKLY
list($weekNumberOfMonth, $dayOfWeek) =
$this->getMonthlyWeeklyRepeatInterval(
self::getMonthlyWeeklyRepeatInterval(
new DateTime($first_show, new DateTimeZone($timezone)));
$this->repeatType = $showDay->getDbRepeatType();
@ -1296,7 +1296,7 @@ SQL;
$monthlyWeeklyStart = new DateTime($utcStartDateTime->format("Y-m"),
new DateTimeZone("UTC"));
$monthlyWeeklyStart->add(new DateInterval("P1M"));
$start = $this->getNextMonthlyWeeklyRepeatDate(
$start = self::getNextMonthlyWeeklyRepeatDate(
$monthlyWeeklyStart,
$timezone,
$showDay->getDbStartTime(),
@ -1318,7 +1318,7 @@ SQL;
* @param string $showStart
* @param string $timezone user's local timezone
*/
private function getMonthlyWeeklyRepeatInterval($showStart)
public static function getMonthlyWeeklyRepeatInterval($showStart)
{
$start = clone $showStart;
$dayOfMonth = $start->format("j");
@ -1393,7 +1393,7 @@ SQL;
* @param string (i.e. 'first', 'second') $weekNumberOfMonth
* @param string (i.e. 'Monday') $dayOfWeek
*/
private function getNextMonthlyWeeklyRepeatDate(
public static function getNextMonthlyWeeklyRepeatDate(
$start,
$timezone,
$startTime,

View File

@ -95,7 +95,18 @@
<?php endif; ?>
<br />
</dd>
<dd id='sp_sort-element'>
<span class='sp_text_font'>Sort tracks by</span>
<?php echo $this->element->getElement('sp_sort_options') ?>
<?php if($this->element->getElement("sp_sort_options")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_sort_options")->getMessages() as $error): ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
<?php endforeach; ?>
<?php endif; ?>
<br />
</dd>
<dd id='sp_limit-element'>
<span class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></span>
<?php echo $this->element->getElement('sp_limit_value')?>

View File

@ -99,6 +99,8 @@ msgid ""
"%1$s copyright &copy; %2$s All rights reserved.%3$sMaintained and "
"distributed under the %4$s by %5$s"
msgstr ""
"%1$s szerzői & másolási jog; %2$s Minden jog fenntartva.%3$sFejleszti és "
"forgalmazza %4$s alatt a %5$s"
#: airtime_mvc/application/layouts/scripts/livestream.phtml:9
#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:2
@ -1311,19 +1313,17 @@ msgstr "Állomás Logó:"
msgid "Send support feedback"
msgstr "Támogatási Visszajelzés Küldése"
#: airtime_mvc/application/forms/SupportSettings.php:121
#: airtime_mvc/application/forms/RegisterAirtime.php:126
#: airtime_mvc/application/forms/SupportSettings.php:122
#: airtime_mvc/application/forms/RegisterAirtime.php:126
#, php-format
msgid "Promote my station on %s"
msgstr ""
msgstr "Az állomásom közzététele a %s-on"
#: airtime_mvc/application/forms/SupportSettings.php:133
#: airtime_mvc/application/forms/RegisterAirtime.php:151
#: airtime_mvc/application/forms/SupportSettings.php:150
#: airtime_mvc/application/forms/RegisterAirtime.php:151
#, php-format
msgid "By checking this box, I agree to %s's %sprivacy policy%s."
msgstr ""
msgstr "A mező bejelölésével, elfogadom a %s %sadatvédelmi irányelveit%s."
#: airtime_mvc/application/forms/SupportSettings.php:156
#: airtime_mvc/application/forms/RegisterAirtime.php:169
@ -1364,7 +1364,7 @@ msgstr "Újraközvetítés?"
#: airtime_mvc/application/forms/AddShowLiveStream.php:10
#, php-format
msgid "Use %s Authentication:"
msgstr ""
msgstr "%s Hitelesítés Használata:"
#: airtime_mvc/application/forms/AddShowLiveStream.php:16
msgid "Use Custom Authentication:"
@ -3198,15 +3198,12 @@ msgstr "Az Ön számára nem érhető el az alábbi erőforrás."
msgid "You are not allowed to access this resource. "
msgstr "Az Ön számára nem érhető el az alábbi erőforrás."
#: airtime_mvc/application/controllers/ApiController.php:848
#: airtime_mvc/application/controllers/ApiController.php:868
#: airtime_mvc/application/controllers/ApiController.php:880
#: airtime_mvc/application/controllers/ApiController.php:771
#: airtime_mvc/application/controllers/ApiController.php:791
#: airtime_mvc/application/controllers/ApiController.php:803
#, php-format
msgid "File does not exist in %s"
msgstr ""
msgstr "A fájl nem elérhető itt: %s"
#: airtime_mvc/application/controllers/ApiController.php:931
#: airtime_mvc/application/controllers/ApiController.php:854
@ -3466,7 +3463,7 @@ msgstr "Memória"
#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:14
#, php-format
msgid "%s Version"
msgstr ""
msgstr "%s Verzió"
#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:30
msgid "Disk Space"
@ -3548,12 +3545,16 @@ msgid ""
"collected regularly in order to enhance your user experience.%2$sClick 'Yes, "
"help %1$s' and we'll make sure the features you use are constantly improving."
msgstr ""
"Segítsen az %1$s fejlesztésében, tudassa velünk az ötleteit. Az információk "
"gyűjtése fokozza a felhasználás élményét.%2$sKlikk 'Igen, segítek az %1$s-"
"nak' fejlesztésében, és igyekszek folyamatosan a funkciók használatának "
"javításain fáradozni. "
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:29
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:29
#, php-format
msgid "Click the box below to promote your station on %s."
msgstr ""
msgstr "Jelöld be a mezőt az állomásod közzétételéhez a %s-on."
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:67
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:81
@ -3604,6 +3605,8 @@ msgid ""
"Rescan watched directory (This is useful if it is network mount and may be "
"out of sync with %s)"
msgstr ""
"A figyelt mappa újraellenőrzése (Ez akkor hasznos, ha a hálózati csatolás "
"nincs szinkronban az %s-al)"
#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:44
msgid "Remove watched directory"
@ -3932,12 +3935,13 @@ msgstr "Hallgatói Statisztika"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:3
#, php-format
msgid "Welcome to %s!"
msgstr ""
msgstr "Üdvözöljük az %s-nál!"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:4
#, php-format
msgid "Here's how you can get started using %s to automate your broadcasts: "
msgstr ""
"Itt van, hogyan tudod elindítani adásaid automatizálását használva az %s-t:"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:7
msgid ""
@ -3997,11 +4001,13 @@ msgid ""
"%1$s %2$s, the open radio software for scheduling and remote station "
"management."
msgstr ""
"%1$s %2$s, a nyitott rádiós szoftver, az ütemezett és távoli állomás "
"menedzsment."
#: airtime_mvc/application/views/scripts/dashboard/about.phtml:22
#, php-format
msgid "%1$s %2$s is distributed under the %3$s"
msgstr ""
msgstr "%1$s %2$s-ot %3$s mellett terjesztik"
#: airtime_mvc/application/views/scripts/login/password-change.phtml:3
msgid "New password"
@ -4037,6 +4043,8 @@ msgid ""
"Welcome to the %s demo! You can log in using the username 'admin' and the "
"password 'admin'."
msgstr ""
"Üdvözöljük az %s demó változatában! Jelentkezzen be 'admin' "
"felhasználónévvel és 'admin' jelszóval."
#: airtime_mvc/application/views/scripts/partialviews/header.phtml:3
msgid "Previous:"
@ -4421,6 +4429,7 @@ msgstr ""
#: airtime_mvc/application/models/Scheduler.php:195
msgid "Cannot schedule a playlist that contains missing files."
msgstr ""
"Nem lehet ütemezni olyan lejátszási listát, amely tartalmaz hiányzó fájlokat."
#: airtime_mvc/application/models/Scheduler.php:216
#: airtime_mvc/application/models/Scheduler.php:305
@ -4480,7 +4489,7 @@ msgstr ""
#: airtime_mvc/application/models/Auth.php:36
#, php-format
msgid "%s Password Reset"
msgstr ""
msgstr "%s Jelszó Visszaállítás"
#: airtime_mvc/application/services/CalendarService.php:50
msgid "Record file doesn't exist"
@ -4679,11 +4688,16 @@ msgid ""
"the 'Send support feedback' box and we'll make sure the features you use are "
"constantly improving."
msgstr ""
"Segítse az %s fejlesztését azáltal, hogy a %s tudja, hogy Ön, hogyan "
"használja azt. Információk összegyűjtése céljából, rendszerezve azokat, hogy "
"fokozza a felhasználás élményét.%sKlikkeljen a 'Támogatási Visszajelzés "
"Küldése' mezőbe és győződjön meg arról, hogy a funkciók használatának "
"minősége folyamatosan javul."
#: airtime_mvc/application/views/scripts/partialviews/trialBox.phtml:9
#, php-format
msgid "Purchase your copy of %s"
msgstr ""
msgstr "Vásárolja meg az Ön %s másolatát"
#~ msgid "Promote my station on Sourcefabric.org"
#~ msgstr "Az állomásom közzététele a Sourcefabric.org-on"

View File

@ -10,6 +10,7 @@ body {
}
html, body {
height: 100%;
background: #7f7f7f;
}
#login-page {