MT#5879 Save state before new default template.

Template form shown on click.
Fix accordion intialization after ajax list refresh
Add confirmation on default template applying
ipeshinskaya/InvoiceTemplate5
Irina Peshinskaya 12 years ago committed by Victor Seva
parent 66376a9934
commit 9aa35efdc9

@ -683,11 +683,7 @@ sub invoice :Chained('invoice_template_list_data') :PathPart('') :Args(0) {
$c->stash(template => 'invoice/invoice.tt');
}
sub invoice_template_info :Chained('invoice_details') :PathPart('template') :CaptureArgs(0) {
}
sub invoice_template :Chained('invoice_template_info') :PathPart('template') :Args {
sub invoice_template :Chained('invoice_details') :PathPart('template') :Args {
my ($self, $c) = @_;
$c->log->debug('invoice_template');
no warnings 'uninitialized';
@ -725,7 +721,7 @@ sub invoice_template :Chained('invoice_template_info') :PathPart('template') :Ar
#multi return...
$c->log->debug("validated=".$validator->validated.";\n");
if(!$validator->validated){
return;
#return;
}
my $in_validated = $validator->fif;

@ -92,8 +92,8 @@
<script src="/js/Theme.js"></script>
<script>
Theme.init ();
var mainWrapperInit = function () {
Theme.init ();
$('[rel="tooltip"]').tooltip({'html': false});
@ -167,17 +167,10 @@ var mainWrapperInit = function () {
return true;
});
[%# open last accordion tab if possible -%]
$('.accordion').on('shown', function (e) {
localStorage.setItem('lastTab', $(".accordion .in").attr('id'));
});
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('#'+lastTab).addClass("in");
$('#'+lastTab).parent().addClass("open");
}
if($('.accordion-body').length && !$('#toggle-accordions').length) {
$('#content').children('.container').prepend('<a href="#" id="toggle-accordions" class="btn btn-small btn-tertiary pull-right ngcp-accordion-closed"><i class="icon-resize-full"></i> [% c.loc('Expand Groups') %]</a>');
if($('.accordion-body').length) {
if(!$('#toggle-accordions').length){
$('#content').children('.container').prepend('<a href="#" id="toggle-accordions" class="btn btn-small btn-tertiary pull-right ngcp-accordion-closed"><i class="icon-resize-full"></i> [% c.loc('Expand Groups') %]</a>');
}
$('#toggle-accordions').click(function() {
if($('#toggle-accordions').hasClass('ngcp-accordion-closed')) {
$('#toggle-accordions').removeClass('ngcp-accordion-closed');
@ -211,7 +204,24 @@ var mainWrapperInit = function () {
});
}
};
$(mainWrapperInit);
$( document ).ready(function() {
Theme.init();
mainWrapperInit();
[%# open last accordion tab if possible -%]
$('.accordion').on('shown', function (e) {
localStorage.setItem('lastTab', $(".accordion .in").attr('id'));
});
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('#'+lastTab).removeClass('collapse');
$('#'+lastTab).parent().addClass("open");
/*
$('#'+lastTab).addClass("in");
$('#'+lastTab).attr('style', 'height:auto;');
*/
}
});
//$(function(){Theme.init();mainWrapperInit();});
</script>
</body>
[% # vim: set tabstop=4 syntax=html expandtab: -%]

@ -56,12 +56,15 @@ function fetchSvgToEditor( data ) {
}
function refreshAccordionAjaxList ( item, data ){
alert('refreshAccordionAjaxList: q='+uriForAction( data, item + '_list' )+';item='+item);
fetch_into(
'collapse_' +item + '_list',
uriForAction( data, item + '_list' ),
'',
function(){ mainWrapperInit(); }
);
var target = $('#'+ item + '_list');
if(target){
fetch_into(
item + '_list',
uriForAction( data, item + '_list' ),
'',
function(){ mainWrapperInit(); }
);
}
}
function refreshMessagesAjax ( ){
alert('refreshMessagesAjax: q='+uriForAction( {}, 'messages' ));
@ -76,7 +79,7 @@ function fetchInvoiceTemplateData( data ){
//tt_output_type=svg really outputs text/html mimetype. But it will be couple of <svg> tags (<svg> per page).
data.tt_output_type = 'json';
var q = uriForAction( data, 'invoice_template' );
//alert('fetchInvoiceTemplateData: q='+q+';');
alert('fetchInvoiceTemplateData: q='+q+';');
$.ajax({
url: q,
datatype: "json",
@ -92,6 +95,7 @@ function fetchInvoiceTemplateData( data ){
if( templatedata.aaData.form ){
$('form[name=invoice_template]').loadJSON(templatedata.aaData.form);
}
$('#invoice_template_form').css('display','block');//document.getElementById('invoice_template_form');;
}
});
}

@ -121,13 +121,15 @@ var uriForAction = function( data, type ){
<a class="accordion-toggle" data-toggle="collapse" data-parent="#customer_invoice_template" href="#collapse_invoice_template_list">[% c.loc('Invoice Templates') %]</a>
</div>
<div class="accordion-body collapse" id="collapse_invoice_template_list">
<div class="accordion-inner" style="overflow:auto; height: 300px;" id="invoice_template_list">
[%PROCESS 'invoice/invoice_template_list.tt' %]
</div>
</div>
</div>
</span>
<div style="visibility:visible;" id="invoice_template_form">
<div style="display:none;" id="invoice_template_form">
[%PROCESS 'invoice/invoice_template_form.tt' %]
</div>

@ -3,13 +3,13 @@
[%# USE FillInForm %]
<script>
function getTtIdVal(){
return $('form[id=invoice_template] input[name=tt_id]').val();
return getForm().$('input[name=tt_id]').val();
}
function formToUri(q){
return q+'?'+$('form[id=invoice_template]').serialize();
return q+'?'+getForm().serialize();
}
function formSerialize(){
return $('form[id=invoice_template]').serialize();
return getForm().serialize();
}
function getForm(){
return $('form[id=invoice_template]');
@ -17,38 +17,22 @@ function getForm(){
</script>
<form name="invoice_template_old" id="invoice_template_old" action="[%- c.uri_for_action('/reseller/invoice_template', [contract.id]) -%]" class="form-horizontal" enctype="multipart/form-data" method="post">
<input type="hidden" name="tt_id" value="">
<div class="ngcp-separator"></div>
[% IF write_access -%]
<!--span>
<a class="btn btn-primary btn-large" onclick="fetchInvoiceTemplateData({
<input type="hidden" name="contract_id" value="">
<span>
<a class="btn btn-primary btn-small" data-confirm="[%c.loc('Overwrite changes');%]" href="javascript:fetchInvoiceTemplateData({
tt_sourcestate: 'default',
contract_id: '[%contract.id%]',
});void(0);">[% c.loc('Create from scratch')%] <i class="icon-edit"></i></a>
</span-->
<div class="ngcp-separator"></div>
[% END -%]
<div class="control-group">
<label class="control-label" for="name">[%c.loc('Template name')%]</label>
<div class="controls">
<input type="text" name="name" id="name" value="" />
</div>
</div>
<div class="ngcp-separator"></div>
<div class="control-group">
<label class="control-label" for="is_active">[%c.loc('Active')%]</label>
<div class="controls" class="checkbox">
<input type="checkbox" name="is_active" id="is_active" value="1" />
</div>
</div>
});void(0);">[% c.loc('Load default')%] <i class="icon-edit"></i></a>
</span>
<span>
<a class="btn btn-primary btn-large" onclick="
<a class="btn btn-primary btn-small" onclick="
savePreviewedAndShowParsed({
contract_id:'[%contract.id%]',
tt_id: getTtIdVal(),
});void(0);">[% c.loc('Refresh Preview')%] <i class="icon-refresh"></i></a>
</span>
<span>
<a class="btn btn-primary btn-large" onclick="
<a class="btn btn-primary btn-small" onclick="
//alert('tt_id='+getTtIdVal()+';');
saveTemplate({
contract_id:'[%contract.id%]',

@ -5,7 +5,6 @@
[% write_access = 1 %]
[%END%]
<div class="accordion-inner" style="overflow:auto; height: 300px;">
[%IF invoice_template_list.size %]
<table class="table table-bordered table-striped table-highlight table-hover">
<thead>
@ -41,11 +40,11 @@
<i class="icon-edit"></i> [% c.loc('Edit template') %]
</a>
<a class="btn btn-small btn-primary ngcp-noback-button" data-confirm="[%IF template.get_column('is_active'); c.loc('Deactivate'); ELSE; c.loc('Activate'); END%]"
href="javascript:fetch_into('collapse_invoice_template_list', '[%- c.uri_for_action("/reseller/invoice_template_activate", [contract.id, template.get_column('id'),template.get_column('is_active')]) -%]','',function(){ refreshMessagesAjax();mainWrapperInit(); });void(0);">
href="javascript:fetch_into('invoice_template_list', '[%- c.uri_for_action("/reseller/invoice_template_activate", [contract.id, template.get_column('id'),template.get_column('is_active')]) -%]','',function(){ refreshMessagesAjax();mainWrapperInit(); });void(0);">
<i class="icon-edit"></i> [%IF template.get_column('is_active'); c.loc('Deactivate'); ELSE; c.loc('Activate'); END%]
</a>
<a class="btn btn-small btn-secondary ngcp-noback-button" data-confirm="Delete"
href="javascript:fetch_into('collapse_invoice_template_list', '[%- c.uri_for_action("/reseller/invoice_template_delete", [contract.id, template.get_column('id')]) -%]','',function(){ refreshMessagesAjax();mainWrapperInit(); });void(0);">
href="javascript:fetch_into('invoice_template_list', '[%- c.uri_for_action("/reseller/invoice_template_delete", [contract.id, template.get_column('id')]) -%]','',function(){ refreshMessagesAjax();mainWrapperInit(); });void(0);">
<i class="icon-trash"></i> [% c.loc('Delete') %]
</a>
[%END%]
@ -56,5 +55,4 @@
</tbody>
</table>
[%END%]
</div>

Loading…
Cancel
Save