From cb6a74d3415e5e16c7e3155d752c714b4daaeb80 Mon Sep 17 00:00:00 2001 From: Alex Buckley Date: Sun, 29 Jan 2017 11:33:35 +0000 Subject: [PATCH] Bug 18060 - Label onboarding tool to be displayed when no labels or templates exist Updated to apply cleanly with bug 18002 Please follow the test plan on comment 8 --- C4/Creators/Layout.pm | 13 ++ C4/Creators/Profile.pm | 11 ++ C4/Creators/Template.pm | 11 ++ .../prog/en/includes/onboardinginclude1.inc | 146 +++++++++++++++++++++ .../prog/en/includes/onboardinginclude2.inc | 115 +++++++++++++++- .../prog/en/modules/acqui/acqui-home.tt | 5 +- .../prog/en/modules/labels/label-home.tt | 8 +- labels/label-edit-layout.pl | 31 +++-- labels/label-edit-template.pl | 11 +- labels/label-home.pl | 70 ++++++++++ 10 files changed, 402 insertions(+), 19 deletions(-) diff --git a/C4/Creators/Layout.pm b/C4/Creators/Layout.pm index f1dc20e..e806499 100644 --- a/C4/Creators/Layout.pm +++ b/C4/Creators/Layout.pm @@ -8,6 +8,7 @@ use autouse 'Data::Dumper' => qw(Dumper); use C4::Context; use C4::Debug; use C4::Creators::PDF; +use C4::Creators; # FIXME: Consider this style parameter verification instead... @@ -111,6 +112,17 @@ sub retrieve { return $self; } +sub retrieve_all { + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("select count(*) from creator_layouts where creator = 'Labels' group by creator"); + my $layout = $sth->execute(); + if ($layout == '0E0'){ + return 0; + } else { + return $layout; + } +} + sub delete { my $self = {}; my %opts = (); @@ -234,6 +246,7 @@ sub get_text_wrap_cols { return $col_count; } + 1; __END__ diff --git a/C4/Creators/Profile.pm b/C4/Creators/Profile.pm index 37512fa..ba82145 100644 --- a/C4/Creators/Profile.pm +++ b/C4/Creators/Profile.pm @@ -90,6 +90,17 @@ sub retrieve { return $self; } +sub retrieve_all { + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("select count(*) from printers_profile where creator = 'Labels' group by creator"); + my $profile = $sth->execute(); + if ($profile == '0E0'){ + return 0; + } else { + return $profile; + } +} + sub delete { my $self = {}; my %opts = (); diff --git a/C4/Creators/Template.pm b/C4/Creators/Template.pm index ee504d7..87240b9 100644 --- a/C4/Creators/Template.pm +++ b/C4/Creators/Template.pm @@ -131,6 +131,17 @@ sub retrieve { return $self; } +sub retrieve_all { + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("select count(*) FROM creator_templates ct where creator = 'Labels' group by creator"); + my $templatecount = $sth->execute(); + if ($templatecount == '0E0'){ + return 0; + } else { + return $templatecount; + } +} + sub delete { my $self = {}; my %opts = (); diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude1.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude1.inc index 15f123b..adf2bd9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude1.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude1.inc @@ -13,6 +13,25 @@ } +[% BLOCK translate_justification_types %] + [% SWITCH type %] + [% CASE 'L' %]Left + [% CASE 'C' %]Center + [% CASE 'R' %]Right + [% END %] +[% END %] + +[% BLOCK translate_label_types %] + [% SWITCH type %] + [% CASE 'BIB' %]Biblio + [% CASE 'BARBIB' %]Barcode/Biblio + [% CASE 'BIBBAR' %]Biblio/Barcode + [% CASE 'ALT' %]Alternating + [% CASE 'BAR' %]Barcode + [% END %] +[% END %] + +[% IF displayonboarding =="acquisitions" %]

Acquisition onboarding wizard

This onboarding wizard will take you through the process of setting up Acquistions

@@ -57,3 +76,130 @@
+ +[% ELSIF displayonboarding == "label" %] +
+
+
+ [% IF ( layout_id ) %]Edit[% ELSE %]Create[% END %] label layout +
    +
  1. + + +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. +
    + Bibliographic data to print +
      +
    1. [% IF ( layout_string ) %] + + [% ELSE %] + + [% END %] +
      +

      + [% FOREACH text_field IN fields %] +   +    + [% END %] +

      +
      +
    +
  8. +
  9. + + [% IF ( guidebox ) %] + + [% ELSE %] + + [% END %] +
  10. +
  11. + + [% IF ( callnum_split ) %] + + [% ELSE %] + + [% END %] +
  12. +
  13. + + +
  14. +
  15. + + +
  16. +
  17. + + +
  18. +
  19. + + [% IF ( oblique_title ) %] + + [% ELSE %] + + [% END %] +
  20. +
