diff --git a/.zfproject.xml b/.zfproject.xml index 1807da152..2d7499e2c 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -97,6 +97,7 @@ + @@ -317,6 +318,9 @@ + + + diff --git a/application/configs/ACL.php b/application/configs/ACL.php index a0f72bc9e..e6fd9c72e 100644 --- a/application/configs/ACL.php +++ b/application/configs/ACL.php @@ -20,6 +20,7 @@ $ccAcl->add(new Zend_Acl_Resource('library')) ->add(new Zend_Acl_Resource('api')) ->add(new Zend_Acl_Resource('nowplaying')) ->add(new Zend_Acl_Resource('search')) + ->add(new Zend_Acl_Resource('dashboard')) ->add(new Zend_Acl_Resource('preference')); /** Creating permissions */ @@ -29,6 +30,7 @@ $ccAcl->allow('G', 'index') ->allow('G', 'nowplaying') ->allow('G', 'api') ->allow('G', 'schedule') + ->allow('G', 'dashboard') ->allow('H', 'library') ->allow('H', 'search') ->allow('H', 'plupload') diff --git a/application/configs/navigation.php b/application/configs/navigation.php index 0ac70cc51..9ee1cf342 100644 --- a/application/configs/navigation.php +++ b/application/configs/navigation.php @@ -54,7 +54,14 @@ $pages = array( 'resource' => 'user' ) ) - ) + ), + array( + 'label' => 'Help', + 'module' => 'default', + 'controller' => 'dashboard', + 'action' => 'help', + 'resource' => 'dashboard' + ) ); diff --git a/application/controllers/DashboardController.php b/application/controllers/DashboardController.php index 8ab5dd2e5..811800ca3 100644 --- a/application/controllers/DashboardController.php +++ b/application/controllers/DashboardController.php @@ -13,10 +13,15 @@ class DashboardController extends Zend_Controller_Action // action body } - + public function helpAction() + { + // action body + } } + + diff --git a/application/controllers/UserController.php b/application/controllers/UserController.php index f487954f6..72b6a20ef 100644 --- a/application/controllers/UserController.php +++ b/application/controllers/UserController.php @@ -36,6 +36,9 @@ class UserController extends Zend_Controller_Action if ($formdata['password'] != "xxxxxx") $user->setPassword($formdata['password']); $user->setType($formdata['type']); + $user->setEmail($formdata['email']); + $user->setSkype($formdata['skype']); + $user->setJabber($formdata['jabber']); $user->save(); $form->reset(); diff --git a/application/forms/AddUser.php b/application/forms/AddUser.php index db366c04d..12a22b952 100644 --- a/application/forms/AddUser.php +++ b/application/forms/AddUser.php @@ -47,6 +47,26 @@ class Application_Form_AddUser extends Zend_Form $lastName->addValidator('NotEmpty'); $this->addElement($lastName); + $email = new Zend_Form_Element_Text('email'); + $email->setLabel('Email:'); + $email->setAttrib('class', 'input_text'); + $email->addFilter('StringTrim'); + $email->addValidator('EmailAddress'); + $this->addElement($email); + + $skype = new Zend_Form_Element_Text('skype'); + $skype->setLabel('Skype:'); + $skype->setAttrib('class', 'input_text'); + $skype->addFilter('StringTrim'); + $this->addElement($skype); + + $jabber = new Zend_Form_Element_Text('jabber'); + $jabber->setLabel('Jabber:'); + $jabber->setAttrib('class', 'input_text'); + $jabber->addFilter('StringTrim'); + $jabber->addValidator('EmailAddress'); + $this->addElement($jabber); + $select = new Zend_Form_Element_Select('type'); $select->setAttrib('class', 'input_select'); $select->setAttrib('style', 'width: 40%'); diff --git a/application/models/Users.php b/application/models/Users.php index 843dae81c..ca3bdf448 100644 --- a/application/models/Users.php +++ b/application/models/Users.php @@ -50,6 +50,21 @@ class User { $user = $this->_userInstance; $user->setDbType($type); } + + public function setEmail($email){ + $user = $this->_userInstance; + $user->setDbEmail($email); + } + + public function setSkype($skype){ + $user = $this->_userInstance; + $user->setDbSkypeContact($skype); + } + + public function setJabber($jabber){ + $user = $this->_userInstance; + $user->setDbJabberContact($jabber); + } public function getLogin(){ $user = $this->_userInstance; @@ -75,6 +90,22 @@ class User { $user = $this->_userInstance; return $user->getDbType(); } + + public function getEmail(){ + $user = $this->_userInstance; + return $user->getDbEmail(); + } + + public function getSkype(){ + $user = $this->_userInstance; + return $user->getDbSkypeContact(); + } + + public function getJabber(){ + $user = $this->_userInstance; + return $user->getDbJabberContact(); + + } public function save(){ $this->_userInstance->save(); @@ -132,7 +163,7 @@ class User { public static function getUserData($id){ global $CC_DBC; - $sql = "SELECT login, first_name, last_name, type, id" + $sql = "SELECT login, first_name, last_name, type, id, email, skype_contact, jabber_contact" ." FROM cc_subjs" ." WHERE id = $id"; diff --git a/application/views/scripts/dashboard/help.phtml b/application/views/scripts/dashboard/help.phtml new file mode 100644 index 000000000..8483a9580 --- /dev/null +++ b/application/views/scripts/dashboard/help.phtml @@ -0,0 +1,16 @@ + +
+

