Owen Leonard
a344b8cf8c
This patch makes a number of changes in order to improve the way the staff client's header menu adjusts at narrower browser widths: - Updated version of Bootstrap 3.3.7 which includes the "collapse" JavaScript plugin. - Modified default Bootstrap CSS using Bootstrap's customization tool. These changes facilitate the removal of some custom CSS (overriding Bootstrap) from staff-global.scss. - Added Bootstrap config file for loading customizations at https://getbootstrap.com/docs/3.3/customize/ - Revised button classes for buttons in Bootstrap-styled toolbars. The modified default CSS resets the base font size in Bootstrap to better match our global CSS. A side-effect of this is that toolbar buttons ended up looking smaller than they should. Changing the button class solves this. - Restructure the header menu in order to allow different rules to govern the appearance of the navigational part of the menu (Circulation, Search, etc) and the user menu (Set library, My account, Log out). - Modify the cart JS to so that the popup works well at narrow widths. To test, apply the patch, regenerate the staff client CSS, and clear your browser cache. - Log in to the staff client and observe the layout of the header menu as you adjust the browser to various widths. - Confirm that sections of the menu "collapse" as the window gets narrower. - Confirm that dropdown menus behave correctly and that links work. - Confirm that the Cart link works as expected when the cart empty and when it has items. - Install and enable multiple translations, including at least one set of sub-languages (e.g. fr-FR and fr-CA). - Test the appearance of the language menus in the footer at various browser widths. - View pages with button toolbars and confirm that they appear unchanged (e.g. biblio detail page, patron detail page). NOTE: While this patch is intended to make improvements to staff client responsiveness, it does so within a limited scope. There are still many pages which do not work well at narrower browser widths. Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
303 lines
14 KiB
Text
303 lines
14 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE KohaDates %]
|
|
[% USE Branches %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Tools › News</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
[% IF ( opac_news_count ) %]
|
|
[% END %]
|
|
</head>
|
|
|
|
<body id="tools_koha-news" class="tools">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'cat-search.inc' %]
|
|
|
|
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> › [% IF ( add_form ) %]<a href="/cgi-bin/koha/tools/koha-news.pl">News</a> › [% IF ( id ) %]
|
|
Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div>
|
|
|
|
[% IF ( add_form ) %]
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
|
|
[% ELSE %]
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
[% END %]
|
|
<main>
|
|
|
|
[% UNLESS ( add_form ) %]
|
|
[% IF error_message == 'title_missing' %]
|
|
<div class="dialog alert">Error: Required news title missing!</div>
|
|
[% END %]
|
|
<h2>News</h2>
|
|
<div id="toolbar" class="btn-toolbar">
|
|
<a class="btn btn-default" id="newentry" href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&lang=[% lang | html %]"><i class="fa fa-plus"></i> New entry</a>
|
|
</div>
|
|
[% END %]
|
|
|
|
[% IF ( add_form ) %]
|
|
[% IF ( op == 'add' ) %][% default_lang = lang | html %]
|
|
[% ELSE %][% default_lang = new_detail.lang | html %]
|
|
[% END %]
|
|
<form name="add_form" method="post" action="/cgi-bin/koha/tools/koha-news.pl" >
|
|
<input type="hidden" name="op" value="[% op | html %]" />
|
|
<input type="hidden" name="id" value="[% id | html %]" />
|
|
<fieldset class="rows">
|
|
<legend>OPAC and Koha news</legend>
|
|
<ol> <li>
|
|
<label for="lang">Display location:</label>
|
|
<select id="lang" name="lang">
|
|
[% IF ( default_lang == "" ) %]
|
|
<option value="" selected="selected">All</option>
|
|
[% ELSE %]
|
|
<option value="" >All</option>
|
|
[% END %]
|
|
[% IF ( default_lang == "koha" ) %]
|
|
<option value="koha" selected="selected">Librarian interface</option>
|
|
[% ELSE %]
|
|
<option value="koha" >Librarian interface</option>
|
|
[% END %]
|
|
[% IF ( default_lang == "slip" ) %]
|
|
<option value="slip" selected="selected">Slip</option>
|
|
[% ELSE %]
|
|
<option value="slip" >Slip</option>
|
|
[% END %]
|
|
[% FOREACH lang_lis IN lang_list %]
|
|
[% IF ( lang_lis.language == default_lang ) %]
|
|
<option value="[% lang_lis.language | html %]" selected="selected">OPAC ([% lang_lis.language | html %])</option>
|
|
[% ELSE %]
|
|
<option value="[% lang_lis.language | html %]" >OPAC ([% lang_lis.language | html %])</option>
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
<li>
|
|
<label for="branch">Library: </label>
|
|
<select id="branch" name="branch">
|
|
[% IF ( new_detail.branchcode == '' ) %]
|
|
<option value="" selected="selected">All libraries</option>
|
|
[% ELSE %]
|
|
<option value="" >All libraries</option>
|
|
[% END %]
|
|
[% PROCESS options_for_libraries libraries => Branches.all( selected => new_detail.branchcode, unfiltered => 1, ) %]
|
|
</select>
|
|
</li>
|
|
<li>
|
|
<label for="title" class="required">Title: </label>
|
|
<input id="title" size="30" type="text" name="title" value="[% new_detail.title | html %]" required="required" class="required" /> <span class="required">Required</span>
|
|
</li>
|
|
<li>
|
|
<label for="from">Publication date: </label>
|
|
<input id="from" type="text" name="timestamp" size="15" value="[% new_detail.timestamp | html %]" class="datepickerfrom" />
|
|
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
|
|
</li>
|
|
<li>
|
|
<label for="to">Expiration date: </label>
|
|
<input id="to" type="text" name="expirationdate" size="15" value="[% new_detail.expirationdate | html %]" class="datepickerto" />
|
|
<div class="hint">
|
|
[% INCLUDE 'date-format.inc' %]
|
|
<br>News will still be accessible by direct URL if expired.
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<label for="number">Appear in position: </label>
|
|
[% IF ( new_detail.number ) %]
|
|
<input id="number" size="3" name="number" type="text" value="[% new_detail.number | html %]" />
|
|
[% ELSE %]
|
|
<input id="number" size="3" name="number" type="text" />
|
|
[% END %]
|
|
</li>
|
|
<li><label for="content">News: </label>
|
|
<textarea name="content" id="content" cols="75" rows="10">[% new_detail.content | $raw %]</textarea>
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
|
|
<fieldset class="action"><input class="button" type="submit" value="Submit" /> <a class="cancel" href="/cgi-bin/koha/tools/koha-news.pl">Cancel</a></fieldset>
|
|
</form>
|
|
[% ELSE %]
|
|
<div style="margin-bottom:5px;">
|
|
<form name="add_form" method="post" action="/cgi-bin/koha/tools/koha-news.pl" >
|
|
<label for="lang">Display location:</label>
|
|
<select name="lang" id="lang">
|
|
[% IF ( lang == "" ) %]
|
|
<option value="" selected="selected">All</option>
|
|
[% ELSE %]
|
|
<option value="" >All</option>
|
|
[% END %]
|
|
[% IF ( lang == "koha" ) %]
|
|
<option value="koha" selected="selected">Librarian interface</option>
|
|
[% ELSE %]
|
|
<option value="koha" >Librarian interface</option>
|
|
[% END %]
|
|
[% IF ( lang == "slip" ) %]
|
|
<option value="slip" selected="selected">Slip</option>
|
|
[% ELSE %]
|
|
<option value="slip" >Slip</option>
|
|
[% END %]
|
|
[% FOREACH lang_lis IN lang_list %]
|
|
[% IF ( lang_lis.language == lang ) %]
|
|
<option value="[% lang_lis.language | html %]" selected="selected">OPAC ([% lang_lis.language | html %])</option>
|
|
[% ELSE %]
|
|
<option value="[% lang_lis.language | html %]" >OPAC ([% lang_lis.language | html %])</option>
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
<label for="branch">Library: </label>
|
|
<select id="branch" name="branch">
|
|
[% IF ( branchcode == "" ) %]
|
|
<option value="" selected="selected">All libraries</option>
|
|
[% ELSE %]
|
|
<option value="" >All libraries</option>
|
|
[% END %]
|
|
[% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode, unfiltered => 1, ) %]
|
|
</select>
|
|
<input type="submit" class="button" value="Filter" />
|
|
</form>
|
|
</div>
|
|
[% IF ( opac_news_count ) %]
|
|
<form id="del_form" method="post" action="/cgi-bin/koha/tools/koha-news.pl">
|
|
<table id="newst">
|
|
<thead> <tr>
|
|
<th> </th>
|
|
<th>Location</th>
|
|
<th>Library</th>
|
|
<th>Number</th>
|
|
<th class="title-string">Publication date</th>
|
|
<th class="title-string">Expiration date</th>
|
|
<th>Title</th>
|
|
<th>Author</th>
|
|
<th>News</th>
|
|
<th>Actions</th>
|
|
</tr></thead>
|
|
<tbody>[% FOREACH opac_new IN opac_news %]
|
|
[% IF ( opac_new.expired ) %]
|
|
<tr class="expired">
|
|
[% ELSE %]
|
|
<tr>
|
|
[% END %]
|
|
<td>
|
|
<input type="checkbox" name="ids" value="[% opac_new.idnew | html %]" />
|
|
</td>
|
|
<td>[% SWITCH opac_new.lang %]
|
|
[% CASE "koha" %]
|
|
Librarian interface
|
|
[% CASE "slip" %]
|
|
Slip
|
|
[% CASE "" %]
|
|
All
|
|
[% CASE %]
|
|
OPAC ([% opac_new.lang | html %])
|
|
[% END %]
|
|
</td>
|
|
<td>[% IF ( opac_new.branchcode == "" ) -%]
|
|
All libraries
|
|
[% ELSE %][% opac_new.branchname | html %]
|
|
[% END %]</td>
|
|
<td>[% opac_new.number | html %]</td>
|
|
<td><span title="[% opac_new.newdate | html %]">[% opac_new.newdate | $KohaDates %]</span></td>
|
|
<td><span title="[% opac_new.expirationdate | html %]">[% opac_new.expirationdate | $KohaDates %] [% IF ( opac_new.expired ) %](<span class="expired">expired</span>)[% END %]</span></td>
|
|
<td>[% opac_new.title | html %]</td>
|
|
<td>[% opac_new.author_title | html %] [% opac_new.author_firstname | html %] [% opac_new.author_surname | html %]</td>
|
|
<td>
|
|
[% opac_new.content | $raw %]
|
|
</td>
|
|
<td class="actions">
|
|
<a href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&id=[% opac_new.idnew | uri %]" class="btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a>
|
|
<a href="/cgi-bin/koha/tools/koha-news.pl?op=del&ids=[% opac_new.idnew | uri %]" class="delete_news btn btn-default btn-xs"><i class="fa fa-trash"></i> Delete</a>
|
|
</td>
|
|
</tr>
|
|
[% END %]</tbody>
|
|
</table>
|
|
<input type="hidden" name="op" value="del" />
|
|
<fieldset class="action"><input type="submit" class="button" value="Delete selected" /></fieldset>
|
|
</form>
|
|
[% ELSE %]
|
|
<div class="dialog message">There are no news items.</div>
|
|
[% END %]
|
|
[% END %]
|
|
|
|
</main>
|
|
[% UNLESS ( add_form ) %]
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
[% INCLUDE 'tools-menu.inc' %]
|
|
</aside>
|
|
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
|
[% END %]
|
|
</div> <!-- /.row -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% INCLUDE 'calendar.inc' %]
|
|
[% Asset.js("js/tools-menu.js") | $raw %]
|
|
[% IF ( opac_news_count ) %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
<script>
|
|
$(document).ready(function() {
|
|
$("#newst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"aoColumnDefs": [
|
|
{ "aTargets": [ 0,-1,-2 ], "bSortable": false },
|
|
{ "aTargets": [ 0, -1 ], "bSearchable": false },
|
|
{ 'sType': "title-string", 'aTargets' : [ 'title-string'] }
|
|
],
|
|
"sPaginationType": "full_numbers"
|
|
}));
|
|
$(".delete_news").on("click", function(){
|
|
return confirmDelete( _("Are you sure you want to delete this news item? This cannot be undone.") );
|
|
});
|
|
|
|
function Checkbox(){
|
|
var form = document.getElementById('del_form');
|
|
var inputs = form.getElementsByTagName('input');
|
|
var checked = false;
|
|
for (var i=0; i<inputs.length; i++) {
|
|
if (inputs[i].type == 'checkbox' && inputs[i].name == 'ids') {
|
|
checked = inputs[i].checked;
|
|
if (checked) return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
$("#del_form").on("submit",function(){
|
|
if ( Checkbox() ) {
|
|
return confirmDelete( _("Are you sure you want to delete the selected news?") );
|
|
} else {
|
|
alert(_("Please select a news item to delete."));
|
|
return false;
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
[% Asset.js("lib/tiny_mce/tiny_mce.js") | $raw %]
|
|
<script>
|
|
tinyMCE.baseURL = "[% interface | html %]/lib/tiny_mce";
|
|
tinyMCE.init({
|
|
mode : "textareas",
|
|
theme : "advanced",
|
|
convert_urls : false,
|
|
relative_urls : false,
|
|
content_css : "[% interface | html %]/[% theme | html %]/css/tinymce.css",
|
|
plugins : "table,save,advhr,advlink,searchreplace,print,contextmenu",
|
|
theme_advanced_buttons1 : "save,|,bold,italic,|,cut,copy,paste,|,search,replace,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,|,link,unlink,anchor,cleanup,help,code,advhr,|,print",
|
|
theme_advanced_buttons2 : "tablecontrols,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,removeformat,|,visualaid,|,sub,sup,|,charmap",
|
|
theme_advanced_buttons3 : "",
|
|
theme_advanced_toolbar_location : "top",
|
|
theme_advanced_toolbar_align : "left",
|
|
theme_advanced_path_location : "bottom",
|
|
theme_advanced_resizing : true,
|
|
plugin_insertdate_dateFormat : "%Y-%m-%d",
|
|
plugin_insertdate_timeFormat : "%H:%M:%S",
|
|
apply_source_formatting : true,
|
|
height : "300",
|
|
width : "700"
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|