Koha/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt
Owen Leonard e88117b5fa Bug 11763 - Consolidate fund action links into menu
This patch moves the fund Edit/Delete/Add child links on the fund view
into a pop-up menu, allow the table to be more compact and the links to
be more distinct.

To test you must apply the patches on Bug 11578 if necessary.

Apply the patch and view the funds list page (Administration -> Funds).
For each line there should be an "Actions" menu containing the
Edit/Delete/Add cihld links. Each should function correctly. Test with
inactive budgets shown and hidden.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
It is unusual to open the action list above the button, but it works.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-05-03 18:33:48 +00:00

670 lines
24 KiB
Text

[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Administration &rsaquo; Funds[% IF op == 'add_form' %] &rsaquo; [% IF ( budget_id ) %]Modify fund[% IF ( budget_name ) %] '[% budget_name %]'[% END %][% ELSE %]Add fund [% END %][% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript">
//<![CDATA[
var MSG_BUDGET_PARENT_ALLOCATION = "- " + _("Fund amount exceeds parent allocation") + "\n";
var MSG_BUDGET_PERIOD_ALLOCATION = "- " + _("Fund amount exceeds period allocation") + "\n";
var MSG_PARENT_BENEATH_BUDGET = "- " + _("New budget-parent is beneath budget") + "\n";
//]]>
</script>
<script type="text/javascript" src="[% themelang %]/js/acq.js"></script>
[% IF op == 'add_form' %]
<script type="text/javascript">
//<![CDATA[
function userPopup() {
window.open("/cgi-bin/koha/admin/aqbudget_user_search.pl?type=user",
'PatronPopup',
'width=740,height=450,location=yes,toolbar=no,'
+ 'scrollbars=yes,resize=yes'
);
}
function ownerPopup() {
window.open("/cgi-bin/koha/admin/aqbudget_user_search.pl?type=owner",
'PatronPopup',
'width=740,height=450,location=yes,toolbar=no,'
+ 'scrollbars=yes,resize=yes'
);
}
function edit_owner(borrowernumber, surname, firstname) {
$('#budget_owner_name').empty();
$('#budget_owner_id').val('');
if (borrowernumber) {
var ownerlink = '<a href="/cgi-bin/koha/members/moremember.pl'
+ '?borrowernumber=' + borrowernumber + '">'
+ firstname + ' ' + surname + '</a>';
$('#budget_owner_name').html(ownerlink);
$('#budget_owner_id').val(borrowernumber);
}
}
function ownerRemove() {
edit_owner(0);
}
function add_user(borrowernumber, surname, firstname) {
var ids = $("#budget_users_id").val().split(':');
if(borrowernumber && ids.indexOf(borrowernumber) == -1) {
var li = '<li id="user_' + borrowernumber + '">'
+ '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber='
+ borrowernumber + '">' + firstname + ' ' + surname
+ '</a> [<a style="cursor:pointer"'
+ 'onclick="del_user(' + borrowernumber +')">Remove</a>]</li>';
$(li).insertBefore("li#add_user_button");
ids.push(borrowernumber);
$("#budget_users_id").val(ids.join(':'));
} else {
return -1;
}
return 0;
}
function del_user(borrowernumber) {
var ids = $("#budget_users_id").val().split(':');
if (borrowernumber) {
var idx = ids.indexOf(borrowernumber+'');
if (idx != -1) {
ids.splice(idx, 1);
$("#budget_users_id").val(ids.join(':'));
$("li#user_" + borrowernumber).remove();
}
}
}
function Check(f) {
var ok=1;
var _alertString="";
var alertString2;
if (!(isNotNull(f.budget_code,1))) {
_alertString += _("- Budget code cannot be blank") + "\n";
}
if (!(isNotNull(f.budget_name,1))) {
_alertString += _("- Budget name cannot be blank") + "\n";
}
if (!(isNotNull(f.budget_amount,1))) {
_alertString += _("- Budget amount cannot be blank") + "\n";
}
var budgetId;
if (typeof(f.budget_id ) != "undefined") {
budgetId = f.budget_id.value
}
var newBudgetParent;
// hack to test if selected parent_id in scrolling-list...
// if value == 'undef' its got a selected_parent :/
if(f.budget_parent_id){
var chkAdd = f.budget_parent_id.value ;
if ( typeof(chkAdd ) != "undefined") {
newBudgetParent = f.budget_parent_id.value
} else {
newBudgetParent = f.budget_parent_id.item(0).value
}
if (budgetId > 0) { ; //its a mod ...
// if parent == curent-budget, fail...
if ( newBudgetParent == budgetId ) {
_alertString += _("- Budget parent is current budget") + "\n";
}
else if (newBudgetParent) {
var result = checkBudgetParent( budgetId , newBudgetParent );
if (result) {
_alertString += result;
}
}
}
}
// else do lookup
var budgetTotal = Math.abs(f.budget_amount.value);
var result = budgetExceedsParent (budgetTotal, budgetId, newBudgetParent, f.budget_period_id.value)
if (result) {
_alertString += result;
}
if (_alertString.length==0) {
document.Aform.submit();
} else {
alertString2 = _("Form not submitted because of the following problem(s)");
alertString2 += "\n------------------------------------------------------------------------------------\n\n";
alertString2 += _alertString;
alert(alertString2);
}
}
//]]>
</script>
[% ELSIF op == 'list' %]
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'datatables.inc' %]
<link href="[% interface %]/lib/jquery/plugins/treetable/stylesheets/jquery.treetable.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/treetable/jquery.treetable.js"></script>
<script type="text/javascript">
//<![CDATA[
//
$(document).ready(function() {
var oTable = $("#budgeth").dataTable($.extend(true, {}, dataTablesDefaults, {
"fnDrawCallback": function ( oSettings ) {
if ( oSettings.aiDisplay.length == 0 )
{
return;
}
var nTrs = $('#budgeth tbody tr');
var iColspan = nTrs[0].getElementsByTagName('td').length;
var sLastGroup = "";
for ( var i=0 ; i<nTrs.length ; i++ )
{
var iDisplayIndex = oSettings._iDisplayStart + i;
var sGroup = oSettings.aoData[ oSettings.aiDisplay[iDisplayIndex] ]._aData[1];
if ( sGroup != sLastGroup )
{
var nGroup = document.createElement( 'tr' );
var nCell = document.createElement( 'td' );
nCell.colSpan = iColspan;
nCell.className = "group";
nCell.innerHTML = sGroup;
nGroup.appendChild( nCell );
nTrs[i].parentNode.insertBefore( nGroup, nTrs[i] );
sLastGroup = sGroup;
}
}
},
"aoColumnDefs": [
{ "bVisible": false, "aTargets": [ 0, 1 ] },
{ "bSortable": false, "aTargets": ["_all"] }
],
'bSort': true,
'aaSortingFixed': [[ 1, 'asc' ]],
'bPaginate': false,
"bAutoWidth": false
}));
$(oTable).treetable({
expandable: true
});
$(oTable).treetable('expandAll');
$("#expand_all").click(function(e){
e.preventDefault();
$(oTable).treetable('expandAll');
});
$("#collapse_all").click(function(e){
e.preventDefault();
$(oTable).treetable('collapseAll');
});
[% UNLESS budget_period_id %]
$("#hide_inactive").click(function(e){
e.preventDefault();
oTable.fnFilter( 1, 0 ); // Show only active=1
});
$("#show_inactive").click(function(e){
e.preventDefault();
oTable.fnFilter( '', 0 );
});
$("#hide_inactive").click();
[% END %]
$("#filterbutton").click(function() {
$("#fundfilters").slideToggle(0);
});
});
//]]>
</script>
[% END %]
</head>
<body id="admin_aqbudgets" class="admin">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'budgets-admin-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
<a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; <a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> &rsaquo; [% IF op == 'list' %][% IF budget_period_id %]Funds for '[% budget_period_description %]'[% ELSE %]All funds[% END %][% END %]
[% IF op == 'add_form' %]
<a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]">Funds</a> &rsaquo; [% IF ( budget_id ) %]Modify fund[% IF ( budget_name ) %] '[% budget_name %]'[% END %][% ELSE %]Add fund[% END %]
[% END %]
[% IF op == 'delete_confirm' %]
<a href="/cgi-bin/koha/admin/aqbudgets.pl">Funds</a> &rsaquo; Delete fund?
[% END %]
</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b" id="content">
[% UNLESS op == 'delete_confirm' %][% INCLUDE 'budgets-admin-toolbar.inc' %][% END %]
[% IF (error_not_authorised_to_modify) %]
<div class="error">
<p>You are not authorized to modify this fund</p>
</div>
[% END %]
[% IF op == 'list' %]
<h1>
[% IF budget_period_id %]
Funds for '[% budget_period_description %]'
[% ELSE %]
All funds
[% END %]
</h1>
[% INCLUDE 'budgets-active-currency.inc' %]
[% IF budgets %]
<table id="budgeth">
[% UNLESS budget_period_id %]
<caption>
<span class="actions"><a href="#" id="expand_all">Expand all</a>
| <a href="#" id="collapse_all">Collapse all</a>
| <a href="#" id="hide_inactive">Hide inactive budgets</a>
| <a href="#" id="show_inactive">Show inactive budgets</a></span>
</caption>
[% END %]
<thead>
<tr>
<th>Active</th>
<th>Budget period description</th>
<th>Fund code</th>
<th>Fund name</th>
<th>Base-level allocated</th>
<th>Base-level ordered</th>
<th>Total ordered</th>
<th>Base-level spent</th>
<th>Total spent</th>
<th>Base-level available</th>
<th>Total available</th>
<th>Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th></th>
<th colspan="2" style="text-align: left;" nowrap="nowrap">Period allocated [% IF ( budget_period_total ) %][% budget_period_total %][% END %] </th>
<th nowrap="nowrap" class="data"> [% period_alloc_total %]</th>
<th></th>
<th class="data">[% ordered_total %]</th>
<th></th>
<th class="data">[% spent_total %]</th>
<th></th>
<th class="data">[% available_total %]</th>
<th></th>
</tr>
</tfoot>
<tbody>
[% FOREACH budget IN budgets %]
[% IF budget.budget_parent_id %]
<tr data-tt-id="[% budget.budget_id %]" data-tt-parent-id="[% budget.budget_parent_id %]">
[% ELSE %]
<tr data-tt-id="[% budget.budget_id %]">
[% END %]
<td>[% budget.budget_period_active %]</td>
<td>Budget [% budget.budget_period_description %] [id=[% budget.budget_period_id %]][% UNLESS budget.budget_period_active %] (inactive)[% END %]</td>
<td>[% budget.budget_code_indent %]</td>
<td>[% budget.budget_name %]</td>
<td class="data">
[% IF budget.budget_parent_id %]
<span class="child_fund_amount">[% budget.budget_amount %]</span>
[% ELSE %]
[% budget.budget_amount %]
[% END %]
</td>
<td class="data">
[% IF budget.budget_parent_id %]
<span class="child_fund_amount">[% budget.budget_ordered %]</span>
[% ELSE %]
[% budget.budget_ordered %]
[% END %]
</td>
<td class="data">
[% IF budget.budget_parent_id %]
<span class="child_fund_amount">[% budget.total_ordered %]</span>
[% ELSE %]
[% budget.total_ordered %]
[% END %]
</td>
<td class="data">
[% IF budget.budget_parent_id %]
<span class="child_fund_amount">[% budget.budget_spent %]</span>
[% ELSE %]
[% budget.budget_spent %]
[% END %]
</td>
<td class="data">
[% IF budget.budget_parent_id %]
<span class="child_fund_amount">[% budget.total_spent %]</span>
[% ELSE %]
[% budget.total_spent %]
[% END %]
</td>
[% BLOCK colorcellvalue %]
[% IF parent %]
[% IF (value > 0) %]
<span class="child_fund_amount" style="color: green;">
[% ELSIF (value < 0) %]
<span class="child_fund_amount" style="color: red;">
[% ELSE %]
<span class="child_fund_amount">
[% END %]
[% ELSE %]
[% IF (value > 0) %]
<span style="color: green;">
[% ELSIF (value < 0) %]
<span style="color: red;">
[% ELSE %]
<span>
[% END %]
[% END %]
[% text %]
</span>
[% END %]
<td class="data">
[% INCLUDE colorcellvalue value=budget.budget_remaining text=budget.budget_remaining_display parent=budget.budget_parent_id %]
</td>
<td class="data">
[% INCLUDE colorcellvalue value=budget.total_remaining text=budget.total_remaining_display parent=budget.budget_parent_id %]
</td>
[% IF ( budget.budget_lock ) %]
<td> <span style="color: gray;"> Edit Delete </span> </td>
[% ELSE %]
<td>
<div class="dropdown dropup">
<a class="btn btn-mini dropdown-toggle" id="budgetactions[% budget.budget_id %]_[% budget.budget_period_id %]" role="button" data-toggle="dropdown" href="#">
Actions <b class="caret"></b>
</a>
<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="budgetactions[% budget.budget_id %]_[% budget.budget_period_id %]">
<li><a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&amp;budget_id=[% budget.budget_id %]&amp;budget_period_id=[% budget.budget_period_id %]" >Edit</a></li>
<li><a href="/cgi-bin/koha/admin/aqbudgets.pl?op=delete_confirm&amp;budget_id=[% budget.budget_id %]&amp;budget_period_id=[% budget.budget_period_id %]">Delete</a></li>
<li><a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&amp;budget_parent_id=[% budget.budget_id %]&amp;budget_period_id=[% budget.budget_period_id %]">Add child fund</a></li>
</ul>
</div>
</td>
[% END %]
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
No fund found
[% END %]
[% END %] <!-- list -->
<!-- ********************************************************************************************** -->
<!-- create add/mod entry form -->
[% IF op == 'add_form' && !error_not_authorised_to_modify %]
<form action="/cgi-bin/koha/admin/aqbudgets.pl" name="Aform" method="post">
<fieldset class="rows">
<legend>[% IF ( budget_id ) %]Modify[% ELSE %]Add[% END %] Fund
[% IF ( budget_period_description ) %]
[% budget_name %] for Budget '[% budget_period_description %]'
[% END %]
</legend>
<input type="hidden" name="op" value="add_validate" />
<input type="hidden" name="checked" value="0" />
<ol>
[% IF ( budget_parent_id ) %]
<li>
<span class="label">Fund parent: </span>
[% budget_parent_name %]
[% budget_parent_id %] - [% budget_parent_name %]
<input type="hidden" name="budget_parent_id" value="[% budget_parent_id %]" />
</li>
[% END %]
<li>
<label class="required" for="budget_code">Fund code: </label>
<input type="text" name="budget_code" id="budget_code" value="[% budget_code %]" size="30" />
</li>
<li>
<label class="required" for="budget_name">Fund name: </label>
<input type="text" name="budget_name" id="budget_name" value="[% budget_name %]" size="60" />
</li>
<li>
<label style="white-space: nowrap;" for="budget_amount" class="required">Amount: </label>
<input type="text" name="budget_amount" id="budget_amount" value="[% budget_amount %]" size="8" />
</li>
<li>
<label for="budget_encumb">Warning at (%): </label>
<input type="text" name="budget_encumb" id="budget_encumb" value="[% budget_encumb %]" size="10" />
<span style="color:grey">0 to disable</span>
</li>
<li>
<label for="budget_expend">Warning at (amount): </label>
<input type="text" name="budget_expend" id="budget_expend" value="[% budget_expend %]" size="10" /><input type="hidden" name="budget_owner_id" id="budget_owner_id" value="[% budget_owner_id %]" />
<span style="color:grey">0 to disable</span>
</li>
<li>
<span class="label">Owner: </span>
<span id="budget_owner_name">
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% budget_owner_id %]">
[% budget_owner_name %]
</a>
</span>
<input type="hidden" name="budget_owner_id" id="budget_owner_id"
value="[% budget_owner_id %]" />
<!-- FIXME: hardcoded button positions :/ -->
<input type="button" id="edit_owner" value="Edit owner"
onclick="ownerPopup(); return false;" />
<input type="button" id="remove_owner" value="Remove owner"
onclick="ownerRemove(); return false;" />
</li>
<li>
<span class="label">Users:</span>
<ul style="float:left;" id="budget_users">
[% FOREACH user IN budget_users %]
<li id="user_[% user.borrowernumber %]">
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% user.borrowernumber %]">
[% user.firstname %] [% user.surname %]
</a>
[<a style="cursor:pointer"
onclick="del_user([% user.borrowernumber %])">Remove</a>]
</li>
[% END %]
<li id="add_user_button">
<input type="button" onclick="userPopup()" value="Add users" />
</li>
</ul>
<input type="hidden" name="budget_users_ids" id="budget_users_id" value="[% budget_users_ids %]" />
<li>
<label for="budget_branchcode">Library: </label>
<select name="budget_branchcode" id="budget_branchcode">
<option value=""></option>
[% FOREACH branchloop_selec IN branchloop_select %]
[% UNLESS ( branchloop_selec.selected ) %] <option value="[% branchloop_selec.value %]" > [% ELSE %] <option value="[% branchloop_selec.value %]" selected="selected"> [% END %] [% branchloop_selec.value %]-[% branchloop_selec.branchname %]</option>
[% END %]
</select>
</li>
<li>
<label for="budget_permission">Restrict access to: </label>
<select name="budget_permission" id="budget_permission">
[% IF ( budget_perm_0 ) %]
<option value="0" selected="selected">
[% ELSE %]
<option value="0">
[% END %]
None
</option>
[% IF ( budget_perm_1 ) %]
<option value="1" selected="selected">
[% ELSE %]
<option value="1">
[% END %]
Owner
</option>
[% IF ( budget_perm_3) %]
<option value="3" selected="selected">
[% ELSE %]
<option value="3">
[% END %]
Owner and users
</option>
[% IF ( budget_perm_2 ) %]
<option value="2" selected="selected">
[% ELSE %]
<option value="2">
[% END %]
Owner, users and library
</option>
</select>
</li>
<li>
<label for="budget_notes">Notes: </label>
<textarea name="budget_notes" id="budget_notes" cols="80" rows="6">[% budget_notes %]</textarea>
</li>
<li>
<label style="white-space: nowrap;" for="authorised_value_category1">Statistic 1 done on: </label>
<select name="sort1_authcat" id="authorised_value_category1">
<option value=""></option>
[% FOREACH authorised_value_categories IN authorised_value_categories1 %]
[% IF ( authorised_value_categories.selected ) %]
<option value="[% authorised_value_categories.category %]" selected="selected">
[% authorised_value_categories.category %]
</option>
[% ELSE %]
<option value="[% authorised_value_categories.category %]">
[% authorised_value_categories.category %]
</option>
[% END %]
[% END %]
</select>
</li>
<li>
<label style="white-space: nowrap;" for="authorised_value_category2">Statistic 2 done on: </label>
<select name="sort2_authcat" id="authorised_value_category2">
<option value=""></option>
[% FOREACH authorised_value_categories IN authorised_value_categories2 %]
[% IF ( authorised_value_categories.selected ) %]
<option value="[% authorised_value_categories.category %]" selected="selected">
[% authorised_value_categories.category %]
</option>
[% ELSE %]
<option value="[% authorised_value_categories.category %]">
[% authorised_value_categories.category %]
</option>
[% END %]
[% END %]
</select>
</li>
</ol>
[% IF ( budget_id ) %]
<input type="hidden" name="budget_id" value="[% budget_id %]" />
[% END %]
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" onclick="Check(this.form); return false;" /> <a class="cancel" href="/cgi-bin/koha/admin/aqbudgets.pl">Cancel</a>
<input type="hidden" name="budget_period_id" value="[% budget_period_id %]" />
</fieldset>
</form>
[% END %] <!-- add_form -->
[% IF op == 'delete_confirm' %]
<div class="dialog alert"> <h3>Delete fund [% budget_name %]?</h3>
<table>
<tr>
<th scope="row">Fund amount:</th>
<td>[% budget_amount %]</td>
</tr>
</table>
<form action="/cgi-bin/koha/admin/aqbudgets.pl" method="post">
<input type="hidden" name="op" value="delete_confirmed" />
<input type="hidden" name="budget_id" value="[% budget_id %]" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id %]" />
<input type="submit" value="Delete" class="approve" />
</form>
<form action="/cgi-bin/koha/admin/aqbudgets.pl" method="get">
<input type="submit" class="deny" value="Cancel" />
</form>
</div>
[% END %]
</div>
</div>
<div class="yui-b">
[% IF op == 'list' %]
<form action="/cgi-bin/koha/admin/aqbudgets.pl" method="get">
<a href="#" id="filterbutton">Filters</a>
<fieldset class="brief" id="fundfilters">
<h4>Fund filters</h4>
<ol>
<li>
<label for="filter_budgetbranch2">Library: </label>
<select name="filter_budgetbranch" id="filter_budgetbranch2" style="width:10em;">
<option value=""></option>
[% FOREACH branchloo IN branchloop %]
[% UNLESS ( branchloo.selected ) %]<option value="[% branchloo.value %]">
[% ELSE %]<option value="[% branchloo.value %]" selected="selected">[% END %]
[% branchloo.branchname %]</option>
[% END %]
</select>
</li>
<li class="radio">
<label for="show_mine">Show my funds only</label>
[% IF ( show_mine ) %]
<input type="checkbox" id="show_mine" name="show_mine" value="1" checked="checked" />
[% ELSE %]
<input type="checkbox" id="show_mine" name="show_mine" value="1" />
[% END %]
</li>
[% IF periods %]
<li>
<label for="periods">Budget:</label>
<select id="periods" name="budget_period_id">
<option value="">All budgets</option>
[% FOR period IN periods %]
[% IF budget_period_id && period.budget_period_id == budget_period_id %]
<option value="[% period.budget_period_id %]" selected="selected">[% period.budget_period_description %]</option>
[% ELSE %]
<option value="[% period.budget_period_id %]">[% period.budget_period_description %]</option>
[% END %]
[% END %]
</select>
</li>
[% END %]
</ol>
<input type="hidden" name="op" value="list" />
<input type="submit" class="submit" name="filter" value="Go" />
</fieldset>
</form>[% END %]
[% INCLUDE 'acquisitions-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]