31 Commits

Author SHA1 Message Date
461324fe3f ajout error doublon mail 2022-12-09 11:50:38 +01:00
594122ed07 ajout error doublon mail 2022-12-09 09:18:52 +01:00
c5333887cc ajout info dnma 2022-12-08 10:12:54 +01:00
629d77175a evolution items 2022-12-06 13:09:24 +01:00
1a54b9a3f9 evolution items 2022-12-05 12:05:16 +01:00
d0d8183f7a ne plus concidèrer les profils scribe comme des groupes de travail 2022-07-06 11:11:59 +02:00
4f2fa1db4f Synchronisation scribe niveaux + eleves classes + profs classes (ref #34132) 2022-05-10 09:12:21 +02:00
75d935aa57 Synchronisation scribe niveaux + eleves classes + profs classes (ref #34132) 2022-05-09 13:51:33 +02:00
27e23fffaf ne pas afficher le clic sonde sur les app autogénérées par envole (fixes #33944) 2022-05-09 11:43:01 +02:00
df8bcfc1a1 ajout de l'item cdt et sa synchronisation poshprofil 2022-03-03 11:51:43 +01:00
2b86aa4e2f appel sonde sur click 2022-02-18 09:57:20 +01:00
57f96132f4 mise en place jquerydate sur le formulaire des annonces (ref #33524) 2022-02-04 13:14:52 +01:00
aac017c263 hauteur auto sur les images insérées dans les alertes (ref #33523) 2022-02-04 10:55:33 +01:00
702d060503 optiomisation sur annonces lues / non lues cas annonces visiteur (ref #33746) 2022-02-03 16:34:44 +01:00
c6d349696e optiomisation sur annonces lues / non lues (ref #33746) 2022-02-03 16:30:40 +01:00
d0d933f28e dicos ajout service wssninegate 2021-12-08 11:16:56 +01:00
1249b7be21 ajout variable activer_revprox si non existante 2021-12-08 09:23:12 +01:00
6081e6a692 passer par un alias pour les websockets 2021-12-07 16:47:22 +01:00
01da55e6d6 gestion copier / coller des images dans les editeurs de texte (fixes #33465) 2021-12-06 11:40:02 +01:00
95e51c4d53 ne plus bloquer bundle edispatcher si masteridentity != SSO (fixes #33444) 2021-12-06 10:41:18 +01:00
9157b78671 user ldap reader si masteridentity != SQL 2021-12-03 11:44:34 +01:00
e66f8999ed mise en forme de la zone username dans la barre de navigation (fixes #32780) 2021-10-18 14:29:41 +02:00
41915a0547 correction orthographe (fixes #33045) 2021-10-18 14:13:45 +02:00
c7586c86d5 ajout du titre de l'enregistrement dans le titre de la page modifiée (fixes #33046) 2021-10-18 14:08:53 +02:00
6a8e102fc6 modification style (fixes #33143) 2021-10-18 13:37:10 +02:00
eedaa86dcf rapatrier les variables eoledb dans la famille eoledb (ref #33188) 2021-10-07 10:52:59 +02:00
1d448e70c7 autocreate user (fixes #33139) 2021-09-14 11:40:18 +02:00
63c710c4fd correctif si groupe shared sans page 2021-08-27 10:02:15 +02:00
ac37691536 [THEME ACREUNION] mode reduit affichage username 2021-07-14 07:50:54 +04:00
13e5bfb428 [THEME ACREUNION] Adaptation des couleurs 2021-07-12 20:43:57 +04:00
ed75b5f5c3 fixes #31884 , faire en sortes sur les urls soient compatibles https et http 2021-07-12 18:10:11 +04:00
88 changed files with 938 additions and 372 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

@ -2,6 +2,7 @@
<creole> <creole>
<files> <files>
<file filelist='ninegate' name='/etc/eole/eole-db.d/ninegate-db.yml' rm='True' mkdir='True'/> <file filelist='ninegate' name='/etc/eole/eole-db.d/ninegate-db.yml' rm='True' mkdir='True'/>
<file filelist='ninegate_nginx' name='/etc/nginx/web.d/ninegate.conf' source='ninegate-nginx.conf' rm='True' mkdir='True' />
</files> </files>
<containers> <containers>
@ -9,6 +10,7 @@
<package>ninegate-apps</package> <package>ninegate-apps</package>
<file filelist='ninegate' name='/etc/apache2/sites-available/ninegate' source='ninegate-apache.conf' rm="True"/> <file filelist='ninegate' name='/etc/apache2/sites-available/ninegate' source='ninegate-apache.conf' rm="True"/>
<file filelist='ninegate' name='/lib/systemd/system/wssninegate.service' source='ninegate.service'/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/parameters.yml" source="ninegate-parameters.yml" rm="True"/> <file filelist="ninegate" name="/var/www/html/ninegate/app/config/parameters.yml" source="ninegate-parameters.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/template.yml" source="ninegate-template.yml" rm="True"/> <file filelist="ninegate" name="/var/www/html/ninegate/app/config/template.yml" source="ninegate-template.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" /> <file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" />
@ -18,16 +20,12 @@
<file filelist='ninegate-migration' name='/var/www/html/envole-migration/config/config-db-ninegate.php' source='ninegate-migration.php' mkdir='True'/> <file filelist='ninegate-migration' name='/var/www/html/envole-migration/config/config-db-ninegate.php' source='ninegate-migration.php' mkdir='True'/>
<service method='apache' servicelist='ninegate'>ninegate</service> <service method='apache' servicelist='ninegate'>ninegate</service>
<service servicelist="ninegate">wssninegate</service>
<service_access service='ninegate_websocket'>
<port port_type="SymLinkOption">ninegate_websocket_portexterne</port>
</service_access>
</container> </container>
</containers> </containers>
<variables> <variables>
<family name='Ninegate'> <family name='Ninegate' icon='home'>
<variable type='oui/non' name='activer_cadolesldap' description='Activer Annuaire Cadoles' hidden='True' exists='False'/> <variable type='oui/non' name='activer_cadolesldap' description='Activer Annuaire Cadoles' hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_pwdadmin' description="Mot de passe du compte admin durant l'instance" hidden='True' exists='False'/> <variable type='string' name='cadolesldap_pwdadmin' description="Mot de passe du compte admin durant l'instance" hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_organization' description="Nom de l'organisation principale" hidden='True' exists='False'/> <variable type='string' name='cadolesldap_organization' description="Nom de l'organisation principale" hidden='True' exists='False'/>
@ -39,6 +37,7 @@
<variable name="ninegate_test_ninegate" type="oui/non" hidden='True' exists='False'><value>non</value></variable> <variable name="ninegate_test_ninegate" type="oui/non" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_adminer" type="oui/non" description="Activer Adminer" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_adminer" type="oui/non" description="Activer Adminer" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_balado" type="oui/non" description="Activer Balado" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_balado" type="oui/non" description="Activer Balado" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_cdt" type="oui/non" description="Activer CdT" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_dokuwiki" type="oui/non" description="Activer Dokuwiki" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_dokuwiki" type="oui/non" description="Activer Dokuwiki" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_econnect" type="oui/non" description="Activer eConnect" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_econnect" type="oui/non" description="Activer eConnect" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_ead_web" type="oui/non" description="Activer EAD" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_ead_web" type="oui/non" description="Activer EAD" hidden='True' exists='False'><value>non</value></variable>
@ -65,6 +64,7 @@
<variable name="activer_roundcube" type="oui/non" description="Activer Roundcube" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_roundcube" type="oui/non" description="Activer Roundcube" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sacoche" type="oui/non" description="Activer Sacoche" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_sacoche" type="oui/non" description="Activer Sacoche" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_wordpress" type="oui/non" description="Activer Wordpress" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_wordpress" type="oui/non" description="Activer Wordpress" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_revprox" type="oui/non" description="Activer le reverse proxy Nginx" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sondepiwik_local" type="oui/non" description="Activer Sonde Piwik" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_sondepiwik_local" type="oui/non" description="Activer Sonde Piwik" hidden='True' exists='False'><value>non</value></variable>
@ -196,6 +196,13 @@
<variable type='string' name='ninegate_widbalado_url' description='URL complète de votre Balado' mandatory='True' /> <variable type='string' name='ninegate_widbalado_url' description='URL complète de votre Balado' mandatory='True' />
<variable type='string' name='ninegate_widbalado_syncenvole' description='URL Posh-Profil pour synchronisation Balado' mandatory='True' /> <variable type='string' name='ninegate_widbalado_syncenvole' description='URL Posh-Profil pour synchronisation Balado' mandatory='True' />
<!-- CDT -->
<variable type="oui/non" name='ninegate_activate_widcdt' description='Activer CdT' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widcdt_url' description='URL complète de votre CdT' mandatory='True' />
<variable type='string' name='ninegate_widcdt_syncenvole' description='URL Posh-Profil pour synchronisation CdT' mandatory='True' />
<!-- DOKUWIKI --> <!-- DOKUWIKI -->
<variable type="oui/non" name='ninegate_activate_widdokuwiki' description='Activer Dokuwiki' mandatory='True'> <variable type="oui/non" name='ninegate_activate_widdokuwiki' description='Activer Dokuwiki' mandatory='True'>
<value>non</value> <value>non</value>
@ -372,19 +379,6 @@
<variable type='string' name='ninegate_widwordpress_url' description='URL complète de votre Wordpress' mandatory='True' /> <variable type='string' name='ninegate_widwordpress_url' description='URL complète de votre Wordpress' mandatory='True' />
<variable type='string' name='ninegate_widwordpress_syncenvole' description='URL Posh-Profil pour synchronisation Wordpress' mandatory='True' /> <variable type='string' name='ninegate_widwordpress_syncenvole' description='URL Posh-Profil pour synchronisation Wordpress' mandatory='True' />
<!-- WEBSOCKET -->
<variable type='string' name='ninegate_websocket_url' description='Host du serveur Websocket' mandatory='True' />
<variable type='string' name='ninegate_websocket_portexterne' description='Port de commuinication externe du serveur Websocket' mandatory='True' >
<value>5555</value>
</variable>
<variable type='string' name='ninegate_websocket_portinterne' description='Port de commuinication interne du serveur Websocket' mandatory='True'>
<value>5556</value>
</variable>
<!-- EMAIL --> <!-- EMAIL -->
<variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' /> <variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
<variable type="oui/non" name='ninegate_activer_localmail' description="Utiliser le serveur d'envoi de mail local" mandatory='True'> <variable type="oui/non" name='ninegate_activer_localmail' description="Utiliser le serveur d'envoi de mail local" mandatory='True'>
@ -396,9 +390,9 @@
<variable type='string' name='ninegate_smtppwd' description='Fichier contenant le mot de passe associé du compte SMTP' /> <variable type='string' name='ninegate_smtppwd' description='Fichier contenant le mot de passe associé du compte SMTP' />
<variable type='string' name='ninegate_smtpencryption' description='Type Encryptage du serveur SMTP' /> <variable type='string' name='ninegate_smtpencryption' description='Type Encryptage du serveur SMTP' />
<variable type='string' name='ninegate_smtpauthmode' description='Mode Authentification du serveur SMTP' /> <variable type='string' name='ninegate_smtpauthmode' description='Mode Authentification du serveur SMTP' />
</family>
<family name='EoleDB' icon='database' mode='expert'>
<!-- EOLEDB --> <!-- EOLEDB -->
<variable type='string' name='ninegate_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/> <variable type='string' name='ninegate_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/>
<variable type='string' name='ninegate_dbserver' description='Adresse du serveur de base de données' mode='expert'/> <variable type='string' name='ninegate_dbserver' description='Adresse du serveur de base de données' mode='expert'/>
@ -414,6 +408,7 @@
<separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator> <separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator>
<separator name="ninegate_activate_widadminer">Paramètres associés à Adminer</separator> <separator name="ninegate_activate_widadminer">Paramètres associés à Adminer</separator>
<separator name="ninegate_activate_widbalado">Paramètres associés à Balado</separator> <separator name="ninegate_activate_widbalado">Paramètres associés à Balado</separator>
<separator name="ninegate_activate_widcdt">Paramètres associés à CdT</separator>
<separator name="ninegate_activate_widdokuwiki">Paramètres associés à Dokuwiki</separator> <separator name="ninegate_activate_widdokuwiki">Paramètres associés à Dokuwiki</separator>
<separator name="ninegate_activate_wideconnect">Paramètres associés à eConnect</separator> <separator name="ninegate_activate_wideconnect">Paramètres associés à eConnect</separator>
<separator name="ninegate_activate_widead">Paramètres associés à EAD</separator> <separator name="ninegate_activate_widead">Paramètres associés à EAD</separator>
@ -441,9 +436,9 @@
<separator name="ninegate_activate_widroundcube">Paramètres associés à Roundcube</separator> <separator name="ninegate_activate_widroundcube">Paramètres associés à Roundcube</separator>
<separator name="ninegate_activate_widsacoche">Paramètres associés à Sacoche</separator> <separator name="ninegate_activate_widsacoche">Paramètres associés à Sacoche</separator>
<separator name="ninegate_activate_widwordpress">Paramètres associés à Wordpress</separator> <separator name="ninegate_activate_widwordpress">Paramètres associés à Wordpress</separator>
<separator name="ninegate_websocket_url">Paramètres associés au Serveur WEBSOCKET</separator> <separator name="ninegate_activate_websocket">Paramètres associés au Serveur WEBSOCKET</separator>
<separator name="ninegate_noreply">Paramètres associés aux Mails</separator> <separator name="ninegate_noreply">Paramètres associés aux Mails</separator>
<separator name="ninegate_db_mode">Paramètres associés à la Base de Données</separator> <separator name="ninegate_db_mode">Paramètres EoleDB associés à Ninegate</separator>
</separators> </separators>
</variables> </variables>
@ -453,6 +448,11 @@
<target type='variable'>activer_ninegate</target> <target type='variable'>activer_ninegate</target>
</condition> </condition>
<condition name='hidden_if_in' source='activer_revprox'>
<param>non</param>
<target type='filelist'>nineboard_nginx</target>
</condition>
<condition name='hidden_if_in' source='activer_ninegate'> <condition name='hidden_if_in' source='activer_ninegate'>
<param>non</param> <param>non</param>
@ -529,6 +529,7 @@
<target type='variable'>ninegate_dbpass</target> <target type='variable'>ninegate_dbpass</target>
<target type='filelist'>ninegate</target> <target type='filelist'>ninegate</target>
<target type='filelist'>ninegate_nginx</target>
<target type='filelist'>ninegate-migration</target> <target type='filelist'>ninegate-migration</target>
<target type='servicelist'>ninegate</target> <target type='servicelist'>ninegate</target>
@ -724,6 +725,7 @@
<target type='variable'>ninegate_activate_widadminer</target> <target type='variable'>ninegate_activate_widadminer</target>
<target type='variable'>ninegate_activate_widbalado</target> <target type='variable'>ninegate_activate_widbalado</target>
<target type='variable'>ninegate_activate_widcdt</target>
<target type='variable'>ninegate_activate_widdokuwiki</target> <target type='variable'>ninegate_activate_widdokuwiki</target>
<target type='variable'>ninegate_activate_wideconnect</target> <target type='variable'>ninegate_activate_wideconnect</target>
<target type='variable'>ninegate_activate_widead</target> <target type='variable'>ninegate_activate_widead</target>
@ -773,6 +775,7 @@
<param>non</param> <param>non</param>
<target type='variable'>ninegate_widbalado_syncenvole</target> <target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target> <target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target> <target type='variable'>ninegate_widlimesurvey_syncenvole</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target> <target type='variable'>ninegate_widmoodle_syncenvole</target>
@ -791,30 +794,12 @@
<condition name='hidden_if_in' source='poshprofil_typesynchro'> <condition name='hidden_if_in' source='poshprofil_typesynchro'>
<param>Annuaire</param> <param>Annuaire</param>
<target type='variable'>ninegate_widbalado_syncenvole</target> <target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target> <target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target> <target type='variable'>ninegate_widnextcloud_syncenvole</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target> <target type='variable'>ninegate_widsacoche_syncenvole</target>
</condition> </condition>
<!-- AFFICHAGE EN FONCTION DU MODULE WEBSOCKET -->
<condition name='hidden_if_in' source='ninegate_activate_websocket'>
<param>non</param>
<target type='variable'>ninegate_websocket_url</target>
<target type='variable'>ninegate_websocket_portinterne</target>
<target type='variable'>ninegate_websocket_portexterne</target>
<target type='servicelist'>ninegate_websocket</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_websocket_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_apache</param>
<param type='eole' name='match' hidden='False'>web_url</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ADMINER --> <!-- AFFICHAGE EN FONCTION DU WIDGET ADMINER -->
<fill name='calc_multi_condition' target='ninegate_activate_widadminer'> <fill name='calc_multi_condition' target='ninegate_activate_widadminer'>
<param>oui</param> <param>oui</param>
@ -839,7 +824,7 @@
<!-- AFFICHAGE EN FONCTION DU WIDGET BALADAO --> <!-- AFFICHAGE EN FONCTION DU WIDGET BALADO -->
<fill name='calc_multi_condition' target='ninegate_activate_widbalado'> <fill name='calc_multi_condition' target='ninegate_activate_widbalado'>
<param>oui</param> <param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param> <param type='eole' name='condition_1' hidden='False'>activer_balado</param>
@ -870,6 +855,39 @@
</fill> </fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET CDT -->
<fill name='calc_multi_condition' target='ninegate_activate_widcdt'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widcdt'>
<param>non</param>
<target type='variable'>ninegate_widcdt_url</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widcdt_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>/cdt</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widcdt_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET DOKUWIKI --> <!-- AFFICHAGE EN FONCTION DU WIDGET DOKUWIKI -->
<fill name='calc_multi_condition' target='ninegate_activate_widdokuwiki'> <fill name='calc_multi_condition' target='ninegate_activate_widdokuwiki'>
<param>oui</param> <param>oui</param>

View File

@ -127,16 +127,16 @@ gos_web_socket:
firewall: main firewall: main
shared_config: true shared_config: true
server: server:
port: %websocket_port% #The port the socket server will listen on port: 443 #The port the socket server will listen on
host: %websocket_host% #The host ip to bind to host: %weburl%/wssninegate #The host ip to bind to
router: router:
resources: resources:
- "@CadolesWebsocketBundle/Resources/config/topic.yml" - "@CadolesWebsocketBundle/Resources/config/topic.yml"
pushers: pushers:
wamp: wamp:
host: %websocket_host% host: 0.0.0.0
port: %websocket_portinterne% port: 5556
# ckeditor configuration # ckeditor configuration
ivory_ck_editor: ivory_ck_editor:
@ -147,7 +147,7 @@ ivory_ck_editor:
language: fr language: fr
toolbar: "my_toolbar_1" toolbar: "my_toolbar_1"
uiColor: "#ffffff" uiColor: "#ffffff"
extraPlugins: ["html5video","pastebase64"] extraPlugins: ["html5video"]
light_config: light_config:
language: fr language: fr
toolbar: "my_toolbar_2" toolbar: "my_toolbar_2"

View File

@ -1,11 +1,9 @@
#!/bin/bash #!/bin/bash
websocket_url=$(CreoleGet adresse_ip_eth0 non)
websocket_portinterne=$(CreoleGet ninegate_websocket_portinterne non)
# Server Websocket # Server Websocket
if [[ "$1" != "restartifdown" ]]; then if [[ "$1" != "restartifdown" ]]; then
echo WEBSOCKET = STOP echo WEBSOCKET = STOP
pid="$(pgrep -a -f gos:websocket | grep $websocket_portinterne)" pid="$(pgrep -a -f gos:websocket | grep 5556)"
if [ -n "${pid}" ]; then if [ -n "${pid}" ]; then
IFS=' ' read -r -a array <<< "$pid" IFS=' ' read -r -a array <<< "$pid"
kill -9 ${array[0]}; kill -9 ${array[0]};
@ -13,7 +11,7 @@ if [[ "$1" != "restartifdown" ]]; then
fi fi
# Port LISTEN ? # Port LISTEN ?
pid="$(pgrep -a -f gos:websocket | grep $websocket_portinterne)" pid="$(pgrep -a -f gos:websocket | grep 5556)"
restart="yes" restart="yes"
if [ "$1" == "restartifdown" ] && [ -n "${pid}" ] ; then if [ "$1" == "restartifdown" ] && [ -n "${pid}" ] ; then
restart="no" restart="no"
@ -22,5 +20,5 @@ fi
if [ "$restart" == "yes" ] && [ "$1" != "stop" ] ; then if [ "$restart" == "yes" ] && [ "$1" != "stop" ] ; then
echo WEBSOCKET = START echo WEBSOCKET = START
cd /var/www/html/ninegate cd /var/www/html/ninegate
bin/console gos:websocket:server --port $websocket_portinterne -a $websocket_url --no-debug -n -q --env=prod & disown systemctl restart wssninegate
fi fi

View File

@ -78,19 +78,37 @@ class SecurityController extends Controller
if($masteridentity=="LDAP") { if($masteridentity=="LDAP") {
// Normalement la synchronisation des comptes aurait du générer le compte en base c'est donc pas normal // Normalement la synchronisation des comptes aurait du générer le compte en base c'est donc pas normal
// Peut-être juste relancer une synchronisation // Peut-être juste relancer une synchronisation
throw $this->createNotFoundException('Permission denied. Need to synchronize LDAP ? Contact your administrator'); // On tente une synchronisation via methode SSO
$masteridentity="SSO";
// throw $this->createNotFoundException('Permission denied. Need to synchronize LDAP ? Contact your administrator');
} }
if($masteridentity=="SSO") { if($masteridentity=="SSO") {
if(empty($email)) $email = $username."@nomail.com"; 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 // Là c'est normal que potentiellement il n'existe pas il faut donc l'autogénérer
$user = new User(); $user = new User();
// On calcule le niveau01 de l'utilisateur // On calcule le niveau01 de l'utilisateur
$niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->calculateNiveau01($attributes); $niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->calculateNiveau01($attributes);
if(!$niveau01) if(!$niveau01) {
throw $this->createNotFoundException('Permission denied. No Organisation Niveau 01 match'); $niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->findAll()[0];
//throw $this->createNotFoundException('Permission denied. No Organisation Niveau 01 match');
}
$user->setUsername($username); $user->setUsername($username);
$user->setEmail($email); $user->setEmail($email);

View File

@ -228,9 +228,17 @@ class InitDataCommand extends ContainerAwareCommand
$this->addModeration($profil,'cadoles_portal_config_flux',1); $this->addModeration($profil,'cadoles_portal_config_flux',1);
$this->addModeration($profil,'cadoles_portal_config_notice',1); $this->addModeration($profil,'cadoles_portal_config_notice',1);
$this->addModeration($profil,'cadoles_portal_config_icon',1); $this->addModeration($profil,'cadoles_portal_config_icon',1);
$this->addModeration($profil,'cadoles_portal_config_syncbalado',0);
$this->addModeration($profil,'cadoles_portal_config_synccdt',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepiannu',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepisiecle',0);
$this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0); $this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0);
$this->addModeration($profil,'cadoles_portal_config_syncmoodle',0); $this->addModeration($profil,'cadoles_portal_config_syncmoodle',0);
$this->addModeration($profil,'cadoles_portal_config_syncnextcloud',0);
$this->addModeration($profil,'cadoles_portal_config_syncsacoche',0);
$this->addModeration($profil,'cadoles_portal_config_syncpiwik',0);
$this->addModeration($profil,'cadoles_portal_config_syncwordpress',0); $this->addModeration($profil,'cadoles_portal_config_syncwordpress',0);
$this->addModeration($profil,'cadoles_core_config_statistic',1); $this->addModeration($profil,'cadoles_core_config_statistic',1);
$this->addModeration($profil,'cadoles_core_config_mailing',1); $this->addModeration($profil,'cadoles_core_config_mailing',1);
$this->addModeration($profil,'cadoles_core_config_importuser',0); $this->addModeration($profil,'cadoles_core_config_importuser',0);

View File

@ -380,6 +380,46 @@ class PurgeFileCommand extends Command
if($result) $find=true; if($result) $find=true;
} }
// Si pas trouvé on la cherche dans les projecttask
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Projecttask")->createQueryBuilder('projecttask')
->where('projecttask.description LIKE :tofind')
->setParameter('tofind', '%'.$tofind.'%')
->getQuery()->getResult();
if($result) $find=true;
}
// Si pas trouvé on la cherche dans les projectcomment
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Projectcomment")->createQueryBuilder('projectcomment')
->where('projectcomment.description LIKE :tofind')
->setParameter('tofind', '%'.$tofind.'%')
->getQuery()->getResult();
if($result) $find=true;
}
// Si pas trouvé on la cherche dans les blogcomment
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Blogcomment")->createQueryBuilder('blogcomment')
->where('blogcomment.description LIKE :tofind')
->setParameter('tofind', '%'.$tofind.'%')
->getQuery()->getResult();
if($result) $find=true;
}
// Si pas trouvé on la cherche dans les alert
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Alert")->createQueryBuilder('alert')
->where('alert.content LIKE :tofind')
->setParameter('tofind', '%'.$tofind.'%')
->getQuery()->getResult();
if($result) $find=true;
}
// Si pas trouvé on supprime // Si pas trouvé on supprime
if(!$find) { if(!$find) {
$this->writeln($name); $this->writeln($name);

View File

@ -180,6 +180,20 @@ class ScriptCommand extends Command
$this->writeln(""); $this->writeln("");
} }
if($this->container->getParameter('ldap_template')=="scribe") {
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"purgepageprofil"]);
if(!$script) {
$this->writeln("== SCRIPT = purgepageprofil");
$this->purgepageprofil();
$script=new Script();
$script->setName("purgepageprofil");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
}
return 1; return 1;
} }
@ -434,6 +448,20 @@ class ScriptCommand extends Command
} }
} }
private function purgepageprofil() {
$page=$this->em->getRepository('CadolesPortalBundle:Page')->findOneBy(['name'=>'PROFIL - Enseignants']);
if($page) {
$this->em->remove($page);
$this->em->flush();
}
$page=$this->em->getRepository('CadolesPortalBundle:Page')->findOneBy(['name'=>'PROFIL - Administratifs']);
if($page) {
$this->em->remove($page);
$this->em->flush();
}
}

View File

@ -128,7 +128,7 @@ class SynchroCommand extends Command
$ldapfilter="(|(&(uid=*)(ENTPersonProfils=enseignant))(&(uid=*)(typeadmin=0))(&(uid=*)(typeadmin=2)))"; $ldapfilter="(|(&(uid=*)(ENTPersonProfils=enseignant))(&(uid=*)(typeadmin=0))(&(uid=*)(typeadmin=2)))";
$label="PROFIL - Enseignants"; $label="PROFIL - Enseignants";
$this->writeln(" - $label"); $this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group); if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Responsables // Responsables
$ldapfilter="(&(uid=*)(ENTPersonProfils=responsable))"; $ldapfilter="(&(uid=*)(ENTPersonProfils=responsable))";
@ -140,7 +140,20 @@ class SynchroCommand extends Command
$ldapfilter="(&(uid=*)(ENTPersonProfils=administratif))"; $ldapfilter="(&(uid=*)(ENTPersonProfils=administratif))";
$label="PROFIL - Administratifs"; $label="PROFIL - Administratifs";
$this->writeln(" - $label"); $this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group); if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Niveaux
$this->writeln('');
$this->writeln('== NIVEAUX ==========================================');
$results = $this->ldap->search("type=Niveau", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Niveau)(cn=$cn))";
$label="NIVEAU - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Classes // Classes
$this->writeln(''); $this->writeln('');
@ -155,6 +168,32 @@ class SynchroCommand extends Command
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group); if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
} }
// Elèves des Classes
$this->writeln('');
$this->writeln('== ELEVES DES CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Classe)(cn=$cn))";
$label="ELEVES - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Professeurs des Classes
$this->writeln('');
$this->writeln('== PROFESSEURS DES CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(|(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="PROFESSEURS - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Options // Options
$this->writeln(''); $this->writeln('');
$this->writeln('== OPTIONS =========================================='); $this->writeln('== OPTIONS ==========================================');

View File

@ -331,8 +331,15 @@ class PermmodoprofilController extends Controller
$this->addModeration($profil,'cadoles_portal_config_flux',1); $this->addModeration($profil,'cadoles_portal_config_flux',1);
$this->addModeration($profil,'cadoles_portal_config_notice',1); $this->addModeration($profil,'cadoles_portal_config_notice',1);
$this->addModeration($profil,'cadoles_portal_config_icon',1); $this->addModeration($profil,'cadoles_portal_config_icon',1);
$this->addModeration($profil,'cadoles_portal_config_syncbalado',0);
$this->addModeration($profil,'cadoles_portal_config_synccdt',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepiannu',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepisiecle',0);
$this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0); $this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0);
$this->addModeration($profil,'cadoles_portal_config_syncmoodle',0); $this->addModeration($profil,'cadoles_portal_config_syncmoodle',0);
$this->addModeration($profil,'cadoles_portal_config_syncnextcloud',0);
$this->addModeration($profil,'cadoles_portal_config_syncsacoche',0);
$this->addModeration($profil,'cadoles_portal_config_syncpiwik',0);
$this->addModeration($profil,'cadoles_portal_config_syncwordpress',0); $this->addModeration($profil,'cadoles_portal_config_syncwordpress',0);
$this->addModeration($profil,'cadoles_core_config_statistic',1); $this->addModeration($profil,'cadoles_core_config_statistic',1);
$this->addModeration($profil,'cadoles_core_config_mailing',1); $this->addModeration($profil,'cadoles_core_config_mailing',1);

