Bugzilla – Attachment 81937 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.99 KB, created by
Alex Arnaud
on 2018-11-05 13:24:46 UTC
(
hide
)
Description:
Bug 17047 SQL reports management with Mana-KB
Filename:
MIME Type:
Creator:
Alex Arnaud
Created:
2018-11-05 13:24:46 UTC
Size:
73.99 KB
patch
obsolete
>From 83dcc4e069492c6767adadc0f92cb57075ebcf38 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> > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> > >Rebased-by: Alex Arnaud <alex.arnaud@biblibre.com> (2018-07-04) >Signed-off-by: Michal Denar <black23@gmail.com> > >Signed-off-by: Michal Denar <black23@gmail.com> >--- > Koha/Report.pm | 54 ++++ > Koha/Reports.pm | 6 + > 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 + > .../intranet-tmpl/prog/css/src/staff-global.scss | 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 | 287 ++++++++++++++++++++- > .../serials/mana-subscription-search-result.tt | 1 - > .../prog/en/modules/serials/subscription-add.tt | 20 +- > .../intranet-tmpl/prog/js/subscription-add.js | 64 ++++- > 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 +- > 29 files changed, 823 insertions(+), 142 deletions(-) > 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 >index 3be4415..a1d9b56 100644 >--- a/Koha/Report.pm >+++ b/Koha/Report.pm >@@ -20,6 +20,8 @@ use Modern::Perl; > use Carp; > > use Koha::Database; >+use JSON; >+use Koha::Reports; > > use base qw(Koha::Object); > >@@ -33,6 +35,58 @@ Koha::Report - Koha Report Object class > > =cut > >+=head3 get_search_info >+ >+Return search info >+ >+=cut >+ >+sub get_search_info { >+ my $self=shift; >+ my $sub_mana_info = { 'query' => shift }; >+ return $sub_mana_info; >+} >+ >+=head3 get_sharable_info >+ >+Return properties that can be shared. >+ >+=cut >+ >+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; >+} >+ >+=head3 new_from_mana >+ >+Clear a Mana report to be imported in Koha? >+ >+=cut >+ >+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; >+} >+ > =head3 _type > > Returns name of corresponding DBIC resultset >diff --git a/Koha/Reports.pm b/Koha/Reports.pm >index ca687a3..fc2be72 100644 >--- a/Koha/Reports.pm >+++ b/Koha/Reports.pm >@@ -55,4 +55,10 @@ 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 5484596..197bfe3 100644 >--- a/Koha/Subscription.pm >+++ b/Koha/Subscription.pm >@@ -116,6 +116,7 @@ sub remove_subscriber { > =cut > > sub get_search_info { >+ my $self=shift; > my $searched_sub_id = shift; > my $biblio = Koha::Biblios->find( { 'biblionumber' => $searched_sub_id } ); > my $biblioitem = >@@ -131,6 +132,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 452c7e0..b6c9d52 100644 >--- a/etc/koha-conf.xml >+++ b/etc/koha-conf.xml >@@ -153,6 +153,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 01e8e1e..b261698 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -63,6 +63,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','0','','If ON, patron number is auto-calculated','YesNo'), >diff --git a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss >index d3e37df..5f89e1e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss >+++ b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss >@@ -715,6 +715,12 @@ ol { > 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) { >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 484a988..90e525d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >@@ -7,11 +7,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 %] >@@ -80,18 +80,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> >@@ -99,7 +97,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 db94433..06c5a77 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 >@@ -13,11 +13,15 @@ > <div class="main container-fluid"> > <div class="row"> > <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2"> >- >+ [% 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 %] > <h1>Koha administration</h1> > <div class="row"> > <div class="col-md-6 sysprefs"> >- > <form action="/cgi-bin/koha/admin/preferences.pl" method="post"> > <fieldset> > <h4><a href="/cgi-bin/koha/admin/preferences.pl">Global system preferences</a></h4> >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 5d133c6..522a6f9 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 >@@ -63,9 +63,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 ab18d68..74a4291 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 >@@ -135,6 +135,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> > >@@ -169,6 +189,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"> >@@ -204,23 +243,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 | html %]" /> > [% END %] >+ <input hidden class="report_sql" value="[% savedreport.savedsql %]"> > </td> >- <td><label for="ids">[% savedreport.id | html %]</label></td> >- <td> >+ <td class="report_id"><label for="ids">[% savedreport.id | html %]</label></td> >+ <td class="report_name"> > [% IF ( savedreport.report_name ) %] > [% savedreport.report_name | html %] > [% ELSE %] > [ no name ] > [% END %] > </td> >- <td>[% savedreport.type | html %]</td> >- <td>[% savedreport.groupname | html %]</td> >+ <td class="report_type">[% savedreport.type | html %]</td> >+ <td class="report_group">[% savedreport.groupname | html %]</td> > <td>[% savedreport.subgroupname | html %]</td> >- <td>[% savedreport.notes | html %]</td> >+ <td class="report_notes">[% savedreport.notes | html %]</td> > <td>[% savedreport.borrowersurname | html %][% IF ( savedreport.borrowerfirstname ) %], [% savedreport.borrowerfirstname | html %][% END %] ([% savedreport.borrowernumber | html %])</td> > <td><span title="[% savedreport.date_created | html %]">[% savedreport.date_created | $KohaDates %]</span></td> > <td><span title="[% savedreport.last_modified | html %]">[% savedreport.last_modified | $KohaDates with_hours => 1 | html %]</span></td> >@@ -267,6 +307,9 @@ canned reports and writing custom SQL reports.</p> > <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id | uri %]&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 | uri %]"><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 | html %]&phase=Delete%20Saved"><i class="fa fa-trash"></i> Delete</a></li> >@@ -279,6 +322,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" /> >@@ -319,6 +363,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) %] >@@ -1022,6 +1171,10 @@ canned reports and writing custom SQL reports.</p> > } > } > >+ function share() { >+ window.location="/cgi-bin/koha/reports/guided_reports.pl?phase=Save"; >+ } >+ > $(document).ready(function(){ > > hide_bar_element(); >@@ -1148,6 +1301,30 @@ canned reports and writing custom SQL reports.</p> > 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(); > }); >@@ -1339,6 +1516,104 @@ canned reports and writing custom SQL reports.</p> > return confirmDelete(MSG_CONFIRM_DELETE); > }); > }); >+ 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", >+ }) >+ } >+ > function addColumn() { > $("#availableColumns option:selected").clone().appendTo("#selectedColumns").attr("selected", "selected"); > } >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 3b3a32c..41a9f9c 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 >@@ -10,7 +10,7 @@ > <style type="text/css"> > fieldset.rows li.radio { width: 100%; } /* override staff-global.css */ > .yui-u li p label.widelabel { >- width: 300px; /* not enough for IE7 apparently */ >+width: 300px; /* not enough for IE7 apparently */ > } > </style> > </head> >@@ -214,8 +214,16 @@ fieldset.rows li.radio { width: 100%; } /* override staff-global.css */ > > <div id="page_2"> > <div class="col-md-6"> >+ [% 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"> >@@ -500,18 +508,14 @@ fieldset.rows li.radio { width: 100%; } /* override staff-global.css */ > </div> > </form> > </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/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js b/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js >index df26753..f1ca56e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js >@@ -396,14 +396,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" ] }, >@@ -413,17 +418,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){ >@@ -497,6 +547,10 @@ function removeDisabledAttr() { > } > > $(document).ready(function() { >+ mana_search(); >+ $("#myid").on("click", function(){ >+ debugger; >+ }) > $("#displayexample").hide(); > $("#mana_search_result").modal("hide"); > $("#aqbooksellerid").on('keypress', function(e) { >@@ -606,7 +660,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(); >diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl >index 5c23acd..41dc1ee 100755 >--- a/reports/guided_reports.pl >+++ b/reports/guided_reports.pl >@@ -38,6 +38,7 @@ use Koha::AuthorisedValues; > use Koha::BiblioFrameworks; > use Koha::Libraries; > use Koha::Patron::Categories; >+use Koha::SharedContent; > > =head1 NAME > >@@ -145,6 +146,7 @@ elsif ( $phase eq 'Build new' ) { > } > } > $template->param( >+ 'manamsg' => $input->param('manamsg') || '', > 'saved1' => 1, > 'savedreports' => $reports, > 'usecache' => $usecache, >@@ -547,7 +549,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( >@@ -651,6 +653,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, >@@ -668,6 +671,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 71166b8..11b524e 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -379,7 +379,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; >@@ -406,7 +406,10 @@ sub redirect_add_subscription { > $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, > $skip_serialseq, $itemtype, $previousitemtype, $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 ); > >@@ -466,7 +469,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 90af56e..7b042d6 100755 >--- a/serials/subscription-detail.pl >+++ b/serials/subscription-detail.pl >@@ -104,44 +104,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.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