View | Details | Raw Unified | Return to bug 15326
Collapse All | Expand All

(-)a/Koha/CmsPage.pm (+53 lines)
Line 0 Link Here
1
package Koha::CmsPage;
2
3
# Copyright Halland County Library 2015
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 3 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use Modern::Perl;
21
22
use Carp;
23
24
use Koha::Database;
25
26
use base qw( Koha::Object );
27
28
=head1 NAME
29
30
Koha::CmsPage - Koha Page Object class
31
32
=head1 API
33
34
=head2 Class Methods
35
36
=cut
37
38
=head3 type
39
40
=cut
41
42
sub type {
43
    return 'CmsPage';
44
}
45
46
=head1 AUTHOR
47
48
Martin Persson <xarragon@gmail.com>
49
Halland County Library
50
51
=cut
52
53
1;
(-)a/Koha/CmsPages.pm (+200 lines)
Line 0 Link Here
1
package Koha::CmsPages;
2
3
# Copyright Halland County Library 2015
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 3 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use Modern::Perl;
21
22
use Carp qw( carp );
23
24
use Koha::Database;
25
use Koha::CmsPage;
26
27
use base qw( Koha::Objects );
28
29
=head1 NAME
30
31
Koha::CmsPage - Koha CMS Page Object Class
32
33
=head1 API
34
35
=head2 Class Methods
36
37
=cut
38
39
=head3 type
40
41
=cut
42
43
sub type {
44
    return 'CmsPage';
45
}
46
47
sub object_class {
48
    return 'Koha::CmsPage';
49
}
50
51
=head3 add
52
Adds a new page to the CMS database based on the input data.
53
=cut
54
55
sub add {
56
    my ( $self, $input ) = @_;
57
warn "input: ", scalar $input->param('location');
58
    carp( 'Koha::CmsPages::add() undefined parameter: input' ) unless defined $input;
59
    my $data = {
60
        parent     =>   scalar          $input->param( 'parent' )     eq '' ? undef : scalar $input->param( 'parent' ),
61
        location   =>   scalar          $input->param( 'location' )   eq '' ? undef : scalar $input->param( 'location'),
62
        branchcode =>   scalar          $input->param( 'branchcode' ) eq '' ? undef : scalar $input->param( 'branchcode' ),
63
        lang       =>   scalar          $input->param( 'lang' ),
64
        sortorder  =>   scalar          $input->param( 'sortorder' ),
65
        title      =>   scalar          $input->param( 'title' ),
66
        title_link =>   scalar          $input->param( 'title_link' ),
67
        publish    =>   defined (scalar $input->param( 'publish' )),
68
        content    =>   scalar          $input->param( 'content' )
69
    };
70
71
    if (defined $input->param( 'id' )) {
72
        $data->{'id'} = scalar $input->param( 'id' );
73
    }
74
75
    my $new_page = $self->_resultset()->update_or_create( $data, { key => 'primary' });
76
77
    return $new_page;
78
}
79
80
=head3 list
81
82
Lists pages based input filtering paramters for location, branch and language.
83
84
=cut
85
86
sub list {
87
    my ( $self, $id, $disp, $branch, $lang ) = @_;
88
89
    my $filter = { };
90
    $filter->{'location'} = $disp   unless not defined $disp;
91
    $filter->{'branch'}   = $branch unless not defined $branch;
92
    $filter->{'lang'}     = $lang   unless not defined $lang;
93
94
    my $pages = $self->_resultset()->search( undef, {
95
        order_by => {
96
		    -asc => [qw/parent location branchcode lang sortorder/]
97
        }, where => $filter
98
    } );
99
100
    my $page_list = [];
101
    my $parent_list = [];
102
    my %index;
103
    my $data;
104
    while ( my $page = $pages->next ) {
105
        my $new_page = {
106
            id         => scalar $page->id,
107
            parent     => scalar $page->parent,
108
            branchcode => scalar $page->branchcode,
109
            lang       => scalar $page->lang,
110
            title_link => scalar $page->title_link,
111
            title      => scalar $page->title,
112
            sortorder  => scalar $page->sortorder,
113
            location   => scalar $page->location,
114
            publish    => scalar $page->publish,
115
            content    => scalar $page->content,
116
        };
117
        push(@{ $page_list }, $new_page );
118
119
        # If requested id, store in 'data' output (used for editing a page):
120
        if ( defined $id && $id eq $new_page->{'id'} ) {
121
            $data = $new_page;
122
        } else {
123
            push(@{ $parent_list }, $new_page );
124
        }
125
        $index{ $page->id } = $new_page;
126
    }
127
128
    # Replace parent id with a hash with id and title_link in it.
129
    foreach my $page (@{ $page_list }) {
130
        my $old_id = $page->{'parent'};
131
        my $parent = { id => $old_id };
132
        $parent->{'title_link'} = $index{ $old_id }->{'title_link'} unless not defined $old_id;
133
        $page->{'parent'} = $parent;
134
    }
135
136
    return ( $page_list, $parent_list, $data );
137
}
138
139
=head3 page
140
141
Retrieves all data to show a single CMS page.
142
143
=cut
144
145
sub page {
146
	my ( $self, $id ) = @_;
147
148
	carp( 'Missing CMS page id parameter in Koha::Pages::page' ) unless defined $id;
149
150
	# Probably want to merge these to a single query:
151
	my $top_links = $self->_resultset()->search(
152
			{ parent => undef }, { qw/id title_link/ });
153
154
	my $page_links = $self->_resultset()->search(
155
			{ parent => $id }, { qw/id title_link/ });
156
157
	my $page_data = $self->_resultset()->find( $id );
158
159
	return ( $top_links, $page_links, $page_data );
160
}
161
162
=head3 child_links
163
164
Lists pages which are children of a specific id (or undef for root).
165
166
=cut
167
168
sub child_links {
169
    my ( $self, $id ) = @_;
170
171
	# 'id' can be undefined if listing top-level links.
172
    my $rs = $self->_resultset()->search({ parent => $id },
173
            { columns => [qw/id title_link/] } );
174
175
    return $rs;
176
}
177
178
=head3 remove
179
180
Removes a page identified by id from the CMS database.
181
182
=cut
183
184
sub remove {
185
    my ( $self, @ids ) = @_;
186
187
    carp( 'Koha::CmsPages::remove() undefined parameter ids' ) unless @ids;
188
189
    my $pages = $self->_resultset()->search({ id => \@ids });
190
    $pages->delete;
191
}
192
193
=head1 AUTHOR
194
195
Martin Persson <xarragon@gmail.com>
196
Halland County Library
197
198
=cut
199
200
1;
(-)a/installer/data/mysql/atomicupdate/bug15326-add_cms_pages.sql (+17 lines)
Line 0 Link Here
1
 CREATE TABLE `cms_pages` (
2
  `id` int(6) NOT NULL AUTO_INCREMENT,
3
  `parent` int(6) DEFAULT NULL,
4
  `branchcode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
5
  `lang` varchar(25) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
6
  `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
7
  `title_link` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
8
  `sortorder` int(3) NOT NULL DEFAULT 0,
9
  `location` tinyint(1) DEFAULT NULL,
10
  `publish` tinyint(1) NOT NULL DEFAULT 0,
11
  `content` text COLLATE utf8_unicode_ci,
12
  PRIMARY KEY (`id`),
13
  INDEX `parent_index` (`parent`),
14
  INDEX `lang_index` (`lang`),
15
  INDEX `branchcode_index` (`branchcode`),
16
  CONSTRAINT `cmspages_branchcode_ibfk` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
17
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
(-)a/installer/data/mysql/kohastructure.sql (+23 lines)
Lines 4446-4451 CREATE TABLE return_claims ( Link Here
4446
    CONSTRAINT `rc_resolved_by_ibfk` FOREIGN KEY (`resolved_by`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE
4446
    CONSTRAINT `rc_resolved_by_ibfk` FOREIGN KEY (`resolved_by`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE
4447
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4447
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4448
4448
4449
--
4450
-- Table structure for table 'cms_pages', used for CMS functionality.
4451
--
4452
4453
DROP TABLE IF EXISTS `cms_pages`;
4454
 CREATE TABLE `cms_pages` (
4455
  `id` int(6) NOT NULL AUTO_INCREMENT,
4456
  `parent` int(6) DEFAULT NULL,
4457
  `branchcode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
4458
  `lang` varchar(25) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
4459
  `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
4460
  `title_link` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
4461
  `sortorder` int(3) NOT NULL DEFAULT 0,
4462
  `location` tinyint(1) DEFAULT NULL,
4463
  `publish` tinyint(1) NOT NULL DEFAULT 0,
4464
  `content` text COLLATE utf8_unicode_ci,
4465
  PRIMARY KEY (`id`),
4466
  INDEX `parent_index` (`parent`),
4467
  INDEX `lang_index` (`lang`),
4468
  INDEX `branchcode_index` (`branchcode`),
4469
  CONSTRAINT `pages_branchcode_ibfk` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
4470
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8mb4_unicode_ci;
4471
4449
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
4472
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
4450
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
4473
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
4451
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
4474
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
(-)a/installer/data/mysql/userpermissions.sql (+1 lines)
Lines 91-96 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
91
   (13, 'access_files', 'Access to the files stored on the server'),
91
   (13, 'access_files', 'Access to the files stored on the server'),
92
   (13, 'upload_general_files', 'Upload any file'),
92
   (13, 'upload_general_files', 'Upload any file'),
93
   (13, 'upload_manage', 'Manage uploaded files'),
93
   (13, 'upload_manage', 'Manage uploaded files'),
94
   (13, 'edit_pages', 'Create, edit and delete CMS pages for OPAC and staff interfaces'),
94
   (15, 'check_expiration', 'Check the expiration of a serial'),
95
   (15, 'check_expiration', 'Check the expiration of a serial'),
95
   (15, 'claim_serials', 'Claim missing serials'),
96
   (15, 'claim_serials', 'Claim missing serials'),
96
   (15, 'create_subscription', 'Create a new subscription'),
97
   (15, 'create_subscription', 'Create a new subscription'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc (+5 lines)
Lines 394-399 Link Here
394
            Write news for the OPAC and staff interfaces
394
            Write news for the OPAC and staff interfaces
395
        </span>
395
        </span>
396
        <span class="permissioncode">([% name | html %])</span>
396
        <span class="permissioncode">([% name | html %])</span>
397
    [%- CASE 'edit_pages' -%]
398
        <span class="sub_permission edit_pages_subpermission">
399
            Create, edit and delete CMS pages for OPAC and staff interfaces
400
        </span>
401
        <span class="permissioncode">([% name | html %])</span>
397
    [%- CASE 'edit_notice_status_triggers' -%]
402
    [%- CASE 'edit_notice_status_triggers' -%]
398
        <span class="sub_permission edit_notice_status_triggers_subpermission">
403
        <span class="sub_permission edit_notice_status_triggers_subpermission">
399
            Set notice/status triggers for overdue items
404
            Set notice/status triggers for overdue items
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cmspages.tt (+238 lines)
Line 0 Link Here
1
[% USE KohaDates %]
2
[% USE Koha %]
3
[% SET link_opac_base = Koha.Preference( 'OPACBaseURL' ) %]
4
[% SET link_opac = link_opac_base _ '/cgi-bin/koha/opac-cmspages.pl' %]
5
[% INCLUDE 'doc-head-open.inc' %]
6
<title>Koha &rsaquo; Tools &rsaquo; Pages</title>
7
[% INCLUDE 'doc-head-close.inc' %]
8
[% IF ( opac_page_count ) %]
9
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
10
    [% INCLUDE 'datatables.inc' %]
11
    <script type="text/javascript">//<![CDATA[
12
    $(document).ready(function() {
13
        $("#newst").dataTable($.extend(true, {}, dataTablesDefaults, {
14
            "aoColumnDefs": [
15
                { "aTargets": [ 0,-1,-2 ], "bSortable": false },
16
                { "aTargets": [ 0, -1 ], "bSearchable": false },
17
                { 'sType': "title-string", 'aTargets' : [ 'title-string'] }
18
            ],
19
            "sPaginationType": "full_numbers"
20
        }));
21
    });
22
    //]]>
23
    </script>
24
[% END %]
25
<script type="text/javascript" src="[% interface %]/lib/tiny_mce/tiny_mce.js"></script>
26
<script type="text/javascript">//<![CDATA[
27
var MSG_CONFIRM_DELETE_PAGE  = _("Are you sure you want to delete the selected page?");
28
29
tinyMCE.init({
30
    mode : "textareas",
31
    theme : "advanced",
32
    convert_urls : false,
33
    relative_urls : false,
34
    content_css : "[% themelang %]/css/tinymce.css",
35
    plugins : "table,save,advhr,advlink,searchreplace,print,contextmenu",
36
    theme_advanced_buttons1 : "save,|,bold,italic,|,cut,copy,paste,|,search,replace,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,|,link,unlink,anchor,cleanup,help,code,advhr,|,print",
37
    theme_advanced_buttons2 : "tablecontrols,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,removeformat,|,visualaid,|,sub,sup,|,charmap",
38
    theme_advanced_buttons3 : "",
39
    theme_advanced_toolbar_location : "top",
40
    theme_advanced_toolbar_align : "left",
41
    theme_advanced_path_location : "bottom",
42
    theme_advanced_resizing : true,
43
    plugin_insertdate_dateFormat : "%Y-%m-%d",
44
    plugin_insertdate_timeFormat : "%H:%M:%S",
45
    apply_source_formatting : true,
46
    height : "300",
47
    width : "700"
48
//]]>
49
});
50
//]]>
51
</script>
52
</head>
53
<body id="tools_koha-content" class="tools">
54
[% INCLUDE 'header.inc' %]
55
[% INCLUDE 'cat-search.inc' %]
56
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; [% IF ( form ) %]<a href="[% link_self %]">Pages</a> &rsaquo; [% IF ( id ) %]
57
Edit page[% ELSE %]Add page[% END %][% ELSE %]Pages[% END %]</div>
58
59
[% IF ( form ) %]<div id="doc" class="yui-t7">[% ELSE %]<div id="doc3" class="yui-t2">[% END %]
60
   <div id="bd">
61
    <div id="yui-main">
62
    <div class="yui-b">
63
64
[% UNLESS ( link_opac_base && link_self) %]
65
    <div class="dialog alert">
66
    [% UNLESS ( link_opac_base ) %]
67
    Warning: Preference <em>OPACBaseURL</em> not set, some links might not work!</div>
68
    [% END %]
69
    [% UNLESS ( link_self ) %]
70
    Warning: Variable <em>link_self</em> not set, some links might not work!</div>
71
    [% END %]
72
[% END %]
73
[% UNLESS ( form ) %]
74
    [% IF error_message == 'title_missing' %]
75
        <div class="dialog alert">Error: Required page title missing!</div>
76
    [% END %]
77
<div id="toolbar" class="btn-toolbar">
78
    <a class="btn btn-small" id="newentry" href="[% link_self %]?op=form"><i class="icon-plus"></i> New page</a>
79
</div>
80
[% END %]
81
<pre>DEBUG: [% debug %]</pre>
82
<pre>DEBUG2: data.location: [% data.location %] data.branchcode: [% data.branchcode %]</pre>
83
[% IF ( form ) %]
84
        <form name="form" method="post" enctype="multipart/form-data" action="[% link_self %]" >
85
            <input type="hidden" name="op" value="[% op %]" />
86
            <input type="hidden" name="id" value="[% id %]" />
87
            <fieldset class="rows">
88
            <legend>Page</legend>
89
            <ol>
90
            <li>
91
                <label for="disp">Display location</label>
92
                <select id="disp" name="disp">
93
                    <option value=""  [% IF ( data.disp == ""  ) %]selected="selected"[% END %]>All</option>
94
                    <option value="1" [% IF ( data.disp == "1" ) %]selected="selected"[% END %]>Intranet</option>
95
                    <option value="2" [% IF ( data.disp == "2" ) %]selected="selected"[% END %]>OPAC</option>
96
                </select>
97
            </li>
98
            <li>
99
                <label for="branch">Library: </label>
100
                <select id="branch" name="branch">
101
                    <option value=""[% IF ( data.branchcode == '' ) %] selected="selected"[% END %]>All libraries</option>
102
                [% FOREACH branch_lis IN branch_list %]
103
                    <option value="[% branch_lis.branchcode %]"[% IF ( branch_lis.branchcode == data.branchcode ) %] selected="selected"[% END %]>[% branch_lis.branchname %]</option>
104
                [% END %]
105
                </select>
106
            </li>
107
            <li>
108
                <label for="lang">Language</label>
109
<pre>LANG: [% lang %]</pre>
110
                <select id="lang" name="lang">
111
                    <option value="" [% IF ( data.lang == "" ) %]selected="selected"[% END %]>All</option>
112
                    [% FOREACH lang_lis IN lang_list %]
113
                        <option value="[% lang_lis.rfc4646_subtag %]" [% IF ( lang_lis.rfc4646_subtag == data.lang ) %]selected="selected"[% END %]>[% lang_lis.native_description %] ([% lang_lis.rfc4646_subtag %])</option>
114
                    [% END %]
115
                </select>
116
            </li>
117
            <li>
118
                <label for="parent">Parent page: </label>
119
                <select id="parent" name="parent">
120
                    <option value="" [% IF ( data.id == "" ) %]selected="selected"[% END %]>No parent</option>
121
                [% FOREACH parent_lis IN parent_list %]
122
                        <option value="[% parent_lis.id %]" [% IF ( data.parent.id == parent_lis.id ) %]selected="selected"[% END %]>[% parent_lis.title_link %]</option>
123
                [% END %]
124
                </select>
125
            </li>
126
            <li>
127
                <label for="title_link" class="required">Link title: </label>
128
                <input id="title_link" size="30" type="text" name="title_link" value="[% data.title_link %]" required="required" class="required" /> <span class="required">Required</span>
129
            </li>
130
            <li>
131
                <label for="title">Page title: </label>
132
                <input id="title" size="30" type="text" name="title" value="[% data.title %]" />
133
            </li>
134
            <li>
135
                <label for="number">Appear in position: </label>
136
                <input id="sortorder" size="3" name="sortorder" type="text" value="[% IF ( data.sortorder ) %][% data.sortorder %][% ELSE %]0[% END %]" />
137
            </li>
138
            <li>
139
                <label for="publish">Publish: </label>
140
                <input type="checkbox" id="publish" name="publish"[% IF ( data.publish ) %] checked="checked"[% END %]/>
141
            </li>
142
            <li><label for="new">Content: </label>
143
            <textarea name="content" id="content" cols="75" rows="10">[% data.content %]</textarea>
144
            </li>
145
            </ol>
146
            </fieldset>
147
            <fieldset class="action"><input class="button" type="submit" value="Save" /> <a class="cancel" href="[% link_self %]">Cancel</a></fieldset>
148
        </form>
149
    [% ELSE %]
150
        <div style="margin-bottom:5px;">
151
        <form name="form" method="post" action="[% link_self %]" >
152
            <label for="disp">Display location:</label>
153
            <select name="disp" id="disp">
154
                <option value=""  [% IF ( disp == ""  ) %]selected="selected"[% END %]>All</option>
155
                <option value="0" [% IF ( disp == "0" ) %]selected="selected"[% END %]>OPAC</option>
156
                <option value="1" [% IF ( disp == "1" ) %]selected="selected"[% END %]>Librarian interface</option>
157
            </select>
158
159
            <label for="branch">Library: </label>
160
            <select id="branch" name="branch">
161
                <option value=""[% IF ( branch == "" ) %] selected="selected"[% END %]>All libraries</option>
162
                [% FOREACH branch_lis IN branch_list %]
163
                <option value="[% branch_lis.branchcode %]"[% IF ( branch_lis.branchcode == branch ) %] selected="selected"[% END %]>[% branch_lis.branchname %]</option>
164
                [% END %]
165
            </select>
166
167
            <label for="lang">Language:</label>
168
            <select name="lang" id="lang">
169
                <option value="" [% IF ( lang == "" ) %]selected="selected"[% END %]>All</option>
170
                [% FOREACH lang_lis IN lang_list %]
171
                <option value="[% lang_lis.rfc4646_subtag %]" [% IF ( lang_lis.rfc4646_subtag == lang ) %]selected="selected"[% END %]>[% lang_lis.native_description %] ([% lang_lis.rfc4646_subtag %])</option>
172
                [% END %]
173
            </select>
174
            <input type="submit" class="button" value="Filter" />
175
        </form>
176
        </div>
177
        [% IF ( page_list_count ) %]
178
        <form name="del_form" method="post" action="[% link_self %]" onsubmit='return confirm(MSG_CONFIRM_DELETE_PAGE)'>
179
                <table id="newst">
180
                   <thead><tr>
181
                        <th>&nbsp;</th>
182
                        <th>Pub.</th>
183
                        <th>Parent</th>
184
                        <th>Loc.</th>
185
                        <th>Lib.</th>
186
                        <th>Lang.</th>
187
                        <th>Num.</th>
188
                        <th>Link title</th>
189
                        <th>Page title</th>
190
                        <th>&nbsp;</th>
191
                        <th>&nbsp;</th>
192
                    </tr></thead>
193
                    <tbody>[% FOREACH page_lis IN page_list %]
194
                        <tr>
195
                            <td>
196
                                <input type="checkbox" name="ids" id="ids" value="[% page_lis.id %]" />
197
                            </td>
198
                            <td>[% IF ( page_lis.publish ) %]Yes[% ELSE %]No[% END %]</td>
199
                            <td>[% page_lis.parent.title_link %]</td>
200
                            <td>[% SWITCH page_lis.display %]
201
                                [% CASE "0" %]
202
                                    OPAC
203
                                [% CASE "1" %]
204
                                    Staff interface
205
                                [% CASE "" %]
206
                                    All
207
                                [% END %]
208
                            </td>
209
                            <td>[% IF ( page_lis.branch == "" ) %]
210
                                All
211
                                [% ELSE %][% page_lis.branchname %]
212
                                [% END %]</td>
213
                            <td>[% IF ( page_lis.langcode == "" ) %]All[% ELSE %]
214
                                [% page_lis.langcode %][% END %]</td>
215
                            <td>[% page_lis.sortorder %]</td>
216
                            <td><a href="[% link_self %]?op=form&amp;id=[% page_lis.id %]">[% page_lis.title_link %]</a></td>
217
                            <td>[% page_lis.title %]</td>
218
                            <td><a href="[% link_self %]?op=form&amp;id=[% page_lis.id %]">Edit</a></td>
219
                            <td><a href="[% link_opac %]?id=[% page_lis.id %]">View</a></td>
220
                        </tr>
221
                    [% END %]</tbody>
222
                </table>
223
                <input type="hidden" name="op" value="del" />
224
                <fieldset class="action"><input type="submit" class="button" value="Delete selected" /></fieldset>
225
            </form>
226
        [% ELSE %]
227
            <p>No pages exists</p>
228
        [% END %]
229
    [% END %]
230
</div>
231
</div>
232
[% UNLESS ( form ) %]
233
    <div class="yui-b noprint">
234
        [% INCLUDE 'tools-menu.inc' %]
235
    </div>
236
[% END %]
237
</div>
238
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt (+5 lines)
Lines 104-109 Link Here
104
    <dd>Write news for the OPAC and staff interfaces</dd>
104
    <dd>Write news for the OPAC and staff interfaces</dd>
105
    [% END %]
105
    [% END %]
106
106
107
    [% IF ( CAN_user_tools_edit_pages ) %]
108
    <dt><a href="/cgi-bin/koha/tools/cmspages.pl">Pages</a></dt>
109
    <dd>Create and edit additional content pages</dd>
110
    [% END %]
111
107
    [% IF ( CAN_user_tools_schedule_tasks ) %]
112
    [% IF ( CAN_user_tools_schedule_tasks ) %]
108
    <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
113
    <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
109
    <dd>Schedule tasks to run</dd>
114
    <dd>Schedule tasks to run</dd>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc (+14 lines)
Lines 319-324 Link Here
319
                                    [% Koha.Preference('OpacMoreSearches') | $raw %]
319
                                    [% Koha.Preference('OpacMoreSearches') | $raw %]
320
                                </ul>
320
                                </ul>
321
                            </div> <!-- /#moresearches -->
321
                            </div> <!-- /#moresearches -->
322
                            <div id="cms_nav_top">
323
								[% IF ( cms_nav_top ) %]
324
								<ul>
325
									[% WHILE ( cms_item = cms_nav_top.next ) %]
326
										[% IF ( cms_item.id == cms_page.id ) %]
327
											<li class="cms_nav_top_active">
328
										[% ELSE %]
329
                                            <li>
330
										[% END %]
331
                                        <a href="/cgi-bin/koha/opac-cmspages.pl?id=[% cms_item.id %]">[% cms_item.title_link %]</a></li>
332
									[% END %]
333
								</ul>
334
								[% END %]
335
                            </div>
322
                    </div> <!-- /.row-fluid -->
336
                    </div> <!-- /.row-fluid -->
323
337
324
                [% END # / OpacPublic %]
338
                [% END # / OpacPublic %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/navigation.inc (-1 / +9 lines)
Lines 1-5 Link Here
1
[% USE raw %]
1
[% USE raw %]
2
<div id="opacnav">[% OpacNav | $raw %]</div>
2
<div id="opacnav">
3
[% IF ( cms_nav_left ) %]
4
<ul id="cms_nav_left">
5
[% WHILE ( item = cms_nav_left.next ) %]
6
    <li><a href="/cgi-bin/koha/opac-cmspages.pl?id=[% item.id %]">[% item.title_link | html %]</a></li>
7
[% END %]
8
</ul>
9
[% END %]
10
[% OpacNav | $raw %]</div>
3
[% IF IsPatronPage %]
11
[% IF IsPatronPage %]
4
    <div id="usermenu">[% INCLUDE usermenu.inc %]</div>
12
    <div id="usermenu">[% INCLUDE usermenu.inc %]</div>
5
[% END %]
13
[% END %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-cmspages.tt (+89 lines)
Line 0 Link Here
1
[% USE Koha %]
2
[% USE Branches %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %][% IF (cms_page.title) %] - [% cms_page.title %][% ELSE %] catalog[% END%]</title>
5
[% INCLUDE 'doc-head-close.inc' %]
6
[% BLOCK cssinclude %][% END %]
7
</head>
8
[% INCLUDE 'bodytag.inc' bodyid='opac-cmspages' %]
9
[% INCLUDE 'masthead.inc' %]
10
11
<div class="main">
12
    <ul class="breadcrumb">
13
        <li><a href="/cgi-bin/koha/opac-main.pl">Home</a></li>
14
        <li><span class="divider">&rsaquo;</span></li>
15
        <li><a href="#">[% cms_page.title_link %]</a></li>
16
    </ul>
17
18
    [% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
19
        [% IF ( loggedinusername ) %]
20
            <div id="loggedin" class="container-fluid">
21
        [% ELSE %]
22
            <div id="notloggedin" class="container-fluid">
23
        [% END %]
24
    [% ELSE %]
25
        <div id="notloggedin" class="container-fluid">
26
    [% END %]
27
28
    <div class="row-fluid">
29
    [% IF ( OpacNav ||  OpacNavBottom ) %]
30
        <div class="span2">
31
            <div id="navigation">
32
                [% INCLUDE 'navigation.inc' %]
33
            </div>
34
        </div>
35
    [% END %]
36
37
    [% IF ( OpacNav || OpacNavBottom ) %]
38
        <div class="span7">
39
    [% ELSE %]
40
        <div class="span9">
41
    [% END %]
42
        [% cms_page.content %]
43
        [% IF ( OpacMainUserBlock ) %]<div id="opacmainuserblock">[% OpacMainUserBlock %]</div>[% END %]
44
        </div> <!-- / .span 7/9 -->
45
46
        [% IF ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) || OpacNavRight ) %]
47
            <div class="span3">
48
                [% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
49
                    [% UNLESS ( loggedinusername ) %]
50
                        [% UNLESS ( casAuthentication || shibbolethAuthentication ) %]
51
                            <div id="login">
52
                                <form action="/cgi-bin/koha/opac-user.pl" method="post" name="auth" id="auth">
53
                                    <input type="hidden" name="koha_login_context" value="opac" />
54
                                    <fieldset class="brief">
55
                                        <legend>Log in to your account:</legend>
56
                                        <label for="userid">Login:</label><input type="text" id="userid" name="userid" />
57
                                        <label for="password">Password:</label><input type="password" id="password" name="password" />
58
                                    <fieldset class="action">
59
                                        <input type="submit" value="Log in" class="btn" />
60
                                    </fieldset>
61
                                    [% IF PatronSelfRegistration && PatronSelfRegistrationDefaultCategory %]<div id="patronregistration"><p>Don't have an account? <a href="/cgi-bin/koha/opac-memberentry.pl">Register here.</a></p></div>[% END %]
62
                                    </fieldset>
63
                                [% IF Koha.Preference( 'NoLoginInstructions' ) %]
64
                                    <div id="nologininstructions-main">
65
                                        [% Koha.Preference( 'NoLoginInstructions' ) %]
66
                                    </div>
67
                                [% END %]
68
                                </form>
69
                            </div> <!-- /#login -->
70
                        [% END # /casAuthentication %]
71
                        [% IF persona %]
72
                            <a href="#" class="persona-button" id="browserid" ><span>Sign in with your email</span></a>
73
                        [% END # /persona %]
74
                    [% END # / loggedinusername %]
75
                [% END # /opacuserlogin %]
76
                [% IF ( OpacNavRight ) %]
77
                    <div id="opacnavright">
78
                        [% OpacNavRight %]
79
                    </div>
80
                [% END # /OpacNavRight %]
81
            </div> <!-- / .span3 -->
82
        [% END # /opacuserlogin || OpacNavRight %]
83
84
        </div> <!-- /.container-fluid -->
85
    </div> <!-- /.row-fluid -->
86
</div> <!-- /.main -->
87
88
[% INCLUDE 'opac-bottom.inc' %]
89
[% BLOCK jsinclude %][% END %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less (+2684 lines)
Line 0 Link Here
1
@import "mixins.less";
2
body {
3
    background-color: #EAEAE6;
4
}
5
6
 /* Sticky footer styles */
7
html,
8
body {
9
    height: 100%;
10
    /* The html and body elements cannot have any padding or margin. */
11
}
12
13
.no-js {
14
    .dateformat {
15
        display: inline;
16
        white-space: nowrap;
17
    }
18
    .modal-body {
19
        padding: 0;
20
    }
21
    .selections-toolbar {
22
        display: none;
23
    }
24
}
25
26
.js {
27
    .dateformat {
28
        display: none;
29
    }
30
}
31
32
/* Wrapper for page content to push down footer */
33
#wrap {
34
    min-height: 100%;
35
    height: auto !important;
36
    height: 100%;
37
    /* Negative indent footer by it's height */
38
    // margin: 0 auto -60px;
39
}
40
41
/* Set the fixed height of the footer here */
42
#changelanguage {
43
    // height: 60px;
44
}
45
46
.popup {
47
    padding-left : 0;
48
    padding-right: 0;
49
}
50
51
a {
52
    color: @links;
53
    &.cancel {
54
        padding-left : 1em;
55
    }
56
    &:visited {
57
        color: @links;
58
    }
59
    &.title {
60
        font-weight: bold;
61
        font-size : 108%;
62
    }
63
    &.btn {
64
        &:visited {
65
            color : #333;
66
        }
67
    }
68
    &.btn-primary {
69
        &:visited {
70
            color : #FFF;
71
        }
72
    }
73
    &.login-link {
74
        color: #A6D8ED;
75
        font-weight: bold;
76
    }
77
}
78
79
.ui-widget-content a,
80
.ui-widget-content a:visited {
81
    color: @links;
82
}
83
84
h1 {
85
    font-size : 140%;
86
    line-height: 150%;
87
    &#libraryname {
88
        background: transparent url(../images/logo-koha.png) no-repeat scroll 0%;
89
        border: 0;
90
        float: left !important;
91
        margin: 0;
92
        padding: 0;
93
        width: 120px;
94
        a {
95
            border: 0;
96
            cursor: pointer;
97
            display: block;
98
            height: 0px !important;
99
            margin: 0;
100
            overflow: hidden;
101
            padding: 40px 0 0;
102
            text-decoration: none;
103
            width: 120px;
104
        }
105
    }
106
}
107
108
h2 {
109
110
    font-size : 130%;
111
    line-height: 150%;
112
}
113
h3 {
114
115
    font-size : 120%;
116
    line-height: 150%;
117
}
118
h4 {
119
120
    font-size : 110%;
121
}
122
h5 {
123
124
    font-size : 100%;
125
}
126
127
caption {
128
    font-size: 120%;
129
    font-weight: bold;
130
    margin : 0;
131
    text-align: left;
132
}
133
134
input,
135
textarea {
136
    width: auto;
137
}
138
139
.input-fluid {
140
    width : 50%;
141
}
142
143
legend {
144
    font-size: 110%;
145
    font-weight: bold;
146
}
147
148
table, td {
149
    background-color: #FFF;
150
}
151
152
td {
153
    .btn {
154
        white-space: nowrap;
155
    }
156
    .btn-link {
157
        padding: 0;
158
    }
159
}
160
161
#advsearches,
162
#booleansearch {
163
    label {
164
        display: inline;
165
    }
166
}
167
168
#basketcount {
169
    display : inline;
170
    margin : 0;
171
    padding : 0;
172
    span {
173
        background-color : #FFC;
174
        color : #000;
175
        display : inline;
176
        font-size : 80%;
177
        font-weight : normal;
178
        margin : 0 0 0 .9em;
179
        padding : 0 .3em 0 .3em;
180
        .border-radius-all(3px);
181
    }
182
}
183
184
185
#members {
186
    display: block;
187
    p {
188
        color : #EEE;
189
    }
190
    a {
191
        &.logout {
192
            color : #E8583C;
193
            font-weight: bold;
194
            padding : 0 .3em 0 .3em;
195
        }
196
    }
197
}
198
199
#koha_url p {
200
        color: #666666;
201
        float : right;
202
        margin: 0;
203
}
204
205
#moresearches {
206
    margin: .5em 0 .5em 0;
207
    padding: 0 .8em;
208
    li {
209
        display: inline;
210
        white-space: nowrap;
211
        &:after {
212
            content : " | ";
213
        }
214
215
    }
216
    ul {
217
        margin : 0;
218
        display: inline;
219
    }
220
    display: inline;
221
}
222
223
#moresearches li:last-child:after {
224
    content : "";
225
}
226
227
#cms_nav_top {
228
	li {
229
		margin-bottom: -1em;
230
		display: inline;
231
		white-space: nowrap;
232
		border-top-left-radius: 5px;
233
		border-top-right-radius: 5px;
234
		background-color: #eee;
235
		border: 1px solid #D2D2CF;
236
		border-bottom: none;
237
		padding: 0.1em 0.8em 0em 0.8em;
238
		font-weight: bold;
239
		font-size: 1.2em;
240
		border-bottom: 1px solid #D2D2CF;
241
		a {
242
			text-decoration: none;
243
		}
244
		&.cms_nav_top_active {
245
			background-color: #fff;
246
			border-bottom: 1px solid #FFF;
247
		}
248
	}
249
	ul {
250
		margin: 0;
251
		display: inline;
252
	}
253
	display: inline;
254
}
255
256
ul#cms_nav_left {
257
	list-style-type: none;
258
	padding: 0;
259
}
260
261
#news {
262
    margin : .5em 0;
263
}
264
265
.newscontainer {
266
    border: 1px solid #ddd;
267
    border-bottom-width: 0;
268
    border-top-left-radius: 5px;
269
    border-top-right-radius: 5px;
270
}
271
272
.newsheader {
273
    background-color: #ecede6;
274
    border-bottom: 1px solid #ddd;
275
    margin: 0;
276
    padding: 8px;
277
}
278
279
.newsbody {
280
    padding: 8px;
281
}
282
283
.newsfooter {
284
    border-bottom: 1px solid #ddd;
285
    font-style: italic;
286
    padding: 4px 8px;
287
}
288
289
#opacheader {
290
    background-color: #DDD;
291
}
292
293
#selections,
294
.selections {
295
    font-weight : bold;
296
}
297
298
.actions {
299
    a {
300
        white-space: nowrap;
301
        &.hold {
302
            background-image : url("../images/sprite.png"); /* Place hold small */
303
            background-position : -5px -542px;
304
            background-repeat: no-repeat;
305
            margin-right : 1em;
306
            padding-left : 21px;
307
            text-decoration : none;
308
        }
309
        &.article_request {
310
            background-image : url("../images/sprite.png"); /* Place hold small */
311
            background-position : -2px -26px;
312
            background-repeat: no-repeat;
313
            margin-right : 1em;
314
            padding-left : 21px;
315
            text-decoration : none;
316
        }
317
        &.addtocart {
318
            background-image : url("../images/sprite.png"); /* Cart small */
319
            background-position : -5px -572px;
320
            background-repeat: no-repeat;
321
            margin-right : 1em;
322
            padding-left : 20px;
323
            text-decoration : none;
324
        }
325
        &.addtoshelf {
326
            background-image : url("../images/sprite.png"); /* MARC view */
327
            background-position: -5px -27px;
328
            background-repeat: no-repeat;
329
            margin-right : 1em;
330
            padding-left : 20px;
331
            text-decoration : none;
332
        }
333
        &.addtolist {
334
            background-position: -5px -27px;
335
            margin-right : 1em;
336
            padding-left : 20px;
337
            text-decoration : none;
338
        }
339
        &.tag_add {
340
            background-position: -5px -1110px;
341
            margin-right : 1em;
342
            padding-left : 20px;
343
            text-decoration : none;
344
        }
345
        /* List contents remove from list link */
346
        &.removefromlist  {
347
            background-position : -8px -690px; /* Delete */
348
            margin-right : 1em;
349
            text-decoration : none;
350
            padding-left : 15px;
351
        }
352
    }
353
}
354
355
/* Override Bootstrap alert */
356
.alert {
357
    background: #fffbe5; /* Old browsers */
358
    background: -moz-linear-gradient(top,  #fffbe5 0%, #fff0b2 9%, #fff1a8 89%, #f7e665 100%); /* FF3.6+ */
359
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fffbe5), color-stop(9%,#fff0b2), color-stop(89%,#fff1a8), color-stop(100%,#f7e665)); /* Chrome,Safari4+ */
360
    background: -webkit-linear-gradient(top,  #fffbe5 0%,#fff0b2 9%,#fff1a8 89%,#f7e665 100%); /* Chrome10+,Safari5.1+ */
361
    background: -o-linear-gradient(top,  #fffbe5 0%,#fff0b2 9%,#fff1a8 89%,#f7e665 100%); /* Opera 11.10+ */
362
    background: -ms-linear-gradient(top,  #fffbe5 0%,#fff0b2 9%,#fff1a8 89%,#f7e665 100%); /* IE10+ */
363
    background: linear-gradient(to bottom,  #fffbe5 0%,#fff0b2 9%,#fff1a8 89%,#f7e665 100%); /* W3C */
364
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffbe5', endColorstr='#f7e665',GradientType=0 ); /* IE6-9 */
365
    border-color : #D6C43B;
366
    color: #333;
367
}
368
369
/* Override Bootstrap alert.alert-info */
370
.alert-info {
371
    background: #f4f6fa; /* Old browsers */
372
    background: -moz-linear-gradient(top,  #f4f6fa 0%, #eaeef5 4%, #e8edf6 96%, #cddbf2 100%); /* FF3.6+ */
373
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f6fa), color-stop(4%,#eaeef5), color-stop(96%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
374
    background: -webkit-linear-gradient(top,  #f4f6fa 0%,#eaeef5 4%,#e8edf6 96%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
375
    background: -o-linear-gradient(top,  #f4f6fa 0%,#eaeef5 4%,#e8edf6 96%,#cddbf2 100%); /* Opera 11.10+ */
376
    background: -ms-linear-gradient(top,  #f4f6fa 0%,#eaeef5 4%,#e8edf6 96%,#cddbf2 100%); /* IE10+ */
377
    background: linear-gradient(to bottom,  #f4f6fa 0%,#eaeef5 4%,#e8edf6 96%,#cddbf2 100%); /* W3C */
378
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f6fa', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
379
    border-color : #C5D1E5;
380
    color: #333;
381
}
382
383
/* Override Bootstrap alert.alert-success */
384
.alert-success {
385
    background: #f8ffe8; /* Old browsers */
386
    background: -moz-linear-gradient(top,  #f8ffe8 0%, #e3f5ab 4%, #dcf48d 98%, #9ebf28 100%); /* FF3.6+ */
387
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8ffe8), color-stop(4%,#e3f5ab), color-stop(98%,#dcf48d), color-stop(100%,#9ebf28)); /* Chrome,Safari4+ */
388
    background: -webkit-linear-gradient(top,  #f8ffe8 0%,#e3f5ab 4%,#dcf48d 98%,#9ebf28 100%); /* Chrome10+,Safari5.1+ */
389
    background: -o-linear-gradient(top,  #f8ffe8 0%,#e3f5ab 4%,#dcf48d 98%,#9ebf28 100%); /* Opera 11.10+ */
390
    background: -ms-linear-gradient(top,  #f8ffe8 0%,#e3f5ab 4%,#dcf48d 98%,#9ebf28 100%); /* IE10+ */
391
    background: linear-gradient(to bottom,  #f8ffe8 0%,#e3f5ab 4%,#dcf48d 98%,#9ebf28 100%); /* W3C */
392
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f8ffe8', endColorstr='#9ebf28',GradientType=0 ); /* IE6-9 */
393
    border-color : #9FBA35;
394
    color: #333;
395
}
396
397
.breadcrumb {
398
    background-color: #F2F2EF;
399
    font-size: 85%;
400
    list-style: none outside none;
401
    margin: 10px 20px;
402
    padding: 5px 10px;
403
    .border-radius-all(7px);
404
}
405
406
.form-inline {
407
    display : inline;
408
    padding: 0;
409
    margin: 0;
410
    fieldset {
411
        margin: 0.3em 0;
412
        padding: 0.3em;
413
    }
414
}
415
416
.main {
417
    background-color: #FFF;
418
    border: 1px solid #D2D2CF;
419
    .border-radius-all(7px);
420
    .shadowed;
421
    margin-top : 1px;
422
    margin-bottom: 0.5em;
423
}
424
425
.mastheadsearch {
426
    .border-radius-all(7px);
427
    padding: .8em;
428
    margin: .5em 0;
429
    background: #c7c7c1;
430
    /* Old browsers */
431
    background: -moz-linear-gradient(top, #c7c7c1 38%, #a7a7a2 100%);
432
    /* FF3.6+ */
433
    background: -webkit-gradient(linear, left top, left bottom, color-stop(38%,#c7c7c1), color-stop(100%,#a7a7a2));
434
    /* Chrome,Safari4+ */
435
    background: -webkit-linear-gradient(top, #c7c7c1 38%,#a7a7a2 100%);
436
    /* Chrome10+,Safari5.1+ */
437
    background: -o-linear-gradient(top, #c7c7c1 38%,#a7a7a2 100%);
438
    /* Opera 11.10+ */
439
    background: -ms-linear-gradient(top, #c7c7c1 38%,#a7a7a2 100%);
440
    /* IE10+ */
441
    background: linear-gradient(to bottom, #c7c7c1 38%,#a7a7a2 100%);
442
    /* W3C */
443
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c7c7c1', endColorstr='#a7a7a2',GradientType=0 );
444
    /* IE6-9 */
445
    label {
446
        font-size: 115%;
447
        font-weight: bold;
448
    }
449
}
450
451
.navbar-inverse .brand, .navbar-inverse .nav > li > a {
452
    color: #9FE1FF;
453
    font-weight: bold;
454
}
455
456
.navbar-fixed-bottom.navbar-static-bottom {
457
    margin-top : .5em;
458
    position: static;
459
}
460
461
#changelanguage .nav > .active > p {
462
    padding : 0 15px;
463
}
464
465
.table-striped tbody > tr:nth-child(odd) > td,
466
.table-striped tbody > tr:nth-child(odd) > th {
467
  background-color: #F4F4F4;
468
}
469
470
471
/* jQuery UI standard tabs */
472
.ui-tabs-nav .ui-tabs-active a,
473
.ui-tabs-nav a:hover,
474
.ui-tabs-nav a:focus,
475
.ui-tabs-nav a:active,
476
.ui-tabs-nav span.a {
477
    background: none repeat scroll 0 0 transparent;
478
    outline: 0 none;
479
}
480
481
.ui-widget,
482
.ui-widget input,
483
.ui-widget select,
484
.ui-widget textarea,
485
.ui-widget button {
486
    font-family : inherit;
487
    font-size : inherit;
488
}
489
490
ul.ui-tabs-nav li {
491
    list-style : none;
492
}
493
.ui-tabs.ui-widget-content {
494
    background : transparent none;
495
    border : 0;
496
}
497
498
.ui-tabs .ui-tabs-panel {
499
    border : 1px solid #D8D8D8;
500
    margin-bottom: 1em;
501
}
502
.ui-tabs-nav.ui-widget-header {
503
    border : 0;
504
    background : none;
505
}
506
.ui-tabs .ui-tabs-nav li {
507
    background: #F3F3F3 none;
508
    border-color: #D8D8D8;
509
    margin-right : .4em;
510
}
511
512
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
513
    background-color : #FFF;
514
    border : 1px solid #D8D8D8;
515
    border-bottom: 0;
516
}
517
.ui-tabs .ui-tabs-nav li.ui-tabs-active a {
518
    color : #000;
519
    font-weight : bold;
520
}
521
522
.ui-tabs .ui-tabs-nav li.ui-state-default.ui-state-hover {
523
    background : #F3F3F3 none;
524
}
525
526
.ui-tabs .ui-tabs-nav li.ui-tabs-active.ui-state-hover {
527
    background : #FFF none;
528
}
529
530
.ui-tabs .ui-state-default a,
531
.ui-tabs .ui-state-default a:link,
532
.ui-tabs .ui-state-default a:visited {
533
    color: #006699;
534
}
535
536
.ui-tabs .ui-state-hover a,
537
.ui-tabs .ui-state-hover a:link,
538
.ui-tabs .ui-state-hover a:visited {
539
    color: #990033;
540
}
541
542
.statictabs {
543
    ul {
544
        background: none repeat scroll 0 0 transparent;
545
        border: 0 none;
546
        margin: 0;
547
        padding: 0.2em 0.2em 0;
548
        border-bottom-right-radius: 4px;
549
        border-bottom-left-radius: 4px;
550
        border-top-right-radius: 4px;
551
        border-top-left-radius: 4px;
552
        color: #222222;
553
        font-weight: bold;
554
        font-size: 100%;
555
        line-height: 1.3;
556
        list-style: none outside none;
557
        outline: 0 none;
558
        text-decoration: none;
559
        &:before {
560
            content: "";
561
            display: table;
562
        }
563
        &:after {
564
            clear: both;
565
            content: "";
566
            display: table;
567
        }
568
    }
569
    li {
570
        background: none repeat scroll 0 0 #E6F0F2;
571
        border: 1px solid #B9D8D9;
572
        border-bottom: 0 none !important;
573
        border-top-right-radius: 4px;
574
        border-top-left-radius: 4px;
575
        float: left;
576
        list-style: none outside none;
577
        margin-bottom: 0;
578
        margin-right: 0.4em;
579
        padding: 0;
580
        position: relative;
581
        white-space: nowrap;
582
        top: 1px;
583
        color: #555555;
584
        font-weight: normal;
585
        &.active {
586
            background-color: #FFFFFF;
587
            color: #212121;
588
            font-weight: normal;
589
            padding-bottom: 1px;
590
        }
591
        a {
592
            color: #004D99;
593
            cursor: pointer;
594
            float: left;
595
            padding: 0.5em 1em;
596
            text-decoration: none;
597
            &:hover {
598
                background-color : #EDF4F5;
599
                border-top-right-radius: 4px;
600
                border-top-left-radius: 4px;
601
                color : #538200;
602
            }
603
        }
604
        &.active {
605
            a {
606
                color: #000000;
607
                font-weight: bold;
608
                cursor: text;
609
                background: none repeat scroll 0 0 transparent;
610
                outline: 0 none;
611
            }
612
        }
613
    }
614
    .tabs-container {
615
        border: 1px solid #B9D8D9;
616
        background: none repeat scroll 0 0 transparent;
617
        display: block;
618
        padding: 1em 1.4em;
619
        border-bottom-right-radius: 4px;
620
        border-bottom-left-radius: 4px;
621
        color: #222222;
622
    }
623
}
624
625
/* End jQueryUI tab styles */
626
627
/* jQuery UI Datepicker */
628
.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; }
629
.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
630
631
.ui-datepicker-trigger {
632
    vertical-align: middle;
633
    margin : 0 3px;
634
}
635
.ui-datepicker {
636
    .shadowed;
637
}
638
/* End jQueryUI datepicker styles */
639
640
641
/* jQueryUI Core */
642
643
.ui-widget-content {
644
    border: 1px solid #AAA;
645
    background: #ffffff none;
646
    color: #222222;
647
}
648
.ui-widget-header {
649
    border: 1px solid #AAA;
650
    background: #E6F0F2 none;
651
    color: #222222;
652
    font-weight: bold;
653
}
654
.ui-state-default,
655
.ui-widget-content .ui-state-default,
656
.ui-widget-header .ui-state-default {
657
    border: 1px solid #AAA;
658
    background: #F4F8F9 none;
659
    font-weight: normal;
660
    color: #555555;
661
}
662
.ui-state-hover,
663
.ui-widget-content .ui-state-hover,
664
.ui-widget-header .ui-state-hover,
665
.ui-state-focus,
666
.ui-widget-content .ui-state-focus,
667
.ui-widget-header .ui-state-focus {
668
    border: 1px solid #AAA;
669
    background: #E6F0F2 none;
670
    font-weight: normal;
671
    color: #212121;
672
}
673
.ui-state-active,
674
.ui-widget-content .ui-state-active,
675
.ui-widget-header .ui-state-active {
676
    border: 1px solid #aaaaaa;
677
    background: #ffffff none;
678
    font-weight: normal;
679
    color: #212121;
680
}
681
.ui-state-highlight,
682
.ui-widget-content .ui-state-highlight,
683
.ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1;
684
    background: #fbf9ee;
685
    color: #363636;
686
}
687
.ui-state-error,
688
.ui-widget-content .ui-state-error,
689
.ui-widget-header .ui-state-error {border: 1px solid #cd0a0a;
690
    background: #fef1ec;
691
    color: #cd0a0a;
692
}
693
694
/* end jQueryUI core */
695
696
/* jQueryUI autocomplete */
697
698
.ui-autocomplete {
699
    position: absolute;
700
    cursor: default;
701
    .shadowed;
702
}
703
.ui-autocomplete.ui-widget-content .ui-state-hover {
704
    border: 1px solid #AAA;
705
    background: #E6F0F2 none;
706
    font-weight: normal;
707
    color: #212121;
708
}
709
.ui-autocomplete-loading {
710
    background: #FFF url("../../img/loading-small.gif") right center no-repeat;
711
}
712
.ui-menu li {
713
    list-style:none;
714
}
715
716
/* end jQueryUI autocomplete */
717
718
719
720
th {
721
    background-color: #ECEDE6;
722
}
723
724
.item-thumbnail {
725
    max-width: none;
726
}
727
728
.no-image {
729
    background-color : #FFF;
730
    border: 1px solid #AAA;
731
    color : #979797;
732
    display:block;
733
    font-size : 86%;
734
    font-weight : bold;
735
    text-align : center;
736
    width : 75px;
737
    .border-radius-all(3px);
738
}
739
740
#bookcover .no-image {
741
    margin-right : 10px;
742
    margin-bottom : 10px;
743
}
744
745
td.overdue {
746
    color : #cc3333;
747
}
748
table {
749
    font-size: 90%;
750
}
751
th.sum {
752
    text-align: right;
753
}
754
755
td.sum {
756
    background-color: #FFC;
757
    font-weight: bold;
758
}
759
760
th[scope=row] {
761
    background-color: transparent;
762
    text-align : right;
763
}
764
765
.required {
766
    color : #C00;
767
}
768
769
.label {
770
    background-color: transparent;
771
    color: inherit;
772
    display: inline;
773
    font-weight: normal;
774
    padding : 0;
775
    text-shadow: none;
776
}
777
778
.blabel {
779
    background-color: #999999;
780
    border-radius: 3px;
781
    color: #ffffff;
782
    display: inline-block;
783
    font-weight: bold;
784
    padding: 2px 4px;
785
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
786
}
787
788
.label-important {
789
  background-color: #b94a48;
790
}
791
.label-warning {
792
  background-color: #f89406;
793
}
794
.label-success {
795
  background-color: #468847;
796
}
797
.label-info {
798
  background-color: #3a87ad;
799
}
800
.label-inverse {
801
  background-color: #333333;
802
}
803
804
fieldset {
805
    &.rows {
806
        float : left;
807
        font-size : 90%;
808
        clear : left;
809
        margin: .9em 0 0 0;
810
        padding: 0;
811
        width: 100%;
812
        legend {
813
            font-weight: bold;
814
            font-size : 130%;
815
        }
816
        label,
817
        .label {
818
            float: left;
819
            font-weight : bold;
820
            width: 9em;
821
            margin-right: 1em;
822
            text-align: right;
823
        }
824
        label {
825
            &.lradio {
826
                float: none;
827
                margin: inherit;
828
                width: auto;
829
            }
830
        }
831
        fieldset {
832
            margin : 0;
833
            padding : .3em;
834
        }
835
        ol {
836
            padding: 1em 1em 0 1em;
837
            list-style-type: none;
838
            &.lradio {
839
                label {
840
                    width : auto;
841
                    float : none;
842
                    margin-right : 0;
843
                    &.lradio {
844
                        float : left;
845
                        width : 12em;
846
                        margin-right : 1em;
847
                    }
848
                }
849
            }
850
        }
851
        li {
852
            float : left;
853
            clear : left;
854
            padding-bottom: 1em;
855
            list-style-type: none;
856
            width: 100%;
857
            &.lradio {
858
                padding-left: 8.5em;
859
                width : auto;
860
                label {
861
                    float : none;
862
                    width : auto;
863
                    margin : 0 0 0 1em;
864
                }
865
            }
866
        }
867
        .hint {
868
            display: block;
869
            margin-left : 11em;
870
        }
871
    }
872
    &.action {
873
        clear : both;
874
        float : none;
875
        border : none;
876
        margin : 0;
877
        padding : 1em 0 .3em 0;
878
        width : auto;
879
        p {
880
            margin-bottom : 1em;
881
        }
882
    }
883
    table {
884
        font-size: 100%;
885
    }
886
}
887
888
div.rows+div.rows {
889
    margin-top : .6em;
890
}
891
892
div.rows {
893
    float : left;
894
    clear : left;
895
    margin: 0 0 0 0;
896
    padding: 0;
897
    width: 100%;
898
    span.label {
899
        float: left;
900
        font-weight : bold;
901
        width: 9em;
902
        margin-right: 1em;
903
        text-align: left;
904
    }
905
    ol {
906
        list-style-type: none;
907
        margin-left : 0;
908
        padding: .5em 1em 0 0;
909
    }
910
    li {
911
        border-bottom :  1px solid #EEE;
912
        float : left;
913
        clear : left;
914
        padding-bottom: .2em;
915
        padding-top: .1em;
916
        list-style-type: none;
917
        width: 100%;
918
    }
919
    ul {
920
        li {
921
            margin-left : 7.3em;
922
            &:first-child {
923
                float: none;
924
                clear: none;
925
                margin-left: 0;
926
            }
927
        }
928
    }
929
    ol li li {
930
        border-bottom: 0;
931
    }
932
}
933
934
/* different sizes for different tags in opac-tags.tt */
935
.tagweight0 {
936
    font-size: 12px;
937
}
938
939
.tagweight1 {
940
    font-size: 14px;
941
}
942
943
.tagweight2 {
944
    font-size: 16px;
945
}
946
947
.tagweight3 {
948
    font-size: 18px;
949
}
950
951
.tagweight4 {
952
    font-size: 20px;
953
}
954
955
.tagweight5 {
956
    font-size: 22px;
957
}
958
959
.tagweight6 {
960
    font-size: 24px;
961
}
962
963
.tagweight7 {
964
    font-size: 26px;
965
}
966
967
.tagweight8 {
968
    font-size: 28px;
969
}
970
971
.tagweight9 {
972
    font-size: 30px;
973
}
974
975
.toolbar {
976
    background-color : #EEEEEE;
977
    border : 1px solid #E8E8E8;
978
    font-size : 85%;
979
    padding:3px 3px 5px 5px;
980
    vertical-align : middle;
981
    a {
982
        white-space: nowrap;
983
    }
984
    label {
985
        display: inline;
986
        font-size: 100%;
987
        font-weight : bold;
988
        margin-left : .5em;
989
    }
990
    select {
991
        font-size: 97%;
992
        height: auto;
993
        line-height: inherit;
994
        padding: 0;
995
        margin: 0;
996
        width : auto;
997
        white-space: nowrap;
998
    }
999
    .hold,
1000
    #tagsel_tag {
1001
        padding-left: 28px;
1002
        font-size: 97%;
1003
        font-weight: bold;
1004
    }
1005
    #tagsel_form {
1006
        margin-top : .5em;
1007
    }
1008
    li {
1009
        display : inline;
1010
        list-style : none;
1011
        a {
1012
            border-left : 1px solid #e8e8e8;
1013
        }
1014
        &:first-child {
1015
            a {
1016
                border-left : 0;
1017
            }
1018
        }
1019
    }
1020
    ul {
1021
        padding-left : 0;
1022
    }
1023
}
1024
1025
#basket .toolbar {
1026
    padding: 7px 5px 9px 9px;
1027
}
1028
1029
#selections-toolbar,
1030
.selections-toolbar {
1031
    background: -moz-linear-gradient(top, #b2b2b2 0%, #e0e0e0 14%, #e8e8e8 100%); /* FF3.6+ */
1032
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2b2b2), color-stop(14%,#e0e0e0), color-stop(100%,#e8e8e8)); /* Chrome,Safari4+ */
1033
    background: -webkit-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Chrome10+,Safari5.1+ */
1034
    background: -o-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Opera 11.10+ */
1035
    background: -ms-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* IE10+ */
1036
    background: linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* W3C */
1037
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e0e0e0', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */
1038
    margin : 0 0 1em 0;
1039
    padding-top : .5em;
1040
    padding-left : 10px;
1041
}
1042
1043
.list-actions {
1044
    display : inline;
1045
}
1046
1047
#tagsel_span input.submit,
1048
#tagsel_tag {
1049
    border : 0;
1050
    background-color: transparent;
1051
    font-size : 100%;
1052
    color: #0076B2;
1053
    cursor : pointer;
1054
    background-image : url("../images/sprite.png"); /* Tags */
1055
    background-position : 1px -643px;
1056
    background-repeat : no-repeat;
1057
    padding-left : 25px;
1058
    text-decoration: none;
1059
}
1060
1061
#tagsel_tag.disabled {
1062
    background-position : -1px -667px;
1063
}
1064
1065
1066
#tagsel_span input:hover,
1067
#selections-toolbar input.hold:hover {
1068
    color: #005580;
1069
    text-decoration: underline;
1070
}
1071
1072
#tagsel_span input.disabled,
1073
#tagsel_span input.disabled:hover,
1074
#tagsel_span input.hold.disabled,
1075
#tagsel_span input.hold.disabled:hover,
1076
#selections-toolbar input.hold.disabled,
1077
#selections-toolbar input.hold.disabled:hover,
1078
#selections-toolbar a.disabled,
1079
#selections-toolbar a.disabled:hover,
1080
.selections-toolbar a.disabled,
1081
.selections-toolbar a.disabled:hover {
1082
    color: #888888;
1083
    text-decoration: none;
1084
    padding-left : 23px;
1085
}
1086
1087
.results_summary {
1088
    display: block;
1089
    font-size : 85%;
1090
    color: #707070;
1091
    padding : 0 0 .5em 0;
1092
    .results_summary {
1093
        font-size : 100%;
1094
    }
1095
    &.actions {
1096
        margin-top : .5em;
1097
    }
1098
    &.tagstatus {
1099
        display: inline;
1100
    }
1101
    .label {
1102
        color: #202020;
1103
    }
1104
    a {
1105
        font-weight: normal;
1106
    }
1107
}
1108
1109
#views {
1110
    margin-bottom : .5em;
1111
    padding : 0 2em 0.2em 0.2em;
1112
}
1113
1114
.view {
1115
    background-color : #F3F3F3;
1116
    border: 1px solid #C9C9C9;
1117
    border-radius: 4px;
1118
    display: inline-block;
1119
    padding: 0.2em 0.5em;
1120
    white-space: nowrap;
1121
}
1122
1123
#bibliodescriptions,
1124
#isbdcontents {
1125
    clear : left;
1126
    margin-top : .5em;
1127
}
1128
1129
.view {
1130
    a,
1131
    span {
1132
        background-image: url("../images/sprite.png");
1133
        background-repeat : no-repeat;
1134
        font-size : 87%;
1135
        padding-left: 15px;
1136
        text-decoration: none;
1137
    }
1138
}
1139
1140
.view {
1141
    a {
1142
        font-weight : normal;
1143
    }
1144
}
1145
1146
.current-view {
1147
    background-color: #fff;
1148
    font-weight: bold;
1149
}
1150
1151
#MARCview {
1152
    background-position: -9px -27px;
1153
}
1154
#ISBDview {
1155
    background-position: -10px -56px;
1156
}
1157
#Normalview {
1158
    background-position: -8px 3px;
1159
}
1160
1161
#bookcover {
1162
    float : left;
1163
    margin : 0;
1164
    padding : 0;
1165
    .no-image {
1166
        margin-right : 10px;
1167
        margin-bottom : 10px;
1168
    }
1169
    img {
1170
        margin : 0 1em 1em 0;
1171
    }
1172
}
1173
1174
/* pagination */
1175
.results-pagination {
1176
    position: absolute;
1177
    top:32px;
1178
    left: -1px;
1179
    width: 100%;
1180
    height:auto;
1181
    border: 1px solid #D0D0D0;
1182
    display: none;
1183
    background-color:#F3F3F3;
1184
    padding-bottom:10px;
1185
    z-index: 100;
1186
}
1187
1188
1189
.back {
1190
    float:right;
1191
    input {
1192
        background:none!important;
1193
        color:#999!important;
1194
    }
1195
}
1196
1197
.pagination_list {
1198
    ul {
1199
        padding-top: 40px;
1200
        padding-left:0px;
1201
    }
1202
    li {
1203
        list-style:none;
1204
        float:bottom;
1205
        padding:4px;
1206
        color:#999;
1207
        &.highlight {
1208
           background-color : #F3F3F3;
1209
           border-top : 1px solid #DDDDDD;
1210
           border-bottom : 1px solid #DDDDDD;
1211
        }
1212
        a {
1213
            padding-left:0px;
1214
        }
1215
    }
1216
    .li_pag_index {
1217
        color: #999999;
1218
        float: left;
1219
        font-size: 15px;
1220
        font-weight: bold;
1221
        padding-right: 10px;
1222
        text-align: right;
1223
        width: 13px;
1224
    }
1225
}
1226
1227
.nav_results {
1228
    background-color: #F3F3F3;
1229
    border: 1px solid #D0D0D0;
1230
    font-size: 95%;
1231
    font-weight: bold;
1232
    margin-top: 0.5em;
1233
    position:relative;
1234
    .l_Results {
1235
        a {
1236
            background:#E1E1E1 url("../images/sprite.png") no-repeat 0px -504px; /* Browse results menu */
1237
            color:#006699;
1238
            display:block;
1239
            padding:8px 28px;
1240
            text-decoration:none;
1241
        }
1242
        &:hover {
1243
            background-color:#D9D9D9;
1244
        }
1245
    }
1246
}
1247
1248
.pg_menu {
1249
    margin: 0;
1250
    border-top: 1px solid #D0D0D0;
1251
    white-space : nowrap;
1252
    li {
1253
        color:#B2B2B2;
1254
        display:inline;
1255
        list-style:none;
1256
        margin: 0;
1257
        &.back_results {
1258
            a {
1259
                border-left: 1px solid #D0D0D0;
1260
                border-right: 1px solid #D0D0D0;
1261
            }
1262
        }
1263
        a,
1264
        span {
1265
            background-color: #F3F3F3;
1266
            display : block;
1267
            float:left;
1268
            padding:.4em .5em;
1269
            text-decoration:none;
1270
            font-weight:normal;
1271
            text-align:center;
1272
        }
1273
        span {
1274
            color : #B2B2B2;
1275
        }
1276
    }
1277
}
1278
1279
#listResults{
1280
    li {
1281
        background-color:#999999;
1282
        color:#C5C5C5;
1283
        font-weight:normal;
1284
        display:block;
1285
        margin-right:1px;
1286
        font-size: 80%;
1287
        padding: 0;
1288
        text-align:center;
1289
        min-width:18px;
1290
        &:hover {
1291
            background-color:#006699;
1292
        }
1293
        a {
1294
            color:#FFFFFF;
1295
            font-weight:normal;
1296
        }
1297
    }
1298
}
1299
1300
/* nav */
1301
.nav_pages {
1302
    .close_pagination {
1303
        padding-right: 10px;
1304
        position: absolute;
1305
        right: 3px;
1306
        top: -25px;
1307
    }
1308
    .close_pagination a {
1309
        text-decoration:none!important;
1310
    }
1311
    ul {
1312
        padding-top: 10px;
1313
    }
1314
    li {
1315
        list-style:none;
1316
        float:left;
1317
        padding:4px;
1318
        color:#999;
1319
        a {
1320
            text-decoration:none!important;
1321
            &:hover {
1322
            text-decoration:underline;
1323
            }
1324
        }
1325
        ul {
1326
            float:left;
1327
        }
1328
    }
1329
}
1330
1331
/* action buttons */
1332
#action {
1333
    margin : .5em 0 0 0;
1334
    background-color : #F3F3F3;
1335
    border : 1px solid #E8E8E8;
1336
    padding-bottom : 3px;
1337
    li {
1338
        list-style : none;
1339
        margin : .2em;
1340
        padding : .3em 0;
1341
    }
1342
    a {
1343
        font-weight: bold;
1344
        text-decoration : none;
1345
    }
1346
}
1347
1348
#export,
1349
#moresearches_menu {
1350
    li {
1351
        padding : 0;
1352
        margin : 0;
1353
        a {
1354
            font-weight: normal;
1355
            &.menu-inactive {
1356
                font-weight: bold;
1357
            }
1358
        }
1359
    }
1360
}
1361
1362
#format,
1363
#furthersearches {
1364
    padding-left : 35px;
1365
}
1366
.highlight_controls {
1367
    float: left;
1368
}
1369
a.addtocart,
1370
a.addtoshelf,
1371
a.brief,
1372
a.deleteshelf,
1373
a.deleteshelf.disabled,
1374
a.detail,
1375
a.download,
1376
a.editshelf,
1377
a.sharelist,
1378
a.empty,
1379
a.hide,
1380
a.highlight_toggle,
1381
a.hold,
1382
a.hold.disabled,
1383
a.incart,
1384
a.new,
1385
a.print-small,
1386
a.print-large,
1387
a.removeitems,
1388
a.removeitems.disabled,
1389
a.reserve,
1390
a.article_request,
1391
a.send,
1392
a.tag_add,
1393
a.removefromlist,
1394
input.hold,
1395
input.hold.disabled,
1396
input.editshelf,
1397
.newshelf,
1398
.newshelf.disabled,
1399
.deleteshelf {
1400
    background-image: url("../images/sprite.png");
1401
    background-repeat: no-repeat;
1402
}
1403
1404
1405
a.addtocart {
1406
    background-position: -5px -265px; /* Cart */
1407
    padding-left : 35px;
1408
}
1409
1410
a.addtoshelf {
1411
    background-position: -5px -225px; /* Virtual shelf */
1412
    padding-left : 35px;
1413
}
1414
1415
a.brief {
1416
1417
    background-position : -2px -868px; /* Zoom out */
1418
    text-decoration : none;
1419
    padding-left : 27px;
1420
}
1421
1422
a.cartRemove {
1423
    color: #cc3333;
1424
    font-size : 90%;
1425
    margin : 0;
1426
    padding: 0;
1427
}
1428
1429
a.detail {
1430
    background-position : -2px -898px; /* Zoom in */
1431
    text-decoration : none;
1432
    padding-left : 27px;
1433
}
1434
1435
a.download {
1436
    background-position : -5px -348px; /* Download */
1437
    padding-left : 20px;
1438
    text-decoration : none;
1439
}
1440
1441
a.editshelf {
1442
    background-position : 2px -348px; /* List edit */
1443
    padding-left : 26px;
1444
    text-decoration : none;
1445
}
1446
1447
a.sharelist {
1448
    background-position : 2px -1148px; /* List share */
1449
    padding-left : 26px;
1450
    text-decoration : none;
1451
}
1452
1453
a.empty {
1454
    background-position : 2px -598px; /* Trash */
1455
    text-decoration : none;
1456
    padding-left : 30px;
1457
}
1458
1459
a.hide {
1460
    background-position: -3px -814px; /* Close */
1461
    text-decoration : none;
1462
    padding-left : 26px;
1463
}
1464
1465
a.highlight_toggle {
1466
    background-position: -5px -841px; /* Highlight */
1467
    display: none;
1468
    padding-left : 35px;
1469
}
1470
1471
a.hold,
1472
input.hold {
1473
    background-position : -2px -453px; /* Toolbar place hold */
1474
    text-decoration : none;
1475
    padding-left : 23px;
1476
}
1477
1478
a.hold.disabled,
1479
input.hold.disabled {
1480
    background-position : -5px -621px; /* Place hold disabled */
1481
}
1482
1483
a.incart {
1484
    background-position: -5px -265px; /* Cart */
1485
    color : #666;
1486
    padding-left : 35px;
1487
}
1488
1489
a.new {
1490
    background-image : url("../images/sprite.png"); /* New */
1491
    background-position : -4px -922px;
1492
    padding-left : 23px;
1493
    text-decoration : none;
1494
}
1495
1496
a.print-small {
1497
    background-position : 0px -423px; /* Toolbar print */
1498
    text-decoration : none;
1499
    padding-left : 30px;
1500
}
1501
1502
a.print-large {
1503
    background-position : -5px -186px; /* Toolbar print */
1504
    text-decoration : none;
1505
    padding-left : 35px;
1506
}
1507
1508
a.removeitems,
1509
a.deleteshelf {
1510
    background-position : 2px -690px; /* Delete */
1511
    text-decoration : none;
1512
    padding-left : 25px;
1513
}
1514
1515
a.removeitems.disabled,
1516
a.deleteshelf.disabled {
1517
    background-position : 2px -712px; /* Delete disabled */
1518
}
1519
1520
a.reserve {
1521
    background-position: -6px -144px; /* Place hold */
1522
    padding-left : 35px;
1523
}
1524
1525
a.article_request {
1526
    background-position: 0px -24px; /* Place article request */
1527
    padding-left : 35px;
1528
}
1529
1530
a.send {
1531
    background-position : 2px -386px; /* Email */
1532
    text-decoration : none;
1533
    padding-left : 28px;
1534
}
1535
1536
a.tag_add {
1537
    background-position: 3px -1111px; /* Tag results */
1538
    padding-left : 27px;
1539
    text-decoration: none;
1540
}
1541
1542
input.hold {
1543
    background-color: transparent;
1544
    border : 0;
1545
    color: #0076B2;
1546
    font-weight: bold;
1547
}
1548
1549
input.editshelf {
1550
    background-color: transparent;
1551
    background-position : 2px -734px; /* List edit */
1552
    border : 0;
1553
    color : #006699;
1554
    cursor : pointer;
1555
    filter: none;
1556
    font-size : 100%;
1557
    padding-left : 29px;
1558
    text-decoration : none;
1559
}
1560
1561
.newshelf {
1562
    background-position: 2px -764px; /* List new */
1563
    border : 0;
1564
    color : #006699;
1565
    cursor : pointer;
1566
    filter: none;
1567
    font-size : 100%;
1568
    padding-left : 28px;
1569
    text-decoration : none;
1570
}
1571
1572
.newshelf.disabled {
1573
    background-position: -4px -791px; /* List new disabled */
1574
}
1575
1576
.deleteshelf {
1577
    background-color: transparent;
1578
    background-position : 2px -687px; /* Delete */
1579
    border : 0;
1580
    color : #006699;
1581
    cursor : pointer;
1582
    filter: none;
1583
    font-size : 100%;
1584
    padding-left : 25px;
1585
    text-decoration : none;
1586
}
1587
1588
.links a {
1589
    font-weight : bold;
1590
}
1591
1592
.deleteshelf:hover {
1593
    color: #990033;
1594
}
1595
1596
1597
.editshelf:active,
1598
.deleteshelf:active {
1599
    border : 0;
1600
}
1601
1602
#tagslist li { display : inline; }
1603
1604
#login4tags {
1605
    background-image: url("../images/sprite.png"); /* Tag results disabled */
1606
    background-position: -6px -1130px;
1607
    background-repeat: no-repeat;
1608
    padding-left : 20px;
1609
    text-decoration: none;
1610
}
1611
1612
.tag_results_input {
1613
    margin-left: 1em;
1614
    padding: 0.3em;
1615
    font-size: 12px;
1616
    input[type="text"] {
1617
        font-size: inherit;
1618
        margin : 0;
1619
        padding : 0;
1620
    }
1621
    label {
1622
        display : inline;
1623
    }
1624
}
1625
1626
.tagsinput {
1627
    input[type="text"] {
1628
        font-size: inherit;
1629
        margin : 0;
1630
        padding : 0;
1631
    }
1632
    label {
1633
        display : inline;
1634
    }
1635
}
1636
1637
.branch-info-tooltip {
1638
    display: none;
1639
}
1640
1641
.ui-tooltip-content p {
1642
        margin: 0.3em 0;
1643
}
1644
1645
#social_networks {
1646
    a {
1647
        background: transparent url("../images/social-sprite.png") no-repeat;
1648
        display: block;
1649
        height : 20px !important;
1650
        width : 20px;
1651
        text-indent : -999em;
1652
    }
1653
    span {
1654
        color: #274D7F;
1655
        display : block;
1656
        float : left;
1657
        font-size: 85%;
1658
        font-weight: bold;
1659
        line-height: 2em;
1660
        margin : .5em 0 .5em .5em !important;
1661
    }
1662
    div {
1663
        float : left !important;
1664
        margin : .5em 0 .5em .2em !important;
1665
    }
1666
    #facebook {
1667
        background-position : -7px -35px;
1668
    }
1669
    #twitter {
1670
        background-position : -7px -5px;
1671
    }
1672
    #linkedin {
1673
        background-position : -7px -95px;
1674
    }
1675
    #delicious {
1676
        background-position : -7px -66px;
1677
    }
