Merge branch 'master' into dist/envole/6/master

This commit is contained in:
Arnaud Fornerot 2019-12-18 14:54:25 +01:00
commit 5b14604d9c
18 changed files with 434 additions and 10 deletions

View File

@ -31,6 +31,7 @@
<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_etherhome" type="oui/non" description="Activer Etherhome" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_etherhome" type="oui/non" description="Activer Etherhome" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_fluxbb" type="oui/non" description="Activer Fluxbb" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_gepi" type="oui/non" description="Activer GEPI" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_gepi" type="oui/non" description="Activer GEPI" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_grr" type="oui/non" description="Activer Grr" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_grr" type="oui/non" description="Activer Grr" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_kanboard" type="oui/non" description="Activer Kanboard" hidden='True' exists='False'><value>non</value></variable> <variable name="activer_kanboard" type="oui/non" description="Activer Kanboard" hidden='True' exists='False'><value>non</value></variable>
@ -173,6 +174,12 @@
</variable> </variable>
<variable type='string' name='ninegate_widetherhome_url' description='URL complète de votre Etherhome' mandatory='True' /> <variable type='string' name='ninegate_widetherhome_url' description='URL complète de votre Etherhome' mandatory='True' />
<!-- FLUXBB -->
<variable type="oui/non" name='ninegate_activate_widfluxbb' description='Activer Fluxbb' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widfluxbb_url' description='URL complète de votre Fluxbb' mandatory='True' />
<!-- GEPI --> <!-- GEPI -->
<variable type="oui/non" name='ninegate_activate_widgepi' description='Activer GEPI' mandatory='True'> <variable type="oui/non" name='ninegate_activate_widgepi' description='Activer GEPI' mandatory='True'>
<value>non</value> <value>non</value>
@ -314,6 +321,7 @@
<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_widetherhome">Paramètres associés à Etherhome</separator> <separator name="ninegate_activate_widetherhome">Paramètres associés à Etherhome</separator>
<separator name="ninegate_activate_widfluxbb">Paramètres associés à Fluxbb</separator>
<separator name="ninegate_activate_widgepi">Paramètres associés à GEPI</separator> <separator name="ninegate_activate_widgepi">Paramètres associés à GEPI</separator>
<separator name="ninegate_activate_widgrr">Paramètres associés à Grr</separator> <separator name="ninegate_activate_widgrr">Paramètres associés à Grr</separator>
<separator name="ninegate_activate_widkanboard">Paramètres associés à Kanboard</separator> <separator name="ninegate_activate_widkanboard">Paramètres associés à Kanboard</separator>
@ -471,6 +479,7 @@
<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_widetherhome</target> <target type='variable'>ninegate_activate_widetherhome</target>
<target type='variable'>ninegate_activate_widfluxbb</target>
<target type='variable'>ninegate_activate_widgepi</target> <target type='variable'>ninegate_activate_widgepi</target>
<target type='variable'>ninegate_activate_widgrr</target> <target type='variable'>ninegate_activate_widgrr</target>
<target type='variable'>ninegate_activate_widkanboard</target> <target type='variable'>ninegate_activate_widkanboard</target>
@ -674,6 +683,30 @@
<!-- AFFICHAGE EN FONCTION DU WIDGET FLUXBB -->
<fill name='calc_multi_condition' target='ninegate_activate_widfluxbb'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</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_widfluxbb'>
<param>non</param>
<target type='variable'>ninegate_widfluxbb_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widfluxbb_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</param>
<param name='match'>/fluxbb</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GEPI --> <!-- AFFICHAGE EN FONCTION DU WIDGET GEPI -->
<fill name='calc_multi_condition' target='ninegate_activate_widgepi'> <fill name='calc_multi_condition' target='ninegate_activate_widgepi'>
<param>oui</param> <param>oui</param>

View File

@ -108,7 +108,6 @@ class OnlyCommand extends Command
$this->writeln($this->only_url); $this->writeln($this->only_url);
$this->writeln($this->only_host); $this->writeln($this->only_host);
$this->writeln($this->only_user); $this->writeln($this->only_user);
$this->writeln($this->only_password);
if($this->only_sync) { if($this->only_sync) {
// Only Office est-il dans le domaine // Only Office est-il dans le domaine

View File

@ -8,7 +8,7 @@ INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'Interne', 'SIREN'); (-100, 'Interne', 'SIREN');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}XeJxoO2l4dkHFX78WQ1Ik30sjLt3kffh (-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}Kvz21GjhkryG4l7EKniMJzVfwDufa+eI
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple'); ', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');

