can edit file metadata.

This commit is contained in:
naomiaro 2010-12-30 17:26:44 -05:00
parent 2a37140c4d
commit 0cf89713a9
6 changed files with 136 additions and 19 deletions

View file

@ -34,7 +34,7 @@
<actionMethod actionName="contextMenu"/> <actionMethod actionName="contextMenu"/>
<actionMethod actionName="delete"/> <actionMethod actionName="delete"/>
<actionMethod actionName="contents"/> <actionMethod actionName="contents"/>
<actionMethod actionName="search"/> <actionMethod actionName="editFileMd"/>
</controllerFile> </controllerFile>
<controllerFile controllerName="Plupload"> <controllerFile controllerName="Plupload">
<actionMethod actionName="index"/> <actionMethod actionName="index"/>
@ -145,9 +145,6 @@
<viewControllerScriptsDirectory forControllerName="Playlist"> <viewControllerScriptsDirectory forControllerName="Playlist">
<viewScriptFile forActionName="deleteActive"/> <viewScriptFile forActionName="deleteActive"/>
</viewControllerScriptsDirectory> </viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Library">
<viewScriptFile forActionName="search"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Index"> <viewControllerScriptsDirectory forControllerName="Index">
<viewScriptFile forActionName="newfield"/> <viewScriptFile forActionName="newfield"/>
</viewControllerScriptsDirectory> </viewControllerScriptsDirectory>
@ -229,6 +226,9 @@
<viewControllerScriptsDirectory forControllerName="Playlist"> <viewControllerScriptsDirectory forControllerName="Playlist">
<viewScriptFile forActionName="close"/> <viewScriptFile forActionName="close"/>
</viewControllerScriptsDirectory> </viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Library">
<viewScriptFile forActionName="editFileMd"/>
</viewControllerScriptsDirectory>
</viewScriptsDirectory> </viewScriptsDirectory>
<viewHelpersDirectory/> <viewHelpersDirectory/>
<viewFiltersDirectory enabled="false"/> <viewFiltersDirectory enabled="false"/>

View file

@ -2,13 +2,12 @@
class LibraryController extends Zend_Controller_Action class LibraryController extends Zend_Controller_Action
{ {
protected $pl_sess = null; protected $pl_sess = null;
protected $search_sess = null; protected $search_sess = null;
public function init() public function init()
{ {
if(!Zend_Auth::getInstance()->hasIdentity()) if(!Zend_Auth::getInstance()->hasIdentity())
{ {
$this->_redirect('login/index'); $this->_redirect('login/index');
} }
@ -27,7 +26,7 @@ class LibraryController extends Zend_Controller_Action
public function indexAction() public function indexAction()
{ {
$this->view->headScript()->appendFile('/js/campcaster/onready/library.js','text/javascript'); $this->view->headScript()->appendFile('/js/campcaster/onready/library.js','text/javascript');
$this->view->headScript()->appendFile('/js/contextmenu/jjmenu.js','text/javascript'); $this->view->headScript()->appendFile('/js/contextmenu/jjmenu.js','text/javascript');
$this->view->headLink()->appendStylesheet('/css/contextmenu.css'); $this->view->headLink()->appendStylesheet('/css/contextmenu.css');
@ -42,7 +41,7 @@ class LibraryController extends Zend_Controller_Action
public function contextMenuAction() public function contextMenuAction()
{ {
$id = $this->_getParam('id'); $id = $this->_getParam('id');
$type = $this->_getParam('type'); $type = $this->_getParam('type');
$params = '/format/json/id/#id#/type/#type#'; $params = '/format/json/id/#id#/type/#type#';
@ -59,6 +58,9 @@ class LibraryController extends Zend_Controller_Action
'title' => 'Add to Playlist'); 'title' => 'Add to Playlist');
} }
$menu[] = array('action' => array('type' => 'gourl', 'url' => '/Library/edit-file-md/id/#id#'),
'title' => 'Info');
} }
else if($type === "pl") { else if($type === "pl") {
@ -87,7 +89,6 @@ class LibraryController extends Zend_Controller_Action
//returns format jjmenu is looking for. //returns format jjmenu is looking for.
die(json_encode($menu)); die(json_encode($menu));
} }
public function deleteAction() public function deleteAction()
@ -119,7 +120,7 @@ class LibraryController extends Zend_Controller_Action
public function contentsAction() public function contentsAction()
{ {
$this->view->headScript()->appendFile('/js/campcaster/library/library.js','text/javascript'); $this->view->headScript()->appendFile('/js/campcaster/library/library.js','text/javascript');
$this->_helper->viewRenderer->setResponseSegment('library'); $this->_helper->viewRenderer->setResponseSegment('library');
@ -132,9 +133,27 @@ class LibraryController extends Zend_Controller_Action
$this->view->files = StoredFile::searchFiles($md, $order); $this->view->files = StoredFile::searchFiles($md, $order);
} }
public function searchAction() public function editFileMdAction()
{ {
// action body $request = $this->getRequest();
$form = new Application_Form_EditAudioMD();
$file_id = $this->_getParam('id', null);
$file = StoredFile::Recall($file_id);
$form->populate($file->md);
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
$formdata = $form->getValues();
$file->replaceDbMetadata($formdata);
$this->_helper->redirector('index');
}
}
$this->view->form = $form;
} }
@ -152,3 +171,5 @@ class LibraryController extends Zend_Controller_Action

