Bugzilla – Attachment 65061 Details for
Bug 17047
Mana Knowledge Base : Data sharing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17047 SQL reports management with Mana-KB
Bug-17047-SQL-reports-management-with-Mana-KB.patch (text/plain), 73.30 KB, created by
Brendan Gallagher
on 2017-07-14 17:57:30 UTC
(
hide
)
Description:
Bug 17047 SQL reports management with Mana-KB
Filename:
MIME Type:
Creator:
Brendan Gallagher
Created:
2017-07-14 17:57:30 UTC
Size:
73.30 KB
patch
obsolete
>From 327525af33757260f3f89632e293bcb710ec04c0 Mon Sep 17 00:00:00 2001 >From: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com> >Date: Wed, 8 Mar 2017 15:46:24 +0000 >Subject: [PATCH] Bug 17047 SQL reports management with Mana-KB > >Includes: > >* code factorization >Some code from subscription & Mana-KB has been factorized in order to speed-up next developments > >* SytemPreferences: >Mana Activation: > - add a value "no, let me think about it", that is the default value. > - as long as this value is selected, messages ask if user want to activate it ( in Administration and Add-subscription(page 2) ) >AutoShareWithMana > - Add the syspref AutoShareWithMana: user can automatically share infos with Mana-KB (not set by default) > >* Interface : > - On mana-search, rows are now sorted by date of last import, then by number of users > - Windows redesigned to improve the user experience > >* New Feature : report a mistake. > - people can now report an invalid data (wrong, obsolete,...) > - if a data is reported as invalid many time, it will appear differently > - Added few tooltip (to explain the fields last import, nb of users, to explain the new feature) > - When reporting a data as invalid, a comment can also be added. Koha will then display comments related to data in result lists > >* API (svc/mana) > - add svc/mana/addvaluetofield: allows to ask mana incrementing a field of a resource > - no hardcoding for resources in the code of api (api needs to be called with a ressourcename) > >* New feature : SQL report sharing > - Create Koha::Report.pm and Koha::Reports.pm, objects class for Reports > - New feature: share reports with Mana-KB > - New feature: search report in Mana-KB with keywords > - New feature: load reports from Mana-KB > >========= >Test plan >========= >(see BibLibre complete documentation, attached to this patch) >1 - Apply Patch + update database >2 - Copy the three lines about mana config in etc/koha-conf.xml in ../etc/koha-conf.xml >3 - Check Mana syspref and AutoShareWithMana syspref are not activated > >4 - subscriptions >- Try create a new subscription for a first serial => Koha shouldn't show you anything (except if the base hase been filled) >- Share this serial on Mana-KB (on the subscription detail page there must be a Share button) >- Try to create a new subscription for serial #1 => a message should appear when you click on "next", click on "use", the fields should automaticaly appear >- Activate AutoShareWithMana => Subscriptions >- Create a new subscription for a second serial >- There shouldn't be any Share button >- Create a second subscription => the message should appear, click again on use > >5 - SQL Report >- Create a new report, without notes. >- On the table with all report (reports > use saved), there should be the action "Share" >- If you click on share, you have an error message >- Create a new report, with a title and notes longer than 20 characters >- You can share it on Mana-KB => you will have a success message >- On (report > use saved), there must be a message inviting you to search on mana-KB for more results, enter a few word from title, notes, type of the report you shared, it should appear. You can use it, it will load it into your report list. > >6 - Comments. >- On any table containing mana search results, you can report a mistake & comment why you report: click on report mistake. You only can chose "other" because there's no comment in Mana-KB [if there are comments, you'll get other values]. >- If you click other, a new textbox appears. Enter a short comment. >- Reload the whole page, the comment should appear in the menu and in the comment column. >- If you select a comment and reload the whole page, there should be one more comment with this name >- If you select a comment and click on cancel just after, there shouldn't be any change when you reload. > >Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com> >--- > Koha/Report.pm | 82 ++++++ > Koha/Reports.pm | 58 ++++ > Koha/SharedContent.pm | 66 ++++- > Koha/Subscription.pm | 2 + > etc/koha-conf.xml | 4 + > .../mana_01-add_mana_id_in_subscription.sql | 1 + > .../atomicupdate/mana_02-add_Mana_syspref.sql | 2 +- > .../atomicupdate/mana_03-add_mana_autoshare.sql | 2 + > installer/data/mysql/sysprefs.sql | 1 + > koha-tmpl/intranet-tmpl/prog/css/staff-global.css | 6 + > .../includes/mana-subscription-search-result.inc | 46 ---- > .../en/includes/mana/mana-report-search-result.inc | 83 ++++++ > .../mana/mana-subscription-search-result.inc | 82 ++++++ > .../prog/en/includes/serials-toolbar.inc | 16 +- > .../prog/en/modules/admin/admin-home.tt | 8 + > .../en/modules/admin/preferences/web_services.pref | 12 +- > .../en/modules/mana/mana-report-search-result.tt | 1 + > .../mana/mana-subscription-search-result.tt | 1 + > .../en/modules/reports/guided_reports_start.tt | 291 ++++++++++++++++++++- > .../serials/mana-subscription-search-result.tt | 1 - > .../prog/en/modules/serials/subscription-add.tt | 86 +++++- > reports/guided_reports.pl | 13 +- > serials/subscription-add.pl | 9 +- > serials/subscription-detail.pl | 39 +-- > svc/mana/addvaluetofield | 42 +++ > svc/mana/search | 31 ++- > svc/mana/share | 47 ++++ > svc/mana/use | 19 +- > 28 files changed, 913 insertions(+), 138 deletions(-) > create mode 100644 Koha/Report.pm > create mode 100644 Koha/Reports.pm > create mode 100644 installer/data/mysql/atomicupdate/mana_03-add_mana_autoshare.sql > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/mana-subscription-search-result.inc > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-report-search-result.inc > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-subscription-search-result.inc > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-report-search-result.tt > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-subscription-search-result.tt > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/serials/mana-subscription-search-result.tt > create mode 100755 svc/mana/addvaluetofield > create mode 100755 svc/mana/share > >diff --git a/Koha/Report.pm b/Koha/Report.pm >new file mode 100644 >index 0000000..b0197fb >--- /dev/null >+++ b/Koha/Report.pm >@@ -0,0 +1,82 @@ >+package Koha::Report; >+ >+# Copyright 2017 Biblibre Baptiste Wojtkowski >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+use JSON; >+use Koha::Reports; >+ >+use base qw(Koha::Object); >+ >+=head1 NAME >+ >+Koha::Report - Koha Report Object Class >+ >+=head1 Ap >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub get_search_info { >+ my $self=shift; >+ my $sub_mana_info = { 'query' => shift }; >+ return $sub_mana_info; >+} >+ >+sub get_sharable_info{ >+ my $self=shift; >+ my $shared_report_id=shift; >+ my $report = Koha::Reports->find($shared_report_id); >+ my $sub_mana_info = { >+ 'savedsql' => $report->savedsql, >+ 'report_name' => $report->report_name, >+ 'notes' => $report->notes, >+ 'report_group' => $report->report_group, >+ 'type' => $report->type, >+ }; >+ return $sub_mana_info; >+} >+ >+sub new_from_mana{ >+ my $self = shift; >+ my $data = shift; >+ delete $data->{exportemail}; >+ delete $data->{kohaversion}; >+ delete $data->{creationdate}; >+ delete $data->{lastimport}; >+ $data->{mana_id} = $data->{id}; >+ delete $data->{id}; >+ delete $data->{nbofusers}; >+ delete $data->{language}; >+ Koha::Report->new($data)->store; >+} >+ >+sub _type { >+ return 'SavedSql'; >+} >+ >+1; >diff --git a/Koha/Reports.pm b/Koha/Reports.pm >new file mode 100644 >index 0000000..dca236c >--- /dev/null >+++ b/Koha/Reports.pm >@@ -0,0 +1,58 @@ >+package Koha::Reports; >+ >+# Copyright 2017 Biblibre Baptiste Wojtkowski >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+ >+use Koha::Report; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Serial - Koha Serial Object class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'SavedSql'; >+} >+ >+sub object_class { >+ return 'Koha::Report'; >+} >+ >+=head1 AUTHOR >+ >+Kyle M Hall <kyle@bywatersolutions.com> >+ >+=cut >+ >+1; >diff --git a/Koha/SharedContent.pm b/Koha/SharedContent.pm >index e0c512b..7ac12f4 100644 >--- a/Koha/SharedContent.pm >+++ b/Koha/SharedContent.pm >@@ -22,7 +22,10 @@ use JSON; > use HTTP::Request; > use LWP::UserAgent; > >-our $MANA_IP = "http://10.25.159.107:5000"; >+use Koha::Serials; >+use Koha::Reports; >+ >+our $MANA_IP = C4::Context->config('mana_config'); > > sub manaRequest { > my $mana_request = shift; >@@ -40,12 +43,20 @@ sub manaRequest { > return $result if ( $response->code =~ /^2..$/ ); > } > >-sub manaNewUserPatchRequest { >+sub manaIncrementRequest { > my $resource = shift; > my $id = shift; >- >- my $url = "$MANA_IP/$resource/$id.json/newUser"; >- my $request = HTTP::Request->new( PATCH => $url ); >+ my $field = shift; >+ my $step = shift; >+ my $param; >+ $param->{step} = $step || 1; >+ $param->{id} = $id; >+ $param->{resource} = $resource; >+ $param = join '&', >+ map { defined $param->{$_} ? $_ . "=" . $param->{$_} : () } >+ keys %$param; >+ my $url = "$MANA_IP/$resource/$id.json/increment/$field?$param"; >+ my $request = HTTP::Request->new( POST => $url ); > > return manaRequest($request); > } >@@ -64,6 +75,51 @@ sub manaPostRequest { > return manaRequest($request); > } > >+sub manaShareInfos{ >+ my ($query, $loggedinuser, $ressourceid, $ressourcetype) = @_; >+ my $mana_language; >+ if ( $query->param('mana_language') ) { >+ $mana_language = $query->param('mana_language'); >+ } >+ else { >+ my $result = $mana_language = C4::Context->preference('language'); >+ } >+ >+ my $mana_email; >+ if ( $loggedinuser ne 0 ) { >+ my $borrower = Koha::Patrons->find($loggedinuser); >+ $mana_email = $borrower->email >+ if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >+ $mana_email = $borrower->emailpro >+ if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >+ $mana_email = >+ Koha::Libraries->find( C4::Context->userenv->{'branch'} )->branchemail >+ if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >+ } >+ $mana_email = C4::Context->preference('KohaAdminEmailAddress') >+ if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >+ my %versions = C4::Context::get_versions(); >+ >+ my $mana_info = { >+ language => $mana_language, >+ kohaversion => $versions{'kohaVersion'}, >+ exportemail => $mana_email >+ }; >+ my ($ressource, $ressource_mana_info); >+ my $packages = "Koha::".ucfirst($ressourcetype)."s"; >+ my $package = "Koha::".ucfirst($ressourcetype); >+ $ressource_mana_info = $package->get_sharable_info($ressourceid); >+ $ressource_mana_info = { %$ressource_mana_info, %$mana_info }; >+ $ressource = $packages->find($ressourceid); >+ >+ my $result = Koha::SharedContent::manaPostRequest( $ressourcetype, >+ $ressource_mana_info ); >+ if ( $result and ($result->{code} eq "200" or $result->{code} eq "201") ) { >+ $ressource->set( { mana_id => $result->{id} } )->store; >+ } >+ return $result; >+} >+ > sub manaGetRequestWithId { > my $resource = shift; > my $id = shift; >diff --git a/Koha/Subscription.pm b/Koha/Subscription.pm >index 40943dd..a6bdbae 100644 >--- a/Koha/Subscription.pm >+++ b/Koha/Subscription.pm >@@ -46,6 +46,7 @@ Koha::Subscription - Koha Subscription Object class > =cut > > sub get_search_info { >+ my $self=shift; > my $searched_sub_id = shift; > my $biblio = Koha::Biblios->find( { 'biblionumber' => $searched_sub_id } ); > my $biblioitem = >@@ -61,6 +62,7 @@ sub get_search_info { > } > > sub get_sharable_info { >+ my $self = shift; > my $shared_sub_id = shift; > my $subscription = Koha::Subscriptions->find($shared_sub_id); > my $biblio = Koha::Biblios->find( $subscription->biblionumber ); >diff --git a/etc/koha-conf.xml b/etc/koha-conf.xml >index 4ccee3a..258d5d1 100644 >--- a/etc/koha-conf.xml >+++ b/etc/koha-conf.xml >@@ -149,6 +149,10 @@ __PAZPAR2_TOGGLE_XML_POST__ > <!-- Path to the config file for SMS::Send --> > <sms_send_config>__KOHA_CONF_DIR__/sms_send/</sms_send_config> > >+ <!-- URL of the mana KB server --> >+ <!-- alternative value http://mana-test.koha-community.org to query the test server --> >+ <mana_config>http://mana-kb.koha-community.org</mana_config> >+ > <!-- Configuration for Plack --> > <plack_max_requests>50</plack_max_requests> > <plack_workers>2</plack_workers> >diff --git a/installer/data/mysql/atomicupdate/mana_01-add_mana_id_in_subscription.sql b/installer/data/mysql/atomicupdate/mana_01-add_mana_id_in_subscription.sql >index 5c590d1..66c23ac 100644 >--- a/installer/data/mysql/atomicupdate/mana_01-add_mana_id_in_subscription.sql >+++ b/installer/data/mysql/atomicupdate/mana_01-add_mana_id_in_subscription.sql >@@ -1 +1,2 @@ > ALTER TABLE subscription ADD mana_id int(11); >+ALTER TABLE saved_sql ADD mana_id int(11); >diff --git a/installer/data/mysql/atomicupdate/mana_02-add_Mana_syspref.sql b/installer/data/mysql/atomicupdate/mana_02-add_Mana_syspref.sql >index 38d7ffb..dda85a5 100644 >--- a/installer/data/mysql/atomicupdate/mana_02-add_Mana_syspref.sql >+++ b/installer/data/mysql/atomicupdate/mana_02-add_Mana_syspref.sql >@@ -1 +1 @@ >-INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('Mana', '1', 'request to Mana Webservice. Mana centralize commun information between other Koha to facilitate the creation of new subscriptions, vendors, report queries etc... You can search, share, import and comment the content of Mana.', NULL, 'YesNo'); >+INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('Mana','2', 0|1|2,'request to Mana Webservice. Mana centralize commun information between other Koha to facilitate the creation of new subscriptions, vendors, report queries etc... You can search, share, import and comment the content of Mana.','Choice'); >diff --git a/installer/data/mysql/atomicupdate/mana_03-add_mana_autoshare.sql b/installer/data/mysql/atomicupdate/mana_03-add_mana_autoshare.sql >new file mode 100644 >index 0000000..353ffc1 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/mana_03-add_mana_autoshare.sql >@@ -0,0 +1,2 @@ >+INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES >+('AutoShareWithMana','subscription','','defines datas automatically shared with mana','multiple'); >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index f055f57..46093e8 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -60,6 +60,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'), > ('AutoEmailOpacUser','0',NULL,'Sends notification emails containing new account details to patrons - when account is created.','YesNo'), > ('AutoEmailPrimaryAddress','OFF','email|emailpro|B_email|cardnumber|OFF','Defines the default email address where \'Account Details\' emails are sent.','Choice'), >+('AutoShareWithMana','subscription','','defines datas automatically shared with mana','multiple'), > ('AutoLocation','0',NULL,'If ON, IP authentication is enabled, blocking access to the staff client from unauthorized IP addresses','YesNo'), > ('AutomaticItemReturn','1',NULL,'If ON, Koha will automatically set up a transfer of this item to its homebranch','YesNo'), > ('autoMemberNum','1','','If ON, patron number is auto-calculated','YesNo'), >diff --git a/koha-tmpl/intranet-tmpl/prog/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/css/staff-global.css >index fb09d51..358d566 100644 >--- a/koha-tmpl/intranet-tmpl/prog/css/staff-global.css >+++ b/koha-tmpl/intranet-tmpl/prog/css/staff-global.css >@@ -291,6 +291,12 @@ table+table { > .highlighted-row, > .highlighted-row td { background-color: #FFD000 !important } > >+.warned-row, >+.warned-row td { background-color: #FF9000 !important } >+ >+.high-warned-row, >+.high-warned-row td { background-color: #FF0000 !important } >+ > tbody tr:nth-child(odd) td { > background-color : #F3F3F3; > border : 1px solid #BCBCBC; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/mana-subscription-search-result.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/mana-subscription-search-result.inc >deleted file mode 100644 >index 4ce9b9b..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/mana-subscription-search-result.inc >+++ /dev/null >@@ -1,46 +0,0 @@ >-[% USE KohaDates %] >-<table id="mana_results_datatable"> >- <thead> >- <tr> >- <th>ISSN</th> >- <th class="anti-the">Title</th> >- <th>Frequency</th> >- <th>Numbering pattern</th> >- <th class="NoSort">Number of users</th> >- <th class="title-string">Last Import</th> >- [% UNLESS search_only %] >- <th class="NoSort">Actions</th> >- [% END %] >- </tr> >- </thead> >- <tfoot> >- <tr> >- <td><input type="text" class="dt-filter" data-column_num="0" placeholder="Search ISSN" /></td> >- <td><input type="text" class="dt-filter" data-column_num="1" placeholder="Search title" /></td> >- <td><input type="text" class="dt-filter" data-column_num="2" placeholder="Search frequency" /></td> >- <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search numbering pattern" /></td> >- <td></td> >- <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search last import" /></td> >- [% UNLESS search_only %] >- <td></td> >- [% END %] >- </tr> >- </tfoot> >- <tbody> >- [% FOREACH subscription IN subscriptions %] >- [% UNLESS subscription.cannotdisplay %] >- <tr id="row[% subscription.subscriptionid %]"> >- <td>[% IF ( subscription.issn ) %][% subscription.issn %][% END %]</td> >- <td>[% subscription.title %]</a></td> >- <td>[% IF ( subscription.sfdescription ) %][% subscription.sfdescription %][% END %]</td> >- <td>[% IF ( subscription.numberingmethod ) %][% subscription.numberingmethod %][% END %]</td> >- <td>[% IF ( subscription.nbofusers ) %][% subscription.nbofusers %][% END %]</td> >- <td><span title="[% subscription.lastimport %]">[% subscription.lastimport | $KohaDates %]</span></td> >- [% UNLESS search_only %] >- <td><a style="cursor:pointer" onclick="mana_use([% subscription.id %])"> <i class="fa fa-inbox"></i> Use</a></td> >- [% END %] >- </tr> >- [% END %] >- [% END %] >- </tbody> >-</table> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-report-search-result.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-report-search-result.inc >new file mode 100644 >index 0000000..7f74257 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-report-search-result.inc >@@ -0,0 +1,83 @@ >+[% USE KohaDates %] >+[% USE Koha %] >+[% USE AuthorisedValues %] >+[% USE Branches %] >+ >+<table id="mana_results_datatable" width=100%> >+ <thead> >+ <tr> >+ <th>Report Name</th> >+ <th class="anti-the" width=35%>Notes</th> >+ <th>Type</th> >+ <th title="number of libraries using this pattern"># of users</th> >+ <th class="title-string" title="last time a library used this pattern">Last import</th> >+ <th> Comments </th> >+ [% UNLESS search_only %] >+ <th class="NoSort">Actions</th> >+ [% END %] >+ </tr> >+ </thead> >+ <tbody> >+ [% FOREACH report IN reports %] >+ [% UNLESS report.cannotdisplay %] >+ <tr id="row[% report.id %]" >+ [% IF report.nbofcomment > highWarned %] >+ class = "high-warned-row" >+ [% ELSIF report.nbofcomment > warned %] >+ class = "warned-row" >+ [% ELSIF report.nbofcomment > lowWarned %] >+ class = "highlighted-row" >+ [% END %] >+ > >+ <input hidden class="rowid" value="[% report.id %]"> >+ <td>[% IF ( report.report_name ) %][% report.report_name %][% END %]</td> >+ <td title="[% report.savedsql %]"><div> >+ [% IF report.notes.length > 200 %] >+ [% report.notes.substr(0,200) %]<a class="showbutton">Show More</a></div><div hidden> >+ [% END %] >+ [% report.notes %] >+ [% IF report.notes.length > 200 %] >+ <a class="hidebutton">Show Less</a></div> </td> >+ [% END %] >+ <td> [% report.type %] </td> >+ <td>[% IF ( report.nbofusers ) %][% report.nbofusers %][% END %]</td> >+ <td><span title="[% report.lastimport %]">[% report.lastimport | $KohaDates %]</span></td> >+ <td>[% FOREACH comment IN report.comments %][% comment.message %] ([% comment.nb %]) <br>[% END %]</td> >+ >+ [% UNLESS search_only %] >+ <td> >+ <button onclick="mana_use([% report.id %])"> <i class="fa fa-inbox"></i> Use</button> >+ <input hidden type="text" id="selectedcomment"> >+ <select> >+ <option selected disabled>Report mistake</option> >+ [% FOREACH comment IN report.comments %] >+ <option class="actionreport1" value="[% comment.id %]" onclick="mana_increment('[% comment.id %]', 'resource_comment', 'nb')"> [% comment.message %] ([% comment.nb %]) >+ [% END %] >+ <option data-toggle="modal" onclick="($('#selected_id').val($('.rowid').val()))" data-target="#comment_box"> other >+ </select> >+ <button hidden class="actionreport2" hidden> Cancel</button> >+ </td> >+ [% END %] >+ </tr> >+ [% END %] >+ [% END %] >+ </tbody> >+</table> >+ >+<div id="comment_box" class="modal" tabindex="-1" role="dialog" aria-labelledby="mana_search_result_label" style="display: none;"> >+ <div class="modal-dialog modal-lg" style="width: 30%"> >+ <div class="modal-content" style=""> >+ <div class="modal-header"> >+ <button type="button" id="commentCloseButton" class="closebtn" aria-hidden="true">Ã</button> >+ <h3 id="mana_submit_comment"> Please enter a new commment (max 35 caracters)</h3> >+ </div> >+ <div class="modal-body"> >+ <form> >+ <input hidden id="selected_id" value=""> >+ <input type="text" id="manamsg"> >+ </form> >+ <button id="CommentButton"> Comment </button> >+ </div> >+ </div> >+ </div> >+</div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-subscription-search-result.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-subscription-search-result.inc >new file mode 100644 >index 0000000..447ab50 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/mana/mana-subscription-search-result.inc >@@ -0,0 +1,82 @@ >+[% USE KohaDates %] >+[% USE Koha %] >+[% USE AuthorisedValues %] >+[% USE Branches %] >+ >+ >+ >+<table id="mana_results_datatable" width=100%> >+ <thead> >+ <tr> >+ <th>ISSN</th> >+ <th class="anti-the" width=50%>Title</th> >+ <th> Published by </th> >+ <th>Frequency</th> >+ <th>Numbering pattern</th> >+ <th title="number of libraries using this pattern"># of users</th> >+ <th class="title-string" title="last time a library used this pattern">Last import</th> >+ <th> Comments </th> >+ [% UNLESS search_only %] >+ <th class="NoSort">Actions</th> >+ [% END %] >+ </tr> >+ </thead> >+ <tbody> >+ [% FOREACH subscription IN subscriptions %] >+ [% UNLESS subscription.cannotdisplay %] >+ <tr id="row[% subscription.subscriptionid %]" >+ [% IF subscription.nbofcomment > highWarned %] >+ class = "high-warned-row" title="this resource has been reported more than [% highWarned %] times, take care!" >+ [% ELSIF subscription.nbofcomment > warned %] >+ class = "warned-row" title="this resource has been reported more than [% warned %] times, take care!" >+ [% ELSIF subscription.nbofcomment > lowWarned %] >+ class = "highlighted-row" title="this resource has been reported more than [% lowWarned %] times, take care!" >+ [% END %] >+ > >+ <input hidden class="rowid" value="[% subscription.id %]"> >+ <td>[% IF ( subscription.issn ) %][% subscription.issn %][% END %]</td> >+ <td>[% subscription.title %]</a></td> >+ <td>[% IF ( subscription.publishercode ) %][% subscription.publishercode %][% END %]</td> >+ <td>[% IF ( subscription.sfdescription ) %][% subscription.sfdescription %][% END %]</td> >+ <td>[% IF ( subscription.numberingmethod ) %][% subscription.numberingmethod %][% END %]</td> >+ <td>[% IF ( subscription.nbofusers ) %][% subscription.nbofusers %][% END %]</td> >+ <td><span title="[% subscription.lastimport %]">[% subscription.lastimport | $KohaDates %]</span></td> >+ <td>[% FOREACH comment IN subscription.comments %][% comment.message %] ([% comment.nb %]) <br>[% END %]</td> >+ >+ [% UNLESS search_only %] >+ <td> >+ <button onclick="mana_use([% subscription.id %])"> <i class="fa fa-inbox"></i> Use</button> >+ <input hidden type="text" id="selectedcomment"> >+ <select> >+ <option selected disabled>Report mistake</option> >+ [% FOREACH comment IN subscription.comments %] >+ <option class="actionreport1" value="[% comment.id %]" onclick="mana_increment('[% comment.id %]', 'resource_comment', 'nb')"> [% comment.message %] ([% comment.nb %]) >+ [% END %] >+ <option data-toggle="modal" onclick="($('#selected_id').val($('.rowid').val()))" data-target="#comment_box"> other >+ </select> >+ <button hidden class="actionreport2" hidden> Cancel</button> >+ </td> >+ [% END %] >+ </tr> >+ [% END %] >+ [% END %] >+ </tbody> >+</table> >+ >+<div id="comment_box" class="modal" tabindex="-1" role="dialog" aria-labelledby="mana_search_result_label" style="display: none;"> >+ <div class="modal-dialog modal-lg" style="width: 30%"> >+ <div class="modal-content" style=""> >+ <div class="modal-header"> >+ <button type="button" id="commentCloseButton" class="closebtn" aria-hidden="true">Ã</button> >+ <h3 id="mana_submit_comment"> Please enter a new commment (max 35 caracters)</h3> >+ </div> >+ <div class="modal-body"> >+ <form> >+ <input hidden id="selected_id" value=""> >+ <input type="text" id="manamsg"> Comment: >+ </form> >+ <button id="CommentButton"> Comment </button> >+ </div> >+ </div> >+ </div> >+</div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >index 2cebb6d..3032b6e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >@@ -46,11 +46,11 @@ > [% ELSE %] > <div class="btn-group"><a id="newsubscription" class="btn btn-default btn-sm" href="/cgi-bin/koha/serials/subscription-add.pl"><i class="fa fa-plus"></i> New subscription</a></div> > [% END %] >- [% IF Koha.Preference('Mana') %] >+ [% IF Koha.Preference('Mana') and Koha.Preference('AutoShareWithMana').grep('subscription').size == 0 %] > [% IF one_language_enabled==0 or mana_id %] >- <div class="btn-group"><a data-toggle="modal" data-toggle="tooltip" title="Your email address will be associated to your sharing." data-target="#mana_share_modal" class="btn btn-small"><i class="fa fa-share-alt"></i> Share</a></div> >+ <div class="btn-group"><a data-toggle="modal" data-toggle="tooltip" title="Share the subscription with other librairies. Your email address will be associated to your sharing." data-target="#mana_share_modal" class="btn btn-default btn-sm"><i class="fa fa-share-alt"></i> Share</a></div> > [% ELSE %] >- <div class="btn-group" data-toggle="tooltip" title="Your email address will be associated to your sharing."><a class="btn btn-small" onclick="share()"><i class="fa fa-share-alt"></i> Share</a></div> >+ <div class="btn-group" data-toggle="tooltip" title="Share the subscription with other libraries. Your email address will be associated to your sharing."><a class="btn btn-default btn-sm" onclick="share()"><i class="fa fa-share-alt"></i> Share</a></div> > [% END %] > [% END %] > [% END %] >@@ -119,18 +119,16 @@ > <div class="modal-body"> > [% IF (mana_id) %] > <div class="alert"> >- <p>Your subscription is already linked with a Mana subscription model. Share it if you have made modifications, otherwide it will do nothing.</p> >+ <p>Your subscription is already linked with a Mana subscription model. Share it if you have made modifications, otherwise it will do nothing.</p> > </div> > [% END %] > [% IF ( languages_loop ) %] > [% UNLESS ( one_language_enabled ) %] > <div class="rows"> >- <p>The frequency and the numberpattern of [% bibliotitle %] are :</p> >- <ol> >- <li><span class="label">Frequency : </span> >+ <li><span class="label">Frequency: </span> > [% frequency.description %] > </li> >- <li><span class="label">Number pattern : </span> >+ <li><span class="label">Number pattern: </span> > [% numberpattern.label %] > </li> > </ol> >@@ -138,7 +136,7 @@ > <div class="rows"> > <form method="get" id="mana_share_form" action="/cgi-bin/koha/serials/subscription-detail.pl" class="validated" > > <fieldset> >- <label for="mana_language">Language of your sharing :</label> >+ <label for="mana_language">Language:</label> > <select id="mana_language" name="mana_language"> > [% FOREACH languages_loo IN languages_loop %] > [% IF ( languages_loo.group_enabled ) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt >index 0d43e6f..faf4a6a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt >@@ -12,6 +12,14 @@ > <div id="doc" class="yui-t7"> > <div id="bd"> > <div id="yui-main" class="sysprefs"> >+ [% IF ( Koha.Preference('Mana') == 2) %] >+ <fieldset> >+ <p><center> You haven't decided if you want to activate Mana Knowlede Base, please let us know by clicking<center></p> >+ <a href=/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=request+to+mana+webservice><center>Here</center></a> >+ </fieldset> >+ [% END %] >+ >+ > <div class="yui-g"><h1>Koha administration</h1></div> > <div class="yui-g"> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref >index 8fa85be..f72bffa 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref >@@ -51,9 +51,15 @@ Web services: > - > - pref: Mana > choices: >- yes: Enable >- no: Disable >- - request to Mana Webservice. Mana centralize commun information between other Koha to facilitate the creation of new subscriptions, vendors, report queries etc... You can search, share, import and comment the content of Mana. >+ 0: Disable >+ 1: Enable >+ 2: No, let me think about it >+ - request to Mana Webservice. Mana centralize commun information between other Koha to facilitate the creation of new subscriptions, vendors, report queries etc... You can search, share, import and comment the content of Mana. The informations shared with Mana KB are shared under the CC-0 license. More infos about CC-0 license on https://creativecommons.org/choose/zero/ >+ - >+ - 'Fields automatically shared with mana' >+ - pref: AutoShareWithMana >+ multiple: >+ subscription: Subscriptions > Reporting: > - > - Only return >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-report-search-result.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-report-search-result.tt >new file mode 100644 >index 0000000..a2a9298 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-report-search-result.tt >@@ -0,0 +1 @@ >+[% INCLUDE 'mana/mana-report-search-result.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-subscription-search-result.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-subscription-search-result.tt >new file mode 100644 >index 0000000..0c44f7a >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/mana/mana-subscription-search-result.tt >@@ -0,0 +1 @@ >+[% INCLUDE 'mana/mana-subscription-search-result.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >index 4c3b47e..14fbdc7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >@@ -74,6 +74,10 @@ function load_group_subgroups () { > } > } > >+function share() { >+ window.location="/cgi-bin/koha/reports/guided_reports.pl?phase=Save"; >+} >+ > $(document).ready(function(){ > $('#limit').change(function() { > $('#limitselect').submit(); >@@ -84,6 +88,30 @@ $(".goback").on("click",function(e){ > window.history.back(); > }); > >+$(".mana_search_button").on("click",function(){ >+ mana_search($(this).prev().val()); >+}); >+ >+$(".ShareButton").on("click", function(){ >+ if($(this).closest("tr").find(".report_notes").text().length < 20 || $(this).closest("tr").find(".report_name").text().length < 20){ >+ $("#shared_infos").hide(); >+ $("#ManaShareButton").hide(); >+ $("#noterror").show(); >+ } >+ else{ >+ $("#shared_id").html($(this).closest("tr").find(".report_id").text()); >+ $("#shared_name").html($(this).closest("tr").find(".report_name").text()); >+ $("#shared_sql").html($(this).closest("tr").find(".report_sql").val()); >+ $("#shared_type").html($(this).closest("tr").find(".report_type").text()); >+ $("#shared_group").html($(this).closest("tr").find(".report_group").text()); >+ $("#shared_notes").html($(this).closest("tr").find(".report_notes").text()); >+ } >+}); >+ >+$('#search_form').submit(function () { >+ return false; >+}); >+ > $("#addColumn").on("click",function(){ > addColumn(); > }); >@@ -267,7 +295,107 @@ $("#delColumn").on("click",function(){ > }); > [% END %] > }); >-//]]> >+ >+function mana_increment(mana_id, resourcename, fieldvalue, stepvalue = 1){ >+ $.ajax( { >+ type: "POST", >+ url: "/cgi-bin/koha/svc/mana/addvaluetofield", >+ data: {id: mana_id, field: fieldvalue, resource: resourcename, step: stepvalue}, >+ datatype: "json", >+ }).done( function() { >+ }).fail( function(){ }); >+} >+ >+function mana_use( mana_id ){ >+ $.ajax( { >+ type:"POST", >+ url: "/cgi-bin/koha/svc/mana/use", >+ data: {id:mana_id, resource: 'report', saveinbase: 1}, >+ dataType: "json", >+ }) >+ .done( function (result){ >+ window.location = ("/cgi-bin/koha/reports/guided_reports.pl?reports=").concat(result.id).concat("&phase=Show%20SQL"); >+ }) >+ .fail( function ( foo, msg, longmsg){ >+ }); >+} >+ >+function mana_search( textquery ){ >+ $.ajax({ >+ type: "POST", >+ url: "/cgi-bin/koha/svc/mana/search", >+ data: {biblionumber: $("#biblionumber").val(), resource: 'report', id: textquery, usecomments: 1}, >+ dataType: "html", >+ }) >+ .done( function( result ) { >+ $("#mana_search_result .modal-body").html(result); >+ $("#mana_search_result_label").text("Results from Mana Knowledge Base"); >+ $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults,{ >+ "sPaginationType":"four_button", >+ "autoWidth": false, >+ "columnDefs": [ >+ { "width": "35%", "targets": 1 } >+ ], >+ "aoColumnDefs": [ >+ { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] }, >+ { "sType": "title-string", "aTargets" : [ "title-string" ] }, >+ { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] } >+ ] >+ })); >+ if($("td.dataTables_empty").length == 0){ >+ $("#mana_search").show(); >+ } >+ >+ $( "select[class='actionreport1']" ).show(); >+ $( "button[class='actionreport2']" ).hide(); >+ $("#CommentButton").on("click", function(){ >+ var resource_type = "report"; >+ var target_id = $("#selected_id").val(); >+ var manamsg = $("#manamsg").val(); >+ mana_comment(target_id, manamsg, resource_type); >+ $("#comment_box").modal("hide"); >+ }); >+ >+ $(".showbutton").on("click", function(){ >+ $(this).parent().hide(); >+ $(this).parent().next().show(); >+ }); >+ >+ $("a[class='hidebutton']").on("click", function(){ >+ $(this).parent().hide(); >+ $(this).parent().prev().show(); >+ }); >+ >+ $("#commentCloseButton").on("click", function(){ >+ $("#comment_box").modal("hide"); >+ }); >+ >+ $(".actionreport1").on("click", function(){ >+ $("#selectedcomment").val($(this).val()); >+ $(this).parent("select").hide(); >+ $(this).parent("select").next().show(); >+ }); >+ >+ $(".actionreport2").on("click", function(){ >+ $(this).hide(); >+ $(this).prev().show(); >+ mana_increment($("#selectedcomment").val(), 'resource_comment', 'nb', -1); >+ }); >+ }).fail( function( result ){ >+ }); >+} >+ >+function mana_comment( target_id, manamsg, resource_type ){ >+ $.ajax( { >+ type: "POST", >+ url: "/cgi-bin/koha/svc/mana/share", >+ data: {message: manamsg, resource: resource_type , resource_id: target_id}, >+ datatype: "json", >+ }) >+} >+ >+ >+ > </script> > </head> > <body id="rep_guided_reports_start" class="rep"> >@@ -357,6 +485,26 @@ canned reports and writing custom SQL reports.</p> > </div> > [% END %] > >+<div id="mana_search_result" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mana_search_result_label" style="width: 100%; left:0%; margin-left: auto; display: none;"> >+ <div class="modal-dialog modal-lg"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="mana_search_result_label"> Mana Search</h3> >+ </div> >+ <div> >+ <form id="search_form" style="margin-left: 5%"> >+ Please enter a few key words: >+ <input type=text id=mana_search_field> >+ <input type=button class="mana_search_button" value="Search"> >+ </form> >+ <div class="modal-body"> >+ </div> >+ </div> >+ </div> >+ </div> >+</div> >+ > [% IF ( saved1 ) %] > [% IF ( savedreports ) %]<h1>Saved reports</h1> > >@@ -374,6 +522,25 @@ canned reports and writing custom SQL reports.</p> > <option value="">All</option> > </select> > </div> >+<div style="display:inline-block"> >+ [% IF (manamsg == 'success') %] >+ <div id="mana_search" class="dialog message"> >+ <p> Shared successfully! Thanks for your help.</p> >+ </div> >+ [% ELSIF (manamsg == 'fail') %] >+ <div id="mana_search" class="dialog message"> >+ <p> An error occured while sharing, please try again later.</p> >+ </div> >+ [% END %] >+ >+ [% IF (Koha.Preference('Mana') == 1) %] >+ <div id="mana_search" class="dialog message"> >+ <p> You want more reports? Check the Mana Knowledge Base <p> <a style="cursor:pointer" data-toggle="modal" data-target="#mana_search_result">Quick Search</a></p> >+ </div> >+ [% END %] >+ >+</script> >+<h1> [% savedreport.sql %]</h1> > <form action="/cgi-bin/koha/reports/guided_reports.pl" id="reports_form" method="post"> > <input type="hidden" name="phase" value="Delete Multiple" /> > <table id="table_reports"> >@@ -400,23 +567,24 @@ canned reports and writing custom SQL reports.</p> > <tbody> > [% FOREACH savedreport IN savedreports %] > [% UNLESS ( loop.odd ) %]<tr class="odd">[% ELSE %]<tr>[% END %] >- <td> >+ <td class="report_checkbox"> > [% IF ( CAN_user_reports_delete_reports ) %] <!-- not break CSS --> > <input type="checkbox" name="ids" value="[% savedreport.id %]" /> > [% END %] >+ <input hidden class="report_sql" value="[% savedreport.savedsql %]"> > </td> >- <td><label for="ids">[% savedreport.id %]</label></td> >- <td> >+ <td class="report_id"><label for="ids">[% savedreport.id %]</label></td> >+ <td class="report_name"> > [% IF ( savedreport.report_name ) %] > [% savedreport.report_name %] > [% ELSE %] > [ no name ] > [% END %] > </td> >- <td>[% savedreport.type %]</td> >- <td>[% savedreport.groupname %]</td> >+ <td class="report_type">[% savedreport.type %]</td> >+ <td class="report_group">[% savedreport.groupname %]</td> > <td>[% savedreport.subgroupname %]</td> >- <td>[% savedreport.notes %]</td> >+ <td class="report_notes">[% savedreport.notes %]</td> > <td>[% savedreport.borrowersurname %][% IF ( savedreport.borrowerfirstname ) %], [% savedreport.borrowerfirstname %][% END %] ([% savedreport.borrowernumber %])</td> > <td><span title="[% savedreport.date_created %]">[% savedreport.date_created | $KohaDates %]</span></td> > <td><span title="[% savedreport.last_modified %]">[% savedreport.last_modified | $KohaDates with_hours => 1 %]</span></td> >@@ -456,6 +624,9 @@ canned reports and writing custom SQL reports.</p> > <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&phase=Edit%20SQL"><i class="fa fa-pencil"></i> Edit</a></li> > <li><a title="Duplicate this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?phase=Create report from SQL&sql=[% savedreport.savedsql |uri %]&reportname=[% savedreport.report_name |uri %]&notes=[% savedreport.notes |uri %]"><i class="fa fa-copy"></i> Duplicate</a></li> > [% END %] >+ [% IF (Koha.Preference('Mana') == 1) %] >+ <li><a class="ShareButton" data-toggle="modal" href="#mana_share_report" title="Share your report with Mana Knowledge Base"><i class="fa fa-share-alt"></i> Share</a></li> >+ [% END %] > <li><a href="/cgi-bin/koha/tools/scheduler.pl?id=[% savedreport.id %]"><i class="fa fa-clock-o"></i> Schedule</a></li> > [% IF ( CAN_user_reports_delete_reports ) %] > <li><a class="confirmdelete" title="Delete this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&phase=Delete%20Saved"><i class="fa fa-trash"></i> Delete</a></li> >@@ -468,6 +639,7 @@ canned reports and writing custom SQL reports.</p> > [% END %] > </tbody> > </table> >+</div> > [% IF ( CAN_user_reports_delete_reports ) %] > <fieldset class="action"> > <input type="submit" value="Delete selected" /> >@@ -508,6 +680,111 @@ canned reports and writing custom SQL reports.</p> > [% END %] > [% END %] > >+<div id="mana_share_report" class="modal fade" tabindex="-1" role="dialog" arialabelledby="mana_share_modal_label" style="display: none;"> >+ <div class="modal-dialog"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <h3 id="mana_share_modal_label">Share with Mana</h3> >+ </div> >+ <div class="modal-body"> >+ [% IF (mana_id) %] >+ <div class="alert"> >+ <p>Your subscription is already linked with a Mana subscription model. Share it if you have made modifications, otherwise it will do nothing.</p> >+ </div> >+ [% END %] >+ [% IF ( languages_loop ) %] >+ [% UNLESS ( one_language_enabled ) %] >+ <label id="noteerror" type="hidden">Please enter a report name and descriptive note before sharing (minimum 20 characters)</label> >+ <div id="shared_infos" class="rows"> >+ <li> <span class="label">Id: </span><div id="shared_id"></div> >+ </li> >+ <li> <span class="label">Name: </span><div id="shared_name"></div> >+ </li> >+ <li> <span class="label">SQL: </span><div id="shared_sql"></div> >+ </li> >+ <li> <span class="label">Group: </span><div id="shared_group"></div> >+ </li> >+ <li> <span class="label">Type: </span><div id="shared_type"></div> >+ </li> >+ <li> <span class="label">Notes: </span><div id="shared_notes"></div> >+ </li> >+ >+ </div> >+ <div class="rows"> >+ <form method="post" id="mana_share_form" action="/cgi-bin/koha/reports/guided_reports.pl?phase=Share" class="validated" > >+ <input type="hidden" name="phase" value="Share"> >+ >+ <fieldset> >+ <label for="mana_language">Language:</label> >+ <select id="mana_language" name="mana_language"> >+ [% FOREACH languages_loo IN languages_loop %] >+ [% IF ( languages_loo.group_enabled ) %] >+ [% IF ( languages_loo.plural ) %] >+ [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %] >+ [% IF ( sublanguages_loo.enabled ) %] >+ [% IF ( sublanguages_loo.sublanguage_current ) %] >+ <option value="[% languages_loo.rfc4646_subtag %]" selected> >+ [% sublanguages_loo.native_description %] >+ [% sublanguages_loo.script_description %] >+ [% sublanguages_loo.region_description %] >+ >+ [% sublanguages_loo.variant_description %] >+ ([% sublanguages_loo.rfc4646_subtag %]) >+ </option> >+ [% ELSE %] >+ <option value="[% languages_loo.rfc4646_subtag %]"> >+ [% sublanguages_loo.native_description %] >+ [% sublanguages_loo.script_description %] >+ [% sublanguages_loo.region_description %] >+ [% sublanguages_loo.variant_description %] >+ ([% sublanguages_loo.rfc4646_subtag %]) >+ </option> >+ [% END %] >+ [% END %] >+ [% END %] >+ [% ELSE %] >+ [% IF ( languages_loo.group_enabled ) %] >+ [% IF ( languages_loo.current ) %] >+ <option value="[% languages_loo.rfc4646_subtag %]" selected> >+ [% IF ( languages_loo.native_description ) %] >+ [% languages_loo.native_description %] >+ [% ELSE %] >+ [% languages_loo.rfc4646_subtag %] >+ [% END %] >+ </option> >+ [% ELSE %] >+ <option value="[% languages_loo.rfc4646_subtag %]"> >+ [% IF ( languages_loo.native_description ) %] >+ [% languages_loo.native_description %] >+ [% ELSE %] >+ [% languages_loo.rfc4646_subtag %] >+ [% END %] >+ </option> >+ [% END %] >+ [% END %] >+ [% END %] >+ [% END %] >+ [% END %] >+ </select> >+ <input type="hidden" id="reportid" name="reportid" value="[% savedreport.id %]"/> >+ </fieldset> >+ </form> >+ </div> >+ [% END %] >+ [% END %] >+ </div> >+ <div class="modal-footer"> >+ <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> >+ [% IF one_language_enabled==0 %] >+ <button id="ManaShareButton" type="submit" form="mana_share_form" class="btn btn-primary">Share</button> >+ [% ELSE %] >+ <div id="ManaShareButton" class="btn-group"><a class="btn btn-primary"'onclick="share()">Share</a></div> >+ [% END %] >+ </div> >+ </div> >+ </div> >+</div> >+ > > [% IF ( build1 ) %] > [% IF ( cache_error) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/mana-subscription-search-result.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/mana-subscription-search-result.tt >deleted file mode 100644 >index 0afe02c..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/mana-subscription-search-result.tt >+++ /dev/null >@@ -1 +0,0 @@ >-[% INCLUDE 'mana-subscription-search-result.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >index 46c732e..5cba09a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >@@ -409,14 +409,19 @@ function mana_search() { > $.ajax({ > type: "POST", > url: "/cgi-bin/koha/svc/mana/search", >- data: {biblionumber : $("#biblionumber").val()}, >+ data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1}, > dataType: "html", > }) > .done( function( result ) { >- $("#mana_search_result .modal-body").html(result); >- $("#mana_search_result_label").text("Results from Mana"); >+ $("#mana_search_result .modal-body").html(result); >+ $("#mana_search_result_label").text("Results from Mana Knowledge Base"); > $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, { > "sPaginationType": "four_button", >+ "order":[[4, "desc"], [5, "desc"]], >+ "autoWidth": false, >+ "columnDefs": [ >+ { "width": "35%", "targets": 1 } >+ ], > "aoColumnDefs": [ > { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] }, > { "sType": "title-string", "aTargets" : [ "title-string" ] }, >@@ -426,17 +431,62 @@ function mana_search() { > if($("td.dataTables_empty").length == 0){ > $("#mana_search").show(); > } >+ $( "select[class='actionreport1']" ).show(); >+ $( "button[class='actionreport2']" ).hide(); >+ >+ $("#CommentButton").on("click", function(){ >+ var resource_type = "subscription"; >+ var target_id = $("#selected_id").val(); >+ var manamsg = $("#manamsg").val(); >+ mana_comment(target_id, manamsg, resource_type); >+ $("#comment_box").modal("hide"); >+ }); >+ >+ $("#commentCloseButton").on("click", function(){ >+ $("#comment_box").modal("hide"); >+ }); >+ >+ $(".actionreport1").on("click", function(){ >+ $("#selectedcomment").val($(this).val()); >+ $(this).parent("select").hide(); >+ $(this).parent("select").next().show(); >+ }); >+ >+ $(".actionreport2").on("click", function(){ >+ $(this).hide(); >+ $(this).prev().show(); >+ mana_increment($("#selectedcomment").val(), 'resource_comment', 'nb', -1); >+ }); >+ > }).fail(function(result){ > }); > } > >+function mana_comment( target_id, manamsg, resource_type ){ >+ $.ajax( { >+ type: "POST", >+ url: "/cgi-bin/koha/svc/mana/share", >+ data: {message: manamsg, resource: resource_type , resource_id: target_id}, >+ datatype: "json", >+ }) >+} >+ >+function mana_increment(mana_id, resource, fieldvalue, stepvalue = 1){ >+ $.ajax( { >+ type: "POST", >+ url: "/cgi-bin/koha/svc/mana/addvaluetofield", >+ data: {id: mana_id, resource: resource, field: fieldvalue, step: stepvalue}, >+ datatype: "json", >+ }) >+} >+ > function mana_use(mana_id){ > $("tr").removeClass("selected"); > $("#row"+mana_id).addClass("selected"); > $.ajax( { > type: "POST", > url: "/cgi-bin/koha/svc/mana/use", >- data: {id : mana_id}, >+ data: {id: mana_id, resource: 'subscription'}, > dataType: "json", > }) > .done(function(result){ >@@ -511,6 +561,14 @@ function removeDisabledAttr() { > > > $(document).ready(function() { >+ >+ >+ >+ >+ mana_search(); >+ $("#myid").on("click", function(){ >+ debugger; >+ }) > $("#displayexample").hide(); > $("#mana_search_result").modal("hide"); > $("#aqbooksellerid").on('keypress', function(e) { >@@ -619,7 +677,7 @@ $(document).ready(function() { > }); > $("#subscription_add_next").on("click",function(){ > if ( Check_page1() ) { >- [% IF Koha.Preference('Mana') %] >+ [% IF Koha.Preference('Mana')== 1 %] > mana_search(); > [% END %] > show_page_2(); >@@ -649,6 +707,8 @@ $(document).ready(function() { > e.preventDefault(); > testPredictionPattern(); > }); >+ >+ > }); > //]]> > </script> >@@ -845,8 +905,16 @@ $(document).ready(function() { > > <div id="page_2"> > <div class="yui-u first"> >+ [% IF ( Koha.Preference('Mana') == 2) %] >+ <fieldset> >+ <p><center>You haven't activated the Mana Knowledge Base, click >+ <a href=/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=request+to+mana+webservice>here</a> >+ to configure.</center></p> >+ </fieldset> >+ [% END %] >+ > <div id="mana_search" class="dialog message"> >- <p>Frequency and Numbering pattern have been already proposed for this subscription on Mana. To show results, click <a style="cursor:pointer" data-toggle="modal" data-target="#mana_search_result">Here</a></p> >+ <p>Subscription found on Mana Knowledge Base:</p><p> <a style="cursor:pointer" data-toggle="modal" data-target="#mana_search_result">Quick fill</a></p> > </div> > <div id="subscription_form_planning"> > <fieldset class="rows"> >@@ -1134,17 +1202,15 @@ $(document).ready(function() { > </div> > </div> > >-<div id="mana_search_result" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mana_search_result_label" style="width: 90%; left:5%; margin-left: auto; display: none;"> >+<div id="mana_search_result" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mana_search_result_label" style="width: 100%; left:0%; margin-left: auto; display: none;"> > <div class="modal-dialog modal-lg"> > <div class="modal-content"> > <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> > <h3 id="mana_search_result_label"></h3> > </div> > <div class="modal-body"> > </div> >- <div class="modal-footer"> >- <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> >- </div> > </div> > </div> > </div> >diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl >index b81e84f..526297b 100755 >--- a/reports/guided_reports.pl >+++ b/reports/guided_reports.pl >@@ -37,6 +37,7 @@ use Koha::AuthorisedValues; > use Koha::BiblioFrameworks; > use Koha::Libraries; > use Koha::Patron::Categories; >+use Koha::SharedContent; > > =head1 NAME > >@@ -144,6 +145,7 @@ elsif ( $phase eq 'Build new' ) { > } > } > $template->param( >+ 'manamsg' => $input->param('manamsg')||'', > 'saved1' => 1, > 'savedreports' => $reports, > 'usecache' => $usecache, >@@ -539,7 +541,7 @@ elsif ( $phase eq 'Build report' ) { > > elsif ( $phase eq 'Save' ) { > # Save the report that has just been built >- my $area = $input->param('area'); >+ my $area = $input->param('area'); > my $sql = $input->param('sql'); > my $type = $input->param('type'); > $template->param( >@@ -643,6 +645,7 @@ elsif ( $phase eq 'Save Report' ) { > cache_expiry => $cache_expiry, > public => $public, > } ); >+ > logaction( "REPORTS", "ADD", $id, "$name | $sql" ) if C4::Context->preference("ReportsLog"); > $template->param( > 'save_successful' => 1, >@@ -653,6 +656,14 @@ elsif ( $phase eq 'Save Report' ) { > } > } > >+elsif ($phase eq 'Share'){ >+ my $result = Koha::SharedContent::manaShareInfos($input, $borrowernumber, $input->param('reportid'), 'report'); >+ if ( $result and ($result->{code} eq "200" or $result->{code} eq "201") ) { >+ print $input->redirect("/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved&manamsg=success"); >+ }else{ >+ print $input->redirect("/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved&manamsg=fail"); >+ } >+} > elsif ($phase eq 'Run this report'){ > # execute a saved report > my $limit = $input->param('limit') || 20; >diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl >index 535f669..f7f1f10 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -376,7 +376,7 @@ sub redirect_add_subscription { > my $mana_id; > if ( $query->param('mana_id') ne "" ) { > $mana_id = $query->param('mana_id'); >- Koha::SharedContent::manaNewUserPatchRequest("subscription",$mana_id); >+ Koha::SharedContent::manaIncrementRequest("subscription",$mana_id, "nbofusers"); > } > else { > $mana_id = undef; >@@ -403,7 +403,10 @@ sub redirect_add_subscription { > $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, > $skip_serialseq, $mana_id > ); >- >+ if ( grep { $_ eq "subscription" } split(/,/, C4::Context->preference('AutoShareWithMana')) ){ >+ my $result = Koha::SharedContent::manaShareInfos( $query, $loggedinuser, $subscriptionid, 'subscription'); >+ $template->param( mana_code => $result->{code} ); >+ } > my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription' } ); > insert_additional_fields( $additional_fields, $biblionumber, $subscriptionid ); > >@@ -463,7 +466,7 @@ sub redirect_mod_subscription { > my $mana_id; > if ( defined( $query->param('mana_id') ) ) { > $mana_id = $query->param('mana_id'); >- Koha::SharedContent::manaNewUserPatchRequest("subscription",$mana_id); >+ Koha::SharedContent::manaIncrementRequest("subscription",$mana_id, "nbofusers"); > } > else { > $mana_id = undef; >diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl >index f992fe1..5a363ad 100755 >--- a/serials/subscription-detail.pl >+++ b/serials/subscription-detail.pl >@@ -100,44 +100,9 @@ if ($op eq 'del') { > } > } > elsif ( $op and $op eq "share" ) { >- my $mana_language; >- if ( $query->param('mana_language') ) { >- $mana_language = $query->param('mana_language'); >- } >- else { >- $mana_language = C4::Context->preference('language'); >- } >- >- my $mana_email; >- if ( $loggedinuser ne 0 ) { >- my $borrower = Koha::Patrons->find($loggedinuser); >- $mana_email = $borrower->email >- if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >- $mana_email = $borrower->emailpro >- if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >- $mana_email = >- Koha::Libraries->find( C4::Context->userenv->{'branch'} )->branchemail >- if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >- } >- $mana_email = C4::Context->preference('KohaAdminEmailAddress') >- if ( ( not defined($mana_email) ) or ( $mana_email eq '' ) ); >- my %versions = C4::Context::get_versions(); >- >- my $mana_info = { >- language => $mana_language, >- kohaversion => $versions{'kohaVersion'}, >- exportemail => $mana_email >- }; >- my $sub_mana_info = Koha::Subscription::get_sharable_info($subscriptionid); >- $sub_mana_info = { %$sub_mana_info, %$mana_info }; >- my $result = Koha::SharedContent::manaPostRequest( "subscription", >- $sub_mana_info ); >- if ( $result->{code} eq "200" and $result->{code} eq "201" ) { >- my $subscription = Koha::Subscriptions->find($subscriptionid); >- $subscription->set( { mana_id => $result->{id} } )->store; >- $subs->{mana_id} = $result->{id}; >- } >+ my $result = Koha::SharedContent::manaShareInfos($query, $loggedinuser, $subscriptionid, 'subscription'); > $template->param( mana_code => $result->{code} ); >+ $subs->{mana_id} = $result->{id}; > } > > my $hasRouting = check_routing($subscriptionid); >diff --git a/svc/mana/addvaluetofield b/svc/mana/addvaluetofield >new file mode 100755 >index 0000000..18ae23a >--- /dev/null >+++ b/svc/mana/addvaluetofield >@@ -0,0 +1,42 @@ >+#!/usr/bin/perl >+ >+# Copyright 2017 BibLibre Baptiste Wojtkowski >+# >+# 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 <http://www.gnu.org/licenses>. >+# >+ >+use Modern::Perl; >+ >+use Koha::SharedContent; >+use C4::Auth qw(check_cookie_auth); >+ >+use CGI; >+use JSON; >+ >+ >+my $input = new CGI; >+binmode STDOUT, ":encoding(UTF-8)"; >+print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); >+ >+my ( $auth_status, $sessionID ) = >+ check_cookie_auth( $input->cookie('CGISESSID'), >+ { serials => 'create_subscription' } ); >+ >+if ( $auth_status ne "ok" ) { >+ exit 0; >+} >+my $result = Koha::SharedContent::manaIncrementRequest($input->param('resource'), $input->param('id'), $input->param('field'), $input->param('step') ); >+return $result; >diff --git a/svc/mana/search b/svc/mana/search >index 0f58c84..57123e3 100755 >--- a/svc/mana/search >+++ b/svc/mana/search >@@ -18,8 +18,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > # > >-use strict; >-use warnings; >+use Modern::Perl; > > use Koha::SharedContent; > use Koha::Subscription; >@@ -39,9 +38,12 @@ if ( $auth_status ne "ok" ) { > exit 0; > } > >+my $templatename; >+$templatename = "mana/mana-".$input->param( "resource" )."-search-result.tt"; >+ > my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > { >- template_name => "serials/mana-subscription-search-result.tt", >+ template_name => $templatename, > query => $input, > type => "intranet", > authnotrequired => 0, >@@ -52,11 +54,24 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > } > ); > >-my $biblionumber = $input->param('biblionumber'); >+my ($identifier, $sub_mana_info); >+$identifier = $input->param('id'); >+$template->param( lowWarned => 5, warned => 10, highWarned => 20); >+my $package = "Koha::".ucfirst($input->param( 'resource' )); >+$sub_mana_info = $package->get_search_info($identifier); >+ >+$sub_mana_info->{ usecomments } = $input->param('usecomments'); >+my $resourcename = $input->param('resource'); >+my $result = Koha::SharedContent::manaGetRequest( $resourcename, $sub_mana_info); >+my $nbofcomment; >+foreach my $resource (@{ $result->{data} }){ >+ $nbofcomment = 0; >+ foreach my $comment (@{ $resource->{comments} }){ >+ $nbofcomment += $comment->{nb}; >+ } >+ $resource->{nbofcomment} = $nbofcomment; >+} > >-my $sub_mana_info = Koha::Subscription::get_search_info($biblionumber); >-my $result = >- Koha::SharedContent::manaGetRequest( "subscription", $sub_mana_info ); >-$template->param( subscriptions => $result->{data} ); >+$template->param( $input->param('resource')."s" => $result->{data} ); > > output_with_http_headers $input, $cookie, $template->output, 'json'; >diff --git a/svc/mana/share b/svc/mana/share >new file mode 100755 >index 0000000..a294bd0 >--- /dev/null >+++ b/svc/mana/share >@@ -0,0 +1,47 @@ >+#!/usr/bin/perl >+ >+# Copyright 2017 BibLibre Baptiste Wojtkowski >+# >+# 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 <http://www.gnu.org/licenses>. >+# >+ >+use Modern::Perl; >+ >+use Koha::SharedContent; >+use C4::Auth qw(check_cookie_auth); >+ >+use CGI; >+use JSON; >+ >+ >+my $input = new CGI; >+binmode STDOUT, ":encoding(UTF-8)"; >+print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); >+ >+my ( $auth_status, $sessionID ) = >+ check_cookie_auth( $input->cookie('CGISESSID'), >+ { serials => 'create_subscription' } ); >+ >+if ( $auth_status ne "ok" ) { >+ exit 0; >+} >+ >+ >+my $content; >+$content->{resource_id} = $input->param("resource_id"); >+$content->{resource_type} = $input->param("resource"); >+$content->{message} = $input->param("message"); >+Koha::SharedContent::manaPostRequest('resource_comment', $content); >diff --git a/svc/mana/use b/svc/mana/use >index a2f2e44..efb5bf3 100755 >--- a/svc/mana/use >+++ b/svc/mana/use >@@ -18,11 +18,11 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > # > >-use strict; >-use warnings; >+use Modern::Perl; > > use Koha::SharedContent; > use C4::Auth qw(check_cookie_auth); >+use Koha::Report; > > use CGI; > use JSON; >@@ -40,9 +40,14 @@ if ( $auth_status ne "ok" ) { > exit 0; > } > >-my $result = Koha::SharedContent::manaGetRequestWithId("subscription", $input->param('id') ); >+my $result = Koha::SharedContent::manaGetRequestWithId($input->param('resource'), $input->param('id') ); >+my $package = "Koha::".ucfirst($input->param('resource')); >+my $resource; > >-my $subscription; >-$subscription = $result->{data}; >- >-print(to_json($subscription)); >+if ( $input->param( 'saveinbase' )) { >+ $resource = { id => $package->new_from_mana($result->{data})->id }; >+} >+else{ >+ $resource = $result->{data}; >+} >+print(to_json($resource)); >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 17047
:
56175
|
56176
|
56177
|
56178
|
56179
|
56180
|
56181
|
59728
|
59729
|
59931
|
61905
|
62045
|
62046
|
62047
|
62048
|
62049
|
62050
|
62051
|
62052
|
62053
|
62054
|
62075
|
62465
|
62475
|
62485
|
62540
|
62542
|
62543
|
62544
|
62545
|
62546
|
62547
|
62548
|
62549
|
62550
|
62551
|
62552
|
62553
|
62589
|
62591
|
62592
|
62593
|
62594
|
62595
|
62596
|
62597
|
62598
|
62599
|
62603
|
62604
|
62605
|
62606
|
62607
|
62768
|
63476
|
63601
|
63618
|
63619
|
63620
|
63621
|
63622
|
63623
|
64484
|
64530
|
64618
|
64619
|
64620
|
64621
|
64622
|
64623
|
64624
|
64625
|
64626
|
64627
|
64628
|
64629
|
64630
|
64631
|
64632
|
64633
|
64634
|
64635
|
64636
|
64637
|
64638
|
64639
|
64640
|
64641
|
64642
|
64643
|
64648
|
64649
|
64650
|
64651
|
64652
|
64653
|
64654
|
64706
|
64962
|
65058
|
65059
|
65060
|
65061
|
65062
|
65063
|
65064
|
65065
|
65773
|
66667
|
66668
|
66987
|
67003
|
67004
|
67005
|
67006
|
67009
|
67010
|
67011
|
67012
|
67013
|
67014
|
67015
|
67016
|
67017
|
67018
|
67019
|
67020
|
67021
|
67022
|
67023
|
69034
|
69035
|
69036
|
69037
|
69038
|
69039
|
69040
|
69041
|
69091
|
70203
|
70204
|
70205
|
70206
|
70208
|
70209
|
70210
|
70211
|
70561
|
70874
|
72660
|
72661
|
72662
|
72663
|
72664
|
72665
|
72666
|
72667
|
72668
|
72669
|
72670
|
73699
|
73737
|
73738
|
73739
|
73740
|
73741
|
73742
|
73743
|
73744
|
73745
|
73746
|
73747
|
73748
|
73975
|
73976
|
73977
|
73978
|
73979
|
73980
|
73981
|
73982
|
73983
|
73984
|
73985
|
73986
|
76673
|
76674
|
76675
|
76676
|
76677
|
76678
|
76679
|
76680
|
76681
|
76682
|
76683
|
76684
|
78215
|
78216
|
78217
|
78218
|
78219
|
78220
|
78221
|
78222
|
78223
|
78224
|
78225
|
78226
|
78227
|
78228
|
78229
|
79868
|
79869
|
79870
|
79871
|
79872
|
79874
|
79877
|
79878
|
79879
|
79880
|
79881
|
79882
|
79883
|
79884
|
79885
|
79886
|
79887
|
79888
|
79922
|
79923
|
79924
|
79925
|
79926
|
79927
|
79928
|
79929
|
79930
|
79931
|
79932
|
79933
|
79934
|
79935
|
79936
|
79937
|
79938
|
79939
|
80183
|
80184
|
80185
|
80186
|
80187
|
80188
|
80189
|
80190
|
80191
|
80192
|
80193
|
80194
|
80195
|
80196
|
80197
|
80198
|
80199
|
80200
|
80471
|
80472
|
80473
|
80907
|
80908
|
80909
|
80910
|
80911
|
80912
|
80913
|
80914
|
80915
|
80916
|
80917
|
80918
|
80919
|
80920
|
80921
|
80922
|
80923
|
80924
|
81935
|
81936
|
81937
|
81938
|
81939
|
81940
|
81941
|
81942
|
81943
|
81944
|
81945
|
81946
|
81947
|
81948
|
81949
|
81950
|
81951
|
81952
|
81968
|
83863
|
83864
|
83865
|
83866
|
83867
|
83868
|
83869
|
83870
|
83871
|
83872
|
83873
|
83874
|
83875
|
83876
|
83877
|
83878
|
83879
|
83880
|
83881
|
83892
|
83893
|
83894
|
83895
|
83896
|
83897
|
83898
|
83899
|
83900
|
83901
|
83902
|
83903
|
83904
|
83905
|
83906
|
83907
|
83908
|
83909
|
83910
|
83911
|
83912
|
84142
|
84145
|
84210
|
84260
|
84261
|
84262
|
84263
|
84264
|
84265
|
84323
|
84324
|
84325
|
84326
|
84327
|
84328
|
84329
|
84332