gestion repertoire only

This commit is contained in:
afornerot 2020-09-18 15:09:53 +02:00
parent ed1b32e481
commit 57ff4d645c
2 changed files with 293 additions and 0 deletions

View File

@ -0,0 +1,114 @@
<?php
namespace Cadoles\PortalBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class FrameController extends Controller
{
public function onlyAction($directory,Request $request,$access="config") {
$canupdate= $this->getPermission($access,$directory,$widget,$grp);
$subdirectory=$request->get("subdirectory");
$clear=$request->get("clear");
$view=$request->get("view");
$defaultview=$request->get("defaultview");
// Récupérer en session le dernier subdirectory visité
$sessionsubdirectory = $this->get('session')->get('sessionsubdirectory');
if(!is_array($sessionsubdirectory)) $sessionsubdirectory=[];
if($clear) {
if(array_key_exists($directory,$sessionsubdirectory)) unset($sessionsubdirectory[$directory]);
$this->get('session')->set('sessionsubdirectory',$sessionsubdirectory);
}
else {
if(!$subdirectory) {
if(array_key_exists($directory,$sessionsubdirectory)) $subdirectory=$sessionsubdirectory[$directory];
}
else {
$sessionsubdirectory[$directory] = $subdirectory;
$this->get('session')->set('sessionsubdirectory',$sessionsubdirectory);
}
}
// Récupérer en session le mode de visualisation
$sessionviewdirectory = $this->get('session')->get('sessionviewdirectory');
if(!is_array($sessionviewdirectory)) $sessionviewdirectory=[$directory=>$defaultview];
if(!array_key_exists($directory,$sessionviewdirectory)) $sessionviewdirectory[$directory]=$defaultview;
if($view)
$sessionviewdirectory[$directory] = $view;
$this->get('session')->set('sessionviewdirectory',$sessionviewdirectory);
// Initialiser le service only
$onlyservice = $this->container->get('cadoles.portal.service.only');
$firstfolder=($subdirectory?$subdirectory:null);
$files=$onlyservice->getDocument($grp->getId(), $firstfolder, $parents, $tasks);
// Récupération du numéro de groupe oo
if($grp) $idonly= $grp->getIdOnlyoffice();
else $idonly=0;
// Récupération des paramétres du widget
$apponly=0;
foreach($widget->getParameter()["fields"] as $parameter) {
switch($parameter["id"]) {
case "apponly":
$apponly=$parameter["value"];
break;
}
}
return $this->render('CadolesPortalBundle:Frame:only.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'access' => $access,
'urlonly' => $this->getParameter("widonlyoffice_url")."/products/projects/tmdocs.aspx?prjID=".$idonly."#".$firstfolder,
'directory' => $directory,
'parents' => $parents,
'subdirectory' => $subdirectory,
'files' => $files,
'canupdate' => $canupdate,
'view' => $sessionviewdirectory[$directory],
'tasks' => $tasks,
'apponly' => $apponly
]);
}
public function getPermission($access, $id, &$widget, &$group) {
$em = $this->getDoctrine()->getManager();
// Récupération du widget & de la page
$widget=$em->getRepository("CadolesPortalBundle:Pagewidget")->find($id);
if (!$widget) throw $this->createNotFoundException('Unable to find entity.');
$page=$widget->getPage();
$groups=$page->getGroups();
$group=$groups[0];
if($access=="user") {
// On s'assure que l'utilisateur à la permission de voir
$em->getRepository("CadolesPortalBundle:Page")->getPermission($this->getUser(),$page,$cansee,$canupdate);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
}
else $canupdate=true;
return $canupdate;
}
}

View File

