Skip to content
Snippets Groups Projects
categories.org 13.83 KiB

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]

Test controller Abonne

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

CSS Bib num

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">&nbsp;&nbsp;&nbsp;&raquo;&nbsp;<?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

affichage menu gauche

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));