Welcome to Airtime!

+

Here's how you can get started using Airtime to automate your broadcasts:

+ +
    +
  1. Add your files to the library using the "Add Audio" button. You can drag and drop your files to this window too.
  2. +
  3. Create a show by going to "Schedule" in the menu bar, and then clicking the "+ Show" icon. This can be either a one-time or repeating show. Only admins can add shows.
  4. +
  5. Create a playlist in the Playlist Builder menu using your audio files.
  6. +
  7. Add the playlist to the show by going to your show in the Schedule calendar, right-clicking on it and selecting "Schedule."
  8. +
  9. Select your playlist and drag and drop it to the "Items in this show" area.
  10. +
+

Then you're good to go!
+For more detailed help, read the user manual

+
+ diff --git a/public/css/images/big_gray_logo.png b/public/css/images/big_gray_logo.png new file mode 100644 index 000000000..45982bd1a Binary files /dev/null and b/public/css/images/big_gray_logo.png differ diff --git a/public/css/images/progressbar_show_red.png b/public/css/images/progressbar_show_error.png similarity index 100% rename from public/css/images/progressbar_show_red.png rename to public/css/images/progressbar_show_error.png diff --git a/public/css/images/sf_arror.png b/public/css/images/sf_arror.png new file mode 100644 index 000000000..706304a90 Binary files /dev/null and b/public/css/images/sf_arror.png differ diff --git a/public/css/styles.css b/public/css/styles.css index adf53ab77..ef101fea8 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -1347,6 +1347,68 @@ ul.errors li { #show_content_dialog .datatable { margin-top:8px; - - +} +.simple-formblock.metadata { + border:none; + width:100%; +} +#side_playlist .simple-formblock.metadata .input_text, #side_playlist .simple-formblock.metadata .input_text_area { + width:95%; +} +#side_playlist .simple-formblock.metadata.simple-formblock dd { + width:70%; +} +#side_playlist h3.plain { + float:none; + font-size:18px; + margin:2px 0 20px 0; +} + +.qtip { + font-size:11px; + line-height:160%; +} + +#schedule-show-who.scrolled { + margin-bottom: 0; + max-height:300px; + overflow:auto; +} +.text-content { + padding:20px 10px 40px 58px; + background: url(images/sf_arror.png) no-repeat 60% 0; + height:100%; +} +.text-content h2 { + font-size:2.4em; + color:#1f1f1f; +} +.text-content p { + font-size:1.6em; + line-height:140%; + color:#1f1f1f; + margin:0 0 1.4em 0; +} +.text-content a { + color:#f2f2f2; + text-decoration:none; +} +.text-content a:hover { + text-decoration:underline; +} + +.text-content ol { + margin:0 0 22px 25px; + padding:0; + list-style-position:outside; +} + +.text-content ol li { + margin:0 0 6px 0; + font-size:1.7em; + display:list-item; + color:#1f1f1f; +} +.gray-logo { + margin:5px 0 0 20px; } \ No newline at end of file diff --git a/public/js/airtime/user/user.js b/public/js/airtime/user/user.js index 969f9f9aa..4add2d4b1 100644 --- a/public/js/airtime/user/user.js +++ b/public/js/airtime/user/user.js @@ -8,6 +8,9 @@ function populateForm(entries){ $('#first_name').val(entries.first_name); $('#last_name').val(entries.last_name); $('#type').val(entries.type); + $('#email').val(entries.email); + $('#skype').val(entries.skype_contact); + $('#jabber').val(entries.jabber_contact); if (entries.id.length != 0){ $('#login').attr('readonly', 'readonly'); diff --git a/public/js/playlist/playlist.js b/public/js/playlist/playlist.js index fae37b183..b48f25a65 100644 --- a/public/js/playlist/playlist.js +++ b/public/js/playlist/playlist.js @@ -99,7 +99,7 @@ function updateProgressBarValue(){ } } else { $('#on-air-info').attr("class", "on-air-info off"); - $('#progress-show').attr("class", "progress-show-red"); + $('#progress-show').attr("class", "progress-show-error"); } $('#progress-bar').attr("style", "width:"+songPercentDone+"%");