This commit is contained in:
root 2019-06-04 09:24:42 +02:00
parent b636d10934
commit b2c04f7c50
26 changed files with 563 additions and 106 deletions

View File

@ -21,14 +21,26 @@
<variable name="activer_eportail" type="oui/non" description="Activer ePortail" hidden='True' exists='False'>
<value>non</value>
</variable>
<variable name="activer_limesurvey" type="oui/non" description="Activer Limesurvey" hidden='True' exists='False'>
<value>non</value>
</variable>
<variable name="activer_moodle" type="oui/non" description="Activer Moodle" 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='ninegate_test_conf_cadolesldap' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_ldap' type='oui/non' hidden='True'/>
<variable type='oui/non' name='activer_ninegate' description='Activer Ninegate'><value>oui</value></variable>
<variable type='string' name='ninegate_masteridentity' description="Maître de l'Identité" mandatory='True'><value>SQL</value></variable>
<variable type='string' name='ninegate_mode_auth' description="Mode Authentification" mandatory='True'><value>SQL</value></variable>
<variable type='string' name='ninegate_masteridentity' description="Maître de l'Identité" mandatory='True'><value>LDAP</value></variable>
<variable type='string' name='ninegate_mode_auth' description="Mode Authentification" mandatory='True'><value>CAS</value></variable>
<variable type='oui/non' name='ninegate_syncldap' description="Synchroniser Ninegate vers votre annuaire"><value>oui</value></variable>
<variable type='oui/non' name='ninegate_synceportail' description="Synchroniser Ninegate vers ePortail"><value>oui</value></variable>
<variable type='oui/non' name='ninegate_syncldap' description="Synchroniser Ninegate vers votre annuaire"><value>non</value></variable>
<variable type='oui/non' name='ninegate_synceportail' description="Synchroniser Ninegate vers ePortail"><value>non</value></variable>
<variable type='string' name='ninegate_ldaptemplate' description="Modèle d'annuaire"><value>scribe</value></variable>
<variable type='string' name='ninegate_pwdadmin' description="Mot de passe du compte admin durant l'instance (idem valeur Cadoles ldap)" mandatory='True'/>
@ -53,6 +65,25 @@
<variable type='string' name='ninegate_moderegistration' description="Mode de registration : none / byuser / byadmin" mandatory='True'><value>none</value></variable>
<variable type='string' name='ninegate_keyterm' description="Taille minimun du password" mandatory='True'><value>8</value></variable>
<variable type="oui/non" name='ninegate_activate_portal' description='Activer le module portail' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_item' description='Activer le module item' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_widmoodle' description='Activer le widget Moodle' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmoodle_url' description='URL complète de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_apikey' description='API Key de votre Moodle' mandatory='True' />
<variable type="oui/non" name='ninegate_activate_widlimesurvey' description='Activer le widget Limesurvey' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widlimesurvey_url' description='URL complète de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apiuser' description='API User de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apikey' description='API Key de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
<variable type='string' name='ninegate_smtphost' description='Host du serveur SMTP' />
@ -73,6 +104,8 @@
<separators>
<separator name="ninegate_syncldap">Paramètres associés à l'Annuaire</separator>
<separator name="ninegate_niveau01label">Paramètres associés aux look de l'application</separator>
<separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator>
<separator name="ninegate_activate_widmoodle">Paramètres associés au Portail</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>
</separators>
@ -119,6 +152,9 @@
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
<target type='variable'>ninegate_activate_portal</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_noreply</target>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
@ -150,17 +186,40 @@
<param>SSO</param>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_test_conf_cadolesldap</target>
</condition>
<condition name='hidden_if_in' source='ninegate_syncldap'>
<param>non</param>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
</condition>
<auto name='calc_multi_condition' target='ninegate_test_conf_cadolesldap'>
<param>CadolesLDAP</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_ldaptemplate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</auto>
<auto name='calc_multi_condition' target='ninegate_test_conf_ldap'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_syncldap</param>
<param type='eole' name='condition_2' hidden='False'>ninegate_test_conf_cadolesldap</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<condition name='hidden_if_in' source='ninegate_test_conf_ldap'>
<param>non</param>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
</condition>
<condition name='hidden_if_in' source='ninegate_niveau02view'>
@ -172,32 +231,100 @@
</condition>
<check name='valid_enum' target='ninegate_masteridentity'>
<param>['LDAP', 'SQL', 'SSO']</param>
</check>
<check name='valid_enum' target='ninegate_mode_auth'>
<param>['CAS', 'SAML', 'SQL', 'LDAP']</param>
</check>
<check name='valid_enum' target='ninegate_moderegistration'>
<param>['none', 'byuser', 'byadmin']</param>
</check>
<!-- AFFICHAGE EN FONCTION DES MODULES ACTIVES -->
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>non</param>
<check name='valid_enum' target='ninegate_ldaptemplate'>
<param>['scribe', 'open']</param>
</check>
<target type='variable'>ninegate_activate_widmoodle</target>
<target type='variable'>ninegate_activate_widlimesurvey</target>
</condition>
<check name='valid_enum' target='ninegate_smtpencryption'>
<param>['tls', 'ssl', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_smtpauthmode'>
<param>['plain', 'login', 'cram-md5', 'null']</param>
</check>
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>oui</param>
<check name='valid_enum' target='ninegate_db_mode'>
<param>['default', 'externe', 'local']</param>
</check>
<target type='variable'>ninegate_activate_item</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU WIDGET MOODLE -->
<fill name='calc_multi_condition' target='ninegate_activate_widmoodle'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</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_widmoodle'>
<param>non</param>
<target type='variable'>ninegate_widmoodle_url</target>
<target type='variable'>ninegate_widmoodle_apikey</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmoodle_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/moodle</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param type='eole' name='match' hidden='False'>moodle_apikey</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET LIMESURVEY -->
<fill name='calc_multi_condition' target='ninegate_activate_widlimesurvey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</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_widlimesurvey'>
<param>non</param>
<target type='variable'>ninegate_widlimesurvey_url</target>
<target type='variable'>ninegate_widlimesurvey_apiuser</target>
<target type='variable'>ninegate_widlimesurvey_apikey</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/limesurvey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apiuser'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>restuser</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>apikeyenvole</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>local</param>
<target type='variable'>ninegate_dbserver</target>
@ -213,6 +340,38 @@
<target type='variable'>ninegate_dbpass</target>
<target type='variable'>ninegate_allow_hosts</target>
</condition>
<!-- VALID EMUN DES DIFFRENTES COMBO -->
<check name='valid_enum' target='ninegate_masteridentity'>
<param>['LDAP', 'SQL', 'SSO']</param>
</check>
<check name='valid_enum' target='ninegate_mode_auth'>
<param>['CAS', 'SAML', 'SQL', 'LDAP']</param>
</check>
<check name='valid_enum' target='ninegate_moderegistration'>
<param>['none', 'byuser', 'byadmin']</param>
</check>
<check name='valid_enum' target='ninegate_ldaptemplate'>
<param>['scribe', 'open', 'CadolesLDAP']</param>
</check>
<check name='valid_enum' target='ninegate_smtpencryption'>
<param>['tls', 'ssl', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_smtpauthmode'>
<param>['plain', 'login', 'cram-md5', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_db_mode'>
<param>['default', 'externe', 'local']</param>
</check>
</constraints>
<help>
</help>

View File

@ -8,6 +8,7 @@ twig:
cron_activate: %cron_activate%
portal_activate: %portal_activate%
portal_item_activate: %portal_item_activate%
eportail_sync: %eportail_sync%
moderegistration: %moderegistration%

View File

@ -5,10 +5,10 @@ SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'ldapbundle', '0000000A');
(-100, 'transnum', '0000000A');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
(-100, -100, 'admin', 'Administrateur', 'ldapbundle', 'PWD_CAS', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '0000000A', 'simple');
(-100, -100, 'admin', 'Administrateur', 'transnum', 'PWD_CAS', 'admin@transnum.cadol.es', 'admin.jpg', 'ROLE_ADMIN', '0000000A', 'simple');
@ -20,6 +20,7 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f
(1200, NULL, 1200, 'ORGANISATION', NULL, 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1210, 1200, 1210, 'Listes Blanche', 'cadoles_core_config_whitelist', 'fa-tasks', 'ROLE_ADMIN', ''),
(1220, 1200, 1220, 'Niveau 01', 'cadoles_core_config_niveau01', 'fa-building', 'ROLE_ADMIN', ''),
(1230, 1200, 1230, 'Niveau 02', 'cadoles_core_config_niveau02', 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1240, 1200, 1240, 'Groupes', 'cadoles_core_config_group', 'fa-users', 'ROLE_ADMIN,ROLE_MODO', ''),
(1250, 1200, 1250, 'Inscriptions', 'cadoles_core_config_registration', 'fa-pencil-square-o', 'ROLE_ADMIN,ROLE_MODO', ''),
(1260, 1200, 1260, 'Utilisateurs', 'cadoles_core_config_user', 'fa-child', 'ROLE_ADMIN,ROLE_MODO', ''),
@ -34,6 +35,15 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f
(1570, 1500, 1570, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1580, 1500, 1580, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(2500, NULL, 2500, 'MODULES', NULL, 'fa-cubes', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(2510, 2500, 2510, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'page_activate'),
(2520, 2500, 2520, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'item_activate'),
(2530, 2500, 2530, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'alert_activate'),
(2540, 2500, 2540, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'calendar_activate'),
(2550, 2500, 2550, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'blog_activate'),
(2560, 2500, 2560, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'flux_activate'),
(2570, 2500, 2570, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'notice_activate'),
(2580, 2500, 2580, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(7000, NULL, 7000, 'CRON', NULL, 'fa-bolt', 'ROLE_ADMIN', 'cron_activate'),
(7010, 7000, 7010, 'Jobs', 'cadoles_cron_config', 'fa-bullseye', 'ROLE_ADMIN', 'cron_activate'),
@ -61,6 +71,6 @@ INSERT IGNORE INTO `config` (`order`, `visible`, `changeable`, `required`, `type
('060', 1, 1, 1, 'font', 'fontfacetitle', 'Anton-Regular', '', 'Police des titres de votre site'),
('061', 1, 1, 1, 'font', 'fontfacebody', 'Helvetica', '', 'Police des titres de votre site'),
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '1', '', 'Définit un Proxy'),
('201', 1, 0, 1, 'string', 'PROXYserver', '192.168.57.160', 'PROXYactivate','Adresse du Proxy'),
('202', 1, 0, 1, 'string', 'PROXYport', '8080', 'PROXYactivate','Port du Proxy');
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '0', '', 'Définit un Proxy'),
('201', 1, 0, 1, 'string', 'PROXYserver', '', 'PROXYactivate','Adresse du Proxy'),
('202', 1, 0, 1, 'string', 'PROXYport', '', 'PROXYactivate','Port du Proxy');

View File

@ -70,6 +70,34 @@ class AjaxController extends Controller
}
public function niveau01listAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$output=array();
$em = $this->getDoctrine()->getManager();
$page_limit=$request->query->get('page_limit');
$q=$request->query->get('q');
$qb = $em->createQueryBuilder();
$qb->select('table')->from("CadolesCoreBundle:Niveau01",'table')
->where('table.label LIKE :value')
->setParameter("value", "%".$q."%")
->orderBy('table.label');
$datas=$qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
foreach($datas as $data) {
array_push($output,array("id"=>$data->getId(),"text"=>$data->getLabel()));
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function niveau02listAction(Request $request)
{
// S'assurer que c'est un appel ajax

View File

@ -76,7 +76,11 @@ class Niveau01
*/
private $modos;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Item", mappedBy="groups")
*/
protected $items;
/**
* Constructor
*/
@ -86,6 +90,7 @@ class Niveau01
$this->registrations = new \Doctrine\Common\Collections\ArrayCollection();
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
$this->modos = new \Doctrine\Common\Collections\ArrayCollection();
$this->items = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
@ -329,4 +334,38 @@ class Niveau01
{
return $this->modos;
}
/**
* Add item
*
* @param \Cadoles\PortalBundle\Entity\Item $item
*
* @return Niveau01
*/
public function addItem(\Cadoles\PortalBundle\Entity\Item $item)
{
$this->items[] = $item;
return $this;
}
/**
* Remove item
*
* @param \Cadoles\PortalBundle\Entity\Item $item
*/
public function removeItem(\Cadoles\PortalBundle\Entity\Item $item)
{
$this->items->removeElement($item);
}
/**
* Get items
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getItems()
{
return $this->items;
}
}

View File

@ -99,6 +99,10 @@ cadoles_core_ajax_city_list:
path: /ajax/city/list
defaults: { _controller: CadolesCoreBundle:Ajax:citylist }
cadoles_core_ajax_niveau01_list:
path: /ajax/niveau01/list
defaults: { _controller: CadolesCoreBundle:Ajax:niveau01list }
cadoles_core_ajax_niveau02_list:
path: /ajax/niveau02/list
defaults: { _controller: CadolesCoreBundle:Ajax:niveau02list }

View File

@ -37,7 +37,11 @@ class AlertcategoryController extends Controller
if ($form->get('submit')->isClicked() && $form->isValid()) {
$data = $form->getData();
$em = $this->getDoctrine()->getManager();
$idicon = $form->get('idicon')->getData();
$icon=$this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findoneby(["id"=>$idicon]);
$data->setIcon($icon);
// Sauvegarde
$em->persist($data);
$em->flush();
@ -53,6 +57,7 @@ class AlertcategoryController extends Controller
'usesidebar' => true,
$this->labeldata => $data,
'mode' => 'submit',
'icons' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findAll(),
'form' => $form->createView()
]);
}
@ -65,7 +70,10 @@ class AlertcategoryController extends Controller
// Vérifier que cet enregistrement est modifiable
// Création du formulaire
$form = $this->createForm(AlertcategoryType::class,$data,array("mode"=>"update"));
$form = $this->createForm(AlertcategoryType::class,$data,array(
"mode" =>"update",
"idicon" => ($data->getIcon()?$data->getIcon()->getId():null),
));
// Récupération des data du formulaire
$form->handleRequest($request);
@ -77,7 +85,11 @@ class AlertcategoryController extends Controller
if ($form->get('submit')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$data = $form->getData();
$idicon = $form->get('idicon')->getData();
$icon=$this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findoneby(["id"=>$idicon]);
$data->setIcon($icon);
// Sauvegarde
$em->persist($data);
$em->flush();
@ -94,6 +106,7 @@ class AlertcategoryController extends Controller
'usesidebar' => true,
$this->labeldata => $data,
'mode' => 'update',
'icons' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findAll(),
'form' => $form->createView()
]);
}

View File

@ -39,7 +39,7 @@ class ItemController extends Controller
$data = new Item();
// Création du formulaire
$form = $this->createForm(ItemType::class,$data,array("mode"=>"submit"));
$form = $this->createForm(ItemType::class,$data,array("mode"=>"submit","labelniveau01" => $this->GetParameter("labelsniveau01"),));
// Récupération des data du formulaire
$form->handleRequest($request);
@ -85,8 +85,9 @@ class ItemController extends Controller
// Création du formulaire
$form = $this->createForm(ItemType::class,$data,array(
"mode" => "update",
"idicon" => ($data->getIcon()?$data->getIcon()->getId():null),
"mode" => "update",
"idicon" => ($data->getIcon()?$data->getIcon()->getId():null),
"labelniveau01" => $this->GetParameter("labelsniveau01"),
));
// Récupération des data du formulaire

View File

@ -388,6 +388,7 @@ class PagewidgetController extends Controller
$user=$this->getUser();
$roles=($user?$user->getRoles():["ROLE_ANONYME"]);
$groups=($user?$user->getGroups():[]);
$niveau01=($user?$user->getNiveau01():[]);
// Bookmark de l'utilisateur
$bookmarks = array();
@ -438,6 +439,24 @@ class PagewidgetController extends Controller
}
}
// Récupération des items par niveau01
if($niveau01) {
$qb = $em->createQueryBuilder();
$qb->select('item')
->from("CadolesPortalBundle:Item", 'item')
->where(":niveau01 MEMBER OF item.niveau01s")
->setParameter("niveau01",$niveau01);
if($iditemcategory && $itemcategoryfilter) {
$qb->andWhere("item.itemcategory=:itemcategory")
->setParameter("itemcategory",$itemcategoryfilter);
}
$itemsniveau01s=$qb->getQuery()->getResult();
foreach($itemsniveau01s as $itemniveau01) {
if(!$bookmarksitems->contains($itemniveau01) && !$items->contains($itemniveau01)) $items->add($itemniveau01);
}
}
// Trie des items
$itemsordered = $items->getIterator();
$itemsordered->uasort(function ($first, $second) {

View File

@ -31,13 +31,6 @@ class Alertcategory
*/
private $label;
/**
* @var string
*
* @ORM\Column(name="icon", type="text")
*/
private $icon;
/**
* @var integer
*
@ -45,12 +38,19 @@ class Alertcategory
*/
private $color;
/**
* @ORM\ManyToOne(targetEntity="Icon", inversedBy="alertcategorys")
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $icon;
/**
* @ORM\OneToMany(targetEntity="Alert", mappedBy="alertcategory", cascade={"persist"}, orphanRemoval=true)
* @ORM\JoinColumn(name="alerts", referencedColumnName="id")
*/
protected $alerts;
/**
* Constructor
*/
@ -93,30 +93,6 @@ class Alertcategory
return $this->label;
}
/**
* Set icon
*
* @param string $icon
*
* @return Alertcategory
*/
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
/**
* Get icon
*
* @return string
*/
public function getIcon()
{
return $this->icon;
}
/**
* Set color
*
@ -141,6 +117,30 @@ class Alertcategory
return $this->color;
}
/**
* Set icon
*
* @param \Cadoles\PortalBundle\Entity\Icon $icon
*
* @return Alertcategory
*/
public function setIcon(\Cadoles\PortalBundle\Entity\Icon $icon = null)
{
$this->icon = $icon;
return $this;
}
/**
* Get icon
*
* @return \Cadoles\PortalBundle\Entity\Icon
*/
public function getIcon()
{
return $this->icon;
}
/**
* Add alert
*

View File

@ -41,6 +41,14 @@ class Icon
*/
private $items;
/**
* @var ArrayCollection $alertcategorys
* @var Alertcategory
*
* @ORM\OneToMany(targetEntity="Alertcategory", mappedBy="icon", cascade={"persist"}, orphanRemoval=false)
*/
private $alertcategorys;
/**
* @var ArrayCollection $pagewidgets
* @var Pagewidget
@ -67,13 +75,13 @@ class Icon
private $bookmarks;
/**
* Constructor
*/
public function __construct()
{
$this->items = new \Doctrine\Common\Collections\ArrayCollection();
$this->alertcategorys = new \Doctrine\Common\Collections\ArrayCollection();
$this->pagewidgets = new \Doctrine\Common\Collections\ArrayCollection();
$this->widgets = new \Doctrine\Common\Collections\ArrayCollection();
$this->bookmarks = new \Doctrine\Common\Collections\ArrayCollection();
@ -171,6 +179,40 @@ class Icon
return $this->items;
}
/**
* Add alertcategory
*
* @param \Cadoles\PortalBundle\Entity\Alertcategory $alertcategory
*
* @return Icon
*/
public function addAlertcategory(\Cadoles\PortalBundle\Entity\Alertcategory $alertcategory)
{
$this->alertcategorys[] = $alertcategory;
return $this;
}
/**
* Remove alertcategory
*
* @param \Cadoles\PortalBundle\Entity\Alertcategory $alertcategory
*/
public function removeAlertcategory(\Cadoles\PortalBundle\Entity\Alertcategory $alertcategory)
{
$this->alertcategorys->removeElement($alertcategory);
}
/**
* Get alertcategorys
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAlertcategorys()
{
return $this->alertcategorys;
}
/**
* Add pagewidget
*

View File

@ -123,7 +123,14 @@ class Item
*/
protected $groups;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\CoreBundle\Entity\Niveau01", inversedBy="items", cascade={"persist"})
* @ORM\JoinTable(name="itemniveau01",
* joinColumns={@ORM\JoinColumn(name="item", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="niveau01", referencedColumnName="id")}
* )
*/
protected $niveau01s;
/**
@ -133,6 +140,7 @@ class Item
{
$this->bookmarks = new \Doctrine\Common\Collections\ArrayCollection();
$this->groups = new \Doctrine\Common\Collections\ArrayCollection();
$this->niveau01s = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
@ -500,4 +508,38 @@ class Item
{
return $this->groups;
}
/**
* Add niveau01
*
* @param \Cadoles\CoreBundle\Entity\Niveau01 $niveau01
*
* @return Item
*/
public function addNiveau01(\Cadoles\CoreBundle\Entity\Niveau01 $niveau01)
{
$this->niveau01s[] = $niveau01;
return $this;
}
/**
* Remove niveau01
*
* @param \Cadoles\CoreBundle\Entity\Niveau01 $niveau01
*/
public function removeNiveau01(\Cadoles\CoreBundle\Entity\Niveau01 $niveau01)
{
$this->niveau01s->removeElement($niveau01);
}
/**
* Get niveau01s
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getNiveau01s()
{
return $this->niveau01s;
}
}

View File

@ -37,11 +37,7 @@ class AlertcategoryType extends AbstractType
)
);
$builder->add('icon',
IconChoiceType::class, array(
"label" => 'Icône'
)
);
$builder->add('idicon', HiddenType::class,['mapped'=> false,'data' => $options["idicon"]]);
$builder->add('color', TextType::class, [
'label' => "Couleur",
@ -54,7 +50,8 @@ class AlertcategoryType extends AbstractType
{
$resolver->setDefaults(array(
'data_class' => 'Cadoles\PortalBundle\Entity\Alertcategory',
'mode' => "string"
'mode' => "string",
'idicon' => "string",
));
}
}

View File

@ -68,6 +68,24 @@ class ItemType extends AbstractType
"disabled" => ($options["mode"]=="delete"?true:false),
])
->add('niveau01s', Select2EntityType::class, [
'label' => 'Visible pour les '.$options["labelniveau01"],
'class' => 'CadolesCoreBundle:Niveau01',
'text_property' => 'label',
'multiple' => true,
'remote_route' => 'cadoles_core_ajax_niveau01_list',
'primary_key' => 'id',
'text_property' => 'label',
'minimum_input_length' => 0,
'page_limit' => 100,
'allow_clear' => true,
'delay' => 250,
'cache' => false,
'cache_timeout' => 60000,
'language' => 'fr',
'placeholder' => 'Selectionner des '.$options["labelniveau01"],
])
->add('groups', Select2EntityType::class, [
'label' => 'Visible pour les Groupes',
'class' => 'CadolesCoreBundle:Group',
@ -83,7 +101,7 @@ class ItemType extends AbstractType
'cache' => false,
'cache_timeout' => 60000,
'language' => 'fr',
'placeholder' => 'Selectionner un groupe',
'placeholder' => 'Selectionner des groupes',
])
->add('color', TextType::class, [
@ -117,6 +135,7 @@ class ItemType extends AbstractType
'data_class' => 'Cadoles\PortalBundle\Entity\Item',
'mode' => "string",
'idicon' => "string",
'labelniveau01' => "string",
]);
}
}

View File

@ -27,11 +27,15 @@
"
data-alert-category-id="{{ alert.alertcategory.id }}"
data-alert-id="{{ alert.id }}"
style="background: {{ "#"~alert.alertcategory.color }};"
style="background: {{ alert.alertcategory.color ? '#'~alert.alertcategory.color : '#'~color['main'] }};"
>
<div class="panel-heading" role="tab">
<a href="{{ path('cadoles_portal_config_alert_update', { id: alert.id }) }}" class="panel-heading-icon pull-left">
<i class="fa fa-fw {{ alert.alertcategory.icon }}"></i>
{% if alert.alertcategory.icon %}
<img height="25" src="/{{ alias }}/{{ alert.alertcategory.icon.label }}">
{% else %}
<img height="25" src="/{{ alias }}/uploads/icon/icon_megaphone.png">
{% endif %}
</a>
<a href="{{ path('cadoles_portal_config_alert_update', { id: alert.id }) }}">
@ -69,8 +73,13 @@
<i class="fa fa-edit"></i>
</a>
<a href="#" class="list-group-item active category-alert-item" data-category="{{ alertcategory.id }}" style="border-left: 15px solid {{ "#"~alertcategory.color }}; position: inherit;">
<i class="fa fa-fw {{ alertcategory.icon }}"></i>
<a href="#" class="list-group-item active category-alert-item" data-category="{{ alertcategory.id }}" style="border-left: 15px solid {{ alertcategory.color ? '#'~alertcategory.color : '#'~color['main'] }}; position: inherit;">
{% if alertcategory.icon %}
<img height="25" src="/{{ alias }}/{{ alertcategory.icon.label }}">
{% else %}
<img height="25" src="/{{ alias }}/uploads/icon/icon_megaphone.png">
{% endif %}
{{ alertcategory.label }}
</a>
</div>

View File

@ -47,29 +47,64 @@
<div class="panel-body">
{{ form_row(form.label) }}
{{ form_row(form.icon) }}
{{ form_row(form.color) }}
<div id="diviconsel" class="col-md-12 text-left" style="height:140px; padding:20px; text-align:center; background-color: {{ alertcategory.color ? "#"~alertcategory.color : '#'~color['main'] }};">
{% if alertcategory.icon %}
<img src="/{{ alias }}/{{ alertcategory.icon.label }}" height="100" />
{% endif %}
</div>
<div class="col-md-12" style="text-align:center;padding:0px">
{{ form_row(form.idicon) }}
<a class="btn btn-success" data-toggle="modal" data-target="#selicon" title='Ajouter' style="width:100%">Selectionner un Icône</a>
<a class="btn btn-danger" onClick="delIcon()" title='Détacher' style="width:100%">Détacher l'Icône</a>
</div>
</div>
</div>
<div id="selicon" 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">SELECTIONNER UN ICONE</h4>
</div>
<div class="modal-body">
<div class="form-group row clearfix">
<div class="col-md-12" style="margin-bottom:15px">
<a onclick="$('#selicon').modal('hide');" class="btn btn-default">Annuler</a>
</div>
<div class="col-md-12">
{% for icon in icons %}
<a href="#" onClick="selIcon({{ icon.id }})">
<img id="icon-{{ icon.id }}" class="grid-item-img" height="40" src="/{{ alias }}/{{ icon.label }}" style="padding:2px">
</a>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
{{ form_end(form) }}
{% endblock %}
{% block localjavascript %}
function iformat(icon) {
var originalOption = icon.element;
return $('<span><i class="fa ' + icon.text + '"></i> ' + icon.text + '</span>');
function selIcon(idicon) {
$("#alertcategory_idicon").val(idicon);
$("#diviconsel img").remove();
$("#icon-"+idicon).clone().appendTo($("#diviconsel"));
$("#diviconsel img").attr("height","100px");
$('#selicon').modal('hide');
}
$('.select2-icon').select2({
width: "100%",
formatSelection: iformat,
templateResult: iformat,
formatResult: iformat,
allowHtml: true,
escapeMarkup: function(m) {
return m;
}
});
function delIcon() {
$("#diviconsel img").remove();
$("#item_idicon").val(null);
}
{% endblock %}

View File

@ -56,10 +56,11 @@
{{ form_row(form.target) }}
{{ form_row(form.itemcategory) }}
{{ form_row(form.roles) }}
{{ form_row(form.niveau01s) }}
{{ form_row(form.groups) }}
{{ 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 : '#000000' }};">
<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'] }};">
{% if item.icon %}
<img src="/{{ alias }}/{{ item.icon.label }}" height="100" />
{% endif %}

View File

@ -27,8 +27,8 @@
<div class="grid clearfix">
{% for item in itemcategory.items %}
<div class="grid-item {% for group in item.groups %}{{ ' group-' ~ group.id }}{% endfor %}{% for role in item.roles %}{{ ' role-' ~ role }}{% endfor %}" data-item-id="{{ item.id }}">
<div class="grid-item-content" style="background-color: {{ item.color ? '#'~item.color : '#000' }};">
<div class="grid-item {% for group in item.groups %}{{ ' group-' ~ group.id }}{% endfor %}{% for role in item.roles %}{{ ' group-' ~ role }}{% endfor %}" data-item-id="{{ item.id }}">
<div class="grid-item-content" style="background-color: {{ item.color ? '#'~item.color : '#'~color['main'] }};">
<span class="item-drag"><i class="fa fa-arrows"></i></span>
<a class="item-link" href="{{ path('cadoles_portal_config_item_update', {"id": item.id}) }}">
<div class="grid-item-logo">

View File

@ -25,8 +25,13 @@
{%endif%}
{% endmacro %}
{% macro mycolormain() %}
{% set color = app.session.get('color') %}{% set colormain = color['main'] %}{{ colormain }}
{% endmacro %}`
{% macro mystylewidget(entity) %}
{% set color = app.session.get('color') %}
{% set colormain = color['main'] %}
{% set colorheaderback = entity.colorheaderback %}
{% if colorheaderback is null %}

View File

@ -5,6 +5,7 @@
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
{% set colormain = constants.mycolormain() %}
{% set stylewidget = constants.mystylewidget(entity) %}
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
@ -32,9 +33,14 @@
<div class="widgetbody" style="{{ stylewidgetbody }}">
{% for alert in alerts %}
<div class="panel list-item" style="background: #{{ alert.alertcategory.color }};">
<div class="panel list-item" style="background: {{ alert.alertcategory.color ? '#'~alert.alertcategory.color : '#'~colormain }};">
<div class="panel-heading" role="tab">
<i class="fa fa-fw {{ alert.alertcategory.icon }}"></i>
{% if alert.alertcategory.icon %}
<img height="25" src="/{{ alias }}/{{ alert.alertcategory.icon.label }}">
{% else %}
<img height="25" src="/{{ alias }}/uploads/icon/icon_megaphone.png">
{% endif %}
{{ alert.title }}
</div>

View File

@ -5,6 +5,7 @@
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
{% set colormain = constants.mycolormain() %}
{% set stylewidget = constants.mystylewidget(entity) %}
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
@ -60,7 +61,7 @@
<div class="grid-gutter-sizer"></div>
{% for bookmark in bookmarks %}
<div class="grid-item {{ stylegrid }}">
<div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : '#000' }};">
<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>
{% if bookmark.target == 'frame' %}
@ -133,7 +134,7 @@
{% endif %}
<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 : '#000' }};">
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
{% if item.content %}
<a style="cursor:pointer" class="item-preview"><i style="color: #FFF" class="fa fa-info" title="Informations sur ce service"></i></a>
{% endif %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -47,6 +47,15 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f
(1570, 1500, 1570, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1580, 1500, 1580, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(2500, NULL, 2500, 'MODULES', NULL, 'fa-cubes', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(2510, 2500, 2510, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'page_activate'),
(2520, 2500, 2520, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'item_activate'),
(2530, 2500, 2530, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'alert_activate'),
(2540, 2500, 2540, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'calendar_activate'),
(2550, 2500, 2550, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'blog_activate'),
(2560, 2500, 2560, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'flux_activate'),
(2570, 2500, 2570, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'notice_activate'),
(2580, 2500, 2580, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(7000, NULL, 7000, 'CRON', NULL, 'fa-bolt', 'ROLE_ADMIN', 'cron_activate'),
(7010, 7000, 7010, 'Jobs', 'cadoles_cron_config', 'fa-bullseye', 'ROLE_ADMIN', 'cron_activate'),

View File

@ -26,9 +26,22 @@ parameters:
%end if
# Activation module
portal_module_activate: false
cron_activate: true
%if %%getVar("ninegate_activate_portal", 'non') == "oui"
portal_activate: true
%else
portal_activate: false
%if %%getVar("ninegate_activate_item", 'non') == "oui"
portal_module_activate: true
portal_item_activate: true
%else
portal_item_activate: false
%end if
%end if
# Information de base de l'annuaire
ldap_host: %%adresse_ip_ldap
ldap_port: %%ldap_port
@ -68,12 +81,16 @@ parameters:
# Si masteridentity est à SQL = où sont synchronisées les datas dans l'annuaire
%if %%getVar("ninegate_syncldap", 'non') == "oui"
ldap_sync: true
%else
ldap_sync: false
%end if
%if %%getVar("ninegate_test_conf_ldap", 'non') == "oui"
ldap_baseuser: ou=users,ou=%%ninegate_organization,o=gouv,c=fr
ldap_baseniveau01: ou=%%ninegate_niveau01branche,ou=%%ninegate_organization,o=gouv,c=fr
ldap_baseniveau02: ou=%%ninegate_niveau02branche,ou=%%ninegate_organization,o=gouv,c=fr
ldap_basegroup: ou=groups,ou=%%ninegate_organization,o=gouv,c=fr
%else
ldap_sync: false
ldap_baseuser:
ldap_baseniveau01:
ldap_baseniveau02: