Taiga #315 - Move 'Extending Koha' into its own chapter
authorKatrin Fischer <katrin.fischer.83@web.de>
Sat, 5 May 2018 21:31:53 +0000 (23:31 +0200)
committerKatrin Fischer <katrin.fischer.83@web.de>
Sat, 5 May 2018 21:58:01 +0000 (23:58 +0200)
Moves 'Extending Koha' from miscellaneous into its own
chapter.

Also moves 'Using Koha as a Content Management System (CMS)'
into this new chapter.

source/extending_koha.rst [new file with mode: 0644]
source/index.rst
source/miscellaneous.rst

diff --git a/source/extending_koha.rst b/source/extending_koha.rst
new file mode 100644 (file)
index 0000000..9099d44
--- /dev/null
@@ -0,0 +1,601 @@
+.. include:: images.rst
+
+Extending Koha
+==================
+
+This chapter shows how you can add various enhancements and customizations
+in and around Koha by using mostly the existing configuration options.
+
+.. _amazon-lookup-script-for-koha-libraries-label:
+
+Amazon lookup script for Koha libraries
+--------------------------------------------------------
+
+We order most of our materials from Amazon, so I've been looking for a
+convenient way to tell if a book under consideration is in our catalog
+already.
+
+Greasemonkey & a custom user script fit the bill nicely:
+
+-  https://addons.mozilla.org/en-US/firefox/addon/748
+
+-  http://userscripts.org/scripts/show/56847
+
+A few caveats:
+
+-  Like most scripts, this one was designed to work with Firefox; I
+   haven't explored getting it to work with other browsers.
+
+-  I'm not a JavaScript programmer -- this was adapted from others'
+   work. Just a few lines would have to be changed to get the script to
+   work with your catalog.
+
+-  It depends on the existence of ISBN for the item in question, so
+   movies, older books, etc. would not work.
+
+Others have added all sorts of bells & whistles: XISBN lookups to search
+for related titles, custom messages based on the status of items (on
+order, on hold, etc.), ... just search the UserScripts site for Amazon +
+library. For a later date!
+
+.. _keyword-clouds-label:
+
+Keyword Clouds
+-----------------------------------------
+
+In addition to the traditional tag cloud available in Koha, there is a
+way to generate clouds for popular subjects within Koha.
+
+The :ref:`Author/Subject Cloud cron job <subject/author-clouds-label>` is used to help
+with this process. This cron job sends its output to files.
+
+-  /home/koha/mylibrary/koharoot/koha-tmpl/cloud-author.html
+
+-  /home/koha/yourlibrary/koharoot/koha-tmpl/cloud-subject.html
+
+This means that you can produce clouds for authors, collective author,
+all kind of subjects, classifications, etc. And since it works on zebra
+indexes, it is quick, even on large DBs. Tags clouds are sent to files.
+It's up to library webmaster to deal with those files in order to
+include them in :ref:`OPACMainUserBlock <opacmainuserblock-label>`, or include
+them into their library CMS.
+
+Some libraries even send the file into a Samba shared folder where
+webmaster take them, eventually clean them a little bit before
+integrating them into navigation widgets or pages.
+
+.. _newest-titles-pulldown-label:
+
+Newest Titles Pulldown
+---------------------------------------------
+
+Often we want to add a way for our patrons to do searches for the newest
+items. In this example I'll show you how to create a pull down menu of
+the newest items by item type. These tips will work (with a couple
+changes) for collection codes or shelving locations as well.
+
+First, it's important to note that every link in Koha is a permanent
+link. This means if I do a search for everything of a specific item type
+sorted by the acquisitions date and bookmark that URL, whenever I click
+it I'll see the newest items of that type on the first few pages of the
+results.
+
+I took this knowledge and wrote a form takes this functionality in to
+consideration. It basically just does a search of your Koha catalog for
+a specific item type and sorts the results by acquisitions date.
+
+The first thing I did was write a MySQL statement to generate a list of
+item types for me - why copy and paste when you can use the power of
+MySQL?
+
+::
+
+    select concat('<option value=\"mc-itype:', itemtype, '\">',description,'</option>') from itemtypes
+
+The above looks at the itemtypes table and slaps the necessary HTML
+around each item type for me. I then exported that to CSV and opened it
+in my text editor and added the other parts of the form.
+
+::
+
+    <p><strong>New Items</strong></p>
+    <p><form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl">
+    <input name="idx" value="kw" type="hidden">
+    <input name="sort_by" value="acqdate_dsc" type="hidden">
+    <input name="do" value="OK" type="hidden">
+    <select name="limit" onchange="this.form.submit()">
+    <option>-- Please choose --</option>
+    <option value="mc-itype:BOOK">Book</option>
+    <option value="mc-itype:BOOKCD">Book on CD</option>
+    <option value="mc-itype:DVD">DVD</option>
+    <option value="mc-itype:LRG_PRINT">Large print book</option>
+    <option value="mc-itype:MAGAZINE">Magazine</option>
+    <option value="mc-itype:NEWSPAPER">Newspaper</option>
+    <option value="mc-itype:VIDEO">Videocassette</option>
+    </select>
+    </form>
+    </p>
+
+Now, what does all of that mean? The important bits are these:
+
+First the starting of the form.
+
+::
+
+    <p><form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl">
+
+This tells the browser to take any value selected and put it at the end
+of this http://YOURSITE/cgi-bin/koha/opac-search.pl. If you want to
+embed this form on your library website (and not on your OPAC) you can
+put the full OPAC URL in there.
+
+Next, there is a hidden value that is telling the search to sort by
+acquisitions date descending (newest items at the top):
+
+::
+
+    <input name="sort_by" value="acqdate_dsc" type="hidden">
+
+And finally you have an option for each item type you want people to
+search.
+
+::
+
+    <option value="mc-itype:BOOK">Book</option>
+
+These options each include the string "mc-itype:" which tells Koha to do
+an item type search.
+
+Once you have all of that in place you can copy and paste the form to
+somewhere on your OPAC. The `Farmington Public Libraries
+OPAC <http://catalog.farmingtonlibraries.org>`__ has a few examples of
+this on the left.
+
+.. _new-titles-slider-for-opac-label:
+
+New titles slider for OPAC
+--------------------------
+
+Often times libraries will want to add a flowing widget with new
+materials at the library to their main public catalog page. To do this
+you can use a widget from any number of services (usually for a cost) or
+you can `enable plugins <#pluginsystem>`__ in Koha and use the `Cover
+Flow
+plugin <http://git.bywatersolutions.com/koha-plugins.git/shortlog/refs/heads/cover_flow>`__
+which is based on the
+`Flipster <https://github.com/drien/jquery-flipster>`__, a responsive
+jQuery coverflow plugin.
+
+Once the plugin is installed, the steps to get your coverflow to show up
+are as follows:
+
+First, you need to create one or more public reports for your coverflow
+widget or widgets to be based on. This is how the plugin knows what the
+content of your widget should contain. Each report needs only three
+columns; title, biblionumber, and isbn. It is important that you have a
+good and valid isbn, as that is the datum used to actually fetch the
+cover. In the iteration of the plugin, we are using Amazon cover images,
+but I believe in the end I will make the cover image fetcher
+configurable so we can use any data source for cover image fetching.
+
+Second, we need to configure the plugin. The plugin configuration is a
+single text area that uses YAML ( actually, it’s JSON, whcih is a subset
+of YAML ) to store the configuration options. In this example it looks
+like this:
+
+::
+
+    - id: 42
+      selector: #coverflow
+      options:
+      style: coverflow
+
+In this example, we are telling the plugin to use the report with id 42,
+and use it to create a coverflow widget to replace the HTML element with
+the id “coverflow”. The options list is passed directly to Flipster, so
+any options supported by Flipster can be set from the plugin
+configuration! In fact, in addition to the traditional coverflow,
+Flipster has a “carousel” mode which is a much more compact version of
+the coverflow. You can also configure which cover the widget will start
+on, among other options.
+
+At the time the plugins options are saved or updated, the plugin will
+then generate some minified JavaScript code that is automatically stored
+in the Koha system preference OPACUserJS. Here is an example of the
+output:
+
+::
+
+    /* JS for Koha CoverFlow Plugin
+     This JS was added automatically by installing the CoverFlow plugin
+     Please do not modify */$(document).ready(function(){$.getScript("/plugin/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/jquery-flipster/src/js/jquery.flipster.min.js",function(data,textStatus,jqxhr){$("head").append("<link id='flipster-css' href='/plugin/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/jquery-flipster/src/css/jquery.flipster.min.css' type='text/css' rel='stylesheet' />");$('#coverflow').load("/coverflow.pl?id=42",function(){var opt={'items':'.item','minfactor':15,'distribution':1.5,'scalethreshold':0,'staticbelowthreshold':false,'titleclass':'itemTitle','selectedclass':'selectedItem','scrollactive':true,'step':{'limit':4,'width':10,'scale':true}};$('#coverflow').flipster({style:'coverflow',});});});});
+    /* End of JS for Koha CoverFlow Plugin */
+
+Why do this? For speed! Rather than regenerating this code each and
+every time the page loads, we can generate it once, and use it over and
+over again.
+
+If you inspect the code closely, you’ll notice it references a script
+“coverflow.pl”. This is a script that is included with the coverflow
+plugin. Since we need to access this from the OPAC ( and we don’t want
+to set off any XSS attack alarms ), we need to modify the web server
+configuration for the public catalog and add the followup to it:
+
+::
+
+    ScriptAlias /coverflow.pl "/var/lib/koha/mykoha/plugins/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/coverflow.pl"
+
+This line gives us access to the coverflow.pl script from the OPAC. This
+script retrieves the report data and passes it back to the public
+catalog for creating the coverflow widget. Koha::Cache is supported in
+order to make the widget load as quickly as possible!
+
+The final step is to put your selector element somewhere in your public
+catalog. In this example, I put the following in the system preference
+OpacMainUserBlock:
+
+::
+
+    <span id="coverflow">Loading...</span>
+
+Once that is in place, you need only refresh your OPAC page, and there
+you have it, your very own catalog coverflow widget! Not only do these
+coverflows look great on a computer screen, but they look great on
+mobile platforms as well, and are even touch responsive!
+
+|image1316|
+
+.. _cataloging-and-searching-by-color-label:
+
+Cataloging and Searching by Color
+----------------------------------------------------
+
+One of the icon sets installed in Koha includes a series of colors. This
+set can be used to catalog and search by color if you'd like. This guide
+will walk you use changing collection code to color in Koha so that you
+can do this.
+
+The following SQL could be used to add these colors to the CCODE
+authorized value category in a batch. If you wanted to use these colors
+for another authorized value you'd have to edit this to use that
+category:
+
+::
+
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','000000','Black','','colors/000000.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','66cc66','Bright Green','','colors/66cc66.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','99cc33','Olive','','colors/99cc33.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','3333cc','Dark Blue','','colors/3333cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','006600' ,'Dark Green','','colors/006600.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','6600cc','Plum','','colors/6600cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','6666cc','Purple','','colors/6666cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','9999cc','Light Purple','','colors/9999cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','660000' ,'Burgundy','','colors/660000.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','663333' ,'Brown','','colors/663333.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','990000' ,'Red','','colors/990000.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','996633' ,'Tan','','colors/996633.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','999999' ,'Gray','','colors/999999.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cc66cc','Pink','','colors/cc66cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cc99cc','Bubble Gum','','colors/cc99cc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cc3333' ,'Orange','','colors/cc3333.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cc6666' ,'Peach','','colors/cc6666.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cc9999' ,'Rose','','colors/cc9999.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','cccc00' ,'Gold','','colors/cccc00.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','ffff33' ,'Yellow','','colors/ffff33.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','ffffcc','Cream','','colors/ffffcc.png');
+        insert into authorised_values (category, authorised_value, lib,
+         lib_opac, imageurl) values ('CCODE','ffffff','White','','colors/ffffff.png');
+
+If you would like to choose the colors manually you can do that via the
+:ref:`Authorized Values` administration area.
+
+|image1118|
+
+Next you'll want to :ref:`update the frameworks <marc-bibliographic-frameworks-label>` so
+that the 952$8 (if you're using collection code) label to says Color.
+
+Once you have that in place you can start to catalog items by color.
+
+Finally you'll want to add the following JQuery to your preferences so
+that it will relabel 'Collection' to 'Color'
+
+:ref:`IntranetUserJS`
+
+::
+
+    $(document).ready(function(){
+        $("#advsearch-tab-ccode a:contains('Collection')").text("Color");
+        $("#holdings th:contains('Collection')").text("Color");
+        });
+
+:ref:`OPACUserJS`
+
+::
+
+    $(document).ready(function(){
+        $("#advsearch-tab-ccode a:contains('Collection')").text("Color");
+        $('#item_ccode').text("Color");
+        });
+
+
+.. _koha-search-on-your-site-label:
+
+Using Koha as a Content Management System (CMS)
+-----------------------------------------------
+
+.. _setup-label:
+
+Setup
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+These are instructions for taking a default install of Koha and allowing
+it to function as a little content management system. This will allow a
+library to publish an arbitrary number of pages based on a template.
+This example uses the template for the main opac page, but you could
+just as well use any template you wish with a bit more editing. This may
+be appropriate if you have a small library, want to allow librarians to
+easily add pages, and do not want to support a complete CMS.
+
+-  Copy /usr/share/koha/opac/cgi-bin/opac/opac-main.pl to
+   /usr/share/koha/opac/cgi-bin/opac/pages.pl (in the same directory)
+
+-  Edit pages.pl in an editor
+
+-  At approximately line 33 change this code:
+
+   ::
+
+       template_name  => "opac-main.tt",
+
+-  To this code:
+
+   ::
+
+       template_name  => "pages.tt",
+
+-  At approximately line 62 after this code:
+
+   ::
+
+       $template->param(
+                  koha_news       => $all_koha_news,
+                  koha_news_count => $koha_news_count,
+                  display_daily_quote => C4::Context->preference('QuoteOfTheDay'),
+                  daily_quote         => $quote,
+                  );
+
+-  Add these lines:
+
+   ::
+
+               my $page = "page_" . $input->param('p');          # go for "p" value in URL and do the concatenation
+               my $preference = C4::Context->preference($page);  # Go for preference
+               $template->{VARS}->{'page_test'} = $preference;   # pass variable to template pages.tt
+
+-  Note pages.pl file must have Webserver user execution permissions,
+   you can use `chmod <http://en.wikipedia.org/wiki/Chmod>`__ command if
+   you are actually logged in as such user:
+
+   ::
+
+               $chmod 755 pages.pl
+
+-  In the browser go to Home > Administration > System Preferences >
+   Local Use and add a New Preference called "page\_test"
+
+-  Fill it out as so
+
+   -  Explanation: test page for pages tiny cms
+
+   -  Variable: page\_test
+
+   -  Value: Lorem ipsum
+
+   -  Click the TextArea link (or enter "TextArea" into the input field
+      below it)
+
+   -  variable options (last field): 80\|50
+
+-  In a browser go to http://youraddress/cgi-bin/koha/pages.pl?p=test
+   The page should come up with the words "Lorem ipsum" in the main
+   content area of the page. (replace "youraddress" with localhost,
+   127.0.0.1, or your domain name depending on how you have Apache set
+   up.)
+
+-  To add more pages simply create a system preference where the title
+   begins with "page\_" followed by any arbitrary letters. You can add
+   any markup you want as the value of the field. Reference the new page
+   by changing the value of the "p" parameter in the URL.
+
+To learn more visit the Koha wiki page on this topic:
+http://wiki.koha-community.org/wiki/Koha_as_a_CMS
+
+.. _editing-the-pages-template-label:
+
+Editing the pages template
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+-  Copy
+   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/opac-main.tt
+   to
+   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/pages.tt
+
+-  Edit
+   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/pages.tt
+
+-  At approximately line 61, change this:
+
+   ::
+
+               [% IF ( OpacMainUserBlock ) %]<div id="opacmainuserblock">[% OpacMainUserBlock %]</div>[% END %]
+
+-  To this:
+
+   ::
+
+               [% IF ( page_test ) %]<div id="opacmainuserblock">[% page_test %]</div>[% END %]
+
+Remark: You may wish to disable your News block of these CMS style pages
+e.g. when you do not want it displayed on the CMS style pages or where
+the News block is long enough that it actually makes the 'page\_test'
+include scroll outside the default viewport dimensions. In that case,
+remove the following code from your pages.tt template.
+
+::
+
+                      [% IF ( koha_news_count ) %]
+                          <div id="news">
+                          <table class="table table-bordered">
+                          [% FOREACH koha_new IN koha_news %]
+                            <thead><tr><th>[% koha_new.title %]</th></tr></thead>
+                            <tbody><tr><td><p>[% koha_new.new %]</p>
+                            <p class="newsfooter"><i>(published on [% koha_new.newdate %])</i></p></td></tr></tbody>
+                          [% END %]
+                          </table>
+                          </div>
+                         [% END %]
+
+
+.. _troubleshooting-label:
+
+Troubleshooting
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you have problems check file permissions on pages.pl and pages.tt.
+They should have the same user and group as other Koha files like
+opac-main.pl.
+
+.. _bonus-points-label:
+
+Bonus Points
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Instead of using the address
+http://youraddress/cgi-bin/koha/pages.pl?p=test you can shorten it to
+http://youraddress/pages.pl?p=test Just open up
+/etc/koha/koha-httpd.conf and add the follow at about line 13:
+
+::
+
+    ScriptAlias /pages.pl "/usr/share/koha/opac/cgi-bin/opac/pages.pl"
+
+Then restart Apache.
+
+.. _usage-label:
+
+Usage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After setting up Koha as a CMS you can create new pages following these
+instructions:
+
+.. _adding-pages-label:
+
+Adding Pages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To add a new page you need to add a system preference under Local Use.
+
+-  Get there: More > Administration > Global System Preferences > Local
+   Use
+
+-  Click 'New Preference'
+
+-  Enter in a description in the Explanation field
+
+-  Enter a value that starts with 'page\_' in the Variable field
+
+-  Enter starting HTML in the Value field
+
+   |image1076|
+
+-  Set the Variable Type to Textarea
+
+-  Set the Variable options to something like 20\|20 for 20 rows and 20
+   columns
+
+   |image1077|
+
+.. _viewing-your-page-label:
+
+Viewing your page
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You can view your new page at
+http://YOUR-OPAC/cgi-bin/koha/pages.pl?p=PAGENAME where PAGENAME is the
+part you entered after 'page\_' in the Variable field.
+
+.. _example-label:
+
+**Example**
+
+This process can be used to create recommended reading lists within
+Koha. So once the code changes have been made per the instructions on
+'Koha as a CMS' you go through the 'Adding a New Page' instructions
+above to great a page for 'Recommended Reading Lists'
+
+|image1078|
+
+Next we need to create pages for our various classes (or categories). To
+do this, return to the 'Adding a New Page' section and create a
+preference for the first class.
+
+|image1079|
+
+Next you'll want to link your first page to your new second page, go to
+the page\_recommend preference and click 'Edit.' Now you want to edit
+the HTML to include a link to your newest page:
+
+|image1080|
+
+.. _live-examples-label:
+
+**Live Examples**
+
+-  The Crawford Library at Dallas Christian College is using this method
+   for their recommended reading lists: http://opac.dallas.edu/
+
+Koha search on your site
+-------------------------------------------
+
+Often you'll want to add a Koha search box to your library website. To
+do so, just copy and paste the following code in to your library website
+and update the YOURCATALOG bit with your catalog's URL and you're set to
+go.
+
+::
+
+    <form name="searchform" method="get" action="http://YOURCATLOG/cgi-bin/koha/opac-search.pl" id="searchform">
+    <input id="transl1" name="q" type="text"><p>
+    <select name="idx" id="masthead_search">
+    <option value="kw">Keyword</option>
+    <option value="ti">Title</option>
+    <option value="au">Author</option>
+    <option value="su">Subject</option>
+    <option value="nb">ISBN</option>
+    <option value="se">Series</option>
+    <option value="callnum">Call Number</option>
+    </select>
+    <input value="Search" id="searchsubmit" type="submit">
+    </p></form>
index cb85e50..ede4c88 100644 (file)
@@ -29,6 +29,7 @@ Koha 18.05 Manual (en)
    cron_jobs
    webservices
    miscellaneous
+   extending_koha
    faq
    license
 
index 9f869f4..32d9895 100644 (file)
@@ -1042,251 +1042,6 @@ January/February and July/August combined issues).
 |image1075|
 
 
