From e3761bd8d6b1d2fe53df1ed9c30106f45333daf9 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Mon, 3 Dec 2012 16:33:24 -0500 Subject: [PATCH 01/26] -make sure lsof works for files with spaces --- python_apps/media-monitor2/media/monitor/pure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/python_apps/media-monitor2/media/monitor/pure.py b/python_apps/media-monitor2/media/monitor/pure.py index a879f449f..8f1189bec 100644 --- a/python_apps/media-monitor2/media/monitor/pure.py +++ b/python_apps/media-monitor2/media/monitor/pure.py @@ -162,8 +162,7 @@ def walk_supported(directory, clean_empties=False): def file_locked(path): - cmd = "lsof %s" % path - f = Popen(cmd, shell=True, stdout=PIPE).stdout + f = Popen(["lsof", path], stdout=PIPE).stdout return bool(f.readlines()) def magic_move(old, new, after_dir_make=lambda : None): From 735ad304837695f8f5d72208899b2f223b399d3e Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Mon, 3 Dec 2012 16:56:11 -0500 Subject: [PATCH 02/26] CC-4726: Sometimes mm doesn't start after a fresh install -fixed --- python_apps/media-monitor2/media/monitor/pure.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python_apps/media-monitor2/media/monitor/pure.py b/python_apps/media-monitor2/media/monitor/pure.py index 8f1189bec..958e1d950 100644 --- a/python_apps/media-monitor2/media/monitor/pure.py +++ b/python_apps/media-monitor2/media/monitor/pure.py @@ -154,6 +154,9 @@ def walk_supported(directory, clean_empties=False): that support the extensions we are considering. When clean_empties is True we recursively delete empty directories left over in directory after the walk. """ + if directory is None: + return + for root, dirs, files in os.walk(directory): full_paths = ( os.path.join(root, name) for name in files if is_file_supported(name) ) From 43a80d74d9ca8a78e571d3f9e8b3fd38fc4cc3b7 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Tue, 4 Dec 2012 10:56:57 -0500 Subject: [PATCH 03/26] -added changelog for 2.2.1 release --- CREDITS | 21 +++++++++++++++++++++ changelog | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/CREDITS b/CREDITS index 2594f4dc5..02ff8e219 100644 --- a/CREDITS +++ b/CREDITS @@ -1,6 +1,27 @@ ======= CREDITS ======= + +Version 2.2.1 +------------- +Martin Konecny (martin.konecny@sourcefabric.org) + Role: Developer Team Lead + +James Moon (james.moon@sourcefabric.org) + Role: Software Developer + +Denise Rigato (denise.rigato@sourcefabric.org) + Role: Software Developer + +Cliff Wang (cliff.wang@sourcefabric.org) + Role: QA + +Mikayel Karapetian (michael.karapetian@sourcefabric.org) + Role: QA + +Daniel James (daniel.james@sourcefabric.org) + Role: Documentor & QA + Version 2.2.0 ------------- Martin Konecny (martin.konecny@sourcefabric.org) diff --git a/changelog b/changelog index 123d71e5f..386670903 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,15 @@ +2.2.1 - December 4th, 2012 + * Bug fixes + * Improved fades between webstreams + * Fix webstreams disconnecting occasionally + * Put 'and' and 'or' connectors between smart blocks + * Fix inability to preview webstreams in the Now Playing page on some + browsers + * Fix airtime-import script failing on FLAC files + * Fix DJ's being able to delete files they don't own + * Add support for 'x-scpls' webstream playlist types + * Fix media-monitor requiring a restart for initial import. + 2.2.0 - October 25th, 2012 * New features * Smart Playlists From e8207d6c7f93082b84096e40b013e1ae21d63e13 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Tue, 4 Dec 2012 11:00:04 -0500 Subject: [PATCH 04/26] -fix changelog indentation --- changelog | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/changelog b/changelog index 386670903..7438735ac 100644 --- a/changelog +++ b/changelog @@ -1,14 +1,14 @@ 2.2.1 - December 4th, 2012 * Bug fixes * Improved fades between webstreams - * Fix webstreams disconnecting occasionally - * Put 'and' and 'or' connectors between smart blocks - * Fix inability to preview webstreams in the Now Playing page on some - browsers - * Fix airtime-import script failing on FLAC files - * Fix DJ's being able to delete files they don't own - * Add support for 'x-scpls' webstream playlist types - * Fix media-monitor requiring a restart for initial import. + * Fix webstreams disconnecting occasionally + * Put 'and' and 'or' connectors between smart blocks + * Fix inability to preview webstreams in the Now Playing page on some + browsers + * Fix airtime-import script failing on FLAC files + * Fix DJ's being able to delete files they don't own + * Add support for 'x-scpls' webstream playlist types + * Fix media-monitor requiring a restart for initial import. 2.2.0 - October 25th, 2012 * New features From 713c3e82e4803f4c564e5b059dca082a2be1196d Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 10 Dec 2012 11:22:59 -0500 Subject: [PATCH 05/26] Corrections to French .po file --- .../locale/fr_FR/LC_MESSAGES/airtime.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.po b/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.po index 0af4cda26..133c21615 100644 --- a/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Airtime 2.3\n" "Report-Msgid-Bugs-To: http://forum.sourcefabric.org/\n" "POT-Creation-Date: 2012-11-29 11:44-0500\n" -"PO-Revision-Date: 2012-12-03 21:49+0100\n" +"PO-Revision-Date: 2012-12-08 13:56+0100\n" "Last-Translator: Albert Bruc \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" @@ -899,7 +899,7 @@ msgstr "Invité" #: airtime_mvc/application/forms/AddUser.php:87 #: airtime_mvc/application/controllers/LocaleController.php:307 msgid "DJ" -msgstr "DJ" +msgstr "DeaJee" #: airtime_mvc/application/forms/AddUser.php:88 #: airtime_mvc/application/controllers/LocaleController.php:308 @@ -1469,7 +1469,7 @@ msgid "" "front-end widgets work.)" msgstr "" "Autoriser les sites internet à acceder aux informations de la Programmation ?" -"%s (Activer cette option permetra aux widgets de fonctionner.)" +"%s (Activer cette option permettra aux widgets de fonctionner.)" #: airtime_mvc/application/forms/GeneralPreferences.php:49 msgid "Disabled" @@ -2098,16 +2098,16 @@ msgid "" "Check this box to automatically switch off Master/Show source upon source " "disconnection." msgstr "" -"Cochez cette case pour arrête automatiquement la source Maître/Emission " -"lors de la déconnexion." +"Cochez cette case arrête automatiquement la source Maître/Emission lors de " +"la déconnexion." #: airtime_mvc/application/controllers/LocaleController.php:176 msgid "" "Check this box to automatically switch on Master/Show source upon source " "connection." msgstr "" -"Cochez cette case pour démarrer automatiquement la source Maître/Emission " -"lors de la connexion." +"Cochez cette case démarre automatiquement la source Maître/Emission lors de " +"la connexion." #: airtime_mvc/application/controllers/LocaleController.php:177 msgid "" @@ -2750,7 +2750,7 @@ msgstr "Lecture Programmée" #: airtime_mvc/application/views/scripts/partialviews/header.phtml:54 msgid "ON AIR" -msgstr "EN DIRECT" +msgstr "DIRECT" #: airtime_mvc/application/views/scripts/partialviews/header.phtml:55 msgid "Listen" @@ -2879,7 +2879,7 @@ msgstr "Alors vous êtes prêt à démarrer!" #: airtime_mvc/application/views/scripts/dashboard/help.phtml:13 #, php-format msgid "For more detailed help, read the %suser manual%s." -msgstr "Pour une aide plus déraillée, lisez le %smanuel utilisateur%s." +msgstr "Pour une aide plus détaillée, lisez le %smanuel utilisateur%s." #: airtime_mvc/application/views/scripts/playlist/update.phtml:40 msgid "Expand Static Block" From e6cc0c3417a28c07217628b366a169cbe7041250 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 10 Dec 2012 11:28:27 -0500 Subject: [PATCH 06/26] Corrections to French .po file: recompiled .mo file --- .../locale/fr_FR/LC_MESSAGES/airtime.mo | Bin 59472 -> 59463 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/fr_FR/LC_MESSAGES/airtime.mo index 7b0ee472c4d5bc307ad841b9b3caa9a652552b2e..fed2d5dd4d2f5dc5145f3d4a2a142aae76a2c9e9 100644 GIT binary patch delta 5352 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 Og3b+!b{_mo!v6v2C$t^_ delta 5363 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 T|9*GB*4{%#MwRcVT9@#DXuGcY From dd5882984e8e01247d54c0abecff426bc88c956f Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 10 Dec 2012 16:55:44 -0500 Subject: [PATCH 07/26] CC-4736: Let non-admin users update their user info -done but needs design --- airtime_mvc/application/Bootstrap.php | 3 +- airtime_mvc/application/configs/ACL.php | 1 + .../controllers/UserController.php | 44 ++++++++++++++ .../application/layouts/scripts/layout.phtml | 4 +- airtime_mvc/public/css/styles.css | 4 ++ .../public/js/airtime/dashboard/dashboard.js | 58 +++++++++++++++++++ 6 files changed, 112 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index 6a7a2c896..df1ab8475 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -88,6 +88,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headLink()->appendStylesheet($baseUrl.'/css/styles.css?'.$CC_CONFIG['airtime_version']); $view->headLink()->appendStylesheet($baseUrl.'/css/masterpanel.css?'.$CC_CONFIG['airtime_version']); $view->headLink()->appendStylesheet($baseUrl.'/css/bootstrap.css?'.$CC_CONFIG['airtime_version']); + $view->headLink()->appendStylesheet($baseUrl.'/css/tipsy/jquery.tipsy.css?'.$CC_CONFIG['airtime_version']); } protected function _initHeadScript() @@ -116,7 +117,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/helperfunctions.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/dashboard.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/versiontooltip.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); - + $view->headScript()->appendFile($baseUrl.'/js/tipsy/jquery.tipsy.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/common/audioplaytest.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); diff --git a/airtime_mvc/application/configs/ACL.php b/airtime_mvc/application/configs/ACL.php index 46ec0c6a3..a23846a99 100644 --- a/airtime_mvc/application/configs/ACL.php +++ b/airtime_mvc/application/configs/ACL.php @@ -33,6 +33,7 @@ $ccAcl->add(new Zend_Acl_Resource('library')) $ccAcl->allow('G', 'index') ->allow('G', 'login') ->allow('G', 'error') + ->allow('G', 'user', 'edit-user') ->allow('G', 'showbuilder') ->allow('G', 'api') ->allow('G', 'schedule') diff --git a/airtime_mvc/application/controllers/UserController.php b/airtime_mvc/application/controllers/UserController.php index b04a6e98b..d5ee57e2f 100644 --- a/airtime_mvc/application/controllers/UserController.php +++ b/airtime_mvc/application/controllers/UserController.php @@ -10,6 +10,7 @@ class UserController extends Zend_Controller_Action ->addActionContext('get-user-data-table-info', 'json') ->addActionContext('get-user-data', 'json') ->addActionContext('remove-user', 'json') + ->addActionContext('edit-user', 'json') ->initContext(); } @@ -114,6 +115,49 @@ class UserController extends Zend_Controller_Action $id = $this->_getParam('id'); $this->view->entries = Application_Model_User::GetUserData($id); } + + public function editUserAction() + { + $request = $this->getRequest(); + $form = new Application_Form_EditUser(); + if ($request->isPost()) { + $params = $request->getPost(); + $postData = explode('&', $params['data']); + foreach($postData as $k=>$v) { + $v = explode('=', $v); + $formData[$v[0]] = urldecode($v[1]); + } + + if (isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1 + && $formData['cu_login'] == 'admin') { + $this->view->form = $form; + $this->view->successMessage = "
"._("Specific action is not allowed in demo version!")."
"; + die(json_encode(array("html"=>$this->view->render('user/edit-user.phtml')))); + } else if ($form->isValid($formData) && + $form->validateLogin($formData['cu_login'], $formData['cu_user_id'])) { + $user = new Application_Model_User($formData['cu_user_id']); + $user->setFirstName($formData['cu_first_name']); + $user->setLastName($formData['cu_last_name']); + $user->setLogin($formData['cu_login']); + // We don't allow 6 x's as a password. + // The reason is because we use that as a password placeholder + // on the client side. + if ($formData['cu_password'] != "xxxxxx") { + $user->setPassword($formData['cu_password']); + } + $user->setEmail($formData['cu_email']); + $user->setCellPhone($formData['cu_cell_phone']); + $user->setSkype($formData['cu_skype']); + $user->setJabber($formData['cu_jabber']); + $user->save(); + $this->view->successMessage = "
"._("User updated successfully!")."
"; + } + $this->view->form = $form; + die(json_encode(array("html"=>$this->view->render('user/edit-user.phtml')))); + } + $this->view->form = $form; + $this->view->html = $this->view->render('user/edit-user.phtml'); + } public function removeUserAction() { diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index 80951b748..e65791153 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -23,7 +23,9 @@ $this->navigation()->menu()->setPartial($partial); ?>
diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 9b5fbfdee..9b3ee10a2 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -93,6 +93,10 @@ select { } /* Version Notification Ends*/ +#current-user-container { + padding-bottom: 20px; +} + .override_help_icon, .icecast_metadata_help_icon { cursor: help; position: relative; diff --git a/airtime_mvc/public/js/airtime/dashboard/dashboard.js b/airtime_mvc/public/js/airtime/dashboard/dashboard.js index b7d7054e6..1790b055d 100644 --- a/airtime_mvc/public/js/airtime/dashboard/dashboard.js +++ b/airtime_mvc/public/js/airtime/dashboard/dashboard.js @@ -441,7 +441,65 @@ function init() { }); } +/* We never retrieve the user's password from the db + * and when we call isValid($params) the form values are cleared + * and repopulated with $params which does not have the password + * field. Therefore, we fill the password field with 6 x's + */ +function setCurrentUserPseudoPassword() { + $('#cu_password').val("xxxxxx"); +} + $(document).ready(function() { if ($('#master-panel').length > 0) init(); + + var timer; + + $('.tipsy').live('mouseover', function() { + clearTimeout(timer); + }); + + $('.tipsy').live('mouseout', function() { + timer = setTimeout("$('#current-user').tipsy('hide')", 500); + }); + + $('#current-user').bind('mouseover', function() { + $.ajax({ + url: baseUrl+'/user/edit-user/format/json', + dataType: 'json', + success: function(json) { + $('#current-user').tipsy({ + gravity: 'n', + html: true, + fade: true, + opacity: 0.9, + trigger: 'manual', + title: function() { + return json.html; + } + }); + }, + cache: false, + complete: function() { + $('#current-user').tipsy('show'); + setCurrentUserPseudoPassword(); + } + }); + + }); + + $('#current-user').bind('mouseout', function() { + timer = setTimeout("$('#current-user').tipsy('hide')", 500); + }); + + $('#cu_save_user').live('click', function() { + var data = $('#current-user-form').serialize(); + $.post(baseUrl+'/user/edit-user', {format: 'json', data: data}, function(data) { + var json = $.parseJSON(data); + $('#current-user-container').empty().append(json.html); + setCurrentUserPseudoPassword(); + setTimeout(removeSuccessMsg, 5000); + }); + }) }); From f12547dfb43a4f5869286440e85c55f81e6b1474 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 10 Dec 2012 16:56:25 -0500 Subject: [PATCH 08/26] CC-4736: Let non-admin users update their user info new form --- airtime_mvc/application/forms/EditUser.php | 116 ++++++++++++++++++ .../views/scripts/user/edit-user.phtml | 5 + 2 files changed, 121 insertions(+) create mode 100644 airtime_mvc/application/forms/EditUser.php create mode 100644 airtime_mvc/application/views/scripts/user/edit-user.phtml diff --git a/airtime_mvc/application/forms/EditUser.php b/airtime_mvc/application/forms/EditUser.php new file mode 100644 index 000000000..41679b785 --- /dev/null +++ b/airtime_mvc/application/forms/EditUser.php @@ -0,0 +1,116 @@ +addElementPrefixPath('Application_Validate', + '../application/validate', + 'validate'); + * */ + + $currentUser = Application_Model_User::getCurrentUser(); + $userData = Application_Model_User::GetUserData($currentUser->getId()); + $notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator(); + $emailValidator = Application_Form_Helper_ValidationTypes::overrideEmailAddressValidator(); +/* + $this->setDecorators(array( + array('ViewScript', array('viewScript' => 'form/edit-user.phtml')))); +*/ + $this->setAttrib('id', 'current-user-form'); + + $hidden = new Zend_Form_Element_Hidden('cu_user_id'); + $hidden->setDecorators(array('ViewHelper')); + $hidden->setValue($userData["id"]); + $this->addElement($hidden); + + $login = new Zend_Form_Element_Text('cu_login'); + $login->setLabel(_('Username:')); + $login->setValue($userData["login"]); + $login->setAttrib('class', 'input_text'); + $login->setRequired(true); + $login->addValidator($notEmptyValidator); + $login->addFilter('StringTrim'); + //$login->setDecorators(array('viewHelper')); + //$login->addValidator('UserNameValidate'); + $this->addElement($login); + + $password = new Zend_Form_Element_Password('cu_password'); + $password->setLabel(_('Password:')); + $password->setAttrib('class', 'input_text'); + $password->setRequired(true); + $password->addFilter('StringTrim'); + $password->addValidator($notEmptyValidator); + $this->addElement($password); + + $firstName = new Zend_Form_Element_Text('cu_first_name'); + $firstName->setLabel(_('Firstname:')); + $firstName->setValue($userData["first_name"]); + $firstName->setAttrib('class', 'input_text'); + $firstName->addFilter('StringTrim'); + $firstName->addValidator($notEmptyValidator); + $this->addElement($firstName); + + $lastName = new Zend_Form_Element_Text('cu_last_name'); + $lastName->setLabel(_('Lastname:')); + $lastName->setValue($userData["last_name"]); + $lastName->setAttrib('class', 'input_text'); + $lastName->addFilter('StringTrim'); + $lastName->addValidator($notEmptyValidator); + $this->addElement($lastName); + + $email = new Zend_Form_Element_Text('cu_email'); + $email->setLabel(_('Email:')); + $email->setValue($userData["email"]); + $email->setAttrib('class', 'input_text'); + $email->addFilter('StringTrim'); + $email->setRequired(true); + $email->addValidator($notEmptyValidator); + $email->addValidator($emailValidator); + $this->addElement($email); + + $cellPhone = new Zend_Form_Element_Text('cu_cell_phone'); + $cellPhone->setLabel(_('Mobile Phone:')); + $cellPhone->setValue($userData["cell_phone"]); + $cellPhone->setAttrib('class', 'input_text'); + $cellPhone->addFilter('StringTrim'); + $this->addElement($cellPhone); + + $skype = new Zend_Form_Element_Text('cu_skype'); + $skype->setLabel(_('Skype:')); + $skype->setValue($userData["skype_contact"]); + $skype->setAttrib('class', 'input_text'); + $skype->addFilter('StringTrim'); + $this->addElement($skype); + + $jabber = new Zend_Form_Element_Text('cu_jabber'); + $jabber->setLabel(_('Jabber:')); + $jabber->setValue($userData["jabber_contact"]); + $jabber->setAttrib('class', 'input_text'); + $jabber->addFilter('StringTrim'); + $jabber->addValidator($emailValidator); + $this->addElement($jabber); + + $saveBtn = new Zend_Form_Element_Button('cu_save_user'); + $saveBtn->setAttrib('class', 'btn btn-small right-floated'); + $saveBtn->setIgnore(true); + $saveBtn->setLabel(_('Save')); + $this->addElement($saveBtn); + } + + public function validateLogin($p_login, $p_userId) { + $count = CcSubjsQuery::create() + ->filterByDbLogin($p_login) + ->filterByDbId($p_userId, Criteria::NOT_EQUAL) + ->count(); + + if ($count != 0) { + $this->getElement('cu_login')->setErrors(array(_("Login name is not unique."))); + return false; + } else { + return true; + } + } +} diff --git a/airtime_mvc/application/views/scripts/user/edit-user.phtml b/airtime_mvc/application/views/scripts/user/edit-user.phtml new file mode 100644 index 000000000..926feb3cc --- /dev/null +++ b/airtime_mvc/application/views/scripts/user/edit-user.phtml @@ -0,0 +1,5 @@ + +successMessage ?> +
+form?> +
From 854eccfb76e4784e251e5982d0a71eab39b9a300 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Dec 2012 11:30:59 -0500 Subject: [PATCH 09/26] CC-4736: Let non-admin users update their user info Adding jquery tipsy plugin --- airtime_mvc/public/css/tipsy/jquery.tipsy.css | 25 ++ airtime_mvc/public/js/tipsy/jquery.tipsy.js | 258 ++++++++++++++++++ .../public/js/tipsy/jquery.tipsy.min.js | 1 + 3 files changed, 284 insertions(+) create mode 100644 airtime_mvc/public/css/tipsy/jquery.tipsy.css create mode 100644 airtime_mvc/public/js/tipsy/jquery.tipsy.js create mode 100644 airtime_mvc/public/js/tipsy/jquery.tipsy.min.js diff --git a/airtime_mvc/public/css/tipsy/jquery.tipsy.css b/airtime_mvc/public/css/tipsy/jquery.tipsy.css new file mode 100644 index 000000000..1fa10e48c --- /dev/null +++ b/airtime_mvc/public/css/tipsy/jquery.tipsy.css @@ -0,0 +1,25 @@ +.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; width: 270px } + .tipsy-inner { background-color: #000; color: #FFF; max-width: 300px; padding: 5px 8px 4px 8px; text-align: center; } + + /* Rounded corners */ + .tipsy-inner { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; } + + /* Uncomment for shadow */ + /*.tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }*/ + + .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #000; } + + /* Rules to colour arrows */ + .tipsy-arrow-n { border-bottom-color: #000; } + .tipsy-arrow-s { border-top-color: #000; } + .tipsy-arrow-e { border-left-color: #000; } + .tipsy-arrow-w { border-right-color: #000; } + + .tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; } + .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;} + .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;} + .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; } + .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; } + .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; } + .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; } + .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; } \ No newline at end of file diff --git a/airtime_mvc/public/js/tipsy/jquery.tipsy.js b/airtime_mvc/public/js/tipsy/jquery.tipsy.js new file mode 100644 index 000000000..e0643f82e --- /dev/null +++ b/airtime_mvc/public/js/tipsy/jquery.tipsy.js @@ -0,0 +1,258 @@ +// tipsy, facebook style tooltips for jquery +// version 1.0.0a +// (c) 2008-2010 jason frame [jason@onehackoranother.com] +// released under the MIT license + +(function($) { + + function maybeCall(thing, ctx) { + return (typeof thing == 'function') ? (thing.call(ctx)) : thing; + }; + + function isElementInDOM(ele) { + while (ele = ele.parentNode) { + if (ele == document) return true; + } + return false; + }; + + function Tipsy(element, options) { + this.$element = $(element); + this.options = options; + this.enabled = true; + this.fixTitle(); + }; + + Tipsy.prototype = { + show: function() { + var title = this.getTitle(); + if (title && this.enabled) { + var $tip = this.tip(); + + $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title); + $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity + $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body); + + var pos = $.extend({}, this.$element.offset(), { + width: this.$element[0].offsetWidth, + height: this.$element[0].offsetHeight + }); + + var actualWidth = $tip[0].offsetWidth, + actualHeight = $tip[0].offsetHeight, + gravity = maybeCall(this.options.gravity, this.$element[0]); + + var tp; + switch (gravity.charAt(0)) { + case 'n': + tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; + break; + case 's': + tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; + break; + case 'e': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}; + break; + case 'w': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}; + break; + } + + if (gravity.length == 2) { + if (gravity.charAt(1) == 'w') { + tp.left = pos.left + pos.width / 2 - 15; + } else { + tp.left = pos.left + pos.width / 2 - actualWidth + 15; + } + } + + $tip.css(tp).addClass('tipsy-' + gravity); + $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0); + if (this.options.className) { + $tip.addClass(maybeCall(this.options.className, this.$element[0])); + } + + if (this.options.fade) { + $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}); + } else { + $tip.css({visibility: 'visible', opacity: this.options.opacity}); + } + } + }, + + hide: function() { + if (this.options.fade) { + this.tip().stop().fadeOut(function() { $(this).remove(); }); + } else { + this.tip().remove(); + } + }, + + fixTitle: function() { + var $e = this.$element; + if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') { + $e.attr('original-title', $e.attr('title') || '').removeAttr('title'); + } + }, + + getTitle: function() { + var title, $e = this.$element, o = this.options; + this.fixTitle(); + var title, o = this.options; + if (typeof o.title == 'string') { + title = $e.attr(o.title == 'title' ? 'original-title' : o.title); + } else if (typeof o.title == 'function') { + title = o.title.call($e[0]); + } + title = ('' + title).replace(/(^\s*|\s*$)/, ""); + return title || o.fallback; + }, + + tip: function() { + if (!this.$tip) { + this.$tip = $('
').html('
'); + this.$tip.data('tipsy-pointee', this.$element[0]); + } + return this.$tip; + }, + + validate: function() { + if (!this.$element[0].parentNode) { + this.hide(); + this.$element = null; + this.options = null; + } + }, + + enable: function() { this.enabled = true; }, + disable: function() { this.enabled = false; }, + toggleEnabled: function() { this.enabled = !this.enabled; } + }; + + $.fn.tipsy = function(options) { + + if (options === true) { + return this.data('tipsy'); + } else if (typeof options == 'string') { + var tipsy = this.data('tipsy'); + if (tipsy) tipsy[options](); + return this; + } + + options = $.extend({}, $.fn.tipsy.defaults, options); + + function get(ele) { + var tipsy = $.data(ele, 'tipsy'); + if (!tipsy) { + tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); + $.data(ele, 'tipsy', tipsy); + } + return tipsy; + } + + function enter() { + var tipsy = get(this); + tipsy.hoverState = 'in'; + if (options.delayIn == 0) { + tipsy.show(); + } else { + tipsy.fixTitle(); + setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn); + } + }; + + function leave() { + var tipsy = get(this); + tipsy.hoverState = 'out'; + if (options.delayOut == 0) { + tipsy.hide(); + } else { + setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut); + } + }; + + if (!options.live) this.each(function() { get(this); }); + + if (options.trigger != 'manual') { + var binder = options.live ? 'live' : 'bind', + eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', + eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; + this[binder](eventIn, enter)[binder](eventOut, leave); + } + + return this; + + }; + + $.fn.tipsy.defaults = { + className: null, + delayIn: 0, + delayOut: 0, + fade: false, + fallback: '', + gravity: 'n', + html: false, + live: false, + offset: 0, + opacity: 0.8, + title: 'title', + trigger: 'hover' + }; + + $.fn.tipsy.revalidate = function() { + $('.tipsy').each(function() { + var pointee = $.data(this, 'tipsy-pointee'); + if (!pointee || !isElementInDOM(pointee)) { + $(this).remove(); + } + }); + }; + + // Overwrite this method to provide options on a per-element basis. + // For example, you could store the gravity in a 'tipsy-gravity' attribute: + // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); + // (remember - do not modify 'options' in place!) + $.fn.tipsy.elementOptions = function(ele, options) { + return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; + }; + + $.fn.tipsy.autoNS = function() { + return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; + }; + + $.fn.tipsy.autoWE = function() { + return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; + }; + + /** + * yields a closure of the supplied parameters, producing a function that takes + * no arguments and is suitable for use as an autogravity function like so: + * + * @param margin (int) - distance from the viewable region edge that an + * element should be before setting its tooltip's gravity to be away + * from that edge. + * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer + * if there are no viewable region edges effecting the tooltip's + * gravity. It will try to vary from this minimally, for example, + * if 'sw' is preferred and an element is near the right viewable + * region edge, but not the top edge, it will set the gravity for + * that element's tooltip to be 'se', preserving the southern + * component. + */ + $.fn.tipsy.autoBounds = function(margin, prefer) { + return function() { + var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)}, + boundTop = $(document).scrollTop() + margin, + boundLeft = $(document).scrollLeft() + margin, + $this = $(this); + + if ($this.offset().top < boundTop) dir.ns = 'n'; + if ($this.offset().left < boundLeft) dir.ew = 'w'; + if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e'; + if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's'; + + return dir.ns + (dir.ew ? dir.ew : ''); + } + }; + +})(jQuery); \ No newline at end of file diff --git a/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js b/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js new file mode 100644 index 000000000..0cf2b2598 --- /dev/null +++ b/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js @@ -0,0 +1 @@ +(function(e){function t(e,t){return typeof e=="function"?e.call(t):e}function n(e){while(e=e.parentNode){if(e==document)return true}return false}function r(t,n){this.$element=e(t);this.options=n;this.enabled=true;this.fixTitle()}r.prototype={show:function(){var n=this.getTitle();if(n&&this.enabled){var r=this.tip();r.find(".tipsy-inner")[this.options.html?"html":"text"](n);r[0].className="tipsy";r.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).prependTo(document.body);var i=e.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight});var s=r[0].offsetWidth,o=r[0].offsetHeight,u=t(this.options.gravity,this.$element[0]);var a;switch(u.charAt(0)){case"n":a={top:i.top+i.height+this.options.offset,left:i.left+i.width/2-s/2};break;case"s":a={top:i.top-o-this.options.offset,left:i.left+i.width/2-s/2};break;case"e":a={top:i.top+i.height/2-o/2,left:i.left-s-this.options.offset};break;case"w":a={top:i.top+i.height/2-o/2,left:i.left+i.width+this.options.offset};break}if(u.length==2){if(u.charAt(1)=="w"){a.left=i.left+i.width/2-15}else{a.left=i.left+i.width/2-s+15}}r.css(a).addClass("tipsy-"+u);r.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+u.charAt(0);if(this.options.className){r.addClass(t(this.options.className,this.$element[0]))}if(this.options.fade){r.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity})}else{r.css({visibility:"visible",opacity:this.options.opacity})}}},hide:function(){if(this.options.fade){this.tip().stop().fadeOut(function(){e(this).remove()})}else{this.tip().remove()}},fixTitle:function(){var e=this.$element;if(e.attr("title")||typeof e.attr("original-title")!="string"){e.attr("original-title",e.attr("title")||"").removeAttr("title")}},getTitle:function(){var e,t=this.$element,n=this.options;this.fixTitle();var e,n=this.options;if(typeof n.title=="string"){e=t.attr(n.title=="title"?"original-title":n.title)}else if(typeof n.title=="function"){e=n.title.call(t[0])}e=(""+e).replace(/(^\s*|\s*$)/,"");return e||n.fallback},tip:function(){if(!this.$tip){this.$tip=e('
').html('
');this.$tip.data("tipsy-pointee",this.$element[0])}return this.$tip},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled}};e.fn.tipsy=function(t){function i(n){var i=e.data(n,"tipsy");if(!i){i=new r(n,e.fn.tipsy.elementOptions(n,t));e.data(n,"tipsy",i)}return i}function s(){var e=i(this);e.hoverState="in";if(t.delayIn==0){e.show()}else{e.fixTitle();setTimeout(function(){if(e.hoverState=="in")e.show()},t.delayIn)}}function o(){var e=i(this);e.hoverState="out";if(t.delayOut==0){e.hide()}else{setTimeout(function(){if(e.hoverState=="out")e.hide()},t.delayOut)}}if(t===true){return this.data("tipsy")}else if(typeof t=="string"){var n=this.data("tipsy");if(n)n[t]();return this}t=e.extend({},e.fn.tipsy.defaults,t);if(!t.live)this.each(function(){i(this)});if(t.trigger!="manual"){var u=t.live?"live":"bind",a=t.trigger=="hover"?"mouseenter":"focus",f=t.trigger=="hover"?"mouseleave":"blur";this[u](a,s)[u](f,o)}return this};e.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:false,fallback:"",gravity:"n",html:false,live:false,offset:0,opacity:.8,title:"title",trigger:"hover"};e.fn.tipsy.revalidate=function(){e(".tipsy").each(function(){var t=e.data(this,"tipsy-pointee");if(!t||!n(t)){e(this).remove()}})};e.fn.tipsy.elementOptions=function(t,n){return e.metadata?e.extend({},n,e(t).metadata()):n};e.fn.tipsy.autoNS=function(){return e(this).offset().top>e(document).scrollTop()+e(window).height()/2?"s":"n"};e.fn.tipsy.autoWE=function(){return e(this).offset().left>e(document).scrollLeft()+e(window).width()/2?"e":"w"};e.fn.tipsy.autoBounds=function(t,n){return function(){var r={ns:n[0],ew:n.length>1?n[1]:false},i=e(document).scrollTop()+t,s=e(document).scrollLeft()+t,o=e(this);if(o.offset().top Date: Tue, 11 Dec 2012 18:08:37 -0500 Subject: [PATCH 10/26] Modified jquery tipsy css --- airtime_mvc/public/css/tipsy/jquery.tipsy.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/public/css/tipsy/jquery.tipsy.css b/airtime_mvc/public/css/tipsy/jquery.tipsy.css index 1fa10e48c..836b6e69d 100644 --- a/airtime_mvc/public/css/tipsy/jquery.tipsy.css +++ b/airtime_mvc/public/css/tipsy/jquery.tipsy.css @@ -1,5 +1,5 @@ -.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; width: 270px } - .tipsy-inner { background-color: #000; color: #FFF; max-width: 300px; padding: 5px 8px 4px 8px; text-align: center; } +.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; width: auto } + .tipsy-inner { background-color: #000; color: #FFF; max-width: 300px; padding: 5px 8px 4px 5px; } /* Rounded corners */ .tipsy-inner { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; } From 076a1c56cbc1377117eefb2ecbe2d326d0189aec Mon Sep 17 00:00:00 2001 From: denise Date: Thu, 13 Dec 2012 12:29:02 -0500 Subject: [PATCH 11/26] CC-2258: Describe rights for each user type on the user page --- airtime_mvc/application/Bootstrap.php | 2 +- airtime_mvc/public/css/tipsy/jquery.tipsy.css | 2 +- airtime_mvc/public/js/airtime/user/user.js | 76 +++++- .../public/js/tipsy/AIRTIME_DEV_README | 23 ++ airtime_mvc/public/js/tipsy/jquery.tipsy.js | 10 +- .../public/js/tipsy/jquery.tipsy.min.js | 1 - .../public/js/tipsy/jquery.tipsy_orig.js | 258 ++++++++++++++++++ 7 files changed, 362 insertions(+), 10 deletions(-) create mode 100644 airtime_mvc/public/js/tipsy/AIRTIME_DEV_README delete mode 100644 airtime_mvc/public/js/tipsy/jquery.tipsy.min.js create mode 100644 airtime_mvc/public/js/tipsy/jquery.tipsy_orig.js diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index df1ab8475..62679c8b0 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -117,7 +117,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/helperfunctions.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/dashboard.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/versiontooltip.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/tipsy/jquery.tipsy.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/tipsy/jquery.tipsy.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $view->headScript()->appendFile($baseUrl.'/js/airtime/common/audioplaytest.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); diff --git a/airtime_mvc/public/css/tipsy/jquery.tipsy.css b/airtime_mvc/public/css/tipsy/jquery.tipsy.css index 836b6e69d..35136464b 100644 --- a/airtime_mvc/public/css/tipsy/jquery.tipsy.css +++ b/airtime_mvc/public/css/tipsy/jquery.tipsy.css @@ -1,4 +1,4 @@ -.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; width: auto } +.tipsy { font-size: 11px; position: absolute; padding: 5px; z-index: 100000; width: auto } .tipsy-inner { background-color: #000; color: #FFF; max-width: 300px; padding: 5px 8px 4px 5px; } /* Rounded corners */ diff --git a/airtime_mvc/public/js/airtime/user/user.js b/airtime_mvc/public/js/airtime/user/user.js index 35d4e16dd..3fff79ef6 100644 --- a/airtime_mvc/public/js/airtime/user/user.js +++ b/airtime_mvc/public/js/airtime/user/user.js @@ -94,8 +94,82 @@ function populateUserTable() { $(document).ready(function() { populateUserTable(); + + //assign user-rights and id to each user type option so we can + //display user rights for each with tipsy tooltip + $.each($('#type').children(), function(i, opt) { + switch ($(this).val()) { + case 'G': + $(this).attr('id', 'user-type-G'); + $(this).attr('user-rights', + $.i18n._('Guests can do the following:')+'

'+ + $.i18n._('View schedule')+'
'+ + $.i18n._('View current playing tracks') + ); + break; + case 'H': + $(this).attr('id', 'user-type-H'); + $(this).attr('user-rights', + $.i18n._('DJs can do the following:')+'

'+ + $.i18n._('View schedule')+'
'+ + $.i18n._('View current playing tracks')+'
'+ + $.i18n._('Manage assigned show content')+'
'+ + $.i18n._('Import media files')+'
'+ + $.i18n._('Manage their own library content')+'
'+ + $.i18n._('Create playlists, smart blocks, and webstreams') + ); + break; + case 'P': + $(this).attr('id', 'user-type-P'); + $(this).attr('user-rights', + $.i18n._('Progam Managers can do the following:')+'

'+ + $.i18n._('View schedule')+'
'+ + $.i18n._('Schedule shows')+'
'+ + $.i18n._('Import media files')+'
'+ + $.i18n._('Manage all library content')+'
'+ + $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ + $.i18n._('Manage show content') + ); + break; + case 'A': + $(this).attr('id', 'user-type-A'); + $(this).attr('user-rights', + $.i18n._('Admins can do the following:')+'

'+ + $.i18n._('Manage preferences')+'
'+ + $.i18n._('Manage users')+'
'+ + $.i18n._('Manage watched folders')+'
'+ + $.i18n._('Send support feedback')+'
'+ + $.i18n._('View system status')+'
'+ + $.i18n._('Access playout history')+'
'+ + $.i18n._('View listener stats')+'
'+ + $.i18n._('View schedule')+'
'+ + $.i18n._('Schedule shows')+'
'+ + $.i18n._('Import media files')+'
'+ + $.i18n._('Manage all library content')+'
'+ + $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ + $.i18n._('Manage show content') + ); + break; + } + }); + + $('#type').live("change", function(){ + //when the title changes on live tipsy tooltips the changes take + //affect the next time tipsy is shown so we need to hide and re-show it + $(this).tipsy('hide').tipsy('show'); + }); - //$('#user_details').hide(); + $('#type').tipsy({ + gravity: 'w', + html: true, + trigger: 'manual', + live: true, + title: function() { + return $('#user-type-'+$(this).val()).attr('user-rights'); + } + }); + + $('#type').tipsy('show'); var newUser = {login:"", first_name:"", last_name:"", type:"G", id:""}; diff --git a/airtime_mvc/public/js/tipsy/AIRTIME_DEV_README b/airtime_mvc/public/js/tipsy/AIRTIME_DEV_README new file mode 100644 index 000000000..72ec196c4 --- /dev/null +++ b/airtime_mvc/public/js/tipsy/AIRTIME_DEV_README @@ -0,0 +1,23 @@ +Before overwriting jquery.tipsy.js, please note we have changed a few lines to +support manual triggering with live tipsy tooltips + + +denise@denise-DX4860:~/airtime/airtime_mvc/public/js/tipsy$ diff -u jquery.tipsy_orig.js jquery.tipsy.js +--- jquery.tipsy_orig.js 2012-12-13 12:03:48.780751104 -0500 ++++ jquery.tipsy.js 2012-12-13 12:08:15.564761493 -0500 +@@ -173,12 +173,10 @@ + + if (!options.live) this.each(function() { get(this); }); + +- if (options.trigger != 'manual') { +- var binder = options.live ? 'live' : 'bind', +- eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', +- eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; +- this[binder](eventIn, enter)[binder](eventOut, leave); +- } ++ var binder = options.live ? 'live' : 'bind', ++ eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', ++ eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; ++ this[binder](eventIn, enter)[binder](eventOut, leave); + + return this; diff --git a/airtime_mvc/public/js/tipsy/jquery.tipsy.js b/airtime_mvc/public/js/tipsy/jquery.tipsy.js index e0643f82e..0aeadb65f 100644 --- a/airtime_mvc/public/js/tipsy/jquery.tipsy.js +++ b/airtime_mvc/public/js/tipsy/jquery.tipsy.js @@ -173,12 +173,10 @@ if (!options.live) this.each(function() { get(this); }); - if (options.trigger != 'manual') { - var binder = options.live ? 'live' : 'bind', - eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', - eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; - this[binder](eventIn, enter)[binder](eventOut, leave); - } + var binder = options.live ? 'live' : 'bind', + eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', + eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; + this[binder](eventIn, enter)[binder](eventOut, leave); return this; diff --git a/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js b/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js deleted file mode 100644 index 0cf2b2598..000000000 --- a/airtime_mvc/public/js/tipsy/jquery.tipsy.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){function t(e,t){return typeof e=="function"?e.call(t):e}function n(e){while(e=e.parentNode){if(e==document)return true}return false}function r(t,n){this.$element=e(t);this.options=n;this.enabled=true;this.fixTitle()}r.prototype={show:function(){var n=this.getTitle();if(n&&this.enabled){var r=this.tip();r.find(".tipsy-inner")[this.options.html?"html":"text"](n);r[0].className="tipsy";r.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).prependTo(document.body);var i=e.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight});var s=r[0].offsetWidth,o=r[0].offsetHeight,u=t(this.options.gravity,this.$element[0]);var a;switch(u.charAt(0)){case"n":a={top:i.top+i.height+this.options.offset,left:i.left+i.width/2-s/2};break;case"s":a={top:i.top-o-this.options.offset,left:i.left+i.width/2-s/2};break;case"e":a={top:i.top+i.height/2-o/2,left:i.left-s-this.options.offset};break;case"w":a={top:i.top+i.height/2-o/2,left:i.left+i.width+this.options.offset};break}if(u.length==2){if(u.charAt(1)=="w"){a.left=i.left+i.width/2-15}else{a.left=i.left+i.width/2-s+15}}r.css(a).addClass("tipsy-"+u);r.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+u.charAt(0);if(this.options.className){r.addClass(t(this.options.className,this.$element[0]))}if(this.options.fade){r.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity})}else{r.css({visibility:"visible",opacity:this.options.opacity})}}},hide:function(){if(this.options.fade){this.tip().stop().fadeOut(function(){e(this).remove()})}else{this.tip().remove()}},fixTitle:function(){var e=this.$element;if(e.attr("title")||typeof e.attr("original-title")!="string"){e.attr("original-title",e.attr("title")||"").removeAttr("title")}},getTitle:function(){var e,t=this.$element,n=this.options;this.fixTitle();var e,n=this.options;if(typeof n.title=="string"){e=t.attr(n.title=="title"?"original-title":n.title)}else if(typeof n.title=="function"){e=n.title.call(t[0])}e=(""+e).replace(/(^\s*|\s*$)/,"");return e||n.fallback},tip:function(){if(!this.$tip){this.$tip=e('
').html('
');this.$tip.data("tipsy-pointee",this.$element[0])}return this.$tip},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled}};e.fn.tipsy=function(t){function i(n){var i=e.data(n,"tipsy");if(!i){i=new r(n,e.fn.tipsy.elementOptions(n,t));e.data(n,"tipsy",i)}return i}function s(){var e=i(this);e.hoverState="in";if(t.delayIn==0){e.show()}else{e.fixTitle();setTimeout(function(){if(e.hoverState=="in")e.show()},t.delayIn)}}function o(){var e=i(this);e.hoverState="out";if(t.delayOut==0){e.hide()}else{setTimeout(function(){if(e.hoverState=="out")e.hide()},t.delayOut)}}if(t===true){return this.data("tipsy")}else if(typeof t=="string"){var n=this.data("tipsy");if(n)n[t]();return this}t=e.extend({},e.fn.tipsy.defaults,t);if(!t.live)this.each(function(){i(this)});if(t.trigger!="manual"){var u=t.live?"live":"bind",a=t.trigger=="hover"?"mouseenter":"focus",f=t.trigger=="hover"?"mouseleave":"blur";this[u](a,s)[u](f,o)}return this};e.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:false,fallback:"",gravity:"n",html:false,live:false,offset:0,opacity:.8,title:"title",trigger:"hover"};e.fn.tipsy.revalidate=function(){e(".tipsy").each(function(){var t=e.data(this,"tipsy-pointee");if(!t||!n(t)){e(this).remove()}})};e.fn.tipsy.elementOptions=function(t,n){return e.metadata?e.extend({},n,e(t).metadata()):n};e.fn.tipsy.autoNS=function(){return e(this).offset().top>e(document).scrollTop()+e(window).height()/2?"s":"n"};e.fn.tipsy.autoWE=function(){return e(this).offset().left>e(document).scrollLeft()+e(window).width()/2?"e":"w"};e.fn.tipsy.autoBounds=function(t,n){return function(){var r={ns:n[0],ew:n.length>1?n[1]:false},i=e(document).scrollTop()+t,s=e(document).scrollLeft()+t,o=e(this);if(o.offset().top').html('
'); + this.$tip.data('tipsy-pointee', this.$element[0]); + } + return this.$tip; + }, + + validate: function() { + if (!this.$element[0].parentNode) { + this.hide(); + this.$element = null; + this.options = null; + } + }, + + enable: function() { this.enabled = true; }, + disable: function() { this.enabled = false; }, + toggleEnabled: function() { this.enabled = !this.enabled; } + }; + + $.fn.tipsy = function(options) { + + if (options === true) { + return this.data('tipsy'); + } else if (typeof options == 'string') { + var tipsy = this.data('tipsy'); + if (tipsy) tipsy[options](); + return this; + } + + options = $.extend({}, $.fn.tipsy.defaults, options); + + function get(ele) { + var tipsy = $.data(ele, 'tipsy'); + if (!tipsy) { + tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); + $.data(ele, 'tipsy', tipsy); + } + return tipsy; + } + + function enter() { + var tipsy = get(this); + tipsy.hoverState = 'in'; + if (options.delayIn == 0) { + tipsy.show(); + } else { + tipsy.fixTitle(); + setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn); + } + }; + + function leave() { + var tipsy = get(this); + tipsy.hoverState = 'out'; + if (options.delayOut == 0) { + tipsy.hide(); + } else { + setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut); + } + }; + + if (!options.live) this.each(function() { get(this); }); + + if (options.trigger != 'manual') { + var binder = options.live ? 'live' : 'bind', + eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', + eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; + this[binder](eventIn, enter)[binder](eventOut, leave); + } + + return this; + + }; + + $.fn.tipsy.defaults = { + className: null, + delayIn: 0, + delayOut: 0, + fade: false, + fallback: '', + gravity: 'n', + html: false, + live: false, + offset: 0, + opacity: 0.8, + title: 'title', + trigger: 'hover' + }; + + $.fn.tipsy.revalidate = function() { + $('.tipsy').each(function() { + var pointee = $.data(this, 'tipsy-pointee'); + if (!pointee || !isElementInDOM(pointee)) { + $(this).remove(); + } + }); + }; + + // Overwrite this method to provide options on a per-element basis. + // For example, you could store the gravity in a 'tipsy-gravity' attribute: + // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); + // (remember - do not modify 'options' in place!) + $.fn.tipsy.elementOptions = function(ele, options) { + return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; + }; + + $.fn.tipsy.autoNS = function() { + return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; + }; + + $.fn.tipsy.autoWE = function() { + return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; + }; + + /** + * yields a closure of the supplied parameters, producing a function that takes + * no arguments and is suitable for use as an autogravity function like so: + * + * @param margin (int) - distance from the viewable region edge that an + * element should be before setting its tooltip's gravity to be away + * from that edge. + * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer + * if there are no viewable region edges effecting the tooltip's + * gravity. It will try to vary from this minimally, for example, + * if 'sw' is preferred and an element is near the right viewable + * region edge, but not the top edge, it will set the gravity for + * that element's tooltip to be 'se', preserving the southern + * component. + */ + $.fn.tipsy.autoBounds = function(margin, prefer) { + return function() { + var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)}, + boundTop = $(document).scrollTop() + margin, + boundLeft = $(document).scrollLeft() + margin, + $this = $(this); + + if ($this.offset().top < boundTop) dir.ns = 'n'; + if ($this.offset().left < boundLeft) dir.ew = 'w'; + if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e'; + if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's'; + + return dir.ns + (dir.ew ? dir.ew : ''); + } + }; + +})(jQuery); \ No newline at end of file From 8125337c4a831e8b842e3e9cc14a78d9acbfda18 Mon Sep 17 00:00:00 2001 From: denise Date: Thu, 13 Dec 2012 12:58:26 -0500 Subject: [PATCH 12/26] Changed the opacity of user rights tipsy tooltip --- airtime_mvc/public/js/airtime/user/user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/airtime_mvc/public/js/airtime/user/user.js b/airtime_mvc/public/js/airtime/user/user.js index 3fff79ef6..ed6dd2398 100644 --- a/airtime_mvc/public/js/airtime/user/user.js +++ b/airtime_mvc/public/js/airtime/user/user.js @@ -162,6 +162,7 @@ $(document).ready(function() { $('#type').tipsy({ gravity: 'w', html: true, + opacity: 0.9, trigger: 'manual', live: true, title: function() { From 8b76bd0373fbe3a4995d4c1ccbc2e995b480a950 Mon Sep 17 00:00:00 2001 From: denise Date: Thu, 13 Dec 2012 15:29:29 -0500 Subject: [PATCH 13/26] CC-2258: Describe rights for each user type on the user page Modified user rights descriptions --- airtime_mvc/public/js/airtime/user/user.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/airtime_mvc/public/js/airtime/user/user.js b/airtime_mvc/public/js/airtime/user/user.js index ed6dd2398..8e62a7f2d 100644 --- a/airtime_mvc/public/js/airtime/user/user.js +++ b/airtime_mvc/public/js/airtime/user/user.js @@ -104,7 +104,7 @@ $(document).ready(function() { $(this).attr('user-rights', $.i18n._('Guests can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ - $.i18n._('View current playing tracks') + $.i18n._('View show content') ); break; case 'H': @@ -112,11 +112,11 @@ $(document).ready(function() { $(this).attr('user-rights', $.i18n._('DJs can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ - $.i18n._('View current playing tracks')+'
'+ + $.i18n._('View show content')+'
'+ $.i18n._('Manage assigned show content')+'
'+ $.i18n._('Import media files')+'
'+ - $.i18n._('Manage their own library content')+'
'+ - $.i18n._('Create playlists, smart blocks, and webstreams') + $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ + $.i18n._('Manage their own library content') ); break; case 'P': @@ -124,11 +124,11 @@ $(document).ready(function() { $(this).attr('user-rights', $.i18n._('Progam Managers can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ + $.i18n._('View and manage show content')+'
'+ $.i18n._('Schedule shows')+'
'+ $.i18n._('Import media files')+'
'+ - $.i18n._('Manage all library content')+'
'+ $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ - $.i18n._('Manage show content') + $.i18n._('Manage all library content') ); break; case 'A': @@ -143,11 +143,11 @@ $(document).ready(function() { $.i18n._('Access playout history')+'
'+ $.i18n._('View listener stats')+'
'+ $.i18n._('View schedule')+'
'+ + $.i18n._('View and manage show content')+'
'+ $.i18n._('Schedule shows')+'
'+ $.i18n._('Import media files')+'
'+ - $.i18n._('Manage all library content')+'
'+ $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ - $.i18n._('Manage show content') + $.i18n._('Manage all library content') ); break; } From a2d0f98a62c85108cf286286dc51d7c962f9588e Mon Sep 17 00:00:00 2001 From: Daniel James Date: Fri, 14 Dec 2012 09:54:42 +0000 Subject: [PATCH 14/26] Added Russian localization files --- .../locale/ru_RU/LC_MESSAGES/airtime.mo | Bin 0 -> 73391 bytes .../locale/ru_RU/LC_MESSAGES/airtime.po | 3243 +++++++++++++++++ 2 files changed, 3243 insertions(+) create mode 100644 airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.mo create mode 100644 airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.po diff --git a/airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.mo new file mode 100644 index 0000000000000000000000000000000000000000..d2e9627ba1a23e07ee119ef32e1e55187c27eeb5 GIT binary patch literal 73391 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 VLkAch`&%Y({zw%dg4(_%?7t_7l^6g3 literal 0 HcmV?d00001 diff --git a/airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.po b/airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.po new file mode 100644 index 000000000..8b73d6dca --- /dev/null +++ b/airtime_mvc/locale/ru_RU/LC_MESSAGES/airtime.po @@ -0,0 +1,3243 @@ +# RUSSIAN (ru_RU) translation for Airtime. +# Copyright (C) 2012 Sourcefabric +# This file is distributed under the same license as the Airtime package. +# Sourcefabric , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: Airtime 2.3\n" +"Report-Msgid-Bugs-To: http://forum.sourcefabric.org/\n" +"POT-Creation-Date: 2012-11-29 11:44-0500\n" +"PO-Revision-Date: 2012-12-14 09:50+0100\n" +"Last-Translator: Luba Sirina \n" +"Language-Team: Russian Localization \n" +"Language: ru_RU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" + +#: airtime_mvc/application/configs/navigation.php:12 +msgid "Now Playing" +msgstr "Сейчас в эфире" + +#: airtime_mvc/application/configs/navigation.php:19 +msgid "Add Media" +msgstr "Добавить медиа-файлы" + +#: airtime_mvc/application/configs/navigation.php:26 +msgid "Library" +msgstr "Библиотека" + +#: airtime_mvc/application/configs/navigation.php:33 +msgid "Calendar" +msgstr "Календарь" + +#: airtime_mvc/application/configs/navigation.php:40 +msgid "System" +msgstr "Система" + +#: airtime_mvc/application/configs/navigation.php:45 +#: airtime_mvc/application/views/scripts/preference/index.phtml:2 +msgid "Preferences" +msgstr "Установки пользователя" + +#: airtime_mvc/application/configs/navigation.php:50 +msgid "Users" +msgstr "Пользователи" + +#: airtime_mvc/application/configs/navigation.php:57 +msgid "Media Folders" +msgstr "Папки медиа-файлов" + +#: airtime_mvc/application/configs/navigation.php:64 +msgid "Streams" +msgstr "Потоки" + +#: airtime_mvc/application/configs/navigation.php:70 +#: airtime_mvc/application/controllers/PreferenceController.php:134 +msgid "Support Feedback" +msgstr "Отзывы о поддержке" + +#: airtime_mvc/application/configs/navigation.php:76 +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:5 +msgid "Status" +msgstr "Статус" + +#: airtime_mvc/application/configs/navigation.php:83 +msgid "Playout History" +msgstr "История воспроизведения" + +#: airtime_mvc/application/configs/navigation.php:90 +msgid "Listener Stats" +msgstr "Статистика слушателей" + +#: airtime_mvc/application/configs/navigation.php:99 +#: airtime_mvc/application/views/scripts/error/error.phtml:13 +msgid "Help" +msgstr "Справка" + +#: airtime_mvc/application/configs/navigation.php:104 +msgid "Getting Started" +msgstr "С чего начать" + +#: airtime_mvc/application/configs/navigation.php:111 +msgid "User Manual" +msgstr "Руководство пользователя" + +#: airtime_mvc/application/configs/navigation.php:116 +#: airtime_mvc/application/views/scripts/dashboard/about.phtml:2 +msgid "About" +msgstr "О программе" + +#: airtime_mvc/application/layouts/scripts/bare.phtml:5 +#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:2 +msgid "Live stream" +msgstr "Потоковый режим" + +#: airtime_mvc/application/layouts/scripts/audio-player.phtml:5 +#: airtime_mvc/application/controllers/LocaleController.php:34 +msgid "Audio Player" +msgstr "Аудио-плейер" + +#: airtime_mvc/application/layouts/scripts/layout.phtml:26 +msgid "Logout" +msgstr "Выход" + +#: airtime_mvc/application/layouts/scripts/login.phtml:16 +#, php-format +msgid "Airtime Copyright ©Sourcefabric o.p.s. All rights reserved.%sMaintained and distributed under GNU GPL v.3 by %sSourcefabric o.p.s%s" +msgstr "Авторское право Airtime ©Sourcefabric o.p.s. Все права защищены. %sПоддерживается и распространяется под лицензией GNU GPL v.3 от %sSourcefabric o.p.s.%s" + +#: airtime_mvc/application/models/StoredFile.php:797 +#: airtime_mvc/application/controllers/LocaleController.php:277 +msgid "Track preview" +msgstr "Предпросмотр треков" + +#: airtime_mvc/application/models/StoredFile.php:799 +msgid "Playlist preview" +msgstr "Предпросмотр плейлиста" + +#: airtime_mvc/application/models/StoredFile.php:802 +msgid "Webstream preview" +msgstr "Предпросмотр вебпотока" + +#: airtime_mvc/application/models/StoredFile.php:804 +msgid "Smart Block" +msgstr "Умный блок" + +#: airtime_mvc/application/models/StoredFile.php:937 +msgid "Failed to create 'organize' directory." +msgstr "Не удалось создать папку organize." + +#: airtime_mvc/application/models/StoredFile.php:950 +#, php-format +msgid "The file was not uploaded, there is %s MB of disk space left and the file you are uploading has a size of %s MB." +msgstr "Файл не был загружен, размер свободного дискового пространства %s МБ, а размер загружаемого файла %s МБ." + +#: airtime_mvc/application/models/StoredFile.php:959 +msgid "This file appears to be corrupted and will not be added to media library." +msgstr "Этот файл по-видимому поврежден и не будет добавлен к медиа-библиотеке." + +#: airtime_mvc/application/models/StoredFile.php:995 +msgid "The file was not uploaded, this error can occur if the computer hard drive does not have enough disk space or the stor directory does not have correct write permissions." +msgstr "Загрузка не удалась. Эта ошибка возможна, если на жестком диске компьютера не хватает места или папка не имеет необходимых разрешений записи." + +#: airtime_mvc/application/models/Preference.php:469 +msgid "Select Country" +msgstr "Выберите страну" + +#: airtime_mvc/application/models/MusicDir.php:160 +#, php-format +msgid "%s is already watched." +msgstr "%s уже просматривают." + +#: airtime_mvc/application/models/MusicDir.php:164 +#, php-format +msgid "%s contains nested watched directory: %s" +msgstr "%s содержит вложенную просматриваемую папку: %s" + +#: airtime_mvc/application/models/MusicDir.php:168 +#, php-format +msgid "%s is nested within existing watched directory: %s" +msgstr "%s вложено в существующую просматриваемую папку: %s" + +#: airtime_mvc/application/models/MusicDir.php:189 +#: airtime_mvc/application/models/MusicDir.php:363 +#, php-format +msgid "%s is not a valid directory." +msgstr "%s не является допустимой папкой." + +#: airtime_mvc/application/models/MusicDir.php:231 +#, php-format +msgid "%s is already set as the current storage dir or in the watched folders list" +msgstr "%s уже установлена в качестве текущей папки хранения или в списке просматриваемых папок" + +#: airtime_mvc/application/models/MusicDir.php:381 +#, php-format +msgid "%s is already set as the current storage dir or in the watched folders list." +msgstr "%s уже установлен в качестве текущей папки хранения или в списке просматриваемых папок." + +#: airtime_mvc/application/models/MusicDir.php:424 +#, php-format +msgid "%s doesn't exist in the watched list." +msgstr "%s не существует в просматриваемом списке" + +#: airtime_mvc/application/models/Playlist.php:724 +#: airtime_mvc/application/models/Block.php:757 +msgid "Cue in and cue out are null." +msgstr "Время начала и окончания звучания трека не заполнены." + +#: airtime_mvc/application/models/Playlist.php:754 +#: airtime_mvc/application/models/Playlist.php:777 +#: airtime_mvc/application/models/Block.php:803 +#: airtime_mvc/application/models/Block.php:824 +msgid "Can't set cue in to be larger than cue out." +msgstr "Время начала звучания не может быть больше времени окончания. " + +#: airtime_mvc/application/models/Playlist.php:761 +#: airtime_mvc/application/models/Playlist.php:802 +#: airtime_mvc/application/models/Block.php:792 +#: airtime_mvc/application/models/Block.php:848 +msgid "Can't set cue out to be greater than file length." +msgstr "Время окончания звучания не может превышать длину трека." + +#: airtime_mvc/application/models/Playlist.php:795 +#: airtime_mvc/application/models/Block.php:859 +msgid "Can't set cue out to be smaller than cue in." +msgstr "Время окончания звучания не может быть меньше времени начала." + +#: airtime_mvc/application/models/Show.php:180 +msgid "Shows can have a max length of 24 hours." +msgstr "Максимальная продолжительность программы 24 часа." + +#: airtime_mvc/application/models/Show.php:211 +#: airtime_mvc/application/forms/AddShowWhen.php:120 +msgid "End date/time cannot be in the past" +msgstr "Дата/время окончания не могут быть прошедшими" + +#: airtime_mvc/application/models/Show.php:222 +msgid "" +"Cannot schedule overlapping shows.\n" +"Note: Resizing a repeating show affects all of its repeats." +msgstr "" +"Нельзя планировать пересекающиеся программы.\n" +"Примечание: изменение размера повторяющейся программы влияет на все ее повторы." + +#: airtime_mvc/application/models/Webstream.php:157 +msgid "Length needs to be greater than 0 minutes" +msgstr "Длина должна быть более 0 минут" + +#: airtime_mvc/application/models/Webstream.php:162 +msgid "Length should be of form \"00h 00m\"" +msgstr "Длину указать в формате \"00ч 00мин \"" + +#: airtime_mvc/application/models/Webstream.php:175 +msgid "URL should be of form \"http://domain\"" +msgstr "URL указать в формате \"http://домен\"" + +#: airtime_mvc/application/models/Webstream.php:178 +msgid "URL should be 512 characters or less" +msgstr "URL должен быть 512 символов или менее" + +#: airtime_mvc/application/models/Webstream.php:184 +msgid "No MIME type found for webstream." +msgstr "Для веб-потока не найдено MIME type" + +#: airtime_mvc/application/models/Webstream.php:200 +msgid "Webstream name cannot be empty" +msgstr "Название вебпотока должно быть заполнено" + +#: airtime_mvc/application/models/Webstream.php:269 +msgid "Could not parse XSPF playlist" +msgstr "Не удалось анализировать XSPF плейлист" + +#: airtime_mvc/application/models/Webstream.php:281 +msgid "Could not parse PLS playlist" +msgstr "Не удалось анализировать PLS плейлист" + +#: airtime_mvc/application/models/Webstream.php:300 +msgid "Could not parse M3U playlist" +msgstr "Не удалось анализировать M3U плейлист" + +#: airtime_mvc/application/models/Webstream.php:314 +msgid "Invalid webstream - This appears to be a file download." +msgstr "Неверный вебпоток - это загрузка файла." + +#: airtime_mvc/application/models/Webstream.php:318 +#, php-format +msgid "Unrecognized stream type: %s" +msgstr "Неизвестный тип потока: %s" + +#: airtime_mvc/application/models/ShowInstance.php:245 +msgid "Can't drag and drop repeating shows" +msgstr "Невозможно перетащить повторяющиеся программы" + +#: airtime_mvc/application/models/ShowInstance.php:253 +msgid "Can't move a past show" +msgstr "Невозможно переместить прошлую программу" + +#: airtime_mvc/application/models/ShowInstance.php:270 +msgid "Can't move show into past" +msgstr "Невозможно переместить программу в прошедший период" + +#: airtime_mvc/application/models/ShowInstance.php:276 +#: airtime_mvc/application/forms/AddShowWhen.php:254 +#: airtime_mvc/application/forms/AddShowWhen.php:268 +#: airtime_mvc/application/forms/AddShowWhen.php:291 +#: airtime_mvc/application/forms/AddShowWhen.php:297 +#: airtime_mvc/application/forms/AddShowWhen.php:302 +msgid "Cannot schedule overlapping shows" +msgstr "Невозможно поставить в расписание пересекающиеся программы" + +#: airtime_mvc/application/models/ShowInstance.php:290 +msgid "Can't move a recorded show less than 1 hour before its rebroadcasts." +msgstr "Невозможно переместить записанную программу менее, чем за 1 час до ее ретрансляции." + +#: airtime_mvc/application/models/ShowInstance.php:303 +msgid "Show was deleted because recorded show does not exist!" +msgstr "Программа была удалена, потому что записанная программа не существует!" + +#: airtime_mvc/application/models/ShowInstance.php:310 +msgid "Must wait 1 hour to rebroadcast." +msgstr "До ретрансляции необходимо ожидать 1 час." + +#: airtime_mvc/application/models/ShowInstance.php:342 +msgid "can't resize a past show" +msgstr "невозможно изменить размеры программы прошлого периода" + +#: airtime_mvc/application/models/ShowInstance.php:364 +msgid "Should not overlap shows" +msgstr "Нельзя пересекать программы" + +#: airtime_mvc/application/models/Auth.php:33 +#, php-format +msgid "" +"Hi %s, \n" +"\n" +"Click this link to reset your password: " +msgstr "" +"Привет %s, \n" +"\n" +" Нажмите ссылку для сброса пароля: " + +#: airtime_mvc/application/models/Auth.php:36 +msgid "Airtime Password Reset" +msgstr "Сброс пароля Airtime" + +#: airtime_mvc/application/models/Scheduler.php:82 +msgid "The schedule you're viewing is out of date! (sched mismatch)" +msgstr "Расписание, которое вы просматриваете, устарело! (несоответствие расписания)" + +#: airtime_mvc/application/models/Scheduler.php:87 +msgid "The schedule you're viewing is out of date! (instance mismatch)" +msgstr "Расписание, которое вы просматриваете, устарело! (несоответствие выпусков)" + +#: airtime_mvc/application/models/Scheduler.php:95 +#: airtime_mvc/application/models/Scheduler.php:346 +msgid "The schedule you're viewing is out of date!" +msgstr "Расписание, которое вы просматриваете, устарело!" + +#: airtime_mvc/application/models/Scheduler.php:105 +#, php-format +msgid "You are not allowed to schedule show %s." +msgstr "У вас нет прав планирования программы %s ." + +#: airtime_mvc/application/models/Scheduler.php:109 +msgid "You cannot add files to recording shows." +msgstr "Вы не можете добавлять файлы в записываемую программу" + +#: airtime_mvc/application/models/Scheduler.php:115 +#, php-format +msgid "The show %s is over and cannot be scheduled." +msgstr "Программа %s окончилась и не может быть поставлена в расписание." + +#: airtime_mvc/application/models/Scheduler.php:122 +#, php-format +msgid "The show %s has been previously updated!" +msgstr "Программа %s была обновлена ранее!" + +#: airtime_mvc/application/models/Scheduler.php:141 +#: airtime_mvc/application/models/Scheduler.php:222 +msgid "A selected File does not exist!" +msgstr "Выбранный файл не существует!" + +#: airtime_mvc/application/models/ShowBuilder.php:198 +#, php-format +msgid "Rebroadcast of %s from %s" +msgstr "Ретрансляция %s из %s" + +#: airtime_mvc/application/models/Block.php:1207 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:41 +msgid "Select criteria" +msgstr "Выбрать критерии" + +#: airtime_mvc/application/models/Block.php:1208 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:42 +#: airtime_mvc/application/controllers/LocaleController.php:68 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:8 +msgid "Album" +msgstr "Альбом" + +#: airtime_mvc/application/models/Block.php:1209 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:43 +msgid "Bit Rate (Kbps)" +msgstr "Битовая скорость (Kbps)" + +#: airtime_mvc/application/models/Block.php:1210 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:44 +#: airtime_mvc/application/controllers/LocaleController.php:70 +msgid "BPM" +msgstr "BPM" + +#: airtime_mvc/application/models/Block.php:1211 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:45 +#: airtime_mvc/application/controllers/LocaleController.php:71 +#: airtime_mvc/application/controllers/LocaleController.php:154 +msgid "Composer" +msgstr "Композитор" + +#: airtime_mvc/application/models/Block.php:1212 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:46 +#: airtime_mvc/application/controllers/LocaleController.php:72 +msgid "Conductor" +msgstr "Исполнитель" + +#: airtime_mvc/application/models/Block.php:1213 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:47 +#: airtime_mvc/application/controllers/LocaleController.php:73 +#: airtime_mvc/application/controllers/LocaleController.php:155 +msgid "Copyright" +msgstr "Авторское право" + +#: airtime_mvc/application/models/Block.php:1214 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:48 +#: airtime_mvc/application/controllers/LocaleController.php:67 +#: airtime_mvc/application/controllers/LocaleController.php:151 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:7 +msgid "Creator" +msgstr "Создатель" + +#: airtime_mvc/application/models/Block.php:1215 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:49 +#: airtime_mvc/application/controllers/LocaleController.php:74 +msgid "Encoded By" +msgstr "Закодировано в" + +#: airtime_mvc/application/models/Block.php:1216 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:132 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:50 +#: airtime_mvc/application/controllers/LocaleController.php:75 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:10 +msgid "Genre" +msgstr "Жанр" + +#: airtime_mvc/application/models/Block.php:1217 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:51 +#: airtime_mvc/application/controllers/LocaleController.php:76 +msgid "ISRC" +msgstr "ISRC" + +#: airtime_mvc/application/models/Block.php:1218 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:52 +#: airtime_mvc/application/controllers/LocaleController.php:77 +msgid "Label" +msgstr "Ярлык " + +#: airtime_mvc/application/models/Block.php:1219 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:53 +#: airtime_mvc/application/forms/GeneralPreferences.php:56 +#: airtime_mvc/application/controllers/LocaleController.php:78 +msgid "Language" +msgstr "Язык" + +#: airtime_mvc/application/models/Block.php:1220 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:54 +#: airtime_mvc/application/controllers/LocaleController.php:79 +msgid "Last Modified" +msgstr "Последние изменения" + +#: airtime_mvc/application/models/Block.php:1221 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:55 +#: airtime_mvc/application/controllers/LocaleController.php:80 +msgid "Last Played" +msgstr "Последнее проигрывание" + +#: airtime_mvc/application/models/Block.php:1222 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:56 +#: airtime_mvc/application/controllers/LocaleController.php:81 +#: airtime_mvc/application/controllers/LocaleController.php:153 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:9 +msgid "Length" +msgstr "Длина" + +#: airtime_mvc/application/models/Block.php:1223 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:57 +#: airtime_mvc/application/controllers/LocaleController.php:82 +msgid "Mime" +msgstr "Mime" + +#: airtime_mvc/application/models/Block.php:1224 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:58 +#: airtime_mvc/application/controllers/LocaleController.php:83 +msgid "Mood" +msgstr "Настроение" + +#: airtime_mvc/application/models/Block.php:1225 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:59 +#: airtime_mvc/application/controllers/LocaleController.php:84 +msgid "Owner" +msgstr "Владелец" + +#: airtime_mvc/application/models/Block.php:1226 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:60 +#: airtime_mvc/application/controllers/LocaleController.php:85 +msgid "Replay Gain" +msgstr "Выравнивание громкости" + +#: airtime_mvc/application/models/Block.php:1227 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:61 +msgid "Sample Rate (kHz)" +msgstr "Частота дискретизации (кГц)" + +#: airtime_mvc/application/models/Block.php:1228 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:62 +#: airtime_mvc/application/controllers/LocaleController.php:66 +#: airtime_mvc/application/controllers/LocaleController.php:150 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:6 +msgid "Title" +msgstr "Заголовок" + +#: airtime_mvc/application/models/Block.php:1229 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:63 +#: airtime_mvc/application/controllers/LocaleController.php:87 +msgid "Track Number" +msgstr "Номер дорожки" + +#: airtime_mvc/application/models/Block.php:1230 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:64 +#: airtime_mvc/application/controllers/LocaleController.php:88 +msgid "Uploaded" +msgstr "Загружено" + +#: airtime_mvc/application/models/Block.php:1231 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:65 +#: airtime_mvc/application/controllers/LocaleController.php:89 +msgid "Website" +msgstr "Вебсайт" + +#: airtime_mvc/application/models/Block.php:1232 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:66 +#: airtime_mvc/application/controllers/LocaleController.php:90 +msgid "Year" +msgstr "Год" + +#: airtime_mvc/application/common/DateHelper.php:335 +#, php-format +msgid "The year %s must be within the range of 1753 - 9999" +msgstr "Год %s должен быть в пределах 1753 - 9999" + +#: airtime_mvc/application/common/DateHelper.php:338 +#, php-format +msgid "%s-%s-%s is not a valid date" +msgstr "%s - %s - %s не является допустимой датой" + +#: airtime_mvc/application/common/DateHelper.php:362 +#, php-format +msgid "%s:%s:%s is not a valid time" +msgstr "%s : %s : %s не является допустимым временем" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:17 +msgid "Enable System Emails (Password Reset)" +msgstr "Включение системы электронной почты (смена пароля)" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:27 +msgid "Reset Password 'From' Email" +msgstr "Сброс пароля 'От' E-mail" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:34 +msgid "Configure Mail Server" +msgstr "Настройка почтового сервера" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:43 +msgid "Requires Authentication" +msgstr "Требуется проверка подлинности" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:53 +msgid "Mail Server" +msgstr "Почтовый сервер" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:67 +msgid "Email Address" +msgstr "Адрес электронной почты" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:82 +#: airtime_mvc/application/forms/PasswordChange.php:17 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:120 +msgid "Password" +msgstr "Пароль" + +#: airtime_mvc/application/forms/EmailServerPreferences.php:100 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:109 +msgid "Port" +msgstr "Порт" + +#: airtime_mvc/application/forms/RegisterAirtime.php:30 +#: airtime_mvc/application/forms/SupportSettings.php:21 +#: airtime_mvc/application/forms/GeneralPreferences.php:22 +msgid "Station Name" +msgstr "Название станции" + +#: airtime_mvc/application/forms/RegisterAirtime.php:39 +#: airtime_mvc/application/forms/SupportSettings.php:34 +msgid "Phone:" +msgstr "Телефон:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:51 +#: airtime_mvc/application/forms/AddUser.php:54 +#: airtime_mvc/application/forms/SupportSettings.php:46 +msgid "Email:" +msgstr "Электронный адрес:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:62 +#: airtime_mvc/application/forms/SupportSettings.php:57 +msgid "Station Web Site:" +msgstr "Вебсайт станции:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:73 +#: airtime_mvc/application/forms/SupportSettings.php:68 +msgid "Country:" +msgstr "Страна:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:84 +#: airtime_mvc/application/forms/SupportSettings.php:79 +msgid "City:" +msgstr "Город" + +#: airtime_mvc/application/forms/RegisterAirtime.php:96 +#: airtime_mvc/application/forms/SupportSettings.php:91 +msgid "Station Description:" +msgstr "Описание станции:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:106 +#: airtime_mvc/application/forms/SupportSettings.php:101 +msgid "Station Logo:" +msgstr "Логотип станции:" + +#: airtime_mvc/application/forms/RegisterAirtime.php:116 +#: airtime_mvc/application/forms/SupportSettings.php:112 +msgid "Send support feedback" +msgstr "Отправить отзыв о поддержке" + +#: airtime_mvc/application/forms/RegisterAirtime.php:126 +#: airtime_mvc/application/forms/SupportSettings.php:122 +msgid "Promote my station on Sourcefabric.org" +msgstr "Поддержать мою станцию на Sourcefabric.org" + +#: airtime_mvc/application/forms/RegisterAirtime.php:149 +#: airtime_mvc/application/forms/SupportSettings.php:148 +#, php-format +msgid "By checking this box, I agree to Sourcefabric's %sprivacy policy%s." +msgstr "Установив этот флажок, я соглашаюсь с %sполитикой конфиденциальности%s Sourcefabric." + +#: airtime_mvc/application/forms/RegisterAirtime.php:166 +#: airtime_mvc/application/forms/SupportSettings.php:173 +msgid "You have to agree to privacy policy." +msgstr "Вы должны согласиться с политикой конфиденциальности." + +#: airtime_mvc/application/forms/PasswordChange.php:28 +msgid "Confirm new password" +msgstr "Подтвердить новый пароль" + +#: airtime_mvc/application/forms/PasswordChange.php:36 +msgid "Password confirmation does not match your password." +msgstr "Подтверждение пароля не совпадает с вашим паролем." + +#: airtime_mvc/application/forms/PasswordChange.php:43 +msgid "Get new password" +msgstr "Получить новый пароль" + +#: airtime_mvc/application/forms/DateRange.php:16 +#: airtime_mvc/application/forms/ShowBuilder.php:18 +msgid "Date Start:" +msgstr "Дата начала:" + +#: airtime_mvc/application/forms/DateRange.php:35 +#: airtime_mvc/application/forms/DateRange.php:63 +#: airtime_mvc/application/forms/AddShowRebroadcastDates.php:31 +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:99 +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:118 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:100 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:123 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:144 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:174 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:186 +#: airtime_mvc/application/forms/AddShowAbsoluteRebroadcastDates.php:26 +#: airtime_mvc/application/forms/ShowBuilder.php:37 +#: airtime_mvc/application/forms/ShowBuilder.php:65 +msgid "Invalid character entered" +msgstr "Неверно введенный символ" + +#: airtime_mvc/application/forms/DateRange.php:44 +#: airtime_mvc/application/forms/AddShowRepeats.php:40 +#: airtime_mvc/application/forms/ShowBuilder.php:46 +msgid "Date End:" +msgstr "Дата окончания:" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:8 +#: airtime_mvc/application/forms/customvalidators/ConditionalNotEmpty.php:26 +msgid "Value is required and can't be empty" +msgstr "Значение является обязательным и не может быть пустым" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:19 +msgid "'%value%' is no valid email address in the basic format local-part@hostname" +msgstr "'% значение%' не является действительным адресом электронной почты в формате local-part@hostname" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:33 +msgid "'%value%' does not fit the date format '%format%'" +msgstr "'%значение%' не соответствует формату даты '%формат%'" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:59 +msgid "'%value%' is less than %min% characters long" +msgstr "'%значение%' имеет менее %min% символов" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:64 +msgid "'%value%' is more than %max% characters long" +msgstr "'%значение%' имеет более %max% символов" + +#: airtime_mvc/application/forms/helpers/ValidationTypes.php:76 +msgid "'%value%' is not between '%min%' and '%max%', inclusively" +msgstr "'%значение%' не входит в промежуток '%min%' и '%maxс% включительно" + +#: airtime_mvc/application/forms/AddShowRebroadcastDates.php:15 +#: airtime_mvc/application/views/scripts/partialviews/trialBox.phtml:6 +msgid "days" +msgstr "дней" + +#: airtime_mvc/application/forms/AddShowRebroadcastDates.php:63 +#: airtime_mvc/application/forms/AddShowAbsoluteRebroadcastDates.php:58 +msgid "Day must be specified" +msgstr "День должен быть указан" + +#: airtime_mvc/application/forms/AddShowRebroadcastDates.php:68 +#: airtime_mvc/application/forms/AddShowAbsoluteRebroadcastDates.php:63 +msgid "Time must be specified" +msgstr "Время должно быть указано" + +#: airtime_mvc/application/forms/AddShowRebroadcastDates.php:95 +#: airtime_mvc/application/forms/AddShowAbsoluteRebroadcastDates.php:86 +msgid "Must wait at least 1 hour to rebroadcast" +msgstr "Должны ждать по крайней мере 1 час до ретрансляции" + +#: airtime_mvc/application/forms/AddShowRR.php:10 +msgid "Record from Line In?" +msgstr "Запись с линейного входа?" + +#: airtime_mvc/application/forms/AddShowRR.php:16 +msgid "Rebroadcast?" +msgstr "Ретрансляция?" + +#: airtime_mvc/application/forms/AddShowStyle.php:10 +msgid "Background Colour:" +msgstr "Цвет фона:" + +#: airtime_mvc/application/forms/AddShowStyle.php:29 +msgid "Text Colour:" +msgstr "Цвет текста:" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:19 +msgid "Auto Switch Off" +msgstr "Автоматическое выключение" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:26 +msgid "Auto Switch On" +msgstr "Автоматическое включение" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:33 +msgid "Switch Transition Fade (s)" +msgstr "Переключение переходов затухания (s)" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:36 +msgid "enter a time in seconds 00{.000000}" +msgstr "Введите время в секундах, 00{0,000000}" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:45 +msgid "Master Username" +msgstr "Имя пользователя Master " + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:62 +msgid "Master Password" +msgstr "Пароль Master" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:70 +msgid "Master Source Connection URL" +msgstr "URL подключения к источнику Master" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:78 +msgid "Show Source Connection URL" +msgstr "URL подключения к источнику Show" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:87 +msgid "Master Source Port" +msgstr "Порт источника Master " + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:90 +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:109 +#: airtime_mvc/application/forms/StreamSettingSubForm.php:112 +msgid "Only numbers are allowed." +msgstr "Разрешены только числа." + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:96 +msgid "Master Source Mount Point" +msgstr "Точка монтирования источника Master" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:106 +msgid "Show Source Port" +msgstr "Порт источника Show" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:115 +msgid "Show Source Mount Point" +msgstr "Точка монтирования источника Show" + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:153 +msgid "You cannot use same port as Master DJ port." +msgstr "Вы не можете использовать порт, используемый Master DJ." + +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:164 +#: airtime_mvc/application/forms/LiveStreamingPreferences.php:182 +#, php-format +msgid "Port %s is not available" +msgstr "Порт %s не доступен." + +#: airtime_mvc/application/forms/WatchedDirPreferences.php:14 +msgid "Import Folder:" +msgstr "Импорт папки:" + +#: airtime_mvc/application/forms/WatchedDirPreferences.php:25 +msgid "Watched Folders:" +msgstr "Просматриваемые папки:" + +#: airtime_mvc/application/forms/WatchedDirPreferences.php:40 +msgid "Not a valid Directory" +msgstr "Не является допустимой папкой" + +#: airtime_mvc/application/forms/AddUser.php:23 +#: airtime_mvc/application/forms/Login.php:19 +msgid "Username:" +msgstr "Имя пользователя:" + +#: airtime_mvc/application/forms/AddUser.php:32 +#: airtime_mvc/application/forms/Login.php:34 +msgid "Password:" +msgstr "Пароль:" + +#: airtime_mvc/application/forms/AddUser.php:40 +msgid "Firstname:" +msgstr "Имя" + +#: airtime_mvc/application/forms/AddUser.php:47 +msgid "Lastname:" +msgstr "Фамилия" + +#: airtime_mvc/application/forms/AddUser.php:63 +msgid "Mobile Phone:" +msgstr "Мобильный телефон:" + +#: airtime_mvc/application/forms/AddUser.php:69 +msgid "Skype:" +msgstr "Skype:" + +#: airtime_mvc/application/forms/AddUser.php:75 +msgid "Jabber:" +msgstr "Jabber:" + +#: airtime_mvc/application/forms/AddUser.php:82 +msgid "User Type:" +msgstr "Тип пользователя:" + +#: airtime_mvc/application/forms/AddUser.php:86 +#: airtime_mvc/application/controllers/LocaleController.php:309 +msgid "Guest" +msgstr "Гость" + +#: airtime_mvc/application/forms/AddUser.php:87 +#: airtime_mvc/application/controllers/LocaleController.php:307 +msgid "DJ" +msgstr "Диджей" + +#: airtime_mvc/application/forms/AddUser.php:88 +#: airtime_mvc/application/controllers/LocaleController.php:308 +msgid "Program Manager" +msgstr "Менеджер программы" + +#: airtime_mvc/application/forms/AddUser.php:89 +#: airtime_mvc/application/controllers/LocaleController.php:306 +msgid "Admin" +msgstr "Администратор" + +#: airtime_mvc/application/forms/AddUser.php:97 +#: airtime_mvc/application/forms/SupportSettings.php:158 +#: airtime_mvc/application/forms/EditAudioMD.php:128 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:23 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:20 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:15 +#: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:6 +#: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:81 +#: airtime_mvc/application/views/scripts/preference/index.phtml:6 +#: airtime_mvc/application/views/scripts/preference/index.phtml:14 +msgid "Save" +msgstr "Сохранить" + +#: airtime_mvc/application/forms/AddUser.php:107 +msgid "Login name is not unique." +msgstr "Имя пользователя не является уникальным." + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:48 +msgid "Enabled:" +msgstr "Активировано:" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:57 +msgid "Stream Type:" +msgstr "Тип потока:" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:67 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:9 +msgid "Bit Rate:" +msgstr "Битовая скорость:" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:77 +msgid "Service Type:" +msgstr "Тип услуги:" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:87 +msgid "Channels:" +msgstr "Каналы:" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:88 +msgid "1 - Mono" +msgstr "1 - Моно" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:88 +msgid "2 - Stereo" +msgstr "2 - Стерео" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:97 +msgid "Server" +msgstr "Сервер" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:141 +msgid "URL" +msgstr "URL" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:153 +msgid "Name" +msgstr "Имя" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:162 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:51 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:53 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:40 +msgid "Description" +msgstr "Описание" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:171 +msgid "Mount Point" +msgstr "Точка монтирования" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:183 +#: airtime_mvc/application/forms/PasswordRestore.php:25 +#: airtime_mvc/application/views/scripts/user/add-user.phtml:18 +msgid "Username" +msgstr "Имя пользователя" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:194 +#: airtime_mvc/application/controllers/LocaleController.php:168 +msgid "Getting information from the server..." +msgstr "Получение информации с сервера ..." + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:208 +msgid "Server cannot be empty." +msgstr "Сервер не может быть пустым" + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:213 +msgid "Port cannot be empty." +msgstr "Порт не может быть пустым." + +#: airtime_mvc/application/forms/StreamSettingSubForm.php:219 +msgid "Mount cannot be empty with Icecast server." +msgstr "Монтирование не может быть пустым с Icecast сервер." + +#: airtime_mvc/application/forms/AddShowRepeats.php:11 +msgid "Repeat Type:" +msgstr "Тип повтора:" + +#: airtime_mvc/application/forms/AddShowRepeats.php:14 +msgid "weekly" +msgstr "Еженедельно" + +#: airtime_mvc/application/forms/AddShowRepeats.php:15 +msgid "bi-weekly" +msgstr "два раза в неделю" + +#: airtime_mvc/application/forms/AddShowRepeats.php:16 +msgid "monthly" +msgstr "ежемесячно" + +#: airtime_mvc/application/forms/AddShowRepeats.php:25 +msgid "Select Days:" +msgstr "Выберите дни:" + +#: airtime_mvc/application/forms/AddShowRepeats.php:28 +#: airtime_mvc/application/controllers/LocaleController.php:246 +msgid "Sun" +msgstr "Вс" + +#: airtime_mvc/application/forms/AddShowRepeats.php:29 +#: airtime_mvc/application/controllers/LocaleController.php:247 +msgid "Mon" +msgstr "Пн" + +#: airtime_mvc/application/forms/AddShowRepeats.php:30 +#: airtime_mvc/application/controllers/LocaleController.php:248 +msgid "Tue" +msgstr "Вт" + +#: airtime_mvc/application/forms/AddShowRepeats.php:31 +#: airtime_mvc/application/controllers/LocaleController.php:249 +msgid "Wed" +msgstr "Ср" + +#: airtime_mvc/application/forms/AddShowRepeats.php:32 +#: airtime_mvc/application/controllers/LocaleController.php:250 +msgid "Thu" +msgstr "Чт" + +#: airtime_mvc/application/forms/AddShowRepeats.php:33 +#: airtime_mvc/application/controllers/LocaleController.php:251 +msgid "Fri" +msgstr "Пт" + +#: airtime_mvc/application/forms/AddShowRepeats.php:34 +#: airtime_mvc/application/controllers/LocaleController.php:252 +msgid "Sat" +msgstr "Сб" + +#: airtime_mvc/application/forms/AddShowRepeats.php:53 +msgid "No End?" +msgstr "Нет окончания?" + +#: airtime_mvc/application/forms/AddShowRepeats.php:79 +msgid "End date must be after start date" +msgstr "Дата окончания должна быть после даты начала" + +#: airtime_mvc/application/forms/AddShowWhat.php:26 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:27 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:127 +msgid "Name:" +msgstr "Имя:" + +#: airtime_mvc/application/forms/AddShowWhat.php:30 +msgid "Untitled Show" +msgstr "Программа без названия" + +#: airtime_mvc/application/forms/AddShowWhat.php:36 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:131 +msgid "URL:" +msgstr "URL:" + +#: airtime_mvc/application/forms/AddShowWhat.php:45 +#: airtime_mvc/application/forms/EditAudioMD.php:41 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:11 +msgid "Genre:" +msgstr "Жанр:" + +#: airtime_mvc/application/forms/AddShowWhat.php:54 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:34 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:130 +msgid "Description:" +msgstr "Описание:" + +#: airtime_mvc/application/forms/AddShowWho.php:10 +msgid "Search Users:" +msgstr "Поиск пользователей:" + +#: airtime_mvc/application/forms/AddShowWho.php:24 +msgid "DJs:" +msgstr "Диджеи:" + +#: airtime_mvc/application/forms/StreamSetting.php:22 +msgid "Hardware Audio Output" +msgstr "Средства аудиовыхода" + +#: airtime_mvc/application/forms/StreamSetting.php:33 +msgid "Output Type" +msgstr "Тип выхода" + +#: airtime_mvc/application/forms/StreamSetting.php:44 +msgid "Icecast Vorbis Metadata" +msgstr "Метаданные Icecast Vorbis " + +#: airtime_mvc/application/forms/StreamSetting.php:54 +msgid "Stream Label:" +msgstr "Метка потока:" + +#: airtime_mvc/application/forms/StreamSetting.php:55 +msgid "Artist - Title" +msgstr "Исполнитель - Название" + +#: airtime_mvc/application/forms/StreamSetting.php:56 +msgid "Show - Artist - Title" +msgstr "Программа - Исполнитель - Название" + +#: airtime_mvc/application/forms/StreamSetting.php:57 +msgid "Station name - Show name" +msgstr "Название станции - Название программы" + +#: airtime_mvc/application/forms/PasswordRestore.php:14 +msgid "E-mail" +msgstr "E-mail" + +#: airtime_mvc/application/forms/PasswordRestore.php:36 +msgid "Restore password" +msgstr "Восстановить пароль" + +#: airtime_mvc/application/forms/PasswordRestore.php:46 +#: airtime_mvc/application/forms/EditAudioMD.php:138 +#: airtime_mvc/application/controllers/LocaleController.php:303 +msgid "Cancel" +msgstr "Отменить" + +#: airtime_mvc/application/forms/AddShowWhen.php:16 +msgid "'%value%' does not fit the time format 'HH:mm'" +msgstr "'%значение%' не соответствует формату времени 'ЧЧ:мм'" + +#: airtime_mvc/application/forms/AddShowWhen.php:22 +msgid "Date/Time Start:" +msgstr "Дата /время начала:" + +#: airtime_mvc/application/forms/AddShowWhen.php:49 +msgid "Date/Time End:" +msgstr "Дата / время окончания:" + +#: airtime_mvc/application/forms/AddShowWhen.php:74 +msgid "Duration:" +msgstr "Длительность:" + +#: airtime_mvc/application/forms/AddShowWhen.php:83 +msgid "Repeats?" +msgstr "Повторы?" + +#: airtime_mvc/application/forms/AddShowWhen.php:103 +msgid "Cannot create show in the past" +msgstr "Невозможно создать программу в прошедшем периоде" + +#: airtime_mvc/application/forms/AddShowWhen.php:111 +msgid "Cannot modify start date/time of the show that is already started" +msgstr "Невозможно изменить дату/время начала программы, которая уже началась" + +#: airtime_mvc/application/forms/AddShowWhen.php:130 +msgid "Cannot have duration 00h 00m" +msgstr "Не может иметь длительность 00ч 00м" + +#: airtime_mvc/application/forms/AddShowWhen.php:134 +msgid "Cannot have duration greater than 24h" +msgstr "Не может иметь длительность более 24 часов" + +#: airtime_mvc/application/forms/AddShowWhen.php:138 +msgid "Cannot have duration < 0m" +msgstr "Не может иметь длительность <0м" + +#: airtime_mvc/application/forms/EditAudioMD.php:13 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:3 +msgid "Title:" +msgstr "Заголовок:" + +#: airtime_mvc/application/forms/EditAudioMD.php:20 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:4 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:28 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:129 +msgid "Creator:" +msgstr "Создатель:" + +#: airtime_mvc/application/forms/EditAudioMD.php:27 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:5 +msgid "Album:" +msgstr "Альбом:" + +#: airtime_mvc/application/forms/EditAudioMD.php:34 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:6 +msgid "Track:" +msgstr "Дорожка" + +#: airtime_mvc/application/forms/EditAudioMD.php:48 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:12 +msgid "Year:" +msgstr "Год:" + +#: airtime_mvc/application/forms/EditAudioMD.php:60 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:13 +msgid "Label:" +msgstr "Метка:" + +#: airtime_mvc/application/forms/EditAudioMD.php:67 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:15 +msgid "Composer:" +msgstr "Композитор:" + +#: airtime_mvc/application/forms/EditAudioMD.php:74 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:16 +msgid "Conductor:" +msgstr "Исполнитель:" + +#: airtime_mvc/application/forms/EditAudioMD.php:81 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:10 +msgid "Mood:" +msgstr "Настроение:" + +#: airtime_mvc/application/forms/EditAudioMD.php:89 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:14 +msgid "BPM:" +msgstr "BPM:" + +#: airtime_mvc/application/forms/EditAudioMD.php:98 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:17 +msgid "Copyright:" +msgstr "Авторское право:" + +#: airtime_mvc/application/forms/EditAudioMD.php:105 +msgid "ISRC Number:" +msgstr "ISRC номер:" + +#: airtime_mvc/application/forms/EditAudioMD.php:112 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:19 +msgid "Website:" +msgstr "Вебсайт:" + +#: airtime_mvc/application/forms/EditAudioMD.php:119 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:20 +msgid "Language:" +msgstr "Язык: " + +#: airtime_mvc/application/forms/Login.php:59 +#: airtime_mvc/application/views/scripts/login/index.phtml:3 +msgid "Login" +msgstr "Войти" + +#: airtime_mvc/application/forms/Login.php:77 +msgid "Type the characters you see in the picture below." +msgstr "Введите символы, которые вы видите на картинке ниже." + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:78 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:94 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:214 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:329 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:367 +#: airtime_mvc/application/controllers/LocaleController.php:139 +msgid "Select modifier" +msgstr "Выберите модификатор" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:79 +#: airtime_mvc/application/controllers/LocaleController.php:140 +msgid "contains" +msgstr "содержит" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:80 +#: airtime_mvc/application/controllers/LocaleController.php:141 +msgid "does not contain" +msgstr "не содержит:" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:81 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:95 +#: airtime_mvc/application/controllers/LocaleController.php:142 +msgid "is" +msgstr "является" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:82 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:96 +#: airtime_mvc/application/controllers/LocaleController.php:143 +msgid "is not" +msgstr "не является" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:83 +#: airtime_mvc/application/controllers/LocaleController.php:144 +msgid "starts with" +msgstr "начинается с" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:84 +#: airtime_mvc/application/controllers/LocaleController.php:145 +msgid "ends with" +msgstr "заканчивается" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:97 +#: airtime_mvc/application/controllers/LocaleController.php:146 +msgid "is greater than" +msgstr "больше, чем" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:98 +#: airtime_mvc/application/controllers/LocaleController.php:147 +msgid "is less than" +msgstr "меньше, чем" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:99 +#: airtime_mvc/application/controllers/LocaleController.php:148 +msgid "is in the range" +msgstr "находится в диапазоне" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:109 +msgid "hours" +msgstr "часов" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:110 +msgid "minutes" +msgstr "минут" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:111 +msgid "items" +msgstr "элементы" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:133 +msgid "Set smart block type:" +msgstr "Установка типа умного блока:" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:136 +#: airtime_mvc/application/controllers/LibraryController.php:459 +msgid "Static" +msgstr "Статический" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:137 +#: airtime_mvc/application/controllers/LibraryController.php:462 +msgid "Dynamic" +msgstr "Динамический" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:248 +msgid "Allow Repeat Tracks:" +msgstr "Разрешить повтор треков:" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:265 +msgid "Limit to" +msgstr "Ограничить до" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:287 +msgid "Generate playlist content and save criteria" +msgstr "Создать содержание плейлиста и сохранить критерии" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:289 +msgid "Generate" +msgstr "Создать" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:295 +msgid "Shuffle playlist content" +msgstr "Перемешать содержание плейлиста" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:297 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:20 +msgid "Shuffle" +msgstr "Перемешать" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:461 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:473 +msgid "Limit cannot be empty or smaller than 0" +msgstr "Ограничение не может быть пустым или менее 0" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:466 +msgid "Limit cannot be more than 24 hrs" +msgstr "Ограничение не может быть более 24 часов" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:476 +msgid "The value should be an integer" +msgstr "Значение должно быть целым числом" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:479 +msgid "500 is the max item limit value you can set" +msgstr "500 является максимально допустимым значением элемента" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:490 +msgid "You must select Criteria and Modifier" +msgstr "Вы должны выбрать критерии и модификаторы" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:497 +msgid "'Length' should be in '00:00:00' format" +msgstr "\"Длина\" должна быть в формате '00:00:00'" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:502 +#: airtime_mvc/application/forms/SmartBlockCriteria.php:515 +msgid "The value should be in timestamp format(eg. 0000-00-00 or 00-00-00 00:00:00)" +msgstr "Значение должно быть в формате временной метки (например, 0000-00-00 или 00-00-00 00:00:00)" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:529 +msgid "The value has to be numeric" +msgstr "Значение должно быть числом" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:534 +msgid "The value should be less then 2147483648" +msgstr "Значение должно быть меньше, чем 2147483648" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:539 +#, php-format +msgid "The value should be less than %s characters" +msgstr "Значение должно быть меньше, чем %s символов" + +#: airtime_mvc/application/forms/SmartBlockCriteria.php:546 +msgid "Value cannot be empty" +msgstr "Значение не может быть пустым" + +#: airtime_mvc/application/forms/ShowBuilder.php:72 +msgid "Show:" +msgstr "Программа:" + +#: airtime_mvc/application/forms/ShowBuilder.php:80 +msgid "All My Shows:" +msgstr "Все мои программы:" + +#: airtime_mvc/application/forms/AddShowLiveStream.php:10 +msgid "Use Airtime Authentication:" +msgstr "Использование идентификации Airtime:" + +#: airtime_mvc/application/forms/AddShowLiveStream.php:16 +msgid "Use Custom Authentication:" +msgstr "Использование пользовательской идентификации:" + +#: airtime_mvc/application/forms/AddShowLiveStream.php:26 +msgid "Custom Username" +msgstr "Пользовательские имя пользователя" + +#: airtime_mvc/application/forms/AddShowLiveStream.php:39 +msgid "Custom Password" +msgstr "Пользовательский пароль" + +#: airtime_mvc/application/forms/AddShowLiveStream.php:63 +msgid "Username field cannot be empty." +msgstr "Имя пользователя не может быть пустым." + +#: airtime_mvc/application/forms/AddShowLiveStream.php:68 +msgid "Password field cannot be empty." +msgstr "Пароль не может быть пустым." + +#: airtime_mvc/application/forms/GeneralPreferences.php:34 +msgid "Default Fade (s):" +msgstr "Время затухания по умолчанию:" + +#: airtime_mvc/application/forms/GeneralPreferences.php:39 +msgid "enter a time in seconds 0{.0}" +msgstr "Введите время в секундах 0 {0,0}" + +#: airtime_mvc/application/forms/GeneralPreferences.php:48 +#, php-format +msgid "Allow Remote Websites To Access \"Schedule\" Info?%s (Enable this to make front-end widgets work.)" +msgstr "Разрешить удаленным вебсайтам доступ к \"Расписание \" информация? %s (Активировать для работы виджетов интерфейса)." + +#: airtime_mvc/application/forms/GeneralPreferences.php:49 +msgid "Disabled" +msgstr "Отключено" + +#: airtime_mvc/application/forms/GeneralPreferences.php:50 +msgid "Enabled" +msgstr "Активировано" + +#: airtime_mvc/application/forms/GeneralPreferences.php:64 +msgid "Timezone" +msgstr "Часовой пояс" + +#: airtime_mvc/application/forms/GeneralPreferences.php:72 +msgid "Week Starts On" +msgstr "Начало недели" + +#: airtime_mvc/application/forms/GeneralPreferences.php:109 +#: airtime_mvc/application/controllers/LocaleController.php:239 +msgid "Sunday" +msgstr "Воскресенье" + +#: airtime_mvc/application/forms/GeneralPreferences.php:110 +#: airtime_mvc/application/controllers/LocaleController.php:240 +msgid "Monday" +msgstr "Понедельник" + +#: airtime_mvc/application/forms/GeneralPreferences.php:111 +#: airtime_mvc/application/controllers/LocaleController.php:241 +msgid "Tuesday" +msgstr "Вторник" + +#: airtime_mvc/application/forms/GeneralPreferences.php:112 +#: airtime_mvc/application/controllers/LocaleController.php:242 +msgid "Wednesday" +msgstr "Среда" + +#: airtime_mvc/application/forms/GeneralPreferences.php:113 +#: airtime_mvc/application/controllers/LocaleController.php:243 +msgid "Thursday" +msgstr "Четверг" + +#: airtime_mvc/application/forms/GeneralPreferences.php:114 +#: airtime_mvc/application/controllers/LocaleController.php:244 +msgid "Friday" +msgstr "Пятница" + +#: airtime_mvc/application/forms/GeneralPreferences.php:115 +#: airtime_mvc/application/controllers/LocaleController.php:245 +msgid "Saturday" +msgstr "Суббота" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:16 +msgid "Automatically Upload Recorded Shows" +msgstr "Автоматически загружать записанные программы" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:26 +msgid "Enable SoundCloud Upload" +msgstr "Включить загрузку SoundCloud" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:36 +msgid "Automatically Mark Files \"Downloadable\" on SoundCloud" +msgstr "Автоматически отмечать файлы \"Загружаемые\" на SoundCloud" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:47 +msgid "SoundCloud Email" +msgstr "SoundCloud e-mail" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:67 +msgid "SoundCloud Password" +msgstr "SoundCloud пароль" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:87 +msgid "SoundCloud Tags: (separate tags with spaces)" +msgstr "SoundCloud теги: (отдельные метки с пробелами)" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:99 +msgid "Default Genre:" +msgstr "Жанр по умолчанию:" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:109 +msgid "Default Track Type:" +msgstr "Тип трека по умолчанию:" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:113 +msgid "Original" +msgstr "Оригинал" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:114 +msgid "Remix" +msgstr "Ремикс" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:115 +msgid "Live" +msgstr "Прямой эфир" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:116 +msgid "Recording" +msgstr "Запись" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:117 +msgid "Spoken" +msgstr "Разговорный" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:118 +msgid "Podcast" +msgstr "Подкаст" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:119 +msgid "Demo" +msgstr "Демо" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:120 +msgid "Work in progress" +msgstr "Незавершенная работа" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:121 +msgid "Stem" +msgstr "Основа" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:122 +msgid "Loop" +msgstr "Цикл" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:123 +msgid "Sound Effect" +msgstr "Звуковой эффект" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:124 +msgid "One Shot Sample" +msgstr "Единичный сэмпл" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:125 +msgid "Other" +msgstr "Другое" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:133 +msgid "Default License:" +msgstr "Лицензия по умолчанию:" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:137 +msgid "The work is in the public domain" +msgstr "Работа находится в публичном домене" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:138 +msgid "All rights are reserved" +msgstr "Все права защищены" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:139 +msgid "Creative Commons Attribution" +msgstr "Лицензия Creative Commons Attribution" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:140 +msgid "Creative Commons Attribution Noncommercial" +msgstr "Некоммерческая Creative Commons Attribution" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:141 +msgid "Creative Commons Attribution No Derivative Works" +msgstr "Creative Commons Attribution без производных продуктов" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:142 +msgid "Creative Commons Attribution Share Alike" +msgstr "Creative Commons Attribution в равных долях" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:143 +msgid "Creative Commons Attribution Noncommercial Non Derivate Works" +msgstr "Creative Commons Attribution Non Некоммерческое производных работ" + +#: airtime_mvc/application/forms/SoundcloudPreferences.php:144 +msgid "Creative Commons Attribution Noncommercial Share Alike" +msgstr "Creative Commons Attribution некоммерческая в равных долях" + +#: airtime_mvc/application/controllers/DashboardController.php:36 +#: airtime_mvc/application/controllers/DashboardController.php:85 +msgid "You don't have permission to disconnect source." +msgstr "У вас нет разрешения отсоединить источник." + +#: airtime_mvc/application/controllers/DashboardController.php:38 +#: airtime_mvc/application/controllers/DashboardController.php:87 +msgid "There is no source connected to this input." +msgstr "Нет источника, подключенного к этому входу." + +#: airtime_mvc/application/controllers/DashboardController.php:82 +msgid "You don't have permission to switch source." +msgstr "У вас нет разрешения для переключения источника." + +#: airtime_mvc/application/controllers/LoginController.php:34 +msgid "Please enter your user name and password" +msgstr "Пожалуйста, введите ваше имя пользователя и пароль" + +#: airtime_mvc/application/controllers/LoginController.php:73 +msgid "Wrong username or password provided. Please try again." +msgstr "Неверное имя пользователя или пароль. Пожалуйста, попробуйте еще раз." + +#: airtime_mvc/application/controllers/LoginController.php:135 +msgid "Email could not be sent. Check your mail server settings and ensure it has been configured properly." +msgstr "E-mail не может быть отправлен. Проверьте настройки почтового сервера и убедитесь, что он был настроен должным образом." + +#: airtime_mvc/application/controllers/LoginController.php:138 +msgid "Given email not found." +msgstr "Данный email не найден." + +#: airtime_mvc/application/controllers/PreferenceController.php:70 +msgid "Preferences updated." +msgstr "Установки пользователя обновлены." + +#: airtime_mvc/application/controllers/PreferenceController.php:122 +msgid "Support setting updated." +msgstr "Настройка поддержки обновлена." + +#: airtime_mvc/application/controllers/PreferenceController.php:305 +msgid "Stream Setting Updated." +msgstr "Настройки потока обновлены." + +#: airtime_mvc/application/controllers/PreferenceController.php:332 +msgid "path should be specified" +msgstr "Путь должен быть указан" + +#: airtime_mvc/application/controllers/PreferenceController.php:427 +msgid "Problem with Liquidsoap..." +msgstr "Проблема с Liquidsoap ..." + +#: airtime_mvc/application/controllers/ErrorController.php:17 +msgid "Page not found" +msgstr "Страница не найдена" + +#: airtime_mvc/application/controllers/ErrorController.php:22 +msgid "Application error" +msgstr "Ошибка приложения" + +#: airtime_mvc/application/controllers/UserController.php:54 +msgid "Specific action is not allowed in demo version!" +msgstr "Конкретное действие не допускается в демо-версии!" + +#: airtime_mvc/application/controllers/UserController.php:78 +msgid "User added successfully!" +msgstr "Пользователь успешно добавлен!" + +#: airtime_mvc/application/controllers/UserController.php:80 +msgid "User updated successfully!" +msgstr "Пользователь успешно обновлен!" + +#: airtime_mvc/application/controllers/LocaleController.php:36 +msgid "Recording:" +msgstr "Запись:" + +#: airtime_mvc/application/controllers/LocaleController.php:37 +msgid "Master Stream" +msgstr "Поток Master" + +#: airtime_mvc/application/controllers/LocaleController.php:38 +msgid "Live Stream" +msgstr "Потоковый режим" + +#: airtime_mvc/application/controllers/LocaleController.php:39 +msgid "Nothing Scheduled" +msgstr "Ничего не запланировано" + +#: airtime_mvc/application/controllers/LocaleController.php:40 +msgid "Current Show:" +msgstr "Текущая программа:" + +#: airtime_mvc/application/controllers/LocaleController.php:41 +msgid "Current" +msgstr "Текущий" + +#: airtime_mvc/application/controllers/LocaleController.php:43 +msgid "You are running the latest version" +msgstr "Вы используете последнюю версию" + +#: airtime_mvc/application/controllers/LocaleController.php:44 +msgid "New version available: " +msgstr "Доступна новая версия:" + +#: airtime_mvc/application/controllers/LocaleController.php:45 +msgid "This version will soon be obsolete." +msgstr "Эта версия скоро устареет." + +#: airtime_mvc/application/controllers/LocaleController.php:46 +msgid "This version is no longer supported." +msgstr "Эта версия больше не поддерживается." + +#: airtime_mvc/application/controllers/LocaleController.php:47 +msgid "Please upgrade to " +msgstr "Пожалуйста, обновите до" + +#: airtime_mvc/application/controllers/LocaleController.php:49 +msgid "Add to current playlist" +msgstr "Добавить в текущий плейлист" + +#: airtime_mvc/application/controllers/LocaleController.php:50 +msgid "Add to current smart block" +msgstr "Добавить в текущем умный блок" + +#: airtime_mvc/application/controllers/LocaleController.php:51 +msgid "Adding 1 Item" +msgstr "Добавление 1 элемента" + +#: airtime_mvc/application/controllers/LocaleController.php:52 +#, php-format +msgid "Adding %s Items" +msgstr "Добавление %s элементов" + +#: airtime_mvc/application/controllers/LocaleController.php:53 +msgid "You can only add tracks to smart blocks." +msgstr "Вы можете добавить треки только в умные блоки." + +#: airtime_mvc/application/controllers/LocaleController.php:54 +#: airtime_mvc/application/controllers/PlaylistController.php:160 +msgid "You can only add tracks, smart blocks, and webstreams to playlists." +msgstr "Вы можете добавить только треки, умные блоки и веб-потоки к плейлистам." + +#: airtime_mvc/application/controllers/LocaleController.php:60 +msgid "Add to selected show" +msgstr "Добавить в избранную программу" + +#: airtime_mvc/application/controllers/LocaleController.php:61 +msgid "Select" +msgstr "Выбрать" + +#: airtime_mvc/application/controllers/LocaleController.php:62 +msgid "Select this page" +msgstr "Выбрать эту страницу" + +#: airtime_mvc/application/controllers/LocaleController.php:63 +msgid "Deselect this page" +msgstr "Отменить выбор страницы" + +#: airtime_mvc/application/controllers/LocaleController.php:64 +msgid "Deselect all" +msgstr "Отменить все выделения" + +#: airtime_mvc/application/controllers/LocaleController.php:65 +msgid "Are you sure you want to delete the selected item(s)?" +msgstr "Вы действительно хотите удалить выделенное?" + +#: airtime_mvc/application/controllers/LocaleController.php:69 +msgid "Bit Rate" +msgstr "Скорость передачи данных" + +#: airtime_mvc/application/controllers/LocaleController.php:86 +msgid "Sample Rate" +msgstr "Частота дискретизации" + +#: airtime_mvc/application/controllers/LocaleController.php:91 +msgid "Loading..." +msgstr "Загрузка..." + +#: airtime_mvc/application/controllers/LocaleController.php:92 +#: airtime_mvc/application/controllers/LocaleController.php:156 +msgid "All" +msgstr "Все" + +#: airtime_mvc/application/controllers/LocaleController.php:93 +msgid "Files" +msgstr "Файлы" + +#: airtime_mvc/application/controllers/LocaleController.php:94 +msgid "Playlists" +msgstr "Плейлисты" + +#: airtime_mvc/application/controllers/LocaleController.php:95 +msgid "Smart Blocks" +msgstr "Умные блоки" + +#: airtime_mvc/application/controllers/LocaleController.php:96 +msgid "Web Streams" +msgstr "Веб-потоки" + +#: airtime_mvc/application/controllers/LocaleController.php:97 +msgid "Unknown type: " +msgstr "Неизвестный тип:" + +#: airtime_mvc/application/controllers/LocaleController.php:98 +msgid "Are you sure you want to delete the selected item?" +msgstr "Вы действительно хотите удалить выбранный элемент?" + +#: airtime_mvc/application/controllers/LocaleController.php:99 +#: airtime_mvc/application/controllers/LocaleController.php:200 +msgid "Uploading in progress..." +msgstr "Загрузка продолжается ..." + +#: airtime_mvc/application/controllers/LocaleController.php:100 +msgid "Retrieving data from the server..." +msgstr "Получение данных с сервера ..." + +#: airtime_mvc/application/controllers/LocaleController.php:101 +msgid "The soundcloud id for this file is: " +msgstr "Soundcloud идентификатор для этого файла: " + +#: airtime_mvc/application/controllers/LocaleController.php:102 +msgid "There was an error while uploading to soundcloud." +msgstr "Произошла ошибка при загрузке на Soundcloud." + +#: airtime_mvc/application/controllers/LocaleController.php:103 +msgid "Error code: " +msgstr "Код ошибки: " + +#: airtime_mvc/application/controllers/LocaleController.php:104 +msgid "Error msg: " +msgstr "Сообщение об ошибке: " + +#: airtime_mvc/application/controllers/LocaleController.php:105 +msgid "Input must be a positive number" +msgstr "Вход должен быть положительным числом" + +#: airtime_mvc/application/controllers/LocaleController.php:106 +msgid "Input must be a number" +msgstr "Вход должен быть числом" + +#: airtime_mvc/application/controllers/LocaleController.php:107 +msgid "Input must be in the format: yyyy-mm-dd" +msgstr "Вход должен быть в формате: гггг-мм-дд" + +#: airtime_mvc/application/controllers/LocaleController.php:108 +msgid "Input must be in the format: hh:mm:ss.t" +msgstr "Вход должен быть в формате: чч: мм: сс" + +#: airtime_mvc/application/controllers/LocaleController.php:111 +#, php-format +msgid "You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?" +msgstr "Вы загружаете файлы. %sПереход на другой экран отменит процесс загрузки. %sВы уверены, что хотите покинуть страницу?" + +#: airtime_mvc/application/controllers/LocaleController.php:113 +msgid "please put in a time '00:00:00 (.0)'" +msgstr "пожалуйста, поставьте во время '00:00:00 (.0)'" + +#: airtime_mvc/application/controllers/LocaleController.php:114 +msgid "please put in a time in seconds '00 (.0)'" +msgstr "пожалуйста, поставьте во время в секундах '00 (.0)'" + +#: airtime_mvc/application/controllers/LocaleController.php:115 +msgid "Your browser does not support playing this file type: " +msgstr "Ваш браузер не поддерживает воспроизведения данного типа файлов: " + +#: airtime_mvc/application/controllers/LocaleController.php:116 +msgid "Dynamic block is not previewable" +msgstr "Динамический блок не подлежит предпросмотру" + +#: airtime_mvc/application/controllers/LocaleController.php:117 +msgid "Limit to: " +msgstr "Ограничить до: " + +#: airtime_mvc/application/controllers/LocaleController.php:118 +msgid "Playlist saved" +msgstr "Playlist сохранен" + +#: airtime_mvc/application/controllers/LocaleController.php:120 +msgid "Airtime is unsure about the status of this file. This can happen when the file is on a remote drive that is unaccessible or the file is in a directory that isn't 'watched' anymore." +msgstr "Airtime не уверен в статусе этого файла. Это возможно, если файл находится на удаленном недоступном диске или в папке, которая более не \"просматривается\"." + +#: airtime_mvc/application/controllers/LocaleController.php:122 +#, php-format +msgid "Listener Count on %s: %s" +msgstr "Слушатель считает на %s : %s" + +#: airtime_mvc/application/controllers/LocaleController.php:124 +msgid "Remind me in 1 week" +msgstr "Напомнить мне через 1 неделю" + +#: airtime_mvc/application/controllers/LocaleController.php:125 +msgid "Remind me never" +msgstr "Не напоминать никогда" + +#: airtime_mvc/application/controllers/LocaleController.php:126 +msgid "Yes, help Airtime" +msgstr "Да, помочь Airtime" + +#: airtime_mvc/application/controllers/LocaleController.php:127 +#: airtime_mvc/application/controllers/LocaleController.php:182 +msgid "Image must be one of jpg, jpeg, png, or gif" +msgstr "Изображение должно быть в любом из следующих форматов: jpg, jpeg, png или gif" + +#: airtime_mvc/application/controllers/LocaleController.php:130 +msgid "A static smart block will save the criteria and generate the block content immediately. This allows you to edit and view it in the Library before adding it to a show." +msgstr "Статический умный блок сохранит критерии и немедленно создаст контент блока. Это позволяет редактировать и просматривать его в библиотеке, прежде чем добавить его в программу." + +#: airtime_mvc/application/controllers/LocaleController.php:132 +msgid "A dynamic smart block will only save the criteria. The block content will get generated upon adding it to a show. You will not be able to view and edit the content in the Library." +msgstr "Динамический умный блок сохранит только критерии. Содержания блока будете сгенерировано после добавления его в программу. Вы не сможете просматривать и редактировать содержимое в библиотеке." + +#: airtime_mvc/application/controllers/LocaleController.php:134 +msgid "The desired block length will not be reached if Airtime cannot find enough unique tracks to match your criteria. Enable this option if you wish to allow tracks to be added multiple times to the smart block." +msgstr "Желаемая длина блока не будет достигнута, если Airtime не найдет уникальных треков, соответствующих вашим критериям. Активируйте эту опцию, если хотите неоднократного добавления треков в умный блок." + +#: airtime_mvc/application/controllers/LocaleController.php:135 +msgid "Smart block shuffled" +msgstr "Умный блок перемешан" + +#: airtime_mvc/application/controllers/LocaleController.php:136 +msgid "Smart block generated and criteria saved" +msgstr "Умный блок создан и критерии сохранены" + +#: airtime_mvc/application/controllers/LocaleController.php:137 +msgid "Smart block saved" +msgstr "Умный блок сохранен" + +#: airtime_mvc/application/controllers/LocaleController.php:138 +msgid "Processing..." +msgstr "Обработка ..." + +#: airtime_mvc/application/controllers/LocaleController.php:152 +msgid "Played" +msgstr "Проиграно" + +#: airtime_mvc/application/controllers/LocaleController.php:158 +msgid "Choose Storage Folder" +msgstr "Выберите папку для хранения" + +#: airtime_mvc/application/controllers/LocaleController.php:159 +msgid "Choose Folder to Watch" +msgstr "Выберите папку для просмотра" + +#: airtime_mvc/application/controllers/LocaleController.php:161 +msgid "" +"Are you sure you want to change the storage folder?\n" +"This will remove the files from your Airtime library!" +msgstr "" +"Вы уверены, что хотите изменить папку хранения? \n" +" Файлы из вашей библиотеки будут удалены!" + +#: airtime_mvc/application/controllers/LocaleController.php:162 +#: airtime_mvc/application/views/scripts/preference/directory-config.phtml:2 +msgid "Manage Media Folders" +msgstr "Управление папками медиа-файлов" + +#: airtime_mvc/application/controllers/LocaleController.php:163 +msgid "Are you sure you want to remove the watched folder?" +msgstr "Вы уверены, что хотите удалить просмотренную папку?" + +#: airtime_mvc/application/controllers/LocaleController.php:164 +msgid "This path is currently not accessible." +msgstr "Этот путь в настоящий момент недоступен." + +#: airtime_mvc/application/controllers/LocaleController.php:166 +msgid "Connected to the streaming server" +msgstr "Подключено к потоковому серверу" + +#: airtime_mvc/application/controllers/LocaleController.php:167 +msgid "The stream is disabled" +msgstr "Поток отключен" + +#: airtime_mvc/application/controllers/LocaleController.php:169 +msgid "Can not connect to the streaming server" +msgstr "Не удается подключиться к потоковому серверу" + +#: airtime_mvc/application/controllers/LocaleController.php:171 +msgid "If Airtime is behind a router or firewall, you may need to configure port forwarding and this field information will be incorrect. In this case you will need to manually update this field so it shows the correct host/port/mount that your DJ's need to connect to. The allowed range is between 1024 and 49151." +msgstr "Если Airtime находится за маршрутизатором или брандмауэром, вам может потребоваться настроить переадресацию портов, и информация в этом поле будет неверной. В этом случае вам нужно будет вручную обновлять это поле так, чтобы оно показывало верный хост / порт / сборку, к которым должен подключиться ваш диджей. Допустимый диапазон: от 1024 до 49151." + +#: airtime_mvc/application/controllers/LocaleController.php:172 +#, php-format +msgid "For more details, please read the %sAirtime Manual%s" +msgstr "Для более подробной информации, пожалуйста, прочитайте %sРуководство Airtime %s" + +#: airtime_mvc/application/controllers/LocaleController.php:174 +msgid "Check this option to enable metadata for OGG streams (stream metadata is the track title, artist, and show name that is displayed in an audio player). VLC and mplayer have a serious bug when playing an OGG/VORBIS stream that has metadata information enabled: they will disconnect from the stream after every song. If you are using an OGG stream and your listeners do not require support for these audio players, then feel free to enable this option." +msgstr "Отметьте эту опцию для активации метаданных OGG потока (метаданные потока это название композиции, имя исполнителя и название шоу, которое отображается в аудио-плейере). В VLC и mplayer наблюдается серьезная ошибка при воспроизведении потоков OGG/VORBIS, в которых метаданные включены: они будут отключаться от потока после каждой песни. Если вы используете поток OGG и ваши слушатели не требуют поддержки этих аудиоплееров, то не стесняйтесь включить эту опцию." + +#: airtime_mvc/application/controllers/LocaleController.php:175 +msgid "Check this box to automatically switch off Master/Show source upon source disconnection." +msgstr "Выберите эту опцию для автоматического выключения источника Master / Show после отключения источника." + +#: airtime_mvc/application/controllers/LocaleController.php:176 +msgid "Check this box to automatically switch on Master/Show source upon source connection." +msgstr "Выберите эту опцию для автоматического включения источника Master / Show после соединения с источником." + +#: airtime_mvc/application/controllers/LocaleController.php:177 +msgid "If your Icecast server expects a username of 'source', this field can be left blank." +msgstr "Если ваш сервер Icecast ожидает имя пользователя \"источника\", это поле можно оставить пустым." + +#: airtime_mvc/application/controllers/LocaleController.php:178 +#: airtime_mvc/application/controllers/LocaleController.php:187 +msgid "If your live streaming client does not ask for a username, this field should be 'source'." +msgstr "Если ваш клиент потокового режима не запросит имя пользователя, то это поле должно быть 'источником'." + +#: airtime_mvc/application/controllers/LocaleController.php:180 +msgid "If you change the username or password values for an enabled stream the playout engine will be rebooted and your listeners will hear silence for 5-10 seconds. Changing the following fields will NOT cause a reboot: Stream Label (Global Settings), and Switch Transition Fade(s), Master Username, and Master Password (Input Stream Settings). If Airtime is recording, and if the change causes a playout engine restart, the recording will be interrupted." +msgstr "Если вы измените имя пользователя или пароль для активного потока, механизм воспроизведения будет перезагружен, а в эфире в течение 5-10 секунд будет звучать тишина. Изменение следующих полей НЕ вызовет перезагрузки: Метка потока (Общие настройки), Переключение переходов затухания, Пользовательское имя Master, Пароль Master (Настройки входящих потоков). Если Airtime ведет запись, и если изменения вызовут перезапуск механизма воспроизведения, запись будет остановлена." + +#: airtime_mvc/application/controllers/LocaleController.php:184 +msgid "No result found" +msgstr "Результатов не найдено" + +#: airtime_mvc/application/controllers/LocaleController.php:185 +msgid "This follows the same security pattern for the shows: only users assigned to the show can connect." +msgstr "Действует та же схема безопасности программы: только пользователи, назначенные для программы, могут подключиться." + +#: airtime_mvc/application/controllers/LocaleController.php:186 +msgid "Specify custom authentication which will work only for this show." +msgstr "Укажите пользовательскую идентификацию, которая будет работать только для этой программы." + +#: airtime_mvc/application/controllers/LocaleController.php:188 +msgid "The show instance doesn't exist anymore!" +msgstr "Выпуска программы больше не существует!" + +#: airtime_mvc/application/controllers/LocaleController.php:192 +msgid "Show" +msgstr "Программа" + +#: airtime_mvc/application/controllers/LocaleController.php:193 +msgid "Show is empty" +msgstr "Программа не заполнена" + +#: airtime_mvc/application/controllers/LocaleController.php:194 +msgid "1m" +msgstr "1мин" + +#: airtime_mvc/application/controllers/LocaleController.php:195 +msgid "5m" +msgstr "5мин" + +#: airtime_mvc/application/controllers/LocaleController.php:196 +msgid "10m" +msgstr "10мин" + +#: airtime_mvc/application/controllers/LocaleController.php:197 +msgid "15m" +msgstr "15мин" + +#: airtime_mvc/application/controllers/LocaleController.php:198 +msgid "30m" +msgstr "30мин" + +#: airtime_mvc/application/controllers/LocaleController.php:199 +msgid "60m" +msgstr "60мин" + +#: airtime_mvc/application/controllers/LocaleController.php:201 +msgid "Retreiving data from the server..." +msgstr "Retreiving данных с сервера ..." + +#: airtime_mvc/application/controllers/LocaleController.php:207 +msgid "This show has no scheduled content." +msgstr "Это шоу не имеет запланированного содержания." + +#: airtime_mvc/application/controllers/LocaleController.php:211 +msgid "January" +msgstr "января" + +#: airtime_mvc/application/controllers/LocaleController.php:212 +msgid "February" +msgstr "февраля" + +#: airtime_mvc/application/controllers/LocaleController.php:213 +msgid "March" +msgstr "марта" + +#: airtime_mvc/application/controllers/LocaleController.php:214 +msgid "April" +msgstr "апреля" + +#: airtime_mvc/application/controllers/LocaleController.php:215 +#: airtime_mvc/application/controllers/LocaleController.php:227 +msgid "May" +msgstr "мая" + +#: airtime_mvc/application/controllers/LocaleController.php:216 +msgid "June" +msgstr "июня" + +#: airtime_mvc/application/controllers/LocaleController.php:217 +msgid "July" +msgstr "июля" + +#: airtime_mvc/application/controllers/LocaleController.php:218 +msgid "August" +msgstr "августа" + +#: airtime_mvc/application/controllers/LocaleController.php:219 +msgid "September" +msgstr "сентября" + +#: airtime_mvc/application/controllers/LocaleController.php:220 +msgid "October" +msgstr "октября" + +#: airtime_mvc/application/controllers/LocaleController.php:221 +msgid "November" +msgstr "ноября" + +#: airtime_mvc/application/controllers/LocaleController.php:222 +msgid "December" +msgstr "декабря" + +#: airtime_mvc/application/controllers/LocaleController.php:223 +msgid "Jan" +msgstr "янв" + +#: airtime_mvc/application/controllers/LocaleController.php:224 +msgid "Feb" +msgstr "фев" + +#: airtime_mvc/application/controllers/LocaleController.php:225 +msgid "Mar" +msgstr "март" + +#: airtime_mvc/application/controllers/LocaleController.php:226 +msgid "Apr" +msgstr "апр" + +#: airtime_mvc/application/controllers/LocaleController.php:228 +msgid "Jun" +msgstr "июн" + +#: airtime_mvc/application/controllers/LocaleController.php:229 +msgid "Jul" +msgstr "июл" + +#: airtime_mvc/application/controllers/LocaleController.php:230 +msgid "Aug" +msgstr "авг" + +#: airtime_mvc/application/controllers/LocaleController.php:231 +msgid "Sep" +msgstr "сент" + +#: airtime_mvc/application/controllers/LocaleController.php:232 +msgid "Oct" +msgstr "окт" + +#: airtime_mvc/application/controllers/LocaleController.php:233 +msgid "Nov" +msgstr "нояб" + +#: airtime_mvc/application/controllers/LocaleController.php:234 +msgid "Dec" +msgstr "дек" + +#: airtime_mvc/application/controllers/LocaleController.php:235 +msgid "today" +msgstr "сегодня" + +#: airtime_mvc/application/controllers/LocaleController.php:236 +msgid "day" +msgstr "день" + +#: airtime_mvc/application/controllers/LocaleController.php:237 +msgid "week" +msgstr "неделя" + +#: airtime_mvc/application/controllers/LocaleController.php:238 +msgid "month" +msgstr "месяц" + +#: airtime_mvc/application/controllers/LocaleController.php:253 +msgid "Shows longer than their scheduled time will be cut off by a following show." +msgstr "Программы, превышающие время, запланированное в расписании, будут обрезаны следующей программой." + +#: airtime_mvc/application/controllers/LocaleController.php:254 +msgid "Cancel Current Show?" +msgstr "Отменить текущую программу?" + +#: airtime_mvc/application/controllers/LocaleController.php:255 +#: airtime_mvc/application/controllers/LocaleController.php:294 +msgid "Stop recording current show?" +msgstr "Остановить запись текущей программы?" + +#: airtime_mvc/application/controllers/LocaleController.php:256 +msgid "Ok" +msgstr "ОК" + +#: airtime_mvc/application/controllers/LocaleController.php:257 +msgid "Contents of Show" +msgstr "Содержание программы" + +#: airtime_mvc/application/controllers/LocaleController.php:260 +msgid "Remove all content?" +msgstr "Удалить все содержание?" + +#: airtime_mvc/application/controllers/LocaleController.php:262 +msgid "Delete selected item(s)?" +msgstr "Удалить выбранный элемент(ы)?" + +#: airtime_mvc/application/controllers/LocaleController.php:263 +#: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:5 +msgid "Start" +msgstr "Начало" + +#: airtime_mvc/application/controllers/LocaleController.php:264 +msgid "End" +msgstr "Конец" + +#: airtime_mvc/application/controllers/LocaleController.php:265 +msgid "Duration" +msgstr "Продолжительность" + +#: airtime_mvc/application/controllers/LocaleController.php:271 +msgid "Cue In" +msgstr "Начало звучания" + +#: airtime_mvc/application/controllers/LocaleController.php:272 +msgid "Cue Out" +msgstr "Окончание звучания" + +#: airtime_mvc/application/controllers/LocaleController.php:273 +msgid "Fade In" +msgstr "Усиление" + +#: airtime_mvc/application/controllers/LocaleController.php:274 +msgid "Fade Out" +msgstr "Затухание" + +#: airtime_mvc/application/controllers/LocaleController.php:275 +msgid "Show Empty" +msgstr "Программа не заполнена" + +#: airtime_mvc/application/controllers/LocaleController.php:276 +msgid "Recording From Line In" +msgstr "Запись с линейного входа" + +#: airtime_mvc/application/controllers/LocaleController.php:281 +msgid "Cannot schedule outside a show." +msgstr "Нельзя планировать вне рамок программы." + +#: airtime_mvc/application/controllers/LocaleController.php:282 +msgid "Moving 1 Item" +msgstr "Перемещение 1 элемента" + +#: airtime_mvc/application/controllers/LocaleController.php:283 +#, php-format +msgid "Moving %s Items" +msgstr "Перемещение %s элементов" + +#: airtime_mvc/application/controllers/LocaleController.php:286 +msgid "Select all" +msgstr "Выделить все" + +#: airtime_mvc/application/controllers/LocaleController.php:287 +msgid "Select none" +msgstr "Снять выделения" + +#: airtime_mvc/application/controllers/LocaleController.php:288 +msgid "Remove overbooked tracks" +msgstr "Удалить лишние треки" + +#: airtime_mvc/application/controllers/LocaleController.php:289 +msgid "Remove selected scheduled items" +msgstr "Удалить выбранные запланированные элементы" + +#: airtime_mvc/application/controllers/LocaleController.php:290 +msgid "Jump to the current playing track" +msgstr "Перейти к текущей проигрываемой дорожке" + +#: airtime_mvc/application/controllers/LocaleController.php:291 +msgid "Cancel current show" +msgstr "Отмена текущей программы" + +#: airtime_mvc/application/controllers/LocaleController.php:296 +msgid "Open library to add or remove content" +msgstr "Открыть библиотеку, чтобы добавить или удалить содержимое" + +#: airtime_mvc/application/controllers/LocaleController.php:297 +#: airtime_mvc/application/controllers/ScheduleController.php:262 +#: airtime_mvc/application/views/scripts/showbuilder/index.phtml:15 +msgid "Add / Remove Content" +msgstr "Добавить / удалить содержимое" + +#: airtime_mvc/application/controllers/LocaleController.php:299 +msgid "in use" +msgstr "используется" + +#: airtime_mvc/application/controllers/LocaleController.php:300 +msgid "Disk" +msgstr "Диск" + +#: airtime_mvc/application/controllers/LocaleController.php:302 +msgid "Look in" +msgstr "Заглянуть" + +#: airtime_mvc/application/controllers/LocaleController.php:304 +msgid "Open" +msgstr "Открыть" + +#: airtime_mvc/application/controllers/LocaleController.php:311 +msgid "Show / hide columns" +msgstr "Показать / скрыть столбцы" + +#: airtime_mvc/application/controllers/LocaleController.php:313 +msgid "From {from} to {to}" +msgstr "С {с} до {до}" + +#: airtime_mvc/application/controllers/LocaleController.php:314 +msgid "kbps" +msgstr "кбит" + +#: airtime_mvc/application/controllers/LocaleController.php:315 +msgid "yyyy-mm-dd" +msgstr "гггг-мм-дд" + +#: airtime_mvc/application/controllers/LocaleController.php:316 +msgid "hh:mm:ss.t" +msgstr "чч: мм: сс" + +#: airtime_mvc/application/controllers/LocaleController.php:317 +msgid "kHz" +msgstr "кГц" + +#: airtime_mvc/application/controllers/LocaleController.php:320 +msgid "Su" +msgstr "Вс" + +#: airtime_mvc/application/controllers/LocaleController.php:321 +msgid "Mo" +msgstr "Пн" + +#: airtime_mvc/application/controllers/LocaleController.php:322 +msgid "Tu" +msgstr "Вт" + +#: airtime_mvc/application/controllers/LocaleController.php:323 +msgid "We" +msgstr "Ср" + +#: airtime_mvc/application/controllers/LocaleController.php:324 +msgid "Th" +msgstr "Чт" + +#: airtime_mvc/application/controllers/LocaleController.php:325 +msgid "Fr" +msgstr "Пт" + +#: airtime_mvc/application/controllers/LocaleController.php:326 +msgid "Sa" +msgstr "Сб" + +#: airtime_mvc/application/controllers/LocaleController.php:327 +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:3 +msgid "Close" +msgstr "Закрыть" + +#: airtime_mvc/application/controllers/LocaleController.php:329 +msgid "Hour" +msgstr "Часов" + +#: airtime_mvc/application/controllers/LocaleController.php:330 +msgid "Minute" +msgstr "Минут" + +#: airtime_mvc/application/controllers/LocaleController.php:331 +msgid "Done" +msgstr "Сделано" + +#: airtime_mvc/application/controllers/ShowbuilderController.php:190 +#: airtime_mvc/application/controllers/LibraryController.php:159 +msgid "Preview" +msgstr "Предварительный просмотр" + +#: airtime_mvc/application/controllers/ShowbuilderController.php:192 +msgid "Select cursor" +msgstr "Выбрать курсор" + +#: airtime_mvc/application/controllers/ShowbuilderController.php:193 +msgid "Remove cursor" +msgstr "Удалить курсор" + +#: airtime_mvc/application/controllers/ShowbuilderController.php:198 +#: airtime_mvc/application/controllers/LibraryController.php:187 +#: airtime_mvc/application/controllers/LibraryController.php:215 +#: airtime_mvc/application/controllers/LibraryController.php:232 +#: airtime_mvc/application/controllers/ScheduleController.php:316 +#: airtime_mvc/application/controllers/ScheduleController.php:323 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:26 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:23 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:18 +msgid "Delete" +msgstr "Удалить" + +#: airtime_mvc/application/controllers/ShowbuilderController.php:212 +msgid "show does not exist" +msgstr "Программа не существует" + +#: airtime_mvc/application/controllers/ApiController.php:56 +#: airtime_mvc/application/controllers/ApiController.php:83 +msgid "You are not allowed to access this resource." +msgstr "Вы не имеете доступа к этому ресурсу." + +#: airtime_mvc/application/controllers/ApiController.php:285 +#: airtime_mvc/application/controllers/ApiController.php:324 +msgid "You are not allowed to access this resource. " +msgstr "Вы не имеете доступа к этому ресурсу." + +#: airtime_mvc/application/controllers/ApiController.php:505 +msgid "File does not exist in Airtime." +msgstr "Файл не существует в Airtime." + +#: airtime_mvc/application/controllers/ApiController.php:518 +msgid "File does not exist in Airtime" +msgstr "Файл не существует в Airtime" + +#: airtime_mvc/application/controllers/ApiController.php:530 +msgid "File doesn't exist in Airtime." +msgstr "Файл не существует в Airtime." + +#: airtime_mvc/application/controllers/ApiController.php:576 +msgid "Bad request. no 'mode' parameter passed." +msgstr "Неверный запрос. параметр 'режим' не прошел." + +#: airtime_mvc/application/controllers/ApiController.php:586 +msgid "Bad request. 'mode' parameter is invalid" +msgstr "Неверный запрос. параметр 'режим' является недопустимым" + +#: airtime_mvc/application/controllers/LibraryController.php:93 +#: airtime_mvc/application/controllers/PlaylistController.php:127 +#, php-format +msgid "%s not found" +msgstr "%s не найден" + +#: airtime_mvc/application/controllers/LibraryController.php:102 +#: airtime_mvc/application/controllers/PlaylistController.php:148 +msgid "Something went wrong." +msgstr "Что-то пошло не так." + +#: airtime_mvc/application/controllers/LibraryController.php:180 +#: airtime_mvc/application/controllers/LibraryController.php:203 +#: airtime_mvc/application/controllers/LibraryController.php:224 +msgid "Add to Playlist" +msgstr "Добавить в плейлист" + +#: airtime_mvc/application/controllers/LibraryController.php:182 +msgid "Add to Smart Block" +msgstr "Добавить в умный блок" + +#: airtime_mvc/application/controllers/LibraryController.php:188 +#: airtime_mvc/application/views/scripts/library/edit-file-md.phtml:2 +msgid "Edit Metadata" +msgstr "Редактировать метаданные" + +#: airtime_mvc/application/controllers/LibraryController.php:192 +#: airtime_mvc/application/controllers/ScheduleController.php:900 +msgid "Download" +msgstr "Загрузить" + +#: airtime_mvc/application/controllers/LibraryController.php:210 +#: airtime_mvc/application/controllers/LibraryController.php:230 +msgid "Edit" +msgstr "Редактировать" + +#: airtime_mvc/application/controllers/LibraryController.php:243 +msgid "Soundcloud" +msgstr "Soundcloud" + +#: airtime_mvc/application/controllers/LibraryController.php:249 +#: airtime_mvc/application/controllers/ScheduleController.php:285 +msgid "View on Soundcloud" +msgstr "Взгляд на Soundcloud" + +#: airtime_mvc/application/controllers/LibraryController.php:253 +#: airtime_mvc/application/controllers/ScheduleController.php:288 +msgid "Re-upload to SoundCloud" +msgstr "Повторно загрузить на SoundCloud" + +#: airtime_mvc/application/controllers/LibraryController.php:255 +#: airtime_mvc/application/controllers/ScheduleController.php:288 +msgid "Upload to SoundCloud" +msgstr "Загрузить на SoundCloud" + +#: airtime_mvc/application/controllers/LibraryController.php:262 +msgid "No action available" +msgstr "Нет доступных действий" + +#: airtime_mvc/application/controllers/LibraryController.php:282 +msgid "You don't have permission to delete selected items." +msgstr "У вас нет разрешения на удаление выбранных элементов." + +#: airtime_mvc/application/controllers/LibraryController.php:331 +msgid "Could not delete some scheduled files." +msgstr "Не удается удалить некоторые запланированные файлы." + +#: airtime_mvc/application/controllers/PlaylistController.php:45 +#, php-format +msgid "You are viewing an older version of %s" +msgstr "Вы просматриваете старые версии %s" + +#: airtime_mvc/application/controllers/PlaylistController.php:120 +msgid "You cannot add tracks to dynamic blocks." +msgstr "Вы не можете добавить треки в динамические блоки." + +#: airtime_mvc/application/controllers/PlaylistController.php:141 +#, php-format +msgid "You don't have permission to delete selected %s(s)." +msgstr "У вас нет разрешения на удаление выбранных %s(s)." + +#: airtime_mvc/application/controllers/PlaylistController.php:154 +msgid "You can only add tracks to smart block." +msgstr "Вы можете добавить треки только в умный блок." + +#: airtime_mvc/application/controllers/PlaylistController.php:172 +msgid "Untitled Playlist" +msgstr "Плейлист без названия" + +#: airtime_mvc/application/controllers/PlaylistController.php:174 +msgid "Untitled Smart Block" +msgstr "Умный блок без названия" + +#: airtime_mvc/application/controllers/PlaylistController.php:437 +msgid "Unknown Playlist" +msgstr "Неизвестный плейлист" + +#: airtime_mvc/application/controllers/ScheduleController.php:253 +msgid "View Recorded File Metadata" +msgstr "Просмотр метаданных записанного файла" + +#: airtime_mvc/application/controllers/ScheduleController.php:265 +msgid "Remove All Content" +msgstr "Удалить все содержимое" + +#: airtime_mvc/application/controllers/ScheduleController.php:272 +msgid "Show Content" +msgstr "Показать содержимое" + +#: airtime_mvc/application/controllers/ScheduleController.php:296 +#: airtime_mvc/application/controllers/ScheduleController.php:303 +msgid "Cancel Current Show" +msgstr "Отмена текущей программы" + +#: airtime_mvc/application/controllers/ScheduleController.php:300 +#: airtime_mvc/application/controllers/ScheduleController.php:310 +msgid "Edit Show" +msgstr "Редактировать программу" + +#: airtime_mvc/application/controllers/ScheduleController.php:318 +msgid "Delete This Instance" +msgstr "Удалить этот выпуск" + +#: airtime_mvc/application/controllers/ScheduleController.php:320 +msgid "Delete This Instance and All Following" +msgstr "Удалить этот выпуск и все последующие" + +#: airtime_mvc/application/controllers/ScheduleController.php:446 +#, php-format +msgid "Rebroadcast of show %s from %s at %s" +msgstr "Ретрансляция программы %s от %s в %s" + +#: airtime_mvc/application/controllers/WebstreamController.php:29 +#: airtime_mvc/application/controllers/WebstreamController.php:33 +msgid "Untitled Webstream" +msgstr "Веб-поток без названия" + +#: airtime_mvc/application/controllers/WebstreamController.php:138 +msgid "Webstream saved." +msgstr "Веб-поток сохранен." + +#: airtime_mvc/application/controllers/WebstreamController.php:146 +msgid "Invalid form values." +msgstr "Недопустимые значения формы." + +#: airtime_mvc/application/views/scripts/listenerstat/index.phtml:2 +msgid "Listener Count Over Time" +msgstr "Слушатель граф с течением времени" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:3 +msgid "Previous:" +msgstr "Предыдущая:" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:10 +msgid "Next:" +msgstr "Следующая:" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:24 +msgid "Source Streams" +msgstr "Исходные потоки" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:29 +msgid "Master Source" +msgstr "Источник Master " + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:38 +msgid "Show Source" +msgstr "Источник Show " + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:45 +msgid "Scheduled Play" +msgstr "Запланированное проигрывание" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:54 +msgid "ON AIR" +msgstr "В эфире" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:55 +msgid "Listen" +msgstr "Слушать" + +#: airtime_mvc/application/views/scripts/partialviews/header.phtml:59 +msgid "Station time" +msgstr "Время станции" + +#: airtime_mvc/application/views/scripts/partialviews/trialBox.phtml:3 +msgid "Your trial expires in" +msgstr "Ваш испытательный период истекает через" + +#: airtime_mvc/application/views/scripts/partialviews/trialBox.phtml:9 +msgid "Purchase your copy of Airtime" +msgstr "Купить копию Airtime" + +#: airtime_mvc/application/views/scripts/partialviews/trialBox.phtml:9 +msgid "My Account" +msgstr "Моя учетная запись" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:3 +msgid "Manage Users" +msgstr "Управление пользователями" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:10 +msgid "New User" +msgstr "Новый пользователь" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:17 +msgid "id" +msgstr "id" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:19 +msgid "First Name" +msgstr "Имя" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:20 +msgid "Last Name" +msgstr "Фамилия" + +#: airtime_mvc/application/views/scripts/user/add-user.phtml:21 +msgid "User Type" +msgstr "Тип пользователя" + +#: airtime_mvc/application/views/scripts/dashboard/about.phtml:5 +#, php-format +msgid "%sAirtime%s %s, , the open radio software for scheduling and remote station management. %s" +msgstr "%sAirtime%s %s , открытое программное обеспечение для радио для планирования и удаленного управления станцией.%s" + +#: airtime_mvc/application/views/scripts/dashboard/about.phtml:13 +#, php-format +msgid "%sSourcefabric%s o.p.s. Airtime is distributed under the %sGNU GPL v.3%s" +msgstr "%sSourcefabric%s o.p.s. Airtime распространяется в соответствии с %sGNU GPL v.3%s" + +#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:50 +msgid "Select stream:" +msgstr "Выбор потока:" + +#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:76 +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:50 +msgid "mute" +msgstr "отключить звук" + +#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:77 +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:53 +msgid "unmute" +msgstr "включить звук" + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:3 +msgid "Welcome to Airtime!" +msgstr "Добро пожаловать в Airtime!" + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:4 +msgid "Here's how you can get started using Airtime to automate your broadcasts: " +msgstr "Вот как вы можете начать использовать Airtime для автоматизации вещания: " + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:7 +msgid "Begin by adding your files to the library using the 'Add Media' menu button. You can drag and drop your files to this window too." +msgstr "Начните с добавления файлов в библиотеку с помощью кнопки \"Добавить медиа-файлы\". Вы также можете перетащить файлы в это окно." + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:8 +msgid "Create a show by going to 'Calendar' in the menu bar, and then clicking the '+ Show' icon. This can be either a one-time or repeating show. Only admins and program managers can add shows." +msgstr "Создайте программу в разделе 'Календарь' и кликните \"+ Show '. Это может быть разовая или повторяющаяся программа. Только администраторы и менеджеры могут добавить программу." + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:9 +msgid "Add media to the show by going to your show in the Schedule calendar, left-clicking on it and selecting 'Add / Remove Content'" +msgstr "Добавить медиа-файлы программы в Календаре, кликнув левой кнопкой и выбрав \"Добавить/Удалить контент\" в выпадающем меню" + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:10 +msgid "Select your media from the left pane and drag them to your show in the right pane." +msgstr "Выберите медиа-файлы на левой панели и перетащите их в вашу программу на правой панели." + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:12 +msgid "Then you're good to go!" +msgstr "Вы готовы!" + +#: airtime_mvc/application/views/scripts/dashboard/help.phtml:13 +#, php-format +msgid "For more detailed help, read the %suser manual%s." +msgstr "Для более подробной справки читать %sруководство пользователя%s ." + +#: airtime_mvc/application/views/scripts/playlist/update.phtml:40 +msgid "Expand Static Block" +msgstr "Развернуть статический блок" + +#: airtime_mvc/application/views/scripts/playlist/update.phtml:45 +msgid "Expand Dynamic Block" +msgstr "Развернуть динамический блок" + +#: airtime_mvc/application/views/scripts/playlist/update.phtml:98 +msgid "Empty smart block" +msgstr "Очистить умный блок" + +#: airtime_mvc/application/views/scripts/playlist/update.phtml:100 +msgid "Empty playlist" +msgstr "Очистить плейлист" + +#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:3 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:66 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:71 +msgid "Fade out: " +msgstr "Затухание: " + +#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:3 +#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:10 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:68 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:71 +msgid "(ss.t)" +msgstr "(сс)" + +#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:10 +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:63 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:68 +msgid "Fade in: " +msgstr "Усиление: " + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:10 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:10 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:4 +msgid "New" +msgstr "Новый" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:13 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:13 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:7 +msgid "New Playlist" +msgstr "Новый плейлист" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:14 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:14 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:8 +msgid "New Smart Block" +msgstr "Новый умный блок" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:15 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:15 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:9 +msgid "New Webstream" +msgstr "Новый веб-поток" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:20 +msgid "Shuffle playlist" +msgstr "Перемешать плейлист" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:23 +msgid "Save playlist" +msgstr "Сохранить плейлист" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:30 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:27 +msgid "Playlist crossfade" +msgstr "Перекрестное затухание композиций плейлиста" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:49 +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:51 +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:38 +msgid "View / edit description" +msgstr "Просмотр / редактирование описания" + +#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:81 +msgid "No open playlist" +msgstr "Нет открытых плейлистов" + +#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:86 +msgid "No open smart block" +msgstr "Нет открытых умных блоков" + +#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:2 +msgid "Cue In: " +msgstr "Начало звучания: " + +#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:2 +#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:7 +msgid "(hh:mm:ss.t)" +msgstr "(чч: мм: сс)" + +#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:7 +msgid "Cue Out: " +msgstr "Окончание звучания: " + +#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:12 +msgid "Original Length:" +msgstr "Исходная длина:" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:6 +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:40 +msgid "Add this show" +msgstr "Добавить эту программу" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:6 +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:40 +msgid "Update show" +msgstr "Обновить программу" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:10 +msgid "What" +msgstr "Что" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:14 +msgid "When" +msgstr "Когда" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:19 +msgid "Live Stream Input" +msgstr "Потоковый ввод" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:23 +msgid "Record & Rebroadcast" +msgstr "Запись и Ретрансляция" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:29 +msgid "Who" +msgstr "Кто" + +#: airtime_mvc/application/views/scripts/schedule/add-show-form.phtml:33 +msgid "Style" +msgstr "Стиль" + +#: airtime_mvc/application/views/scripts/login/password-restore-after.phtml:3 +msgid "Email sent" +msgstr "E-mail отправлен" + +#: airtime_mvc/application/views/scripts/login/password-restore-after.phtml:6 +msgid "An email has been sent" +msgstr "Сообщение было отправлено" + +#: airtime_mvc/application/views/scripts/login/password-restore-after.phtml:7 +msgid "Back to login screen" +msgstr "Вернуться на страницу входа" + +#: airtime_mvc/application/views/scripts/login/index.phtml:7 +msgid "Welcome to the online Airtime demo! You can log in using the username 'admin' and the password 'admin'." +msgstr "Добро пожаловать в онлайн демо-версию Airtime! Вы можете войти, используя логин \"admin\" и пароль \"admin\"." + +#: airtime_mvc/application/views/scripts/login/password-restore.phtml:3 +#: airtime_mvc/application/views/scripts/form/login.phtml:25 +msgid "Reset password" +msgstr "Сменить пароль" + +#: airtime_mvc/application/views/scripts/login/password-restore.phtml:7 +msgid "Please enter your account e-mail address. You will receive a link to create a new password via e-mail." +msgstr "Пожалуйста, введите email своей учетной записи. Вы получите ссылку, чтобы создать новый пароль." + +#: airtime_mvc/application/views/scripts/login/password-change.phtml:3 +msgid "New password" +msgstr "Новый пароль" + +#: airtime_mvc/application/views/scripts/login/password-change.phtml:6 +msgid "Please enter and confirm your new password in the fields below." +msgstr "Пожалуйста, введите и подтвердите новый пароль ниже." + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:4 +msgid "Service" +msgstr "Услуги" + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:6 +msgid "Uptime" +msgstr "Время работы" + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:7 +msgid "CPU" +msgstr "ЦП" + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:8 +msgid "Memory" +msgstr "Память" + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:14 +msgid "Airtime Version" +msgstr "Версия Airtime" + +#: airtime_mvc/application/views/scripts/systemstatus/index.phtml:30 +msgid "Disk Space" +msgstr "Дисковое пространство" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:22 +msgid "previous" +msgstr "предыдущая" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:25 +msgid "play" +msgstr "играть" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:28 +msgid "pause" +msgstr "пауза" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:31 +msgid "next" +msgstr "следующая" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:34 +msgid "stop" +msgstr "стоп" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:59 +msgid "max volume" +msgstr "максимальная громкость" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:69 +msgid "Update Required" +msgstr "Требуется обновление" + +#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:70 +#, php-format +msgid "To play the media you will need to either update your browser to a recent version or update your %sFlash plugin%s." +msgstr "Для проигрывания медиа-файла необходимо либо обновить браузер до последней версии или обновить %sфлэш-плагина%s." + +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:51 +msgid "Stream URL:" +msgstr "URL потока:" + +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:56 +msgid "Default Length:" +msgstr "Длина по умолчанию:" + +#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:63 +msgid "No webstream" +msgstr "Нет веб-потока" + +#: airtime_mvc/application/views/scripts/error/error.phtml:6 +msgid "Zend Framework Default Application" +msgstr "Приложение по умолчанию Zend Framework " + +#: airtime_mvc/application/views/scripts/error/error.phtml:10 +msgid "Page not found!" +msgstr "Страница не найдена!" + +#: airtime_mvc/application/views/scripts/error/error.phtml:11 +msgid "Looks like the page you were looking for doesn't exist!" +msgstr "Похоже, что страница, которую вы ищете, не существует!" + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:4 +msgid "Stream " +msgstr "Поток " + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:33 +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:47 +#: airtime_mvc/application/views/scripts/form/preferences_email_server.phtml:44 +#: airtime_mvc/application/views/scripts/form/preferences_email_server.phtml:74 +#: airtime_mvc/application/views/scripts/form/preferences_email_server.phtml:90 +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:47 +#: airtime_mvc/application/views/scripts/form/preferences_soundcloud.phtml:44 +#: airtime_mvc/application/views/scripts/form/preferences_soundcloud.phtml:59 +#: airtime_mvc/application/views/scripts/form/preferences_general.phtml:71 +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:46 +msgid "(Required)" +msgstr "(Обязательно)" + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:76 +msgid "Additional Options" +msgstr "Дополнительные параметры" + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:108 +msgid "The following info will be displayed to listeners in their media player:" +msgstr "Следующая информация будет отображаться для слушателей в их медиа-плейере:" + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:141 +msgid "(Your radio station website)" +msgstr "(Веб-сайт вашей радиостанции)" + +#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:179 +msgid "Stream URL: " +msgstr "URL потока: " + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:9 +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:27 +msgid "Choose folder" +msgstr "Выберите папку" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:10 +msgid "Set" +msgstr "Установка" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:19 +msgid "Current Import Folder:" +msgstr "Текущая папка импорта:" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:28 +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast-absolute.phtml:40 +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast.phtml:41 +msgid "Add" +msgstr "Добавить" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:43 +msgid "Rescan watched directory (This is useful if it is network mount and may be out of sync with Airtime)" +msgstr "Повторно сканировать просмотренную папку (Это полезно, если это сетевая сборка, которая может быть не синхронна с Airtime)" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:44 +msgid "Remove watched directory" +msgstr "Удалить просмотренную папку" + +#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:50 +msgid "You are not watching any media folders." +msgstr "Вы не просматриваете никакие папки медиа-файлов." + +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast-absolute.phtml:4 +msgid "Choose Days:" +msgstr "Выберите дни:" + +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast-absolute.phtml:18 +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast.phtml:18 +msgid "Remove" +msgstr "Удалить" + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:1 +msgid "Register Airtime" +msgstr "Регистрация Airtime " + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:6 +#, php-format +msgid "Help Airtime improve by letting us know how you are using it. This info will be collected regularly in order to enhance your user experience.%sClick 'Yes, help Airtime' and we'll make sure the features you use are constantly improving." +msgstr "Помогите улучшить Airtime, рассказав нам, как вы работаете с ним. Мы будем собирать эту информацию регулярно. %s Нажмите кнопку \"Да, помочь Airtime\" и мы позаботимся о том, чтобы те опции, которые вы используете, постоянно совершенствовались." + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:25 +#, php-format +msgid "Click the box below to advertise your station on %sSourcefabric.org%s. In order to promote your station, 'Send support feedback' must be enabled. This data will be collected in addition to the support feedback." +msgstr "Щелкните поле ниже, чтобы рекламировать свою станцию на %s Sourcefabric.org %s . В целях содействия вашей станции, опция 'Отправить отзыв о поддержке »должна быть включена. Эти данные будут собираться в дополнение к отзывам о поддержке." + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:65 +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:79 +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:61 +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:76 +msgid "(for verification purposes only, will not be published)" +msgstr "(Только для проверки, не будет опубликовано)" + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:150 +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:151 +msgid "Note: Anything larger than 600x600 will be resized." +msgstr "Примечание: все, что превысит размеры 600x600, будет изменено." + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:164 +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:164 +msgid "Show me what I am sending " +msgstr "Покажите мне, что я посылаю " + +#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:178 +msgid "Terms and Conditions" +msgstr "Постановления и условия" + +#: airtime_mvc/application/views/scripts/form/showbuilder.phtml:7 +msgid "Find Shows" +msgstr "Найти программы" + +#: airtime_mvc/application/views/scripts/form/showbuilder.phtml:12 +msgid "Filter By Show:" +msgstr "Фильтр по программе:" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:2 +msgid "Input Stream Settings" +msgstr "Настройки входного потока" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:109 +msgid "Master Source Connection URL:" +msgstr "URL подключения к источнику Master:" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:115 +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:159 +msgid "Override" +msgstr "Заменить" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:120 +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:164 +msgid "OK" +msgstr "OK" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:120 +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:164 +msgid "RESET" +msgstr "ВОССТАНОВИТЬ" + +#: airtime_mvc/application/views/scripts/form/preferences_livestream.phtml:153 +msgid "Show Source Connection URL:" +msgstr "URL подключения к источнику Show:" + +#: airtime_mvc/application/views/scripts/form/add-show-rebroadcast.phtml:4 +msgid "Repeat Days:" +msgstr "Повторить дні:" + +#: airtime_mvc/application/views/scripts/form/daterange.phtml:6 +msgid "Filter History" +msgstr "Фильтровать историю" + +#: airtime_mvc/application/views/scripts/form/preferences.phtml:5 +msgid "Email / Mail Server Settings" +msgstr "Настройки Email / почтового сервера" + +#: airtime_mvc/application/views/scripts/form/preferences.phtml:10 +msgid "SoundCloud Settings" +msgstr "Настройки SoundCloud " + +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:5 +#, php-format +msgid "Help Airtime improve by letting Sourcefabric know how you are using it. This information will be collected regularly in order to enhance your user experience.%sClick the 'Send support feedback' box and we'll make sure the features you use are constantly improving." +msgstr "Помогите улучшить Airtime, рассказав нам, как вы работаете с ним. Мы будем собирать эту информацию регулярно. %sНажмите \"Послать отзывы\" и мы позаботимся о том, чтобы те опции, которые вы используете, постоянно совершенствовались." + +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:23 +#, php-format +msgid "Click the box below to promote your station on %sSourcefabric.org%s." +msgstr "Щелкните поле ниже, чтобы рекламировать вашу станцию на %s Sourcefabric.org %s ." + +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:41 +msgid "(In order to promote your station, 'Send support feedback' must be enabled)." +msgstr "(В целях продвижения вашей станции, опция 'Отправить отзывы о поддержке' должна быть включена)." + +#: airtime_mvc/application/views/scripts/form/support-setting.phtml:186 +msgid "Sourcefabric Privacy Policy" +msgstr "Политика конфиденциальности Sourcefabric " + +#: airtime_mvc/application/views/scripts/form/add-show-live-stream.phtml:53 +msgid "Connection URL: " +msgstr "URL подключенія:" + +#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:3 +msgid "Smart Block Options" +msgstr "Параметры умного блока" + +#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:63 +msgid " to " +msgstr " к " + +#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:120 +#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:133 +msgid "files meet the criteria" +msgstr "Файлы отвечают критериям" + +#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:127 +msgid "file meet the criteria" +msgstr "файл отвечает критериям" + +#: airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml:3 +#: airtime_mvc/application/views/scripts/library/library.phtml:2 +msgid "File import in progress..." +msgstr "Импорт файлов в процессе ..." + +#: airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml:5 +#: airtime_mvc/application/views/scripts/library/library.phtml:5 +msgid "Advanced Search Options" +msgstr "Дополнительные параметры поиска" + +#: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:2 +msgid "Stream Settings" +msgstr "Настройки потоковой передачи " + +#: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:12 +msgid "Global Settings" +msgstr "Общие настройки" + +#: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:72 +msgid "Output Stream Settings" +msgstr "Настройки выходного потока" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:7 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:30 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:32 +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:128 +msgid "Length:" +msgstr "Длина:" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:8 +msgid "Sample Rate:" +msgstr "Частота дискретизации:" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:18 +msgid "Isrc Number:" +msgstr "ISRC номер:" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:21 +msgid "File" +msgstr "Файл" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:21 +msgid "Path:" +msgstr "Путь:" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:39 +msgid "Web Stream" +msgstr "Веб-поток" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:40 +msgid "Dynamic Smart Block" +msgstr "Динамический умный блок" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:41 +msgid "Static Smart Block" +msgstr "Статический умный блок" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:42 +msgid "Audio Track" +msgstr "Аудио-дорожка" + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:48 +msgid "Playlist Contents: " +msgstr "Содержание плейлиста: " + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:50 +msgid "Static Smart Block Contents: " +msgstr "Содержание статического умного блока: " + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:89 +msgid "Dynamic Smart Block Criteria: " +msgstr "Критерии динамического умного блока: " + +#: airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml:118 +msgid "Limit to " +msgstr "Ограничение до " + +#: airtime_mvc/library/propel/contrib/pear/HTML_QuickForm_Propel/Propel.php:512 +msgid "Please selection an option" +msgstr "Пожалуйста, выбор опции" + +#: airtime_mvc/library/propel/contrib/pear/HTML_QuickForm_Propel/Propel.php:531 +msgid "No Records" +msgstr "Нет записей" + From bd18039785c7524727543e6a3ecea5e4cd63a1f8 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 14:12:27 -0500 Subject: [PATCH 15/26] CC-4744: Edit user form needs styling -done --- airtime_mvc/application/forms/AddUser.php | 2 - airtime_mvc/application/forms/EditUser.php | 22 ++-- .../views/scripts/form/edit-user.phtml | 120 ++++++++++++++++++ .../views/scripts/user/edit-user.phtml | 2 - airtime_mvc/public/css/styles.css | 16 +++ .../public/js/airtime/dashboard/dashboard.js | 5 +- 6 files changed, 152 insertions(+), 15 deletions(-) create mode 100644 airtime_mvc/application/views/scripts/form/edit-user.phtml diff --git a/airtime_mvc/application/forms/AddUser.php b/airtime_mvc/application/forms/AddUser.php index e94ea09ed..2b17b8b9d 100644 --- a/airtime_mvc/application/forms/AddUser.php +++ b/airtime_mvc/application/forms/AddUser.php @@ -40,14 +40,12 @@ class Application_Form_AddUser extends Zend_Form $firstName->setLabel(_('Firstname:')); $firstName->setAttrib('class', 'input_text'); $firstName->addFilter('StringTrim'); - $firstName->addValidator($notEmptyValidator); $this->addElement($firstName); $lastName = new Zend_Form_Element_Text('last_name'); $lastName->setLabel(_('Lastname:')); $lastName->setAttrib('class', 'input_text'); $lastName->addFilter('StringTrim'); - $lastName->addValidator($notEmptyValidator); $this->addElement($lastName); $email = new Zend_Form_Element_Text('email'); diff --git a/airtime_mvc/application/forms/EditUser.php b/airtime_mvc/application/forms/EditUser.php index 41679b785..894622504 100644 --- a/airtime_mvc/application/forms/EditUser.php +++ b/airtime_mvc/application/forms/EditUser.php @@ -15,10 +15,9 @@ class Application_Form_EditUser extends Zend_Form $userData = Application_Model_User::GetUserData($currentUser->getId()); $notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator(); $emailValidator = Application_Form_Helper_ValidationTypes::overrideEmailAddressValidator(); -/* + $this->setDecorators(array( array('ViewScript', array('viewScript' => 'form/edit-user.phtml')))); -*/ $this->setAttrib('id', 'current-user-form'); $hidden = new Zend_Form_Element_Hidden('cu_user_id'); @@ -33,8 +32,7 @@ class Application_Form_EditUser extends Zend_Form $login->setRequired(true); $login->addValidator($notEmptyValidator); $login->addFilter('StringTrim'); - //$login->setDecorators(array('viewHelper')); - //$login->addValidator('UserNameValidate'); + $login->setDecorators(array('viewHelper')); $this->addElement($login); $password = new Zend_Form_Element_Password('cu_password'); @@ -43,22 +41,23 @@ class Application_Form_EditUser extends Zend_Form $password->setRequired(true); $password->addFilter('StringTrim'); $password->addValidator($notEmptyValidator); + $password->setDecorators(array('viewHelper')); $this->addElement($password); $firstName = new Zend_Form_Element_Text('cu_first_name'); - $firstName->setLabel(_('Firstname:')); + $firstName->setLabel(_('First name:')); $firstName->setValue($userData["first_name"]); $firstName->setAttrib('class', 'input_text'); $firstName->addFilter('StringTrim'); - $firstName->addValidator($notEmptyValidator); + $firstName->setDecorators(array('viewHelper')); $this->addElement($firstName); $lastName = new Zend_Form_Element_Text('cu_last_name'); - $lastName->setLabel(_('Lastname:')); + $lastName->setLabel(_('Last name:')); $lastName->setValue($userData["last_name"]); $lastName->setAttrib('class', 'input_text'); $lastName->addFilter('StringTrim'); - $lastName->addValidator($notEmptyValidator); + $lastName->setDecorators(array('viewHelper')); $this->addElement($lastName); $email = new Zend_Form_Element_Text('cu_email'); @@ -69,6 +68,7 @@ class Application_Form_EditUser extends Zend_Form $email->setRequired(true); $email->addValidator($notEmptyValidator); $email->addValidator($emailValidator); + $email->setDecorators(array('viewHelper')); $this->addElement($email); $cellPhone = new Zend_Form_Element_Text('cu_cell_phone'); @@ -76,6 +76,7 @@ class Application_Form_EditUser extends Zend_Form $cellPhone->setValue($userData["cell_phone"]); $cellPhone->setAttrib('class', 'input_text'); $cellPhone->addFilter('StringTrim'); + $cellPhone->setDecorators(array('viewHelper')); $this->addElement($cellPhone); $skype = new Zend_Form_Element_Text('cu_skype'); @@ -83,6 +84,7 @@ class Application_Form_EditUser extends Zend_Form $skype->setValue($userData["skype_contact"]); $skype->setAttrib('class', 'input_text'); $skype->addFilter('StringTrim'); + $skype->setDecorators(array('viewHelper')); $this->addElement($skype); $jabber = new Zend_Form_Element_Text('cu_jabber'); @@ -91,13 +93,17 @@ class Application_Form_EditUser extends Zend_Form $jabber->setAttrib('class', 'input_text'); $jabber->addFilter('StringTrim'); $jabber->addValidator($emailValidator); + $jabber->setDecorators(array('viewHelper')); $this->addElement($jabber); + /* $saveBtn = new Zend_Form_Element_Button('cu_save_user'); $saveBtn->setAttrib('class', 'btn btn-small right-floated'); $saveBtn->setIgnore(true); $saveBtn->setLabel(_('Save')); + $saveBtn->setDecorators(array('viewHelper')); $this->addElement($saveBtn); + */ } public function validateLogin($p_login, $p_userId) { diff --git a/airtime_mvc/application/views/scripts/form/edit-user.phtml b/airtime_mvc/application/views/scripts/form/edit-user.phtml new file mode 100644 index 000000000..927fd8a6d --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/edit-user.phtml @@ -0,0 +1,120 @@ +