View File

@ -13,12 +13,15 @@
class sessionListener { class sessionListener {
protected $container; protected $container;
protected $em; protected $em;
protected $token_storage;
protected $session;
public function __construct($container, EntityManager $em, TokenStorageInterface $token_storage) public function __construct($container, EntityManager $em, TokenStorageInterface $token_storage,Session $session)
{ {
$this->container = $container; $this->container = $container;
$this->em = $em; $this->em = $em;
$this->token_storage = $token_storage; $this->token_storage = $token_storage;
$this->session = $session;
} }
public function haveRole($curentuser,$roles,$tohave,$route) { public function haveRole($curentuser,$roles,$tohave,$route) {
@ -44,7 +47,7 @@
} }
public function onDomainParse(Event $event) { public function onDomainParse(Event $event) {
$session = new Session(); $session = $this->session;
$configs = $this->em->getRepository("CadolesCoreBundle:Config")->findAll(); $configs = $this->em->getRepository("CadolesCoreBundle:Config")->findAll();
foreach($configs as $config) { foreach($configs as $config) {
@ -91,6 +94,7 @@
$app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress'); $app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress');
$app["widbalado_activate_syncenvole"] =$this->container->getParameter('widbalado_activate_syncenvole'); $app["widbalado_activate_syncenvole"] =$this->container->getParameter('widbalado_activate_syncenvole');
$app["widcdt_activate_syncenvole"] =$this->container->getParameter('widcdt_activate_syncenvole');
$app["widgepi_activate_syncenvole"] =$this->container->getParameter('widgepi_activate_syncenvole'); $app["widgepi_activate_syncenvole"] =$this->container->getParameter('widgepi_activate_syncenvole');
$app["widnextcloud_activate_syncenvole"] =$this->container->getParameter('widnextcloud_activate_syncenvole'); $app["widnextcloud_activate_syncenvole"] =$this->container->getParameter('widnextcloud_activate_syncenvole');
$app["widpiwik_activate_syncenvole"] =$this->container->getParameter('widpiwik_activate_syncenvole'); $app["widpiwik_activate_syncenvole"] =$this->container->getParameter('widpiwik_activate_syncenvole');

View File

@ -52,7 +52,7 @@ class MailType extends AbstractType
'mapped'=> false, 'mapped'=> false,
'required' => false, 'required' => false,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"), 'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "150px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload'] 'config' => ["height" => "150px"]
]); ]);
} }

