diff --git a/airtime_mvc/application/controllers/PlayouthistoryController.php b/airtime_mvc/application/controllers/PlayouthistoryController.php index cc28897fb..da7e7d8a8 100644 --- a/airtime_mvc/application/controllers/PlayouthistoryController.php +++ b/airtime_mvc/application/controllers/PlayouthistoryController.php @@ -7,6 +7,7 @@ class PlayouthistoryController extends Zend_Controller_Action $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext ->addActionContext('playout-history-feed', 'json') + ->addActionContext('edit-aggregate-item', 'json') ->initContext(); } @@ -71,12 +72,33 @@ class PlayouthistoryController extends Zend_Controller_Action $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); $historyService = new Application_Service_HistoryService(); - $r = $historyService->getItems($startsDT, $endsDT, $params); + $r = $historyService->getAggregateView($startsDT, $endsDT, $params); $this->view->sEcho = $r["sEcho"]; $this->view->iTotalDisplayRecords = $r["iTotalDisplayRecords"]; $this->view->iTotalRecords = $r["iTotalRecords"]; $this->view->history = $r["history"]; } + + public function editAggregateItemAction() + { + $file_id = $this->_getParam('id'); + + $historyService = new Application_Service_HistoryService(); + $form = $historyService->makeHistoryFileForm($file_id); + + $this->view->form = $form; + $this->view->dialog = $this->view->render('form/edit-history-file.phtml'); + + unset($this->view->form); + } + + public function updateAggregateItemAction() + { + $file_id = $this->_getParam('id'); + + $historyService = new Application_Service_HistoryService(); + $historyService->editPlayedFile($file_id); + } } diff --git a/airtime_mvc/application/forms/EditHistoryFile.php b/airtime_mvc/application/forms/EditHistoryFile.php new file mode 100644 index 000000000..8d5ca61cf --- /dev/null +++ b/airtime_mvc/application/forms/EditHistoryFile.php @@ -0,0 +1,86 @@ +setDecorators( + array( + array('ViewScript', array('viewScript' => 'form/edit-history-file.phtml')) + ) + ); + */ + + $this->setMethod('post'); + + + $this->addElement('hidden', 'file_id'); + + /* Title form element */ + $title = new Zend_Form_Element_Text('his_file_title'); + $title->setLabel(_('Title:')); + $title->setAttrib('class', 'input_text'); + $title->addFilter('StringTrim'); + //$title->setDecorators(array('viewHelper')); + $this->addElement($title); + + /* Creator form element */ + $creator = new Zend_Form_Element_Text('his_file_creator'); + $creator->setLabel(_('Creator:')); + $creator->setAttrib('class', 'input_text'); + $creator->addFilter('StringTrim'); + //$creator->setDecorators(array('viewHelper')); + $this->addElement($creator); + + /* Composer form element */ + $composer = new Zend_Form_Element_Text('his_file_composer'); + $composer->setLabel(_('Composer:')); + $composer->setAttrib('class', 'input_text'); + $composer->addFilter('StringTrim'); + //$composer->setDecorators(array('viewHelper')); + $this->addElement($composer); + + /* Copyright form element */ + $copyright = new Zend_Form_Element_Text('his_file_copyright'); + $copyright->setLabel(_('Copyright:')); + $copyright->setAttrib('class', 'input_text'); + $copyright->addFilter('StringTrim'); + //$copyright->setDecorators(array('viewHelper')); + $this->addElement($copyright); + + // Add the submit button + $this->addElement('button', 'his_file_save', array( + 'ignore' => true, + 'class' => 'btn', + 'label' => _('Save'), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // Add the cancel button + $this->addElement('button', 'his_file_cancel', array( + 'ignore' => true, + 'class' => 'btn', + 'label' => _('Cancel'), + 'decorators' => array( + 'ViewHelper' + ) + )); + + $this->addDisplayGroup( + array( + 'his_file_save', + 'his_file_cancel' + ), + 'submitButtons', + array( + 'decorators' => array( + 'FormElements', + 'DtDdWrapper' + ) + ) + ); + } +} \ No newline at end of file diff --git a/airtime_mvc/application/forms/EditHistoryItem.php b/airtime_mvc/application/forms/EditHistoryItem.php new file mode 100644 index 000000000..396c79fb2 --- /dev/null +++ b/airtime_mvc/application/forms/EditHistoryItem.php @@ -0,0 +1,8 @@ + "artist_name", - "title" => "track_title", - "played" => "played", - "length" => "length", - "composer" => "composer", - "copyright" => "copyright", + private $mDataPropMap = array ( + "artist" => "artist_name", + "title" => "track_title", + "played" => "played", + "length" => "length", + "composer" => "composer", + "copyright" => "copyright", ); public function __construct() @@ -29,22 +29,24 @@ class Application_Service_HistoryService { for ($i = 0; $i < $opts["iColumns"]; $i++) { - $opts["mDataProp_{$i}"] = $this->mDataPropMap[$opts["mDataProp_{$i}"]]; + if ($opts["bSearchable_{$i}"] === "true") { + $opts["mDataProp_{$i}"] = $this->mDataPropMap[$opts["mDataProp_{$i}"]]; + } } } - public function getItems($startDT, $endDT, $opts) + public function getAggregateView($startDT, $endDT, $opts) { $this->translateColumns($opts); - $select = array( - "file.track_title as title", - "file.artist_name as artist", - "playout.played", - "playout.file_id", - "file.composer", - "file.copyright", - "file.length" + $select = array ( + "file.track_title as title", + "file.artist_name as artist", + "playout.played", + "playout.file_id", + "file.composer", + "file.copyright", + "file.length" ); $start = $startDT->format("Y-m-d H:i:s"); @@ -117,5 +119,26 @@ class Application_Service_HistoryService throw $e; } } + + public function makeHistoryItemForm() { + + } + + public function makeHistoryFileForm($id) { + + $form = new Application_Form_EditHistoryFile(); + + return $form; + } + + /* id is an id in cc_playout_history */ + public function editPlayedItem($id) { + + } + + /* id is an id in cc_files */ + public function editPlayedFile($id) { + + } } \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/form/edit-history-file.phtml b/airtime_mvc/application/views/scripts/form/edit-history-file.phtml new file mode 100644 index 000000000..70f5806a4 --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/edit-history-file.phtml @@ -0,0 +1,3 @@ +
\ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/form/edit-history-item.phtml b/airtime_mvc/application/views/scripts/form/edit-history-item.phtml new file mode 100644 index 000000000..e69de29bb diff --git a/airtime_mvc/public/js/airtime/playouthistory/historytable.js b/airtime_mvc/public/js/airtime/playouthistory/historytable.js index 0cbd672ff..a562ee893 100644 --- a/airtime_mvc/public/js/airtime/playouthistory/historytable.js +++ b/airtime_mvc/public/js/airtime/playouthistory/historytable.js @@ -1,18 +1,21 @@ function getFileName(ext){ - var filename = $("#his_date_start").val()+"_"+$("#his_time_start").val()+"m--"+$("#his_date_end").val()+"_"+$("#his_time_end").val()+"m" - filename = filename.replace(/:/g,"h") - if(ext == "pdf"){ - filename = filename+".pdf" - }else{ - filename = filename+".csv" + var filename = $("#his_date_start").val()+"_"+$("#his_time_start").val()+"m--"+$("#his_date_end").val()+"_"+$("#his_time_end").val()+"m"; + filename = filename.replace(/:/g,"h"); + + if (ext == "pdf"){ + filename = filename+".pdf"; + } + else { + filename = filename+".csv"; } return filename; } function setFlashFileName( nButton, oConfig, oFlash ) { - var filename = getFileName(oConfig.sExtends) + var filename = getFileName(oConfig.sExtends); oFlash.setFileName( filename ); - if(oConfig.sExtends == "pdf"){ + + if (oConfig.sExtends == "pdf") { this.fnSetText( oFlash, "title:"+ this.fnGetTitle(oConfig) +"\n"+ "message:"+ oConfig.sPdfMessage +"\n"+ @@ -21,9 +24,9 @@ function setFlashFileName( nButton, oConfig, oFlash ) { "size:"+ oConfig.sPdfSize +"\n"+ "--/TableToolsOpts--\n" + this.fnGetTableData(oConfig)); - }else{ - this.fnSetText( oFlash, - this.fnGetTableData(oConfig)); + } + else { + this.fnSetText(oFlash, this.fnGetTableData(oConfig)); } } @@ -60,6 +63,16 @@ var AIRTIME = (function(AIRTIME) { "data": aoData, "success": fnCallback } ); + }, + + fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { + var url = baseUrl+"Playouthistory/edit-aggregate-item/format/json/id/"+aData.file_id, + $link = $("", { + "href": url, + "text": $.i18n._("Edit") + }); + + $('td.his_edit', nRow).html($link); }; oTable = historyTableDiv.dataTable( { @@ -70,7 +83,8 @@ var AIRTIME = (function(AIRTIME) { {"sTitle": $.i18n._("Played"), "mDataProp": "played", "sClass": "his_artist"}, /* times played */ {"sTitle": $.i18n._("Length"), "mDataProp": "length", "sClass": "his_length library_length"}, /* Length */ {"sTitle": $.i18n._("Composer"), "mDataProp": "composer", "sClass": "his_composer"}, /* Composer */ - {"sTitle": $.i18n._("Copyright"), "mDataProp": "copyright", "sClass": "his_copyright"} /* Copyright */ + {"sTitle": $.i18n._("Copyright"), "mDataProp": "copyright", "sClass": "his_copyright"}, /* Copyright */ + {"sTitle" : $.i18n._("Admin"), "mDataProp": "file_id", "bSearchable" : false, "sClass": "his_edit"}, /* id of history item */ ], "bProcessing": true, @@ -80,6 +94,8 @@ var AIRTIME = (function(AIRTIME) { "fnServerData": fnServerData, + "fnRowCallback": fnRowCallback, + "oLanguage": datatables_dict, "aLengthMenu": [[50, 100, 500, -1], [50, 100, 500, $.i18n._("All")]], @@ -184,6 +200,27 @@ $(document).ready(function(){ history_content.find(dateEndId).datepicker(oBaseDatePickerSettings); history_content.find(timeEndId).timepicker(oBaseTimePickerSettings); + history_content.on("click", "td.his_edit", function(e) { + var url = e.target.href; + + e.preventDefault(); + + $.get(url, function(json) { + var dialog = $(json.dialog); + + dialog.dialog({ + autoOpen: false, + title: $.i18n._("Edit History Record"), + //width: 460, + //height: 660, + modal: true + //close: closeDialogLibrary + }); + + dialog.dialog('open'); + + }, "json"); + }); history_content.find("#his_submit").click(function(ev){ var fn,