+
+
+ element->getElement('cu_user_id') ?> +
+ +
+
+ element->getElement('cu_login') ?> + element->getElement('cu_login')->hasErrors()) : ?> +
    + element->getElement('cu_login')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_password') ?> + element->getElement('cu_password')->hasErrors()) : ?> +
    + element->getElement('cu_password')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_first_name') ?> + element->getElement('cu_first_name')->hasErrors()) : ?> +
    + element->getElement('cu_first_name')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_last_name') ?> + element->getElement('cu_last_name')->hasErrors()) : ?> +
    + element->getElement('cu_last_name')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_email') ?> + element->getElement('cu_email')->hasErrors()) : ?> +
    + element->getElement('cu_email')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_cell_phone') ?> + element->getElement('cu_cell_phone')->hasErrors()) : ?> +
    + element->getElement('cu_cell_phone')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_skype') ?> + element->getElement('cu_skype')->hasErrors()) : ?> +
    + element->getElement('cu_skype')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('cu_jabber') ?> + element->getElement('cu_jabber')->hasErrors()) : ?> +
    + element->getElement('cu_jabber')->getMessages() as $error): ?> +
  • + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/user/edit-user.phtml b/airtime_mvc/application/views/scripts/user/edit-user.phtml index 926feb3cc..a5a355db9 100644 --- a/airtime_mvc/application/views/scripts/user/edit-user.phtml +++ b/airtime_mvc/application/views/scripts/user/edit-user.phtml @@ -1,5 +1,3 @@ successMessage ?> -