1678
    #email {
1679
        background-position : -7px -126px;
1680
    }
1681
}
1682
1683
#marc {
1684
    td,
1685
    th {
1686
        background-color : transparent;
1687
        border : 0;
1688
        padding: 3px 5px;
1689
        text-align : left;
1690
    }
1691
    td:first-child {
1692
        text-indent : 2em;
1693
    }
1694
    p {
1695
        padding-bottom: .6em;
1696
        .label {
1697
            font-weight : bold;
1698
        }
1699
    }
1700
    ul {
1701
        padding-bottom: .6em;
1702
    }
1703
    .results_summary {
1704
        clear :  left;
1705
        ul {
1706
            display : inline;
1707
            float :  none;
1708
            clear :  none;
1709
            margin: 0;
1710
            padding: 0;
1711
            list-style : none;
1712
        }
1713
        li {
1714
            display: inline;
1715
        }
1716
    }
1717
}
1718
1719
#items,
1720
#items td
1721
#items th {
1722
    border : 1px solid #EEE;
1723
    font-size : 90%;
1724
}
1725
1726
#plainmarc table { border: 0; margin: .7em 0 0 0; font-family: monospace; font-size: 95%; }
1727
#plainmarc th { background-color : #FFF; border: 0; white-space: nowrap; text-align:left; vertical-align: top; padding: 2px; }
1728
#plainmarc td { border: 0; padding : 2px; vertical-align: top; }
1729
1730
#renewcontrols {
1731
     float: right;
