Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
7d6e251adf
|
@ -115,7 +115,7 @@ class LoginController extends Zend_Controller_Action
|
||||||
$auth = new Application_Model_Auth();
|
$auth = new Application_Model_Auth();
|
||||||
|
|
||||||
$auth->sendPasswordRestoreLink($user, $this->view);
|
$auth->sendPasswordRestoreLink($user, $this->view);
|
||||||
$this->_helper->redirector('password-restore-after', 'auth');
|
$this->_helper->redirector('password-restore-after', 'login');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$form->email->addError($this->view->translate("Given email not found."));
|
$form->email->addError($this->view->translate("Given email not found."));
|
||||||
|
@ -146,7 +146,7 @@ class LoginController extends Zend_Controller_Action
|
||||||
|
|
||||||
//check validity of token
|
//check validity of token
|
||||||
if (!$auth->checkToken($user_id, $token, 'password.restore')) {
|
if (!$auth->checkToken($user_id, $token, 'password.restore')) {
|
||||||
echo "token not valid";
|
Logging::debug("token not valid");
|
||||||
$this->_helper->redirector('index', 'login');
|
$this->_helper->redirector('index', 'login');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,9 @@ class UsersettingsController extends Zend_Controller_Action
|
||||||
->addActionContext('get-library-datatable', 'json')
|
->addActionContext('get-library-datatable', 'json')
|
||||||
->addActionContext('set-library-datatable', 'json')
|
->addActionContext('set-library-datatable', 'json')
|
||||||
->addActionContext('get-timeline-datatable', 'json')
|
->addActionContext('get-timeline-datatable', 'json')
|
||||||
->addActionContext('set-timeline-datatable', 'json')
|
->addActionContext('set-timeline-datatable', 'json')
|
||||||
->addActionContext('register', 'json')
|
|
||||||
->addActionContext('remindme', 'json')
|
->addActionContext('remindme', 'json')
|
||||||
|
->addActionContext('donotshowregistrationpopup', 'json')
|
||||||
->initContext();
|
->initContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ class Application_Model_Auth {
|
||||||
$info->setDbCreated(gmdate('Y-m-d H:i:s'));
|
$info->setDbCreated(gmdate('Y-m-d H:i:s'));
|
||||||
$info->save();
|
$info->save();
|
||||||
|
|
||||||
|
Logging::debug("generated token {$token}");
|
||||||
|
|
||||||
return $token;
|
return $token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -245,7 +245,8 @@ class Application_Model_Schedule {
|
||||||
showt.background_color AS show_background_color, showt.id AS show_id,
|
showt.background_color AS show_background_color, showt.id AS show_id,
|
||||||
|
|
||||||
si.starts AS si_starts, si.ends AS si_ends, si.time_filled AS si_time_filled,
|
si.starts AS si_starts, si.ends AS si_ends, si.time_filled AS si_time_filled,
|
||||||
si.record AS si_record, si.rebroadcast AS si_rebroadcast, si.id AS si_id, si.last_scheduled AS si_last_scheduled,
|
si.record AS si_record, si.rebroadcast AS si_rebroadcast, si.instance_id AS parent_show,
|
||||||
|
si.id AS si_id, si.last_scheduled AS si_last_scheduled,
|
||||||
|
|
||||||
sched.starts AS sched_starts, sched.ends AS sched_ends, sched.id AS sched_id,
|
sched.starts AS sched_starts, sched.ends AS sched_ends, sched.id AS sched_id,
|
||||||
sched.cue_in AS cue_in, sched.cue_out AS cue_out,
|
sched.cue_in AS cue_in, sched.cue_out AS cue_out,
|
||||||
|
|
|
@ -159,6 +159,22 @@ class Application_Model_ShowBuilder {
|
||||||
$showEndDT->setTimezone(new DateTimeZone($this->timezone));
|
$showEndDT->setTimezone(new DateTimeZone($this->timezone));
|
||||||
$endsEpoch = floatval($showEndDT->format("U.u"));
|
$endsEpoch = floatval($showEndDT->format("U.u"));
|
||||||
|
|
||||||
|
//is a rebroadcast show
|
||||||
|
if (intval($p_item["si_rebroadcast"]) === 1) {
|
||||||
|
$row["rebroadcast"] = true;
|
||||||
|
|
||||||
|
$parentInstance = CcShowInstancesQuery::create()->findPk($p_item["parent_show"]);
|
||||||
|
$name = $parentInstance->getCcShow()->getDbName();
|
||||||
|
$dt = $parentInstance->getDbStarts(null);
|
||||||
|
$dt->setTimezone(new DateTimeZone($this->timezone));
|
||||||
|
$time = $dt->format("Y-m-d H:i");
|
||||||
|
|
||||||
|
$row["rebroadcast_title"] = "Rebroadcast of {$name} from {$time}";
|
||||||
|
}
|
||||||
|
else if (intval($p_item["si_record"]) === 1) {
|
||||||
|
$row["record"] = true;
|
||||||
|
}
|
||||||
|
|
||||||
if ($startsEpoch < $this->epoch_now && $endsEpoch > $this->epoch_now) {
|
if ($startsEpoch < $this->epoch_now && $endsEpoch > $this->epoch_now) {
|
||||||
$row["currentShow"] = true;
|
$row["currentShow"] = true;
|
||||||
$this->currentShow = true;
|
$this->currentShow = true;
|
||||||
|
@ -238,7 +254,11 @@ class Application_Model_ShowBuilder {
|
||||||
$row["id"] = 0 ;
|
$row["id"] = 0 ;
|
||||||
$row["instance"] = intval($p_item["si_id"]);
|
$row["instance"] = intval($p_item["si_id"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (intval($p_item["si_rebroadcast"]) === 1) {
|
||||||
|
$row["record"] = true;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->currentShow = true) {
|
if ($this->currentShow = true) {
|
||||||
$row["currentShow"] = true;
|
$row["currentShow"] = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,14 @@
|
||||||
<dd id="new-password-element">
|
<dd id="new-password-element">
|
||||||
<?php echo $this->element->getElement('password') ?>
|
<?php echo $this->element->getElement('password') ?>
|
||||||
</dd>
|
</dd>
|
||||||
|
<?php if($this->element->getElement('password')->hasErrors()): ?>
|
||||||
|
<ul class='errors'>
|
||||||
|
<?php foreach($this->element->getElement('password')->getMessages() as $error): ?>
|
||||||
|
<li><?php echo $error; ?></li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<dt id="confirm-password-label">
|
<dt id="confirm-password-label">
|
||||||
<label for="confirm-password" class="required">
|
<label for="confirm-password" class="required">
|
||||||
<?php echo $this->element->getElement('password_confirm')->getLabel() ?>
|
<?php echo $this->element->getElement('password_confirm')->getLabel() ?>
|
||||||
|
@ -16,6 +24,13 @@
|
||||||
<dd id="confirm-password-element">
|
<dd id="confirm-password-element">
|
||||||
<?php echo $this->element->getElement('password_confirm') ?>
|
<?php echo $this->element->getElement('password_confirm') ?>
|
||||||
</dd>
|
</dd>
|
||||||
|
<?php if($this->element->getElement('password_confirm')->hasErrors()): ?>
|
||||||
|
<ul class='errors'>
|
||||||
|
<?php foreach($this->element->getElement('password_confirm')->getMessages() as $error): ?>
|
||||||
|
<li><?php echo $error; ?></li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<dt id="submit-label"> </dt>
|
<dt id="submit-label"> </dt>
|
||||||
<dd id="submit-element">
|
<dd id="submit-element">
|
||||||
|
|
|
@ -8,6 +8,13 @@
|
||||||
<dd id="username-element">
|
<dd id="username-element">
|
||||||
<?php echo $this->element->getElement('email') ?>
|
<?php echo $this->element->getElement('email') ?>
|
||||||
</dd>
|
</dd>
|
||||||
|
<?php if($this->element->getElement('email')->hasErrors()): ?>
|
||||||
|
<ul class='errors'>
|
||||||
|
<?php foreach($this->element->getElement('email')->getMessages() as $error): ?>
|
||||||
|
<li><?php echo $error; ?></li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
<dt id="submit-label"> </dt>
|
<dt id="submit-label"> </dt>
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
<h2>Email sent</h2>
|
<h2>Email sent</h2>
|
||||||
|
|
||||||
<div id="login" class="login-content clearfix">
|
<div id="login" class="login-content clearfix">
|
||||||
<p class="light">An email has been sent to <?php $this->form->email->getValue() ?></p>
|
<p class="light">An email has been sent</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -228,7 +228,8 @@ var AIRTIME = (function(AIRTIME){
|
||||||
//background-color to imitate calendar color.
|
//background-color to imitate calendar color.
|
||||||
r,g,b,a,
|
r,g,b,a,
|
||||||
$nRow = $(nRow),
|
$nRow = $(nRow),
|
||||||
$image;
|
$image,
|
||||||
|
$div;
|
||||||
|
|
||||||
fnPrepareSeparatorRow = function fnPrepareSeparatorRow(sRowContent, sClass, iNodeIndex) {
|
fnPrepareSeparatorRow = function fnPrepareSeparatorRow(sRowContent, sClass, iNodeIndex) {
|
||||||
|
|
||||||
|
@ -252,7 +253,25 @@ var AIRTIME = (function(AIRTIME){
|
||||||
node.innerHTML = '';
|
node.innerHTML = '';
|
||||||
cl = 'sb-header';
|
cl = 'sb-header';
|
||||||
|
|
||||||
|
if (aData.record === true) {
|
||||||
|
$div = $("<div/>", {
|
||||||
|
"class": "small-icon recording"
|
||||||
|
});
|
||||||
|
$(node).append($div);
|
||||||
|
}
|
||||||
|
else if(aData.rebroadcast === true) {
|
||||||
|
$div = $("<div/>", {
|
||||||
|
"class": "small-icon rebroadcast"
|
||||||
|
});
|
||||||
|
$(node).append($div);
|
||||||
|
}
|
||||||
|
|
||||||
sSeparatorHTML = '<span class="show-title">'+aData.title+'</span>';
|
sSeparatorHTML = '<span class="show-title">'+aData.title+'</span>';
|
||||||
|
|
||||||
|
if (aData.rebroadcast === true) {
|
||||||
|
sSeparatorHTML += '<span>'+aData.rebroadcast_title+'</span>';
|
||||||
|
}
|
||||||
|
|
||||||
sSeparatorHTML += '<span class="push-right">';
|
sSeparatorHTML += '<span class="push-right">';
|
||||||
|
|
||||||
if (aData.startDate === aData.endDate) {
|
if (aData.startDate === aData.endDate) {
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
Before you overwrite jquery.contextMenu.js, note that we have changed a few lines
|
||||||
|
in this file.
|
||||||
|
|
||||||
|
denise@denise-DX4860:~/airtime/airtime_mvc/public/js/contextmenu$ diff -u jquery.contextMenu_orig.js jquery.contextMenu.js
|
||||||
|
--- jquery.contextMenu_orig.js 2012-04-20 10:15:59.943215571 -0400
|
||||||
|
+++ jquery.contextMenu.js 2012-04-20 10:00:18.911178927 -0400
|
||||||
|
@@ -306,6 +306,15 @@
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
$this.remove();
|
||||||
|
root.$menu.trigger('contextmenu:hide');
|
||||||
|
+ /* (Airtime) added this to allow user to exit out of menu.
|
||||||
|
+ * if ignoreThisClick remains false, every right click
|
||||||
|
+ * thereafter continues to show the menu
|
||||||
|
+ */
|
||||||
|
+ if (ignoreRightClick) {
|
||||||
|
+ if (e.button == 2) {
|
||||||
|
+ ignoreThisClick = true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
},
|
||||||
|
// key handled :hover
|
||||||
|
keyStop: function(e, opt) {
|
||||||
|
|
|
@ -306,6 +306,15 @@ var // currently active contextMenu trigger
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
$this.remove();
|
$this.remove();
|
||||||
root.$menu.trigger('contextmenu:hide');
|
root.$menu.trigger('contextmenu:hide');
|
||||||
|
/* (Airtime) added this to allow user to exit out of menu.
|
||||||
|
* if ignoreThisClick remains false, every right click
|
||||||
|
* thereafter continues to show the menu
|
||||||
|
*/
|
||||||
|
if (ignoreRightClick) {
|
||||||
|
if (e.button == 2) {
|
||||||
|
ignoreThisClick = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// key handled :hover
|
// key handled :hover
|
||||||
keyStop: function(e, opt) {
|
keyStop: function(e, opt) {
|
||||||
|
|
|
@ -287,15 +287,15 @@ a.jp-mute, a.jp-unmute, a.jp-volume-max {
|
||||||
}
|
}
|
||||||
div.jp-audio div.jp-type-single a.jp-mute{
|
div.jp-audio div.jp-type-single a.jp-mute{
|
||||||
top: 15px;
|
top: 15px;
|
||||||
left: 102px;
|
left: 106px;
|
||||||
}
|
}
|
||||||
div.jp-audio div.jp-type-single a.jp-unmute {
|
div.jp-audio div.jp-type-single a.jp-unmute {
|
||||||
top: 15px;
|
top: 15px;
|
||||||
left: 90px;
|
left: 95px;
|
||||||
}
|
}
|
||||||
div.jp-audio div.jp-type-playlist a.jp-mute, div.jp-audio div.jp-type-playlist a.jp-unmute {
|
div.jp-audio div.jp-type-playlist a.jp-mute, div.jp-audio div.jp-type-playlist a.jp-unmute {
|
||||||
top: 32px;
|
top: 32px;
|
||||||
left: 296px;
|
left: 297px;
|
||||||
}
|
}
|
||||||
div.jp-video a.jp-mute, div.jp-video a.jp-unmute {
|
div.jp-video a.jp-mute, div.jp-video a.jp-unmute {
|
||||||
top: 27px;
|
top: 27px;
|
||||||
|
@ -351,7 +351,7 @@ div.jp-volume-bar {
|
||||||
}
|
}
|
||||||
div.jp-audio div.jp-type-single div.jp-volume-bar {
|
div.jp-audio div.jp-type-single div.jp-volume-bar {
|
||||||
top: 24px;
|
top: 24px;
|
||||||
left: 120px;
|
left: 125px;
|
||||||
}
|
}
|
||||||
div.jp-audio div.jp-type-playlist div.jp-volume-bar {
|
div.jp-audio div.jp-type-playlist div.jp-volume-bar {
|
||||||
top: 37px;
|
top: 37px;
|
||||||
|
|
|
@ -142,8 +142,15 @@ class AirtimeProcessEvent(ProcessEvent):
|
||||||
|
|
||||||
#delete files from organize if they can not be read properly.
|
#delete files from organize if they can not be read properly.
|
||||||
if pathname is None:
|
if pathname is None:
|
||||||
os.remove(oldPath)
|
try:
|
||||||
return
|
self.logger.info("Deleting file because it cannot be read properly: %s", oldPath)
|
||||||
|
os.remove(oldPath)
|
||||||
|
return
|
||||||
|
except Exception, e:
|
||||||
|
import traceback
|
||||||
|
top = traceback.format_exc()
|
||||||
|
self.logger.error('Exception: %s', e)
|
||||||
|
self.logger.error("traceback: %s", top)
|
||||||
|
|
||||||
self.mmc.set_needed_file_permissions(pathname, dir)
|
self.mmc.set_needed_file_permissions(pathname, dir)
|
||||||
is_recorded = self.mmc.is_parent_directory(pathname, self.config.recorded_directory)
|
is_recorded = self.mmc.is_parent_directory(pathname, self.config.recorded_directory)
|
||||||
|
@ -245,7 +252,14 @@ class AirtimeProcessEvent(ProcessEvent):
|
||||||
|
|
||||||
#delete files from organize if they can not be read properly.
|
#delete files from organize if they can not be read properly.
|
||||||
if filepath is None:
|
if filepath is None:
|
||||||
os.remove(event.pathname)
|
try:
|
||||||
|
self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname)
|
||||||
|
os.remove(event.pathname)
|
||||||
|
except Exception, e:
|
||||||
|
import traceback
|
||||||
|
top = traceback.format_exc()
|
||||||
|
self.logger.error('Exception: %s', e)
|
||||||
|
self.logger.error("traceback: %s", top)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
filepath = event.pathname
|
filepath = event.pathname
|
||||||
|
@ -258,7 +272,14 @@ class AirtimeProcessEvent(ProcessEvent):
|
||||||
|
|
||||||
#delete files from organize if they can not be read properly.
|
#delete files from organize if they can not be read properly.
|
||||||
if filepath is None:
|
if filepath is None:
|
||||||
os.remove(event.pathname)
|
try:
|
||||||
|
self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname)
|
||||||
|
os.remove(event.pathname)
|
||||||
|
except Exception, e:
|
||||||
|
import traceback
|
||||||
|
top = traceback.format_exc()
|
||||||
|
self.logger.error('Exception: %s', e)
|
||||||
|
self.logger.error("traceback: %s", top)
|
||||||
else:
|
else:
|
||||||
#show dragged from unwatched folder into a watched folder. Do not "organize".:q!
|
#show dragged from unwatched folder into a watched folder. Do not "organize".:q!
|
||||||
if self.mmc.is_parent_directory(event.pathname, self.config.recorded_directory):
|
if self.mmc.is_parent_directory(event.pathname, self.config.recorded_directory):
|
||||||
|
|
Loading…
Reference in New Issue