View file

@ -92,7 +92,6 @@ class PlaylistController extends Zend_Controller_Action
$pl_id = $pl->create("Test Zend Auth"); $pl_id = $pl->create("Test Zend Auth");
$pl->setPLMetaData('dc:creator', $userInfo->login); $pl->setPLMetaData('dc:creator', $userInfo->login);
//set this playlist as active id.
$this->changePlaylist($pl_id); $this->changePlaylist($pl_id);
$this->_helper->redirector('metadata'); $this->_helper->redirector('metadata');
@ -100,7 +99,6 @@ class PlaylistController extends Zend_Controller_Action
public function metadataAction() public function metadataAction()
{ {
$request = $this->getRequest(); $request = $this->getRequest();
$form = new Application_Form_PlaylistMetadata(); $form = new Application_Form_PlaylistMetadata();

View file

@ -5,7 +5,86 @@ class Application_Form_EditAudioMD extends Zend_Form
public function init() public function init()
{ {
/* Form Elements & Other Definitions Here ... */ // Set the method for the display form to POST
$this->setMethod('post');
// Add title field
$this->addElement('text', 'track_title', array(
'label' => 'Title:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
'NotEmpty',
)
));
// Add artist field
$this->addElement('text', 'artist_name', array(
'label' => 'Artist:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
'NotEmpty',
)
));
// Add bitrate field
// $this->addElement('text', 'bit_rate', array(
// 'label' => 'Bitrate:',
// 'attribs' => array('disabled' => 'disabled')
//));
// Add album field
$this->addElement('text', 'album_title', array(
'label' => 'Album:',
'filters' => array('StringTrim')
));
// Add genre field
$this->addElement('text', 'genre', array(
'label' => 'Genre:',
'filters' => array('StringTrim')
));
// Add year field
$this->addElement('text', 'year', array(
'label' => 'Year:',
'filters' => array('StringTrim'),
'validators' => array(
array('date', false, array('YYYY-MM-DD')),
array('date', false, array('YYYY'))
)
));
// Add label field
$this->addElement('text', 'label', array(
'label' => 'Label:',
'filters' => array('StringTrim')
));
// Add composer field
$this->addElement('text', 'composer', array(
'label' => 'Composer:',
'filters' => array('StringTrim')
));
// Add mood field
$this->addElement('text', 'mood', array(
'label' => 'Mood:',
'filters' => array('StringTrim')
));
// Add language field
$this->addElement('text', 'language', array(
'label' => 'Language:',
'filters' => array('StringTrim')
));
// Add the submit button
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Submit',
));
} }

View file

@ -537,6 +537,21 @@ class StoredFile {
$this->loadMetadata(); $this->loadMetadata();
} }
public function replaceDbMetadata($p_values)
{
global $CC_CONFIG, $CC_DBC;
foreach ($p_values as $category => $value) {
$escapedValue = pg_escape_string($value);
$columnName = $category;
if (!is_null($columnName)) {
$sql = "UPDATE ".$CC_CONFIG["filesTable"]
." SET $columnName='$escapedValue'"
." WHERE gunid = '".$this->gunid."'";
$CC_DBC->query($sql);
}
}
}
public function clearMetadata() public function clearMetadata()
{ {
$metadataColumns = array("format", "bit_rate", "sample_rate", "length", $metadataColumns = array("format", "bit_rate", "sample_rate", "length",

View file

@ -0,0 +1,4 @@
<?php
$this->form->setAction($this->url());
echo $this->form;