1732
     font-size: 66%;
1733
}
1734
1735
#renewcontrols a {
1736
    background-repeat : no-repeat;
1737
    text-decoration:none;
1738
    padding : .1em .4em;
1739
    padding-left : 18px;
1740
}
1741
1742
#renewselected_link {
1743
    background-image : url("../images/sprite.png");
1744
    background-position : -5px -986px;
1745
    background-repeat: no-repeat;
1746
}
1747
1748
#renewall_link {
1749
    background-image : url("../images/sprite.png");
1750
    background-position : -8px -967px;
1751
    background-repeat: no-repeat;
1752
}
1753
1754
.authref {
1755
    text-indent: 2em;
1756
}
1757
1758
.authref .label {
1759
    font-style: italic;
1760
}
1761
1762
.authstanza {
1763
    margin-top: 1em;
1764
}
1765
1766
.authstanzaheading {
1767
    font-weight: bold;
1768
}
1769
.authorizedheading {
1770
    font-weight: bold;
1771
}
1772
.authstanza li {
1773
    margin-left: 0.5em;
1774
}
1775
.authres_notes, .authres_seealso, .authres_otherscript {
1776
  padding-top: .5em;
1777
}
1778
.authres_notes {
1779
  font-style: italic;
1780
}
1781
1782
#didyoumean {
1783
    background-color: #EEE;
