Bugzilla – Attachment 62075 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: Add report, factorize code, add a comment feature
Bug-17047-Add-report-factorize-code-add-a-comment-.patch (text/plain), 73.40 KB, created by
Baptiste Wojtkowski (bwoj)
on 2017-04-12 10:37:55 UTC
(
hide
)
Description:
Bug 17047: Add report, factorize code, add a comment feature
Filename:
MIME Type:
Creator:
Baptiste Wojtkowski (bwoj)
Created:
2017-04-12 10:37:55 UTC
Size:
73.40 KB
patch
obsolete
>From 01a86b10d9665c3dece279e32c048cfa09e823a9 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: Add report, factorize code, add a comment feature > >Interface : >- On mana-search, rows are now sorted by date of last import, then by number of users >- Windows redisigned to improve the user experience >- New Feature : report a record. > - peoples can now report a weird report > - if a record is reported a lot of time, it will appear differently >- Added few tooltip (to explain the fields last import, nb of users, to explain > the new feature) >- Added the syspref "AutoShareWithMana", which enables to select which fields > you want to share automatically with mana > >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) > >- Factorize a lot of code in order to improve the speed of next developments > >SytemPreferences: >Mana Activation: > - add a field "no, let me think" at the syspref "Mana" > - as long as this field is selected, messages ask if user want to activate it > messages in pages: > - Administration > - Add-subscription(page 2) >AutoShareWithMana > - Add the syspref AutoShareWithMana: user can automatically share infos with mana (automatically not set) > >Report Share >- Create Koha::Report.pm and Koha::Reports.pm, objects class for Reports >- New feature: share reports with Mana >- New feature: search report in Mana Knowledge Base with keywords >- New feature: load reports from Mana > >Comment Resources >- The comments can now be manually added >- On a resource mana datatable, you can now see comments, add comment and vote for comments you think pertinent >- Comments are NOT dynamically generated on the table you need to reload the page when you vote > >Test plan: >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 => mana shouldn't show you anything (except if the base hase been filled) >- Share this serial with Mana (on the serial individual's page there must be a Share button) >- Try to create a new subscription for serial nr1 => 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 - 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 with mana => 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 comment. To comment, click on report mistake. For now, you only can chose "other". >- 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. >--- > C4/Reports/Guided.pm | 1 - > Koha/Report.pm | 81 ++++++ > 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 | 288 ++++++++++++++++++++- > .../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 | 11 +- > 29 files changed, 905 insertions(+), 135 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/C4/Reports/Guided.pm b/C4/Reports/Guided.pm >index ac5633a..ca31c7a 100644 >--- a/C4/Reports/Guided.pm >+++ b/C4/Reports/Guided.pm >@@ -854,7 +854,6 @@ sub get_sql { > sub get_results { > my ( $report_id ) = @_; > my $dbh = C4::Context->dbh; >- warn $report_id; > return $dbh->selectall_arrayref(q| > SELECT id, report, date_run > FROM saved_reports >diff --git a/Koha/Report.pm b/Koha/Report.pm >new file mode 100644 >index 0000000..268899f >--- /dev/null >+++ b/Koha/Report.pm >@@ -0,0 +1,81 @@ >+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, >+ '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 9bb2e92..4995e6f 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -58,6 +58,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 35479c8..35763cf 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 942bf32..955baf7 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 1c02b1c..46b4b37 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 >@@ -1,4 +1,5 @@ > [% USE KohaDates %] >+[% USE Koha %] > > [%- BLOCK area_name -%] > [%- SWITCH area -%] >@@ -66,6 +67,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(); >@@ -76,6 +81,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(); > }); >@@ -238,7 +267,102 @@ $("#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", >+ }) >+} >+ >+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"> >@@ -304,6 +428,27 @@ canned reports and writing custom SQL reports.</p> > </form> > [% 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> > >@@ -321,6 +466,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"> >@@ -346,23 +510,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> >@@ -394,6 +559,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> >@@ -406,6 +574,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" /> >@@ -446,6 +615,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 3e69e16..a030aa4 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 > >@@ -117,6 +118,7 @@ elsif ( $phase eq 'Build new' ) { > $report->{results} = C4::Reports::Guided::get_results( $report->{id} ); > } > $template->param( >+ 'manamsg' => $input->param('manamsg')||'', > 'saved1' => 1, > 'savedreports' => $reports, > 'usecache' => $usecache, >@@ -511,7 +513,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( >@@ -615,6 +617,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, >@@ -625,6 +628,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 3284e76..dfaa535 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -373,7 +373,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; >@@ -400,7 +400,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 ); > >@@ -460,7 +463,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..2ba15d0 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,7 +40,12 @@ 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')); >+ >+if ( $input->param( 'saveinbase' )) { >+ $package->new_from_mana($result->{data}); >+} > > my $subscription; > $subscription = $result->{data}; >-- >2.7.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