Compare commits

..

5 Commits

Author SHA1 Message Date
afornerot 461324fe3f ajout error doublon mail 2022-12-09 11:50:38 +01:00
afornerot 594122ed07 ajout error doublon mail 2022-12-09 09:18:52 +01:00
afornerot c5333887cc ajout info dnma 2022-12-08 10:12:54 +01:00
Arnaud Fornerot 629d77175a evolution items 2022-12-06 13:09:24 +01:00
Arnaud Fornerot 1a54b9a3f9 evolution items 2022-12-05 12:05:16 +01:00
20 changed files with 242 additions and 120 deletions

1
debian/compat vendored
View File

@ -1 +0,0 @@
7

24
debian/control vendored
View File

@ -1,24 +0,0 @@
Source: eole-ninegate
Section: web
Priority: optional
Maintainer: Equipe Envole <eole@ac-dijon.fr>
Build-Depends: debhelper (>= 7.0.50)
Standards-Version: 3.8.4
Homepage: http://eole.orion.education.fr/diff/
Vcs-Git: http://dev-eole.ac-dijon.fr/git/ninegate
Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/ninegate/repository
Package: ninegate-sso
Architecture: all
Depends: ${misc:Depends}, eole-sso
Description: Filtre SSO pour ninegate "EOLE".
Package: eole-ninegate
Architecture: all
Depends: ${misc:Depends}, eole-web (>= 2.6.1), ninegate-sso, eole-envole-dependances
Description: Eolisation de l'application ninegate.
Package: ninegate-apps
Architecture: all
Depends: ${misc:Depends}, eole-web-pkg (>= 2.6.1), envole-dependances-apps
Description: Sources pour ninegate "EOLE".

44
debian/copyright vendored
View File

