diff --git a/lib/WebGUI/Asset/EMSSubmission.pm b/lib/WebGUI/Asset/EMSSubmission.pm index c201a902f..7d457bd76 100644 --- a/lib/WebGUI/Asset/EMSSubmission.pm +++ b/lib/WebGUI/Asset/EMSSubmission.pm @@ -420,12 +420,20 @@ dav::log 'EMSSubmission::www_editSubmission: asseId ne new'; } # TODO add the comment form $newform->submit; - return $asset->processStyle( + my $title = $assetId eq 'new' ? $i18n->get('new submission') || 'new' : $asset->get('submissionId'); + my $content = $asset->processStyle( $asset->processTemplate({ errors => $params->{errors} || [], backUrl => $parent->getUrl, pageForm => $newform->print, },$parent->getParent->get('eventSubmissionTemplateId'))); + if( $session->form->get('asJson') ) { + $session->http->setMimeType( 'application/json' ); + return JSON->new->encode( { text => $content, title => $title } ); + } else { + $session->http->setMimeType( 'text/html' ); + return $content; + } } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/EMSSubmissionForm.pm b/lib/WebGUI/Asset/EMSSubmissionForm.pm index 79cbf8d27..6f3cee7a0 100644 --- a/lib/WebGUI/Asset/EMSSubmissionForm.pm +++ b/lib/WebGUI/Asset/EMSSubmissionForm.pm @@ -322,12 +322,21 @@ dav::dump 'editSubmissionForm::dump before generate:',$fields; ); } $newform->submit; - return $asset->processStyle( + my $title = $assetId eq 'new' ? $i18n->get('new form') || 'new' : $asset->get('title'); + my $content = $asset->processStyle( $asset->processTemplate({ errors => $params->{errors} || [], backUrl => $parent->getUrl, pageForm => $newform->print, },$parent->get('eventSubmissionTemplateId'))); + if( $session->form->get('asJson') ) { + $session->http->setMimeType( 'application/json' ); + return JSON->new->encode( { text => $content, title => $title } ); + } else { + $session->http->setMimeType( 'text/html' ); + return $content; + } + } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index c6f7662cf..41d92c347 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -1349,8 +1349,8 @@ sub www_getSubmissionById { $result->{hasError} = 1; $result->{errors} = [ 'failed to load submission' ]; } else { - $result->{itemText} = $res->[0]->www_editSubmission; - $result->{submissionId} = $submissionId; + $result->{text} = $res->[0]->www_editSubmission; + $result->{title} = $submissionId; } $self->session->http->setMimeType('application/json'); return JSON->new->encode($result); diff --git a/www/extras/wobject/EMS/submission.js b/www/extras/wobject/EMS/submission.js index 5ac5a0e9e..ac16f820e 100644 --- a/www/extras/wobject/EMS/submission.js +++ b/www/extras/wobject/EMS/submission.js @@ -126,6 +126,72 @@ WebGUI.EMS = function (configs) { dt.getDataSource().sendRequest(WebGUI.EMS.buildQueryString(newState, dt), oCallback); }; + //*********************************************************************************** + //This method is out here so it can be overridden. The datatable uses this method to sort it's columns + WebGUI.EMS.newTab = function(url) { + // the 'loading' 'indicator' + if( typeof(WebGUI.EMS.loadingIndicator) == "undefined" ) { + WebGUI.EMS.loadingIndicator = new YAHOO.widget.Overlay( "loadingIndicator", { + fixedcenter : true, + visible : false + } ); + WebGUI.EMS.loadingIndicator.setBody( "Loading ..." + + "" + ); + WebGUI.EMS.loadingIndicator.render(document.body); + } + WebGUI.EMS.loadingIndicator.show(); + + // Create callback object for the request + var oCallback = { + success: function(o) { + var response = eval('(' + o.responseText + ')'); + var myTab; + if(response.hasError){ + var message = ""; + for(var i = 0; i < response.errors.length; i++) { + message += response.errors[i]; + } + alert(message); + return; + } else if( typeof(WebGUI.EMS.Items[response.submissionId]) == "undefined" + || WebGUI.EMS.Items[response.submissionId] == null ) { + // if there is a tab .. close it, + // at least until I can get the JS/HTML re-written to handle multiple tabs + // there should only be one + for( var ticketId in WebGUI.EMS.Tickets ) { WebGUI.EMS.closeTab(ticketId) } + var myContent = document.createElement("div"); + myContent.innerHTML = response.itemText; + myTab = new YAHOO.widget.Tab({ + label: response.submissionId + 'X', + contentEl: myContent + }); + WebGUI.EMS.Tabs.addTab( myTab ); + YAHOO.util.Event.on(myTab.getElementsByClassName('close')[0], 'click', WebGUI.EMS.closeTab , myTab); + WebGUI.EMS.Items[response.submissionId] = new Object(); + WebGUI.EMS.Items[response.submissionId].Tab = myTab; + } else { + myTab = WebGUI.EMS.Tickets[response.submissionId].Tab; + myTab.set('content', response.itemText); + } + // make sure the script on the ticket has run + // if( typeof( WebGUI.ticketJScriptRun ) == "undefined" ) { + // eval( document.getElementById("ticketJScript").innerHTML ); + // } + // delete WebGUI.ticketJScriptRun; + WebGUI.EMS.loadingIndicator.hide(); + WebGUI.EMS.lastTab = WebGUI.EMS.Tabs.get('activeTab'); + WebGUI.EMS.Tabs.set('activeTab',myTab); + }, + failure: function(o) { + WebGUI.EMS.loadingIndicator.hide(); + alert("AJAX call failed"); + } + }; + var request = YAHOO.util.Connect.asyncRequest('GET', url + ';asJson=1' , oCallback); + }; + //*********************************************************************************** //This method is out here so it can be overridden. The datatable uses this method to sort it's columns WebGUI.EMS.sortColumn = function(oColumn,sDir) { @@ -177,72 +243,11 @@ WebGUI.EMS = function (configs) { // This method does the actual work of loading an item into a tab // WebGUI.EMS.loadItem = function ( submissionId, pathname ) { - // the 'loading' 'indicator' - if( typeof(WebGUI.EMS.loadingIndicator) == "undefined" ) { - WebGUI.EMS.loadingIndicator = new YAHOO.widget.Overlay( "loadingIndicator", { - fixedcenter : true, - visible : false - } ); - WebGUI.EMS.loadingIndicator.setBody( "Loading ..." + - "" - ); - WebGUI.EMS.loadingIndicator.render(document.body); - } - WebGUI.EMS.loadingIndicator.show(); - if( typeof(pathname) == "undefined" ) { pathname = WebGUI.EMS.url ; } var url = pathname + "?func=getSubmissionById;submissionId=" + submissionId; - - // Create callback object for the request - var oCallback = { - success: function(o) { - var response = eval('(' + o.responseText + ')'); - var myTab; - if(response.hasError){ - var message = ""; - for(var i = 0; i < response.errors.length; i++) { - message += response.errors[i]; - } - alert(message); - return; - } else if( typeof(WebGUI.EMS.Items[response.submissionId]) == "undefined" - || WebGUI.EMS.Items[response.submissionId] == null ) { - // if there is a tab .. close it, - // at least until I can get the JS/HTML re-written to handle multiple tabs - // there should only be one - for( var ticketId in WebGUI.EMS.Tickets ) { WebGUI.EMS.closeTab(ticketId) } - var myContent = document.createElement("div"); - myContent.innerHTML = response.itemText; - myTab = new YAHOO.widget.Tab({ - label: response.submissionId + 'X', - contentEl: myContent - }); - WebGUI.EMS.Tabs.addTab( myTab ); - YAHOO.util.Event.on(myTab.getElementsByClassName('close')[0], 'click', WebGUI.EMS.closeTab , myTab); - WebGUI.EMS.Items[response.submissionId] = new Object(); - WebGUI.EMS.Items[response.submissionId].Tab = myTab; - } else { - myTab = WebGUI.EMS.Tickets[response.submissionId].Tab; - myTab.set('content', response.itemText); - } - // make sure the script on the ticket has run - // if( typeof( WebGUI.ticketJScriptRun ) == "undefined" ) { - // eval( document.getElementById("ticketJScript").innerHTML ); - // } - // delete WebGUI.ticketJScriptRun; - WebGUI.EMS.loadingIndicator.hide(); - WebGUI.EMS.lastTab = WebGUI.EMS.Tabs.get('activeTab'); - WebGUI.EMS.Tabs.set('activeTab',myTab); - }, - failure: function(o) { - WebGUI.EMS.loadingIndicator.hide(); - alert("AJAX call failed"); - } - }; - var request = YAHOO.util.Connect.asyncRequest('GET', url, oCallback); + WebGUI.EMS.newTab(submissionId, url ); }; //***********************************************************************************