View File

@ -99,7 +99,7 @@ class MailingType extends AbstractType
'mapped'=> false, 'mapped'=> false,
'required' => true, 'required' => true,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"), 'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "400px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload'] 'config' => ["height" => "400px"]
]); ]);
} }

View File

@ -26,7 +26,7 @@ services:
cadoles.core.session.listener: cadoles.core.session.listener:
public: true public: true
class: Cadoles\CoreBundle\EventListener\sessionListener class: Cadoles\CoreBundle\EventListener\sessionListener
arguments: ['@service_container','@doctrine.orm.entity_manager',"@security.token_storage"] arguments: ['@service_container','@doctrine.orm.entity_manager',"@security.token_storage","@session"]
tags: tags:
- { name: kernel.event_listener, event: kernel.request, method: onDomainParse } - { name: kernel.event_listener, event: kernel.request, method: onDomainParse }

View File

@ -60,6 +60,17 @@ body {
height: 20px; height: 20px;
} }
@media (max-width: 991px) {
.header .title{
font-size: 30px;
}
.header small {
font-size:14px;
top: 25px;
}
}
@media (max-width: 767px) { @media (max-width: 767px) {
.header { display: none } .header { display: none }
#menu-header { display: none } #menu-header { display: none }
@ -116,6 +127,19 @@ body {
right: 30px; right: 30px;
} }
.navbar-top-links #navbar-nameuser {
position: relative;
top: -8px;
right: inherit;
}
@media (max-width: 991px) {
.navbar-top-links #navbar-nameuser {
display: none;
}
}
@media (max-width: 767px) { @media (max-width: 767px) {
.navbar-default .navbar-header #title { .navbar-default .navbar-header #title {
display: none; display: none;
@ -741,6 +765,11 @@ a.item-heart {
max-width: 100%; max-width: 100%;
} }
.widget-ckeditor img {
height:auto !important;
}
.frameitem { .frameitem {
position: absolute; position: absolute;
right: 0px; right: 0px;

View File

@ -49,6 +49,12 @@
.header.reduit .avatar {height: 25px; } .header.reduit .avatar {height: 25px; }
.header.reduit #navbar-nameuser
{
top: 14px;
right: 210px;
}
/* ===================== FIN MODE REDUIT ==========================*/ /* ===================== FIN MODE REDUIT ==========================*/
/* fix defaut d'affichage sur toogle switch */ /* fix defaut d'affichage sur toogle switch */
@ -57,7 +63,11 @@ body {
background: linear-gradient(180deg, var(--main), white,50%); background: linear-gradient(180deg, var(--main), white,50%);
} }
body.eleves, body.grp-National_1 { #navbar-nameuser a {
color: var(--main, #004d9a) !important;
}
body.eleves, body.grp-National_1, body.grp-eleves {
--colorbody: #ffffff; --colorbody: #ffffff;
--main: #169b62; --main: #169b62;
--mainR: 22; --mainR: 22;
@ -77,7 +87,7 @@ body.eleves, body.grp-National_1 {
/* responsables #MAUVE #7D4E5B /* responsables #MAUVE #7D4E5B
*/ */
body.responsables, body.grp-National_2 { body.responsables, body.grp-National_2,body.grp-responsables {
--colorbody: #ffffff; --colorbody: #ffffff;
--main: #7d4e5b; --main: #7d4e5b;
--mainR: 125; --mainR: 125;
@ -96,7 +106,7 @@ body.responsables, body.grp-National_2 {
/* professeurs, enseignants1d #BLEU1 #5770BE */ /* professeurs, enseignants1d #BLEU1 #5770BE */
body.professeurs, body.enseignants1d, body.grp-National_3 { body.professeurs, body.enseignants1d, body.grp-National_3, body.grp-professeurs {
--colorbody: #ffffff; --colorbody: #ffffff;
--main: #5770be; --main: #5770be;
--mainR: 87; --mainR: 87;
@ -114,7 +124,7 @@ body.professeurs, body.enseignants1d, body.grp-National_3 {
} }
/* administratifs, admin #ORANGE #FF6F4C */ /* administratifs, admin #ORANGE #FF6F4C */
body.administratifs, body.admin, body.grp-National_4 , body.grp-National_5, body.grp-National_6 { body.administratifs, body.admin, body.grp-National_4 , body.grp-National_5, body.grp-National_6 , body.grp-administratifs, {
--colorbody: #ffffff; --colorbody: #ffffff;
--main: #ff6f4c; --main: #ff6f4c;
--mainR: 255; --mainR: 255;
@ -278,7 +288,9 @@ div.header > a.title > span {
} }
.nav.navbar-top-links.navbar-right > li a:hover { .nav.navbar-top-links.navbar-right > li a:hover {
color: var(--fontcolorhover, white) !important; color: var(--fontcolorhover, white) !important;
background: var(--fontcolorhoverdark, black) !important; background: var(--light, black) !important;
border-radius: 5px;
padding-top: 1px;
} }
/* /*

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

@ -2,7 +2,7 @@
{% block pagewrapper %} {% block pagewrapper %}
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header">Modification Configuration Générale</h1> <h1 class="page-header">Modification Configuration Générale = {{config.id}}</h1>
{{ form_widget(form.submit) }} <a class="btn btn-default" href={{ path('cadoles_core_config_commun') }}>Annuler</a> {{ form_widget(form.submit) }} <a class="btn btn-default" href={{ path('cadoles_core_config_commun') }}>Annuler</a>

View File

@ -4,11 +4,11 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Groupe Modification Groupe = {{ group.label }}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Groupe Création Groupe
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression Groupe Suppression Groupe = {{ group.label }}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -4,11 +4,11 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification {{ labelniveau01 }} Modification {{ labelniveau01 }} = {{niveau01.label}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création {{ labelniveau01 }} Création {{ labelniveau01 }}
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression {{ labelniveau01 }} Suppression {{ labelniveau01 }} = {{niveau01.label}}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -4,11 +4,11 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification {{ labelniveau02 }} Modification {{ labelniveau02 }} = {{niveau02.label}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création {{ labelniveau02 }} Création {{ labelniveau02 }}
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression {{ labelniveau02 }} Suppression {{ labelniveau02 }} = {{niveau02.label}}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -4,11 +4,11 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Profil de Modération Modification Profil de Modération = {{ permmodoprofil.name }}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Profil de Modération Création Profil de Modération
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression Profil de Modération Suppression Profil de Modération = {{ permmodoprofil.name }}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -5,11 +5,11 @@
{% if moderegistration!="none" %} {% if moderegistration!="none" %}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="send" %} {% if mode=="send" %}
Confirmation à l'Utilisateur Confirmation à l'Utilisateur = {{ registration.username }}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Inscription Inscription
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression Inscription Suppression Inscription = {{ registration.username }}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -1,13 +1,25 @@
{% extends '@CadolesCore/base.html.twig' %} {% extends '@CadolesCore/base.html.twig' %}
{% block pagewrapper %} {% 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 style="padding-top:50px;max-width: 1000px; margin:auto; font-size:18px;">
<div class='alert alert-{{ mode }}' style='margin: 5px 0px'> <div class='alert alert-{{ mode }}' style='margin: 5px 0px'>
{% autoescape %} {% autoescape %}
<p>{{ info|raw }}</p> <p>{{ info|raw }}</p>
{% endautoescape %} {% 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>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
{% if access=="config" %} {% if access=="config" %}
Modification Utilisateur Modification Utilisateur = {{ user.username}}
{% else %} {% else %}
Profil Profil
{% endif %} {% endif %}

View File

@ -4,11 +4,11 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Liste Blanche Modification Liste Blanche = {{ whitelist.label }}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Liste Blanche Création Liste Blanche
{% elseif mode=="delete" %} {% elseif mode=="delete" %}
Suppression Liste Blanche Suppression Liste Blanche = {{ whitelist.label }}
{% endif %} {% endif %}
</h1> </h1>

View File

@ -110,6 +110,9 @@
</div> </div>
<ul class="nav navbar-top-links navbar-right"> <ul class="nav navbar-top-links navbar-right">
{% if app.user %}
<a id="navbar-nameuser" href="{{ path('cadoles_core_user') }}" title="Profil">{{ app.user.firstname }} {{ app.user.lastname }}</a>
{% endif %}
{% if mustread is not defined %} {% if mustread is not defined %}
{{ include('@CadolesCore/Include/menu.html.twig') }} {{ include('@CadolesCore/Include/menu.html.twig') }}
{% endif %} {% endif %}

View File

@ -200,7 +200,8 @@ class ApiController extends Controller
$bookmarks=null; $bookmarks=null;
$items=null; $items=null;
$itemcategorys=null; $itemcategorys=null;
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/"; # fixe #31884 "https://" => "//"
$weburl="//".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,$ssoitems,3); $em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,$ssoitems,3);
@ -673,10 +674,10 @@ $api('$id',data);";
} }
public function sessionAction($id="",$access="config") { public function sessionAction($id="",$access="config") {
// Masteridentity // mode_auth
$masteridentity=$this->getParameter("masteridentity"); $mode_auth=$this->getParameter("mode_auth");
if($masteridentity!="SSO") { if($mode_auth!="CAS") {
$output["error"]="Le bundle Edispatcher ne fonctionne qu'en mode MasterIdentity=SSO"; $output["error"]="Le bundle Edispatcher ne fonctionne qu'en mode mode_auth=CAS";
return new Response(json_encode($output), 400); return new Response(json_encode($output), 400);
} }

View File

@ -43,6 +43,7 @@ class InitDataCommand extends ContainerAwareCommand
$activate_widadminer = $this->getContainer()->getParameter('activate_widadminer'); $activate_widadminer = $this->getContainer()->getParameter('activate_widadminer');
$activate_widbalado = $this->getContainer()->getParameter('activate_widbalado'); $activate_widbalado = $this->getContainer()->getParameter('activate_widbalado');
$activate_widcdt = $this->getContainer()->getParameter('activate_widcdt');
$activate_widdokuwiki = $this->getContainer()->getParameter('activate_widdokuwiki'); $activate_widdokuwiki = $this->getContainer()->getParameter('activate_widdokuwiki');
$activate_wideconnect = $this->getContainer()->getParameter('activate_wideconnect'); $activate_wideconnect = $this->getContainer()->getParameter('activate_wideconnect');
$activate_widead = $this->getContainer()->getParameter('activate_widead'); $activate_widead = $this->getContainer()->getParameter('activate_widead');
@ -414,6 +415,29 @@ class InitDataCommand extends ContainerAwareCommand
$em->persist($entityItem); $em->persist($entityItem);
} }
// Item CdT
if($activate_widcdt) {
$widcdt_url =$this->getContainer()->getParameter('widcdt_url');
$entityItem = $em->getRepository('CadolesPortalBundle:Item')->find(-391);
if(!$entityItem) {
$entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_cdt.png"]);
$entityItem = new Item();
$entityItem->setId(-391);
$entityItem->setRowOrder(0);
$entityItem->setTitle('CdT');
$entityItem->setSubtitle("Application complète de gestion de cahier de texte scolaire");
$entityItem->SetContent("Application complète de gestion de cahier de texte scolaire");
$entityItem->setIcon($entityicon);
$entityItem->setTarget("_blank");
$entityItem->setItemcategory($entityItemcategoryapp);
$entityItem->setEssential(true);
$entityItem->addGroup($groupall);
}
$entityItem->setUrl($widcdt_url);
$em->persist($entityItem);
}
// Item Dokuwiki // Item Dokuwiki
if($activate_widdokuwiki) { if($activate_widdokuwiki) {
$widdokuwiki_url =$this->getContainer()->getParameter('widdokuwiki_url'); $widdokuwiki_url =$this->getContainer()->getParameter('widdokuwiki_url');

View File

@ -8,6 +8,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormError;
use Symfony\Component\Filesystem\Filesystem;
use Cadoles\PortalBundle\Entity\Alert; use Cadoles\PortalBundle\Entity\Alert;
use Cadoles\PortalBundle\Form\AlertType; use Cadoles\PortalBundle\Form\AlertType;
@ -195,6 +196,32 @@ class AlertController extends Controller
return $response; return $response;
} }
public function uploadAction(Request $request,$access=null) {
// Fichier temporaire uploadé
$tmpfile = $request->files->get('upload');
$extention = $tmpfile->getClientOriginalExtension();
// Répertoire de Destination
$fs = new Filesystem();
$rootdir = $this->get('kernel')->getRootDir()."/../web";
$fs->mkdir($rootdir."/uploads/ckeditor");
// Fichier cible
$targetName = uniqid().".".$extention;
$targetFile = $rootdir."/uploads/ckeditor/".$targetName;
$targetUrl = "/".$this->getParameter('alias')."/uploads/ckeditor/".$targetName;
$message = "";
move_uploaded_file($tmpfile,$targetFile);
$output["uploaded"]=1;
$output["fileName"]=$targetName;
$output["url"]=$targetUrl;
return new Response(json_encode($output));
}
public function readAction(Request $request) { public function readAction(Request $request) {
$output=array(); $output=array();
$id=$request->request->get('id'); $id=$request->request->get('id');

View File

@ -361,7 +361,7 @@ class BlogController extends Controller
if($groups[0]) { if($groups[0]) {
if($groups[0]->getFgcanshare()) { if($groups[0]->getFgcanshare()) {
$pages=$groups[0]->getPages(); $pages=$groups[0]->getPages();
if($pages) { if($pages[0]) {
$idpage=$pages[0]->getId(); $idpage=$pages[0]->getId();
$groups=$pages[0]->getGroups(); $groups=$pages[0]->getGroups();
$idgroup=$groups[0]->getId(); $idgroup=$groups[0]->getId();

View File

@ -182,7 +182,7 @@ class BlogarticleController extends Controller
if($groups[0]) { if($groups[0]) {
if($groups[0]->getFgcanshare()) { if($groups[0]->getFgcanshare()) {
$pages=$groups[0]->getPages(); $pages=$groups[0]->getPages();
if($pages) { if($pages[0]) {
$idpage=$pages[0]->getId(); $idpage=$pages[0]->getId();
$groups=$pages[0]->getGroups(); $groups=$pages[0]->getGroups();
$idgroup=$groups[0]->getId(); $idgroup=$groups[0]->getId();

View File

@ -341,7 +341,7 @@ class CalendarController extends Controller
if($groups[0]) { if($groups[0]) {
if($groups[0]->getFgcanshare()) { if($groups[0]->getFgcanshare()) {
$pages=$groups[0]->getPages(); $pages=$groups[0]->getPages();
if($pages) { if($pages[0]) {
$idpage=$pages[0]->getId(); $idpage=$pages[0]->getId();
$groups=$pages[0]->getGroups(); $groups=$pages[0]->getGroups();
$idgroup=$groups[0]->getId(); $idgroup=$groups[0]->getId();

View File

@ -65,13 +65,18 @@ class ItemController extends Controller
{ {
// Initialisation de l'enregistrement // Initialisation de l'enregistrement
$data = new Item(); $data = new Item();
if($this->GetParameter("activate_widsonde")) {
$data->setClicksonde(true);
$data->setClicksondeservice("PAGE_ENT");
}
// Création du formulaire // Création du formulaire
$form = $this->createForm(ItemType::class,$data,array( $form = $this->createForm(ItemType::class,$data,array(
"mode" => "submit", "mode" => "submit",
"labelniveau01" => $this->GetParameter("labelsniveau01"), "labelniveau01" => $this->GetParameter("labelsniveau01"),
"ssosynchroitem" => $this->GetParameter("ssosynchroitem"), "ssosynchroitem" => $this->GetParameter("ssosynchroitem"),
"user_attr_cas_item" => $this->GetParameter("user_attr_cas_item") "user_attr_cas_item" => $this->GetParameter("user_attr_cas_item"),
"activate_widsonde" => $this->GetParameter("activate_widsonde"),
)); ));
// Récupération des data du formulaire // Récupération des data du formulaire
@ -122,7 +127,8 @@ class ItemController extends Controller
"idicon" => ($data->getIcon()?$data->getIcon()->getId():null), "idicon" => ($data->getIcon()?$data->getIcon()->getId():null),
"labelniveau01" => $this->GetParameter("labelsniveau01"), "labelniveau01" => $this->GetParameter("labelsniveau01"),
"ssosynchroitem" => $this->GetParameter("ssosynchroitem"), "ssosynchroitem" => $this->GetParameter("ssosynchroitem"),
"user_attr_cas_item" => $this->GetParameter("user_attr_cas_item") "user_attr_cas_item" => $this->GetParameter("user_attr_cas_item"),
"activate_widsonde" => ($this->GetParameter("activate_widsonde")&&$data->getId()>0),
)); ));
// Récupération des data du formulaire // Récupération des data du formulaire
@ -204,6 +210,26 @@ class ItemController extends Controller
return $response; 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() protected function getDatas()
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
@ -230,6 +256,13 @@ class ItemController extends Controller
if ($form->get('submit')->isClicked() && $mode=="submit") { if ($form->get('submit')->isClicked() && $mode=="submit") {
} }
if ($form->get('submit')->isClicked() && ($mode=="submit" || $mode=="update")) {
// si clicksonde alors clicksondeservice obligatoire
if ($data->getClicksonde() && !$data->getClicksondeservice()) {
$form->addError(new FormError('Type de service sur le click sonde est obligatoire'));
}
}
if ($form->get('submit')->isClicked() && !$form->isValid()) { if ($form->get('submit')->isClicked() && !$form->isValid()) {
$this->get('session')->getFlashBag()->clear(); $this->get('session')->getFlashBag()->clear();
$validator = $this->get('validator'); $validator = $this->get('validator');

View File

@ -362,7 +362,7 @@ class ProjectController extends Controller
if($groups[0]) { if($groups[0]) {
if($groups[0]->getFgcanshare()) { if($groups[0]->getFgcanshare()) {
$pages=$groups[0]->getPages(); $pages=$groups[0]->getPages();
if($pages) { if($pages[0]) {
$idpage=$pages[0]->getId(); $idpage=$pages[0]->getId();
$groups=$pages[0]->getGroups(); $groups=$pages[0]->getGroups();
$idgroup=$groups[0]->getId(); $idgroup=$groups[0]->getId();

View File

@ -207,7 +207,7 @@ class ProjecttaskController extends Controller
if($groups[0]) { if($groups[0]) {
if($groups[0]->getFgcanshare()) { if($groups[0]->getFgcanshare()) {
$pages=$groups[0]->getPages(); $pages=$groups[0]->getPages();
if($pages) { if($pages[0]) {
$idpage=$pages[0]->getId(); $idpage=$pages[0]->getId();
$groups=$pages[0]->getGroups(); $groups=$pages[0]->getGroups();
$idgroup=$groups[0]->getId(); $idgroup=$groups[0]->getId();

View File

@ -39,6 +39,20 @@ class SyncenvoleController extends Controller
]); ]);
} }
public function cdtAction()
{
$url=$this->getParameter("widcdt_syncenvole");
$color=$this->get('session')->get('colormain');
$themename=$this->get('session')->get("theme");
return $this->render('CadolesPortalBundle:Tool:frame.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
'url' => $url."/synchro.php?app=cdt&color=#color#"
]);
}
public function gepiannuAction() public function gepiannuAction()
{ {
$url=$this->getParameter("widgepi_syncenvole"); $url=$this->getParameter("widgepi_syncenvole");

View File

@ -122,6 +122,20 @@ class Item
*/ */
private $icon; private $icon;
/**
* @var boolean
*
* @ORM\Column(name="clicksonde", type="boolean", nullable=true, options={"default":false})
*/
private $clicksonde = false;
/**
* @var boolean
*
* @ORM\Column(name="clicksondeservice", type="string", nullable=true)
*/
private $clicksondeservice;
/** /**
* @var ArrayCollection $bookmark * @var ArrayCollection $bookmark
* @var Bookmark * @var Bookmark
@ -681,4 +695,52 @@ class Item
{ {
return $this->badgeurl; return $this->badgeurl;
} }
/**
* Set clicksonde
*
* @param boolean $clicksonde
*
* @return Item
*/
public function setClicksonde($clicksonde)
{
$this->clicksonde = $clicksonde;
return $this;
}
/**
* Get clicksonde
*
* @return boolean
*/
public function getClicksonde()
{
return $this->clicksonde;
}
/**
* Set clicksondeservice
*
* @param string $clicksondeservice
*
* @return Item
*/
public function setClicksondeservice($clicksondeservice)
{
$this->clicksondeservice = $clicksondeservice;
return $this;
}
/**
* Get clicksondeservice
*
* @return string
*/
public function getClicksondeservice()
{
return $this->clicksondeservice;
}
} }

View File

@ -33,7 +33,7 @@ class AlertType extends AbstractType
"label" => 'Description', "label" => 'Description',
"required" => false, "required" => false,
"disabled" => ($options["mode"]=="delete"?true:false), "disabled" => ($options["mode"]=="delete"?true:false),
"config" => array("height" => "500px") "config" => array("height" => "500px","filebrowserUploadRoute" => 'cadoles_portal_config_alert_upload')
]) ])
->add("fghideable",ChoiceType::class,[ ->add("fghideable",ChoiceType::class,[
@ -118,14 +118,13 @@ class AlertType extends AbstractType
->add('publishedat', DateType::class, [ ->add('publishedat', DateType::class, [
'label' => 'Publier du', 'label' => 'Publier du',
'input' => 'datetime', "widget" => 'single_text',
]) ])
->add('unpublishedat', DateType::class, [ ->add('unpublishedat', DateType::class, [
'label' => 'Jusqu\'au', 'label' => 'Jusqu\'au',
'input' => 'datetime',
'required' => false, 'required' => false,
'years' => range(date('Y'), date('Y')+10) "widget" => 'single_text',
]); ]);

View File

@ -146,6 +146,54 @@ class ItemType extends AbstractType
"disabled" => ($options["mode"]=="delete"?true:false), "disabled" => ($options["mode"]=="delete"?true:false),
]); ]);
} }
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" => [
"ACCUEIL" => "ACCUEIL",
"ACTUALITES" => "ACTUALITES",
"CAHIER TEXTES" => "CAHIER_TEXTES",
"CAHIER LIAISON" => "CAHIER_LIAISON",
"COURRIER ELECTRONIQUE" => "COURRIER_ELECTRONIQUE",
"MESSAGERIE INSTANTANEE" => "MESSAGERIE_INSTANTANEE",
"VISIOCONFERENCE" => "VISIOCONFERENCE",
"STOCKAGE PARTAGE" => "STOCKAGE_PARTAGE",
"PRODUCTION COLLABORATIVE" => "PRODUCTION_COLLABORATIVE",
"DOCUMENTATION CDI" => "DOCUMENTATION_CDI",
"PARCOURS PEDAGOGIQUE" => "PARCOURS_PEDAGOGIQUE",
"RESERVATION SALLES MATERIELS" => "RESERVATION_SALLES_MATERIELS",
"SERVICE COLLECTIVITE" => "SERVICE_COLLECTIVITE",
"SERVICES VIE SCOLAIRE" => "SERVICES_VIE_SCOLAIRE",
"GESTION TEMPS" => "GESTION_TEMPS",
"ABSENCES" => "ABSENCES",
"GESTION COMPETENCES" => "GESTION_COMPETENCES",
"NOTES" => "NOTES",
"MANUEL NUMERIQUE" => "MANUEL_NUMERIQUE",
"RESSOURCE MULTIMEDIA" => "RESSOURCE_MULTIMEDIA",
"RESSOURCE ORIENTATION" => "RESSOURCE_ORIENTATION",
"RESSOURCE PRODUCTION" => "RESSOURCE_PRODUCTION",
"RESSOURCE ACCOMPAGNEMENT ENTRAINEMENT" => "RESSOURCE_ACCOMPAGNEMENT_ENTRAINEMENT",
"RESSOURCE REFERENCE DICTIONNAIRE" => "RESSOURCE_REFERENCE_DICTIONNAIRE",
"RESSOURCE DOCUMENTAIRE" => "RESSOURCE_DOCUMENTAIRE",
"PAGE ENT" => "PAGE_ENT",
],
"disabled" => ($options["mode"]=="delete"?true:false),
]);
}
} }
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
@ -157,6 +205,7 @@ class ItemType extends AbstractType
'labelniveau01' => "string", 'labelniveau01' => "string",
'ssosynchroitem' => "string", 'ssosynchroitem' => "string",
'user_attr_cas_item' => "string", 'user_attr_cas_item' => "string",
"activate_widsonde" => "string",
]); ]);
} }
} }

View File

@ -45,7 +45,9 @@ class AlertRepository extends EntityRepository
$roles=($user?$user->getRoles():["ROLE_ANONYME"]); $roles=($user?$user->getRoles():["ROLE_ANONYME"]);
$niveau01=($user?$user->getNiveau01():null); $niveau01=($user?$user->getNiveau01():null);
$groups=($user?$user->getGroups():[]); $groups=($user?$user->getGroups():[]);
$userreads=($user?$user->getAlertreaders():new ArrayCollection());
// Initialisation du calcul des alerts // Initialisation du calcul des alerts
$alerts=new ArrayCollection(); $alerts=new ArrayCollection();
@ -67,8 +69,9 @@ class AlertRepository extends EntityRepository
->setParameter("alertcategory",$alertcategoryfilter); ->setParameter("alertcategory",$alertcategoryfilter);
} }
$alertsroles=$qb->getQuery()->getResult(); $alertsroles=$qb->getQuery()->getResult();
foreach($alertsroles as $alertrole) { foreach($alertsroles as $alertrole) {
if(!$alerts->contains($alertrole)&&!$alertrole->getReaders()->contains($user)) $alerts->add($alertrole); if(!$alerts->contains($alertrole)&&!$userreads->contains($alertrole)) $alerts->add($alertrole);
} }
} }
@ -91,7 +94,7 @@ class AlertRepository extends EntityRepository
} }
$alertsniveau01s=$qb->getQuery()->getResult(); $alertsniveau01s=$qb->getQuery()->getResult();
foreach($alertsniveau01s as $alertniveau01) { foreach($alertsniveau01s as $alertniveau01) {
if(!$alerts->contains($alertniveau01)&&!$alertniveau01->getReaders()->contains($user)) $alerts->add($alertniveau01); if(!$alerts->contains($alertniveau01)&&!$userreads->contains($alertniveau01)) $alerts->add($alertniveau01);
} }
// Récupération des alerts par group // Récupération des alerts par group
@ -113,8 +116,8 @@ class AlertRepository extends EntityRepository
->setParameter("alertcategory",$alertcategoryfilter); ->setParameter("alertcategory",$alertcategoryfilter);
} }
$alertsgroups=$qb->getQuery()->getResult(); $alertsgroups=$qb->getQuery()->getResult();
foreach($alertsgroups as $alertgroup) { foreach($alertsgroups as $alertgroup) {
if(!$alerts->contains($alertgroup)&&!$alertgroup->getReaders()->contains($user)) $alerts->add($alertgroup); if(!$alerts->contains($alertgroup)&&!$userreads->contains($alertgroup)) $alerts->add($alertgroup);
} }
} }
@ -141,8 +144,8 @@ class AlertRepository extends EntityRepository
->setParameter("alertcategory",$alertcategoryfilter); ->setParameter("alertcategory",$alertcategoryfilter);
} }
$alertsitems=$qb->getQuery()->getResult(); $alertsitems=$qb->getQuery()->getResult();
foreach($alertsitems as $alertitem) { foreach($alertsitems as $alertitem) {
if(!$alerts->contains($alertitem)&&!$alertitem->getReaders()->contains($user)) $alerts->add($alertitem); if(!$alerts->contains($alertitem)&&!$userreads->contains($alertitem)) $alerts->add($alertitem);
} }
} }

View File

@ -7,7 +7,7 @@ use Doctrine\Common\Collections\ArrayCollection;
class ItemRepository extends EntityRepository 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 // Profilage
$roles=($user?$user->getRoles():["ROLE_ANONYME"]); $roles=($user?$user->getRoles():["ROLE_ANONYME"]);
$groups=($user?$user->getGroups():[]); $groups=($user?$user->getGroups():[]);
@ -114,26 +114,28 @@ class ItemRepository extends EntityRepository
// Récupération des items par ssoitem // Récupération des items par ssoitem
$itemsssoitems=[]; $itemsssoitems=[];
foreach($ssoitems as $ssoitem) { if(is_array($ssoitems)) {
$qb = $this->getEntityManager()->createQueryBuilder(); foreach($ssoitems as $ssoitem) {
$qb->select('item') $qb = $this->getEntityManager()->createQueryBuilder();
->from("CadolesPortalBundle:Item", 'item') $qb->select('item')
->where("item.ssoitem=:ssoitem ") ->from("CadolesPortalBundle:Item", 'item')
->setParameter("ssoitem",$ssoitem); ->where("item.ssoitem=:ssoitem ")
->setParameter("ssoitem",$ssoitem);
if($iditemcategory && $itemcategoryfilter) {
$qb->andWhere("item.itemcategory=:itemcategory") if($iditemcategory && $itemcategoryfilter) {
->setParameter("itemcategory",$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(!$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

@ -8,7 +8,11 @@ cadoles_portal_config_syncdelegation:
cadoles_portal_config_syncbalado: cadoles_portal_config_syncbalado:
path: /config/syncenvole/balado path: /config/syncenvole/balado
defaults: { _controller: CadolesPortalBundle:Syncenvole:balado } defaults: { _controller: CadolesPortalBundle:Syncenvole:balado }
cadoles_portal_config_synccdt:
path: /config/syncenvole/cdt
defaults: { _controller: CadolesPortalBundle:Syncenvole:cdt }
cadoles_portal_config_syncgepiannu: cadoles_portal_config_syncgepiannu:
path: /config/syncenvole/gepiannu path: /config/syncenvole/gepiannu
defaults: { _controller: CadolesPortalBundle:Syncenvole:gepiannu } defaults: { _controller: CadolesPortalBundle:Syncenvole:gepiannu }
@ -113,6 +117,10 @@ cadoles_portal_config_item_order:
path: /config/item/order path: /config/item/order
defaults: { _controller: CadolesPortalBundle: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: cadoles_portal_config_ajax_item_seleclist:
path: /config/item/ajax/selectlist path: /config/item/ajax/selectlist
defaults: { _controller: CadolesPortalBundle:Item:ajaxseleclist } defaults: { _controller: CadolesPortalBundle:Item:ajaxseleclist }
@ -159,6 +167,13 @@ cadoles_portal_config_alert_order:
path: /config/alert/order path: /config/alert/order
defaults: { _controller: CadolesPortalBundle:Alert:order } defaults: { _controller: CadolesPortalBundle:Alert:order }
cadoles_portal_config_alert_upload:
path: /config/alert/upload
defaults: { _controller: CadolesPortalBundle:Alert:upload }
cadoles_portal_config_alert_upload_direct:
path: /config/alert/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Alert:upload }
cadoles_portal_config_ajax_alert_seleclist: cadoles_portal_config_ajax_alert_seleclist:
path: /config/alert/ajax/selectlist path: /config/alert/ajax/selectlist
defaults: { _controller: CadolesPortalBundle:Alert:ajaxseleclist } defaults: { _controller: CadolesPortalBundle:Alert:ajaxseleclist }
@ -321,6 +336,9 @@ cadoles_portal_config_page_order:
cadoles_portal_config_page_upload: cadoles_portal_config_page_upload:
path: /config/page/upload path: /config/page/upload
defaults: { _controller: CadolesPortalBundle:Page:upload, access: config } defaults: { _controller: CadolesPortalBundle:Page:upload, access: config }
cadoles_portal_config_page_upload_direct:
path: /config/page/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Page:upload, access: config }
#-- Access user #-- Access user
cadoles_portal_user_page_submit: cadoles_portal_user_page_submit:
@ -350,6 +368,9 @@ cadoles_portal_user_page_order:
cadoles_portal_user_page_upload: cadoles_portal_user_page_upload:
path: /user/page/upload path: /user/page/upload
defaults: { _controller: CadolesPortalBundle:Page:upload, access: user } defaults: { _controller: CadolesPortalBundle:Page:upload, access: user }
cadoles_portal_user_page_upload_direct:
path: /user/page/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Page:upload, access: user }
# Page spécifique # Page spécifique
cadoles_portal_user_page_application: cadoles_portal_user_page_application:
@ -531,7 +552,10 @@ cadoles_portal_config_blogarticle_delete:
cadoles_portal_config_blogarticle_upload: cadoles_portal_config_blogarticle_upload:
path: /config/blogarticle/upload path: /config/blogarticle/upload
defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: config } defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: config }
cadoles_portal_config_blogarticle_upload_direct:
path: /config/blogarticle/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: config }
cadoles_portal_config_blogarticle_image: cadoles_portal_config_blogarticle_image:
path: /config/blogarticle/image path: /config/blogarticle/image
defaults: { _controller: CadolesPortalBundle:Blogarticle:image, access: config } defaults: { _controller: CadolesPortalBundle:Blogarticle:image, access: config }
@ -556,6 +580,9 @@ cadoles_portal_user_blogarticle_delete:
cadoles_portal_user_blogarticle_upload: cadoles_portal_user_blogarticle_upload:
path: /user/blogarticle/upload path: /user/blogarticle/upload
defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: user } defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: user }
cadoles_portal_user_blogarticle_upload_direct:
path: /user/blogarticle/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Blogarticle:upload, access: user }
cadoles_portal_user_blogarticle_image: cadoles_portal_user_blogarticle_image:
path: /user/blogarticle/image path: /user/blogarticle/image
@ -584,6 +611,9 @@ cadoles_portal_config_blogcomment_delete:
cadoles_portal_config_blogcomment_upload: cadoles_portal_config_blogcomment_upload:
path: /config/blogcomment/upload path: /config/blogcomment/upload
defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: config } defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: config }
cadoles_portal_config_blogcomment_upload_direct:
path: /config/blogcomment/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: config }
#-- Access user #-- Access user
cadoles_portal_user_blogcomment_submit: cadoles_portal_user_blogcomment_submit:
@ -605,7 +635,9 @@ cadoles_portal_user_blogcomment_delete:
cadoles_portal_user_blogcomment_upload: cadoles_portal_user_blogcomment_upload:
path: /user/blogcomment/upload path: /user/blogcomment/upload
defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: user } defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: user }
cadoles_portal_user_blogcomment_upload_direct:
path: /user/blogcomment/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Blogcomment:upload, access: user }
#== CALENDAR ============================================================================================================================================= #== CALENDAR =============================================================================================================================================
@ -804,6 +836,9 @@ cadoles_portal_config_projecttask_delete:
cadoles_portal_config_projecttask_upload: cadoles_portal_config_projecttask_upload:
path: /config/projecttask/upload path: /config/projecttask/upload
defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: config } defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: config }
cadoles_portal_config_projecttask_upload_direct:
path: /config/projecttask/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: config }
cadoles_portal_config_projecttask_users: cadoles_portal_config_projecttask_users:
path: /config/projecttask/users path: /config/projecttask/users
@ -833,6 +868,9 @@ cadoles_portal_user_projecttask_delete:
cadoles_portal_user_projecttask_upload: cadoles_portal_user_projecttask_upload:
path: /user/projecttask/upload path: /user/projecttask/upload
defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: user } defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: user }
cadoles_portal_user_projecttask_upload_direct:
path: /user/projecttask/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Projecttask:upload, access: user }
cadoles_portal_user_projecttask_users: cadoles_portal_user_projecttask_users:
path: /user/projecttask/users path: /user/projecttask/users
@ -861,6 +899,9 @@ cadoles_portal_config_projectcomment_delete:
cadoles_portal_config_projectcomment_upload: cadoles_portal_config_projectcomment_upload:
path: /config/projectcomment/upload path: /config/projectcomment/upload
defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: config } defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: config }
cadoles_portal_config_projectcomment_upload_direct:
path: /config/projectcomment/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: config }
#-- Access user #-- Access user
cadoles_portal_user_projectcomment_submit: cadoles_portal_user_projectcomment_submit:
@ -878,7 +919,9 @@ cadoles_portal_user_projectcomment_delete:
cadoles_portal_user_projectcomment_upload: cadoles_portal_user_projectcomment_upload:
path: /user/projectcomment/upload path: /user/projectcomment/upload
defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: user } defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: user }
cadoles_portal_user_projectcomment_upload_direct:
path: /user/projectcomment/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Projectcomment:upload, access: user }
#== FEED ================================================================================================================================================= #== FEED =================================================================================================================================================
@ -930,6 +973,9 @@ cadoles_portal_config_pagewidget_order:
cadoles_portal_config_pagewidget_upload: cadoles_portal_config_pagewidget_upload:
path: /config/pagewidget/upload path: /config/pagewidget/upload
defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: config } defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: config }
cadoles_portal_config_pagewidget_upload_direct:
path: /config/pagewidget/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: config }
cadoles_portal_config_panelwidget_view_url: cadoles_portal_config_panelwidget_view_url:
path: /config/pagewidget/view/url/{id} path: /config/pagewidget/view/url/{id}
@ -1051,6 +1097,9 @@ cadoles_portal_user_pagewidget_order:
cadoles_portal_user_pagewidget_upload: cadoles_portal_user_pagewidget_upload:
path: /user/pagewidget/upload path: /user/pagewidget/upload
defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: user } defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: user }
cadoles_portal_user_pagewidget_upload_direct:
path: /user/pagewidget/upload&responseType=json
defaults: { _controller: CadolesPortalBundle:Pagewidget:upload, access: user }
cadoles_portal_user_panelwidget_view_url: cadoles_portal_user_panelwidget_view_url:
path: /pagewidget/view/url/{id} path: /pagewidget/view/url/{id}

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Annonces Modification Annonces = {{alert.title}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Annonces Création Annonces
{% endif %} {% endif %}

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Catégorie d'Annonce Modification Catégorie d'Annonce = {{alertcategory.label}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Catégorie d'Annonce Création Catégorie d'Annonce
{% endif %} {% endif %}

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Blog Modification Blog = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Blog Création Blog
{% endif %} {% endif %}

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Calendrier Modification Calendrier = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Calendrier Création Calendrier
{% endif %} {% endif %}

View File

@ -3,7 +3,7 @@
{% block pagewrapper %} {% block pagewrapper %}
{{ form_start(form) }} {{ form_start(form) }}
<h1> <h1>
Partage Calendrier Partage Calendrier = {{entity.name}}
</h1> </h1>
<p> <p>

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Flux Modification Flux = {{flux.title}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Flux Création Flux
{% endif %} {% endif %}
@ -17,7 +17,7 @@
<a href={{ path('cadoles_portal_config_flux_delete',{'id':flux.id}) }} <a href={{ path('cadoles_portal_config_flux_delete',{'id':flux.id}) }}
class="btn btn-danger pull-right" class="btn btn-danger pull-right"
data-method="delete" data-csrf="_token:{{ 'csrf' }}" data-method="delete" data-csrf="_token:{{ 'csrf' }}"
data-confirm="Êtes-vous sûr de vouloir supprimer cette annonce ?"> data-confirm="Êtes-vous sûr de vouloir supprimer ce flux ?">
Supprimer Supprimer
</a> </a>
{% endif %} {% endif %}

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

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Item Modification Item = {{item.title}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Item Création Item
{% endif %} {% endif %}
@ -67,6 +67,12 @@
{{ form_row(form.ssoitem) }} {{ form_row(form.ssoitem) }}
{% endif %} {% endif %}
{% 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) }} {{ form_row(form.color) }}
<div id="diviconsel" class="col-md-12 text-left" style="height:140px; padding:20px; text-align:center; background-color: {{ item.color ? "#"~item.color : '#'~color['main'] }};"> <div id="diviconsel" class="col-md-12 text-left" style="height:140px; padding:20px; text-align:center; background-color: {{ item.color ? "#"~item.color : '#'~color['main'] }};">
@ -83,6 +89,23 @@
</div> </div>
</div> </div>
{{ form_end(form) }} {{ 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 %} {% endblock %}
{% block localjavascript %} {% block localjavascript %}
@ -94,6 +117,10 @@
showhide(); showhide();
}); });
$('#item_clicksonde').change(function() {
showhide();
});
function selIcon(idicon,label) { function selIcon(idicon,label) {
$("#item_idicon").val(idicon); $("#item_idicon").val(idicon);
$("#diviconsel img").remove(); $("#diviconsel img").remove();

View File

@ -11,6 +11,8 @@
<p> <p>
<a href="{{ path('cadoles_portal_config_item_submit') }}" class="btn btn-success">Ajouter un Item</a> <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_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> </p>
<div class="category-list"> <div class="category-list">

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Catégorie d'Item Modification Catégorie d'Item = {{itemcategory.label}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Catégorie d'Item Création Catégorie d'Item
{% endif %} {% endif %}

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Charte Modification Charte = {{notice.title}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Charte Création Charte
{% endif %} {% endif %}

View File

@ -25,12 +25,17 @@
<div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : '#'~colormain }};"> <div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : '#'~colormain }};">
<a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a> <a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a>
{% set datasonde = "" %}
{% if bookmark.item and bookmark.item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~bookmark.item.title~"' data-sondeservice='"~bookmark.item.clicksondeservice~"'" %}
{% endif %}
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ bookmark.url }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{{ bookmark.target }}"> <a {{datasonde|raw}} href="{{ bookmark.url }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -110,12 +115,17 @@
{% endif %} {% endif %}
{% else %} {% else %}
{% set datasonde = "" %}
{% if item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~item.title~"' data-sondeservice='"~item.clicksondeservice~"'" %}
{% endif %}
{% if item.target == 'frame' %} {% if item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url }}')">
{% elseif item.target == "_self" %} {% elseif item.target == "_self" %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ item.url }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{{ item.target }}"> <a {{datasonde|raw}} href="{{ item.url }}" target="{{ item.target }}">
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -196,9 +206,10 @@
// Sur click item à sonder // Sur click item à sonder
{% if activate_widsonde %} {% if activate_widsonde %}
$( ".linktosonde" ).click(function() { $( ".linktosonde" ).click(function() {
title=$(this).attr("data-sonde"); title=$(this).attr("data-sondetitle");
//$.getScript( "{{ widsonde_url }}?appli="+title ); service=$(this).attr("data-sondeservice");
}); EnvoleClickSondes($(this),title,service);
});
{% endif %} {% endif %}
}); });