@ -1,44 +0,0 @@
Format: http://dep.debian.net/deps/dep5
Upstream-Name: {PROJECT}
Source: {URL}
Files: *
Copyright: YEAR {UPSTREAM} {AUTHOR} <{MAIL}>
License: {UPSTREAM LICENSE}
Files: debian/*
Copyright: 2012 Équipe EOLE <eole@ac-dijon.fr>
License: CeCILL-2
License: {UPSTREAM LICENSE}
{TEXT OF THE LICENSE}
License: CeCILL-2
This software is governed by the CeCILL-2 license under French law and
abiding by the rules of distribution of free software. You can use,
modify and or redistribute the software under the terms of the CeCILL-2
license as circulated by CEA, CNRS and INRIA at the following URL
"http://www.cecill.info";.
.
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
liability.
.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
software by the user in light of its specific status of free software,
that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
requirements in conditions enabling the security of their systems and/or
data to be ensured and, more generally, to use and operate it in the
same conditions as regards security.
.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL-2 license and that you accept its terms.
.
On Eole systems, the complete text of the CeCILL-2 License can be found
in '/usr/share/common-licenses/CeCILL-2-en'.

View File

@ -1 +0,0 @@
usr/share/eole

3
debian/gbp.conf vendored
View File

@ -1,3 +0,0 @@
# Set per distribution debian tag
[DEFAULT]
debian-tag = debian/envole/%(version)s

View File

@ -1,2 +0,0 @@
var/www/html
etc

View File

@ -1 +0,0 @@
usr/share/sso

8
debian/rules vendored
View File

@ -1,8 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@

View File

@ -1 +0,0 @@
3.0 (native)

View File

@ -86,6 +86,20 @@ class SecurityController extends Controller
if($masteridentity=="SSO") {
if(empty($email)) $email = $username."@nomail.com";
// On s'assure qu'il n'y a pas déjà un utilisateur avec le même mail
$usermail = $em->getRepository('CadolesCoreBundle:User')->findOneBy(array("email"=>$email));
if($usermail) {
return $this->render('CadolesCoreBundle:Registration:info.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'infotitle' => "Première connexion",
'info' => "Votre compte ne peut être activé car votre adresse mel est déjà utilisée par un autre compte utilisateur.<br>Nous sommes désolés du désagrément et vous invitons à contacter un administrateur.",
'mode' => "error",
'redirectto' => "",
]);
}
// Là c'est normal que potentiellement il n'existe pas il faut donc l'autogénérer
$user = new User();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -1,13 +1,25 @@
{% extends '@CadolesCore/base.html.twig' %}
{% block pagewrapper %}
<h1 class="page-header">Inscriptions</h1>
<h1 class="page-header">{%if infotitle is defined%}{{infotitle}}{%else%}Inscriptions{%endif%}</h1>
<div style="padding-top:50px;max-width: 1000px; margin:auto; font-size:18px;">
<div class='alert alert-{{ mode }}' style='margin: 5px 0px'>
{% autoescape %}
<p>{{ info|raw }}</p>
{% endautoescape %}
{% if mode=="error" %}
{% if mode_auth == "SAML" %}
<a class="btn btn-primary" href="{{ path("lightsaml_sp.logout") }}">Déconnexion</a>
{% elseif mode_auth == "CAS" %}
<a class="btn btn-primary" href="{{ path("cas_sp.logout") }}">Déconnexion</a>
{% elseif mode_auth == "SQL" %}
<a class="btn btn-primary" href="{{ path("cadoles_core_logout") }}">Déconnexion</a>
{% elseif mode_auth == "LDAP" %}
<a class="btn btn-primary" href="{{ path("cadoles_core_ldap_logout") }}">Déconnexion</a>
{% endif %}
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -65,7 +65,11 @@ class ItemController extends Controller
{
// Initialisation de l'enregistrement
$data = new Item();
if($this->GetParameter("activate_widsonde")) {
$data->setClicksonde(true);
$data->setClicksondeservice("PAGE_ENT");
}
// Création du formulaire
$form = $this->createForm(ItemType::class,$data,array(
"mode" => "submit",
@ -206,6 +210,26 @@ class ItemController extends Controller
return $response;
}
public function forceorderAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$categorys=$em->getRepository("CadolesPortalBundle:Itemcategory")->findAll();
foreach($categorys as $category) {
$i=0;
$items=$em->getRepository("CadolesPortalBundle:Item")->findBy(["itemcategory"=>$category],["title"=>"ASC"]);
foreach($items as $item) {
$i++;
$item->setRowOrder($i);
$em->flush();
}
}
// Retour à la liste
return $this->redirectToRoute($this->labelroute);
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();

View File

@ -150,13 +150,16 @@ class ItemType extends AbstractType
if($options["activate_widsonde"]) {
$builder
/*
->add('clicksonde', CheckboxType::class, [
"label" => "Exécuter une sonde statistique sur le clic",
"required" => false
])
])
*/
->add('clicksondeservice', ChoiceType::class, [
"label" => 'Type de Service associé à la sonde',
"label_attr" => array("style" => "display:inline"),
"placeholder" => 'Sélectionner un service',
"required" => false,
"choices" => [

View File

@ -7,7 +7,7 @@ use Doctrine\Common\Collections\ArrayCollection;
class ItemRepository extends EntityRepository
{
public function getUserItems($user,&$bookmarks,&$itemsordered,&$itemcategorys,$iditemcategory=null,$ssoitems,$withbookmark=1,$fgessential=false) {
public function getUserItems($user,&$bookmarks,&$itemsordered,&$itemcategorys,$iditemcategory=null,$ssoitems=[],$withbookmark=1,$fgessential=false) {
// Profilage
$roles=($user?$user->getRoles():["ROLE_ANONYME"]);
$groups=($user?$user->getGroups():[]);
@ -114,26 +114,28 @@ class ItemRepository extends EntityRepository
// Récupération des items par ssoitem
$itemsssoitems=[];
foreach($ssoitems as $ssoitem) {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('item')
->from("CadolesPortalBundle:Item", 'item')
->where("item.ssoitem=:ssoitem ")
->setParameter("ssoitem",$ssoitem);
if($iditemcategory && $itemcategoryfilter) {
$qb->andWhere("item.itemcategory=:itemcategory")
->setParameter("itemcategory",$itemcategoryfilter);
}
$itemsssoitems=$qb->getQuery()->getResult();
foreach($itemsssoitems as $itemssoitem) {
if(!$bookmarksitems->contains($itemssoitem) && !$items->contains($itemssoitem)) {
if(!$fgessential || ($fgessential && $itemssoitem->getEssential()))
$items->add($itemssoitem);
if(is_array($ssoitems)) {
foreach($ssoitems as $ssoitem) {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('item')
->from("CadolesPortalBundle:Item", 'item')
->where("item.ssoitem=:ssoitem ")
->setParameter("ssoitem",$ssoitem);
if($iditemcategory && $itemcategoryfilter) {
$qb->andWhere("item.itemcategory=:itemcategory")
->setParameter("itemcategory",$itemcategoryfilter);
}
if(!$itemalls->contains($itemssoitem)) $itemalls->add($itemssoitem);
$itemsssoitems=$qb->getQuery()->getResult();
foreach($itemsssoitems as $itemssoitem) {
if(!$bookmarksitems->contains($itemssoitem) && !$items->contains($itemssoitem)) {
if(!$fgessential || ($fgessential && $itemssoitem->getEssential()))
$items->add($itemssoitem);
}
if(!$itemalls->contains($itemssoitem)) $itemalls->add($itemssoitem);
}
}
}

View File

@ -117,6 +117,10 @@ cadoles_portal_config_item_order:
path: /config/item/order
defaults: { _controller: CadolesPortalBundle:Item:order }
cadoles_portal_config_item_forceorder:
path: /config/item/forceorder
defaults: { _controller: CadolesPortalBundle:Item:forceorder }
cadoles_portal_config_ajax_item_seleclist:
path: /config/item/ajax/selectlist
defaults: { _controller: CadolesPortalBundle:Item:ajaxseleclist }

View File

@ -0,0 +1,138 @@
<table class="table table-striped table-bordered table-hover dataTable no-footer">
<thead>
<tr>
<td>Libellé du service</td>
<td>Description</td>
</tr>
</thead>
<tr>
<td>ACCUEIL</td>
<td></td>
</tr>
<tr>
<td>ACTUALITES</td>
<td>Création ou publication dactualités, publiques ou privées. Le marquage de ce service ne comprend pas laccès en consultation à ces actualités, quelles soient publiques ou privées</td>
</tr>
<tr>
<td>CAHIER_TEXTES</td>
<td>Description du travail fait en classe par séquence, des points du programme abordés, des modalités pédagogiques utilisées…<br><br>Programmation du travail à faire en dehors de la classe (Devoirs).</td>
</tr>
<tr>
<td>CAHIER_LIAISON</td>
<td></td>
</tr>
<tr>
<td>COURRIER_ELECTRONIQUE</td>
<td>Courrier électronique, Carnet d'adresses, Annuaire, Liste de diffusion.</td>
</tr>
<tr>
<td>MESSAGERIE_INSTANTANEE</td>
<td></td>
</tr>
<tr>
<td>VISIOCONFERENCE</td>
<td>Services associés à lorganisation et lanimation de visioconférences. </td>
</tr>
<tr>
<td>STOCKAGE_PARTAGE</td>
<td>Chargement, stockage de fichiers pouvant ou non être partagés avec dautres utilisateurs</td>
</tr>
<tr>
<td>PRODUCTION_COLLABORATIVE</td>
<td></td>
</tr>
<tr>
<td>DOCUMENTATION_CDI</td>
<td>Accès au catalogue de ressources proposées par le CDI, consultation et gestion des ressources, prêts, …</td>
</tr>
<tr>
<td>PARCOURS_PEDAGOGIQUE</td>
<td>Utilisation des outils permettant la production de nouvelles ressources pédagogiques (LMS).</td>
</tr>
<tr>
<td>RESERVATION_SALLES_MATERIELS</td>
<td></td>
</tr>
<tr>
<td>SERVICE_COLLECTIVITE</td>
<td>Utilisation des services proposés par les collectivités aux établissements ou aux familles (Exemples : cantine, transports, bourses, …).</td>
</tr>
<tr>
<td>SERVICES_VIE_SCOLAIRE</td>
<td>Accès à des logiciels de vie scolaire ne permettant pas de marquer finement le type de services utilisés.</td>
</tr>
<tr>
<td>GESTION_TEMPS</td>
<td>Gestion de lagenda et des tâches personnelles ou de groupe. Visualisation de lemploi du temps.</td>
</tr>
<tr>
<td>ABSENCES</td>
<td>Saisie ou visualisation des absences.</td>
</tr>
<tr>
<td>GESTION_COMPETENCES</td>
<td>Mise à jour, validation ou visualisation de compétences.</td>
</tr>
<tr>
<td>NOTES</td>
<td>Saisie ou visualisation des notes (relevés de notes, bulletins).</td>
</tr>
<tr>
<td>MANUEL_NUMERIQUE</td>
<td></td>
</tr>
<tr>
<td>RESSOURCE_MULTIMEDIA</td>
<td></td>
</tr>
<tr>
<td>RESSOURCE_ORIENTATION</td>
<td>Accès aux contenus et services proposés dans le cadre des actions dorientation.</td>
</tr>
<tr>
<td>RESSOURCE_PRODUCTION</td>
<td></td>
</tr>
<tr>
<td>RESSOURCE_ACCOMPAGNEMENT_ENTRAINEMENT</td>
<td></td>
</tr>
<tr>
<td>RESSOURCE_REFERENCE_DICTIONNAIRE</td>
<td></td>
</tr>
<tr>
<td>RESSOURCE_DOCUMENTAIRE</td>
<td></td>
</tr>
<tr>
<td>PAGE_ENT</td>
<td></td>
</tr>
</table>

View File

@ -67,11 +67,10 @@
{{ form_row(form.ssoitem) }}
{% endif %}
{% if form.clicksonde is defined %}
{{ form_row(form.clicksonde) }}
<div id="divclicksondeservice">
{{ form_row(form.clicksondeservice) }}
</div>
{% if form.clicksondeservice is defined %}
{{ form_label(form.clicksondeservice) }}
<a id="dnmainfo" type="button" class="btn btn-link" data-toggle="modal" data-target="#dnma" style="float:right"><i class="fa fa-info"></i></a>
{{ form_widget(form.clicksondeservice) }}<br>
{% endif %}
{{ form_row(form.color) }}
@ -90,6 +89,23 @@
</div>
</div>
{{ form_end(form) }}
<div id="dnma" class="modal fade bs-item-modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Services</h4>
</div>
<div class="modal-body">
{{ include('@CadolesPortal/Item/dnma.html.twig') }}
</div>
</div>
</div>
</div>
{% endblock %}
{% block localjavascript %}
@ -133,13 +149,5 @@
if($("#item_target").val()=="frame") {
$("#divhelp").show();
}
if($("#item_clicksonde").is(':checked')) {
$("#divclicksondeservice").show();
}
else {
$("#divclicksondeservice").hide();
}
}
{% endblock %}

View File

@ -11,6 +11,8 @@
<p>
<a href="{{ path('cadoles_portal_config_item_submit') }}" class="btn btn-success">Ajouter un Item</a>
<a href="{{ path('cadoles_portal_config_itemcategory_submit') }}" class="btn btn-success">Ajouter une Categorie</a>
<a href="{{ path('cadoles_portal_config_item_forceorder') }}" class="btn btn-success pull-right">Ordonner les items en alpha</a>
</p>
<div class="category-list">