[PATCH] Bug 6828 - Add Admin Dashboard for staff users.=0A= This enhancement adds the option of switching on/off a Dashboard=0A= on the Staff users mainpage. The information displayed is specific=0A= to the users logged in branch but will also show a system wide=0A= overview. Its visibility is controlled by a new SysPref.=0A=

Barry Cannon barry at oslo.ie
Wed Nov 16 13:51:06 CET 2011


=0A=
---=0A=
 C4/Auth.pm                                         |    3 +-=0A=
 C4/DashBoard.pm                                    |  341 =
++++++++++++++++++++=0A=
 installer/data/mysql/sysprefs.sql                  |    1 +=0A=
 installer/data/mysql/updatedatabase.pl             |    8 +=0A=
 .../prog/en/modules/admin/preferences/admin.pref   |    8 +=0A=
 .../intranet-tmpl/prog/en/modules/intranet-main.tt |  111 +++++++=0A=
 mainpage.pl                                        |  176 ++++++++++=0A=
 7 files changed, 647 insertions(+), 1 deletions(-)=0A=
 create mode 100755 C4/DashBoard.pm=0A=
=0A=
diff --git a/C4/Auth.pm b/C4/Auth.pm=0A=
index e360e10..4f418c7 100755=0A=
--- a/C4/Auth.pm=0A=
+++ b/C4/Auth.pm=0A=
@@ -389,7 +389,8 @@ sub get_template_and_user {=0A=
             virtualshelves              =3D> =
C4::Context->preference("virtualshelves"),=0A=
             StaffSerialIssueDisplayCount =3D> =
C4::Context->preference("StaffSerialIssueDisplayCount"),=0A=
             NoZebra                     =3D> =
C4::Context->preference('NoZebra'),=0A=
-		EasyAnalyticalRecords =3D> =
C4::Context->preference('EasyAnalyticalRecords'),=0A=
+            EasyAnalyticalRecords =3D> =
C4::Context->preference('EasyAnalyticalRecords'),=0A=
+	    DashBoardDisplayed          =3D> =
C4::Context->preference('DashBoardDisplayed')=0A=
         );=0A=
     }=0A=
     else {=0A=
diff --git a/C4/DashBoard.pm b/C4/DashBoard.pm=0A=
new file mode 100755=0A=
index 0000000..2270aba=0A=
--- /dev/null=0A=
+++ b/C4/DashBoard.pm=0A=
@@ -0,0 +1,341 @@=0A=
+package C4::DashBoard;=0A=
+=0A=
+# Copyright 2000-2002 Katipo Communications=0A=
+#=0A=
+# This file is part of Koha.=0A=
+#=0A=
+# Koha is free software; you can redistribute it and/or modify it under =
the=0A=
+# terms of the GNU General Public License as published by the Free =
Software=0A=
+# Foundation; either version 2 of the License, or (at your option) any =
later=0A=
+# version.=0A=
+#=0A=
+# Koha is distributed in the hope that it will be useful, but WITHOUT =
ANY=0A=
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or =
FITNESS FOR=0A=
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more =
details.=0A=
+#=0A=
+# You should have received a copy of the GNU General Public License =
along=0A=
+# with Koha; if not, write to the Free Software Foundation, Inc.,=0A=
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.=0A=
+#=0A=
+=0A=
+use strict;=0A=
+use warnings;=0A=
+use C4::Context;=0A=
+use C4::Dates qw(format_date);=0A=
+=0A=
+use vars qw($VERSION @ISA @EXPORT);=0A=
+=0A=
+BEGIN { =0A=
+	$VERSION =3D 3.01;	=0A=
+	@ISA =3D qw(Exporter);=0A=
+	@EXPORT =3D qw(&number_of_items_library_xml =
&number_of_borrowers_library_xml &number_of_issues_library_xml =
&number_of_biblios_xml &number_of_loan_history_system_xml =0A=
+                     &number_of_overdues_library_xml =
&number_of_biblios_7days_xml &number_of_items_7days_system_xml =
&number_of_overdues_7days_library_xml=0A=
+                     &number_of_borrowers_system_xml =
&number_of_items_system_xml &number_of_items_7days_library_xml =
&number_of_overdues_system_xml=0A=
+                     &number_of_overdues_14days_library_xml =
&number_of_overdues_21days_library_xml =
&number_of_veryoverdue_library_xml &expired_borrowers_library_xml=0A=
+                     &expired_borrowers_system_xml =
&number_of_issues_system_xml &number_of_loan_history_library_xml =
&number_of_overdues_7days_system_xml=0A=
+                     &number_of_overdues_14days_system_xml =
&number_of_overdues_21days_system_xml &number_of_veryoverdue_system_xml =
&last_update_xml=0A=
+               );=0A=
+}=0A=
+=0A=
+=0A=
+sub number_of_items_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $items =3D $dbh->selectall_arrayref ('select branches.branchcode =
as BranchCode, IFNULL(SubTotal.items,0) as NumberOfItems=0A=
+    from branches=0A=
+    left join=0A=
+    (select homebranch, count(*) as Items=0A=
+    from items=0A=
+    group by homebranch) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.homebranch',{ Columns =3D> {} });=0A=
+    $dbh->disconnect();=0A=
+    return $items;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_items_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $items_system =3D $dbh->selectall_arrayref('select count(*) as =
NumberOfItemsSystem from items', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $items_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_borrowers_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $borrowers =3D $dbh->selectall_arrayref ('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Borrowers,0) as =
NumberOfBorrowers=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Borrowers=0A=
+    from borrowers=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode',{ Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $borrowers;=0A=
+=0A=
+}=0A=
+=0A=
+sub number_of_borrowers_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $number_of_borrowers_system =3D $dbh->selectall_arrayref('select =
count(*) as NumberofBorrowersSystem=0A=
+    from borrowers',{ Columns =3D> {} } );=0A=
+    $dbh->disconnect;=0A=
+    return $number_of_borrowers_system;=0A=
+=0A=
+}=0A=
+=0A=
+sub number_of_issues_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $issues_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.issues,0) as =
NumberOfIssues=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Issues=0A=
+    from issues=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode',{ Columns =3D> {} });=0A=
+    $dbh->disconnect();=0A=
+    return $issues_library;=0A=
+   =0A=
+}   =0A=
+=0A=
+sub number_of_issues_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $issues_system =3D $dbh->selectall_arrayref('select count(*) as =
NumberOfIssuesSystem=0A=
+    from issues',{Columns =3D> {}});=0A=
+    $dbh->disconnect;=0A=
+    return $issues_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_biblios_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $biblios =3D $dbh->selectall_arrayref('select count(*) as =
NumberOfBiblios from biblio',{ Columns =3D> {} } );=0A=
+    $dbh->disconnect;=0A=
+    return $biblios;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_loan_history_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $loan_history =3D $dbh->selectall_arrayref('select count(*) as =
NumberOfLoans from old_issues', { Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $loan_history;=0A=
+=0A=
+}=0A=
+=0A=
+sub number_of_loan_history_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $loan_history_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.oldissues,0) as =
NumberOfLoans =0A=
+    from branches =0A=
+    left join=0A=
+    (select branchcode, count(*) as OldIssues=0A=
+    from old_issues=0A=
+    group by branchcode) SubTotal     =0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {}} );=0A=
+    $dbh->disconnect;=0A=
+    return $loan_history_library;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as =
NumberOfOverdues=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due < date(now()) =0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_library;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_system =3D $dbh->selectall_arrayref('select count(*) =
as NumberOfOverdues=0A=
+    from issues=0A=
+    where date_due < date(now())',{Columns =3D> {}} );=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_7days_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_library_7days =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as =
NumberOfOverdues7Days=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND =
DATE_SUB(CURDATE(), INTERVAL 1 DAY)  =0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_library_7days;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_7days_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_7days_system =3D $dbh->selectall_arrayref('select =
count(*) as NumberOfOverdues=0A=
+    from issues=0A=
+    where date_due =0A=
+    between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND DATE_SUB(CURDATE(), =
INTERVAL 1 DAY)', {Columns =3D> {}} );=0A=
+    return $overdues_7days_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_14days_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_14days =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as =
NumberOfOverdues14Days=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due =0A=
+    between DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND =
DATE_SUB(CURDATE(), INTERVAL 8 DAY)=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_14days;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_14days_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_14days_system =3D $dbh->selectall_arrayref('select =
count(*) as NumberOfOverdues14Days=0A=
+    from issues=0A=
+    where date_due =0A=
+    between DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND =
DATE_SUB(CURDATE(), INTERVAL 8 DAY)', {Columns =3D> {}} );=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_14days_system;=0A=
+=0A=
+}=0A=
+=0A=
+sub number_of_overdues_21days_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_21days_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as =
NumberOfOverdues21Days=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due between DATE_SUB(CURDATE(), INTERVAL 21 DAY) AND =
DATE_SUB(CURDATE(), INTERVAL 15 DAY)=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $overdues_21days_library;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_overdues_21days_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $overdues_21days_system =3D $dbh->selectall_arrayref('select =
count(*) as NumberOfOverdues21Days=0A=
+    from issues=0A=
+    where date_due between DATE_SUB(CURDATE(), INTERVAL 21 DAY) AND =
DATE_SUB(CURDATE(), INTERVAL 15 DAY)'=0A=
+    , {Columns =3D> {} });=0A=
+    return $overdues_21days_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_veryoverdue_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $very_overdue_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as =
NumberOfVeryOverdue=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due < DATE_SUB(CURDATE(), INTERVAL 22 DAY)=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $very_overdue_library;=0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_veryoverdue_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $very_overdue_system =3D $dbh->selectall_arrayref('select =
count(*) as Overdues=0A=
+    from issues=0A=
+    where date_due < DATE_SUB(CURDATE(), INTERVAL 22 DAY)' ,{Columns =
=3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $very_overdue_system;=0A=
+    =0A=
+}=0A=
+=0A=
+=0A=
+sub number_of_biblios_7days_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $biblio_7days =3D $dbh->selectall_arrayref('SELECT count(*) as =
NumberOfBiblio7Days =0A=
+    FROM biblio=0A=
+    WHERE datecreated =0A=
+    between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()', =
{Columns =3D> {} } );=0A=
+    $dbh->disconnect;=0A=
+    return $biblio_7days; =0A=
+    =0A=
+}=0A=
+=0A=
+sub number_of_items_7days_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $items_7days_system =3D $dbh->selectall_arrayref('SELECT =
count(*) as NumberOfItems7Days =0A=
+    FROM items =0A=
+    WHERE dateaccessioned=0A=
+    between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()',{Columns =
=3D>{} } );=0A=
+    $dbh->disconnect;=0A=
+    return $items_7days_system;=0A=
+=0A=
+}=0A=
+=0A=
+sub number_of_items_7days_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $items_7days_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.items,0) as =
NumberOfItems7DaysLibrary=0A=
+    from branches=0A=
+    left join=0A=
+    (select homebranch, count(*) as Items=0A=
+    from items=0A=
+    where dateaccessioned > DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND =
CURDATE()=0A=
+    group by homebranch) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.homebranch', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $items_7days_library;=0A=
+=0A=
+}=0A=
+=0A=
+sub expired_borrowers_library_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $expired_borrowers_library =3D $dbh->selectall_arrayref('select =
branches.branchcode as BranchCode, IFNULL(SubTotal.ExpiredBorrowers,0) =
as ExpiredBorrowers=0A=
+    from branches=0A=
+    left join=0A=
+    (select branchcode, count(*) as ExpiredBorrowers=0A=
+    from borrowers=0A=
+    where dateexpiry < date(now())=0A=
+    group by branchcode) SubTotal=0A=
+    on branches.branchcode=3DSubTotal.branchcode;',{Columns =3D> {} } );=0A=
+    $dbh->disconnect;=0A=
+    return $expired_borrowers_library;=0A=
+    =0A=
+}=0A=
+=0A=
+sub expired_borrowers_system_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $expired_borrowers_system =3D $dbh->selectall_arrayref('select =
count(*) as ExpiredBorrowers=0A=
+    from borrowers =0A=
+    where dateexpiry < date(now())', {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $expired_borrowers_system;=0A=
+    =0A=
+}=0A=
+=0A=
+sub last_update_xml {=0A=
+    my $dbh =3D C4::Context->dbh;=0A=
+    my $updated =3D $dbh->selectall_arrayref('SELECT DATE_FORMAT(now(), =
"%W %M %D %Y %T") as UpdatedTime',=0A=
+    {Columns =3D> {} });=0A=
+    $dbh->disconnect;=0A=
+    return $updated;=0A=
+    =0A=
+}=0A=
+=0A=
+1;=0A=
+__END__=0A=
+=0A=
+=0A=
diff --git a/installer/data/mysql/sysprefs.sql =
b/installer/data/mysql/sysprefs.sql=0A=
index ae2c1cb..da36014 100755=0A=
--- a/installer/data/mysql/sysprefs.sql=0A=
+++ b/installer/data/mysql/sysprefs.sql=0A=
@@ -13,6 +13,7 @@ INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) VALUES=0A=
 INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) =