View File

@ -26,11 +26,11 @@
<a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a> <a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a>
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url }}')"> <a style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a href="{{ bookmark.url }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{{ bookmark.target }}"> <a href="{{ bookmark.url }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -111,11 +111,11 @@
{% else %} {% else %}
{% if item.target == 'frame' %} {% if item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url }}')"> <a style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url }}')">
{% elseif item.target == "_self" %} {% elseif item.target == "_self" %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}"> <a href="{{ item.url }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{{ item.target }}"> <a href="{{ item.url }}" target="{{ item.target }}">
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -192,15 +192,6 @@
var grid = $('.grid').masonry(optiongrid); var grid = $('.grid').masonry(optiongrid);
} }
}); });
// Sur click item à sonder
{% if activate_widsonde %}
$( ".linktosonde" ).click(function() {
title=$(this).attr("data-sonde");
//$.getScript( "{{ widsonde_url }}?appli="+title );
});
{% endif %}
}); });

View File

@ -318,49 +318,6 @@
loadmsgCounter() loadmsgCounter()
}, {{(app.session.get("timerefreshnotif")*1000)}}); }, {{(app.session.get("timerefreshnotif")*1000)}});
{% endif %} {% endif %}
// Init socket de counter
/* Désactiver car il semble préférable de faire un appel ajax régulier plutot qu'ouvrir un channel websocket
{% if websocket_activate %}
var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}";
var webSocket = WS.connect(_WS_URI);
webSocket.on("socket/connect", function (session) {
// The callback function in "subscribe" is called everytime an event is published in that channel.
session.subscribe("websocket/counter", function (uri, payload) {
if(payload.log) {
console.log("Received message", payload.log);
}
if(payload.alert) {
alert(payload.alert);
}
{% if app.user %}
if(payload.from!="{{app.user.id}}") {
menu=$("a[data-group='"+payload.group+"']");
if(menu.length) {
if(payload.add) {
console.log("Ajout counter pour group "+payload.group+" by "+payload.from);
if(menu.children(".badge").length) {
menu.children(".badge").html(+(menu.children(".badge").html())+1);
}
else menu.append("<span id='badge-"+payload.group+"' class='badge'>1</span");
}
}
}
{% endif %}
});
$(document).on('click', '#refreshcounter', function(){
{% if app.user %}
event=$(this).data("event");
event.userid={{app.user.id}}
session.publish("websocket/counter", event);
{% endif %}
});
});
{% endif %}
*/
}); });
$(window).resize(function() { $(window).resize(function() {

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Page Editeur Modification Page Editeur = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Page Editeur Création Page Editeur
{% endif %} {% endif %}

View File

@ -3,7 +3,7 @@
{% block pagewrapper %} {% block pagewrapper %}
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
Modification Page {{ entity.pagecategory.name}} Modification Page {{ entity.pagecategory.name}} = {{entity.name}}
</h1> </h1>
<p> <p>

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Page URL Modification Page URL = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Page URL Création Page URL
{% endif %} {% endif %}

View File

@ -142,9 +142,9 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Page Widget Modification Page Widget = {{entity.name}}
{% elseif mode=="updatetemplate" %} {% elseif mode=="updatetemplate" %}
Modification Modèle de Page Modification Modèle de Page = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Page Widget Création Page Widget
{% endif %} {% endif %}

View File

@ -289,8 +289,9 @@
// Sur click item à sonder // Sur click item à sonder
{% if activate_widsonde %} {% if activate_widsonde %}
$( ".linktosonde" ).click(function() { $( ".linktosonde" ).click(function() {
title=$(this).attr("data-sonde"); title=$(this).attr("data-sondetitle");
//$.getScript( "{{ widsonde_url }}?appli="+title ); service=$(this).attr("data-sondeservice");
EnvoleClickSondes($(this),title,service);
}); });
{% endif %} {% endif %}

View File

@ -68,7 +68,7 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
{{ alert.content|raw }} <div class="widget-ckeditor">{{ alert.content|raw }}</div>
{% if not alert.items is empty %} {% if not alert.items is empty %}
{% if app.user %} {% if app.user %}
@ -95,11 +95,11 @@
{% else %} {% else %}
{% if item.target == 'frame' %} {% if item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')"> <a style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')">
{% elseif item.target == "_self" %} {% elseif item.target == "_self" %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}"> <a href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}"> <a href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@ -83,7 +83,7 @@
<div class="grid-item {{ stylegrid }}" data-idcategory="{{ item.itemcategory.id }}" data-iditem="{{ item.id }}"> <div class="grid-item {{ stylegrid }}" data-idcategory="{{ item.itemcategory.id }}" data-iditem="{{ item.id }}">
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};"> <div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
<a class="linktosonde" data-sonde="{{ item.itemcategory.label }}" href="{{ item.url }}" target="_blank"> <a href="{{ item.url }}" target="_blank">
<div class="item-link clearfix"> <div class="item-link clearfix">

View File

@ -87,11 +87,11 @@
{% endif %} {% endif %}
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')"> <a style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">

View File

@ -109,7 +109,7 @@
<div class="grid-item {{ stylegrid }} feed flux-{{ feed.fluxid }}"> <div class="grid-item {{ stylegrid }} feed flux-{{ feed.fluxid }}">
<div class="grid-item-content" style="{{ stylecolor }};"> <div class="grid-item-content" style="{{ stylecolor }};">
<a class="linktosonde" data-sonde="Flux = {{ feed.fluxtitle }}" href="{{ feed.link }}" target="_blank"> <a href="{{ feed.link }}" target="_blank">
<div class="item-link clearfix"> <div class="item-link clearfix">
{% if feed.image is not empty %} {% if feed.image is not empty %}
<div class="grid-item-logo"> <div class="grid-item-logo">

View File

@ -125,11 +125,11 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a>
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')"> <a style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -188,12 +188,17 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a>
{% endif %} {% endif %}
{% set datasonde = "" %}
{% if bookmark.item and bookmark.item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~bookmark.item.title~"' data-sondeservice='"~bookmark.item.clicksondeservice~"'" %}
{% endif %}
{% if bookmark.item.target == 'frame' %} {% if bookmark.item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}"> <a {{datasonde|raw}} data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}"> <a {{datasonde|raw}} href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -244,12 +249,17 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a>
{% endif %} {% endif %}
{% set datasonde = "" %}
{% if bookmark.item and bookmark.item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~bookmark.item.title~"' data-sondeservice='"~bookmark.item.clicksondeservice~"'" %}
{% endif %}
{% if bookmark.item.target == 'frame' %} {% if bookmark.item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}"> <a {{datasonde|raw}} href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -285,11 +295,11 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a>
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')"> <a style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -394,12 +404,17 @@
{% endif %} {% endif %}
{% else %} {% else %}
{% set datasonde = "" %}
{% if item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~item.title~"' data-sondeservice='"~item.clicksondeservice~"'" %}
{% endif %}
{% if item.target == 'frame' %} {% if item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')">
{% elseif item.target == "_self" %} {% elseif item.target == "_self" %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}"> <a {{datasonde|raw}} href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@ -97,12 +97,17 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a>
{% endif %} {% endif %}
{% set datasonde = "" %}
{% if bookmark.item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~bookmark.item.title~"' data-sondeservice='"~bookmark.item.clicksondeservice~"'" %}
{% endif %}
{% if bookmark.item.target == 'frame' %} {% if bookmark.item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}"> <a {{datasonde|raw}} href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -138,11 +143,11 @@
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a> <a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a>
{% if bookmark.target == 'frame' %} {% if bookmark.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')"> <a style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
{% elseif bookmark.target == "_self" %} {% elseif bookmark.target == "_self" %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}"> <a href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
{% endif %} {% endif %}
<div class="item-link clearfix"> <div class="item-link clearfix">
@ -186,12 +191,17 @@
{% endif %} {% endif %}
{% else %} {% else %}
{% set datasonde = "" %}
{% if item.clicksonde %}
{% set datasonde = "class='linktosonde' data-sondetitle='"~item.title~"' data-sondeservice='"~item.clicksondeservice~"'" %}
{% endif %}
{% if item.target == 'frame' %} {% if item.target == 'frame' %}
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')"> <a {{datasonde|raw}} style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')">
{% elseif item.target == "_self" %} {% elseif item.target == "_self" %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}"> <a {{datasonde|raw}} href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}"> <a {{datasonde|raw}} href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@ -28,11 +28,11 @@
<div class="widget widget-mini widget-link" data-id="{{ entity.id }}" loc="{{ entity.loc }}"> <div class="widget widget-mini widget-link" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
<div class="widgetheader"> <div class="widgetheader">
{% if target == 'frame' %} {% if target == 'frame' %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="cursor:pointer; {{ stylelink }}" onClick="showFrameitem('link{{ entity.id }}','{{ url|replace({'#login#': username}) }}')"> <a style="cursor:pointer; {{ stylelink }}" onClick="showFrameitem('link{{ entity.id }}','{{ url|replace({'#login#': username}) }}')">
{% elseif target == "_self" %} {% elseif target == "_self" %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{ stylelink }}"href="{{ url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ target }}{% endif %}"> <a style="{{ stylelink }}"href="{{ url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{ stylelink }}" href="{{ url|replace({'#login#': username}) }}" target="{{ target }}"> <a style="{{ stylelink }}" href="{{ url|replace({'#login#': username}) }}" target="{{ target }}">
{% endif %} {% endif %}
{% if entity.icon %} {% if entity.icon %}
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{entity.name}}" /> <img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{entity.name}}" />
@ -54,11 +54,11 @@
<div class="widgetheader" style="{{ stylewidgetbodyimage }}; height:100%;"> <div class="widgetheader" style="{{ stylewidgetbodyimage }}; height:100%;">
{% if target == 'frame' %} {% if target == 'frame' %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="cursor:pointer; {{ stylelink }}" onClick="showFrameitem('link{{ entity.id }}','{{ url|replace({'#login#': username}) }}')"> <a style="cursor:pointer; {{ stylelink }}" onClick="showFrameitem('link{{ entity.id }}','{{ url|replace({'#login#': username}) }}')">
{% elseif target == "_self" %} {% elseif target == "_self" %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{ stylelink }}"href="{{ url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ target }}{% endif %}"> <a style="{{ stylelink }}"href="{{ url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ target }}{% endif %}">
{% else %} {% else %}
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{ stylelink }}" href="{{ url|replace({'#login#': username}) }}" target="{{ target }}"> <a style="{{ stylelink }}" href="{{ url|replace({'#login#': username}) }}" target="{{ target }}">
{% endif %} {% endif %}
{% if entity.icon %} {% if entity.icon %}
<img src="/{{ alias }}/{{ entity.icon.label }}" style="max-height: 100%; width: auto; display: block; margin: auto; padding-top: 10px;" /> <img src="/{{ alias }}/{{ entity.icon.label }}" style="max-height: 100%; width: auto; display: block; margin: auto; padding-top: 10px;" />

View File

@ -4,7 +4,7 @@
{{ form_start(form) }} {{ form_start(form) }}
<h1 class="page-header"> <h1 class="page-header">
{% if mode=="update" %} {% if mode=="update" %}
Modification Projet Modification Projet = {{entity.name}}
{% elseif mode=="submit" %} {% elseif mode=="submit" %}
Création Projet Création Projet
{% endif %} {% endif %}

View File

@ -51,12 +51,16 @@ class ChatController extends Controller
if(!$group) die(); if(!$group) die();
// Génération d'une clé temporaire d'accès au chat // Génération d'une clé temporaire d'accès au chat
$key = Uuid::uuid4();
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["group"=>$group,"user"=>$user]); $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["group"=>$group,"user"=>$user]);
$key=null;
if($usergroup) { if($usergroup) {
$usergroup->setKeyvalue($key); $key=$usergroup->getKeyvalue();
$em->persist($usergroup); if(is_null($key)) {
$em->flush(); $key = Uuid::uuid4();
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
}
} }

View File

@ -30,7 +30,7 @@ class ChatType extends AbstractType
'mapped'=> false, 'mapped'=> false,
'required' => false, 'required' => false,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"), 'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "100px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload',], 'config' => ["height" => "100px"],
]); ]);
$builder $builder
@ -40,7 +40,7 @@ class ChatType extends AbstractType
'mapped'=> false, 'mapped'=> false,
'required' => false, 'required' => false,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"), 'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "150px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload'] 'config' => ["height" => "150px"]
]); ]);
} }