@ -0,0 +1,179 @@
{% extends '@CadolesCore/base.html.twig' %}
{% block localstyle %}
#page-wrapper {
min-height:0px !important;
}
.grid .grid-list .grid-item-logo {
margin:0px;
}
.grid .grid-list .grid-item-title h2 {
font-size: 14px;
line-height: 22px;
height: 22px;
}
.grid-item-title h2 {
text-transform: initial !important;
}
{% endblock %}
{% block pagewrapper %}
<div id="explorer">
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups" style="margin-top:5px">
{% if canupdate %}
<div class="btn-group mr-2" role="group" aria-label="First group">
<a type="button" class="btn btn-primary" href="{{urlonly}}" target="_blank" title='Plus de fonctionnalités'>
<i class="fa fa-plus"></i>
</a>
</div>
{% endif %}
<div class="btn-group mr-2" role="group" aria-label="Second group">
{% if view=="small" %}
{%set action="list" %}
{% else %}
{%set action="small" %}
{% endif %}
{% if not subdirectory is empty %}
<a href="{{ path('cadoles_portal_'~access~'_frame_only',{'directory':directory,'subdirectory':subdirectory,'view':action }) }}" type="button" class="btn btn-primary">
{% else %}
<a href="{{ path('cadoles_portal_'~access~'_frame_only',{'directory':directory,'clear':true,'view':action }) }}" type="button" class="btn btn-primary">
{% endif %}
{% if view=="small" %}
<i class="fas fa-list"></i>
{% else %}
<i class="fas fa-th"></i>
{% endif %}
</a>
</div>
</div>
<div aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ path('cadoles_portal_'~access~'_frame_only',{'directory':directory, 'clear':true }) }}">Home</a></li>
{% for parent in parents|reverse %}
<li class="breadcrumb-item"><a href="{{ path('cadoles_portal_'~access~'_frame_only',{'directory':directory,'subdirectory':parent.id }) }}">{{parent.name}}</a></li>
{% endfor %}
</ol>
</div>
<div class="grid clearfix">
<div class="grid-sizer grid-{{view}}"></div>
<div class="grid-gutter-sizer"></div>
{% for dir in files %}
{% for folder in dir.folders %}
<div class="grid-item grid-{{view}}">
<div class="grid-item-content">
<a style="cursor:pointer" href="{{ path('cadoles_portal_'~access~'_frame_only',{'directory':directory,'subdirectory':folder.info.id }) }}">
<div class="item-link clearfix">
<div class="grid-item-logo">
<img class="grid-item-img" height="110" src="/{{ alias }}/bundles/cadolescore/images/files/dir.png">
</div>
<div class="grid-item-title">
<h2>{{ folder.info.title }}</h2>
</div>
</div>
</a>
</div>
</div>
{% endfor %}
{% for file in dir.files %}
<div class="grid-item grid-{{view}}">
<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>{{ file.title }}</h2>
</div>
</div>
</a>
</div>
</div>
{% endfor %}
{% endfor %}
</div>
</div>
{% if not tasks is empty %}
<div id="onlytasks" style='margin-top:20px;'>
{% if apponly==0 %}
<h4 style='margin-bottom:5px;border-bottom:1px solid;'>Tâches</h4>
{%endif%}
{% if apponly==0 or apponly==2 %}
{% 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 %}
{%endif%}
</div>
{% endif %}
{% endblock %}
{% block localjavascript %}
var optiongrid={columnWidth: '.grid-sizer',itemSelector: '.grid-item', gutter: '.grid-gutter-sizer'};
// Création des grilles d'items
$('body').imagesLoaded(function() {
var grid = $('.grid').masonry(optiongrid);
ajust();
});
$('document').ready(function(){
if(inIframe()) {
color=$("#frame-{{directory}}",window.parent.document).data("color");
}
else {
color = "#{{ color["main"]}}";
}
$(".grid-item-title > h2").css("color",color);
$("#onlytasks").css("color",color);
});
$(window).resize(function() {
ajust();
});
function ajust(formodal) {
if(inIframe()) {
if(!$("#frame-{{directory}}",window.parent.document).hasClass("notframeajust")) {
$("#frame-{{directory}}",window.parent.document).height($("#page-wrapper").height() + 10);
}
}
}
{% endblock %}