View File

@ -501,6 +501,13 @@ class GroupController extends Controller
if($group->getFgAll()||$group->getFgtemplate()) if($group->getFgAll()||$group->getFgtemplate())
throw $this->createNotFoundException('Permission denied'); throw $this->createNotFoundException('Permission denied');
$usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
if($usergroup) {
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
$key = Uuid::uuid4(); $key = Uuid::uuid4();
$usergroup=new Usergroup; $usergroup=new Usergroup;
$user=$em->getRepository("CadolesCoreBundle:User")->find($userid); $user=$em->getRepository("CadolesCoreBundle:User")->find($userid);
@ -1025,7 +1032,7 @@ class GroupController extends Controller
if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label')); if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux // On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ @a-zA-Z0-9._-]~', '', $data->getLabel()); $string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel()) if($string!=$data->getLabel())
{ {
$form->addError(new FormError('Caractères interdit dans ce label')); $form->addError(new FormError('Caractères interdit dans ce label'));

View File

@ -284,7 +284,7 @@ class Niveau01Controller extends Controller
if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label')); if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux // On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ @a-zA-Z0-9._-]~', '', $data->getLabel()); $string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel()) if($string!=$data->getLabel())
{ {
$form->addError(new FormError('Caractères interdit dans ce label')); $form->addError(new FormError('Caractères interdit dans ce label'));

View File

@ -269,7 +269,7 @@ class Niveau02Controller extends Controller
if($tmp) $form->addError(new FormError('Un niveau de rang 01 utilise déjà ce label')); if($tmp) $form->addError(new FormError('Un niveau de rang 01 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux // On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ @a-zA-Z0-9._-]~', '', $data->getLabel()); $string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel()) if($string!=$data->getLabel())
{ {
$form->addError(new FormError('Caractères interdit dans ce label')); $form->addError(new FormError('Caractères interdit dans ce label'));

View File

@ -46,7 +46,7 @@
{% if form.label is defined %} {% if form.label is defined %}
{{ form_row(form.label) }} {{ form_row(form.label) }}
<div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'> <div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'>
Caractères interdits = accent, caractères spéciaux sauf @ . - _<br> Caractères interdits = caractères spéciaux sauf ' @ . - _<br>
</div> </div>
{% if form.fgassoc is defined %} {% if form.fgassoc is defined %}

View File

@ -41,7 +41,7 @@
<div class="panel-body"> <div class="panel-body">
{{ form_row(form.label) }} {{ form_row(form.label) }}
<div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'> <div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'>
Caractères interdits = accent, caractères spéciaux sauf @ . - _<br> Caractères interdits = caractères spéciaux sauf ' @ . - _<br>
</div> </div>
{{ form_row(form.siren) }} {{ form_row(form.siren) }}

View File

@ -42,7 +42,7 @@
{{ form_row(form.niveau01) }} {{ form_row(form.niveau01) }}
{{ form_row(form.label) }} {{ form_row(form.label) }}
<div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'> <div class='alert alert-info' style='font-size: 80%;padding: 5px;margin-top: -10px;'>
Caractères interdits = accent, caractères spéciaux sauf @ . - _<br> Caractères interdits = caractères spéciaux sauf ' @ . - _<br>
</div> </div>
{{ form_row(form.siret) }} {{ form_row(form.siret) }}

View File

@ -43,6 +43,7 @@ class InitDataCommand extends ContainerAwareCommand
$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_widetherhome = $this->getContainer()->getParameter('activate_widetherhome'); $activate_widetherhome = $this->getContainer()->getParameter('activate_widetherhome');
$activate_widfluxbb = $this->getContainer()->getParameter('activate_widfluxbb');
$activate_widgepi = $this->getContainer()->getParameter('activate_widgepi'); $activate_widgepi = $this->getContainer()->getParameter('activate_widgepi');
$activate_widgrr = $this->getContainer()->getParameter('activate_widgrr'); $activate_widgrr = $this->getContainer()->getParameter('activate_widgrr');
$activate_widkanboard = $this->getContainer()->getParameter('activate_widkanboard'); $activate_widkanboard = $this->getContainer()->getParameter('activate_widkanboard');
@ -50,6 +51,7 @@ class InitDataCommand extends ContainerAwareCommand
$activate_widmindmaps = $this->getContainer()->getParameter('activate_widmindmaps'); $activate_widmindmaps = $this->getContainer()->getParameter('activate_widmindmaps');
$activate_widmoodle = $this->getContainer()->getParameter('activate_widmoodle'); $activate_widmoodle = $this->getContainer()->getParameter('activate_widmoodle');
$activate_widnextcloud = $this->getContainer()->getParameter('activate_widnextcloud'); $activate_widnextcloud = $this->getContainer()->getParameter('activate_widnextcloud');
$activate_widonlyoffice = $this->getContainer()->getParameter('activate_widonlyoffice');
$activate_widopensondage = $this->getContainer()->getParameter('activate_widopensondage'); $activate_widopensondage = $this->getContainer()->getParameter('activate_widopensondage');
$activate_widphpldapadmin = $this->getContainer()->getParameter('activate_widphpldapadmin'); $activate_widphpldapadmin = $this->getContainer()->getParameter('activate_widphpldapadmin');
$activate_widpiwik = $this->getContainer()->getParameter('activate_widpiwik'); $activate_widpiwik = $this->getContainer()->getParameter('activate_widpiwik');
@ -57,6 +59,8 @@ class InitDataCommand extends ContainerAwareCommand
$activate_widsacoche = $this->getContainer()->getParameter('activate_widsacoche'); $activate_widsacoche = $this->getContainer()->getParameter('activate_widsacoche');
$activate_widwordpress = $this->getContainer()->getParameter('activate_widwordpress'); $activate_widwordpress = $this->getContainer()->getParameter('activate_widwordpress');
$activate_websocket = $this->getContainer()->getParameter('websocket_activate'); $activate_websocket = $this->getContainer()->getParameter('websocket_activate');
$widonlyoffice_sync = $this->getContainer()->getParameter('widonlyoffice_sync');
$output->writeln('PORTAL = Default Data'); $output->writeln('PORTAL = Default Data');
@ -354,6 +358,28 @@ class InitDataCommand extends ContainerAwareCommand
$em->persist($entityItem); $em->persist($entityItem);
} }
// Item fluxbb
if($activate_widfluxbb) {
$widfluxbb_url =$this->getContainer()->getParameter('widfluxbb_url');
$entityItem = $em->getRepository('CadolesPortalBundle:Item')->find(-397);
if(!$entityItem) {
$entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_fluxbb.png"]);
$entityItem = new Item();
$entityItem->setId(-397);
$entityItem->setRowOrder(0);
$entityItem->setTitle('Fluxbb');
$entityItem->SetSubtitle("Forum");
$entityItem->setIcon($entityicon);
$entityItem->setTarget("_blank");
$entityItem->setItemcategory($entityItemcategoryapp);
$entityItem->setEssential(true);
$entityItem->addGroup($groupall);
}
$entityItem->setUrl($widfluxbb_url);
$em->persist($entityItem);
}
// Item gepi // Item gepi
if($activate_widgepi) { if($activate_widgepi) {
$widgepi_url =$this->getContainer()->getParameter('widgepi_url'); $widgepi_url =$this->getContainer()->getParameter('widgepi_url');
@ -507,7 +533,29 @@ class InitDataCommand extends ContainerAwareCommand
$entityItem->setUrl($widnextcloud_url); $entityItem->setUrl($widnextcloud_url);
$em->persist($entityItem); $em->persist($entityItem);
} }
// Item Onlyoffice
if($activate_widonlyoffice) {
$widonlyoffice_url =$this->getContainer()->getParameter('widonlyoffice_url');
$entityItem = $em->getRepository('CadolesPortalBundle:Item')->find(-1000);
if(!$entityItem) {
$entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_onlyoffice.png"]);
$entityItem = new Item();
$entityItem->setId(-1000);
$entityItem->setRowOrder(0);
$entityItem->setTitle('Onlyoffice');
$entityItem->SetSubtitle("Application Bureautique");
$entityItem->setIcon($entityicon);
$entityItem->setTarget("_blank");
$entityItem->setItemcategory($entityItemcategoryapp);
$entityItem->setEssential(true);
$entityItem->addGroup($groupall);
}
$entityItem->setUrl($widonlyoffice_url);
$em->persist($entityItem);
}
// Item Opensondage // Item Opensondage
if($activate_widopensondage) { if($activate_widopensondage) {
$widopensondage_url =$this->getContainer()->getParameter('widopensondage_url'); $widopensondage_url =$this->getContainer()->getParameter('widopensondage_url');
@ -1036,6 +1084,30 @@ class InitDataCommand extends ContainerAwareCommand
$entityWidget->setParameter($parameter); $entityWidget->setParameter($parameter);
$em->persist($entityWidget); $em->persist($entityWidget);
// Onlyoffice document
$entityWidget = $em->getRepository('CadolesPortalBundle:Widget')->find(-1810);
if($widonlyoffice_sync) {
if(!$entityWidget) $entityWidget = new Widget();
$entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_onlyoffice.png"]);
$entityWidget->setId(-1810);
$entityWidget->setRoworder(2);
$entityWidget->setIcon($entityicon);
$entityWidget->setName('Documents Onlyoffice');
$entityWidget->setDescription("Les documents associés à votre groupe");
$entityWidget->setRouteview("cadoles_portal_config_panelwidget_view_onlydoc");
$entityWidget->setHeight("630");
$entityWidget->setAutoajust(true);
$entityWidget->setBorder(false);
$entityWidget->setOpened(true);
$entityWidget->setAccess(["config","group"]);
$parameter = json_decode('{"fields": []}');
$entityWidget->setParameter($parameter);
$em->persist($entityWidget);
}
elseif($entityWidget) {
$em->remove($entityWidget);
}
// Widget Séparateur // Widget Séparateur
$entityWidget = $em->getRepository('CadolesPortalBundle:Widget')->find(-1600); $entityWidget = $em->getRepository('CadolesPortalBundle:Widget')->find(-1600);
if(!$entityWidget) $entityWidget = new Widget(); if(!$entityWidget) $entityWidget = new Widget();

View File

@ -2107,7 +2107,44 @@ class PagewidgetController extends Controller
'nbarticle' => $nbarticle, 'nbarticle' => $nbarticle,
]); ]);
} }
public function viewOnlydocAction(Request $request,$id,$access="config") {
$usage=$request->query->get('usage');
$group=$request->query->get('group');
$user=$this->getUser();
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository($this->labelentity)->find($id);
if (!$entity) throw $this->createNotFoundException('Unable to find entity.');
// Permissions
if($access=="config") {
$canupdate = true;
}
else {
// On s'assure que l'utilisateur à la permission de voir
$page=$entity->getPage();
$em->getRepository("CadolesPortalBundle:Page")->getPermission($this->getUser(),$page,$cansee,$canupdate);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
}
$onlyservice = $this->container->get('cadoles.portal.service.only');
$files=$onlyservice->getDocument($group, $folders, $firstfolder, $tasks);
$idonly=$em->getRepository("CadolesCoreBundle:Group")->find($group)->getIdOnlyoffice();
// Render
return $this->render($this->labelentity.':viewonlydoc.html.twig', [
'entity' => $entity,
'canadd' => $cansee,
'canupdate' => $cansee,
'firstfolder' => $firstfolder,
'folders' => $folders,
'tasks' => $tasks,
'urlonly' => $this->getParameter("widonlyoffice_url")."/products/projects/projects.aspx?prjID=".$idonly,
'files' => $files,
'access' => $access,
]);
}
} }

