From 3931c9401f54edd879e0a5b5046c3860310ab174 Mon Sep 17 00:00:00 2001
From: lbrun <leo@sandbox.pergame.net>
Date: Fri, 13 Nov 2015 14:50:44 +0100
Subject: [PATCH]  dev#23223_sito_widget_pagination: refont sito config

---
 .../views/scripts/accueil/sitotheque.phtml    | 36 +++++--------------
 .../Systeme/ModulesAccueil/Sitotheque.php     |  7 ++--
 .../ProfilOptionsControllerTest.php           |  2 +-
 tests/db/UpgradeDBTest.php                    | 29 ++++++++-------
 4 files changed, 28 insertions(+), 46 deletions(-)

diff --git a/application/modules/admin/views/scripts/accueil/sitotheque.phtml b/application/modules/admin/views/scripts/accueil/sitotheque.phtml
index e8118de3eca..28829f9a494 100644
--- a/application/modules/admin/views/scripts/accueil/sitotheque.phtml
+++ b/application/modules/admin/views/scripts/accueil/sitotheque.phtml
@@ -2,25 +2,15 @@
 Class_ScriptLoader::getInstance()
 ->addJQueryReady('
 function toggleDisplayTypeDependents() {
-  var dependents = $(".group_cat, #option_display_order, #option_nb_aff");
-  ("3" == $("#type_aff").val()) ? dependents.addClass("hidden") : dependents.removeClass("hidden");
-
-  var recentDependents = $("#option_display_order");
-  ("2" == $("#type_aff").val()) ? recentDependents.addClass("hidden") : "";
-
-  var nb_aff = $("#option_nb_aff");
-  ($("#display_order-Random:checked").length || "2" == $("#type_aff").val()) ? "" : nb_aff.addClass("hidden");
+  ("3" == $("#type_aff").val() || "2" == $("#type_aff").val()) ? $("#option_nb_aff").addClass("hidden") : $("#option_nb_aff").removeClass("hidden");
 
+  ("3" == $("#type_aff").val()) ? $("#option_display_order").addClass("hidden") : $("#option_display_order").removeClass("hidden");
 }
 
 $("#type_aff").change(function () {
   toggleDisplayTypeDependents();
 });
 
-$("#option_display_order input").change(function () {
-  toggleDisplayTypeDependents();
-});
-
 toggleDisplayTypeDependents();
 ');
 ?>
@@ -70,9 +60,9 @@ toggleDisplayTypeDependents();
               echo $this->formSelect('type_aff',
                                      $this->preferences['type_aff'],
                                      [],
-                                     ['1' => 'Une sélection de catégories ou de sites',
-                                      '2' => 'Les sites les plus récents',
-                                      '3' => 'Affichage hiérarchique par catégorie'])
+                                     ['1' => 'Affichage paginé',
+                                      '2' => 'Affichage groupé par catégorie',
+                                      '3' => 'Affichage hiérarchique par catégorie']);
               ?>
             </td>
           </tr>
@@ -97,28 +87,18 @@ toggleDisplayTypeDependents();
                                     $this->preferences['display_order'],
                                     [],
                                     ['Random' => $this->_('Par ordre aléatoire'),
-                                     'Selection' => $this->_('Par ordre de sélection')]);
+                                     'Selection' => $this->_('Par ordre de sélection'),
+                                    'Recent' => $this->_('Les sites les plus récents')]);
               ?>
             </td>
           </tr>
 
           <tr id='option_nb_aff'>
-            <td class="droite" width="90px">Nbre à afficher&nbsp;</td>
+            <td class="droite" width="90px">Nbre de sites par page&nbsp;</td>
             <td class="gauche"><input type="text" name="nb_aff" size="3" maxlength="3" value="<?php print($this->preferences['nb_aff']); ?>"></td>
           </tr>
 
-          <tr class="group_cat">
-            <td class="droite" width="90px">Grouper par catégorie&nbsp;</td>
-            <td class="gauche">
-              <?php
-              echo $this->formCheckbox('group_by_categorie',
-                                       null,
-                                       ['checked' => $this->preferences['group_by_categorie']]);
-              ?>
-            </td>
-          </tr>
         </table>
-
       </fieldset>
       <br />
 
