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()) : ?> + + +
+
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(); });