+ +
+ + Cancel + + + +
+ +
+[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude2.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude2.inc index b88fab9..bd16f24 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude2.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/onboardinginclude2.inc @@ -13,7 +13,7 @@ }
- [% IF displayonboardscreen == "acquisitions" %] + [% IF displayonboarding == "acquisitions" %]

Acquisition onboarding wizard

Create a budget which is the highest level value in acquisitions accountancy.
After creating this budget you will be prompted to create a fund which is what you will use to set up orders. @@ -57,7 +57,112 @@ -

- [% ELSIF displayonboardscreen == "label" %] -

testing

- [% END %] + [% ELSIF displayonboarding == "label" %] +
+
+
    +
  1. + Template ID:[% IF ( template_id ) %][% template_id %][% ELSE %]N/A[% END %] +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. + + +
  8. +
  9. + + +
  10. +
  11. + + +
  12. +
  13. + + +
  14. +
  15. + + +
  16. +
+
+
+
  1. + + +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. + + +
  8. +
  9. + + +
  10. +
  11. + + +
  12. +
  13. + + +
  14. +
  15. + + +
  16. + +
  17. + + [% IF ( profile_list ) %] + + [% ELSE %] + Click here to define a printer profile. + [% END %] +
  18. +
+ Cancel + + [% IF ( template_id ) %] + + [% END %] +
+
+[% END %] + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt index 90897b7..bc8b9f5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt @@ -92,6 +92,7 @@ $(document).ready(function() { $("#show").click(function(){ $("#aqhelp").show(); }); + }); //]]> @@ -112,7 +113,7 @@ $(document).ready(function() { [% INCLUDE 'acquisitions-toolbar.inc' %] [% UNLESS ( loop_budget ) %] [% IF ( CAN_user_acquisition_period_manage ) %] - [% displayonboardscreen = "acquisitions" %] + [% displayonboarding = "acquisitions" %] [% IF step == 1 %] [% INCLUDE onboardinginclude1.inc %] [% ELSIF step == 2 %] @@ -265,7 +266,7 @@ $(document).ready(function() { Click here to create a vendor.

2. Create your first basket

-

A basket is the conceptual container that holds orders. Each basket is assigned to a single vendor so you can perform multiple separate orders from a single vendor simultaneously. Because of its reliance on vendor the basket must be created after the vendor

+

A basket is the conceptual container that holds orders. Each basket is assigned to a single vendor so you can perform multiple seperate orders from a single vendor simultaneously. Because of its reliance on vendor the basket must be created after the vendor

To create a basket, click the 'New basket' button on the Vendor Information page which is displayed after you create a vendor