1784
    border: 1px solid #E8E8E8;
1785
    box-sizing: border-box;
1786
    margin: .5em 1.5em;
1787
    text-align: left;
1788
    padding: 0.5em;
1789
    .border-radius-all(3px);
1790
1791
    &.dym-loaded {
1792
        border-color: #F4ECBE;
1793
        background-color: #FFFBEA;
1794
    }
1795
}
1796
1797
.suggestionlabel {
1798
    font-weight: bold;
1799
}
1800
1801
.searchsuggestion {
1802
    padding: 0.2em 0.5em;
1803
    display: inline-block;
1804
}
1805
1806
.authlink {
1807
    padding-left: 0.25em;
1808
}
1809
#hierarchies a {
1810
    font-weight: normal;
1811
    text-decoration: underline;
1812
    color: #069;
1813
}
1814
1815
#hierarchies a:hover {
1816
    color: #990033;
1817
}
1818
1819
#top-pages {
1820
    margin: 0 0 0.5em;
1821
}
1822
.dropdown-menu > li > a {
1823
    font-size: 90%;
1824
}
1825
a.listmenulink:link,
1826
a.listmenulink:visited {
1827
    color : #0076B2;
1828
    font-weight: bold;
1829
}
1830
a.listmenulink:hover,
1831
a.listmenulink:active {
1832
    color : #FFF;
1833
    font-weight: bold;
1834
}
1835
#cartDetails,
1836
#cartUpdate,
1837
#holdDetails,
1838
#listsDetails {
1839
    background-color : #FFF;
