Massive simplification of the GeneralPreferences dialog

* The purpose of this was so that we can use Zend_Form_Element
  decorators, which I need.
This commit is contained in:
Albert Santoni 2015-01-13 20:51:46 -05:00
parent 9e90e8af63
commit c4d3a8fa62
6 changed files with 99 additions and 185 deletions

View file

@ -17,6 +17,7 @@ require_once "Database.php";
require_once "Timezone.php"; require_once "Timezone.php";
require_once "Auth.php"; require_once "Auth.php";
require_once __DIR__.'/forms/helpers/ValidationTypes.php'; require_once __DIR__.'/forms/helpers/ValidationTypes.php';
require_once __DIR__.'/forms/helpers/CustomDecorators.php';
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php'; require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
require_once (APPLICATION_PATH."/logging/Logging.php"); require_once (APPLICATION_PATH."/logging/Logging.php");

View file

@ -5,6 +5,7 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
public function init() public function init()
{ {
$maxLens = Application_Model_Show::getMaxLengths();
$notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator(); $notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator();
$rangeValidator = Application_Form_Helper_ValidationTypes::overrideBetweenValidator(0, 59.9); $rangeValidator = Application_Form_Helper_ValidationTypes::overrideBetweenValidator(0, 59.9);
@ -22,12 +23,18 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
'required' => false, 'required' => false,
'filters' => array('StringTrim'), 'filters' => array('StringTrim'),
'value' => Application_Model_Preference::GetStationName(), 'value' => Application_Model_Preference::GetStationName(),
'decorators' => array(
'ViewHelper'
)
)); ));
//Default station fade in // Station description
$stationDescription = new Zend_Form_Element_Textarea("stationDescription");
$stationDescription->setLabel(_('Station Description'));
$stationDescription->setValue(Application_Model_Preference::GetStationDescription());
$stationDescription->setRequired(false);
$stationDescription->setValidators(array(array('StringLength', false, array(0, $maxLens['description']))));
$stationDescription->setAttrib('rows', 4);
$this->addElement($stationDescription);
//Default station crossfade duration
$this->addElement('text', 'stationDefaultCrossfadeDuration', array( $this->addElement('text', 'stationDefaultCrossfadeDuration', array(
'class' => 'input_text', 'class' => 'input_text',
'label' => _('Default Crossfade Duration (s):'), 'label' => _('Default Crossfade Duration (s):'),
@ -39,9 +46,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)'))) array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)')))
), ),
'value' => Application_Model_Preference::GetDefaultCrossfadeDuration(), 'value' => Application_Model_Preference::GetDefaultCrossfadeDuration(),
'decorators' => array(
'ViewHelper'
)
)); ));
//Default station fade in //Default station fade in
@ -56,9 +60,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)'))) array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)')))
), ),
'value' => $defaultFadeIn, 'value' => $defaultFadeIn,
'decorators' => array(
'ViewHelper'
)
)); ));
//Default station fade out //Default station fade out
@ -73,25 +74,31 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)'))) array('regex', false, array('/^[0-9]+(\.\d+)?$/', 'messages' => _('Please enter a time in seconds (eg. 0.5)')))
), ),
'value' => $defaultFadeOut, 'value' => $defaultFadeOut,
'decorators' => array(
'ViewHelper'
)
)); ));
$third_party_api = new Zend_Form_Element_Radio('thirdPartyApi'); $third_party_api = new Zend_Form_Element_Radio('thirdPartyApi');
$third_party_api->setLabel( $third_party_api->setLabel(_('Public Airtime API'));
sprintf(_('Allow Remote Websites To Access "Schedule" Info?%s (Enable this to make front-end widgets work.)'), '<br>')); $third_party_api->setDescription(_('Required for embeddable schedule widget.'));
$third_party_api->setMultiOptions(array(_("Disabled"), $third_party_api->setMultiOptions(array(
_("Enabled"))); _("Disabled"),
_("Enabled"),
));
$third_party_api->setValue(Application_Model_Preference::GetAllow3rdPartyApi()); $third_party_api->setValue(Application_Model_Preference::GetAllow3rdPartyApi());
$third_party_api->setDecorators(array('ViewHelper')); $third_party_api->setDescription(_('Enabling this feature will allow Airtime to provide schedule data
to external widgets that can be embedded in your website. Enable this
feature to reveal the embeddable code.'));
$third_party_api->setSeparator(' '); //No <br> between radio buttons
//$third_party_api->addDecorator(new Zend_Form_Decorator_Label(array('tag' => 'dd', 'class' => 'radio-inline-list')));
$third_party_api->addDecorator('HtmlTag', array('tag' => 'dd',
'id'=>"thirdPartyApi-element",
'class' => 'radio-inline-list',
));
$this->addElement($third_party_api); $this->addElement($third_party_api);
$locale = new Zend_Form_Element_Select("locale"); $locale = new Zend_Form_Element_Select("locale");
$locale->setLabel(_("Default Interface Language")); $locale->setLabel(_("Default Language"));
$locale->setMultiOptions(Application_Model_Locale::getLocales()); $locale->setMultiOptions(Application_Model_Locale::getLocales());
$locale->setValue(Application_Model_Preference::GetDefaultLocale()); $locale->setValue(Application_Model_Preference::GetDefaultLocale());
$locale->setDecorators(array('ViewHelper'));
$this->addElement($locale); $this->addElement($locale);
/* Form Element for setting the Timezone */ /* Form Element for setting the Timezone */
@ -99,7 +106,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
$timezone->setLabel(_("Station Timezone")); $timezone->setLabel(_("Station Timezone"));
$timezone->setMultiOptions(Application_Common_Timezone::getTimezones()); $timezone->setMultiOptions(Application_Common_Timezone::getTimezones());
$timezone->setValue(Application_Model_Preference::GetDefaultTimezone()); $timezone->setValue(Application_Model_Preference::GetDefaultTimezone());
$timezone->setDecorators(array('ViewHelper'));
$this->addElement($timezone); $this->addElement($timezone);
/* Form Element for setting which day is the start of the week */ /* Form Element for setting which day is the start of the week */
@ -107,7 +113,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
$week_start_day->setLabel(_("Week Starts On")); $week_start_day->setLabel(_("Week Starts On"));
$week_start_day->setMultiOptions($this->getWeekStartDays()); $week_start_day->setMultiOptions($this->getWeekStartDays());
$week_start_day->setValue(Application_Model_Preference::GetWeekStartDay()); $week_start_day->setValue(Application_Model_Preference::GetWeekStartDay());
$week_start_day->setDecorators(array('ViewHelper'));
$this->addElement($week_start_day); $this->addElement($week_start_day);
} }