form?> -
diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 9b3ee10a2..29db72a70 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -2939,3 +2939,19 @@ dd .stream-status { top: 0px; left: 0px; } + +.edit-user-global dt { + width: 90px; + float: left; + margin-top: 4px; + margin-left: 2px; +} + +.edit-user-global dd { + width: 230px; + padding-bottom: 5px; +} + +.edit-user-global input { + width: 170px; +} diff --git a/airtime_mvc/public/js/airtime/dashboard/dashboard.js b/airtime_mvc/public/js/airtime/dashboard/dashboard.js index 1790b055d..7f86f705d 100644 --- a/airtime_mvc/public/js/airtime/dashboard/dashboard.js +++ b/airtime_mvc/public/js/airtime/dashboard/dashboard.js @@ -467,7 +467,6 @@ $(document).ready(function() { $('#current-user').bind('mouseover', function() { $.ajax({ url: baseUrl+'/user/edit-user/format/json', - dataType: 'json', success: function(json) { $('#current-user').tipsy({ gravity: 'n', @@ -497,9 +496,9 @@ $(document).ready(function() { var data = $('#current-user-form').serialize(); $.post(baseUrl+'/user/edit-user', {format: 'json', data: data}, function(data) { var json = $.parseJSON(data); - $('#current-user-container').empty().append(json.html); + $('.tipsy-inner').empty().append(json.html); setCurrentUserPseudoPassword(); setTimeout(removeSuccessMsg, 5000); }); - }) + }); }); From 854537f3879a59f093b02e72435b79c7dc12bbfe Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 14:33:14 -0500 Subject: [PATCH 16/26] CC-4745: Add Russian language option to preferences --- airtime_mvc/build/sql/defaultdata.sql | 2 ++ .../public/js/datatables/i18n/en_US.txt | 23 ++++++++++++++++ .../public/js/datatables/i18n/ru_RU.txt | 17 ++++++++++++ airtime_mvc/public/js/plupload/i18n/en_US.js | 26 +++++++++++++++++++ airtime_mvc/public/js/plupload/i18n/ru_RU.js | 21 +++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 airtime_mvc/public/js/datatables/i18n/en_US.txt create mode 100644 airtime_mvc/public/js/datatables/i18n/ru_RU.txt create mode 100644 airtime_mvc/public/js/plupload/i18n/en_US.js create mode 100644 airtime_mvc/public/js/plupload/i18n/ru_RU.js diff --git a/airtime_mvc/build/sql/defaultdata.sql b/airtime_mvc/build/sql/defaultdata.sql index dff2ab9d1..cf82ea0d4 100644 --- a/airtime_mvc/build/sql/defaultdata.sql +++ b/airtime_mvc/build/sql/defaultdata.sql @@ -314,9 +314,11 @@ INSERT INTO cc_stream_setting (keyname, value, type) VALUES ('s3_channels', 'ste INSERT INTO cc_pref("keystr", "valstr") VALUES('locale', 'en_CA'); INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('en_CA', 'English'); +INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('en_US', 'English - US'); INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('fr_FR', 'French'); INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('de_DE', 'German'); INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('ko_KR', 'Korean'); +INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('ru_RU', 'Russian'); INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('es_ES', 'Spanish'); -- end of added in 2.3 diff --git a/airtime_mvc/public/js/datatables/i18n/en_US.txt b/airtime_mvc/public/js/datatables/i18n/en_US.txt new file mode 100644 index 000000000..ff3cf6be4 --- /dev/null +++ b/airtime_mvc/public/js/datatables/i18n/en_US.txt @@ -0,0 +1,23 @@ +{ +"sEmptyTable": "No data available in table", +"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", +"sInfoEmpty": "Showing 0 to 0 of 0 entries", +"sInfoFiltered": "(filtered from _MAX_ total entries)", +"sInfoPostFix": "", +"sInfoThousands": ",", +"sLengthMenu": "Show _MENU_", +"sLoadingRecords": "Loading...", +"sProcessing": "Processing...", +"sSearch": "", +"sZeroRecords": "No matching records found", +"oPaginate": { + "sFirst": "First", + "sLast": "Last", + "sNext": "Next", + "sPrevious": "Previous" +}, +"oAria": { + "sSortAscending": ": activate to sort column ascending", + "sSortDescending": ": activate to sort column descending" +} +} \ No newline at end of file diff --git a/airtime_mvc/public/js/datatables/i18n/ru_RU.txt b/airtime_mvc/public/js/datatables/i18n/ru_RU.txt new file mode 100644 index 000000000..4df1b5e8b --- /dev/null +++ b/airtime_mvc/public/js/datatables/i18n/ru_RU.txt @@ -0,0 +1,17 @@ +{ + "sProcessing": "Подождите...", + "sLengthMenu": "Показать _MENU_ записей", + "sZeroRecords": "Записи отсутствуют.", + "sInfo": "Записи с _START_ до _END_ из _TOTAL_ записей", + "sInfoEmpty": "Записи с 0 до 0 из 0 записей", + "sInfoFiltered": "(отфильтровано из _MAX_ записей)", + "sInfoPostFix": "", + "sSearch": "", + "sUrl": "", + "oPaginate": { + "sFirst": "Первая", + "sPrevious": "Предыдущая", + "sNext": "Следующая", + "sLast": "Последняя" + } +} \ No newline at end of file diff --git a/airtime_mvc/public/js/plupload/i18n/en_US.js b/airtime_mvc/public/js/plupload/i18n/en_US.js new file mode 100644 index 000000000..40604ef6c --- /dev/null +++ b/airtime_mvc/public/js/plupload/i18n/en_US.js @@ -0,0 +1,26 @@ +// English - US +plupload.addI18n({ + 'Select files' : 'Select files', + 'Add files to the upload queue and click the start button.' : 'Add files to the upload queue and click the start button.', + 'Filename' : 'Filename', + 'Status' : 'Status', + 'Size' : 'Size', + 'Add files' : 'Add files', + 'Stop current upload' : 'Stop current upload', + 'Start uploading queue' : 'Start uploading queue', + 'Uploaded %d/%d files': 'Uploaded %d/%d files', + 'N/A' : 'N/A', + 'Drag files here.' : 'Drag files here.', + 'File extension error.': 'File extension error.', + 'File size error.': 'File size error.', + 'Init error.': 'Init error.', + 'HTTP Error.': 'HTTP Error.', + 'Security error.': 'Security error.', + 'Generic error.': 'Generic error.', + 'IO error.': 'IO error.', + 'Stop Upload': 'Stop Upload', + 'Add Files': 'Add Files', + 'Start Upload': 'Start Upload', + 'Start upload': 'Start upload', + '%d files queued': '%d files queued' +}); \ No newline at end of file diff --git a/airtime_mvc/public/js/plupload/i18n/ru_RU.js b/airtime_mvc/public/js/plupload/i18n/ru_RU.js new file mode 100644 index 000000000..593bd91ea --- /dev/null +++ b/airtime_mvc/public/js/plupload/i18n/ru_RU.js @@ -0,0 +1,21 @@ +// Russian +plupload.addI18n({ + 'Select files' : 'Выберите файлы', + 'Add files to the upload queue and click the start button.' : 'Добавьте файлы в очередь и нажмите кнопку "Загрузить файлы".', + 'Filename' : 'Имя файла', + 'Status' : 'Статус', + 'Size' : 'Размер', + 'Add files' : 'Добавить файлы', + 'Stop current upload' : 'Остановить загрузку', + 'Start upload' : 'Загрузить файлы', + 'Uploaded %d/%d files': 'Загружено %d из %d файлов', + 'N/A' : 'N/D', + 'Drag files here.' : 'Перетащите файлы сюда.', + 'File extension error.': 'Неправильное расширение файла.', + 'File size error.': 'Неправильный размер файла.', + 'Init error.': 'Ошибка инициализации.', + 'HTTP Error.': 'Ошибка HTTP.', + 'Security error.': 'Ошибка безопасности.', + 'Generic error.': 'Общая ошибка.', + 'IO error.': 'Ошибка ввода-вывода.' +}); From 0324d48e068c3c19a3b96355b262548b3963ba04 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 16:52:08 -0500 Subject: [PATCH 17/26] CC-4747: Add User page -> Typo on form labels --- .../locale/en_CA/LC_MESSAGES/airtime.mo | Bin 53654 -> 53721 bytes .../locale/en_CA/LC_MESSAGES/airtime.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.mo index 50f987d7fef418aacbed345fadf2b046be8ab6e1..6e397154f8407ce14b8bf7eded997bc7b00796ff 100644 GIT binary patch delta 5906 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 delta 5831 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 diff --git a/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.po b/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.po index 7062255d6..318c89f85 100644 --- a/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/en_CA/LC_MESSAGES/airtime.po @@ -833,11 +833,11 @@ msgstr "Password:" #: airtime_mvc/application/forms/AddUser.php:40 msgid "Firstname:" -msgstr "Firstname:" +msgstr "First name:" #: airtime_mvc/application/forms/AddUser.php:47 msgid "Lastname:" -msgstr "Lastname:" +msgstr "Last name:" #: airtime_mvc/application/forms/AddUser.php:63 msgid "Mobile Phone:" From adae81bffae7113490d0828652de80f2e159a708 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 16:53:18 -0500 Subject: [PATCH 18/26] CC-4747: Add User page -> Typo on form labels --- airtime_mvc/application/forms/EditUser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/forms/EditUser.php b/airtime_mvc/application/forms/EditUser.php index 894622504..b4906b9e7 100644 --- a/airtime_mvc/application/forms/EditUser.php +++ b/airtime_mvc/application/forms/EditUser.php @@ -45,7 +45,7 @@ class Application_Form_EditUser extends Zend_Form $this->addElement($password); $firstName = new Zend_Form_Element_Text('cu_first_name'); - $firstName->setLabel(_('First name:')); + $firstName->setLabel(_('Firstname:')); $firstName->setValue($userData["first_name"]); $firstName->setAttrib('class', 'input_text'); $firstName->addFilter('StringTrim'); @@ -53,7 +53,7 @@ class Application_Form_EditUser extends Zend_Form $this->addElement($firstName); $lastName = new Zend_Form_Element_Text('cu_last_name'); - $lastName->setLabel(_('Last name:')); + $lastName->setLabel(_('Lastname:')); $lastName->setValue($userData["last_name"]); $lastName->setAttrib('class', 'input_text'); $lastName->addFilter('StringTrim'); From 274b1f75624cec19963a32833d2b7703c221eb3c Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 16:53:43 -0500 Subject: [PATCH 19/26] CC-4743: Make user rights description localizable --- .../controllers/LocaleController.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/airtime_mvc/application/controllers/LocaleController.php b/airtime_mvc/application/controllers/LocaleController.php index 7d9e1efcf..8686d946f 100644 --- a/airtime_mvc/application/controllers/LocaleController.php +++ b/airtime_mvc/application/controllers/LocaleController.php @@ -307,6 +307,26 @@ class LocaleController extends Zend_Controller_Action "DJ" => _("DJ"), "Program Manager" => _("Program Manager"), "Guest" => _("Guest"), + "Guests can do the following:" => _("Guests can do the following:"), + "View schedule" => _("View schedule"), + "View show content" => _("View show content"), + "DJs can do the following:" => _("DJs can do the following:"), + "Manage assigned show content" => _("Manage assigned show content"), + "Import media files" => _("Import media files"), + "Create playlists, smart blocks, and webstreams" => _("Create playlists, smart blocks, and webstreams"), + "Manage their own library content" => _("Manage their own library content"), + "Progam Managers can do the following:" => _("Progam Managers can do the following:"), + "View and manage show content" => _("View and manage show content"), + "Schedule shows" => _("Schedule shows"), + "Manage all library content" => _("Manage all library content"), + "Admins can do the following:" => _("Admins can do the following:"), + "Manage preferences" => _("Manage preferences"), + "Manage users" => _("Manage users"), + "Manage watched folders" => _("Manage watched folders"), + "Send support feedback" => _("Send support feedback"), + "View system status" => _("View system status"), + "Access playout history" => _("Access playout history"), + "View listener stats" => _("View listener stats"), //dataTables/ColVis.js "Show / hide columns" => _("Show / hide columns"), //datatables.columnFilter.js From e2885da71c2868378b410f07c70c89a639843f00 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 17 Dec 2012 18:24:44 -0500 Subject: [PATCH 20/26] CC-4748: Write script to update all .po files with new msgids --- dev_tools/update_po_files.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 dev_tools/update_po_files.sh diff --git a/dev_tools/update_po_files.sh b/dev_tools/update_po_files.sh new file mode 100755 index 000000000..abcc78ed3 --- /dev/null +++ b/dev_tools/update_po_files.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +cd ~/airtime + +#generate a new .po file +#this will generate a file called messages.po +find . -iname "*.phtml" -o -name "*.php" | xargs xgettext -L php + +#merge the new messages from messages.po into each existing .po file +#this will generate new .po files +find ./airtime_mvc/locale/ -name "*.po" -exec msgmerge -N -U --no-wrap "{}" messages.po \; + +#delete the old .po files +find ./airtime_mvc/locale/ -name "*.po~" -delete From fa6314879244d739d061beaa43822489d263ebcb Mon Sep 17 00:00:00 2001 From: "denise.rigato" Date: Tue, 18 Dec 2012 09:03:43 -0500 Subject: [PATCH 21/26] CC-4748: Write script to update all .po files with new msgids --- dev_tools/update_po_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev_tools/update_po_files.sh b/dev_tools/update_po_files.sh index abcc78ed3..524721420 100755 --- a/dev_tools/update_po_files.sh +++ b/dev_tools/update_po_files.sh @@ -1,6 +1,6 @@ #! /bin/bash -cd ~/airtime +cd .. #generate a new .po file #this will generate a file called messages.po From 2467adc569bdfc2f6718b7e25c536eb08a3c7b6c Mon Sep 17 00:00:00 2001 From: tictactatic Date: Wed, 19 Dec 2012 14:06:05 -0500 Subject: [PATCH 22/26] Test commit --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 0747ce34a..6f743e9d3 100644 --- a/README +++ b/README @@ -8,7 +8,7 @@ Home page: http://airtime.sourcefabric.org/ Major features: * Web-based remote station management. Authorized personnel can add - program material, create playlists, and schedule programming all via + program material, create playlists and schedule programming all via a web interface. * Automation. Airtime has a scheduler function that enables users to set shows with playlists for playback at a date and time of their choosing. From a4008aaef3a8b1575c2943769db4ed32cdccb31e Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 19 Dec 2012 15:01:53 -0500 Subject: [PATCH 23/26] CC-4721: Library -> Context Menu -> 'Add to smart block' option only takes affect once the open smart block has been saved --- airtime_mvc/public/js/airtime/library/library.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 36023003f..2b5fd65c6 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -915,7 +915,11 @@ var AIRTIME = (function(AIRTIME) { soundcloud.view.callback = callback; } } - + // remove 'Add to smart block' option if the current + // block is dynamic + if ($('input:radio[name=sp_type]:checked').val() === "1") { + delete oItems.pl_add; + } items = oItems; } From c0665e4748891c93aefe723a5f7171d579348c2b Mon Sep 17 00:00:00 2001 From: james Date: Thu, 27 Dec 2012 00:36:11 -0500 Subject: [PATCH 24/26] CC-4754: Replay gain modifier - Initial commit --- .../controllers/PreferenceController.php | 1 + .../application/forms/GeneralPreferences.php | 7 +++++++ airtime_mvc/application/models/Preference.php | 15 +++++++++++++++ airtime_mvc/application/models/Schedule.php | 4 +++- .../scripts/form/preferences_general.phtml | 19 ++++++++++++++++++- .../js/airtime/preferences/preferences.js | 17 +++++++++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index b321372db..86f22822a 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -66,6 +66,7 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetSoundCloudGenre($values["SoundCloudGenre"]); Application_Model_Preference::SetSoundCloudTrackType($values["SoundCloudTrackType"]); Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]); + Application_Model_Preference::setReplayGainModifier($values["replayGainModifier"]); $this->view->statusMsg = "
". _("Preferences updated.")."
"; $this->view->form = $form; diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index 0244c983d..b76ef8c89 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -74,6 +74,13 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $week_start_day->setValue(Application_Model_Preference::GetWeekStartDay()); $week_start_day->setDecorators(array('ViewHelper')); $this->addElement($week_start_day); + + $replay_gain = new Zend_Form_Element_Hidden("replayGainModifier"); + $replay_gain->setLabel(_("Replay Gain Modifier")) + ->setValue(Application_Model_Preference::getReplayGainModifier()) + ->setAttribs(array('style' => "border: 0; color: #f6931f; font-weight: bold;")) + ->setDecorators(array('ViewHelper')); + $this->addElement($replay_gain); } private function getTimezones() diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 916bc1deb..326ab6bea 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -1183,4 +1183,19 @@ class Application_Model_Preference $data = self::getValue("nowplaying_screen", true); return ($data != "") ? unserialize($data) : null; } + + public static function getReplayGainModifier(){ + $rg_modifier = self::getValue("replay_gain_modifier"); + + if ($rg_modifier === "") { + return "0"; + } + + return $rg_modifier; + } + + public static function setReplayGainModifier($rg_modifier) + { + self::setValue("replay_gain_modifier", $rg_modifier, true); + } } diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index bc98168d3..dd6535bd4 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -679,6 +679,8 @@ SQL; $same_hour = $start_hour == $end_hour; $independent_event = !$same_hour; + $replay_gain = is_null($item["replay_gain"]) ? "0": $item["replay_gain"]; + $replay_gain += Application_Model_Preference::getReplayGainModifier(); $schedule_item = array( 'id' => $media_id, @@ -692,7 +694,7 @@ SQL; 'start' => $start, 'end' => $end, 'show_name' => $item["show_name"], - 'replay_gain' => is_null($item["replay_gain"]) ? "0": $item["replay_gain"], + 'replay_gain' => $replay_gain, 'independent_event' => $independent_event, ); self::appendScheduleItem($data, $start, $schedule_item); diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index cc280b851..993f3da9d 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -108,6 +108,23 @@ - +
+ + + element->getElement('replayGainModifier')->getValue() ?> + +
+
+ element->getElement('replayGainModifier') ?> + element->getElement('replayGainModifier')->hasErrors()) : ?> +
    + element->getElement('replayGainModifier')->getMessages() as $error): ?> +
  • + +
+ +
+
diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index fe5635faf..62562e833 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -80,6 +80,20 @@ function setMsAuthenticationFieldsReadonly(ele) { } } +function setSliderForReplayGain(){ + $( "#slider-range-max" ).slider({ + range: "max", + min: 0, + max: 10, + value: $("#rg_modifier_value").html(), + slide: function( event, ui ) { + $( "#replayGainModifier" ).val( ui.value ); + $("#rg_modifier_value").html(ui.value); + } + }); + $( "#replayGainModifier" ).val( $( "#slider-range-max" ).slider( "value" ) ); +} + $(document).ready(function() { $('.collapsible-header').live('click',function() { @@ -97,6 +111,7 @@ $(document).ready(function() { $('#content').empty().append(json.html); setTimeout(removeSuccessMsg, 5000); showErrorSections(); + setSliderForReplayGain(); }); }); @@ -106,4 +121,6 @@ $(document).ready(function() { setSystemFromEmailReadonly(); setConfigureMailServerListener(); setEnableSystemEmailsListener(); + + setSliderForReplayGain(); }); From ee8dde07c8049d0ea80b37e816a56f54b9bb71ca Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Thu, 27 Dec 2012 17:18:47 -0500 Subject: [PATCH 25/26] add support for AAC input streams --- airtime_mvc/application/models/Webstream.php | 41 +++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/Webstream.php b/airtime_mvc/application/models/Webstream.php index ad6ca7f76..30c7d181d 100644 --- a/airtime_mvc/application/models/Webstream.php +++ b/airtime_mvc/application/models/Webstream.php @@ -309,7 +309,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable $media_url = self::getXspfUrl($url); } elseif (preg_match("/pls\+xml/", $mime) || preg_match("/x-scpls/", $mime)) { $media_url = self::getPlsUrl($url); - } elseif (preg_match("/(mpeg|ogg)/", $mime)) { + } elseif (preg_match("/(mpeg|ogg|audio\/aacp)/", $mime)) { if ($content_length_found) { throw new Exception("Invalid webstream - This appears to be a file download."); } @@ -322,10 +322,49 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable } + /* PHP get_headers has an annoying property where if the passed in URL is + * a redirect, then it goes to the new URL, and returns headers from both + * requests. We only want the headers from the final request. Here's an + * example: + * + * 0 => "HTTP/1.1 302 Moved Temporarily", + * 1 => "X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.1 Java/Sun Microsystems Inc./1.6)", + * 2 => "Server: GlassFish Server Open Source Edition 3.1.1", + * 3 => "Location: http://3043.live.streamtheworld.com:80/SAM04AAC89_SC", + * 4 => "Content-Type: text/html;charset=ISO-8859-1", + * 5 => "Content-Language: en-US", + * 6 => "Content-Length: 202", + * 7 => "Date: Thu, 27 Dec 2012 21:52:59 GMT", + * 8 => "Connection: close", + * 9 => "HTTP/1.0 200 OK", + * 10 => "Expires: Thu, 01 Dec 2003 16:00:00 GMT", + * 11 => "Cache-Control: no-cache, must-revalidate", + * 12 => "Pragma: no-cache", + * 13 => "Content-Type: audio/aacp", + * 14 => "icy-br: 68", + * 15 => "Server: MediaGateway 3.2.1-04", + * */ + private static function cleanHeaders($headers) { + //find the position of HTTP/1 200 OK + // + $position = 0; + foreach ($headers as $i => $v) { + if (preg_match("/^HTTP.*200 OK$/i", $v)) { + $position = $i; + break; + } + } + + return array_slice($headers, $position); + } + private static function discoverStreamMime($url) { //TODO: What if invalid URL? $headers = get_headers($url); + + $headers = self::cleanHeaders($headers); + $mime = null; $content_length_found = false; foreach ($headers as $h) { From cf38e2c596bdcd0b922a1b90c07762502c5b0f06 Mon Sep 17 00:00:00 2001 From: james Date: Thu, 27 Dec 2012 22:58:41 -0500 Subject: [PATCH 26/26] CC-4754: Replay gain modifier - done --- .../controllers/PreferenceController.php | 2 +- .../application/forms/GeneralPreferences.php | 7 ------- .../application/forms/StreamSetting.php | 7 +++++++ .../scripts/form/preferences_general.phtml | 18 ------------------ .../scripts/preference/stream-setting.phtml | 18 ++++++++++++++++++ .../js/airtime/preferences/preferences.js | 17 ----------------- .../js/airtime/preferences/streamsetting.js | 16 ++++++++++++++++ 7 files changed, 42 insertions(+), 43 deletions(-) diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 86f22822a..7ac5b8c1b 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -66,7 +66,6 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetSoundCloudGenre($values["SoundCloudGenre"]); Application_Model_Preference::SetSoundCloudTrackType($values["SoundCloudTrackType"]); Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]); - Application_Model_Preference::setReplayGainModifier($values["replayGainModifier"]); $this->view->statusMsg = "
". _("Preferences updated.")."
"; $this->view->form = $form; @@ -256,6 +255,7 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetDefaultTransitionFade($values["transition_fade"]); Application_Model_Preference::SetAutoTransition($values["auto_transition"]); Application_Model_Preference::SetAutoSwitch($values["auto_switch"]); + Application_Model_Preference::setReplayGainModifier($values["replayGainModifier"]); if (!Application_Model_Preference::GetMasterDjConnectionUrlOverride()) { $master_connection_url = "http://".$_SERVER['SERVER_NAME'].":".$values["master_harbor_input_port"]."/".$values["master_harbor_input_mount_point"]; diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index b76ef8c89..0244c983d 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -74,13 +74,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $week_start_day->setValue(Application_Model_Preference::GetWeekStartDay()); $week_start_day->setDecorators(array('ViewHelper')); $this->addElement($week_start_day); - - $replay_gain = new Zend_Form_Element_Hidden("replayGainModifier"); - $replay_gain->setLabel(_("Replay Gain Modifier")) - ->setValue(Application_Model_Preference::getReplayGainModifier()) - ->setAttribs(array('style' => "border: 0; color: #f6931f; font-weight: bold;")) - ->setDecorators(array('ViewHelper')); - $this->addElement($replay_gain); } private function getTimezones() diff --git a/airtime_mvc/application/forms/StreamSetting.php b/airtime_mvc/application/forms/StreamSetting.php index 1663cf127..f092bed91 100644 --- a/airtime_mvc/application/forms/StreamSetting.php +++ b/airtime_mvc/application/forms/StreamSetting.php @@ -58,6 +58,13 @@ class Application_Form_StreamSetting extends Zend_Form $stream_format->setValue(Application_Model_Preference::GetStreamLabelFormat()); $stream_format->setDecorators(array('ViewHelper')); $this->addElement($stream_format); + + $replay_gain = new Zend_Form_Element_Hidden("replayGainModifier"); + $replay_gain->setLabel(_("Replay Gain Modifier")) + ->setValue(Application_Model_Preference::getReplayGainModifier()) + ->setAttribs(array('style' => "border: 0; color: #f6931f; font-weight: bold;")) + ->setDecorators(array('ViewHelper')); + $this->addElement($replay_gain); } public function isValid($data) diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index 993f3da9d..ff562a0c1 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -108,23 +108,5 @@ -
- - - element->getElement('replayGainModifier')->getValue() ?> - -
-
- element->getElement('replayGainModifier') ?> - element->getElement('replayGainModifier')->hasErrors()) : ?> -
    - element->getElement('replayGainModifier')->getMessages() as $error): ?> -
  • - -
- -
-
diff --git a/airtime_mvc/application/views/scripts/preference/stream-setting.phtml b/airtime_mvc/application/views/scripts/preference/stream-setting.phtml index 60e4988e9..b6a0253e2 100644 --- a/airtime_mvc/application/views/scripts/preference/stream-setting.phtml +++ b/airtime_mvc/application/views/scripts/preference/stream-setting.phtml @@ -63,6 +63,24 @@ +
+ + + form->getElement('replayGainModifier')->getValue() ?> + +
+
+ form->getElement('replayGainModifier') ?> + form->getElement('replayGainModifier')->hasErrors()) : ?> +
    + form->getElement('replayGainModifier')->getMessages() as $error): ?> +
  • + +
+ +
+
form->getSubform('live_stream_subform'); ?> diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index 62562e833..fe5635faf 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -80,20 +80,6 @@ function setMsAuthenticationFieldsReadonly(ele) { } } -function setSliderForReplayGain(){ - $( "#slider-range-max" ).slider({ - range: "max", - min: 0, - max: 10, - value: $("#rg_modifier_value").html(), - slide: function( event, ui ) { - $( "#replayGainModifier" ).val( ui.value ); - $("#rg_modifier_value").html(ui.value); - } - }); - $( "#replayGainModifier" ).val( $( "#slider-range-max" ).slider( "value" ) ); -} - $(document).ready(function() { $('.collapsible-header').live('click',function() { @@ -111,7 +97,6 @@ $(document).ready(function() { $('#content').empty().append(json.html); setTimeout(removeSuccessMsg, 5000); showErrorSections(); - setSliderForReplayGain(); }); }); @@ -121,6 +106,4 @@ $(document).ready(function() { setSystemFromEmailReadonly(); setConfigureMailServerListener(); setEnableSystemEmailsListener(); - - setSliderForReplayGain(); }); diff --git a/airtime_mvc/public/js/airtime/preferences/streamsetting.js b/airtime_mvc/public/js/airtime/preferences/streamsetting.js index 5c1734772..b69eb48f9 100644 --- a/airtime_mvc/public/js/airtime/preferences/streamsetting.js +++ b/airtime_mvc/public/js/airtime/preferences/streamsetting.js @@ -386,12 +386,28 @@ function setupEventListeners() { var json = $.parseJSON(data); $('#content').empty().append(json.html); setupEventListeners(); + setSliderForReplayGain(); }); } }); } +function setSliderForReplayGain(){ + $( "#slider-range-max" ).slider({ + range: "max", + min: -10, + max: 10, + value: $("#rg_modifier_value").html(), + slide: function( event, ui ) { + $( "#replayGainModifier" ).val( ui.value ); + $("#rg_modifier_value").html(ui.value); + } + }); + $( "#replayGainModifier" ).val( $( "#slider-range-max" ).slider( "value" ) ); +} + $(document).ready(function() { setupEventListeners(); + setSliderForReplayGain(); });