1840
//    border: 1px solid #739acf;
1841
    border: 1px solid rgba(0, 0, 0, 0.2);
1842
    border-radius: 6px 6px 6px 6px;
1843
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
1844
    color : black;
1845
    display : none;
1846
    font-size: 90%;
1847
    margin : 0;
1848
    padding : 8px 20px;
1849
    text-align : center;
1850
    width : 180px;
1851
    z-index: 2;
1852
}
1853
#cartmenulink {
1854
    white-space: nowrap;
1855
}
1856
1857
#search-facets,
1858
#menu {
1859
    border : 1px solid #D2D2CF;
1860
    .border-radius-all(7px);
1861
    ul {
1862
       margin : 0;
1863
        padding : .3em;
1864
    }
1865
    form {
1866
       margin : 0;
1867
    }
1868
    h4 {
1869
        font-size : 90%;
1870
        margin : 0 0 .6em 0;
1871
        text-align : center;
1872
        a {
1873
            background-color : #F2F2EF;
1874
            border-radius: 8px 8px 0 0;
1875
            border-bottom : 1px solid #D8D8D8;
1876
            display: block;
1877
            font-weight: bold;
1878
            padding : .7em .2em;
1879
            text-decoration: none;
1880
        }
1881
    }
1882
    li {
1883
        font-size: 90%;
1884
        font-weight : bold;
1885
        list-style-type : none;
1886
        li {
1887
            font-weight : normal;
1888
            font-size : 95%;
1889
            line-height: 125%;
1890
            margin-bottom : 2px;
1891
            padding : .1em .2em;
1892
        }
1893
        &.showmore {
1894
            a {
1895
                font-weight : bold;
1896
                text-indent : 1em;
1897
            }
1898
        }
1899
    }