View file

@ -0,0 +1,2 @@
<?php

View file

@ -1,138 +1,23 @@
<fieldset class="padded"> <fieldset class="padded">
<dl class="zend_form"> <dl class="zend_form">
<dt id="stationName-label" class="block-display">
<label class="required" for="stationName"><?php echo $this->element->getElement('stationName')->getLabel() ?>:
</label>
</dt>
<dd id="stationName-element" class="block-display">
<?php echo $this->element->getElement('stationName') ?>
<?php if($this->element->getElement('stationName')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('stationName')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="stationDefaultFadeIn-label" class="block-display">
<label class="optional" for="stationDefaultFadeIn"><?php echo $this->element->getElement('stationDefaultFadeIn')->getLabel() ?></label>
</dt>
<dd id="stationDefaultFadeIn-element" class="block-display">
<?php echo $this->element->getElement('stationDefaultFadeIn') ?>
<?php if($this->element->getElement('stationDefaultFadeIn')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('stationDefaultFadeIn')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="stationDefaultFadeOut-label" class="block-display">
<label class="optional" for="stationDefaultFadeOut"><?php echo $this->element->getElement('stationDefaultFadeOut')->getLabel() ?></label>
</dt>
<dd id="stationDefaultFadeOut-element" class="block-display">
<?php echo $this->element->getElement('stationDefaultFadeOut') ?>
<?php if($this->element->getElement('stationDefaultFadeOut')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('stationDefaultFadeOut')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="stationDefaultCrossfadeDuration-label" class="block-display">
<label class="optional" for="stationDefaultCrossfadeDuration"><?php echo $this->element->getElement('stationDefaultCrossfadeDuration')->getLabel() ?></label>
</dt>
<dd id="stationDefaultCrossfadeDuration-element" class="block-display">
<?php echo $this->element->getElement('stationDefaultCrossfadeDuration') ?>
<?php if($this->element->getElement('stationDefaultCrossfadeDuration')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('stationDefaultCrossfadeDuration')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="thirdPartyApi-label" class="block-display">
<label class="optional"><?php echo $this->element->getElement('thirdPartyApi')->getLabel() ?></label>
</dt>
<dd id="thirdPartyApi-element" class="block-display radio-inline-list">
<?php $i=0;
$value = $this->element->getElement('thirdPartyApi')->getValue();
?>
<?php foreach ($this->element->getElement('thirdPartyApi')->getMultiOptions() as $radio) : ?>
<label for="thirdPartyApi-<?php echo $i ?>">
<input type="radio" value="<?php echo $i ?>" id="thirdPartyApi-<?php echo $i ?>" name="thirdPartyApi" <?php if($i == $value){echo 'checked="checked"';}?>>
<?php echo $radio ?>
</input>
</label>
<?php $i = $i + 1; ?>
<?php endforeach; ?>
<?php if($this->element->getElement('thirdPartyApi')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('thirdPartyApi')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="locale-label" class="block-display"> <?php echo $this->element->getElement('stationName')->render() ?>
<label class="required" for="locale"><?php echo $this->element->getElement('locale')->getLabel() ?>:
</label>
</dt>
<dd id="locale-element" class="block-display">
<?php echo $this->element->getElement('locale') ?>
<?php if($this->element->getElement('locale')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('locale')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="timezone-label" class="block-display"> <?php echo $this->element->getElement('stationDescription')->render() ?>
<label class="required" for="timezone"><?php echo $this->element->getElement('timezone')->getLabel() ?>:
<span class="info-text-small"><?php _("(Required)") ?></span>
</label>
</dt>
<dd id="timezone-element" class="block-display">
<?php echo $this->element->getElement('timezone') ?>
<?php if($this->element->getElement('timezone')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('timezone')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<!-- Week Start Day option --> <?php echo $this->element->getElement('locale')->render() ?>
<dt id="weekStartDay-label" class="block-display">
<label class="required" for="timezone"><?php echo $this->element->getElement('weekStartDay')->getLabel() ?>: <?php echo $this->element->getElement('timezone')->render() ?>
</label>
</dt> <?php echo $this->element->getElement('weekStartDay')->render() ?>
<dd id="weekStartDay-element" class="block-display">
<?php $i=0; <?php echo $this->element->getElement('stationDefaultFadeIn')->render() ?>
$value = $this->element->getElement('weekStartDay')->getValue();
?> <?php echo $this->element->getElement('stationDefaultFadeOut')->render() ?>
<select id="weekStartDay" name="weekStartDay">
<?php foreach ($this->element->getElement('weekStartDay')->getMultiOptions() as $option) : ?> <?php echo $this->element->getElement('stationDefaultCrossfadeDuration')->render() ?>
<option value="<?php echo $i ?>" <?php if($i == $value){echo 'selected="selected"';}?> >
<?php echo $option ?> <?php echo $this->element->getElement('thirdPartyApi')->render() ?>
</option>
<?php $i = $i + 1; ?>
<?php endforeach; ?>
</select>
<?php if($this->element->getElement('weekStartDay')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('weekStartDay')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
</dl> </dl>
</fieldset> </fieldset>

View file

@ -13,7 +13,7 @@ html, body {
} }
#login-page { #login-page {
background: #1f1f1f url(images/login_page_bg.png) no-repeat center 0;` background: #1f1f1f url(images/login_page_bg.png) no-repeat center 0;
margin: 0; margin: 0;
padding: 0; padding: 0;
height:100%; height:100%;
@ -1002,6 +1002,27 @@ input[type="checkbox"] {
display:block; display:block;
} }
#pref_form dt, #pref_form dd,
#pref_form textarea {
display:block;
float:none;
margin-left:0;
padding-left:0;
width: 100%;
}
#pref_form textarea {
width: 98.5%;
}
#pref_form select {
width: 100%;
}
#pref_form p.description {
color: #3b3b3b;
font-size: 12px;
float: left;
}
dt.block-display, dd.block-display { dt.block-display, dd.block-display {
display:block; display:block;
float:none; float:none;