View File

@ -362,7 +362,8 @@
function websocket() function websocket()
{ {
var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}"; var _WS_URI = "wss://{{ gos_web_socket_server_host }}";
console.log(_WS_URI);
webSocket = WS.connect(_WS_URI,{retryDelay: delayRetry}); webSocket = WS.connect(_WS_URI,{retryDelay: delayRetry});
webSocket.on("socket/connect", function (sess) { webSocket.on("socket/connect", function (sess) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -9,23 +9,6 @@ Alias /ninegate /var/www/html/ninegate/web
</Directory> </Directory>
%if %%getVar("ninegate_activate_websocket", 'non') == "oui" %if %%getVar("ninegate_activate_websocket", 'non') == "oui"
Listen %%adresse_ip_eth0:%%ninegate_websocket_portexterne ProxyPass /wssninegate ws://0.0.0.0:5556 retry=0 keepalive=On
<VirtualHost %%adresse_ip_eth0:%%ninegate_websocket_portexterne> ProxyPassReverse /wssninegate ws://0.0.0.0:5556 retry=0
ErrorLog /var/log/apache2/ssl_error.log
CustomLog /var/log/apache2/ssl_access.log common
SSLEngine on
%if %%cert_type == "letsencrypt"
SSLCertificateFile /etc/ssl/letsencrypt/conf/live/%%ninegate_websocket_url/cert.pem
SSLCertificateKeyFile /etc/ssl/letsencrypt/conf/live/%%ninegate_websocket_url/privkey.pem
%else
SSLCertificateFile %%server_cert
SSLCertificateKeyFile %%server_key
%end if
SSLProtocol all -SSLv3 -SSLv2
ServerName %%ninegate_websocket_url
RewriteEngine On
ProxyPass / ws://%%adresse_ip_eth0:%%ninegate_websocket_portinterne retry=0 keepalive=On
ProxyPassReverse / ws://%%adresse_ip_eth0:%%ninegate_websocket_portinterne retry=0
</VirtualHost>
%end if %end if

View File

@ -67,11 +67,12 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f
(3000, NULL, 3000, 'SYNCHRONISATION', NULL, 'fa fa-exchange-alt', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'), (3000, NULL, 3000, 'SYNCHRONISATION', NULL, 'fa fa-exchange-alt', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3001, 3000, 3001, 'Délégation', 'cadoles_portal_config_syncdelegation', 'fa fa-balance-scale', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'), (3001, 3000, 3001, 'Délégation', 'cadoles_portal_config_syncdelegation', 'fa fa-balance-scale', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3110, 3000, 3110, 'Balado', 'cadoles_portal_config_syncbalado', 'fa fa-microphone', 'ROLE_ADMIN,ROLE_MODO', 'widbalado_activate_syncenvole'), (3110, 3000, 3110, 'Balado', 'cadoles_portal_config_syncbalado', 'fa fa-microphone', 'ROLE_ADMIN,ROLE_MODO', 'widbalado_activate_syncenvole'),
(3112, 3000, 3112, 'CdT', 'cadoles_portal_config_synccdt', 'fa fa-star', 'ROLE_ADMIN,ROLE_MODO', 'widcdt_activate_syncenvole'),
(3115, 3000, 3115, 'GEPI via Annuaire', 'cadoles_portal_config_syncgepiannu', 'fa fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'), (3115, 3000, 3115, 'GEPI via Annuaire', 'cadoles_portal_config_syncgepiannu', 'fa fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'),
(3116, 3000, 3116, 'GEPI via SIECLE', 'cadoles_portal_config_syncgepisiecle', 'fa fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'), (3116, 3000, 3116, 'GEPI via SIECLE', 'cadoles_portal_config_syncgepisiecle', 'fa fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'),
(3120, 3000, 3120, 'Limesurvey', 'cadoles_portal_config_synclimesurvey', 'fa fa-question', 'ROLE_ADMIN,ROLE_MODO', 'activate_widlimesurvey'), (3120, 3000, 3120, 'Limesurvey', 'cadoles_portal_config_synclimesurvey', 'fa fa-question', 'ROLE_ADMIN,ROLE_MODO', 'activate_widlimesurvey'),
(3130, 3000, 3130, 'Moodle', 'cadoles_portal_config_syncmoodle', 'fa fa-graduation-cap', 'ROLE_ADMIN,ROLE_MODO', 'activate_widmoodle'), (3130, 3000, 3130, 'Moodle', 'cadoles_portal_config_syncmoodle', 'fa fa-graduation-cap', 'ROLE_ADMIN,ROLE_MODO', 'activate_widmoodle'),
(3140, 3000, 3140, 'Nexcloud', 'cadoles_portal_config_syncnextcloud', 'fa fa-cloud', 'ROLE_ADMIN,ROLE_MODO', 'widnextcloud_activate_syncenvole'), (3140, 3000, 3140, 'Nextcloud', 'cadoles_portal_config_syncnextcloud', 'fa fa-cloud', 'ROLE_ADMIN,ROLE_MODO', 'widnextcloud_activate_syncenvole'),
(3150, 3000, 3150, 'Sacoche via SIECLE', 'cadoles_portal_config_syncsacoche', 'fa fa-suitcase', 'ROLE_ADMIN,ROLE_MODO', 'widsacoche_activate_syncenvole'), (3150, 3000, 3150, 'Sacoche via SIECLE', 'cadoles_portal_config_syncsacoche', 'fa fa-suitcase', 'ROLE_ADMIN,ROLE_MODO', 'widsacoche_activate_syncenvole'),
(3160, 3000, 3160, 'Piwik', 'cadoles_portal_config_syncpiwik', 'fa fa-signal', 'ROLE_ADMIN,ROLE_MODO', 'widpiwik_activate_syncenvole'), (3160, 3000, 3160, 'Piwik', 'cadoles_portal_config_syncpiwik', 'fa fa-signal', 'ROLE_ADMIN,ROLE_MODO', 'widpiwik_activate_syncenvole'),
(3230, 3000, 3230, 'Wordpress', 'cadoles_portal_config_syncwordpress', 'fab fa-wordpress', 'ROLE_ADMIN,ROLE_MODO', 'activate_widwordpress'), (3230, 3000, 3230, 'Wordpress', 'cadoles_portal_config_syncwordpress', 'fab fa-wordpress', 'ROLE_ADMIN,ROLE_MODO', 'activate_widwordpress'),

6
tmpl/ninegate-nginx.conf Normal file
View File

@ -0,0 +1,6 @@
location /wssninegate {
proxy_pass https://%%container_ip_web;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

View File

@ -52,14 +52,8 @@ parameters:
%end if %end if
%if %%getVar("ninegate_activate_websocket", 'non') == "oui" %if %%getVar("ninegate_activate_websocket", 'non') == "oui"
websocket_activate: true websocket_activate: true
websocket_host: %%ninegate_websocket_url
websocket_port: %%ninegate_websocket_portexterne
websocket_portinterne: %%ninegate_websocket_portinterne
%else %else
websocket_activate: false websocket_activate: false
websocket_host: %%web_url
websocket_port: 80
websocket_portinterne: 80
%end if %end if
%if %%getVar("ninegate_activate_portal", 'non') == "oui" %if %%getVar("ninegate_activate_portal", 'non') == "oui"
portal_activate: true portal_activate: true
@ -133,6 +127,11 @@ parameters:
%else %else
ldap_tls: false ldap_tls: false
%end if %end if
%if %%getVar("ninegate_masteridentity", 'SQL') != "SQL"
ldap_user: %%ldap_reader
ldap_password: %%pwdreader("",%%ldap_reader_passfile)
%else
%if %%getVar("activer_admin_passfile", 'non') == "oui" %if %%getVar("activer_admin_passfile", 'non') == "oui"
%if %%getVar("ldap_writer", '') == "" %if %%getVar("ldap_writer", '') == ""
ldap_user: cn=admin,o=gouv,c=fr ldap_user: cn=admin,o=gouv,c=fr
@ -143,6 +142,7 @@ parameters:
%else %else
ldap_user: %%ldap_reader ldap_user: %%ldap_reader
ldap_password: %%pwdreader("",%%ldap_reader_passfile) ldap_password: %%pwdreader("",%%ldap_reader_passfile)
%end if
%end if %end if
ldap_basedn: %%ldap_base_dn ldap_basedn: %%ldap_base_dn
%if %%getVar("ninegate_ldaptype", 'LDAP') == "AD" %if %%getVar("ninegate_ldaptype", 'LDAP') == "AD"
@ -284,6 +284,20 @@ parameters:
widbalado_activate_syncenvole: false widbalado_activate_syncenvole: false
%end if %end if
%if %%getVar("ninegate_activate_widcdt", 'non') == "oui"
activate_widcdt: true
widcdt_url: %%ninegate_widcdt_url
%if %%getVar("poshprofil_typesynchro", "") == "ENT"
widcdt_activate_syncenvole: true
widcdt_syncenvole: %%ninegate_widcdt_syncenvole
%else
widcdt_activate_syncenvole: false
%end if
%else
activate_widcdt: false
widcdt_activate_syncenvole: false
%end if
%if %%getVar("ninegate_activate_widdokuwiki", 'non') == "oui" %if %%getVar("ninegate_activate_widdokuwiki", 'non') == "oui"
activate_widdokuwiki: true activate_widdokuwiki: true
widdokuwiki_url: %%ninegate_widdokuwiki_url widdokuwiki_url: %%ninegate_widdokuwiki_url

11
tmpl/ninegate.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=Ninegate websocket server
After=local-fs.target network.target
[Service]
Type=simple
ExecStart=/var/www/html/ninegate/bin/console gos:websocket:server --port 5556 -a 0.0.0.0 --no-debug -n -q --env=prod
Restart=on-watchdog
[Install]
WantedBy=multi-user.target