diff --git a/library/Class/Systeme/ModulesAccueil/Sitotheque.php b/library/Class/Systeme/ModulesAccueil/Sitotheque.php
index 26fb68344d5..4999b4755dd 100644
--- a/library/Class/Systeme/ModulesAccueil/Sitotheque.php
+++ b/library/Class/Systeme/ModulesAccueil/Sitotheque.php
@@ -40,13 +40,12 @@ class Class_Systeme_ModulesAccueil_Sitotheque extends Class_Systeme_ModulesAccue
   /** @var array */
   protected $_defaultValues = [
                                'titre' => 'Sitothèque', // Titre de la boite
-                               'type_aff' => 1, // Type a afficher : 1=sélection libre, 2=les + récents
+                               'type_aff' => 1, // Type a afficher: 1=paginé, 2=groupe, 3=hiérarchique
                                'id_categorie' => '', // Liste d'id_categorie séparés par des tirets
                                'id_items' => '', // Liste d'id_site séparés par des tirets
-                               'nb_aff' => '2', // Nombre à afficher
+                               'nb_aff' => '2', // Nombre à afficher par page
                                'rss' => '0',
-                               'group_by_categorie' => false, //grouper les sites par categorie sous forme de menu,
-                               'display_order' => 'Random' //ordre d'affichage: Random ou Selection
+                               'display_order' => 'Random' //ordre d'aff: Random, Selection, Recent
   ];
 }
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
index 1c27adcdfa0..9c8eeb23a32 100644
--- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
+++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
@@ -1308,7 +1308,7 @@ class ProfilOptionsControllerPagesJeuxWithSitothequeTest extends ProfilOptionsCo
 
                                                    '10' => ['division' => '2',
                                                             'type_module' => 'SITO',
-                                                            'preferences' => ['rss' => 0,
+                                                            'preferences' => ['rss' => 1,
                                                                               'id_categorie' => '2',
                                                                               'group_by_categorie' => true]]],
                                      'options' =>   []]);
diff --git a/tests/db/UpgradeDBTest.php b/tests/db/UpgradeDBTest.php
index b56a38ca5fd..51357093ddc 100644
--- a/tests/db/UpgradeDBTest.php
+++ b/tests/db/UpgradeDBTest.php
@@ -177,23 +177,26 @@ class UpgradeDB_277_Test extends UpgradeDBTestCase {
 
 
 
-class UpgradeDB_278_Test extends UpgradeDBTestCase {
+class UpgradeDB_279_Test extends UpgradeDBTestCase {
+
 
   public function prepare() {
-    $this->query("update variables set liste='0:Pas informatisé\r\n1:Pergame\r\n2:Paprika\r\n3:Orphée\r\n4:Opsys\r\n5:Microbib\r\n6:Atalante\r\n7:Multilis\r\n8:Bibal\r\n9:Milord\r\n10:Elissa\r\n11:v-smart\r\n12:Koha\r\n13:Nanook\r\n14:Carthame\r\n15:Dynix\r\n' where clef='sigb';");
+    $preferences =
+      file_get_contents(realpath(dirname(__FILE__)).'/../fixtures/SitoPreferencesSerialize.txt');
 
-    $this->query("update variables set liste='0:aucun\r\n1:pergame\r\n2:web-service Opsys\r\n3:serveur Z39.50\r\n4:web-service V-Smart\r\n5:web-service Koha\r\n6:web-service Carthame\r\n7:web-service AFI-Nanook\r\n8:web-service Orphée\r\n9:web-service Microbib\r\n10:web-service BiblixNet\r\n11:web-service Dynix-Symphony\r\n' where clef='comm_sigb';");
+    $this->query('update bib_admin_profil set '
+                 .'cfg_accueil=\'' . $preferences
+                 . '\'where id_profil=2048');
   }
 
 
   /** @test */
-  public function cdScriptShouldBePresentInSigbList() {
-    $this->assertContains("16:Cd-Script\r\n", $this->query('select liste from variables where clef = "sigb";')->fetch()['liste']);
-  }
-
-
-  /** @test */
-  public function cdScriptShouldBePresentInCommSigbList() {
-    $this->assertContains("12:Cd-Script\r\n", $this->query('select liste from variables where clef = "comm_sigb";')->fetch()['liste']);
-  }
-}
+  public function shouldMakeTest() {
+    $profil = Class_Profil::find(2048);
+    $prefs = [];
+    $prefs[] = $profil->getModuleAccueilConfig(1, 'SITO')['preferences'];
+    $prefs[] = $profil->getModuleAccueilConfig(2, 'SITO')['preferences'];
+    $prefs[] = $profil->getModuleAccueilConfig(3, 'SITO')['preferences'];
+    $this->assertEmpty($prefs, print_r($prefs));
+  }
+}
\ No newline at end of file
-- 
GitLab