-
llaffont authored9f3f9ee8
Carte OPAC
AFI Multimedia
Planning des ouvertures
Note: les ouvertures sont une option conditionnés par la variable MULTIMEDIA_KEY Modele Ouverture Vue edit ouverture - Page édition d’une ouverture Tests Controller Ouvertures Controller Ouvertures
Réunion
Admin liste des postes
liste résa jour / poste
formulaire
intéraction
Workflow résa
faut pas pouvoir cliquer ailleurs envoyer confirmation par mail
export ical
descendre les plages d’ouverture au niveau du groupe de poste
Réservation automatique [2/3]
cf Abonne authenticateAction Device autoHoldByUser Tests autoHold - TestCase de base
Ajouter la vérification du quota (factoriser avec ce qui est fait dans AbonneController (en fait déjà dans Users::getMultimediaQuotaErrorForDay
Réservation d’un poste [2/3]
1er écran choix du lieu
2nd écran choix du jour - action controller [1/2]
Remplacer le getDays qui retourne la liste des coches par les ouvertures récurentes de la bib cf $location->getDays()
Si le bidouilleux mets une date bidon dans l’url, l’écran suivant ne proposera pas d’heure de départ. Donc faire la vérification pour ne pas changer d’écran et afficher message erreur
3ème écran choix de l’heure [1/1]
Brancher getMin/MaxTimeForDate aux ouvertures vérification créneau ouverture
4ème écran choix du poste [1/1]
Rajouter un écran choix de groupe + schuffle des postes que pour un groupe donné Recherche des postes pour horaire donné
5ème écran confirmation
Skin réservation timeline
url page réservation CSS .timeline vue réservation
Admin multimedia
Tests controller Multimedia Controller Multimedia
Test controller push
(async-shell-command "curl -d \"json=[{\\\"libelle\\\":\\\"default\\\",\\\"id\\\":\\\"1\\\",\\\"site\\\":{\\\"id\\\":\\\"1\\\",\\\"libelle\\\":\\\"lognes\\\",\\\"admin_url\\\":\\\"192.168.1.82\\\"},\\\"postes\\\":[{\\\"id\\\":\\\"1\\\",\\\"libelle\\\":\\\"ANACTU10\\\",\\\"os\\\":\\\"Windows 7\\\",\\\"maintenance\\\":\\\"0\\\"},{\\\"id\\\":\\\"2\\\",\\\"libelle\\\":\\\"ANACTU12\\\",\\\"os\\\":\\\"Windows XP\\\",\\\"maintenance\\\":\\\"0\\\"}]}]\" http://localhost:8081/afi-opac3/push/multimedia/config?XDEBUG_SESSION_START=1" )
Bib numérique
WS SIGB Maze
Info emprunteur
Service::getEmprunteur Parsing XML Opsys_Service
Test Opsys
Scaffolding avec ZendAfi
Exemple de définition de ressources dans l’OAI controller Exemple TagModelTable pour rendre la liste des modèles edit.phtml rend juste le form
ZendForm
Exemple complet (datePicker, select, CKEditor) Helper_RenderForm
A refactorer [0/2]
[#A] ::getPossibleHours à mettre dans une classe Date ou Time …
Pour les filtres groupes dynamiques, actuellement c’est en dur. Il faudra passer sur quelque chose de générique au second filtre. Le code où c’est:
@@ -45,6 +51,13 @@ class Class_UserGroup extends Storm_Model_Abstract {
return self::$_rights_definition;
}
+
+ public function getUsers() {
+ if ($this->isManual())
+ return parent::_get('users');
+ return Class_Users::findAllBy(['role_level' => $this->getRoleLevel()]);
+ }
+
+
+ /**
+ * @return int
+ */
+ public function numberOfUsers() {
+ if ($this->isManual())
+ return parent::_numberOf('users');
+ return Class_Users::countBy(['role_level' => $this->getRoleLevel()]);
+ }
+
@@ -341,6 +341,16 @@ class Class_Users extends Storm_Model_Abstract {
return $labels;
}
+
+ /**
+ * @return array
+ */
+ public function getUserGroups() {
+ return array_merge(parent::_get('user_groups'),
+ Class_UserGroup::findAllBy(['role_level' => $this->getRoleLevel(),
+ 'group_type' => Class_UserGroup::TYPE_DYNAMIC]));
+ }
+
@@ -40,7 +40,27 @@ class UsersLoader extends Storm_Model_Loader {
$like = '%'.strtolower($search).'%';
- return Class_Users::getLoader()->findAll(sprintf($sql_template, $by_right, $like));
+ $all_users = Class_Users::getLoader()->findAll(sprintf($sql_template, $by_right, $like));
+
+ if (!$by_right || count($all_users) >= 500)
+ return $all_users;
+
+ $groups = Class_UserGroup::findAllBy(['where' => sprintf('rights_token & %1$d = %1$d', $by_right)]);
+
+ foreach($groups as $group) {
+ $limit = 500 - count($all_users);
+ if ($limit <= 0)
+ break;
+
+ $params = ['role_level' => $group->getRoleLevel(),
+ 'limit' => $limit,
+ 'where' => sprintf('(nom like \'%1$s\' or prenom like \'%1$s\' or login like \'%1$s\')', $like),
+ 'order' => ['nom','prenom', 'login']];
+ $all_users = array_merge($all_users,
+ Class_Users::findAllBy($params));
+ }
+
+ return $all_users;
}
doc
Basic Meta Programming with PHP5.4
Histoire de faire un canvas:
function html ($code , $id="", $class=""){
if ($id !== "") $id = " id = \"$id\"" ;
$class = ($class !== "")? " class =\"$class\"":">";
$open = "<$code$id$class";
$close = "</$code>";
return function ($inner = "") use ($open, $close){
return "$open$inner$close";};
}
$layout = array('container','header','pmain','lsidebar','rsidebar','footer');
foreach ($layout as $element)
$$element = html ("div", $element);
$div = html("div", "test");
$bold = html('strong');
$italic = html('i');
$msg= $div($bold($italic("hello from the left sidebar")));
echo $container(
$header(
"This is the header").$pmain(
$lsidebar(
$msg).$rsidebar(
"This is the right sidebar")).$footer(
));
Ergonomie réservation
<script> var openDialogExemplaires = function() { $ .ajax({url: "<?php echo $this->url(['controller' => 'noticeajax', 'action' => 'exemplaires', 'id_notice' => $this->notice->getId()]) ?>"}) .done(function(data) {$('<div id="dialog"></div>').html(data).dialog({width:800, modal: true, title: '<?php echo $this->_("Exemplaires") ?>'})}); } </script> <span id="bloc_reserver"><a href="#" onclick="openDialogExemplaires();return false"> » <?php echo $this->_('Réserver') ?></a></span>
Boites
Affichage “propriétés de la boite”
test visibilité de la boite test dans profil Ajout du module Action Mes reservations Html de la boite propriete Ajout de la boite dans le drag-drop
**
Variables
Ajout variable Configuration de la variable
Clear identity
ZendAfi_Auth::getInstance()->clearIdentity();
CSV changement de caractere de split
~/afi/afi-opac3/library/ZendAfi/View/Helper/Article/FormulairesCsvVisitor.php
Dublin core OAI
http://localhost:8081/afi-opac3/opac/oai/request?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai::VERSAILLESALBERTSAMAIN–ALBERTSAMAIN—-102
Tests
Mock Storm_Object
Storm_Test_ObjectWrapper::onLoaderOfModel(‘Class_Notice’) ->whenCalled(‘findAllByRequeteRecherche’) ->answers(Class_Notice::newInstanceWithId(8), Class_Notice::newInstanceWithId(9));