diff --git a/CREDITS b/CREDITS index b52ae289e..e0dade73d 100644 --- a/CREDITS +++ b/CREDITS @@ -25,6 +25,7 @@ Community Contributors: John Chewter + Version 2.5.0 ------------- diff --git a/README b/README index 0c003c7e7..d83dbde3b 100644 --- a/README +++ b/README @@ -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 diff --git a/airtime_mvc/application/configs/constants.php b/airtime_mvc/application/configs/constants.php index 81b9040b7..818e868b5 100644 --- a/airtime_mvc/application/configs/constants.php +++ b/airtime_mvc/application/configs/constants.php @@ -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'); diff --git a/airtime_mvc/application/configs/navigation.php b/airtime_mvc/application/configs/navigation.php index e25fb7900..14438bdfe 100644 --- a/airtime_mvc/application/configs/navigation.php +++ b/airtime_mvc/application/configs/navigation.php @@ -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( diff --git a/airtime_mvc/application/forms/AddShowWhen.php b/airtime_mvc/application/forms/AddShowWhen.php index 43bba21f5..d6edbe0cd 100644 --- a/airtime_mvc/application/forms/AddShowWhen.php +++ b/airtime_mvc/application/forms/AddShowWhen.php @@ -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); + } } } } diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 990d5bde9..5423ab657 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -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(); diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 8ea3593b1..4f87cd928 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -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) { diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index 362f3a327..9bd509bb8 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -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, diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml index b0ccc274a..9da7ca765 100644 --- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml @@ -95,7 +95,18 @@
- +
+ Sort tracks by + element->getElement('sp_sort_options') ?> + element->getElement("sp_sort_options")->hasErrors()) : ?> + element->getElement("sp_sort_options")->getMessages() as $error): ?> + + + + + +
+
element->getElement('sp_limit_value')->getLabel() ?> element->getElement('sp_limit_value')?> diff --git a/airtime_mvc/locale/az/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/az/LC_MESSAGES/airtime.mo index 6785de678..b09021a2c 100644 Binary files a/airtime_mvc/locale/az/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/az/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo index 76942ed77..e07f4df00 100644 Binary files a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/en_GB/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/en_GB/LC_MESSAGES/airtime.mo index 4ca8d6170..9e6d68da7 100644 Binary files a/airtime_mvc/locale/en_GB/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/en_GB/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo index 6a2e72329..c07671388 100644 Binary files a/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.mo index 761abbc13..aa2396685 100644 Binary files a/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.po b/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.po index 5413355a8..e44998f99 100644 --- a/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/hu_HU/LC_MESSAGES/airtime.po @@ -99,6 +99,8 @@ msgid "" "%1$s copyright © %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" diff --git a/airtime_mvc/locale/hy_AM/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/hy_AM/LC_MESSAGES/airtime.mo index 114eb85d3..76a62ff71 100644 Binary files a/airtime_mvc/locale/hy_AM/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/hy_AM/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/ka/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/ka/LC_MESSAGES/airtime.mo index 1cd4bb1ac..6411fcaf9 100644 Binary files a/airtime_mvc/locale/ka/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/ka/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/locale/pt_BR/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/pt_BR/LC_MESSAGES/airtime.mo index abd94d09d..8267a2179 100644 Binary files a/airtime_mvc/locale/pt_BR/LC_MESSAGES/airtime.mo and b/airtime_mvc/locale/pt_BR/LC_MESSAGES/airtime.mo differ diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index f0f05219f..8f7be6018 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -10,6 +10,7 @@ body { } html, body { height: 100%; + background: #7f7f7f; } #login-page {