Completed
Push — master ( 172eb0...3032f7 )
by Julito
09:41
created

EditorController::editorConnector()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 37
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 23
nc 1
nop 3
dl 0
loc 37
rs 9.552
c 0
b 0
f 0
1
<?php
2
/* For licensing terms, see /license.txt */
3
4
namespace Chamilo\CoreBundle\Controller;
5
6
use Chamilo\CoreBundle\Component\Editor\CkEditor\CkEditor;
7
use Chamilo\CoreBundle\Component\Editor\Connector;
8
use Chamilo\CoreBundle\Component\Editor\Finder;
9
use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
10
use Chamilo\SettingsBundle\Manager\SettingsManager;
11
use DocumentManager;
12
use FM\ElfinderBundle\Connector\ElFinderConnector;
13
use Symfony\Component\HttpFoundation\Request;
14
use Symfony\Component\HttpFoundation\Response;
15
use Symfony\Component\Routing\Annotation\Route;
16
use Symfony\Component\Routing\RouterInterface;
17
use Symfony\Contracts\Translation\TranslatorInterface;
18
19
/**
20
 * Class EditorController.
21
 *
22
 * @Route("/editor")
23
 *
24
 * @deprecated not used for now
25
 *
26
 * @package Chamilo\CoreBundle\Controller
27
 */
28
class EditorController extends BaseController
29
{
30
    /**
31
     * Get templates (left column when creating a document).
32
     *
33
     * @Route("/templates", methods={"GET"}, name="editor_templates")
34
     *
35
     * @param TranslatorInterface $translator
36
     * @param RouterInterface     $router
37
     *
38
     * @return Response
39
     */
40
    public function editorTemplatesAction(TranslatorInterface $translator, RouterInterface $router)
41
    {
42
        $editor = new CkEditor(
43
            $translator,
44
            $router
45
        );
46
        $templates = $editor->simpleFormatTemplates();
47
48
        return $this->render(
49
            '@ChamiloTheme/Editor/templates.html.twig',
50
            ['templates' => $templates]
51
        );
52
    }
53
54
    /**
55
     * @Route("/filemanager", methods={"GET"}, name="editor_filemanager")
56
     *
57
     * @return Response
58
     */
59
    public function editorFileManager(): Response
60
    {
61
        \Chat::setDisableChat();
62
        $params = [
63
            'course_condition' => '?'.$this->getCourseUrlQuery(),
64
        ];
65
66
        return $this->render('@ChamiloTheme/Editor/elfinder.html.twig', $params);
67
    }
68
69
    /**
70
     * @Route("/filemanager", methods={"GET"}, name="editor_filemanager")
71
     *
72
     * @return Response
73
     */
74
    public function customEditorFileManager(): Response
75
    {
76
        $courseInfo = api_get_course_info();
77
        $groupIid = api_get_group_id();
78
        $isAllowedToEdit = api_is_allowed_to_edit();
79
        $groupMemberWithUploadRights = false;
80
81
        $documentAndFolders = DocumentManager::getAllDocumentData(
82
            $courseInfo,
83
            '',
84
            $groupIid,
85
            null,
86
            $isAllowedToEdit || $groupMemberWithUploadRights,
87
            false
88
        );
89
90
        $sortable_data = DocumentManager::processDocumentAndFolders(
91
            $documentAndFolders,
92
            $courseInfo,
93
            false,
94
            $groupMemberWithUploadRights,
95
            '/',
96
            true
97
        );
98
99
        $table = new \SortableTableFromArrayConfig(
100
            $sortable_data,
101
            1,
102
            20,
103
            'documents',
104
            [0, 1, 1,1,1],
105
            [],
106
            'ASC',
107
            true
108
        );
109
110
        $params = [
111
            'table' => $table->return_table()
112
        ];
113
114
        return $this->render('@ChamiloTheme/Editor/custom.html.twig', $params);
115
    }
116
117
    /**
118
     * @Route("/connector", methods={"GET", "POST"}, name="editor_connector")
119
     *
120
     * @param TranslatorInterface $translator
121
     * @param RouterInterface     $router
122
     * @param Request             $request
123
     *
124
     * @return Response
125
     */
126
    public function editorConnector(TranslatorInterface $translator, RouterInterface $router, Request $request)
127
    {
128
        $course = $this->getCourse();
129
        $session = $this->getCourseSession();
130
131
        /** @var Connector $connector */
132
        $connector = new Connector(
133
            $this->getDoctrine()->getManager(),
134
            [],
135
            $router,
136
            $translator,
137
            $this->container->get('security.authorization_checker'),
138
            $this->getUser(),
139
            $course,
140
            $session
141
        );
142
143
        $driverList = [
144
            'PersonalDriver',
145
            'CourseDriver',
146
            //'CourseUserDriver',
147
            //'HomeDriver'
148
        ];
149
        $connector->setDriverList($driverList);
150
151
        $operations = $connector->getOperations();
152
153
        // Run elFinder
154
        ob_start();
155
        $finder = new Finder($operations);
156
        $elFinderConnector = new ElFinderConnector($finder);
157
        $elFinderConnector->run();
158
        $content = ob_get_contents();
159
160
        return $this->render(
161
            '@ChamiloTheme/layout_empty.html.twig',
162
            ['content' => $content]
163
        );
164
    }
165
166
    /**
167
     * @Route("/config", methods={"GET"}, name="config_editor")
168
     *
169
     * @param SettingsManager $settingsManager
170
     *
171
     * @return Response
172
     */
173
    public function configEditorAction(SettingsManager $settingsManager)
174
    {
175
        $moreButtonsInMaximizedMode = false;
176
        //$settingsManager = $this->get('chamilo.settings.manager');
177
178
        if ($settingsManager->getSetting('editor.more_buttons_maximized_mode') === 'true') {
179
            $moreButtonsInMaximizedMode = true;
180
        }
181
182
        return $this->render(
183
            '@ChamiloTheme/Editor/config_js.html.twig',
184
            [
185
                // @todo replace api_get_bootstrap_and_font_awesome
186
                'bootstrap_css' => api_get_bootstrap_and_font_awesome(true),
187
                'css_editor' => ChamiloApi::getEditorBlockStylePath(),
188
                'more_buttons_in_max_mode' => $moreButtonsInMaximizedMode,
189
            ]
190
        );
191
    }
192
}
193