-Using Koha as a Content Management System (CMS)
-===============================================
-
-.. _setup-label:
-
-Setup
--------------------------
-
-These are instructions for taking a default install of Koha and allowing
-it to function as a little content management system. This will allow a
-library to publish an arbitrary number of pages based on a template.
-This example uses the template for the main opac page, but you could
-just as well use any template you wish with a bit more editing. This may
-be appropriate if you have a small library, want to allow librarians to
-easily add pages, and do not want to support a complete CMS.
-
--  Copy /usr/share/koha/opac/cgi-bin/opac/opac-main.pl to
-   /usr/share/koha/opac/cgi-bin/opac/pages.pl (in the same directory)
-
--  Edit pages.pl in an editor
-
--  At approximately line 33 change this code:
-
-   ::
-
-       template_name  => "opac-main.tt",
-
--  To this code:
-
-   ::
-
-       template_name  => "pages.tt",
-
--  At approximately line 62 after this code:
-
-   ::
-
-       $template->param(
-                  koha_news       => $all_koha_news,
-                  koha_news_count => $koha_news_count,
-                  display_daily_quote => C4::Context->preference('QuoteOfTheDay'),
-                  daily_quote         => $quote,
-                  );
-
--  Add these lines:
-
-   ::
-
-               my $page = "page_" . $input->param('p');          # go for "p" value in URL and do the concatenation
-               my $preference = C4::Context->preference($page);  # Go for preference
-               $template->{VARS}->{'page_test'} = $preference;   # pass variable to template pages.tt
-
--  Note pages.pl file must have Webserver user execution permissions,
-   you can use `chmod <http://en.wikipedia.org/wiki/Chmod>`__ command if
-   you are actually logged in as such user:
-
-   ::
-
-               $chmod 755 pages.pl
-
--  In the browser go to Home > Administration > System Preferences >
-   Local Use and add a New Preference called "page\_test"
-
--  Fill it out as so
-
-   -  Explanation: test page for pages tiny cms
-
-   -  Variable: page\_test
-
-   -  Value: Lorem ipsum
-
-   -  Click the TextArea link (or enter "TextArea" into the input field
-      below it)
-
-   -  variable options (last field): 80\|50
-
--  In a browser go to http://youraddress/cgi-bin/koha/pages.pl?p=test
-   The page should come up with the words "Lorem ipsum" in the main
-   content area of the page. (replace "youraddress" with localhost,
-   127.0.0.1, or your domain name depending on how you have Apache set
-   up.)
-
--  To add more pages simply create a system preference where the title
-   begins with "page\_" followed by any arbitrary letters. You can add
-   any markup you want as the value of the field. Reference the new page
-   by changing the value of the "p" parameter in the URL.
-
-To learn more visit the Koha wiki page on this topic:
-http://wiki.koha-community.org/wiki/Koha_as_a_CMS
-
-.. _editing-the-pages-template-label:
-
-Editing the pages template
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The file to create / edit for the pages template will depend on your
-:ref:`opacthemes` system preference setting
-
-.. _editing-'bootstrap'-theme-template-(current)-label:
-
-Editing 'bootstrap' theme template (current)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
--  Copy
-   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/opac-main.tt
-   to
-   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/pages.tt
-
--  Edit
-   /usr/share/koha/opac/htdocs/opac-tmpl/bootstrap/en/modules/pages.tt
-
--  At approximately line 61, change this:
-
-   ::
-
-               [% IF ( OpacMainUserBlock ) %]<div id="opacmainuserblock">[% OpacMainUserBlock %]</div>[% END %]
-
--  To this:
-
-   ::
-
-               [% IF ( page_test ) %]<div id="opacmainuserblock">[% page_test %]</div>[% END %]
-
-Remark: You may wish to disable your News block of these CMS style pages
-e.g. when you do not want it displayed on the CMS style pages or where
-the News block is long enough that it actually makes the 'page\_test'
-include scroll outside the default viewport dimensions. In that case,
-remove the following code from your pages.tt template.
-
-::
-
-                      [% IF ( koha_news_count ) %]
-                          <div id="news">
-                          <table class="table table-bordered">
-                          [% FOREACH koha_new IN koha_news %]
-                            <thead><tr><th>[% koha_new.title %]</th></tr></thead>
-                            <tbody><tr><td><p>[% koha_new.new %]</p>
-                            <p class="newsfooter"><i>(published on [% koha_new.newdate %])</i></p></td></tr></tbody>
-                          [% END %]
-                          </table>
-                          </div>
-                         [% END %]
-
-
-.. _troubleshooting-label:
-
-Troubleshooting
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you have problems check file permissions on pages.pl and pages.tt.
-They should have the same user and group as other Koha files like
-opac-main.pl.
-
-.. _bonus-points-label:
-
-Bonus Points
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Instead of using the address
-http://youraddress/cgi-bin/koha/pages.pl?p=test you can shorten it to
-http://youraddress/pages.pl?p=test Just open up
-/etc/koha/koha-httpd.conf and add the follow at about line 13:
-
-::
-
-    ScriptAlias /pages.pl "/usr/share/koha/opac/cgi-bin/opac/pages.pl"
-
-Then restart Apache.
-
-.. _usage-label:
-
-Usage
--------------------------
-
-After setting up Koha as a CMS you can create new pages following these
-instructions:
-
-.. _adding-pages-label:
-
-Adding Pages
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To add a new page you need to add a system preference under Local Use.
-
--  Get there: More > Administration > Global System Preferences > Local
-   Use
-
--  Click 'New Preference'
-
--  Enter in a description in the Explanation field
-
--  Enter a value that starts with 'page\_' in the Variable field
-
--  Enter starting HTML in the Value field
-
-   |image1076|
-
--  Set the Variable Type to Textarea
-
--  Set the Variable options to something like 20\|20 for 20 rows and 20
-   columns
-
-   |image1077|
-
-.. _viewing-your-page-label:
-
-Viewing your page
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can view your new page at
-http://YOUR-OPAC/cgi-bin/koha/pages.pl?p=PAGENAME where PAGENAME is the
-part you entered after 'page\_' in the Variable field.
-
-.. _example-label:
-
-Example
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This process can be used to create recommended reading lists within
-Koha. So once the code changes have been made per the instructions on
-'Koha as a CMS' you go through the 'Adding a New Page' instructions
-above to great a page for 'Recommended Reading Lists'
-
-|image1078|
-
-Next we need to create pages for our various classes (or categories). To
-do this, return to the 'Adding a New Page' section and create a
-preference for the first class.
-
-|image1079|
-
-Next you'll want to link your first page to your new second page, go to
-the page\_recommend preference and click 'Edit.' Now you want to edit
-the HTML to include a link to your newest page:
-
-|image1080|
-
-.. _live-examples-label:
-
-Live Examples
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
--  The Crawford Library at Dallas Christian College is using this method
-   for their recommended reading lists: http://opac.dallas.edu/
-
 Resetting the Koha Database
 ===========================
 
