@@ -, +, @@ This is a combination of 67 commits. --- .../mysql/en/{optional => default}/auth_val.sql | 0 .../mysql/en/{optional => default}/auth_val.txt | 0 .../en/{mandatory => default}/auth_values.sql | 0 .../en/{mandatory => default}/auth_values.txt | 0 .../en/{mandatory => default}/class_sources.sql | 6 +- .../en/{mandatory => default}/class_sources.txt | 0 .../en/{optional => default}/csv_profiles.sql | 2 +- .../en/{optional => default}/csv_profiles.txt | 2 - .../message_transport_types.sql | 0 .../message_transport_types.txt | 1 - .../mysql/en/{optional => default}/parameters.sql | 0 .../mysql/en/{optional => default}/parameters.txt | 0 .../{mandatory => default}/patron_attributes.sql | 0 .../data/mysql/en/default/patron_attributes.txt | 1 + .../{mandatory => default}/sample_frequencies.sql | 0 .../{mandatory => default}/sample_frequencies.txt | 0 .../en/{mandatory => default}/sample_notices.sql | 0 .../en/{mandatory => default}/sample_notices.txt | 0 .../sample_notices_message_attributes.sql | 1 - .../sample_notices_message_attributes.txt | 0 .../sample_notices_message_transports.sql | 0 .../sample_notices_message_transports.txt | 0 .../sample_numberpatterns.sql | 0 .../sample_numberpatterns.txt | 0 .../data/mysql/en/mandatory/patron_attributes.txt | 0 .../authorities_normal_marc21.sql | 0 .../marc21/default/authorities_normal_marc21.txt | 9 + .../marc21_default_matching_rules.sql | 18 +- .../marc21_default_matching_rules.txt | 5 +- .../marc21_framework_DEFAULT.sql | 0 .../marc21_framework_DEFAULT.txt | 0 .../marc21_sample_fastadd_framework.sql | 0 .../marc21_sample_fastadd_framework.txt | 0 .../marc21_simple_bib_frameworks.sql | 0 .../marc21_simple_bib_frameworks.txt | 1 - .../marc21/mandatory/authorities_normal_marc21.txt | 11 - .../authorities_normal_unimarc.sql | 2 - .../unimarc/default/authorities_normal_unimarc.txt | 1 + .../unimarc_framework_DEFAULT.sql | 10 +- .../unimarc_framework_DEFAULT.txt | 0 .../mandatory/authorities_normal_unimarc.txt | 1 - .../data/mysql/en/optional/patron_categories.sql | 2 +- .../data/mysql/en/optional/patron_categories.txt | 6 +- .../data/mysql/en/optional/sample_holidays.txt | 5 +- .../data/mysql/en/optional/sample_libraries.txt | 2 +- .../mysql/en/optional/sample_z3950_servers.txt | 1 + installer/install.pl | 23 + installer/onboarding.pl | 593 +++++++++++++++++++++ .../intranet-tmpl/prog/en/includes/calendar.inc | 2 +- .../intranet-tmpl/prog/en/includes/header.inc | 2 + .../prog/en/includes/installer-doc-head-close.inc | 15 + .../prog/en/modules/admin/categories.tt | 2 +- .../prog/en/modules/installer/Backupstep3.tt | 257 +++++++++ .../prog/en/modules/installer/step3.tt | 206 ++++--- .../intranet-tmpl/prog/en/modules/intranet-main.tt | 2 - .../prog/en/modules/onboarding/onboardingstep0.tt | 18 + .../prog/en/modules/onboarding/onboardingstep1.tt | 81 +++ .../prog/en/modules/onboarding/onboardingstep2.tt | 407 ++++++++++++++ .../prog/en/modules/onboarding/onboardingstep3.tt | 206 +++++++ .../prog/en/modules/onboarding/onboardingstep4.tt | 81 +++ .../prog/en/modules/onboarding/onboardingstep5.tt | 125 +++++ koha-tmpl/intranet-tmpl/prog/en/modules/summary.tt | 41 ++ summary.pl | 58 ++ 63 files changed, 2071 insertions(+), 135 deletions(-) rename installer/data/mysql/en/{optional => default}/auth_val.sql (100%) rename installer/data/mysql/en/{optional => default}/auth_val.txt (100%) rename installer/data/mysql/en/{mandatory => default}/auth_values.sql (100%) rename installer/data/mysql/en/{mandatory => default}/auth_values.txt (100%) rename installer/data/mysql/en/{mandatory => default}/class_sources.sql (99%) rename installer/data/mysql/en/{mandatory => default}/class_sources.txt (100%) rename installer/data/mysql/en/{optional => default}/csv_profiles.sql (91%) rename installer/data/mysql/en/{optional => default}/csv_profiles.txt (83%) rename installer/data/mysql/en/{mandatory => default}/message_transport_types.sql (100%) rename installer/data/mysql/en/{mandatory => default}/message_transport_types.txt (98%) rename installer/data/mysql/en/{optional => default}/parameters.sql (100%) rename installer/data/mysql/en/{optional => default}/parameters.txt (100%) rename installer/data/mysql/en/{mandatory => default}/patron_attributes.sql (100%) create mode 100644 installer/data/mysql/en/default/patron_attributes.txt rename installer/data/mysql/en/{mandatory => default}/sample_frequencies.sql (100%) rename installer/data/mysql/en/{mandatory => default}/sample_frequencies.txt (100%) rename installer/data/mysql/en/{mandatory => default}/sample_notices.sql (100%) rename installer/data/mysql/en/{mandatory => default}/sample_notices.txt (100%) rename installer/data/mysql/en/{mandatory => default}/sample_notices_message_attributes.sql (99%) rename installer/data/mysql/en/{mandatory => default}/sample_notices_message_attributes.txt (100%) rename installer/data/mysql/en/{mandatory => default}/sample_notices_message_transports.sql (100%) rename installer/data/mysql/en/{mandatory => default}/sample_notices_message_transports.txt (100%) rename installer/data/mysql/en/{mandatory => default}/sample_numberpatterns.sql (100%) rename installer/data/mysql/en/{mandatory => default}/sample_numberpatterns.txt (100%) delete mode 100644 installer/data/mysql/en/mandatory/patron_attributes.txt rename installer/data/mysql/en/marcflavour/marc21/{mandatory => default}/authorities_normal_marc21.sql (100%) create mode 100644 installer/data/mysql/en/marcflavour/marc21/default/authorities_normal_marc21.txt rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_default_matching_rules.sql (96%) rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_default_matching_rules.txt (61%) rename installer/data/mysql/en/marcflavour/marc21/{mandatory => default}/marc21_framework_DEFAULT.sql (100%) rename installer/data/mysql/en/marcflavour/marc21/{mandatory => default}/marc21_framework_DEFAULT.txt (100%) rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_sample_fastadd_framework.sql (100%) rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_sample_fastadd_framework.txt (100%) rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_simple_bib_frameworks.sql (100%) rename installer/data/mysql/en/marcflavour/marc21/{optional => default}/marc21_simple_bib_frameworks.txt (99%) delete mode 100644 installer/data/mysql/en/marcflavour/marc21/mandatory/authorities_normal_marc21.txt rename installer/data/mysql/en/marcflavour/unimarc/{mandatory => default}/authorities_normal_unimarc.sql (99%) create mode 100644 installer/data/mysql/en/marcflavour/unimarc/default/authorities_normal_unimarc.txt rename installer/data/mysql/en/marcflavour/unimarc/{mandatory => default}/unimarc_framework_DEFAULT.sql (99%) rename installer/data/mysql/en/marcflavour/unimarc/{mandatory => default}/unimarc_framework_DEFAULT.txt (100%) delete mode 100644 installer/data/mysql/en/marcflavour/unimarc/mandatory/authorities_normal_unimarc.txt create mode 100755 installer/onboarding.pl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/installer/Backupstep3.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep0.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep1.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep2.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep3.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep4.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/summary.tt create mode 100755 summary.pl --- a/installer/data/mysql/en/mandatory/class_sources.sql +++ a/installer/data/mysql/en/mandatory/class_sources.sql @@ -1,4 +1,4 @@ --- +-- -- Default classification sources and filing rules -- for Koha. -- @@ -10,11 +10,11 @@ -- terms of the GNU General Public License as published by the Free Software -- Foundation; either version 2 of the License, or (at your option) any later -- version. --- +-- -- Koha is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -- A PARTICULAR PURPOSE. See the GNU General Public License for more details. --- +-- -- You should have received a copy of the GNU General Public License along -- with Koha; if not, write to the Free Software Foundation, Inc., -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --- a/installer/data/mysql/en/optional/csv_profiles.sql +++ a/installer/data/mysql/en/optional/csv_profiles.sql @@ -1,2 +1,2 @@ -INSERT IGNORE INTO export_format( profile, description, content, csv_separator, type ) +INSERT IGNORE INTO export_format( profile, description, content, csv_separator, type ) VALUES ( "issues to claim", "default CSV export for serial issue claims", "SUPPLIER=aqbooksellers.name|TITLE=subscription.title|ISSUE NUMBER=serial.serialseq|LATE SINCE=serial.planneddate", ",", "sql" ); --- a/installer/data/mysql/en/optional/csv_profiles.txt +++ a/installer/data/mysql/en/optional/csv_profiles.txt @@ -1,3 +1, @@ -CSV profiles - Default CSV export profiles; including one for exporting serial claims. --- a/installer/data/mysql/en/mandatory/message_transport_types.txt +++ a/installer/data/mysql/en/mandatory/message_transport_types.txt @@ -1,2 +1, @@ Defines default message transports for email and sms. - --- a/installer/data/mysql/en/default/patron_attributes.txt +++ a/installer/data/mysql/en/default/patron_attributes.txt @@ -0,0 +1, @@ +Patron attributes --- a/installer/data/mysql/en/mandatory/sample_notices_message_attributes.sql +++ a/installer/data/mysql/en/mandatory/sample_notices_message_attributes.sql @@ -6,4 +6,3 @@ values (4, 'Hold_Filled', 0), (5, 'Item_Check_in', 0), (6, 'Item_Checkout', 0); - --- a/installer/data/mysql/en/marcflavour/marc21/default/authorities_normal_marc21.txt +++ a/installer/data/mysql/en/marcflavour/marc21/default/authorities_normal_marc21.txt @@ -0,0 +1,9 @@ +Default MARC21 Standard Authority types: + Personal Name + Corporate Name + Meeting Name + Uniform Title + Chronological Term + Topical Term + Geographic Name + Genre/Form Term --- a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_default_matching_rules.sql +++ a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_default_matching_rules.sql @@ -1,4 +1,4 @@ --- +-- -- Default MARC matching rules for Koha -- -- Copyright (C) 2007 LiblimeA @@ -9,31 +9,31 @@ -- terms of the GNU General Public License as published by the Free Software -- Foundation; either version 2 of the License, or (at your option) any later -- version. --- +-- -- Koha is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -- A PARTICULAR PURPOSE. See the GNU General Public License for more details. --- +-- -- You should have received a copy of the GNU General Public License along -- with Koha; if not, write to the Free Software Foundation, Inc., -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -INSERT INTO marc_matchers (code, description, record_type, threshold) +INSERT INTO marc_matchers (code, description, record_type, threshold) VALUES ('ISBN', '020$a', 'biblio', 1000); INSERT INTO matchpoints (matcher_id, search_index, score) SELECT MAX(matcher_id), 'isbn', 1000 FROM marc_matchers; INSERT INTO matcher_matchpoints SELECT MAX(matcher_id), MAX(matchpoint_id) FROM matchpoints; -INSERT INTO matchpoint_components (matchpoint_id, sequence, tag, subfields) +INSERT INTO matchpoint_components (matchpoint_id, sequence, tag, subfields) SELECT MAX(matchpoint_id), 1, '020', 'a' FROM matchpoints; -INSERT INTO matchpoint_component_norms (matchpoint_component_id, sequence, norm_routine) +INSERT INTO matchpoint_component_norms (matchpoint_component_id, sequence, norm_routine) SELECT MAX(matchpoint_component_id), 1, 'ISBN' FROM matchpoint_components; -INSERT INTO marc_matchers (code, description, record_type, threshold) +INSERT INTO marc_matchers (code, description, record_type, threshold) VALUES ('ISSN', '022$a', 'biblio', 1000); INSERT INTO matchpoints (matcher_id, search_index, score) SELECT MAX(matcher_id), 'issn', 1000 FROM marc_matchers; INSERT INTO matcher_matchpoints SELECT MAX(matcher_id), MAX(matchpoint_id) FROM matchpoints; -INSERT INTO matchpoint_components (matchpoint_id, sequence, tag, subfields) +INSERT INTO matchpoint_components (matchpoint_id, sequence, tag, subfields) SELECT MAX(matchpoint_id), 1, '022', 'a' FROM matchpoints; -INSERT INTO matchpoint_component_norms (matchpoint_component_id, sequence, norm_routine) +INSERT INTO matchpoint_component_norms (matchpoint_component_id, sequence, norm_routine) SELECT MAX(matchpoint_component_id), 1, 'ISSN' FROM matchpoint_components; INSERT INTO marc_matchers (code, description, record_type, threshold) --- a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_default_matching_rules.txt +++ a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_default_matching_rules.txt @@ -1,5 +1,2 @@ Selected matching rules for MARC 21 bibliographic -records, including: - -ISBN -ISSN +records, including: ISBN, ISSN --- a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_simple_bib_frameworks.txt +++ a/installer/data/mysql/en/marcflavour/marc21/optional/marc21_simple_bib_frameworks.txt @@ -1,5 +1,4 @@ Simple MARC 21 bibliographic frameworks for some common types of bibliographic material. Frameworks are used to define the structure of your MARC records and the behavior of the integrated MARC editor. You can change these at any time after installation. The frameworks in this optional default setting include: - BKS Books, Booklets, Workbooks CF CD-ROMs, DVD-ROMs, General Online Resources SR Audio Cassettes, CDs --- a/installer/data/mysql/en/marcflavour/marc21/mandatory/authorities_normal_marc21.txt +++ a/installer/data/mysql/en/marcflavour/marc21/mandatory/authorities_normal_marc21.txt @@ -1,11 +0,0 @@ -Default MARC21 Standard Authority types: - - Personal Name - Corporate Name - Meeting Name - Uniform Title - Chronological Term - Topical Term - Geographic Name - Genre/Form Term - --- a/installer/data/mysql/en/marcflavour/unimarc/mandatory/authorities_normal_unimarc.sql +++ a/installer/data/mysql/en/marcflavour/unimarc/mandatory/authorities_normal_unimarc.sql @@ -819,5 +819,3 @@ INSERT INTO `auth_subfield_structure` (`authtypecode`, `tagfield`, `tagsubfield` ('', '886', '2', 'System Code', 'System Code', 0, 0, 8, '', '', '', 0, -5, 0, '', ''), ('', '886', 'a', 'Tag of the Source Format Field', 'Tag of the Source Format Field', 1, 0, 8, '', '', '', 0, -5, 0, '', ''), ('', '886', 'b', 'Indicators and Subfields of the Source Format Field', 'Indicators and Subfields of the Source Format Field', 1, 0, 8, '', '', '', 0, -5, 0, '', ''); - - --- a/installer/data/mysql/en/marcflavour/unimarc/default/authorities_normal_unimarc.txt +++ a/installer/data/mysql/en/marcflavour/unimarc/default/authorities_normal_unimarc.txt @@ -0,0 +1, @@ + Authority structure for UNIMARC in English. --- a/installer/data/mysql/en/marcflavour/unimarc/mandatory/unimarc_framework_DEFAULT.sql +++ a/installer/data/mysql/en/marcflavour/unimarc/mandatory/unimarc_framework_DEFAULT.sql @@ -23,7 +23,7 @@ -- From Zeno Tajoli (2010-08-12): -- --- Improved default id Koha field (090) and koha date field (099). +-- Improved default id Koha field (090) and koha date field (099). -- Insert link to sql coloum biblio.biblionumber in tag 001 -- Insert the use of 942, local data -- Insert a standard minimun on 995 (holding field) @@ -72,7 +72,7 @@ insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('090','System Control Numbers (Koha)','System Control Numbers (Koha)',0,0,'',''); -insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values +insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('090','a','Koha biblioitem number (autogenerated)','Koha biblioitem number (autogenerated)',0,0,'biblioitems.biblioitemnumber',9,'','','',0,-5,'',NULL,'',''); -- Local date field/Subfields (099) @@ -80,9 +80,9 @@ insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,` insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('099','local dates','',0,0,'',''); -insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values +insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('099','c','Date of creation (bib. record)','Date of creation (bib. record)',0,0,'biblio.datecreated',0,'','','',0,-5,'',NULL,'',''); - + insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('099','d','Last modified date (bib. record)','Last modified data (bib. record)',0,0,'biblio.timestamp',0,'','','',0,-5,'',NULL,'',''); @@ -151,7 +151,7 @@ INSERT INTO `marc_subfield_structure` (`tagfield`, `tagsubfield`, `liblibrarian` ('995', 'r', 'Type of item and material', 'Type of item and material', 0, 1, 'items.itype', 10, 'itemtypes', '', '', 0, 0, '', '', '', NULL), ('995', 'u', 'Copy note', 'Copy note', 0, 0, 'items.itemnotes', 10, '', '', '', 0, 0, '', '', '', NULL), ('995', 'v', 'Serial Enumeration / chronology', 'Serial Enumeration / chronology', 0, 0, 'items.enumchron', 10, '', '', '', 0, -1, '', '', '', NULL); - + -- ******************************************************* --- a/installer/data/mysql/en/marcflavour/unimarc/mandatory/authorities_normal_unimarc.txt +++ a/installer/data/mysql/en/marcflavour/unimarc/mandatory/authorities_normal_unimarc.txt @@ -1, +0,0 @@ -Authority structure for UNIMARC in English. --- a/installer/data/mysql/en/optional/patron_categories.sql +++ a/installer/data/mysql/en/optional/patron_categories.sql @@ -1,4 +1,4 @@ -INSERT INTO `categories` (`categorycode`, `description`, `enrolmentperiod`, `upperagelimit`, `dateofbirthrequired`, `finetype`, `bulk`, `enrolmentfee`, `overduenoticerequired`, `issuelimit`, `reservefee`, `category_type`) VALUES +INSERT INTO `categories` (`categorycode`, `description`, `enrolmentperiod`, `upperagelimit`, `dateofbirthrequired`, `finetype`, `bulk`, `enrolmentfee`, `overduenoticerequired`, `issuelimit`, `reservefee`, `category_type`) VALUES -- Adult Patrons ('PT','Patron',99,999,18,NULL,NULL,'0.000000',1,NULL,'0.000000','A'), --- a/installer/data/mysql/en/optional/patron_categories.txt +++ a/installer/data/mysql/en/optional/patron_categories.txt @@ -1,6 +1,4 @@ -Sample patron types and categories: - -Type: Categories: +Sample patron types and categories. Types are currently hardcoded but you can manage categories after installation from the administration module. Adult patron - default patron type PT - Patron @@ -21,5 +19,3 @@ Professional - a member of an organization (organization is guarantor) T - Teacher S - Staff B - Board - -Types are currently hardcoded, but you can add/edit/delete categories after installation from the administration module. --- a/installer/data/mysql/en/optional/sample_holidays.txt +++ a/installer/data/mysql/en/optional/sample_holidays.txt @@ -1,4 +1, @@ -Sample holidays: - Sundays - Christmas - New Year's +Sample holidays: Sunday, Christmas, New Year's --- a/installer/data/mysql/en/optional/sample_libraries.txt +++ a/installer/data/mysql/en/optional/sample_libraries.txt @@ -1, +1, @@ -A few sample libraries. +Sample libraries. --- a/installer/data/mysql/en/optional/sample_z3950_servers.txt +++ a/installer/data/mysql/en/optional/sample_z3950_servers.txt @@ -1,3 +1,4 @@ +Allow access to the following servers to search and download record information: LIBRARY OF CONGRESS LIBRARY OF CONGRESS NAMES (authority records) LIBRARY OF CONGRESS SUBJECTS (authority records) --- a/installer/install.pl +++ a/installer/install.pl @@ -1,5 +1,22 @@ #!/usr/bin/perl +# This file is part of Koha. +# # +# # Copyright (C) YEAR YOURNAME-OR-YOUREMPLOYER +# # +# # Koha is free software; you can redistribute it and/or modify it +# # under the terms of the GNU General Public License as published by +# # the Free Software Foundation; either version 3 of the License, or +# # (at your option) any later version. +# # +# # Koha is distributed in the hope that it will be useful, but +# # WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU General Public License for more details. +# # +# # You should have received a copy of the GNU General Public License +# # along with Koha; if not, see . + use strict; use warnings; use diagnostics; @@ -199,6 +216,7 @@ elsif ( $step && $step == 3 ) { # The installer will have to relogin since we do not pass cookie to redirection. $template->param( "$op" => 1 ); } + elsif ( $op && $op eq 'addframeworks' ) { # # 1ST install, 3rd sub-step : insert the SQL files the user has selected @@ -250,6 +268,10 @@ elsif ( $step && $step == 3 ) { $template->param( "en_sample_data" => $sample_defaulted_to_en); $template->param( "levelloop" => $levellist ); $template->param( "$op" => 1 ); + + my $setup = $query->param('setup'); + $template->param( "setup"=> $setup ); + } elsif ( $op && $op eq 'choosemarc' ) { # @@ -270,6 +292,7 @@ elsif ( $step && $step == 3 ) { # But could also be useful to have some Authorised values data set prepared here. # Marcflavour Selection is achieved through radiobuttons. my $langchoice = $query->param('fwklanguage'); + $langchoice = $query->cookie('KohaOpacLanguage') unless ($langchoice); $langchoice =~ s/[^a-zA-Z_-]*//g; my $dir = --- a/installer/onboarding.pl +++ a/installer/onboarding.pl @@ -0,0 +1,593 @@ +#!/usr/bin/perl +#Recommended pragmas + +# This file is part of Koha. +# # +# # Copyright (C) YEAR YOURNAME-OR-YOUREMPLOYER +# # +# # Koha is free software; you can redistribute it and/or modify it +# # under the terms of the GNU General Public License as published by +# # the Free Software Foundation; either version 3 of the License, or +# # (at your option) any later version. +# # +# # Koha is distributed in the hope that it will be useful, but +# # WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU General Public License for more details. +# # +# # You should have received a copy of the GNU General Public License +# # along with Koha; if not, see . + +use strict; +use warnings; +use diagnostics; + +use Modern::Perl; +use C4::InstallAuth; +use CGI qw ( -utf8 ); +use List::MoreUtils qw/uniq/; +use Digest::MD5 qw(md5_base64); +use Encode qw( encode ); +use C4::Koha; +use C4::Auth; +use C4::Context; +use C4::Output; +use C4::Form::MessagingPreferences; +use C4::Members; +use C4::Members::Attributes; +use C4::Members::AttributeTypes; +use C4::Log; +use C4::Letters; +use C4::Form::MessagingPreferences; +use Koha::AuthorisedValues; +use Koha::Patron::Debarments; +use Koha::Cities; +use Koha::Patrons; +use Koha::Items; +use Koha::Libraries; +use Koha::LibraryCategories; +use Koha::Database; +use Koha::DateUtils; +use Koha::Patron::Categories; +use Koha::Patron::HouseboundRole; +use Koha::Patron::HouseboundRoles; +use Koha::Token; +use Email::Valid; +use Module::Load; +use Koha::ItemTypes; +use Koha::IssuingRule; +use Koha::IssuingRules; + +#Setting variables +my $input = new CGI; +my $query = new CGI; +my $step = $query->param('step'); + +#Getting the appropriate template to display to the user +my ( $template, $loggedinuser, $cookie) = C4::InstallAuth::get_template_and_user( + { + template_name => "/onboarding/onboardingstep" . ( $step ? $step : 0 ) . ".tt", + query => $query, + type => "intranet", + authnotrequired => 0, + debug => 1, + } +); + +#Check database connection +my %info; +$info{'dbname'} = C4::Context->config("database"); +$info{'dbms'} = +( C4::Context->config("db_scheme") + ? C4::Context->config("db_scheme") + : "mysql" ); + +$info{'hostname'} = C4::Context->config("hostname"); +$info{'port'} = C4::Context->config("port"); +$info{'user'} = C4::Context->config("user"); +$info{'password'} = C4::Context->config("pass"); +my $dbh = DBI->connect( + "DBI:$info{dbms}:dbname=$info{dbname};host=$info{hostname}" + . ( $info{port} ? ";port=$info{port}" : "" ), + $info{'user'}, $info{'password'} +); + + +#Store the value of the template input name='op' in the variable $op so we can check if the user has pressed the button with the name="op" and value="finish" meaning the user has finished the onboarding tool. +my $op = $query->param('op'); +$template->param('op'=>$op); +if ( $op && $op eq 'finish' ) { #If the value of $op equals 'finish' then redirect user to /cgi-bin/koha/mainpage.pl + print $query->redirect("/cgi-bin/koha/mainpage.pl"); + exit; +} + + +#Store the value of the template input name='start' in the variable $start so we can check if the user has pressed this button and started the onboarding tool process +my $start = $query->param('start'); +$template->param('start'=>$start); + +if ( $start && $start eq 'Start setting up my Koha' ){ + my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, ); + $template->param(libraries => $libraries, + group_types => [ + { categorytype => 'searchdomain', + categories => [ Koha::LibraryCategories->search( { categorytype => 'searchdomain' } ) ], + }, + { categorytype => 'properties', + categories => [ Koha::LibraryCategories->search( { categorytype => 'properties' } ) ], + }, + ] + ); + + +}elsif ( $start && $start eq 'Add a patron category' ){ +#Select all the patron category records in the categories database table and give them to the template + my $categories = Koha::Patron::Categories->search(); + $template->param( + categories => $categories, + ); + + +#Check if the $step variable equals 1 i.e. the user has clicked to create a library in the create library screen 1 +}elsif ( $step && $step == 1 ) { + my $createlibrary = $query->param('createlibrary'); #Store the inputted library branch code and name in $createlibrary variable + $template->param('createlibrary'=>$createlibrary); # Hand the library values back to the template in the createlibrary variable + + #store inputted parameters in variables + my $branchcode = $input->param('branchcode'); + $branchcode = uc($branchcode); + my $categorycode = $input->param('categorycode'); + my $op = $input->param('op') || 'list'; + my $message; + my $library; + + #Take the text 'branchname' and store it in the @fields array + my @fields = qw( + branchname + ); + + $template->param('branchcode'=>$branchcode); + $branchcode =~ s|\s||g; # Use a regular expression to check the value of the inputted branchcode + + #Create a new library object and store the branchcode and @fields array values in this new library object + my $library = Koha::Library->new( + { branchcode => $branchcode, + ( map { $_ => scalar $input->param($_) || undef } @fields ) + } + ); + + eval { $library->store; }; #Use the eval{} function to store the library object + if($library){ + $message = 'success_on_insert'; + }else{ + $message = 'error_on_insert'; + } + + $template->param('message' => $message); + + +#Check if the $step variable equals 2 i.e. the user has clicked to create a patron category in the create patron category screen 1 +}elsif ( $step && $step == 2 ){ + my $createcat = $query->param('createcat'); #Store the inputted category code and name in $createcat + $template->param('createcat'=>$createcat); + + #Initialising values + my $searchfield = $input->param('description') // q||; + my $categorycode = $input->param('categorycode'); + my $op = $input->param('op') // 'list'; + my $message; + my $category; + $template->param('categorycode' =>$categorycode); + + my ( $template, $loggedinuser, $cookie ) = C4::InstallAuth::get_template_and_user( + { + template_name => "/onboarding/onboardingstep2.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { parameters => 'parameters_remaining_permissions' }, + debug => 1, + } + ); + + #Once the user submits the page, this code validates the input and adds it + #to the database as a new patron category + $categorycode = $input->param('categorycode'); + my $description = $input->param('description'); + my $overduenoticerequired = $input->param('overduenoticerequired'); + my $category_type = $input->param('category_type'); + my $default_privacy = $input->param('default_privacy'); + my $enrolmentperiod = $input->param('enrolmentperiod'); + my $enrolmentperioddate = $input->param('enrolmentperioddate') || undef; + + #Converts the string into a date format + if ( $enrolmentperioddate) { + $enrolmentperioddate = output_pref( + { + dt => dt_from_string($enrolmentperioddate), + dateformat => 'iso', + dateonly => 1, + } + ); + } + +#Adds a new patron category to the database + $category = Koha::Patron::Category->new({ + categorycode=> $categorycode, + description => $description, + overduenoticerequired => $overduenoticerequired, + category_type=> $category_type, + default_privacy => $default_privacy, + enrolmentperiod => $enrolmentperiod, + enrolmentperioddate => $enrolmentperioddate, + }); + + eval { + $category->store; + }; + +#Error messages + if($category){ + $message = 'success_on_insert'; + }else{ + $message = 'error_on_insert'; + } + + $template->param('message' => $message); + +#Create a patron +}elsif ( $step && $step == 3 ){ + my $firstpassword = $input->param('password'); + my $secondpassword = $input->param('password2'); + +#Find all library records in the database and hand them to the template to display in the library dropdown box + my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, ); + $template->param(libraries => $libraries, + group_types => [ + { categorytype => 'searchdomain', + categories => [ Koha::LibraryCategories->search( { categorytype => 'searchdomain' } ) ], + }, + { categorytype => 'properties', + categories => [ Koha::LibraryCategories->search( { categorytype => 'properties' } ) ], + }, + ] + ); + +#Find all patron categories in the database and hand them to the template to display in the patron category dropdown box + my $categories= Koha::Patron::Categories->search(); + $template->param( + categories => $categories, + ); + +#Incrementing the highest existing patron cardnumber to prevent duplicate cardnumber entry + my $exisiting_cardnumber = my $sth_search = $dbh->prepare("SELECT MAX(cardnumber) FROM borrowers"); + my $new_cardnumber = $exisiting_cardnumber + 1; + warn $new_cardnumber; + $template->param("newcardnumber" => $new_cardnumber); + + + + my $op = $input->param('op') // 'list'; + my $minpw = C4::Context->preference("minPasswordLength"); + $template->param("minPasswordLength" => $minpw); + + my @messages; + my @errors; + my $nok = $input->param('nok'); + my $firstpassword = $input->param('password'); + my $secondpassword = $input->param('password2'); + my $cardnumber= $input->param('cardnumber'); + my $borrowernumber= $input->param('borrowernumber'); + my $userid=$input->param('userid'); + +#If the entered cardnumber causes an error hand this error to the @errors array + if(my $error_code = checkcardnumber($cardnumber, $borrowernumber)){ + push @errors, $error_code == 1 + ? 'ERROR_cardnumber_already_exists' + :$error_code == 2 + ? 'ERROR_cardnumber_length' + :() + } + +#If the entered password causes an error hand this error to the @errors array + push @errors, "ERROR_password_mismatch" if $firstpassword ne $secondpassword; + push @errors, "ERROR_short_password" if ($firstpassword && $minpw && $firstpassword ne '****' && (length($firstpassword) < $minpw)); + + +#Passing errors to template + $nok = $nok || scalar(@errors); + +#If errors have been generated from the users inputted cardnumber or password then display the error and do not insert the patron into the borrowers table + if($nok){ + foreach my $error (@errors){ + if ($error eq 'ERROR_password_mismatch'){ + $template->param(errorpasswordmismatch => 1); + } + if ($error eq 'ERROR_login_exist'){ + $template->param(errorloginexists =>1); + } + if ($error eq 'ERROR_cardnumber_already_exists'){ + $template->param(errorcardnumberexists => 1); + } + if ($error eq 'ERROR_cardnumber_length'){ + $template->param(errorcardnumberlength => 1); + } + if ($error eq 'ERROR_short_password'){ + $template->param(errorshortpassword => 1); + } + } + $template->param('nok' => 1); + +#Else if no errors have been caused by the users inputted card number or password then insert the patron into the borrowers table + }else{ + my ($template, $loggedinuser, $cookie)= C4::InstallAuth::get_template_and_user({ + template_name => "/onboarding/onboardingstep3.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {borrowers => 1}, + debug => 1, + }); + + if($op eq 'add_validate'){ + my %newdata; + +#Store the template form values in the newdata hash + $newdata{borrowernumber} = $input->param('borrowernumber'); + $newdata{surname} = $input->param('surname'); + $newdata{firstname} = $input->param('firstname'); + $newdata{cardnumber} = $input->param('cardnumber'); + $newdata{branchcode} = $input->param('libraries'); + $newdata{categorycode} = $input->param('categorycode_entry'); + $newdata{userid} = $input->param('userid'); + $newdata{password} = $input->param('password'); + $newdata{password2} = $input->param('password2'); + $newdata{dateexpiry} = '12/10/2016'; + $newdata{privacy} = "default"; + + +#Hand the newdata hash to the AddMember subroutine in the C4::Members module and it creates a patron and hands back a borrowernumber which is being stored + my $borrowernumber = &AddMember(%newdata); + +#Create a hash named member2 and fill it with the borrowernumber of the borrower that has just been created + my %member2; + $member2{'borrowernumber'}=$borrowernumber; + +#Perform data validation on the flag that has been handed to onboarding.pl by the template + my $flag = $input->param('flag'); + if ($input->param('newflags')) { + my $dbh=C4::Context->dbh(); + my @perms = $input->multi_param('flag'); + my %all_module_perms = (); + my %sub_perms = (); + foreach my $perm (@perms) { + if ($perm !~ /:/) { + $all_module_perms{$perm} = 1; + } else { + my ($module, $sub_perm) = split /:/, $perm, 2; + push @{ $sub_perms{$module} }, $sub_perm; + } + } + + # construct flags + my $module_flags = 0; + my $sth=$dbh->prepare("SELECT bit,flag FROM userflags ORDER BY bit"); + $sth->execute(); + while (my ($bit, $flag) = $sth->fetchrow_array) { + if (exists $all_module_perms{$flag}) { + $module_flags += 2**$bit; + } + } + +#Set the superlibrarian permission of the newly created patron to superlibrarian + $sth = $dbh->prepare("UPDATE borrowers SET flags=? WHERE borrowernumber=?"); + $sth->execute($module_flags, $borrowernumber); + + + #Error handling checking if the patron was created successfully + if(!$borrowernumber){ + push @messages, {type=> 'error', code => 'error_on_insert'}; + }else{ + push @messages, {type=> 'message', code => 'success_on_insert'}; + } + } + } + } + + }elsif ( $step && $step == 4){ + my $createitemtype = $input->param('createitemtype'); + $template->param('createitemtype'=> $createitemtype ); + + + my( $template, $borrowernumber, $cookie) = C4::InstallAuth::get_template_and_user( + { template_name => "/onboarding/onboardingstep4.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { parameters => 'parameters_remaining_permissions'}, + debug => 1, + } + ); + + if($op eq 'add_validate'){ + my $description = $input->param('description'); + my $itemtype_code = $input->param('itemtype'); + $itemtype_code = uc($itemtype_code); + #Create a new itemtype object using the user inputted itemtype and description + my $itemtype= Koha::ItemType->new( + { itemtype => $itemtype_code, + description => $description, + } + ); + + eval{ $itemtype->store; }; + + my $message; + +#Fill the $message variable with an error if the item type object was not successfully created and inserted into the itemtypes table + if($itemtype){ + $message = 'success_on_insert'; + }else{ + $message = 'error_on_insert'; + } + + $template->param('message' => $message); + } +}elsif ( $step && $step == 5){ + + #Find all the existing categories to display in a dropdown box in the template + my $categories; + $categories= Koha::Patron::Categories->search(); + $template->param( + categories => $categories, + ); + + #Find all the exisiting item types to display in a dropdown box in the template + my $itemtypes; + $itemtypes= Koha::ItemTypes->search(); + $template->param( + itemtypes => $itemtypes, + ); + + #Find all the exisiting libraries to display in a dropdown box in the template + my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, ); + $template->param(libraries => $libraries, + group_types => [ + { categorytype => 'searchdomain', + categories => [ Koha::LibraryCategories->search( { categorytype => 'searchdomain' } ) ], + }, + { categorytype => 'properties', + categories => [ Koha::LibraryCategories->search( { categorytype => 'properties' } ) ], + }, + ] + ); + + my $input = CGI->new; + my $dbh = C4::Context->dbh; + + my ($template, $loggedinuser, $cookie) = C4::InstallAuth::get_template_and_user({template_name => "/onboarding/onboardingstep5.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 'manage_circ_rules'}, + debug => 1, + }); + +#If no libraries exist then set the $branch value to * + my $branch = $input->param('branch'); + unless ( $branch ) { + if ( C4::Context->preference('DefaultToLoggedInLibraryCircRules') ) { + $branch = Koha::Libraries->search->count() == 1 ? undef : C4::Context::mybranch(); + } + else { + $branch = C4::Context::only_my_library() ? ( C4::Context::mybranch() || '*' ) : '*'; + } + } + $branch = '*' if $branch eq 'NO_LIBRARY_SET'; + my $op = $input->param('op') || q{}; + + if($op eq 'add_validate'){ + my $type = $input->param('type'); + my $br = $input->param('branch'); + my $bor = $input->param('categorycode'); + my $itemtype = $input->param('itemtype'); + my $maxissueqty = $input->param('maxissueqty'); + my $issuelength = $input->param('issuelength'); + my $lengthunit = $input->param('lengthunit'); + my $renewalsallowed = $input->param('renewalsallowed'); + my $renewalperiod = $input->param('renewalperiod'); + my $onshelfholds = $input->param('onshelfholds') || 0; + $maxissueqty =~ s/\s//g; + $maxissueqty = undef if $maxissueqty !~ /^\d+/; + $issuelength = $issuelength eq q{} ? undef : $issuelength; + + my $params ={ + branchcode => $br, + categorycode => $bor, + itemtype => $itemtype, + maxissueqty => $maxissueqty, + renewalsallowed => $renewalsallowed, + renewalperiod => $renewalperiod, + issuelength => $issuelength, + lengthunit => $lengthunit, + onshelfholds => $onshelfholds, + }; + + my @messages; + +#New code from smart-rules.tt starts here. Needs to be added to library +#Allows for the 'All' option to work when selecting all libraries for a circulation rule to apply to. + if ($branch eq "*") { + my $sth_search = $dbh->prepare("SELECT count(*) AS total + FROM default_circ_rules"); + my $sth_insert = $dbh->prepare("INSERT INTO default_circ_rules + (maxissueqty, onshelfholds) + VALUES (?, ?)"); + my $sth_update = $dbh->prepare("UPDATE default_circ_rules + SET maxissueqty = ?, onshelfholds = ?"); + + $sth_search->execute(); + my $res = $sth_search->fetchrow_hashref(); + if ($res->{total}) { + $sth_update->execute($maxissueqty, $onshelfholds); + } else { + $sth_insert->execute($maxissueqty, $onshelfholds); + } + } + + +#Allows for the 'All' option to work when selecting all patron categories for a circulation rule to apply to. + if ($bor eq "*") { + my $sth_search = $dbh->prepare("SELECT count(*) AS total + FROM default_circ_rules"); + my $sth_insert = $dbh->prepare(q| + INSERT INTO default_circ_rules + (maxissueqty) + VALUES (?) + |); + my $sth_update = $dbh->prepare(q| + UPDATE default_circ_rules + SET maxissueqty = ? + |); + + $sth_search->execute(); + my $res = $sth_search->fetchrow_hashref(); + if ($res->{total}) { + $sth_update->execute($maxissueqty); + } else { + $sth_insert->execute($maxissueqty); + } + } +#Allows for the 'All' option to work when selecting all itemtypes for a circulation rule to apply to + if ($itemtype eq "*") { + my $sth_search = $dbh->prepare("SELECT count(*) AS total + FROM default_branch_circ_rules + WHERE branchcode = ?"); + my $sth_insert = $dbh->prepare("INSERT INTO default_branch_circ_rules + (branchcode, onshelfholds) + VALUES (?, ?)"); + my $sth_update = $dbh->prepare("UPDATE default_branch_circ_rules + SET onshelfholds = ? + WHERE branchcode = ?"); + $sth_search->execute($branch); + my $res = $sth_search->fetchrow_hashref(); + if ($res->{total}) { + $sth_update->execute($onshelfholds, $branch); + } else { + $sth_insert->execute($branch, $onshelfholds); + } + } +#End new code + + my $issuingrule = Koha::IssuingRules->find({categorycode => $bor, itemtype => $itemtype, branchcode => $br }); + if($issuingrule){ + $issuingrule->set($params)->store(); + push @messages, {type=> 'error', code => 'error_on_insert'};#Stops crash of the onboarding tool if someone makes a circulation rule with the same item type, library and patron categroy as an exisiting circulation rule. + + }else{ + Koha::IssuingRule->new()->set($params)->store(); + } + } +} + +output_html_with_http_headers $input, $cookie, $template->output; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc @@ -6,7 +6,7 @@ var debug = "[% debug %]"; var dformat = "[% dateformat %]"; var sentmsg = 0; if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} -var MSG_PLEASE_ENTER_A_VALID_DATE = _("Please enter a valid date (should match %s)."); +var MSG_PLEASE_ENTER_A_VALID_DATE = (_("Please enter a valid date (should match %s).")); function is_valid_date(date) { // An empty string is considered as a valid date for convenient reasons. --- a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc @@ -42,6 +42,8 @@
  • Administration
  • [% END %]
  • About Koha
  • +
  • Summary
  • + --- a/koha-tmpl/intranet-tmpl/prog/en/includes/installer-doc-head-close.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/installer-doc-head-close.inc @@ -1,5 +1,9 @@ + + + + + + + + + + + + + + + +[% END %] +[% IF ( finish ) %] +

    Congratulations, installation complete

    +

    If this page does not redirect in 5 seconds, click here.

    +[% END %] +[% IF ( choosemarc ) %] +

    Select your MARC flavor

    +
    + + +

    + [% FOREACH flavourloo IN flavourloop %] +

    + [% IF ( flavourloo.checked ) %] + [% flavourloo.label %]
    + [% ELSE %] + [% flavourloo.label %]
    + [% END %] +
    + [% END %] +

    +

    Click 'Next' to continue

    +
    +[% END %] + +[% IF ( selectframeworks ) %] +

    Selecting Default Settings

    + +
    + + + + [% IF ( frameworksloop ) %] +

    MARC frameworks: [% marcflavour %]

    + [% IF ( en_marc_frameworks ) %] +

    No MARC frameworks are available for your language. + Defaulting to the frameworks supplied for English (en)

    + [% END %] + [% FOREACH frameworksloo IN frameworksloop %] +
    +

    [% frameworksloo.label %]

    + [% FOREACH framework IN frameworksloo.frameworks %] + + + + +
    + [% IF ( framework.checked ) %] + + [% ELSE %] + + [% END %] + + +
    + [% END %] +
    + [% END %] +

    Other data

    + [% END %] + [% IF ( en_sample_data ) %] +

    No sample data and settings are available for your language. + Defaulting to the samples supplied for English (en)

    + [% END %] + [% FOREACH levelloo IN levelloop %] +
    +

    [% levelloo.label %]

    + [% FOREACH framework IN levelloo.frameworks %] + + + + +
    + [% IF ( framework.checked ) %] + + [% ELSE %] + + [% END %] + + +
    + [% END %] +
    + [% END %] +

    When you've made your selections, please click 'Import' below to begin the process. It may take a while to complete, + please be patient.

    +

    +

    +
    +[% END %] + + +[% IF ( addframeworks ) %] + [% FOREACH lis IN list %] +

    [% lis.level %] data added

    + + [% END %] +

    All done!

    +

    Installation complete.
    +

    Click on 'Finish' to complete and load the Koha Staff Interface. +

    + + +
    +

    +

    +[% END %] + + +[% IF ( importdatastructure ) %] + [% IF ( error ) %] +

    The following error occurred while importing the database structure:

    +

    [% error %]

    +

    Please contact your system administrator

    + [% ELSE %] +

    Success

    + +
    + +

    Click 'Next' to continue

    +
    + [% END %] +[% END %] + + +[% IF ( proposeimport ) %] +

    Now we're ready to create the database tables and fill them with some default data.

    +
    + + +

    Click 'Next' to continue

    +
    +[% END %] + + +[% IF ( default ) %] + [% IF ( upgrading ) %] +

    + We are upgrading from Koha [% dbversion %] to [% kohaversion %], you must update your database +

    + [% ELSE %] +

    We are ready to do some basic configuration. Please install some basic configuration settings to continue the installation: +
    +
    + +

    + [% END %] +[% END %] + + + +[% IF ( updatestructure ) %] +

    Updating database structure

    + [% IF ( has_update_succeeds ) %] +

    Update report :

    +
      + [% FOREACH update_repor IN update_report %] +
    • [% update_repor.line |html %]
    • + [% END %] +
    + [% END %] + [% IF ( has_update_errors ) %] +

    Update errors :

    +
      + [% FOREACH update_error IN update_errors %] +
    • [% update_error.line |html %]
    • + [% END %] +
    + [% END %] + [% UNLESS ( has_update_errors ) %] +

    Everything went OK, update done.

    + [% END %] +Continue to log in to Koha +
    +[% END %] + + + + --- a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step3.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step3.tt @@ -1,96 +1,116 @@ [% INCLUDE 'doc-head-open.inc' %]Koha › Web installer › Step 3 -[% IF ( finish ) %][% END %] +[% IF ( finish ) %][% END %] [% INCLUDE 'installer-doc-head-close.inc' %]
    -

    Koha Web installer › Step 3

    +

    Koha Koha web installer › Step 3

    [% IF ( selectframeworks ) %] +function Hide(link) +{ + // Toggle the display of a given element on the page. + // + subfield = document.getElementById('bloc'+link); + var initstyle = subfield.style.display; + if (initstyle == 'block') subfield.style.display = 'none' ; + if (initstyle == 'none') subfield.style.display = 'block' ; +} + +//]]> + [% END %] + + [% IF ( finish ) %]

    Congratulations, installation complete

    -

    If this page does not redirect in 5 seconds, click here.

    +

    If this page does not redirect in 5 seconds, click here.

    [% END %] + + [% IF ( choosemarc ) %] -

    Select your MARC flavor

    +

    Choose your setup

    +

    Basic setup selects recommended settings by default.

    - + + +
    + Basic
    + Advanced
    +
    + +

    Select your MARC flavor

    +

    MARC stands for Machine Readable Cataloging, containing information about a bibliographic record. MARC21 is more commonly used globally, whereas UNIMARC tends to be used in Europe.

    +

    [% FOREACH flavourloo IN flavourloop %]

    - [% IF ( flavourloo.checked ) %] - [% flavourloo.label %]
    + [% IF ( flavourloo.label == "Unimarc") %] + [% flavourloo.label %]
    [% ELSE %] - [% flavourloo.label %]
    + [% flavourloo.label %]
    [% END %]
    [% END %] -

    -

    Click 'Next' to continue

    + +

    +

    Click 'Next' to continue

    +
    + [% END %] + [% IF ( selectframeworks ) %] +

    [% setup %] setup

    Selecting Default Settings

    +
    @@ -108,19 +128,31 @@ [% FOREACH framework IN frameworksloo.frameworks %] - - + + [% ELSE %] + + [% END %] +
    - [% IF ( framework.checked ) %] - - [% ELSE %] - - [% END %] - + + [% IF (frameworksloo.label == "Default") && (setup=="Basic") %] + + [% ELSE %] + + [% END %] + + [% IF (frameworksloo.label == "Default") && (setup=="Basic") %] +
      +
    +
    +
    [% END %]
    @@ -138,18 +170,30 @@ + [% ELSE %] + + [% END %] +
    - [% IF ( framework.checked ) %] - - [% ELSE %] - - [% END %] + [% IF (levelloo.label == "Default" ) && (setup=="Basic")%] + + [% ELSE %] + + [% END %] + [% IF (levelloo.label == "Default") && (setup=="Basic")%] +
      +
    + +
    [% END %] @@ -173,11 +217,12 @@ [% END %]

    All done!

    Installation complete.
    -

    Click on 'Finish' to complete and load the Koha Staff Interface. +

    Click on 'Continue to onboarding tool' to complete and load the Koha onboarding tool. - + +

    [% END %] @@ -214,13 +259,16 @@ [% IF ( default ) %] [% IF ( upgrading ) %]

    - We are upgrading from Koha [% dbversion %] to [% kohaversion %], you must update your database + We are upgrading from Koha [% dbversion %] to [% kohaversion %], you must update your database. +
    +

    [% ELSE %] -

    We are ready to do some basic configuration. Please - install basic configuration settings - to continue the installation. -

    +

    We are ready to do some basic configuration. Please install some basic configuration settings to continue the installation: +
    +
    + + [% END %] [% END %] @@ -247,7 +295,7 @@ [% UNLESS ( has_update_errors ) %]

    Everything went OK, update done.

    [% END %] -Continue to log in to Koha + [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt @@ -1,5 +1,3 @@ -[% USE Koha %] -[% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] Koha staff client --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep0.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep0.tt @@ -0,0 +1,18 @@ + +[% INCLUDE 'doc-head-open.inc' %] +[% INCLUDE 'installer-doc-head-close.inc' %] + + +Welcome › to › Koha + + + +
    +

    Welcome to Koha

    +

    Koha

    +

    We're just going to set up a few more things...

    +
    + + +
    +
    --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep1.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep1.tt @@ -0,0 +1,81 @@ + +[% INCLUDE 'doc-head-open.inc' %] +[% INCLUDE 'installer-doc-head-close.inc' %] + + +Welcome › to › Koha + + + +
    +

    Welcome to Koha

    +

    Koha

    +
    + [% IF libraries.count > 0 %] +
    +

    You do not need to create a library as you have already installed the sample library data previously

    +
    + +
    + +
    +
    + + +[% ELSIF (createlibrary) %] + + [% IF message == "success_on_insert" %] +
    + +

    New Library

    +
    +

    Success: Library created! +

    +

    To add another library and for more settings,
    + go to:

    + More->Administration->Libraries and groups
    + OR
    + Administration->Libraries and groups +

    +
    + Next up: + +
    + + [%ELSE %] + +
    + +

    Failed

    +
    +

    Library was not successfully created
    + Please try again or contact your system administrator.

    +
    + +
    + [%END%] + +[% ELSE %] + +

    Create a Library

    +
    +
    + + +
      +
    1. + + + Required +
    2. +
    3. + + + Required +
    4. +
    +
    +
    + +
    +[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep2.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep2.tt @@ -0,0 +1,407 @@ + +[% USE Koha %] +[% USE KohaDates %] +[% USE Price %] +[% INCLUDE 'doc-head-open.inc' %] + Add a patron category +[% INCLUDE 'installer-doc-head-close.inc' %] +[% INCLUDE 'calendar.inc' %] + + + + + + + + + +
    +

    Welcome to Koha

    +

    Koha

    +
    + + +[% IF categories.count > 0 %] +
    +

    You do not need to create a patron category as you have already installed the sample patron categories data previously

    +
    + +
    + +
    +
    + + +[% ELSIF createcat %] + [% IF message != "error_on_insert" %] +
    + +

    New patron category

    +
    +

    Success: Patron category created!

    +

    To add another patron category and for more settings
    + go to:
    + More->Administration->Patron categories
    + OR
    + Administration->Patron categories

    +
    + Next up:
    + +
    + [% ELSE %] +
    + Message is [% message %] + +

    Failed

    +
    Patron Category was not successfully created.
    + Please try again or contact your system administrator.

    +
    + +
    + [% END %] + + +[% ELSE %] +

    Create a new Patron Category

    +
    +
    + + +
      +
    1. + + + Required +
    2. + +
    3. + + + Required +
    4. + +
    5. + + +
    6. + +
    7. + + + Required +
    8. + +
    9. + + +

      Controls how long a patrons checkout history is kept for new patrons of this category. "Never" anonymizes checkouts on return, and "Forever" keeps a patron's checkout history indefinitely. When set to "Default", the amount of history kept is controlled by the cronjob batch_anonymise.pl which should be set up by your system administrator.

      +
    10. + + Enrolment period: +
      +
      + Choose one +
        +
      1. + + months +
      2. +
      3. + + +
      4. +
      +
      +
      + + +[% END %] + +[% INCLUDE 'intranet-bottom.inc' %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep3.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep3.tt @@ -0,0 +1,206 @@ + +[% USE Koha %] +[% USE KohaDates %] +[% USE Price %] + +[% INCLUDE 'doc-head-open.inc' %] +[% IF ( finish ) %][% END%] +[% INCLUDE 'installer-doc-head-close.inc' %] +[% INCLUDE 'calendar.inc' %] +[% INCLUDE 'datatables.inc' %] + + + +Create Patron + + + + + + + +
      +

      Welcome to Koha

      +

      Koha

      +
      + + +[% IF (nok) %] +
      + +

      There was an error

      +

      Try again

      +
      +
        + [% IF errorloginexists %] +
      • Username/password already exists.
      • + [% END %] + [% IF errorcardnumberexists %] +
      • Cardnumber already in use.
      • + [% END %] + [% IF errorcardnumberlength %] +
      • Cardnumber length is incorrect
      • + [% END %] + [% IF errorshortpassword %] +
      • Password length is incorrect, must be at least [% minPasswordLength %] characters long.
      • + [% END %] + [% IF errorpasswordmismatch %] +
      • Passwords do not match.
      • + [% END %] +
      + +
      + +
      + + + +[% ELSIF op == 'add_validate' %] + +
      + +

      New Patron

      +
      +

      Success: New patron created!

      +

      To create another patron, go to Patrons > New Patron.
      + More > Set Permissions in a user page to gain superlibrarian permissions. +

      + Next up: + +
      +[% ELSE %] + +

      Create a new Patron

      + Library Management +

      + Now we will create a patron with superlibrarian permissions. Login with this to access Koha as a staff member will all permissions. +

      +
      +
      + + + Library Management +

      + Now we will create a patron with superlibrarian permissions. Login with this to access Koha as a staff member will all permissions. +

      + +
        +

        Patron Identity

        +
      1. + + + + Required +
      2. +
      3. + + + Required +
      4. +
      + +
        +
      1. + + + Required +
      2. +
      3. + + + + Required +
      4. +
      5. + + + Required

        + Note: If you installed sample patron categories please select the "Staff" option in the Patron Categories dropdown box. +
      6. +
      + +
        +

        Patron permissions

        + +
      1. + + +
      2. +
      +
        +

        OPAC/Staff Login

        +
      1. + + + Required +
      2. +
      3. + + + Required +
      4. +
      5. + + + Required +
      6. +
      +

      + +
      +[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep4.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep4.tt @@ -0,0 +1,81 @@ + +[% INCLUDE 'doc-head-open.inc' %] + +[% IF ( finish ) %][% END %] +[% INCLUDE 'installer-doc-head-close.inc' %] + + +Create item type + + + + + + + +
      +

      Welcome to Koha

      +

      Koha

      +
      + +[% IF itemtypes.count > 0 %] +
      +

      You do not need to create a item type as you have already installed the sample item type data previously

      +
      + +
      + +
      +
      + + + +[% ELSIF op == "add_validate" %] + + [% IF message != "error_on_insert" %] +
      + +

      New Item type

      + +
      +

      Success: New item type created!

      +

      To create another item type later and for more setttings
      + go to More->Administration->Item types +

      + Next up: + +
      + [% ELSE %] +
      + +

      Failed

      +
      +

      Item type was not successfully created.
      + Please try again or contact your system administrator.

      +
      +
      + [% END %] +[% ELSE %] + +

      Create a new Item type

      +
      +
      + + +
        +
      1. + + + Required +
      2. +
      3. + + + Required +
      4. +
      +

      + +
      +[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt @@ -0,0 +1,125 @@ +[% INCLUDE 'doc-head-open.inc' %] +Create Circulation rule +[% IF ( finish ) %][% END %] +[% INCLUDE 'installer-doc-head-close.inc' %] + + +
      +

      Welcome to Koha

      +

      Koha

      +
      + +[% IF (finish) %] +

      Congratulations you have finished and ready to use Koha

      +Start using Koha + +[% END %] + + +[% IF op == "add_validate" %] + +
      + +

      New Circulation rule

      +
      +

      Success: New circulation rule created!

      +

      To create circulation rule, go to
      + More->Administration->Circulation and Fine Rules +

      + Next up: + +
      +[% ELSE %] + +

      Create a new Circulation rule

      +
      +
      + + +
        +
      1. + + + Required +
      2. +
      3. + + + Required +
      4. + +
      5. + + + Required +
      6. +
      7. + + + Required +
      8. + +
      9. + + + Required +
      10. +
      11. + + +
      12. +
      13. + + + Required +
      14. + +
      15. + + + Required +
      16. + +
      17. + + +
      18. +
      +

      + +
      +[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/summary.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/summary.tt @@ -0,0 +1,41 @@ +[% USE Koha %] +[% INCLUDE 'doc-head-open.inc' %] +Koha Tutorial Summary +[% INCLUDE 'doc-head-close.inc' %] + + +[% INCLUDE 'header.inc' %] +[% INCLUDE 'cat-search.inc' %] + + + +
      +
      +
      +

      Tutorial Summary Page

      +
      +

      Library

      +

      To add another library and for more settings, go to
      + More > Administration > Libraries and Groups

      + +

      Patron Category

      +

      To add another patron category and for more settings, go to
      + More > Administration > Patrons and Circulation > Patron Categories

      + +

      Patron

      +

      To create another patron, go to Patrons > New Patron. To set the
      + permissions of the patron, go to the patron's page and More > Set Permissions

      + +

      Item Type

      +

      To create another item type and for more settings, go to
      + More > Administration > Item types

      + +

      Circulation Rule

      +

      To create another circulation rule, go to
      + More > Administration > Circulation and Fine Rules + +

      +
      +
      +[% INCLUDE 'intranet-bottom.inc' %] --- a/summary.pl +++ a/summary.pl @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +# Copyright Pat Eyler 2003 +# Copyright Biblibre 2006 +# Parts Copyright Liblime 2008 +# Parts Copyright Chris Nighswonger 2010 +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use CGI qw ( -utf8 ); +use List::MoreUtils qw/ any /; +use LWP::Simple; +use XML::Simple; +use Config; + +use C4::Output; +use C4::Auth; +use C4::Context; +use C4::Installer; + +use Koha; +use Koha::Acquisition::Currencies; +use Koha::Patrons; +use Koha::Caches; +use Koha::Config::SysPrefs; +use C4::Members::Statistics; + +#use Smart::Comments '####'; + +my $query = new CGI; +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "summary.tt", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + debug => 1, + } +); + + +output_html_with_http_headers $query, $cookie, $template->output; --