diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php index 43773ba4..7db90415 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php @@ -48,6 +48,7 @@ class FileController extends Controller // 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); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php index 4e3df55f..e4c1e26f 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php @@ -1350,7 +1350,7 @@ class InitDataCommand extends ContainerAwareCommand $entityWidget->setBorder(true); $entityWidget->setOpened(true); $entityWidget->setAccess(["config","group"]); - $parameter = json_decode('{"fields": [{"id": "apponly", "loc": "col1", "type": "apponly", "label": "Afficher", "value": "0", "mandatory": "true"}]}'); + $parameter = json_decode('{"fields": [{"id": "apponly", "loc": "col1", "type": "apponly", "label": "Afficher", "value": "0", "mandatory": "true"},{"id": "modelist", "loc": "col1", "type": "modelist", "label": "Mode Affichage", "value": "0", "mandatory": "true"}]}'); $entityWidget->setParameter($parameter); $em->persist($entityWidget); } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/FrameController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/FrameController.php new file mode 100644 index 00000000..3ecb370c --- /dev/null +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/FrameController.php @@ -0,0 +1,114 @@ +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; + } +} diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php index 49c28fc1..5878dcbd 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php @@ -2388,22 +2388,32 @@ class PagewidgetController extends Controller } + /* $onlyservice = $this->container->get('cadoles.portal.service.only'); - $files=$onlyservice->getDocument($group, $folders, $firstfolder, $tasks); + $firstfolder=null; + $files=$onlyservice->getDocument($group, $firstfolder, $tasks); + $grp=null; if($group) $grp=$em->getRepository("CadolesCoreBundle:Group")->find($group); if($grp) $idonly= $grp->getIdOnlyoffice(); else $idonly=0; + */ // Récupération des paramétres du widget $apponly=0; + $view="small"; foreach($entity->getParameter()["fields"] as $parameter) { switch($parameter["id"]) { case "apponly": $apponly=$parameter["value"]; - break; + break; + case "modelist": + $view=($parameter["value"]==0?"small":"list"); + break; } } + + /* // Render return $this->render($this->labelentity.':viewonlydoc.html.twig', [ @@ -2411,13 +2421,22 @@ class PagewidgetController extends Controller 'canadd' => $cansee, 'canupdate' => $cansee, 'firstfolder' => $firstfolder, - 'folders' => $folders, 'tasks' => $tasks, 'urlonly' => $this->getParameter("widonlyoffice_url")."/products/projects/projects.aspx?prjID=".$idonly, 'apponly' => $apponly, 'files' => $files, 'access' => $access, ]); + */ + + return $this->render($this->labelentity.':viewonlydoc.html.twig', [ + 'entity' => $entity, + 'canadd' => $canupdate, + 'canupdate' => $canupdate, + 'access' => $access, + 'directory' => $id, + 'view' => $view, + ]); } } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml index c98eacc8..eafa3dc3 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml @@ -1152,3 +1152,13 @@ cadoles_portal_user_panelwidget_view_onlydoc: path: /pagewidget/view/onlydoc/{id} defaults: { _controller: CadolesPortalBundle:Pagewidget:viewonlydoc, access: user } + +#== FRAME ========================================================================================================================================== + +cadoles_portal_config_frame_only: + path: /config/frame/only/{directory} + defaults: { _controller: CadolesPortalBundle:Frame:only, access: config } + +cadoles_portal_user_frame_only: + path: /pagewidget/frame/only/{directory} + defaults: { _controller: CadolesPortalBundle:Frame:only, access: user } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Frame/only.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Frame/only.html.twig new file mode 100644 index 00000000..788b249c --- /dev/null +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Frame/only.html.twig @@ -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 %} + +
+ + + +
+ +
+ +
+
+
+ + + {% for dir in files %} + {% for folder in dir.folders %} + + {% endfor %} + + {% for file in dir.files %} + + {% endfor %} + {% endfor %} +
+
+ + {% if not tasks is empty %} +
+ {% if apponly==0 %} +

Tâches