View File

@ -795,6 +795,10 @@ cadoles_portal_config_panelwidget_view_groupmessage:
path: /config/pagewidget/view/groupmessage/{id} path: /config/pagewidget/view/groupmessage/{id}
defaults: { _controller: CadolesPortalBundle:Pagewidget:viewgroupmessage, access: config } defaults: { _controller: CadolesPortalBundle:Pagewidget:viewgroupmessage, access: config }
cadoles_portal_config_panelwidget_view_onlydoc:
path: /config/pagewidget/view/onlydoc/{id}
defaults: { _controller: CadolesPortalBundle:Pagewidget:viewonlydoc, access: config }
#-- Access user #-- Access user
cadoles_portal_user_pagewidget_widget_sumbit: cadoles_portal_user_pagewidget_widget_sumbit:
path: /user/pagewidget/submit/{idpage}/{idwidgettype} path: /user/pagewidget/submit/{idpage}/{idwidgettype}
@ -904,3 +908,7 @@ cadoles_portal_user_panelwidget_view_groupmessage:
path: /pagewidget/view/groupmessage/{id} path: /pagewidget/view/groupmessage/{id}
defaults: { _controller: CadolesPortalBundle:Pagewidget:viewgroupmessage, access: user } defaults: { _controller: CadolesPortalBundle:Pagewidget:viewgroupmessage, access: user }
cadoles_portal_user_panelwidget_view_onlydoc:
path: /pagewidget/view/onlydoc/{id}
defaults: { _controller: CadolesPortalBundle:Pagewidget:viewonlydoc, access: user }