1900
    a {
1901
        font-weight : normal;
1902
        text-decoration: underline;
1903
    }
1904
    .facet-count {
1905
        display: inline-block;
1906
    }
1907
1908
}
1909
1910
#menu {
1911
    font-size : 94%;
1912
    li {
1913
        list-style-type : none;
1914
        a {
1915
            background: #eeeeee;
1916
            text-decoration : none;
1917
            display : block;
1918
            border : 1px solid #D8D8D8;
1919
            border-radius: 5px 0 0 5px;
1920
            border-bottom-color:  #999;
1921
            font-size : 111%;
1922
            padding : .4em .6em;
1923
            margin : .4em 0;
1924
            margin-right: -1px;
1925
            &:hover {
1926
                background: #eaeef5;
1927
            }
1928
        }
1929
        &.active {
1930
            a {
1931
                background-color : #FFF;
1932
                background-image : none;
1933
                border-right-width: 0;
1934
                font-weight : bold;
1935
                &:hover {
1936
                    background-color : #fff;
1937
                }
1938
            }
1939
        }
1940
    }
1941
    h4 {
1942
        display: none;
1943
    }
1944
}
1945
1946
#addto {
1947
    max-width : 10em;
1948
}
1949
1950
/* Search results add to cart (lists disabled) */
1951
.addto a.addtocart {
1952
    background-image: url("../images/sprite.png"); /* Cart */
1953
    background-position: -5px -266px;
1954
    background-repeat: no-repeat;
1955
    text-decoration : none;
1956
    padding-left : 33px;
1957
}
1958
1959
.searchresults {
1960
    p {
1961
        margin: 0;
1962
        padding: 0 0 .6em 0;
1963
        &.details {
1964
           color : #979797;
1965
        }
1966
    }
1967
    a {
1968
        &.highlight_toggle {
1969
            background-image: url("../images/sprite.png"); /* Highlight */
1970
            background-position: -11px -841px;
1971
            background-repeat: no-repeat;
1972
            display: none;
1973
            font-weight: normal;
1974
            padding : 0 10px 0 21px;
1975
        }
1976
    }
1977
    .commentline {
1978
        background-color : rgb(255, 255, 204);
1979
        background-color : rgba(255, 255, 204, 0.4);
1980
        border : 1px solid #CCC;
1981
        display: inline-block;
1982
        .border-radius-all(3px);
1983
        .shadowed;
1984
        margin : .3em;
1985
        padding : .4em;
1986
    }
1987
    .commentline.yours {
1988
        background-color : rgb(239, 254, 213);
1989
        background-color : rgba(239, 254, 213, 0.4);
1990
    }
1991
}
1992
1993
.commentline .avatar {
1994
    float : right;
1995
    padding-left : .5em;
1996
}
1997
1998
/* style for search terms in catalogsearch */
1999
.term {
2000
    /* color : blue; */
2001
    color : #990000;
2002
    background-color : #FFFFCC;
2003
}
2004
2005
/* style for shelving location in catalogsearch */
2006
.shelvingloc {
2007
    display : block;
2008
    font-style : italic;
2009
}
2010
#CheckAll,
2011
#CheckNone,
2012
.CheckAll,
2013
.CheckNone {
2014
    font-weight : normal;
2015
    margin : 0 .5em;
2016
    text-decoration: underline;
2017
}
2018
2019
span.sep {
2020
    color: #888;
2021
    padding: 0 .2em 0 .5em;
2022
    text-shadow: 1px 1px 0 #FFF;
2023
}
2024
2025
/* style for PM-generated pagination bar */
2026
.pages {
2027
    margin: 20px 0;
2028
}
2029
.pages span:first-child,
2030
.pages a:first-child {
2031
    border-width: 1px 1px 1px 1px;
2032
    border-bottom-left-radius: 3px;
2033
    border-top-left-radius: 3px;
2034
}
2035
2036
.pages span:last-child,
2037
.pages a:last-child {
2038
    border-width: 1px 1px 1px 0;
2039
    border-bottom-right-radius: 3px;
2040
    border-top-right-radius: 3px;
2041
}
2042
2043
.pages .inactive,
2044
.pages .currentPage,
2045
.pages a {
2046
    -moz-border-bottom-colors: none;
2047
    -moz-border-left-colors: none;
2048
    -moz-border-right-colors: none;
2049
    -moz-border-top-colors: none;
2050
    background-color: #FFFFFF;
2051
    border-color: #DDDDDD;
2052
    border-image: none;
2053
    border-style: solid;
2054
    border-width: 1px 1px 1px 0;
2055
    float: left;
2056
    font-size: 11.9px;
2057
    line-height: 20px;
2058
    padding: 4px 12px;
2059
    text-decoration: none;
2060
}
2061
2062
.pages .inactive {
2063
    background-color: #F5F5F5;
2064
}
2065
2066
.pages a[rel='last'] {
2067
    border-bottom-right-radius: 3px;
2068
    border-top-right-radius: 3px;
2069
}
2070
2071
.hold-message {
2072
    background-color: #FFF0B1;
2073
    display: inline-block;
2074
    margin: 0.5em;
2075
    padding: 0.2em 0.5em;
2076
    .border-radius-all(3px);
2077
}
2078
.reserve_date,
2079
.expiration_date {
2080
    white-space: nowrap;
2081
}
2082
.close {
2083
    color: #0088CC;
2084
    position: inherit;
2085
    top: auto;
2086
    right : auto;
2087
    filter : none;
2088
    float : none;
2089
    font-size: inherit;
2090
    font-weight: normal;
2091
    opacity: inherit;
2092
    text-shadow: none;
2093
}
2094
2095
.close:hover {
2096
    color: #538200;
2097
    filter: inherit;
2098
    font-size: inherit;
2099
    opacity: inherit;
2100
}
2101
2102
/* Redefine a new style for Bootstrap's class "close" since we use that already */
2103
/* Use <a class="closebtn" href="#">&times;</a> */
2104
.alert .closebtn{position:relative;top:-2px;right:-21px;line-height:20px;}
2105
.modal-header .closebtn{margin-top:2px;}
2106
.closebtn{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.closebtn:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
2107
button.closebtn{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
2108
.btn-group label,
2109
.btn-group select {
2110
    font-size: 13px;
2111
}
2112
2113
.span2 select {
2114
    width: 100%;
2115
}
2116
2117
.popup .main {
2118
    font-size: 90%;
2119
    padding: 0 1em;
2120
}
2121
2122
.popup legend {
2123
    line-height: 1.5em;
2124
    margin-bottom : .5em;
2125
}
2126
2127
.item-status {
2128
    display: block;
2129
    font-size: 95%;
2130
    margin-bottom: .5em;
2131
}
2132
2133
.available {
2134
    color : #006600;
2135
}
2136
2137
.unavailable {
2138
    color: #990033;
2139
}
2140
2141
.waiting,.intransit,.notforloan,.checkedout,.lost,.notonhold {
2142
    display : block;
2143
}
2144
2145
.notforloan {
2146
    color : #900;
2147
}
2148
2149
.lost {
2150
    color : #666;
2151
}
2152
2153
.suggestion {
2154
    background-color : #EEEEEB;
2155
    border : 1px solid #DDDED3;
2156
    margin : 1em auto;
2157
    padding : .5em;
2158
    width : 35%;
2159
    .border-radius-all(3px);
2160
}
2161
2162
.librarypulldown .transl1 {
2163
    width : auto;
2164
}
2165
2166
.nolibrarypulldown {
2167
    width : 68%;
2168
}
2169
2170
.nolibrarypulldown .transl1 {
2171
    width : 87%;
2172
}
2173
2174
#opac-main-search {
2175
    select {
2176
        width : auto;
2177
        max-width: 12em;
2178
    }
2179
}
2180
2181
#logo {
2182
    background:transparent url("../images/koha-logo-navbar.png") no-repeat scroll 0%;
2183
    border: 0;
2184
    float : left !important;
2185
    margin:0;
2186
    padding:0;
2187
    width:100px;
2188
    a {
2189
        border:0;
2190
        cursor:pointer;
2191
        display:block;
2192
        height:0px !important;
2193
        margin:0;
2194
        overflow:hidden;
2195
        padding:40px 0 0;
2196
        text-decoration:none;
2197
        width:100px;
2198
    }
2199
}
2200
2201
#user-menu-trigger {
2202
    display: none;
2203
    .icon-user {
2204
        background: transparent url("../lib/bootstrap/img/glyphicons-halflings-white.png") no-repeat;
2205
        background-position: -168px 0;
2206
        background-repeat: no-repeat;
2207
        height: 14px;
2208
        line-height: 14px;
2209
        margin : 12px 0 0;
2210
        vertical-align: text-top;
2211
        width: 14px;
2212
    }
2213
    .caret {
2214
        border-bottom-color: #999999;
2215
        border-top-color: #999999;
2216
        margin-top: 18px;
2217
    }
2218
}
2219
2220
/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
2221
.floating {
2222
    -webkit-box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .4);
2223
    box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .4);
2224
    margin-top: 0;
2225
}
2226
2227
.tdlabel {
2228
    font-weight: bold;
2229
    display: none;
2230
}
2231
2232
td img {
2233
    max-width: none;
2234
}
2235
2236
#ulactioncontainer {
2237
    min-width: 16em;
2238
}
2239
2240
.notesrow {
2241
    label {
2242
        font-weight: bold;
2243
    }
2244
    span {
2245
        display: block;
2246
    }
2247
}
2248
2249
.thumbnail-shelfbrowser span {
2250
    margin: 0px auto;
2251
}
2252
2253
.dropdown-menu > li > a.menu-inactive:hover {
2254
    background : #FFF none;
2255
    color : #000;
2256
}
2257
2258
.table {
2259
    .sorting_asc {
2260
        padding-right: 19px;
2261
        background: url("../images/asc.gif") no-repeat scroll right center #ECEDE6;
2262
    }
2263
    .sorting_desc {
2264
        padding-right: 19px;
2265
        background: url("../images/desc.gif") no-repeat scroll right center #ECEDE6;
2266
    }
2267
    .sorting {
2268
        padding-right: 19px;
2269
        background: url("../images/ascdesc.gif") no-repeat scroll right center #ECEDE6;
2270
    }
2271
    .nosort,
2272
    .nosort.sorting_asc,
2273
    .nosort.sorting_desc,
2274
    .nosort.sorting {
2275
        padding-right: 19px;
2276
        background: #ECEDE6 none;
2277
    }
2278
    th,
2279
    td {
2280
        line-height: 135%;
2281
    }
2282
}
2283
.tags, .shelves {
2284
    ul {
2285
        display: inline;
2286
        list-style: none;
2287
        margin-left : 0;
2288
        li {
2289
            display: inline;
2290
        }
2291
    }
2292
}
2293
.coverimages {
2294
    float : right;
2295
}
2296
#i18nMenu {
2297
    margin-left : 1em;
2298
    li {
2299
        font-size : 85%;
2300
        li {
2301
            font-size: 100%;
2302
        }
2303
        li > a {
2304
            font-size : 100%;
2305
            &:hover {
2306
                color : #FFF;
2307
            }
2308
        }
2309
        a {
2310
            color : @links;
2311
        }
2312
    }
2313
    .dropdown-menu {
2314
        li {
2315
            p {
2316
                clear: both;
2317
                display: block;
2318
                font-weight: normal;
2319
                line-height: 20px;
2320
                padding: 3px 20px;
2321
                white-space: nowrap;
2322
            }
2323
        }
2324
    }
2325
}
2326
2327
#subjectsList,
2328
#authorSearch {
2329
    label {
2330
        display :inline;
2331
        vertical-align: middle;
2332
    }
2333
    ul {
2334
        border-bottom: 1px solid #EEE;
2335
        list-style-type: none;
2336
        margin: 0;
2337
        padding: .6em 0;
2338
    }
2339
    li {
2340
        list-style-type: none;
2341
        margin: 0;
2342
        padding: 0;
2343
    }
2344
}
2345
2346
2347
#overdrive-results, #openlibrary-results {
2348
    font-weight: bold;
2349
    padding-left: 1em;
2350
}
2351
2352
.throbber {
2353
    vertical-align: middle;
2354
}
2355
2356
#overdrive-results-list .star-rating-control {
2357
    display: block;
2358
    overflow: auto;
2359
}
2360
2361
#shelfbrowser {
2362
    table {
2363
        margin : 0;
2364
    }
2365
    table,
2366
    td,
2367
    th {
2368
        border : 0;
2369
        font-size : 90%;
2370
        text-align : center;
2371
    }
2372
    td,
2373
    th {
2374
        padding: 3px 5px;
2375
        width : 20%;
2376
    }
2377
    a {
2378
        display : block;
2379
        font-size : 110%;
2380
        font-weight : bold;
2381
        text-decoration : none;
2382
    }
2383
    #browser_next,
2384
    #browser_previous {
2385
        background-image : url("../images/sprite.png");
2386
        background-repeat: no-repeat;
2387
        width : 16px;
2388
        a {
2389
            cursor: pointer;
2390
            display : block;
2391
            height: 0 !important;
2392
            margin: 0;
2393
            overflow: hidden;
2394
            padding: 50px 0 0;
2395
            text-decoration: none;
2396
            width: 16px;
2397
        }
2398
    }
2399
    #browser_previous {
2400
        background-position: -9px -1007px;
2401
    }
2402
    #browser_next {
2403
        background-position: -9px -1057px;
2404
    }
2405
}
2406
2407
#holds {
2408
    margin : 0 auto;
2409
    max-width: 800px;
2410
}
2411
.holdrow {
2412
    clear : both;
2413
    padding: 0 1em 1em 1em;
2414
    border-bottom:1px solid #CCC;
2415
    margin-bottom:.5em;
2416
    fieldset {
2417
        border : 0;
2418
        margin : 0;
2419
        float: none;
2420
        .label {
2421
            font-size: 14px;
2422
        }
2423
    }
2424
    label {
2425
        display: inline;
2426
    }
2427
}
2428
.hold-options {
2429
    clear : both;
2430
}
2431
.toggle-hold-options {
2432
    background-color: #eee;
2433
    clear : both;
2434
    display : block;
2435
    font-weight : bold;
2436
    margin: 1em 0;
2437
    padding: .5em;
2438
}
2439
.copiesrow {
2440
    clear : both;
2441
}
2442
2443
#idreambooksreadometer {
2444
    float: right;
