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 (+24 lines)
Lines 5356-5361 CREATE TABLE `zebraqueue` ( Link Here
5356
  KEY `zebraqueue_lookup` (`server`,`biblio_auth_number`,`operation`,`done`)
5356
  KEY `zebraqueue_lookup` (`server`,`biblio_auth_number`,`operation`,`done`)
5357
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
5357
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
5358
/*!40101 SET character_set_client = @saved_cs_client */;
5358
/*!40101 SET character_set_client = @saved_cs_client */;
5359
5360
--
5361
-- Table structure for table 'cms_pages', used for CMS functionality.
5362
--
5363
5364
DROP TABLE IF EXISTS `cms_pages`;
5365
 CREATE TABLE `cms_pages` (
5366
  `id` int(6) NOT NULL AUTO_INCREMENT,
5367
  `parent` int(6) DEFAULT NULL,
5368
  `branchcode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
5369
  `lang` varchar(25) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
5370
  `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
5371
  `title_link` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
5372
  `sortorder` int(3) NOT NULL DEFAULT 0,
5373
  `location` tinyint(1) DEFAULT NULL,
5374
  `publish` tinyint(1) NOT NULL DEFAULT 0,
5375
  `content` text COLLATE utf8_unicode_ci,
5376
  PRIMARY KEY (`id`),
5377
  INDEX `parent_index` (`parent`),
5378
  INDEX `lang_index` (`lang`),
5379
  INDEX `branchcode_index` (`branchcode`),
5380
  CONSTRAINT `pages_branchcode_ibfk` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
5381
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8mb4_unicode_ci;
5382
5359
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
5383
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
5360
5384
5361
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
5385
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
(-)a/installer/data/mysql/mandatory/userpermissions.sql (+1 lines)
Lines 107-112 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
107
   (13, 'access_files', 'Access to the files stored on the server'),
107
   (13, 'access_files', 'Access to the files stored on the server'),
108
   (13, 'upload_general_files', 'Upload any file'),
108
   (13, 'upload_general_files', 'Upload any file'),
109
   (13, 'upload_manage', 'Manage uploaded files'),
109
   (13, 'upload_manage', 'Manage uploaded files'),
110
   (13, 'edit_pages', 'Create, edit and delete CMS pages for OPAC and staff interfaces'),
110
   (15, 'check_expiration', 'Check the expiration of a serial'),
111
   (15, 'check_expiration', 'Check the expiration of a serial'),
111
   (15, 'claim_serials', 'Claim missing serials'),
112
   (15, 'claim_serials', 'Claim missing serials'),
112
   (15, 'create_subscription', 'Create a new subscription'),
113
   (15, 'create_subscription', 'Create a new subscription'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc (+5 lines)
Lines 455-460 Link Here
455
            Write additional contents for the OPAC and staff interfaces (news and HTML customizations)
455
            Write additional contents for the OPAC and staff interfaces (news and HTML customizations)
456
        </span>
456
        </span>
457
        <span class="permissioncode">([% name | html %])</span>
457
        <span class="permissioncode">([% name | html %])</span>
458
    [%- CASE 'edit_pages' -%]
459
        <span class="sub_permission edit_pages_subpermission">
460
            Create, edit and delete CMS pages for OPAC and staff interfaces
461
        </span>
462
        <span class="permissioncode">([% name | html %])</span>
458
    [%- CASE 'edit_notice_status_triggers' -%]
463
    [%- CASE 'edit_notice_status_triggers' -%]
459
        <span class="sub_permission edit_notice_status_triggers_subpermission">
464
        <span class="sub_permission edit_notice_status_triggers_subpermission">
460
            Set notice/status triggers for overdue items
465
            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 122-127 Link Here
122
    <dd>Write HTML customizations</dd>
122
    <dd>Write HTML customizations</dd>
123
    [% END %]
123
    [% END %]
124
124
125
    [% IF ( CAN_user_tools_edit_pages ) %]
126
    <dt><a href="/cgi-bin/koha/tools/cmspages.pl">Pages</a></dt>
127
    <dd>Create and edit additional content pages</dd>
128
    [% END %]
129
125
    [% IF ( CAN_user_tools_schedule_tasks ) %]
130
    [% IF ( CAN_user_tools_schedule_tasks ) %]
126
    <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
131
    <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
127
    <dd>Schedule tasks to run</dd>
132
    <dd>Schedule tasks to run</dd>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc (+11 lines)
Lines 11-16 Link Here
11
[% BLOCK koha_news_block %]
11
[% BLOCK koha_news_block %]
12
    [% IF ( news.content && news.content.count > 0 ) %]
12
    [% IF ( news.content && news.content.count > 0 ) %]
13
        <div id="[% news.location | html %]">
13
        <div id="[% news.location | html %]">
14
15
            [% IF news.location == 'opacnav' %]
16
                [% IF ( cms_nav_left ) %]
17
                    <ul id="cms_nav_left">
18
                        [% WHILE ( item = cms_nav_left.next ) %]
19
                            <li><a href="/cgi-bin/koha/opac-cmspages.pl?id=[% item.id %]">[% item.title_link | html %]</a></li>
20
                        [% END %]
21
                    </ul>
22
                [% END %]
23
            [% END %]
24
14
            [% FOREACH n IN news.content %]
25
            [% FOREACH n IN news.content %]
15
                <div class="[% n.lang | html %]_item">
26
                <div class="[% n.lang | html %]_item">
16
                    [% IF ( n.title && news.blocktitle ) %]
27
                    [% IF ( n.title && news.blocktitle ) %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc (+16 lines)
Lines 355-360 Link Here
355
                    [% Koha.Preference('OpacMoreSearches') | $raw %]
355
                    [% Koha.Preference('OpacMoreSearches') | $raw %]
356
                </ul> <!-- /.nav#moresearches -->
356
                </ul> <!-- /.nav#moresearches -->
357
            </div> <!-- /.row -->
357
            </div> <!-- /.row -->
358
359
            <div id="cms_nav_top" class="row">
360
                [% IF ( cms_nav_top ) %]
361
                    <ul>
362
                        [% WHILE ( cms_item = cms_nav_top.next ) %]
363
                            [% IF ( cms_item.id == cms_page.id ) %]
364
                                <li class="cms_nav_top_active">
365
                            [% ELSE %]
366
                                <li>
367
                            [% END %]
368
                            <a href="/cgi-bin/koha/opac-cmspages.pl?id=[% cms_item.id %]">[% cms_item.title_link %]</a></li>
369
                        [% END %]
370
                    </ul>
371
                [% END %]
372
            </div> <!-- /.row -->
373
358
        </div> <!-- /.container-fluid -->
374
        </div> <!-- /.container-fluid -->
359
    [% END # / OpacPublic %]
375
    [% END # / OpacPublic %]
360
376
(-)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 (+5 lines)
Lines 29-34 use Koha::Checkouts; Link Here
29
use Koha::Holds;
29
use Koha::Holds;
30
use Koha::AdditionalContents;
30
use Koha::AdditionalContents;
31
use Koha::Patron::Messages;
31
use Koha::Patron::Messages;
32
use Koha::CmsPages qw( list );
32
33
33
my $input = CGI->new;
34
my $input = CGI->new;
34
my $dbh   = C4::Context->dbh;
35
my $dbh   = C4::Context->dbh;
Lines 114-117 $template->param( Link Here
114
    daily_quote         => Koha::Quotes->get_daily_quote(),
115
    daily_quote         => Koha::Quotes->get_daily_quote(),
115
);
116
);
116
117
118
$template->param(
119
    cms_nav_top => Koha::CmsPages->child_links( undef ),
120
);
121
117
output_html_with_http_headers $input, $cookie, $template->output;
122
output_html_with_http_headers $input, $cookie, $template->output;
(-)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