+ {%endif%} + + {% if apponly==0 or apponly==2 %} + {% for task in tasks %} +
  • {{ task.title }}
  • + {% if not task.subtasks is empty %} + + {% endif %} + {% endfor %} + {%endif%} +
    + {% 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 %} + + + diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewfile.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewfile.html.twig index a13eaf62..cd4df4fb 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewfile.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewfile.html.twig @@ -36,10 +36,6 @@ {% endif %} - - {% if canadd %} - - {% endif %} {% endif %} diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewonlydoc.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewonlydoc.html.twig index 245c853c..d987708d 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewonlydoc.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewonlydoc.html.twig @@ -10,6 +10,7 @@ {% set stylewidgetheader = constants.mystylewidgetheader(entity) %} {% set stylewidgetbody = constants.mystylewidgetbody(entity) %} {% set stylewidgetbodyreverse = constants.mystylewidgetbodyreverse(entity) %} +{% set stylewidgetbodyframe = constants.mystylewidgetbodyframe(entity) %} {% set color = app.session.get('color') %} @@ -20,9 +21,13 @@ {% set colorbodyfont = entity.colorbodyfont %} -{% if colorbodyfont is null %} +{% if entity.border and colorbodyfont is null %} {% set colorbodyfont = color['fontcolorhover'] %} {% endif %} +{% if colorbodyfont is null %} + {% set colorbodyfont = color['main'] %} +{% endif %} +
    {% if canupdate or canadd %} @@ -31,10 +36,6 @@ {% endif %} - - {% if canadd %} - - {% endif %}
    {% endif %} @@ -48,82 +49,11 @@ {{ entity.name }} - {% if files|length >= 1 or canupdate %} -
    - {% if apponly==0 %} -
    -

    Documents

    -
    - {% endif %} +
    - {% if apponly==0 or apponly==1 %} - - {%endif%} - - {% if not tasks is empty %} -
    - {% if apponly==0 %} -

    Tâches

    - {%endif%} - - {% if apponly==0 or apponly==2 %} - {% for task in tasks %} -
  • {{ task.title }}
  • - {% if not task.subtasks is empty %} -
      - {% for subtask in task.subtasks %} -
    • {{ subtask.title }}
    • - {% endfor %} -
    - {% endif %} - {% endfor %} - {%endif%} -
    - {% endif %}
    - {% endif %}
    diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Service/onlyService.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Service/onlyService.php index b2dd1451..98d2b547 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Service/onlyService.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Service/onlyService.php @@ -36,9 +36,9 @@ class onlyService } } - public function getDocument($idgroup,&$folders,&$firstfolder,&$tasks) { + public function getDocument($idgroup,&$firstfolder,&$parents,&$tasks) { $files=[]; - $folders=[]; + $parents=[]; $tasks=[]; if(!is_null($idgroup)) { @@ -48,24 +48,29 @@ class onlyService if($this->authOnly()) { $response = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice(),$this->headers); if(!$this->koresponse($response)) { - $firstfolder=$response->body->response->projectFolder;; + $home=$response->body->response->projectFolder; + if(!$firstfolder) $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); - } - } + $files[$firstfolder] = $this->scanfolder($firstfolder,"",$this->headers); + + // Construction du tableau des parents + $currentchild=$firstfolder; + + while($currentchild!=$home) { + $response = \Unirest\Request::get($this->only_url.'/files/'.$currentchild,$this->headers); + if($this->koresponse($response)) return 0; + + // Récupérer les informations du folder + $tmp=["id"=>$response->body->response->current->id,"name"=>$response->body->response->current->title]; + array_push($parents,$tmp); + + // Aller sur le folder parent + $currentchild=$response->body->response->current->parentId; + } $response = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice().'/task/open',$this->headers); - if(!$this->koresponse($response)) $tasks=$response->body->response; - } + if(!$this->koresponse($response)) $tasks=$response->body->response; + } } } @@ -75,6 +80,10 @@ class onlyService return $files; } + private function getFiles($idfolder) { + + return $files; + } private function authOnly() { // Only Office est-il dans le domaine if(stripos($this->only_url,"/")===0) @@ -119,19 +128,15 @@ class onlyService if($this->debug) error_log($texte); } - private function scanfolder($folderid,&$folders,$headers) { - $files=[]; + private function scanfolder($folderid,$folderonly,$headers) { + $files=["info"=>$folderonly,"files"=>[],"folders"=>[]]; $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); + array_push($files["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); - } + $files["folders"][$folderonly->id] = $this->scanfolder($folderonly->id,$folderonly,$headers); } return $files;