View File

@ -4,3 +4,8 @@ services:
arguments: ['@service_container'] arguments: ['@service_container']
tags: tags:
- { name: form.type } - { name: form.type }
cadoles.portal.service.only:
public: true
class: Cadoles\PortalBundle\Service\onlyService
arguments: ['@service_container','@doctrine.orm.entity_manager']

View File

@ -0,0 +1,117 @@
{% set theme = app.session.get('theme') %}
{% if theme is not empty %}
{{ include('@Theme/'~theme~'/function.html.twig') }}
{% endif %}
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
{% set stylewidget = constants.mystylewidget(entity) %}
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
{% set stylewidgetbodyreverse = constants.mystylewidgetbodyreverse(entity) %}
{% set color = app.session.get('color') %}
{% set colorbodyback = entity.colorbodyback %}
{% if colorbodyback is null %}
{% set colorbodyback = color['main'] %}
{% endif %}
{% set colorbodyfont = entity.colorbodyfont %}
{% if colorbodyfont is null %}
{% set colorbodyfont = color['fontcolorhover'] %}
{% endif %}
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-file" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
{% if canupdate or canadd %}
<div class="widgetmenu">
{% if canupdate %}
<i class="fa fa-trash fa-fw" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
<i class="fa fa-file fa-fw" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
{% endif %}
{% if canadd %}
<a style="{{ stylewidgetmenu }}" href="{{urlonly}}" target="_blank" title='Plus de fonctionnalités'><i class="fa fa-plus fa-fw"></i></a>
{% endif %}
</div>
{% endif %}
<div class="widgetheader" style="{{ stylewidgetheader }}">
{% if entity.icon %}
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
{% else %}
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
{% endif %}
<span class="title">{{ entity.name }}</span>
</div>
{% if files|length >= 1 or canupdate %}
<div class="widgetbody" style="{{ stylewidgetbody }}">
<div class="grid clearfix">
<div class="grid-sizer grid-small"></div>
<div class="grid-gutter-sizer"></div>
{% for file in files %}
<div class="grid-item grid-small">
<div class="grid-item-content">
<a href="{{ file.webUrl }}" target="_blank">
<div class="item-link clearfix">
<div class="grid-item-logo">
{% if file.fileExst ==".png" or file.fileExst ==".jpg" or file.fileExst ==".jpeg" or file.fileExst ==".svg" or file.fileExst ==".gif"%}
<img class="grid-item-img" height="110" src="{{file.viewUrl}}">
{% else %}
<img class="grid-item-img" height="110" src="/{{ alias }}/bundles/cadolescore/images/files/{{ file.fileExst | replace({".":""})}}.png">
{% endif %}
</div>
<div class="grid-item-title">
<h2 style="color:#{{colorbodyfont}}">{{ file.title }}</h2>
</div>
</div>
</a>
</div>
</div>
{% endfor %}
{% if canadd %}
<div class="grid-item grid-small">
<div class="grid-item-content">
<a href="{{urlonly}}" target="_blank" title='Plus de fonctionnalités'>
<div class="item-link clearfix">
<div class="grid-item-logo">
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_add.png">
</div>
<div class="grid-item-title">
<h2>Plus</h2>
</div>
</div>
</a>
</div>
</div>
{% endif %}
</div>
{% if not tasks is empty %}
<div style='width:90%; margin:auto;'>
<h4 style='margin-bottom:5px;border-bottom:1px solid;'>Tâches</h4>
{% for task in tasks %}
<li>{{ task.title }}</li>
{% if not task.subtasks is empty %}
<ul>
{% for subtask in task.subtasks %}
<li>{{ subtask.title }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
{% endif %}
</div>

View File

@ -0,0 +1,139 @@
<?php
namespace Cadoles\PortalBundle\Service;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\ORM\EntityManager;
class onlyService
{
protected $container;
protected $em;
protected $only_activate = false;
protected $only_url;
protected $only_host;
protected $only_user;
protected $only_password;
protected $debug = false;
protected $headers = [];
public function __construct($container, EntityManager $em)
{
$this->container = $container;
$this->em = $em;
$this->only_activate = $this->container->getParameter('activate_widonlyoffice');
if($this->only_activate) {
$this->only_activate=$this->container->getParameter('widonlyoffice_sync');
if($this->only_activate) {
$this->only_url = $this->container->getParameter('widonlyoffice_url')."/api/2.0/";
$this->only_user = $this->container->getParameter('widonlyoffice_user');
$this->only_password = $this->container->getParameter('widonlyoffice_password');
$this->only_host = str_replace("https://","",str_replace("http://","",$this->container->getParameter("widonlyoffice_url")));
}
}
}
public function getDocument($idgroup,&$folders,&$firstfolder,&$tasks) {
$files=[];
$folders=[];
$tasks=[];
$group=$this->em->getRepository("CadolesCoreBundle:Group")->find($idgroup);
if($group&&$group->getIdonlyoffice()) {
if($this->only_activate) {
if($this->authOnly()) {
$response = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice(),$this->headers);
if(!$this->koresponse($response)) {
$firstfolder=$response->body->response->projectFolder;;
$response = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice().'/files',$this->headers);
if(!$this->koresponse($response)) {
foreach($response->body->response->files as $fileonly) {
array_push($files,$fileonly);
}
foreach($response->body->response->folders as $folderonly) {
$folders[$folderonly->id]=$folderonly;
$subfolder=$this->scanfolder($folderonly->id,$folders,$this->headers);
foreach($subfolder as $file) {
array_push($files,$file);
}
}
$response = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice().'/task/open',$this->headers);
error_log($this->only_url.'/project/'.$group->getIdonlyoffice().'/tasks/open');
if(!$this->koresponse($response)) $tasks=$response->body->response;
}
}
}
}
}
return $files;
}
private function authOnly() {
// Only Office est-il dans le domaine
if(stripos($this->only_url,"/")===0)
$this->only_url="https://".$this->container->getParameter("weburl").$this->only_url;
$indomaine = (stripos($this->only_url,$this->container->getParameter("weburl"))!==false);
// Si hors domaine on utilise le proxy si proxy il y a
if(!$indomaine) {
$PROXYactivate = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYactivate")->getValue();
if($PROXYactivate) {
$PROXYserver = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYserver")->getValue();
$PROXYport = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYport")->getValue();
\Unirest\Request::proxy($PROXYserver, $PROXYport, CURLPROXY_HTTP, true);
}
}
\Unirest\Request::verifyPeer(false);
\Unirest\Request::verifyHost(false);
\Unirest\Request::timeout(5);
$this->headers = ['Host' => $this->only_host, 'Accept' => 'application/json','Content-Type'=>'application/json','Retry-After'=>'5'];
$query = array('userName' => $this->only_user, 'password' => $this->only_password);
$body = \Unirest\Request\Body::json($query);
$response = \Unirest\Request::post($this->only_url.'/authentication',$this->headers,$body);
if($this->koresponse($response)) return false;
$token=$response->body->response->token;
$this->headers["Authorization"]=$token;
return true;
}
private function koresponse($response) {
if($response->code>=Response::HTTP_BAD_REQUEST) {
$this->mydebug("ERREUR ".$response->code);
if(property_exists($response,"body") && property_exists($response->body,"error")) $this->mydebug("ERREUR ".$response->body->error->message);;
return true;
}
return false;
}
private function mydebug($texte) {
if($this->debug) error_log($texte);
}
private function scanfolder($folderid,&$folders,$headers) {
$files=[];
$response = \Unirest\Request::get($this->only_url.'/files/'.$folderid,$headers);
if($this->koresponse($response)) return 0;
foreach($response->body->response->files as $fileonly) {
array_push($files,$fileonly);
}
foreach($response->body->response->folders as $folderonly) {
$folders['"'.$folderonly->id.'"']=$folderonly;
$subfolder=$this->scanfolder($folderonly->id,$folders,$headers);
foreach($subfolder as $file) {
array_push($files,$file);
}
}
return $files;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -220,6 +220,13 @@ parameters:
activate_widetherhome: false activate_widetherhome: false
%end if %end if
%if %%getVar("ninegate_activate_widfluxbb", 'non') == "oui"
activate_widfluxbb: true
widfluxbb_url: %%ninegate_widfluxbb_url
%else
activate_widfluxbb: false
%end if
%if %%getVar("ninegate_activate_widgepi", 'non') == "oui" %if %%getVar("ninegate_activate_widgepi", 'non') == "oui"
activate_widgepi: true activate_widgepi: true
widgepi_url: %%ninegate_widgepi_url widgepi_url: %%ninegate_widgepi_url