diff --git a/application/configs/navigation.php b/application/configs/navigation.php
index 9af489d6c..a5de95b29 100644
--- a/application/configs/navigation.php
+++ b/application/configs/navigation.php
@@ -65,7 +65,7 @@ $pages = array(
'label' => 'Search',
'module' => 'default',
'controller' => 'Search',
- 'action' => 'display',
+ 'action' => 'index',
'resource' => 'search'
)
)
diff --git a/application/controllers/LibraryController.php b/application/controllers/LibraryController.php
index 7f575669b..fffba5873 100644
--- a/application/controllers/LibraryController.php
+++ b/application/controllers/LibraryController.php
@@ -24,16 +24,23 @@ class LibraryController extends Zend_Controller_Action
public function indexAction()
{
- $this->view->headScript()->appendFile('/js/contextmenu/jquery.contextMenu.js','text/javascript');
$this->view->headScript()->appendFile('/js/campcaster/library/library.js','text/javascript');
-
- $this->view->headLink()->appendStylesheet('/css/jquery.contextMenu.css');
+ $this->_helper->layout->setLayout('library');
+
$this->_helper->actionStack('context-menu', 'library');
+ $this->_helper->actionStack('contents', 'library');
+ $this->_helper->actionStack('index', 'sideplaylist');
}
public function contextMenuAction()
{
+ $this->_helper->viewRenderer->setResponseSegment('library');
+
+ $this->view->headScript()->appendFile('/js/campcaster/library/context-menu.js','text/javascript');
+ $this->view->headScript()->appendFile('/js/contextmenu/jquery.contextMenu.js','text/javascript');
+ $this->view->headLink()->appendStylesheet('/css/jquery.contextMenu.css');
+
$pl_sess = $this->pl_sess;
$contextMenu;
@@ -43,8 +50,6 @@ class LibraryController extends Zend_Controller_Action
$contextMenu[] = array('action' => '/Playlist/add-item', 'text' => 'Add To Playlist');
$this->view->menu = $contextMenu;
-
- $this->_helper->actionStack('contents', 'library');
}
public function deleteAction()
@@ -77,12 +82,12 @@ class LibraryController extends Zend_Controller_Action
public function contentsAction()
{
+ $this->_helper->viewRenderer->setResponseSegment('library');
+
$query["category"] = $this->_getParam('ob', "dc:creator");
$query["order"] = $this->_getParam('order', "asc");
$this->view->files = StoredFile::getFiles($query);
-
- $this->_helper->actionStack('index', 'sideplaylist');
}
public function searchAction()
diff --git a/application/controllers/SearchController.php b/application/controllers/SearchController.php
index 4309d4c5b..8eccc5598 100644
--- a/application/controllers/SearchController.php
+++ b/application/controllers/SearchController.php
@@ -14,6 +14,7 @@ class SearchController extends Zend_Controller_Action
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('newfield', 'html')
+ ->addActionContext('display', 'json')
->initContext();
$this->form = new Application_Form_AdvancedSearch();
@@ -21,7 +22,12 @@ class SearchController extends Zend_Controller_Action
public function indexAction()
{
- // action body
+ $this->_helper->layout->setLayout('search');
+
+ $this->_helper->actionStack('context-menu', 'library');
+ $this->_helper->actionStack('display', 'search');
+ $this->_helper->actionStack('contents', 'library');
+ $this->_helper->actionStack('index', 'sideplaylist');
}
public function displayAction()
@@ -29,11 +35,15 @@ class SearchController extends Zend_Controller_Action
$this->view->headScript()->appendFile('/js/campcaster/library/advancedsearch.js','text/javascript');
$this->view->headLink()->appendStylesheet('/css/library_search.css');
+ $this->_helper->viewRenderer->setResponseSegment('search');
+
+ $request = $this->getRequest();
+
$this->form = new Application_Form_AdvancedSearch();
$form = $this->form;
- // Form has not been submitted - pass to view and return
- if (!$this->getRequest()->isPost()) {
+ // Form has not been submitted - displayed using layouts
+ if (!$request->isPost()) {
$sub = new Application_Form_AdvancedSearchRow(1);
$form->addSubForm($sub, 'row_1');
$form->getSubForm('row_1')->removeDecorator('DtDdWrapper');
@@ -43,18 +53,20 @@ class SearchController extends Zend_Controller_Action
}
// Form has been submitted - run data through preValidation()
- $form->preValidation($_POST);
+ $form->preValidation($request->getPost());
- if (!$form->isValid($_POST)) {
- $this->view->form = $form;
+ if (!$form->isValid($request->getPost())) {
+ $this->view->form = $form->__toString();
return;
}
- // Form is valid
- $this->view->form = $form;
+ // form was submitted, send back strings to json response.
+ //$this->view->form = $form->__toString();
- $info = $form->getValues();
+ $info = $form->getValues();
$this->view->files = StoredFile::searchFiles($info);
+ $this->view->results = $this->view->render('library/update.phtml');
+ unset($this->view->files);
}
public function newfieldAction()
diff --git a/application/controllers/SideplaylistController.php b/application/controllers/SideplaylistController.php
index e18205bd0..cebef65c7 100644
--- a/application/controllers/SideplaylistController.php
+++ b/application/controllers/SideplaylistController.php
@@ -17,7 +17,8 @@ class SideplaylistController extends Zend_Controller_Action
public function indexAction()
{
- $this->_helper->layout->setLayout('sidebar');
+ $this->view->headScript()->appendFile('/js/campcaster/library/spl.js','text/javascript');
+
$this->_helper->viewRenderer->setResponseSegment('spl');
$pl_sess = $this->pl_sess;
diff --git a/application/layouts/scripts/sidebar.phtml b/application/layouts/scripts/library.phtml
similarity index 87%
rename from application/layouts/scripts/sidebar.phtml
rename to application/layouts/scripts/library.phtml
index c53955f4f..c54e6d9f5 100644
--- a/application/layouts/scripts/sidebar.phtml
+++ b/application/layouts/scripts/library.phtml
@@ -10,8 +10,8 @@
navigation()->menu()->setRenderInvisible(true) ?>
-
-layout()->content ?>
+
+layout()->library ?>
layout()->spl ?>
diff --git a/application/layouts/scripts/search.phtml b/application/layouts/scripts/search.phtml
new file mode 100644
index 000000000..6d7ee53f1
--- /dev/null
+++ b/application/layouts/scripts/search.phtml
@@ -0,0 +1,21 @@
+
+doctype() ?>
+
+
+
+ Campcaster
+ headScript() ?>
+ headLink() ?>
+
+
+
+navigation()->menu()->setRenderInvisible(true) ?>
+
+layout()->search ?>
+
+layout()->library ?>
+
+layout()->spl ?>
+
+
+
diff --git a/application/views/scripts/library/update.phtml b/application/views/scripts/library/update.phtml
new file mode 100644
index 000000000..113029e1d
--- /dev/null
+++ b/application/views/scripts/library/update.phtml
@@ -0,0 +1,2 @@
+partialLoop('library/libraryTablePartial.phtml', $this->files);
diff --git a/application/views/scripts/search/display.phtml b/application/views/scripts/search/display.phtml
index 5dd4dc8b8..d742638df 100644
--- a/application/views/scripts/search/display.phtml
+++ b/application/views/scripts/search/display.phtml
@@ -1,29 +1,6 @@
form->setAction($this->url());
echo $this->form;
?>
Add
Submit
-
-files) {
-?>
-
-
- Title |
- Artist |
- Album |
- Track |
- Length |
-
-partialLoop('library/libraryTablePartial.phtml', $this->files);
-?>
-
-No Results";
- }
-?>
diff --git a/public/js/campcaster/library/advancedsearch.js b/public/js/campcaster/library/advancedsearch.js
index 831e6cd11..95fbddd61 100644
--- a/public/js/campcaster/library/advancedsearch.js
+++ b/public/js/campcaster/library/advancedsearch.js
@@ -28,15 +28,49 @@ function ajaxAddField() {
});
}
+function searchLibrary() {
+ var url, data;
+
+ url = '/Search/display/format/json';
+ data = $("form").serializeArray();
+
+ $.post(url, data, function(json){
+
+ if(json.form) {
+ $("#search")
+ .empty()
+ .append(json.form);
+ }
+
+
+ if(json.results) {
+ $("#library_display tr:not(:first-child)").remove();
+ $("#library_display tbody").append(json.results);
+
+ $("#library_display tr:not(:first-child)")
+ .contextMenu({menu: 'myMenu'}, contextMenu)
+ .draggable({
+ helper: 'clone'
+ });
+ }
+
+ });
+}
+
$(document).ready(function() {
$("#search_add").click(ajaxAddField);
- $("#search_submit").click(function(){
- $("form").submit();
- });
+ $("#search_submit").click(searchLibrary);
$('[id^="fieldset-row_"]').each(function(i, el){
addRemove(el);
});
+ $("#library_display tr:not(:first-child)")
+ .contextMenu({menu: 'myMenu'}, contextMenu)
+ .draggable({
+ helper: 'clone'
+ });
+
+ setUpSPL();
});
diff --git a/public/js/campcaster/library/context-menu.js b/public/js/campcaster/library/context-menu.js
new file mode 100644
index 000000000..6a27470a0
--- /dev/null
+++ b/public/js/campcaster/library/context-menu.js
@@ -0,0 +1,15 @@
+function contextMenu(action, el, pos) {
+ var method = action.split('/').pop(),
+ url;
+
+ if (method === 'delete') {
+ url = action + '/format/json';
+ url = url + '/id/' + $(el).attr('id');
+ $.post(url, deleteItem);
+ }
+ else if (method === 'add-item') {
+ url = action + '/format/json';
+ url = url + '/id/' + $(el).attr('id');
+ $.post(url, setSPLContent);
+ }
+}
diff --git a/public/js/campcaster/library/library.js b/public/js/campcaster/library/library.js
index a4753ab10..08c6fd5b3 100644
--- a/public/js/campcaster/library/library.js
+++ b/public/js/campcaster/library/library.js
@@ -1,19 +1,3 @@
-function contextMenu(action, el, pos) {
- var method = action.split('/').pop(),
- url;
-
- if (method === 'delete') {
- url = action + '/format/json';
- url = url + '/id/' + $(el).attr('id');
- $.post(url, deleteItem);
- }
- else if (method === 'add-item') {
- url = action + '/format/json';
- url = url + '/id/' + $(el).attr('id');
- $.post(url, setSPLContent);
- }
-}
-
function deleteItem(json){
var id;
@@ -35,75 +19,6 @@ function setLibraryContents(data){
);
}
-//--------------------------------------------------------------------------------------------------------------------------------
-//Side Playlist Functions
-//--------------------------------------------------------------------------------------------------------------------------------
-
-function setSPLContent(json) {
-
- if(json.message) {
- alert(json.message);
- return;
- }
-
- $('#spl_name').empty()
- .append(json.name);
- $('#spl_length').empty()
- .append(json.length);
- $('#spl_sortable').empty()
- .append(json.html);
-}
-
-function addSPLItem(event, ui){
-
- var url, tr, id;
-
- tr = ui.helper;
-
- if(tr.get(0).tagName === 'LI')
- return;
-
- id = tr.attr('id');
-
- url = '/Playlist/add-item/format/json';
- url = url + '/id/'+id;
-
- $.post(url, setSPLContent);
-}
-
-function deleteSPLItem(){
-
- var url, pos;
-
- url = '/Playlist/delete-item/format/json/view/spl';
-
- pos = $('form[name="SPL"]').find(':checked').not('input[name="all"]').map(function() {
- return "/pos/" + $(this).attr('name');
- }).get().join("");
-
- url = url + pos;
-
- $.post(url, setSPLContent);
-}
-
-function moveSPLItem(event, ui) {
- var li, newPos, oldPos, url;
-
- li = ui.item;
-
- newPos = li.index();
- oldPos = li.attr('id').split("_").pop();
-
- url = '/Playlist/move-item'
- url = url + '/format/json';
- url = url + '/view/spl';
- url = url + '/oldPos/' + oldPos;
- url = url + '/newPos/' + newPos;
-
- $.post(url, setSPLContent);
-}
-
-
$(document).ready(function() {
$("#library_display tr:first-child span.title").data({'ob': 'dc:title', 'order' : 'asc'});
@@ -139,15 +54,6 @@ $(document).ready(function() {
helper: 'clone'
});
- $("#spl_sortable").sortable();
- $("#spl_sortable" ).bind( "sortstop", moveSPLItem);
- $("#spl_remove_selected").click(deleteSPLItem);
-
- $("#side_playlist").droppable();
- $("#side_playlist" ).bind( "drop", addSPLItem);
-
- $('input[name="all"]').click(function(){
- $('form[name="SPL"]').find('input').attr("checked", $(this).attr("checked"));
- });
+ setUpSPL();
});
diff --git a/public/js/campcaster/library/spl.js b/public/js/campcaster/library/spl.js
new file mode 100644
index 000000000..3fa1ed6c2
--- /dev/null
+++ b/public/js/campcaster/library/spl.js
@@ -0,0 +1,82 @@
+//--------------------------------------------------------------------------------------------------------------------------------
+//Side Playlist Functions
+//--------------------------------------------------------------------------------------------------------------------------------
+
+function setSPLContent(json) {
+
+ if(json.message) {
+ alert(json.message);
+ return;
+ }
+
+ $('#spl_name').empty()
+ .append(json.name);
+ $('#spl_length').empty()
+ .append(json.length);
+ $('#spl_sortable').empty()
+ .append(json.html);
+}
+
+function addSPLItem(event, ui){
+
+ var url, tr, id;
+
+ tr = ui.helper;
+
+ if(tr.get(0).tagName === 'LI')
+ return;
+
+ id = tr.attr('id');
+
+ url = '/Playlist/add-item/format/json';
+ url = url + '/id/'+id;
+
+ $.post(url, setSPLContent);
+}
+
+function deleteSPLItem(){
+
+ var url, pos;
+
+ url = '/Playlist/delete-item/format/json/view/spl';
+
+ pos = $('form[name="SPL"]').find(':checked').not('input[name="all"]').map(function() {
+ return "/pos/" + $(this).attr('name');
+ }).get().join("");
+
+ url = url + pos;
+
+ $.post(url, setSPLContent);
+}
+
+function moveSPLItem(event, ui) {
+ var li, newPos, oldPos, url;
+
+ li = ui.item;
+
+ newPos = li.index();
+ oldPos = li.attr('id').split("_").pop();
+
+ url = '/Playlist/move-item'
+ url = url + '/format/json';
+ url = url + '/view/spl';
+ url = url + '/oldPos/' + oldPos;
+ url = url + '/newPos/' + newPos;
+
+ $.post(url, setSPLContent);
+}
+
+function setUpSPL() {
+
+ $("#spl_sortable").sortable();
+ $("#spl_sortable" ).bind( "sortstop", moveSPLItem);
+ $("#spl_remove_selected").click(deleteSPLItem);
+
+ $("#side_playlist").droppable();
+ $("#side_playlist" ).bind( "drop", addSPLItem);
+
+ $('input[name="all"]').click(function(){
+ $('form[name="SPL"]').find('input').attr("checked", $(this).attr("checked"));
+ });
+}
+