VALUES('AnonSuggestions',0,'Set to enable Anonymous suggestions to =
AnonymousPatron borrowernumber',NULL,'YesNo');=0A=
 INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) VALUES('AnonymousPatron', '0', =
'Set the identifier (borrowernumber) of the anonymous patron. Used for =
Suggestion and reading history privacy',NULL,'');=0A=
 INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) VALUES('Babeltheque',0,'Turn =
ON Babeltheque content  - See babeltheque.com to subscribe to this =
service','','YesNo');=0A=
+INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) =
VALUES('DashBoardDisplayed','1','','Display Dashboard on main =
page','YesNo');=0A=
 =0A=
 INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) =
VALUES('authoritysep','--','Used to separate a list of authorities in a =
display. Usually --',10,'free');=0A=
 INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) =
VALUES('autoBarcode','OFF','Used to autogenerate a barcode: incremental =
will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; =
hbyymmincr of the form HB08010001 where HB=3DHome =
Branch','incremental|annual|hbyymmincr|OFF','Choice');=0A=
diff --git a/installer/data/mysql/updatedatabase.pl =
b/installer/data/mysql/updatedatabase.pl=0A=
index 815a71d..915c7ee 100755=0A=
--- a/installer/data/mysql/updatedatabase.pl=0A=
+++ b/installer/data/mysql/updatedatabase.pl=0A=
@@ -4550,6 +4550,14 @@ if (C4::Context->preference("Version") < =
TransformToNum($DBversion)) {=0A=
     SetVersion ($DBversion);=0A=
 }=0A=
 =0A=
+$DBversion =3D "3.06.00.XXX";=0A=
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {=0A=
+    $dbh->do("INSERT INTO `systempreferences` =
(variable,value,explanation,options,type) =
VALUES('DashBoardDisplayed','1','','Display Dashboard on main =
page','YesNo')");=0A=
+    print "Upgrade to $DBversion done. Added Dashboard Syspref \n";=0A=
+    SetVersion ($DBversion);=0A=
+}=0A=
+=0A=
+=0A=
 =3Dhead1 FUNCTIONS=0A=
 =0A=
 =3Dhead2 DropAllForeignKeys($table)=0A=
diff --git =
a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref =
b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref=0A=
index f026c7e..551ace9 100644=0A=
--- =
a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref=0A=
+++ =
b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref=0A=
@@ -95,3 +95,11 @@ Administration:=0A=
         -=0A=
             - The CAS Authentication Server can be found at=0A=
             - pref: casServerUrl           =0A=
+    Dashboard:=0A=
+        -=0A=
+            - pref: DashBoardDisplayed=0A=
+              default: 1=0A=
+              choices:=0A=
+                  yes: Show=0A=
+                  no: "Don't Show"=0A=
+            - Switch on Dashboard on main page.=0A=
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt =
b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt=0A=
index 0a2b20c..ea4c6a6 100644=0A=
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt=0A=
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt=0A=
@@ -117,6 +117,117 @@=0A=
 		</div><!-- /koha-news -->=0A=
 	</div>=0A=
 [% END %]=0A=
+=0A=
+<!-- Dashboard, if on -->=0A=
+[% IF DashBoardDisplayed %]=0A=
+[% UNLESS nofile %]=0A=
+<fieldset class=3D"rows">=0A=
+<legend>Koha Library Dashboard</legend>=0A=
+    <table style=3D"border:0px;" id=3D"dashboard">=0A=
+     <tr style=3D"border-bottom: 0px;border-left: 0px;">=0A=
+     <td style=3D"border-left: 0px;border-bottom: 0px;"> =0A=
+    	<table id=3D"overview" width=3D"400">=0A=
+	    <tr>=0A=
+		<th>Overview</th>=0A=
+		<th>System</th>=0A=
+		<th>My Library</th>=0A=
+		</tr>=0A=
+		<tr align=3D"left">=0A=
+		<td align=3D"left">Number of Biblios=0A=
+		</td>=0A=
+		<td>[% number_of_biblios %]</td>=0A=
+		<td style=3D"background-color:#E8E8E8"></td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Biblios added in last 7 days</td>=0A=
+		<td>[% biblios_7days %]</td>=0A=
+		<td style=3D"background-color:#E8E8E8"></td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Number of Items</td>=0A=
+		<td>[% items_system %]</td>=0A=
+		<td>[% items_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Number of items added in last 7 days</td>=0A=
+		<td> [% items_7days_system %]</td>=0A=
+		<td>[% items_7days_system %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Registered Borrowers</td>=0A=
+		<td>[% borrowers_system %]</td>=0A=
+		<td>[% borrowers_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Expired Borrowers</td>=0A=
+		<td>[% expired_borrowers_system %]</td>=0A=
+		<td>[% expired_borrowers_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+	    <td>&nbsp;</td>=0A=
+	    <td></td>=0A=
+	    <td></td>=0A=
+	    </tr>=0A=
+	    =0A=
+	</table>=0A=
+	Last updated: [% last_updated %]=0A=
+	</td>=0A=
+	<td style=3D"border-bottom: 0px;border-left: 0px;">=0A=
 	=0A=
+	<table id=3D"circulation" width=3D"400">=0A=
+	    <tr>=0A=
+		<th>Circulation</th>=0A=
+		<th>System</th>=0A=
+		<th>My Library</th>=0A=
+		</tr>=0A=
+		<tr align=3D"left">=0A=
+		<td align=3D"left">Items on Loan=0A=
+		</td>=0A=
+		<td>[% issues_system %]</td>=0A=
+		<td>[% issues_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Loan History</td>=0A=
+		<td>[% loan_history_system %]</td>=0A=
+		<td>[% loan_history_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Items Overdue</td>=0A=
+		<td>[% overdues_system %]</td>=0A=
+		<td>[% overdues_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Overdue within 7 days</td>=0A=
+		<td>[% overdues_7days_system %]</td>=0A=
+		<td>[% overdues_7days_library %]</td>=0A=
+	    </tr>=0A=
+	    <tr>=0A=
+		<td>Overdue 8-14 days</td>=0A=
+		<td>[% overdues_14days_system %]</td>=0A=
+		<td>[% overdues_14days_library %]</td>=0A=
+	    </tr>=0A=
+	     <tr>=0A=
+		<td>Overdue 15-21 days</td>=0A=
+		<td>[% overdues_21days_system %]</td>=0A=
+		<td>[% overdues_21days_library %]</td>=0A=
+	    </tr>=0A=
+	     <tr>=0A=
+		<td>Very Overdue Items</td>=0A=
+		<td>[% very_overdue_system %]</td>=0A=
+		<td>[% very_overdue_library %]</td>=0A=
+	    </tr>=0A=
+	</table>=0A=
+	</td>=0A=
+    </tr>=0A=
+    </table>=0A=
+</fieldset>=0A=
+</div>=0A=
+</div>=0A=
+</div>=0A=
+[% END %]=0A=
+[% END %]=0A=
+[% IF nofile %]=0A=
+<b>[% nofile %]</b>=0A=
+[% END %]=0A=
 </div>=0A=
 [% INCLUDE 'intranet-bottom.inc' %]=0A=
diff --git a/mainpage.pl b/mainpage.pl=0A=
index 25ee475..62d3fee 100755=0A=
--- a/mainpage.pl=0A=
+++ b/mainpage.pl=0A=
@@ -67,4 +67,180 @@ $template->param(=0A=
     koha_news_count =3D> $koha_news_count=0A=
 );=0A=
 =0A=
+# Dashboard (If on in SysPref)=0A=
+my $nofile =3D "Dashboard is set to \"ON\". However there is no XML =
file to read. Have you run it at least once?";=0A=
+unless ( C4::Context->preference('DashBoardDisplayed') =3D=3D 0 )=0A=
+    {=0A=
+    my $koha_conf =3D $ENV{'KOHA_CONF'};=0A=
+    my ($base,$file) =3D $koha_conf =3D~ m|^(.*[/\\])([^/\\]+?)$|;=0A=
+    my $xml_read =3D "dashboard_xml.out";=0A=
+    my $xml_file =3D "$base"."$xml_read";=0A=
+if (-e $xml_file) {=0A=
+    my $xml =3D new XML::Simple;=0A=
+    my $dash =3D $xml->XMLin($xml_file);=0A=
+    my $login_branch_name =3D $template->{VARS}{LoginBranchcode};=0A=
+    my $number_of_biblios;=0A=
+    my $biblios_7days;=0A=
+    my $items_7days_system;=0A=
+    my $items_7days_library;=0A=
+    my $borrowers_system;=0A=
+    my $expired_borrowers_library;=0A=
+    my $expired_borrowers_system;=0A=
+    my $loan_history_system;=0A=
+    my $loan_history_library;=0A=
+    my $overdues_library;=0A=
+    my $overdues_system;=0A=
+    my $overdues_7days_library;=0A=
+    my $overdues_7days_system;=0A=
+    my $overdues_14days_library;=0A=
+    my $overdues_14days_system;=0A=
+    my $overdues_21days_library;=0A=
+    my $overdues_21days_system;=0A=
+    my $very_overdue_library;=0A=
+    my $very_overdue_system;=0A=
+    my $borrowers_library;=0A=
+    my $issues_library;=0A=
+    my $issues_system;=0A=
+    my $items_library;=0A=
+    my $items_system;=0A=
+    my $last_updated;=0A=
+    =0A=
+            $number_of_biblios          =3D =
$dash->{biblios}->{NumberOfBiblios};=0A=
+            $biblios_7days              =3D =
$dash->{biblio_7days}->{NumberOfBiblio7Days};=0A=
+            $items_7days_system         =3D =
$dash->{items_7days_system}->{NumberOfItems7Days};=0A=
+            $borrowers_system           =3D =
$dash->{number_of_borrowers_system}->{NumberofBorrowersSystem};=0A=
+            $loan_history_system        =3D =
$dash->{loan_history_system}->{NumberOfLoans};=0A=
+            $items_system               =3D =
$dash->{items_system}->{NumberOfItemsSystem};=0A=
+            $expired_borrowers_system   =3D =
$dash->{expired_borrowers_system}->{ExpiredBorrowers};=0A=
+            $issues_system              =3D =
$dash->{issues_system}->{NumberOfIssuesSystem};=0A=
+            $overdues_system            =3D =
$dash->{overdues_system}->{NumberOfOverdues};=0A=
+            $overdues_7days_system      =3D =
$dash->{overdues_7days_system}->{NumberOfOverdues};=0A=
+            $overdues_14days_system     =3D =
$dash->{overdues_14days_system}->{NumberOfOverdues14Days};=0A=
+            $overdues_21days_system     =3D =
$dash->{overdues_21days_system}->{NumberOfOverdues21Days};=0A=
+            $very_overdue_system        =3D =
$dash->{very_overdue_system}->{Overdues};=0A=
+            $last_updated               =3D =
$dash->{last_updated}->{UpdatedTime};=0A=
+=0A=
+# Looping for "logged in branch" dependant data           =0A=
+            foreach my $numissl(@{$dash->{issues_library}})=0A=
+                {=0A=
+                    if($numissl->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                          $issues_library =3D $numissl->{NumberOfIssues}=0A=
+                        }=0A=
+                }=0A=
+            foreach my $numitm(@{$dash->{items_library}})=0A=
+                {=0A=
+                    if($numitm->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $items_library =3D $numitm->{NumberOfItems}=0A=
+                        }=0A=
+                 }=0A=
+            foreach my $numbor(@{$dash->{borrowers_library}})=0A=
+                {=0A=
+                    if($numbor->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $borrowers_library =3D =
$numbor->{NumberOfBorrowers}=0A=
+                        }=0A=
+                 }=0A=
+            foreach my $numex(@{$dash->{expired_borrowers_library}})=0A=
+                {=0A=
+                    if($numex->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $expired_borrowers_library =3D =
$numex->{ExpiredBorrowers}=0A=
+                        }=0A=
+                 }=0A=
+                 =0A=
+            foreach my $numitm7(@{$dash->{items_7days_library}})=0A=
+                {=0A=
+                    if($numitm7->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $items_7days_library =3D =
$numitm7->{NumberOfItems7DaysLibrary}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $oldiss(@{$dash->{loan_history_library}})=0A=
+                {=0A=
+                    if($oldiss->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $loan_history_library =3D =
$oldiss->{NumberOfLoans}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $ovdlib(@{$dash->{overdues_library}})=0A=
+                {=0A=
+                    if($ovdlib->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $overdues_library =3D =
$ovdlib->{NumberOfOverdues}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $ovd7day(@{$dash->{overdues_7days_library}})=0A=
+                {=0A=
+                    if($ovd7day->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $overdues_7days_library =3D =
$ovd7day->{NumberOfOverdues7Days}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $ovd14day(@{$dash->{overdues_14days_library}})=0A=
+                {=0A=
+                    if($ovd14day->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $overdues_14days_library =3D =
$ovd14day->{NumberOfOverdues14Days}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $ovd21day(@{$dash->{overdues_21days_library}})=0A=
+                {=0A=
+                    if($ovd21day->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $overdues_21days_library =3D =
$ovd21day->{NumberOfOverdues21Days}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+            foreach my $vryod(@{$dash->{very_overdue_library}})=0A=
+                {=0A=
+                    if($vryod->{BranchCode} eq $login_branch_name)=0A=
+                        {=0A=
+                            $very_overdue_library =3D =
$vryod->{NumberOfVeryOverdue}=0A=
+                        }=0A=
+                 }=0A=
+            =0A=
+        $template->param('number_of_biblios'            =3D> =
$number_of_biblios,=0A=
+                         'biblios_7days'                =3D> =
$biblios_7days,=0A=
+                         'items_7days_system'           =3D> =
$items_7days_system,=0A=
+                         'items_7days_library'          =3D> =
$items_7days_library,=0A=
+                         'borrowers_system'             =3D> =
$borrowers_system,=0A=
+                         'expired_borrowers_library'    =3D> =
$expired_borrowers_library,=0A=
+                         'expired_borrowers_system'     =3D> =
$expired_borrowers_system,=0A=
+                         'overdues_library'             =3D> =
$overdues_library,=0A=
+                         'overdues_system'              =3D> =
$overdues_system,=0A=
+                         'overdues_7days_library'       =3D> =
$overdues_7days_library,=0A=
+                         'overdues_7days_system'        =3D> =
$overdues_7days_system,=0A=
+                         'overdues_14days_library'      =3D> =
$overdues_14days_library,=0A=
+                         'overdues_14days_system'       =3D> =
$overdues_14days_system,=0A=
+                         'overdues_21days_library'      =3D> =
$overdues_21days_library,=0A=
+                         'overdues_21days_system'       =3D> =
$overdues_21days_system,=0A=
+                         'very_overdue_library'         =3D> =
$very_overdue_library,=0A=
+                         'very_overdue_system'          =3D> =
$very_overdue_system,=0A=
+                         'loan_history_system'          =3D> =
$loan_history_system,=0A=
+                         'loan_history_library'         =3D> =
$loan_history_library,=0A=
+                         'issues_library'               =3D> =
$issues_library,=0A=
+                         'issues_system'                =3D> =
$issues_system,=0A=
+                         'items_library'                =3D> =
$items_library,=0A=
+                         'items_system'                 =3D> =
$items_system,=0A=
+                         'borrowers_library'            =3D> =
$borrowers_library,=0A=
+                         'last_updated'                 =3D> =
$last_updated=0A=
+			                    =0A=
+        );=0A=
+}=0A=
+=0A=
+elsif(!-e $xml_file) {=0A=
+	$template->param('nofile' =3D> $nofile,);=0A=
+	}=0A=
+=0A=
+}=0A=
+=0A=
+# Dashboard end=0A=
+=0A=
 output_html_with_http_headers $query, $cookie, $template->output;=0A=
-- =0A=
1.7.2.5=0A=
=0A=

------=_NextPart_000_00D3_01CCA467.DA4CE140--



More information about the Koha-patches mailing list