@@ -2681,370 +2436,3 @@ In addition to these required fields you can enter any other subfield
 you'd like. Most libraries will enter a call number in subfield o and a
 barcode in subfield p as well. Review the :ref:`Item/Holdings Cataloging
 Guide <item/holdings-record-cataloging-guide-label>` for a full list of subfields and values.
-
-Extending Koha
-==============
-
-.. _amazon-lookup-script-for-koha-libraries-label:
-
-Amazon lookup script for Koha libraries
---------------------------------------------------------
-
-We order most of our materials from Amazon, so I've been looking for a
-convenient way to tell if a book under consideration is in our catalog
-already.
-
-Greasemonkey & a custom user script fit the bill nicely:
-
--  https://addons.mozilla.org/en-US/firefox/addon/748
-
--  http://userscripts.org/scripts/show/56847
-
-A few caveats:
-
--  Like most scripts, this one was designed to work with Firefox; I
-   haven't explored getting it to work with other browsers.
-
--  I'm not a JavaScript programmer -- this was adapted from others'
-   work. Just a few lines would have to be changed to get the script to
-   work with your catalog.
-
--  It depends on the existence of ISBN for the item in question, so
-   movies, older books, etc. would not work.
-
-Others have added all sorts of bells & whistles: XISBN lookups to search
-for related titles, custom messages based on the status of items (on
-order, on hold, etc.), ... just search the UserScripts site for Amazon +
-library. For a later date!
-
-.. _keyword-clouds-label:
-
-Keyword Clouds
------------------------------------------
-
-In addition to the traditional tag cloud available in Koha, there is a
-way to generate clouds for popular subjects within Koha.
-
-The :ref:`Author/Subject Cloud cron job <subject/author-clouds-label>` is used to help
-with this process. This cron job sends its output to files.
-
--  /home/koha/mylibrary/koharoot/koha-tmpl/cloud-author.html
-
--  /home/koha/yourlibrary/koharoot/koha-tmpl/cloud-subject.html
-
-This means that you can produce clouds for authors, collective author,
-all kind of subjects, classifications, etc. And since it works on zebra
-indexes, it is quick, even on large DBs. Tags clouds are sent to files.
-It's up to library webmaster to deal with those files in order to
-include them in :ref:`OPACMainUserBlock <opacmainuserblock-label>`, or include
-them into their library CMS.
-
-Some libraries even send the file into a Samba shared folder where
-webmaster take them, eventually clean them a little bit before
-integrating them into navigation widgets or pages.
-
-.. _newest-titles-pulldown-label:
-
-Newest Titles Pulldown
----------------------------------------------
-
-Often we want to add a way for our patrons to do searches for the newest
-items. In this example I'll show you how to create a pull down menu of
-the newest items by item type. These tips will work (with a couple
-changes) for collection codes or shelving locations as well.
-
-First, it's important to note that every link in Koha is a permanent
-link. This means if I do a search for everything of a specific item type
-sorted by the acquisitions date and bookmark that URL, whenever I click
-it I'll see the newest items of that type on the first few pages of the
-results.
-
-I took this knowledge and wrote a form takes this functionality in to
-consideration. It basically just does a search of your Koha catalog for
-a specific item type and sorts the results by acquisitions date.
-
-The first thing I did was write a MySQL statement to generate a list of
-item types for me - why copy and paste when you can use the power of
-MySQL?
-
-::
-
-    select concat('<option value=\"mc-itype:', itemtype, '\">',description,'</option>') from itemtypes
-
-The above looks at the itemtypes table and slaps the necessary HTML
-around each item type for me. I then exported that to CSV and opened it
-in my text editor and added the other parts of the form.
-
-::
-
-    <p><strong>New Items</strong></p>
-    <p><form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl">
-    <input name="idx" value="kw" type="hidden">
-    <input name="sort_by" value="acqdate_dsc" type="hidden">
-    <input name="do" value="OK" type="hidden">
-    <select name="limit" onchange="this.form.submit()">
-    <option>-- Please choose --</option>
-    <option value="mc-itype:BOOK">Book</option>
-    <option value="mc-itype:BOOKCD">Book on CD</option>
-    <option value="mc-itype:DVD">DVD</option>
-    <option value="mc-itype:LRG_PRINT">Large print book</option>
-    <option value="mc-itype:MAGAZINE">Magazine</option>
-    <option value="mc-itype:NEWSPAPER">Newspaper</option>
-    <option value="mc-itype:VIDEO">Videocassette</option>
-    </select>
-    </form>
-    </p>
-
-Now, what does all of that mean? The important bits are these:
-
-First the starting of the form.
-
-::
-
-    <p><form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl">
-
-This tells the browser to take any value selected and put it at the end
-of this http://YOURSITE/cgi-bin/koha/opac-search.pl. If you want to
-embed this form on your library website (and not on your OPAC) you can
-put the full OPAC URL in there.
-
-Next, there is a hidden value that is telling the search to sort by
-acquisitions date descending (newest items at the top):
-
-::
-
-    <input name="sort_by" value="acqdate_dsc" type="hidden">
-
-And finally you have an option for each item type you want people to
-search.
-
-::
-
-    <option value="mc-itype:BOOK">Book</option>
-
-These options each include the string "mc-itype:" which tells Koha to do
-an item type search.
-
-Once you have all of that in place you can copy and paste the form to
-somewhere on your OPAC. The `Farmington Public Libraries
-OPAC <http://catalog.farmingtonlibraries.org>`__ has a few examples of
-this on the left.
-
-.. _new-titles-slider-for-opac-label:
-
-New titles slider for OPAC
---------------------------
-
-Often times libraries will want to add a flowing widget with new
-materials at the library to their main public catalog page. To do this
-you can use a widget from any number of services (usually for a cost) or
-you can `enable plugins <#pluginsystem>`__ in Koha and use the `Cover
-Flow
-plugin <http://git.bywatersolutions.com/koha-plugins.git/shortlog/refs/heads/cover_flow>`__
-which is based on the
-`Flipster <https://github.com/drien/jquery-flipster>`__, a responsive
-jQuery coverflow plugin.
-
-Once the plugin is installed, the steps to get your coverflow to show up
-are as follows:
-
-First, you need to create one or more public reports for your coverflow
-widget or widgets to be based on. This is how the plugin knows what the
-content of your widget should contain. Each report needs only three
-columns; title, biblionumber, and isbn. It is important that you have a
-good and valid isbn, as that is the datum used to actually fetch the
-cover. In the iteration of the plugin, we are using Amazon cover images,
-but I believe in the end I will make the cover image fetcher
-configurable so we can use any data source for cover image fetching.
-
-Second, we need to configure the plugin. The plugin configuration is a
-single text area that uses YAML ( actually, it’s JSON, whcih is a subset
-of YAML ) to store the configuration options. In this example it looks
-like this:
-
-::
-
-    - id: 42
-      selector: #coverflow
-      options:
-      style: coverflow
-
-In this example, we are telling the plugin to use the report with id 42,
-and use it to create a coverflow widget to replace the HTML element with
-the id “coverflow”. The options list is passed directly to Flipster, so
-any options supported by Flipster can be set from the plugin
-configuration! In fact, in addition to the traditional coverflow,
-Flipster has a “carousel” mode which is a much more compact version of
-the coverflow. You can also configure which cover the widget will start
-on, among other options.
-
-At the time the plugins options are saved or updated, the plugin will
-then generate some minified JavaScript code that is automatically stored
-in the Koha system preference OPACUserJS. Here is an example of the
-output:
-
-::
-
-    /* JS for Koha CoverFlow Plugin
-     This JS was added automatically by installing the CoverFlow plugin
-     Please do not modify */$(document).ready(function(){$.getScript("/plugin/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/jquery-flipster/src/js/jquery.flipster.min.js",function(data,textStatus,jqxhr){$("head").append("<link id='flipster-css' href='/plugin/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/jquery-flipster/src/css/jquery.flipster.min.css' type='text/css' rel='stylesheet' />");$('#coverflow').load("/coverflow.pl?id=42",function(){var opt={'items':'.item','minfactor':15,'distribution':1.5,'scalethreshold':0,'staticbelowthreshold':false,'titleclass':'itemTitle','selectedclass':'selectedItem','scrollactive':true,'step':{'limit':4,'width':10,'scale':true}};$('#coverflow').flipster({style:'coverflow',});});});});
-    /* End of JS for Koha CoverFlow Plugin */
-
-Why do this? For speed! Rather than regenerating this code each and
-every time the page loads, we can generate it once, and use it over and
-over again.
-
-If you inspect the code closely, you’ll notice it references a script
-“coverflow.pl”. This is a script that is included with the coverflow
-plugin. Since we need to access this from the OPAC ( and we don’t want
-to set off any XSS attack alarms ), we need to modify the web server
-configuration for the public catalog and add the followup to it:
-
-::
-
-    ScriptAlias /coverflow.pl "/var/lib/koha/mykoha/plugins/Koha/Plugin/Com/ByWaterSolutions/CoverFlow/coverflow.pl"
-
-This line gives us access to the coverflow.pl script from the OPAC. This
-script retrieves the report data and passes it back to the public
-catalog for creating the coverflow widget. Koha::Cache is supported in
-order to make the widget load as quickly as possible!
-
-The final step is to put your selector element somewhere in your public
-catalog. In this example, I put the following in the system preference
-OpacMainUserBlock:
-
-::
-
-    <span id="coverflow">Loading...</span>
-
-Once that is in place, you need only refresh your OPAC page, and there
-you have it, your very own catalog coverflow widget! Not only do these
-coverflows look great on a computer screen, but they look great on
-mobile platforms as well, and are even touch responsive!
-
-|image1316|
-
-.. _cataloging-and-searching-by-color-label:
-
-Cataloging and Searching by Color
-----------------------------------------------------
-
-One of the icon sets installed in Koha includes a series of colors. This
-set can be used to catalog and search by color if you'd like. This guide
-will walk you use changing collection code to color in Koha so that you
-can do this.
-
-The following SQL could be used to add these colors to the CCODE
-authorized value category in a batch. If you wanted to use these colors
-for another authorized value you'd have to edit this to use that
-category:
-
-::
-
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','000000','Black','','colors/000000.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','66cc66','Bright Green','','colors/66cc66.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','99cc33','Olive','','colors/99cc33.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','3333cc','Dark Blue','','colors/3333cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','006600' ,'Dark Green','','colors/006600.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','6600cc','Plum','','colors/6600cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','6666cc','Purple','','colors/6666cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','9999cc','Light Purple','','colors/9999cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','660000' ,'Burgundy','','colors/660000.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','663333' ,'Brown','','colors/663333.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','990000' ,'Red','','colors/990000.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','996633' ,'Tan','','colors/996633.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','999999' ,'Gray','','colors/999999.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cc66cc','Pink','','colors/cc66cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cc99cc','Bubble Gum','','colors/cc99cc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cc3333' ,'Orange','','colors/cc3333.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cc6666' ,'Peach','','colors/cc6666.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cc9999' ,'Rose','','colors/cc9999.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','cccc00' ,'Gold','','colors/cccc00.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','ffff33' ,'Yellow','','colors/ffff33.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','ffffcc','Cream','','colors/ffffcc.png');
-        insert into authorised_values (category, authorised_value, lib,
-         lib_opac, imageurl) values ('CCODE','ffffff','White','','colors/ffffff.png');
-
-If you would like to choose the colors manually you can do that via the
-:ref:`Authorized Values` administration area.
-
-|image1118|
-
-Next you'll want to :ref:`update the frameworks <marc-bibliographic-frameworks-label>` so
-that the 952$8 (if you're using collection code) label to says Color.
-
-Once you have that in place you can start to catalog items by color.
-
-Finally you'll want to add the following JQuery to your preferences so
-that it will relabel 'Collection' to 'Color'
-
-:ref:`IntranetUserJS`
-
-::
-
-    $(document).ready(function(){
-        $("#advsearch-tab-ccode a:contains('Collection')").text("Color");
-        $("#holdings th:contains('Collection')").text("Color");
-        });
-
-:ref:`OPACUserJS`
-
-::
-
-    $(document).ready(function(){
-        $("#advsearch-tab-ccode a:contains('Collection')").text("Color");
-        $('#item_ccode').text("Color");
-        });
-
-Koha and Your Website
-=====================
-
-This appendix will include tips for integrating Koha in to your library
-website.
-
-.. _koha-search-on-your-site-label:
-
-Koha search on your site
--------------------------------------------
-
-Often you'll want to add a Koha search box to your library website. To
-do so, just copy and paste the following code in to your library website
-and update the YOURCATALOG bit with your catalog's URL and you're set to
-go.
-
-::
-
-    <form name="searchform" method="get" action="http://YOURCATLOG/cgi-bin/koha/opac-search.pl" id="searchform">
-    <input id="transl1" name="q" type="text"><p>
-    <select name="idx" id="masthead_search">
-    <option value="kw">Keyword</option>
-    <option value="ti">Title</option>
-    <option value="au">Author</option>
-    <option value="su">Subject</option>
-    <option value="nb">ISBN</option>
-    <option value="se">Series</option>
-    <option value="callnum">Call Number</option>
-    </select>
-    <input value="Search" id="searchsubmit" type="submit">
-    </p></form>