2445
}
2446
2447
a.idreambooksrating {
2448
    font-size: 30px;
2449
    color: #29ADE4;
2450
    padding-left: 85px;
2451
    line-height: 30px;
2452
    text-decoration: none;
2453
}
2454
2455
.idreambookslegend {
2456
    font-size: small;
2457
}
2458
2459
a.reviewlink,
2460
a.reviewlink:visited {
2461
    text-decoration: none;
2462
    color: black;
2463
    font-weight: normal;
2464
}
2465
2466
.idreambookssummary a {
2467
    color: #707070;
2468
    text-decoration: none;
2469
}
2470
2471
.idreambookssummary img,
2472
.idbresult img {
2473
    vertical-align: middle;
2474
}
2475
2476
.idbresult {
2477
    color: #29ADE4;
2478
    text-align: center;
2479
    margin: 0.5em;
2480
    padding: 0.5em;
2481
}
2482
2483
.idbresult a,
2484
.idbresult a:visited {
2485
    text-decoration: none;
2486
    color: #29ADE4;
2487
}
2488
2489
.idbresult img {
2490
    padding-right: 6px;
2491
}
2492
2493
.js-show {
2494
    display: none;
2495
}
2496
2497
.modal-nojs {
2498
    .modal-header,
2499
    .modal-footer {
2500
        display: none;
2501
    }
2502
}
2503
2504
.contents {
2505
    width: 75%;
2506
}
2507
2508
2509
.contentblock {
2510
    font-size : 95%;
2511
    line-height: 135%;
2512
    position: relative;
2513
    margin-left: 2em;
2514
}
2515
2516
.contents {
2517
    .t:first-child:before {
2518
        content: "→ ";
2519
    }
2520
    .t:before {
2521
        content: "\A → ";
2522
        white-space: pre;
2523
    }
2524
    .t {
2525
        font-weight: bold;
2526
        display: inline;
2527
    }
2528
    .r {
2529
        display: inline;
2530
    }
2531
}
2532
2533
.m880 {
2534
    display:block;
2535
    text-align:right;
2536
    float:right;
2537
    width:50%;
2538
    padding-left:20px;
2539
}
2540
2541
#memberentry-form input.error {
2542
    border-color: #c00;
2543
    box-shadow: 0 1px 1px #c00 inset, 0 0 8px #c00;
2544
    color: red; outline: 0 none;
2545
}
2546
2547
#memberentry-form input.error:focus {
2548
    border-color: #c00;
2549
    box-shadow: 0 1px 1px #c00 inset, 0 0 8px #c00;
2550
    color: red; outline: 0 none;
2551
}
2552
2553
#memberentry-form label.error {
2554
    color: #c00; float: none;
2555
    font-size: 90%;
2556
}
2557
2558
#illrequests {
2559
    .illrequest-actions {
2560
        .btn,
2561
        .cancel {
2562
            margin-right: 5px;
2563
        }
2564
        padding-top: 20px;
2565
        margin-bottom: 20px;
2566
    }
2567
    #illrequests-create-button {
2568
        margin-bottom: 20px;
2569
    }
2570
    .bg-info {
2571
        overflow: auto;
2572
        position: relative;
2573
    }
2574
    .bg-info {
2575
        #search-summary {
2576
            -webkit-transform: translateY(-50%);
2577
            -ms-transform: translateY(-50%);
2578
            -o-transform: translateY(-50%);
2579
            transform: translateY(-50%);
2580
            position: absolute;
2581
            top: 50%;
2582
        }
2583
2584
    }
2585
    #freeform-fields .custom-name {
2586
        float: left;
2587
        width: 8em;
2588
        margin-right: 1em;
2589
        text-align: right;
2590
    }
2591
    .dropdown:hover .dropdown-menu.nojs {
2592
        display: block;
2593
    }
2594
}
2595
2596
#dc_fieldset {
2597
    border: 1px solid #dddddd;
2598
    border-width: 1px;
2599
    padding: 5px;
2600
    border-radius: 10px
2601
}
2602
2603
.label_dc{
2604
    display: inline;
2605
    padding: 0px;
2606
    margin: 0px;
2607
    cursor: pointer;
2608
}
2609
2610
.btn-danger {
2611
    color: white !important;
2612
}
2613
2614
.count_label {
2615
    @base: #369;
2616
    background-color: @base;
2617
    border-radius: 5px;
2618
    color: #FFF;
2619
    display: inline-block;
2620
    font-weight: bold;
2621
    min-width: 1.5em;
2622
    padding: .2em;
2623
    text-align: center;
2624
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
2625
2626
    &:hover {
2627
        background-color: lighten( @base, 20% );
2628
    }
2629
}
2630
2631
.user_checkouts_count {
2632
2633
}
2634
2635
.user_overdues_count,
2636
.user_fines_count {
2637
    background-color: #990000;
2638
    &:hover {
2639
        background-color: lighten( #990000, 10% );
2640
    }
2641
}
2642
2643
.user_holds_pending_count {
2644
2645
}
2646
2647
.user_holds_waiting_count {
2648
    background-color: #538200;
2649
    &:hover {
2650
        background-color: lighten( #538200, 10% );
2651
    }
2652
}
2653
2654
#user_summary {
2655
    border: 1px solid #EAEAE6;
2656
    border-radius: 7px;
2657
    margin-bottom: 1em;
2658
    padding-bottom: .5em;
2659
2660
    h3 {
2661
        background-color: #EAEAE6;
2662
        border-top-left-radius: 6px;
2663
        border-top-right-radius: 6px;
2664
        box-shadow: 0 1px 1px 0 rgba(0,0,0,0.2);
2665
        margin-top: 0;
2666
        padding: .2em 0;
2667
        text-align: center;
2668
    }
2669
2670
    ul {
2671
        list-style-type: none;
2672
        margin: 0 0 .2em 0;
2673
2674
        a {
2675
            display: block;
2676
            font-weight: bold;
2677
            padding: .2em 1em;
2678
        }
2679
    }
2680
}
2681
2682
2683
2684
@import "responsive.less";
(-)a/opac/opac-cmspages.pl (+52 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Copyright Halland County Library 2015
6
#
7
# Koha is free software; you can redistribute it and/or modify it
8
# under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# Koha is distributed in the hope that it will be useful, but
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
use Modern::Perl;
21
use CGI;
22
use C4::Auth;
23
use C4::Output;
24
use C4::Languages qw( getTranslatedLanguages accept_language );
25
use Koha::CmsPages;
26
27
my $input  = new CGI;
28
my $id     = scalar $input->param( 'id' )     // '';
29
my $lang   = scalar $input->param( 'lang' )   // '';
30
my $branch = scalar $input->param( 'branch' ) // '';
31
32
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
33
    {
34
        template_name   => "opac-cmspages.tt",
35
        type            => "opac",
36
        query           => $input,
37
        authnotrequired => ( C4::Context->preference( "OpacPublic" ) ? 1 : 0 ),
38
        flagsrequired   => { borrow => 1 },
39
    }
40
);
41
42
my ( $theme, $news_lang, $availablethemes ) = C4::Templates::themelanguage(
43
    C4::Context->config( 'opachtdocs'), 'opac-cmspages.tt', 'opac', $input );
44
45
my ($cms_nav_top, $cms_nav_left, $cms_data) = Koha::CmsPages->page( $id );
46
$template->param(
47
	cms_page     => $cms_data,
48
    cms_nav_top  => $cms_nav_top,
49
    cms_nav_left => $cms_nav_left,
50
);
51
52
output_html_with_http_headers $input, $cookie, $template->output;
(-)a/opac/opac-main.pl (-1 / +5 lines)
Lines 30-35 use C4::Overdues; Link Here
30
use Koha::Checkouts;
30
use Koha::Checkouts;
31
use Koha::Holds;
31
use Koha::Holds;
32
use Koha::News;
32
use Koha::News;
33
use Koha::CmsPages qw( list );
33
34
34
my $input = new CGI;
35
my $input = new CGI;
35
my $dbh   = C4::Context->dbh;
36
my $dbh   = C4::Context->dbh;
Lines 110-116 $template->param( Link Here
110
    daily_quote         => $quote,
111
    daily_quote         => $quote,
111
);
112
);
112
113
113
# If GoogleIndicTransliteration system preference is On Set parameter to load Google's javascript in OPAC search screens
114
$template->param(
115
    cms_nav_top => Koha::CmsPages->child_links( undef ),
116
);
117
114
if (C4::Context->preference('GoogleIndicTransliteration')) {
118
if (C4::Context->preference('GoogleIndicTransliteration')) {
115
        $template->param('GoogleIndicTransliteration' => 1);
119
        $template->param('GoogleIndicTransliteration' => 1);
116
}
120
}
(-)a/t/Pages.t (+31 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
use Carp;
5
use Test::More tests => 2;
6
use Data::Dumper::Concise;
7
8
BEGIN {
9
    use_ok('C4::Content');
10
}
11
12
my $src = [
13
    { id => '1', parent => '' },
14
    { id => '2', parent => '1' },
15
    { id => '3', parent => '1' },
16
    { id => '4', parent => '2' },
17
    { id => '5', parent => '2' },
18
];
19
20
my $expected = [
21
    { id => '1', children => [
22
        { id => '2', children => [
23
            { id => '4', children => [] },
24
            { id => '5', children => [] } ]
25
        },
26
        { id => '3', children => [] } ]
27
    },
28
];
29
30
my $output = C4::Content::_SQLToPerl($src);
31
is_deeply($output, $expected);
(-)a/t/db_dependent/Pages.t (+93 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
# Copyright Halland County Library 2015.
5
#
6
# Koha is free software; you can redistribute it and/or modify it
7
# under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# Koha is distributed in the hope that it will be useful, but
12
# WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
19
use Modern::Perl;
20
21
use Test::More tests => 2;
22
use Test::Warn;
23
use Data::Dumper::Concise;
24
25
use C4::Context;
26
use Koha::Database;
27
use t::lib::TestBuilder;
28
29
BEGIN {
30
    use_ok('Koha::Objects');
31
    use_ok('Koha::CmsPages');
32
}
33
34
my $builder = t::lib::TestBuilder->new();
35
36
# Start transaction
37
my $dbh = C4::Context->dbh;
38
$dbh->{ AutoCommit } = 0;
39
$dbh->{ RaiseError } = 1;
40
$dbh->do( 'DELETE FROM items' );
41
$dbh->do( 'DELETE FROM borrowers' );
42
$dbh->do( 'DELETE FROM branches' );
43
$dbh->do( 'DELETE FROM cms_pages' );
44
45
my $branchcode = $builder->build({ source => 'Branch' });
46
47
my $page10 = $builder->build({
48
	source => 'CmsPage',
49
	value  => {
50
		parent     => undef,
51
		title_link => 'page 10',
52
		title      => 'full page 10',
53
		published  => 1,
54
		sortorder  => 1,
55
	}
56
});
57
my $page11 = $builder->build({
58
	source => 'CmsPage',
59
	value  => {
60
		parent     => $page10->{'id'},
61
		title_link => 'subpage 11',
62
		title      => 'full subpage 11',
63
		published  => 1,
64
		sortorder  => 0,
65
	}
66
});
67
my $page12 = $builder->build({
68
	source => 'CmsPage',
69
	value  => {
70
		parent     => $page10->{'id'},
71
		title_link => 'subpage 12',
72
		title      => 'full subpage 12',
73
		published  => 1,
74
		sortorder  => 1,
75
	}
76
});
77
my $page20 = $builder->build({
78
	source => 'CmsPage',
79
	value  => {
80
		parent     => undef,
81
		title_link => 'page 20',
82
		title      => 'full page 20',
83
		published  => 0,
84
		sortorder  => 2,
85
	}
86
});
87
88
my $result = Koha::CmsPages->child_links( undef );
89
is_deeply( $result, [ $page10, $page20 ]);
90
91
$dbh->rollback();
92
93
1;
(-)a/tools/cmspages.pl (-1 / +90 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Script to manage CMS pages.
6
# Copyright (C) 2015 Halland County Library
7
#
8
# Koha is free software; you can redistribute it and/or modify it
9
# under the terms of the GNU General Public License as published by
10
# the Free Software Foundation; either version 3 of the License, or
11
# (at your option) any later version.
12
#
13
# Koha is distributed in the hope that it will be useful, but
14
# WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
17
#
18
# You should have received a copy of the GNU General Public License
19
# along with Koha; if not, see <http://www.gnu.org/licenses>.
20
21
use Modern::Perl;
22
use CGI qw( -utf8 );
23
use C4::Auth;
24
use C4::Output;
25
use C4::Languages qw( getTranslatedLanguages );
26
use Koha::Database;
27
use Koha::CmsPages;
28
29
my $link_self = '/cgi-bin/koha/tools/cmspages.pl';
30
31
my $cgi    = new CGI;
32
my $op     = scalar $cgi->param( 'op' )     // '';
33
my $id     = scalar $cgi->param( 'id' )     // '';
34
my $lang   = scalar $cgi->param( 'lang' )   // '';
35
my $branch = scalar $cgi->param( 'branch' ) // '';
36
my $disp   = scalar $cgi->param( 'disp' )   // '';
37
38
my ( $template, $borrowernumber, $cookie ) = get_template_and_user({
39
    template_name   => 'tools/cmspages.tt',
40
    query           => $cgi,
41
    type            => 'intranet',
42
    authnotrequired => 0,
43
    flagsrequired   => { tools => 'edit_pages' },
44
});
45
46
# Filter selection
47
$template->param(
48
    lang   => $lang,
49
    branch => $branch,
50
    disp   => $disp
51
);
52
53
my $schema = Koha::Database->new->schema;
54
my @branches = $schema->resultset( 'Branch' )->all;
55
$template->param( branch_list => @branches );
56
57
my $lang_list = getTranslatedLanguages;
58
59
# List all pages, if id is set generate parent page list and data.
60
my ( $page_list, $parent_list, $page_data ) = Koha::CmsPages->list( $id );
61
62
$template->param(
63
    page_list_count => scalar $page_list,
64
    page_list       => $page_list,
65
    parent_list     => $parent_list,
66
    data            => $page_data,
67
    lang_list       => $lang_list
68
);
69
70
# Used for adding or editing a page.
71
if ( $op eq 'form' ) {
72
    $template->param(
73
        form => 1,
74
        id   => $id,
75
        op   => 'add'
76
    );
77
}
78
79
if ( $op eq 'add' ) {
80
    Koha::CmsPages->add( $cgi );
81
    print $cgi->redirect( $link_self );
82
83
} elsif ( $op eq 'del' ) {
84
    # param => multi_param; no list-ctx warnings
85
    Koha::CmsPages->remove( $cgi->multi_param( 'ids' ) );
86
    print $cgi->redirect( $link_self );
87
}
88
89
$template->param( link_self => $link_self );
90
output_html_with_http_headers $cgi, $cookie, $template->output;

Return to bug 15326