From 58837ff89b13823ec4e1dab27ec3deca7e6d33c8 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 24 Aug 2011 17:13:56 -0400 Subject: [PATCH] CC-2706: Streams should have a username field - adding "User" field on stream setting form - change key name from "output_s1" to "s1_output" format to be consistent - changed order of inserting in default.sql file - hiding username field on shoutcast selection - liquidsoap and pypo takes care of user field input --- .../forms/StreamSettingSubForm.php | 40 ++++++------ .../application/models/StreamSetting.php | 1 - .../scripts/form/stream-setting-form.phtml | 19 +++++- airtime_mvc/build/sql/defaultdata.sql | 46 +++++++------- .../js/airtime/preferences/streamsetting.js | 26 ++++++-- .../pypo/liquidsoap_scripts/ls_lib.liq | 62 +++++++++++-------- .../pypo/liquidsoap_scripts/ls_script.liq | 12 ++-- python_apps/pypo/pypofetch.py | 19 +++--- 8 files changed, 136 insertions(+), 89 deletions(-) diff --git a/airtime_mvc/application/forms/StreamSettingSubForm.php b/airtime_mvc/application/forms/StreamSettingSubForm.php index 0d5a3473f..c2b3b22a0 100644 --- a/airtime_mvc/application/forms/StreamSettingSubForm.php +++ b/airtime_mvc/application/forms/StreamSettingSubForm.php @@ -38,74 +38,83 @@ class Application_Form_StreamSettingSubForm extends Zend_Form_SubForm{ $enable = new Zend_Form_Element_Checkbox('enable'); $enable->setLabel('Enabled:') - ->setValue($setting['output_'.$prefix] != 'disabled'?1:0) + ->setValue($setting[$prefix.'_output'] != 'disabled'?1:0) ->setDecorators(array('ViewHelper')); $this->addElement($enable); $type = new Zend_Form_Element_Select('type'); $type->setLabel("Type:") ->setMultiOptions($stream_types) - ->setValue($setting[$prefix.'_type']) + ->setValue(isset($setting[$prefix.'_type'])?$setting[$prefix.'_type']:0) ->setDecorators(array('ViewHelper')); $this->addElement($type); $bitrate = new Zend_Form_Element_Select('bitrate'); $bitrate->setLabel("Bitrate:") ->setMultiOptions($stream_bitrates) - ->setValue($setting[$prefix.'_bitrate']) + ->setValue(isset($setting[$prefix.'_bitrate'])?$setting[$prefix.'_bitrate']:0) ->setDecorators(array('ViewHelper')); $this->addElement($bitrate); $output = new Zend_Form_Element_Select('output'); $output->setLabel("Output to:") ->setMultiOptions(array("icecast"=>"Icecast", "shoutcast"=>"Shoutcast")) - ->setValue($setting['output_'.$prefix]) + ->setValue(isset($setting[$prefix.'_output'])?$setting[$prefix.'_output']:"icecast") ->setDecorators(array('ViewHelper')); $this->addElement($output); $host = new Zend_Form_Element_Text('host'); $host->setLabel("Server") - ->setValue($setting[$prefix.'_host']) + ->setValue(isset($setting[$prefix.'_host'])?$setting[$prefix.'_host']:"") ->setDecorators(array('ViewHelper')); $this->addElement($host); $port = new Zend_Form_Element_Text('port'); $port->setLabel("Port") - ->setValue($setting[$prefix.'_port']) + ->setValue(isset($setting[$prefix.'_port'])?$setting[$prefix.'_port']:"") ->setDecorators(array('ViewHelper')); $this->addElement($port); $pass = new Zend_Form_Element_Text('pass'); $pass->setLabel("Password") - ->setValue($setting[$prefix.'_pass']) + ->setValue(isset($setting[$prefix.'_pass'])?$setting[$prefix.'_pass']:"") ->setDecorators(array('ViewHelper')); $this->addElement($pass); $genre = new Zend_Form_Element_Text('genre'); - $genre->setLabel("Genre:") - ->setValue($setting[$prefix.'_genre']) + $genre->setLabel("Genre") + ->setValue(isset($setting[$prefix.'_genre'])?$setting[$prefix.'_genre']:"") ->setDecorators(array('ViewHelper')); $this->addElement($genre); $url = new Zend_Form_Element_Text('url'); $url->setLabel("URL") - ->setValue($setting[$prefix.'_url']) + ->setValue(isset($setting[$prefix.'_url'])?$setting[$prefix.'_url']:"") ->setDecorators(array('ViewHelper')); $this->addElement($url); $description = new Zend_Form_Element_Text('description'); $description->setLabel("Name/Description") - ->setValue($setting[$prefix.'_description']) + ->setValue(isset($setting[$prefix.'_description'])?$setting[$prefix.'_description']:"") ->setDecorators(array('ViewHelper')); $this->addElement($description); - $mount_info = explode('.',$setting[$prefix.'_mount']); + $mount_info = array(); + if(isset($setting[$prefix.'_mount'])){ + $mount_info = explode('.',$setting[$prefix.'_mount']); + } $mount = new Zend_Form_Element_Text('mount'); $mount->setLabel("Mount Point") - ->setValue($mount_info[0]) + ->setValue(isset($mount_info[0])?$mount_info[0]:"") ->setDecorators(array('ViewHelper')); $this->addElement($mount); + $user = new Zend_Form_Element_Text('user'); + $user->setLabel("Username") + ->setValue(isset($setting[$prefix.'_user'])?$setting[$prefix.'_user']:"") + ->setDecorators(array('ViewHelper')); + $this->addElement($user); + $this->setDecorators(array( array('ViewScript', array('viewScript' => 'form/stream-setting-form.phtml', "stream_number"=>$stream_number)) )); @@ -124,11 +133,6 @@ class Application_Form_StreamSettingSubForm extends Zend_Form_SubForm{ $element->addError("Port cannot be empty."); $isValid = false; } - if($data['pass'] == ''){ - $element = $this->getElement("pass"); - $element->addError("Password cannot be empty."); - $isValid = false; - } if($data['output'] == 'icecast'){ if($data['mount'] == ''){ $element = $this->getElement("mount"); diff --git a/airtime_mvc/application/models/StreamSetting.php b/airtime_mvc/application/models/StreamSetting.php index 8233388a3..6e755c4e6 100644 --- a/airtime_mvc/application/models/StreamSetting.php +++ b/airtime_mvc/application/models/StreamSetting.php @@ -26,7 +26,6 @@ class Application_Model_StreamSetting { foreach($d as $k=>$v){ $keyname = $prefix."_".$k; if( $k == 'output'){ - $keyname = $k."_".$prefix; if( $d["enable"] == 0){ $v = 'disabled'; } diff --git a/airtime_mvc/application/views/scripts/form/stream-setting-form.phtml b/airtime_mvc/application/views/scripts/form/stream-setting-form.phtml index d729cd27e..e51940ec5 100644 --- a/airtime_mvc/application/views/scripts/form/stream-setting-form.phtml +++ b/airtime_mvc/application/views/scripts/form/stream-setting-form.phtml @@ -63,8 +63,21 @@ +
+ +
+
+ element->getElement('user')?> + element->getElement('user')->hasErrors()) : ?> + + +
- +
element->getElement('pass')?> @@ -80,7 +93,7 @@ The following info will be displayed to listeners in their media player:
- +
element->getElement('description')?> @@ -106,7 +119,7 @@
- +
element->getElement('genre')?> diff --git a/airtime_mvc/build/sql/defaultdata.sql b/airtime_mvc/build/sql/defaultdata.sql index aeb2af5fd..2c9957925 100644 --- a/airtime_mvc/build/sql/defaultdata.sql +++ b/airtime_mvc/build/sql/defaultdata.sql @@ -4,38 +4,42 @@ INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_type', 'ogg, mp3'); INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_bitrate', '24, 32, 48, 64, 96, 128, 160, 192, 224, 256, 320'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device', 'false', 'boolean'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_icecast_vorbis_metadata', 'false', 'boolean'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_s1', 'icecast', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_s2', 'disabled', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_s3', 'disabled', 'string'); + +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_output', 'icecast', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_type', 'ogg', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_type', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_type', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_bitrate', '128', 'integer'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_bitrate', '', 'integer'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_bitrate', '', 'integer'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_host', '127.0.0.1', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_host', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_host', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_port', '8000', 'integer'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_port', '', 'integer'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_port', '', 'integer'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_user', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_pass', 'hackme', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_pass', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_pass', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_mount', 'airtime_128.ogg', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_mount', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_mount', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_url', 'http://airtime.sourcefabric.org', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_url', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_url', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_description', 'Airtime Radio! Stream #1', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_description', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_description', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s1_genre', 'genre', 'string'); + +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_output', 'disabled', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_type', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_bitrate', '', 'integer'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_host', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_port', '', 'integer'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_user', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_pass', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_mount', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_url', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_description', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s2_genre', '', 'string'); + +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_output', 'disabled', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_type', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_bitrate', '', 'integer'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_host', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_port', '', 'integer'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_user', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_pass', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_mount', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_url', '', 'string'); +INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_description', '', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('s3_genre', '', 'string'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('log_file', '/var/log/airtime/pypo-liquidsoap/