3. Create an order

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-home.tt index f5e7725..c20ccce 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-home.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-home.tt @@ -20,7 +20,13 @@
[% INCLUDE 'labels-toolbar.inc' %]
- + [% IF !(layoutvalue) %] + [% displayonboarding = "label" %] + [% INCLUDE 'onboardinginclude1.inc' %] + [% ELSIF !(templatevalue) %] + [% displayonboarding = "label" %] + [% INCLUDE 'onboardinginclude2.inc' %] + [% END %]
diff --git a/labels/label-edit-layout.pl b/labels/label-edit-layout.pl index c1aafd4..8ee664c 100755 --- a/labels/label-edit-layout.pl +++ b/labels/label-edit-layout.pl @@ -123,20 +123,32 @@ elsif ($op eq 'save') { $layout = C4::Labels::Layout->new(@params); $layout_id = $layout->save(); } - print $cgi->redirect("label-manage.pl?label_element=layout" . ($layout_id == -1 ? "&element_id=$layout_id&op=$op&error=1" : '')); - exit; + + my $layoutvalue = C4::Creators::Layout->retrieve_all(); + my $templatecount = C4::Creators::Template->retrieve_all(); + $template->param( layoutvalue => $layoutvalue, + templatevalue => $templatecount, + ); + + if ($templatecount == 0) { + print $cgi->redirect("/cgi-bin/koha/labels/label-home.pl"); + exit; + } else { + print $cgi->redirect("label-manage.pl?label_element=layout" . ($layout_id == -1 ? "&element_id=$layout_id&op=$op&error=1" : '')); + exit; + } } else { # if we get here, this is a new layout $layout = C4::Labels::Layout->new(); } -my $barcode_types = _set_selected(get_barcode_types(), $layout, 'barcode_type'); -my $label_types = _set_selected(get_label_types(), $layout, 'printing_type'); -my $font_types = _set_selected(get_font_types(), $layout, 'font'); -my $text_justification_types = _set_selected(get_text_justification_types(), $layout, 'text_justify'); -my ($select_text_fields, $select_text_fields_cnt) = _select_format_string($layout->get_attr('format_string')); + my $barcode_types = _set_selected(get_barcode_types(), $layout, 'barcode_type'); + my $label_types = _set_selected(get_label_types(), $layout, 'printing_type'); + my $font_types = _set_selected(get_font_types(), $layout, 'font'); + my $text_justification_types = _set_selected(get_text_justification_types(), $layout, 'text_justify'); + my ($select_text_fields, $select_text_fields_cnt) = _select_format_string($layout->get_attr('format_string')); -$template->param( + $template->param( barcode_types => $barcode_types, label_types => $label_types, font_types => $font_types, @@ -151,5 +163,6 @@ $template->param( callnum_split => $layout->get_attr('callnum_split'), format_string => $layout->get_attr('format_string'), layout_string => 1, # FIXME: This should not be hard-coded; It should perhaps be yet another syspref... CN -); + ); + output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/labels/label-edit-template.pl b/labels/label-edit-template.pl index bcee714..d7d891b 100755 --- a/labels/label-edit-template.pl +++ b/labels/label-edit-template.pl @@ -111,8 +111,15 @@ elsif ($op eq 'save') { $profile->save(); } } - print $cgi->redirect("label-manage.pl?label_element=template"); - exit; + + my $profilevalue = C4::Creators::Profile->retrieve_all(); + if ($profilevalue == 0) { + print $cgi->redirect("label-edit-profile.pl"); + exit; + }else{ + print $cgi->redirect("/cgi-bin/koha/labels/label-home.pl"); + exit; + } } else { # if we get here, this is a new layout $label_template = C4::Labels::Template->new(); diff --git a/labels/label-home.pl b/labels/label-home.pl index ca581ac..4c5645b 100755 --- a/labels/label-home.pl +++ b/labels/label-home.pl @@ -22,9 +22,14 @@ use strict; use warnings; use CGI qw ( -utf8 ); +use POSIX; use C4::Auth qw(get_template_and_user); use C4::Output qw(output_html_with_http_headers); +use C4::Creators::Layout; +use C4::Creators::Template; +use C4::Creators; +use C4::Labels; my $cgi = new CGI; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -38,4 +43,69 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +my $op = $cgi->param('op') || ''; +my $layout_id = $cgi->param('layout_id') || $cgi->param('element_id') || ''; +my $layout_choice = $cgi->param('layout_choice') || ''; +my $layout = C4::Labels::Layout->new(); + +sub _set_selected { + my ($type_list, $object, $data_type) = @_; + SET_SELECTED: + foreach my $type (@$type_list) { + if ($layout->get_attr($data_type)) { + if ($type->{'type'} eq $layout->get_attr($data_type)) { + $type->{'selected'} = 1; + } + } + else { + $type->{'selected'} = 1; + last SET_SELECTED; + } +}; +return $type_list; +} + +sub _select_format_string { # generate field table based on format_string + my $format_string = shift; + + my @text_fields = grep /\w/, split /\s*,\s/, $format_string; + my %tf = map {$_ => 1} @text_fields; + my @missing_fields = grep { !$tf{$_} } @{ C4::Labels::Layout->PRESET_FIELDS }; + my $field_count = scalar(@text_fields) + scalar( @missing_fields); + + my @fields; + my $field_index = 1; + foreach my $f (@text_fields) { + push @fields, {field_name => ($f . "_tbl"), field_label => $f, order => $field_index}; + $field_index++; + } + foreach my $f (@missing_fields) { + push @fields, {field_name => ($f . "_tbl"), field_label => $f}; + } + return (\@fields, $field_count); +} + +my $barcode_types = _set_selected(get_barcode_types(), $layout, 'barcode_type'); +my $label_types = _set_selected(get_label_types(), $layout, 'printing_type'); +my $font_types = _set_selected(get_font_types(), $layout, 'font'); +my $text_justification_types = _set_selected(get_text_justification_types(), $layout, 'text_justify'); +my ($select_text_fields, $select_text_fields_cnt) = _select_format_string($layout->get_attr('format_string')); +my $units = get_unit_values(); + +$template->param( + barcode_types => $barcode_types, + label_types => $label_types, + font_types => $font_types, + text_justification_types => $text_justification_types, + fields => $select_text_fields, + field_count => $select_text_fields_cnt, + units => $units, +); + +my $layoutvalue = C4::Creators::Layout->retrieve_all(); +my $templatevalue = C4::Creators::Template->retrieve_all(); +$template->param( layoutvalue => $layoutvalue, + templatevalue => $templatevalue, +); + output_html_with_http_headers $cgi, $cookie, $template->output; -- 2.1.4